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.
776 lines
34 KiB
776 lines
34 KiB
using Newtonsoft.Json.Linq;
|
|
using Newtonsoft.Json;
|
|
using NFine.Code;
|
|
using NFine.Data.Extensions;
|
|
using NFine.Domain._03_Entity.SRM;
|
|
using NFine.Repository;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Data;
|
|
using System.Data.Common;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Threading;
|
|
using System.Reflection.Emit;
|
|
using NFine.Application.WMS;
|
|
using System.Net;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using System.Data.SqlClient;
|
|
|
|
namespace NFine.Application.DHAY
|
|
{
|
|
public class ICSMOIssueAPP : RepositoryFactory<ICSVendor>
|
|
{
|
|
public static DataTable Invmes = new DataTable();
|
|
|
|
PickMaterialApp App = new PickMaterialApp();
|
|
|
|
ICSAccessoriesMOIApplyApp iCSAccessoriesMOIApplyApp = new ICSAccessoriesMOIApplyApp();
|
|
|
|
#region 删除超额领料单
|
|
public string DeleteICSMOIssue(string keyValue)
|
|
{
|
|
//站点信息
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string msg = "";
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
string sql = string.Empty;
|
|
|
|
sql += string.Format(@"DELETE FROM dbo.ICSMOIssue WHERE IssueCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
|
|
try
|
|
{
|
|
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
|
|
{
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw new Exception(ex.Message);
|
|
}
|
|
return msg;
|
|
}
|
|
#endregion
|
|
|
|
#region 保存发料信息
|
|
public string SaveICSMOIssue(string ICSASN)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
|
|
string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
string msg = "";
|
|
List<JsonData> parsedData = JsonConvert.DeserializeObject<List<JsonData>>(ICSASN);
|
|
string sql = "";
|
|
string Colspan = "";
|
|
string str1 = "";
|
|
List<string> ExtensionIDList = new List<string>();
|
|
// 获取解析后的数据
|
|
JsonData data = parsedData[0];
|
|
foreach (var detail in data.Detail)
|
|
{
|
|
//获取物料的可用数量,判断当前创建单据数量
|
|
decimal invCount = iCSAccessoriesMOIApplyApp.GetInvCodeCount(detail.InvCode, "", "");
|
|
if (invCount < detail.Quantity)
|
|
{
|
|
throw new Exception($"物料{detail.InvCode}创建单据数量:{detail.Quantity}不能大于库存可用量:{invCount}");
|
|
}
|
|
Colspan ="~" + detail.Batch + "~~~~~~~~~~~~";
|
|
string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
|
|
object ExtensionID = SqlHelper.ExecuteScalar(sqls);
|
|
bool flag = true;
|
|
foreach (var item in ExtensionIDList)
|
|
{
|
|
if (item == Colspan + WorkPoint)
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
if (ExtensionID == null && flag == true)
|
|
{
|
|
str1 = Guid.NewGuid().ToString();
|
|
sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
|
|
str1, Colspan, "", detail.Batch, "", "", "", "", "", "", "", "", "", "", "", "",
|
|
data.User, UserName, WorkPoint);
|
|
}
|
|
else if (ExtensionID != null)
|
|
{
|
|
str1 = ExtensionID.ToString();
|
|
}
|
|
ExtensionIDList.Add(Colspan + WorkPoint);
|
|
|
|
sql += "INSERT INTO ICSMOIssue(ID,IssueCode,WHCode,Sequence,InvCode,Quantity,CreatePerson,CreateDateTime,WorkPoint,Status,IssueID,IssueDetailID,ExtensionID,MUSER,MUSERName,MTIME,EATTRIBUTE,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE10,SourceCode,Type,EATTRIBUTE8,EATTRIBUTE9,IssueQuantity)" +
|
|
" select '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}',newID(),newID(),'{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','1','{23}','{24}',0";
|
|
sql = string.Format(sql, detail.ID, data.Code, detail.WHCode, detail.Sequence, detail.InvCode, detail.Quantity, data.User, data.MTIME, WorkPoint, '1', str1, data.User, UserName, data.MTIME, data.Dept, data.CodeType, data.ApplyNegCode, data.Custmer, data.Remarks, detail.DetailReamrk, detail.SYproject, "超额领料", detail.SourceCode, data.Remarks2, detail.DetailReamrk2);
|
|
}
|
|
try
|
|
{
|
|
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
|
|
{
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
msg=ex.Message;
|
|
}
|
|
return msg;
|
|
}
|
|
#region 超额领料单主表信息查询
|
|
public DataTable GetICSMOIssue(ref Pagination jqgridparam, string queryJson)
|
|
{
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
var queryParam = queryJson.ToJObject();
|
|
string sql = @" SELECT DISTINCT
|
|
a.IssueCode
|
|
,a.Status
|
|
,a.CreatePerson
|
|
,a.CreateDateTime
|
|
,a.MUSER
|
|
,a.MUSERName
|
|
,a.WHCode
|
|
--,a.SourceCode
|
|
,a.EATTRIBUTE
|
|
,LYdep.Name as LYDep
|
|
,a.EATTRIBUTE2
|
|
,a.EATTRIBUTE3
|
|
,a.EATTRIBUTE4
|
|
,a.EATTRIBUTE5
|
|
,a.EATTRIBUTE7
|
|
,a.EATTRIBUTE8
|
|
--,a.EATTRIBUTE9
|
|
,a.EATTRIBUTE10
|
|
|
|
,case when c.Quantity=Isnull(c.IssueQuantity,0) then '1' else '2' END as FLStatus
|
|
from dbo.ICSMOIssue a
|
|
INNER JOIN (SELECT Sum(a.Quantity) AS Quantity,
|
|
Sum(Isnull(a.IssueQuantity,0)) AS IssueQuantity,a.IssueCode,a.WorkPoint FROM ICSMOIssue a GROUP BY a.IssueCode,a.WorkPoint ) c ON a.IssueCode=c.IssueCode AND a.WorkPoint=c.workpoint
|
|
left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
|
|
|
|
left JOIN (SELECT b.F_ItemName as Name,b.F_ItemCode as Code FROM [dbo].[Sys_SRM_Items] a
|
|
INNER JOIN Sys_SRM_ItemsDetail b ON b.F_ItemId = a.F_Id
|
|
WHERE F_EnCode = 'LYDep') LYdep ON Code=a.EATTRIBUTE
|
|
where a.Status='1' ";
|
|
|
|
if (!string.IsNullOrWhiteSpace(queryJson))
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
|
|
{
|
|
sql += " and a.IssueCode like '%" + queryParam["POCode"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
|
|
{
|
|
sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["CreatedBy"].ToString()))
|
|
{
|
|
sql += " and a.CreatePerson like '%" + queryParam["CreatedBy"].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() + "' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
|
|
{
|
|
sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["Status"].ToString()))
|
|
{
|
|
if (queryParam["Status"].ToString()=="1")
|
|
{
|
|
sql += " and c.Quantity=Isnull(c.IssueQuantity,0) and Isnull(c.IssueQuantity,0) <> 0";
|
|
}
|
|
else if(queryParam["Status"].ToString() == "2")
|
|
{
|
|
sql += "and c.Quantity<>Isnull(c.IssueQuantity,0) ";
|
|
}
|
|
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(queryParam["DocType"].ToString()))
|
|
{
|
|
sql += " and a.EATTRIBUTE2 like '%" + queryParam["DocType"].ToString() + "%' ";
|
|
}
|
|
}
|
|
sql = string.Format(sql);
|
|
DataTable dttest = Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
#endregion
|
|
|
|
#region 超额领料单主表信息查询
|
|
public DataTable GetICSMOIssueByIssueCode(string IssueCode)
|
|
{
|
|
DataTable dt = new DataTable();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @" SELECT DISTINCT
|
|
a.IssueCode
|
|
,a.Status
|
|
,a.CreatePerson
|
|
,a.CreateDateTime
|
|
,a.MUSER
|
|
,a.MUSERName
|
|
,a.SourceCode
|
|
,a.EATTRIBUTE as DepCode
|
|
,a.SourceCode as MOCode
|
|
,a.EATTRIBUTE2
|
|
,a.EATTRIBUTE3
|
|
,a.EATTRIBUTE4
|
|
,a.EATTRIBUTE5
|
|
,a.EATTRIBUTE7
|
|
,a.EATTRIBUTE8
|
|
,a.EATTRIBUTE9
|
|
|
|
,a.EATTRIBUTE10
|
|
|
|
from dbo.ICSMOIssue a
|
|
left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
|
|
|
|
WHERE a.IssueCode='{0}'";
|
|
sql = string.Format(sql, IssueCode);
|
|
return Repository().FindTableBySql(sql.ToString());
|
|
}
|
|
#endregion
|
|
#region 主页面子表信息查询
|
|
public DataTable GetICSMOIssueDetail(string IssueCode, string queryJson, ref Pagination jqgridparam)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
DataTable dt = new DataTable();
|
|
var queryParam = queryJson.ToJObject();
|
|
//var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @" select a.ID
|
|
,a.IssueCode
|
|
,a.Sequence
|
|
,a.InvCode
|
|
,a.SourceCode as MOCode
|
|
,b.InvName
|
|
,b.InvStd
|
|
,b.EATTRIBUTE5 as OldInvCode
|
|
,a.Quantity
|
|
,a.Amount
|
|
,a.ExtensionID
|
|
,a.MUSER
|
|
,a.MUSERName
|
|
,a.MTIME
|
|
,a.WHCode
|
|
,c.WarehouseName as WHName
|
|
,a.SourceCode
|
|
,IssueQuantity
|
|
,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.EATTRIBUTE
|
|
,a.EATTRIBUTE2
|
|
,a.EATTRIBUTE3
|
|
,a.EATTRIBUTE4
|
|
,a.EATTRIBUTE5
|
|
,a.EATTRIBUTE6
|
|
,a.EATTRIBUTE7
|
|
,a.EATTRIBUTE8
|
|
,a.EATTRIBUTE9
|
|
,a.EATTRIBUTE10
|
|
from ICSMOIssue 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
|
|
left join ICSWarehouse c On c.WarehouseCode= a.WHCode AND c.WorkPoint=a.WorkPoint
|
|
WHERE a.IssueCode='" + IssueCode + "' ";
|
|
if (!string.IsNullOrWhiteSpace(queryJson))
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
|
|
{
|
|
sql += " and a.IssueCode like '%" + queryParam["POCode"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
|
|
{
|
|
sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(queryParam["CreatedBy"].ToString()))
|
|
{
|
|
sql += " and a.CreatePerson like '%" + queryParam["CreatedBy"].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() + "' ";
|
|
}
|
|
}
|
|
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
#endregion
|
|
|
|
public string DeleteICSMOIssueByCode(string keyValue)
|
|
{
|
|
//站点信息
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string msg = "";
|
|
keyValue = keyValue.Substring(1, keyValue.Length - 2);
|
|
string sql = string.Empty;
|
|
|
|
sql += string.Format(@"IF EXISTS( select ID from ICSMOIssue where IssueCode IN ({0}) and WorkPoint ='{1}' AND IssueQuantity>0)
|
|
BEGIN
|
|
RAISERROR('该单据已发料,不能删除!',16,1);
|
|
RETURN
|
|
END;
|
|
|
|
DELETE FROM dbo.ICSMOIssue WHERE IssueCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
|
|
|
|
try
|
|
{
|
|
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
|
|
{
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
msg = ex.Message;
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
#region 获取物料信息
|
|
public DataTable GetItemList(string queryJson, ref Pagination jqgridparam)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
|
|
string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName.TrimEnd(',');
|
|
var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT a.INVCODE,c.INVNAME,c.InvStd,b.MOCode FROM ICSMOPick a
|
|
INNER JOIN ICSMO b ON a.MODetailID=b.MODetailID AND a.WorkPoint=b.WorkPoint
|
|
LEFT JOIN ICSInventory c ON a.InvCode=c.InvCode AND a.WorkPoint=c.WorkPoint
|
|
WHERE a.Quantity=a.IssueQuantity";
|
|
if (!string.IsNullOrEmpty(queryJson))
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(queryParam["INVCODE"].ToString()))
|
|
sql += " and c.INVCODE like '%" + queryParam["INVCODE"].ToString() + "%'";
|
|
if (!string.IsNullOrWhiteSpace(queryParam["INVNAME"].ToString()))
|
|
sql += " and c.INVNAME like '%" + queryParam["INVNAME"].ToString() + "%'";
|
|
if (!string.IsNullOrWhiteSpace(queryParam["MOCode"].ToString()))
|
|
sql += " and b.MOCode like '%" + queryParam["MOCode"].ToString() + "%'";
|
|
}
|
|
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
sql += " and a.WorkPoint=('" + WorkPoint + "') ";
|
|
if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
|
|
{
|
|
sql += " AND b.CreatePerson='" + UserName + "'";
|
|
}
|
|
return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
|
|
}
|
|
#endregion
|
|
|
|
public DataTable GetItemListCount(string queryJson, ref Pagination jqgridparam)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
|
|
var queryParam = queryJson.ToJObject();
|
|
List<DbParameter> parameter = new List<DbParameter>();
|
|
string sql = @"SELECT a.INVCODE,a.INVNAME,ISnull(c.Quantity,0)-ISnull(b.Quantity,0) + ISnull(d.Quantity,0) AS Quantity,a.EATTRIBUTE2,a.InvStd
|
|
|
|
FROM ICSInventory a
|
|
LEFT JOIN
|
|
(SELECT Sum(ISnull(Quantity,0)) as Quantity,WorkPoint,INVCode FROM (SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(OutQuantity, 0)),0) as Quantity,WorkPoint,INVCode FROM ICSOtherOut GROUP BY WorkPoint,INVCode
|
|
|
|
UNION ALL
|
|
|
|
SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(IssueQuantity, 0)),0) as Quantity,WorkPoint,INVCode FROM ICSMOIssue GROUP BY WorkPoint,INVCode
|
|
|
|
UNION ALL
|
|
|
|
SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(SDNQuantity, 0)),0) as Quantity,WorkPoint,INVCode FROM ICSSDN GROUP BY WorkPoint,INVCode
|
|
UNION ALL
|
|
SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(IssueQuantity, 0)),0) as Quantity,WorkPoint,INVCode from ICSMOIssue
|
|
GROUP BY WorkPoint,INVCode )d
|
|
GROUP BY d.INVCode,d.WorkPoint) b
|
|
ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
|
|
left JOIN( SELECT Sum(ISnull(Quantity,0)) AS Quantity,InvCode, WorkPoint FROM ICSWareHouseLotInfo where Freeze<>1 GROUP BY InvCode, WorkPoint) c ON c.InvCode=a.INVCode AND c.WorkPoint=a.WorkPoint
|
|
left join ICSMOIssue d ON d.InvCode=a.InvCode AND a.WorkPoint=d.WorkPoint
|
|
where 1=1";
|
|
if (!string.IsNullOrEmpty(queryJson))
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(queryParam["INVCODE"].ToString()))
|
|
sql += " and a.INVCODE like '%" + queryParam["INVCODE"].ToString() + "%'";
|
|
if (!string.IsNullOrWhiteSpace(queryParam["IssueCode"].ToString()))
|
|
sql += " and d.IssueCode like '%" + queryParam["IssueCode"].ToString() + "%'";
|
|
}
|
|
//string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
sql += " and a.WorkPoint=('" + WorkPoint + "') ";
|
|
|
|
return SqlHelper.CmdExecuteDataTable(sql);
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 获取领料部门
|
|
public DataTable GetLYDep()
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
|
|
string sql = @"SELECT b.F_ItemName as Name,b.F_ItemCode as Code FROM [dbo].[Sys_SRM_Items] a
|
|
INNER JOIN Sys_SRM_ItemsDetail b ON b.F_ItemId = a.F_Id
|
|
WHERE F_EnCode = 'LYDep'";
|
|
return SqlHelper.CmdExecuteDataTable(sql);
|
|
|
|
}
|
|
#endregion
|
|
#region 获取单据类型
|
|
/// <summary>
|
|
/// 获取U9单据类型
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string GetU9CodeType(string type)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
|
|
string result=String.Empty;
|
|
try
|
|
{
|
|
TypeModel model = new TypeModel
|
|
{
|
|
TypeName = type,
|
|
OrgCode = WorkPoint
|
|
};
|
|
string Inputstr = JsonConvert.SerializeObject(model);
|
|
|
|
string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "GetU9DocType ";
|
|
result = HttpPost(APIURL, Inputstr);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
result = ex.Message;
|
|
|
|
}
|
|
return result;
|
|
}
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// 获取单号
|
|
/// </summary>
|
|
/// <param name="WorkPoint"></param>
|
|
/// <returns></returns>
|
|
public string GetBidCode(string WorkPoint)
|
|
{
|
|
WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
string BidCide = string.Empty;
|
|
if (!string.IsNullOrEmpty(WorkPoint))
|
|
{
|
|
string DateString = DateTime.Now.ToString("yyyyMMdd");
|
|
|
|
string Pre = "EM" + DateString;
|
|
BidCide = GetSerialCode(WorkPoint, "ICSMOIssue", "IssueCode", Pre, 4);
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(BidCide))
|
|
{
|
|
string sqlISHave = @"SELECT IssueCode FROM ICSMOIssue a
|
|
WHERE a.IssueCode = '{0}'";
|
|
sqlISHave = string.Format(sqlISHave, BidCide);
|
|
DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
|
|
if (dtIsHave.Rows.Count > 0)
|
|
{
|
|
throw new Exception("单号已存在!");
|
|
}
|
|
}
|
|
return BidCide;
|
|
}
|
|
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 SqlHelper.ExecuteScalar(sql).ToString();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改单据
|
|
/// </summary>
|
|
/// <param name="ICSASN"></param>
|
|
/// <returns></returns>
|
|
public string UpdateICSMOIssue(string ICSASN)
|
|
{
|
|
string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
|
|
string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
string msg = "";
|
|
try
|
|
{
|
|
// 获取解析后的数据
|
|
JsonData data = JsonConvert.DeserializeObject<JsonData>(ICSASN);
|
|
string sql = $@"
|
|
DECLARE @CreatedCode VARCHAR(50);
|
|
DECLARE @CreatedName VARCHAR(50);
|
|
SET @CreatedCode =(SELECT top 1 MUSER from ICSMOIssue where IssueCode = '{data.Code}' and WorkPoint ='{WorkPoint}');
|
|
SET @CreatedName=(SELECT top 1 MUSERName from ICSMOIssue where IssueCode = '{data.Code}' and WorkPoint ='{WorkPoint}') ;
|
|
delete from ICSMOIssue where IssueCode = '{data.Code}'; ";
|
|
string str1 = "";
|
|
List<string> ExtensionIDList = new List<string>();
|
|
|
|
foreach (var detail in data.Detail)
|
|
{
|
|
//获取物料的可用数量,判断当前创建单据数量
|
|
decimal invCount = iCSAccessoriesMOIApplyApp.GetInvCodeCount(detail.InvCode, "", "");
|
|
if (invCount < detail.Quantity)
|
|
{
|
|
throw new Exception($"物料{detail.InvCode}创建单据数量:{detail.Quantity}不能大于库存可用量:{invCount}");
|
|
}
|
|
string Colspan = "~" + detail.Batch + "~~~~~~~~~~~~";
|
|
string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
|
|
object ExtensionID = SqlHelper.ExecuteScalar(sqls);
|
|
bool flag = true;
|
|
foreach (var item in ExtensionIDList)
|
|
{
|
|
if (item == Colspan + WorkPoint)
|
|
{
|
|
flag = false;
|
|
}
|
|
}
|
|
if (ExtensionID == null && flag == true)
|
|
{
|
|
str1 = Guid.NewGuid().ToString();
|
|
sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
|
|
Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
|
|
str1, Colspan, "", detail.Batch, "", "", "", "", "", "", "", "", "", "", "", "",
|
|
data.User, UserName, WorkPoint);
|
|
}
|
|
else if (ExtensionID != null)
|
|
{
|
|
str1 = ExtensionID.ToString();
|
|
}
|
|
ExtensionIDList.Add(Colspan + WorkPoint);
|
|
|
|
sql += "INSERT INTO ICSMOIssue(ID,IssueCode,WHCode,Sequence,InvCode,Quantity,CreatePerson,CreateDateTime,WorkPoint,Status,IssueID,IssueDetailID,ExtensionID,MUSER,MUSERName,MTIME,EATTRIBUTE,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE10,SourceCode,Type,EATTRIBUTE8,EATTRIBUTE9,IssueQuantity)" +
|
|
" select '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}',newID(),newID(),'{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','1','{23}','{24}',0";
|
|
sql = string.Format(sql, detail.ID, data.Code, detail.WHCode, detail.Sequence, detail.InvCode, detail.Quantity, data.User, data.MTIME, WorkPoint, '1', str1, data.User, UserName, data.MTIME, data.Dept, data.CodeType, data.ApplyNegCode, data.Custmer, data.Remarks, detail.DetailReamrk, detail.SYproject, "超额领料", detail.SourceCode, data.Remarks2, detail.DetailReamrk2);
|
|
}
|
|
|
|
if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
|
|
{
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
msg = ex.Message;
|
|
}
|
|
return msg;
|
|
}
|
|
public DataTable GetICSReturnTemporary(string rfqno)
|
|
{
|
|
string sql = @"SELECT
|
|
a.ID,
|
|
a.IssueCode,
|
|
a.InvCode,
|
|
b.InvName as INVNAME,
|
|
b.InvStd,
|
|
a.Quantity,
|
|
a.SourceCode as MOCode,
|
|
a.WHCode,
|
|
a.WHCode as WHCodeHHH,
|
|
a.EATTRIBUTE6,
|
|
a.EATTRIBUTE9,
|
|
a.SourceCode,
|
|
a.Quantity
|
|
,f.BatchCode as Batch
|
|
,c.WarehouseName as WHCodeName
|
|
FROM ICSMOIssue a
|
|
LEFT JOIN ICSInventory b ON a.InvCode = b.InvCode
|
|
left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
|
|
LEFT JOIN dbo.ICSWarehouse c ON a.WHCode=c.WarehouseCode AND a.WorkPoint=c.WorkPoint
|
|
where a.IssueCode='" + rfqno + "'";
|
|
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 (Invmes.Rows.Count > 0)
|
|
{
|
|
dtCloned.Merge(Invmes, false);
|
|
}
|
|
return dtCloned;
|
|
}
|
|
|
|
|
|
//接口api解析
|
|
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);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 定义一个类来表示 JSON 数据的结构
|
|
public class JsonData
|
|
{
|
|
public string Dept { get; set; }
|
|
public string LYDept { get; set; }
|
|
public string CodeType { get; set; }
|
|
public string ApplyNegCode { get; set; }
|
|
public string Custmer { get; set; }
|
|
public string Remarks { get; set; }
|
|
public string Remarks2 { get; set; }
|
|
public string Remarks3 { get; set; }
|
|
public string Code { get; set; }
|
|
public string MTIME { get; set; }
|
|
public string User { get; set; }
|
|
|
|
public List<JsonDetail> Detail { get; set; }
|
|
}
|
|
|
|
public class JsonDetail
|
|
{
|
|
public string ID;
|
|
public int Sequence { get; set; }
|
|
public string InvCode { get; set; }
|
|
public decimal Quantity { get; set; }
|
|
public string SYproject { get; set; }
|
|
public string WHCode { get; set; }
|
|
/// <summary>
|
|
/// 工单号
|
|
/// </summary>
|
|
public string SourceCode { get; set; }
|
|
public string DetailReamrk { get; set; }
|
|
public string DetailReamrk2 { get; set; }
|
|
public string Batch { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 材料出库
|
|
/// </summary>
|
|
public class LOTStockModel
|
|
{
|
|
/// <summary>
|
|
/// 源头单据号
|
|
/// </summary>
|
|
public string TransCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 源头单据行号
|
|
/// </summary>
|
|
public string TransSequence { get; set; }
|
|
/// <summary>
|
|
/// 数量
|
|
/// </summary>
|
|
public string Quantity { get; set; }
|
|
/// <summary>
|
|
/// 辅计量数量
|
|
/// </summary>
|
|
public string Amount { get; set; }
|
|
/// <summary>
|
|
/// 操作类型
|
|
/// </summary>
|
|
public string TransType { get; set; } = "生产发料-领料申请单";
|
|
/// <summary>
|
|
/// 操作人
|
|
/// </summary>
|
|
public string User { get; set; }
|
|
/// <summary>
|
|
/// 操作时间
|
|
/// </summary>
|
|
public string MTime { get; set; }
|
|
|
|
|
|
public string WorkPoint { get; set; }
|
|
public List<LOTStockModelList> Detail { get; set; }
|
|
|
|
}
|
|
public class LOTStockModelList
|
|
{
|
|
/// <summary>
|
|
/// 源头单据行号
|
|
/// </summary>
|
|
public string TransSequence { get; set; }
|
|
/// <summary>
|
|
/// 条码
|
|
/// </summary>
|
|
public string LotNo { get; set; }
|
|
/// <summary>
|
|
/// 数量
|
|
/// </summary>
|
|
public string CurrentQuantity { get; set; }
|
|
/// <summary>
|
|
/// 辅计量数量
|
|
/// </summary>
|
|
public string CurrentAmount { get; set; }
|
|
|
|
public string Sequence { get; set; }
|
|
|
|
/// <summary>
|
|
/// 仓库代码
|
|
/// </summary>
|
|
public string WarehouseCode { get; set; }
|
|
/// <summary>
|
|
/// 库位代码
|
|
/// </summary>
|
|
public string LocationCode { get; set; }
|
|
/// <summary>
|
|
/// LogID
|
|
/// </summary>
|
|
public string LogID { get; set; }
|
|
}
|
|
|
|
public class TypeModel
|
|
{
|
|
/// <summary>
|
|
/// 名称
|
|
/// </summary>
|
|
public string TypeName { get; set; }
|
|
/// <summary>
|
|
/// 组织
|
|
/// </summary>
|
|
public string OrgCode { get; set; }
|
|
|
|
}
|
|
|
|
}
|
|
}
|