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.
 
 
 
 
 

745 lines
33 KiB

using NFine.Data.Extensions;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NFine.Code;
using NFine.Repository;
using System.Data.Common;
using NFine.Domain._03_Entity.SRM;
using ICS.Application.Entity;
using Newtonsoft.Json;
using System.Configuration;
using System.Data.SqlClient;
using ICS.Data;
using Newtonsoft.Json.Linq;
using NFine.Domain._03_Entity.WMS;
using System.Net;
using System.IO;
using Dapper;
namespace NFine.Application.WMS
{
public class WareHouseLotinspectionApp : RepositoryFactory<ICSVendor>
{
public static DataTable MDInvmes = new DataTable();
public DataTable GetICSInspect(ref Pagination jqgridparam)
{
DataTable dt = new DataTable();
List<DbParameter> parameter = new List<DbParameter>();
string sql = @" select a.ID,B.F_ItemName DepName,a.InspectCode,a.Status,Case When a.Type=0 Then '标准检验' ELSE '超期检验' END Type
,a.Type AS TypeValue
,a.Memo,a.CreatePerson,a.CreateDateTime,a.MUSER,a.MUSERName
,a.EATTRIBUTE1 AS DeptCode,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
a.EATTRIBUTE9,a.EATTRIBUTE10
from ICSInspect a
LEFT JOIN (SELECT a. F_ItemCode,a.F_ItemName
FROM Sys_SRM_ItemsDetail a
INNER JOIN Sys_SRM_Items b ON a.F_ItemId=b.F_id
WHERE b.F_EnCode='ApproveRoleConfig') B ON a.EATTRIBUTE1=B.F_ItemCode
where a.Status='3'";
sql = string.Format(sql);
// DataTable dttest = Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public DataTable GetICSMOApplyNegDetail(string InspectCode, 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.InspectCode,a.LotNo,a.Sequence,b.InvCode,a.Quantity,a.Amount,a.InspectQuantity,a.ExtensionID,a.MUSER
,a.MUSERName,a.MTIME
,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
a.EATTRIBUTE9,a.EATTRIBUTE10
from ICSInspectDetail a
left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
left join ICSInventoryLot b on b.LotNo=a.LotNo and b.WorkPoint=a.WorkPoint
WHERE a.InspectCode='" + InspectCode + "' ";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public string DeleteICSInspect(string keyValue)
{
//站点信息
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string msg = "";
keyValue = keyValue.Substring(1, keyValue.Length - 2);
string sql = string.Empty;
try
{
string chksql = @"select LotNo,EATTRIBUTE1 AS DocStatus from ICSInspectDetail
WHERE InspectCode IN ({0}) AND WorkPoint='{1}'";
chksql = string.Format(chksql, keyValue.TrimEnd(','), WorkPoint);
DataTable chkdt = SqlHelper.GetDataTableBySql(chksql);
foreach (DataRow dr in chkdt.Rows)
{
if (dr["DocStatus"].ToString() == "已检验")
{
throw new Exception("已经开始检验的单据无法删除!");
}
}
sql += string.Format(@" update ICSWareHouseLotInfo set Inspect=0
where LotNo IN (select LotNo FROM dbo.ICSInspectDetail WHERE InspectCode IN ({0}) and WorkPoint ='{1}') and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
sql += string.Format(@"DELETE FROM dbo.ICSInspect WHERE InspectCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
sql += string.Format(@"DELETE FROM dbo.ICSInspectDetail WHERE InspectCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
{
}
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
public DataTable GetICSInspectTemporary(string InspectCode)
{
string sql = @"SELECT a.ID,
a.InspectCode,
Case When d.Type=0 Then '标准检验' ELSE '超期检验' END AS DocType,
c.InvCode,
a.Quantity,
a.Amount,
b.InvName,
b.InvStd,
b.InvUnit,
a.LotNo,
a.EATTRIBUTE1 AS DocStatus,
a.InspectQuantity,
a.ExtensionID,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
FROM
ICSInspectDetail a
LEFT JOIN ICSInspect d ON d.InspectCode=a.InspectCode and d.WorkPoint=a.WorkPoint
LEFT JOIN ICSInventoryLot c ON c.LotNo=a.LotNo and c.WorkPoint=a.WorkPoint
LEFT JOIN ICSInventory b ON c.InvCode = b.InvCode and a.WorkPoint=b.WorkPoint
left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
where a.InspectCode='" + InspectCode + "'";
DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
DataTable dtCloned = table.Clone();
foreach (DataColumn col in dtCloned.Columns)
{
col.DataType = typeof(string);
}
foreach (DataRow row in table.Rows)
{
DataRow newrow = dtCloned.NewRow();
foreach (DataColumn column in dtCloned.Columns)
{
newrow[column.ColumnName] = row[column.ColumnName].ToString();
}
dtCloned.Rows.Add(newrow);
}
if (MDInvmes.Rows.Count > 0)
{
dtCloned.Merge(MDInvmes, false);
}
return dtCloned;
}
/// <summary>
/// 获取检验单单据类型
/// </summary>
/// <returns></returns>
public DataTable GetInspectDocType(string ID)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = @"select Type,Case When Type=0 then '标准检验' ELSE '超期检验' END AS DocType from ICSInspect
where ID='{0}' and WorkPoint='{1}'";
sql = string.Format(sql, ID, WorkPoint);
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
/// <summary>
/// 获取检验单检验部门
/// </summary>
/// <returns></returns>
public DataTable GetInspectDept(string ID)
{
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
string sql = "";
if (ID == "")
{
sql = @"select B.F_ItemName AS Name,B.F_ItemCode AS Code from Sys_SRM_Items A
LEFT JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
where A.F_EnCode='ApproveRoleConfig'";
}
else
{
sql = @"select B.F_ItemName AS Name,B.F_ItemCode AS Code into #tempdept from ICSInspect A
INNER JOIN Sys_SRM_ItemsDetail B ON B.F_ItemCode=A.EATTRIBUTE1
INNER JOIN Sys_SRM_Items C ON C.F_Id=B.F_ItemId
where A.ID='{0}' and A.WorkPoint='{1}' AND C.F_EnCode='ApproveRoleConfig'
UNION ALL
select B.F_ItemName AS Name,B.F_ItemCode AS Code from Sys_SRM_Items A
LEFT JOIN Sys_SRM_ItemsDetail B ON B.F_ItemId=A.F_Id
where A.F_EnCode='ApproveRoleConfig'
select distinct * from #tempdept
drop table #tempdept";
sql = string.Format(sql, ID, WorkPoint);
}
DataTable dt = SqlHelper.GetDataTableBySql(sql);
return dt;
}
public void ClearTemp()
{
MDInvmes.Rows.Clear();
}
#region 条码验证方法
/// <summary>
/// 检查条码状态,验证条码是否可以添加
/// 规则:已审核的不可再次添加,复审后的允许再次添加
/// </summary>
/// <param name="lotNo">单个条码</param>
/// <returns>验证结果</returns>
public string SeachInspectLotcheck(string lotNo)
{
try
{
// 参数验证
if (string.IsNullOrWhiteSpace(lotNo))
{
return JsonConvert.SerializeObject(new { success = false, message = "条码不能为空" });
}
// 检查条码是否为"已审核"状态
bool isApproved = CheckIfLotIsApproved(lotNo.Trim());
if (isApproved)
{
// 如果条码状态为"已审核",返回错误信息
return JsonConvert.SerializeObject(new
{
success = false,
message = $"条码 {lotNo} 已审核,不允许再次添加"
});
}
// 条码通过验证
return JsonConvert.SerializeObject(new
{
success = true,
message = "验证通过"
});
}
catch (Exception ex)
{
// 记录异常日志
string errorMessage = $"SeachInspectLotcheck验证条码{lotNo}状态时发生错误";
System.Diagnostics.Trace.TraceError($"{errorMessage}: {ex.Message}");
return JsonConvert.SerializeObject(new
{
success = false,
message = "验证过程中发生错误,请稍后重试"
});
}
}
/// <summary>
/// 检查单个条码是否为"已审核"状态
/// 规则:已审核的不可再次添加,复审后的允许再次添加
/// 所以我们只检查条码是否有状态为"已审核"的记录
/// </summary>
private bool CheckIfLotIsApproved(string lotNo)
{
// 获取数据库连接字符串
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
// 获取当前工作站点
string workPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
// 查询条码是否有状态为"已审核"的记录
// 注意:我们只检查"已审核"状态,"已复审"状态允许再次添加
string sql = @"
SELECT TOP 1 1
FROM ICSInspectDetail d
WHERE d.LotNo = @LotNo
AND d.WorkPoint = @WorkPoint
AND d.EATTRIBUTE1 = '已审核'
";
var parameters = new
{
LotNo = lotNo,
WorkPoint = workPoint
};
var result = connection.QueryFirstOrDefault<int>(sql, parameters);
return result == 1; // 找到记录表示条码已审核,不允许添加
}
}
/// <summary>
/// 批量检查条码是否可以添加
/// 规则:已审核的不可再次添加,复审后的允许再次添加
/// </summary>
/// <param name="lotNos">条码数组</param>
/// <returns>验证结果</returns>
public string SeachInspectLotcheckBatch(string[] lotNos)
{
try
{
// 参数验证
if (lotNos == null || lotNos.Length == 0)
{
return JsonConvert.SerializeObject(new { success = false, message = "条码列表为空" });
}
// 获取数据库连接字符串
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
// 获取当前工作站点
string workPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
// 将数组转换为逗号分隔的字符串
string lotNoList = string.Join("','", lotNos.Select(l => l.Trim()));
// SQL查询语句 - 批量检查状态为"已审核"的条码
string sql = $@"
SELECT DISTINCT LotNo
FROM ICSInspectDetail d
WHERE d.LotNo IN ('{lotNoList}')
AND d.WorkPoint = '{workPoint}'
AND d.EATTRIBUTE1 = '已审核'
ORDER BY LotNo
";
// 查询状态为"已审核"的条码
var approvedLots = connection.Query<string>(sql).ToList();
if (approvedLots != null && approvedLots.Count > 0)
{
return JsonConvert.SerializeObject(new
{
success = false,
message = $"条码 {string.Join(", ", approvedLots)} 已审核,不允许再次添加"
});
}
// 所有条码都通过验证
return JsonConvert.SerializeObject(new
{
success = true,
message = "验证通过"
});
}
}
catch (Exception ex)
{
// 记录异常日志
string errorMessage = $"SeachInspectLotcheckBatch验证条码状态时发生错误";
System.Diagnostics.Trace.TraceError($"{errorMessage}: {ex.Message}");
return JsonConvert.SerializeObject(new
{
success = false,
message = "验证过程中发生错误,请稍后重试"
});
}
}
#endregion
public DataTable GetInspectLot(string invcode, string WHCode, string InspectType, 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 a.InvCode like '%" + invcode + "%'";
}
if (!string.IsNullOrEmpty(WHCode))
{
wherestr += " and a.WarehouseCode like '%" + WHCode + "%'";
}
if (InspectType == "0")
{
wherestr += " and B.ExpirationDate>GETDATE()";
}
else
{
wherestr += " and B.ExpirationDate<GETDATE()";
}
string sql = @" select A.ID,A.LotNo,A.InvCode,C.InvName,C.InvStd,C.InvUnit,A.Quantity,B.Amount,B.ExtensionID
,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
from ICSWareHouseLotInfo A
INNER JOIN ICSInventoryLot B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
INNER JOIN ICSInventory C ON C.InvCode=A.InvCode AND B.WorkPoint=A.WorkPoint
LEFT JOIN ICSExtension F ON F.ID=B.ExtensionID AND F.WorkPoint=B.WorkPoint
where ISNULL(A.LockQuantity,0)=0 AND A.Quantity>0 AND C.InvOQC=1 AND NOT EXISTS (
SELECT 1
FROM ICSInspect a2
INNER JOIN ICSInspectDetail d2 ON d2.InspectCode = a2.InspectCode AND d2.WorkPoint = a2.WorkPoint
LEFT JOIN dbo.ICSInventoryLot e2 ON e2.LotNo = d2.LotNo AND e2.WorkPoint = d2.WorkPoint
LEFT JOIN dbo.ICSWareHouseLotInfo g2 ON g2.LotNo = e2.LotNo AND g2.WorkPoint = e2.WorkPoint
WHERE g2.LotNo IS NOT NULL
AND d2.EATTRIBUTE1 IN( '已检验', '已审核','未检验' )
AND CONVERT(DECIMAL(18,4), ISNULL(d2.InspectQuantity, 0)) != CONVERT(DECIMAL(18,4), ISNULL(d2.Quantity, 0))
-- 关联条件
AND d2.LotNo = A.LotNo
AND d2.WorkPoint = A.WorkPoint
)AND A.WorkPoint='" + WorkPoint + "'" + wherestr
;
//sql += " Order BY f.BatchCode";
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
}
public void AddMOApplyNegTemp(string json)
{
var data = json.ToJObject();
if (MDInvmes.Columns.Count <= 0)
{
MDInvmes.Columns.Add("ZJID", typeof(string));
MDInvmes.Columns.Add("InvCode", typeof(string));
MDInvmes.Columns.Add("INVNAME", typeof(string));
MDInvmes.Columns.Add("InvStd", typeof(string));
MDInvmes.Columns.Add("InvUnit", typeof(string));
MDInvmes.Columns.Add("Quantity", typeof(string));
MDInvmes.Columns.Add("IssueNegQuantity", typeof(string));
MDInvmes.Columns.Add("ExtensionID", typeof(string));
MDInvmes.Columns.Add("Amount", typeof(string));
MDInvmes.Columns.Add("ID", typeof(string));
}
string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
DataRow newrow = MDInvmes.NewRow();
newrow["ZJID"] = data["ZJID"];
newrow["InvName"] = data["InvName"];
newrow["InvCode"] = data["InvCode"];
newrow["InvStd"] = data["InvStd"];
newrow["InvUnit"] = data["InvUnit"];
newrow["Amount"] = data["Amount"];
newrow["IssueNegQuantity"] = data["IssueNegQuantity"];
newrow["ExtensionID"] = data["ExtensionID"];
newrow["Quantity"] = "";
newrow["ID"] = data["ID"];
MDInvmes.Rows.Add(newrow);
}
public void UpdateMOApplyNegTemp(string json)
{
var data = json.ToJObject();
string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
var info = MDInvmes.Select(string.Format("TLZID='{0}'", data["TLZID"]));
if (info != null && info.Length > 0)
{
info[0]["ZJID"] = data["ZJID"];
info[0]["InvName"] = data["InvName"];
info[0]["InvCode"] = data["InvCode"];
info[0]["InvStd"] = data["InvStd"];
info[0]["InvUnit"] = data["InvUnit"];
info[0]["Amount"] = data["Amount"];
info[0]["IssueNegQuantity"] = data["IssueNegQuantity"];
info[0]["ExtensionID"] = data["ExtensionID"];
info[0]["Quantity"] = 0;
}
else
{
DataRow newrow = MDInvmes.NewRow();
newrow["ZJID"] = data["ZJID"];
newrow["InvName"] = data["InvName"];
newrow["InvCode"] = data["InvCode"];
newrow["InvStd"] = data["InvStd"];
newrow["InvUnit"] = data["InvUnit"];
newrow["Amount"] = data["Amount"];
newrow["IssueNegQuantity"] = data["IssueNegQuantity"];
newrow["ExtensionID"] = data["ExtensionID"];
newrow["Quantity"] = 0;
newrow["ID"] = data["ID"];
newrow["TLZID"] = data["TLZID"];
MDInvmes.Rows.Add(newrow);
}
}
public string SaveInspect(string LotNOList, string DocType, string DeptCode, string Memo)
{
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;
try
{
string codes = string.Empty;
//获取单号
sql = @"DECLARE @MaxNO INT,@date varchar(20)='LOTIA'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
SELECT @MaxNO=SUBSTRING(MAX(InspectCode),LEN(@date)+1,LEN(MAX(InspectCode))-LEN(@date))+1 FROM ICSInspect
WHERE SUBSTRING(InspectCode, 1, LEN(@date))=@date
IF @MaxNO IS NULL
BEGIN
SELECT @date+'00001' AS Code
END
ELSE
BEGIN
SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
END ";
string Code = Repository().FindDataSetBySql(sql).Tables[0].Rows[0]["Code"].ToString();
//创建主表
sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{5}')
BEGIN
RAISERROR('操作人:{2} 不存在!',16,1);
RETURN
END
insert into ICSInspect
(ID,InspectCode,Status,Type,Memo,CreatePerson,CreateDateTime,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
values
(NEWID(),'{0}','3','{1}','{7}','{2}','{3}','{2}','{4}','{3}','{5}','{6}')
";
sql = string.Format(sql, Code, DocType, MUSER, DateTime.Now, MUSERNAME, WorkPoint, DeptCode, Memo);
int LineNO = 0;
List<string> chkLotNoList = new List<string>();
foreach (string LotNo in LotNOList.Split(','))
{
LineNO++;
// 创建子表,并修改条码库存检验状态为检验中
sql += @" INSERT INTO ICSInspectDetail(ID,InspectCode,Sequence,LotNo,Quantity,Amount,InspectQuantity,
ExtensionID,MUSER,
MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
select NEWID(),'{0}','{1}',A.LotNo,A.Quantity
,B.Amount,0,B.ExtensionID,'{2}','{3}',GETDATE(),'{4}','未检验'
from ICSWareHouseLotInfo A
INNER JOIN ICSInventoryLot B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
where A.LotNo='{5}' AND A.WorkPoint='{4}'
update ICSWareHouseLotInfo set Inspect=1
where LotNo='{5}' and WorkPoint='{4}'";
sql = string.Format(sql, Code, LineNO, MUSER, MUSERNAME, WorkPoint, LotNo);
if (chkLotNoList.Contains(LotNo))
{
throw new Exception("检验条码不可重复添加!");
}
chkLotNoList.Add(LotNo);
}
if (SqlHelper.ExecuteNonQuery(sql) == 0)
{
throw new Exception("检验单信息创建失败!");
}
}
catch (Exception ex)
{
return ex.Message;
}
return msg;
}
public string UpdateInspect(string InspectCode, string LotNOList, string DeptCode, string Memo)
{
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;
try
{
List<string> LotList = LotNOList.Split(',').ToList();
string codes = string.Empty;
//获取单号
string chksql = @"SELECT LotNo,Sequence FROM ICSInspectDetail
WHERE InspectCode='{0}' AND WorkPoint='{1}'
ORDER BY Sequence DESC";
chksql = string.Format(chksql, InspectCode, WorkPoint);
DataTable dt = SqlHelper.GetDataTableBySql(chksql);
foreach (DataRow dr in dt.Rows)
{
if (LotList.Contains(dr["LotNo"].ToString()))
{
LotList.Remove(dr["LotNo"].ToString());
}
else
{
sql += "delete from ICSInspectDetail where InspectCode='{0}' AND LotNo='{1}' AND WorkPoint='{2}' ";
sql = string.Format(sql, InspectCode, dr["LotNo"].ToString(), WorkPoint);
}
}
int LineNO = Convert.ToInt32(dt.Rows[0]["Sequence"]);
List<string> chkLotNoList = new List<string>();
foreach (string LotNo in LotList)
{
LineNO++;
// 创建子表
sql += @" update ICSInspect set EATTRIBUTE1='{6}',Memo='{7}'
where InspectCode='{0}' and WorkPoint='{4}'
INSERT INTO ICSInspectDetail(ID,InspectCode,Sequence,LotNo,Quantity,Amount,InspectQuantity,
ExtensionID,MUSER,
MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
select NEWID(),'{0}','{1}',A.LotNo,A.Quantity
,B.Amount,0,B.ExtensionID,'{2}','{3}',GETDATE(),'{4}','未检验'
from ICSWareHouseLotInfo A
INNER JOIN ICSInventoryLot B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
where A.LotNo='{5}' AND A.WorkPoint='{4}'";
sql = string.Format(sql, InspectCode, LineNO, MUSER, MUSERNAME, WorkPoint, LotNo, DeptCode, Memo);
if (chkLotNoList.Contains(LotNo))
{
throw new Exception("检验条码不可重复添加!");
}
chkLotNoList.Add(LotNo);
}
if (SqlHelper.ExecuteNonQuery(sql) == 0)
{
throw new Exception("检验单信息修改失败!");
}
}
catch (Exception ex)
{
return ex.Message;
}
return msg;
}
public DataTable GetICSMOApplyNegDetailTemp(string ApplyNegCode)
{
string sql = @"SELECT
a.ID,
a.ID as TLZID,
a.ApplyNegCode,
a.InvCode,
a.Quantity,
a.Amount,
a.SourceDetailID as ZJID,
b.InvName,
b.InvStd,
b.InvUnit,
a.IssueNegQuantity,
a.ExtensionID,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
FROM
ICSMOApplyNegDetail a
LEFT JOIN ICSInventory b ON a.InvCode = b.InvCode and a.WorkPoint=b.WorkPoint
left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
where a.ApplyNegCode='" + ApplyNegCode + "'";
DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
if (MDInvmes == null || MDInvmes.Columns.Count <= 0)
MDInvmes = table.Clone();
DataTable dtCloned = table.Clone();
foreach (DataColumn col in dtCloned.Columns)
{
col.DataType = typeof(string);
}
foreach (DataRow row in table.Rows)
{
DataRow newrow = dtCloned.NewRow();
foreach (DataColumn column in dtCloned.Columns)
{
newrow[column.ColumnName] = row[column.ColumnName].ToString();
}
dtCloned.Rows.Add(newrow);
}
if (MDInvmes.Rows.Count > 0)
{
//dtCloned.Merge(Invmes, false);
foreach (DataRow data in MDInvmes.Rows)
{
var info = dtCloned.Select(string.Format("TLZID='{0}'", data["TLZID"]));
if (info != null && info.Length > 0)
{
info[0]["ZJID"] = data["ZJID"];
info[0]["InvName"] = data["InvName"];
info[0]["InvCode"] = data["InvCode"];
info[0]["InvStd"] = data["InvStd"];
info[0]["InvUnit"] = data["InvUnit"];
info[0]["Amount"] = data["Amount"];
info[0]["IssueNegQuantity"] = data["IssueNegQuantity"];
info[0]["ExtensionID"] = data["ExtensionID"];
info[0]["Quantity"] = 0;
}
else
{
DataRow newrow = dtCloned.NewRow();
newrow["ZJID"] = data["ZJID"];
newrow["InvName"] = data["InvName"];
newrow["InvCode"] = data["InvCode"];
newrow["InvStd"] = data["InvStd"];
newrow["InvUnit"] = data["InvUnit"];
newrow["Amount"] = data["Amount"];
newrow["Quantity"] = 0;
newrow["ID"] = data["ID"];
newrow["TLZID"] = data["TLZID"];
newrow["IssueNegQuantity"] = data["IssueNegQuantity"];
newrow["ExtensionID"] = data["ExtensionID"];
dtCloned.Rows.Add(newrow);
}
}
}
return dtCloned;
}
public string UpdateICSMOApplyNeg(string ICSASN)
{
string msg = "";
string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "MOIssueDocNegativeApply/Update";
string result = HttpPost(APIURL, ICSASN);
JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
string MessAge = Obj["Message"].ToString();
string Success = Obj["Success"].ToString();
if (Success.ToUpper() == "FALSE")
{
msg = MessAge;
}
return msg;
}
public static string HttpPost(string url, string body)
{
try
{
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
request.ContentType = "application/json; charset=utf-8";
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
return reader.ReadToEnd();
}
}
catch (WebException ex)
{
throw new Exception(ex.Message);
}
}
}
}