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.

447 lines
18 KiB

3 weeks ago
  1. using NFine.Data.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using NFine.Code;
  9. using NFine.Repository;
  10. using System.Data.Common;
  11. using NFine.Domain._03_Entity.SRM;
  12. using ICS.Application.Entity;
  13. using Newtonsoft.Json;
  14. using System.Configuration;
  15. using System.Data.SqlClient;
  16. using ICS.Data;
  17. using Newtonsoft.Json.Linq;
  18. using NFine.Domain._03_Entity.WMS;
  19. using System.Net;
  20. using System.IO;
  21. using NFine.Application.SystemManage;
  22. namespace NFine.Application.WMS
  23. {
  24. public class MaterialsDeliveredRTMApp : RepositoryFactory<ICSVendor>
  25. {
  26. public static DataTable MDInvmes = new DataTable();
  27. DataActionApp actionapp = new DataActionApp();
  28. public DataTable GetICSMOApplyNeg(string MenuID, ref Pagination jqgridparam)
  29. {
  30. string DataActionsql = actionapp.DataActionSqlGet(MenuID);
  31. DataTable dt = new DataTable();
  32. List<DbParameter> parameter = new List<DbParameter>();
  33. string sql = @"select a.ID,a.ApplyNegCode,a.WHCode,b.WarehouseName,a.Status,a.Type,a.Memo,a.CreatePerson,a.CreateDateTime,a.MUSER,a.MUSERName
  34. ,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  35. a.EATTRIBUTE9,a.EATTRIBUTE10,c.F_RealName AS ApproveBy
  36. from ICSMOApplyNeg a
  37. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  38. LEFT JOIN Sys_SRM_User c ON c.F_Account=a.EATTRIBUTE1
  39. where a.Type='3'";
  40. sql = string.Format(sql);
  41. if (DataActionsql != "")
  42. {
  43. sql += " " + DataActionsql;
  44. }
  45. DataTable dttest = Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  46. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  47. }
  48. public DataTable GetICSMOApplyNegDetail(string ApplyNegCode, ref Pagination jqgridparam)
  49. {
  50. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  51. DataTable dt = new DataTable();
  52. //var queryParam = queryJson.ToJObject();
  53. List<DbParameter> parameter = new List<DbParameter>();
  54. string sql = @" select a.ID
  55. ,a.ApplyNegCode
  56. ,a.Sequence
  57. ,a.SourceDetailID
  58. ,a.InvCode
  59. ,d.InvName
  60. ,d.InvStd
  61. ,d.InvDesc
  62. ,a.Quantity
  63. ,a.Amount
  64. ,a.IssueNegQuantity
  65. ,a.ExtensionID
  66. ,a.MUSER
  67. ,a.MUSERName
  68. ,a.MTIME
  69. ,f.Colspan
  70. ,f.ProjectCode
  71. ,f.BatchCode
  72. ,f.Version
  73. ,f.Brand
  74. ,f.cFree1
  75. ,f.cFree2
  76. ,f.cFree3
  77. ,f.cFree4
  78. ,f.cFree5
  79. ,f.cFree6
  80. ,f.cFree7
  81. ,f.cFree8
  82. ,f.cFree9
  83. ,f.cFree10
  84. ,a.EATTRIBUTE1
  85. ,a.EATTRIBUTE2
  86. ,a.EATTRIBUTE3
  87. ,a.EATTRIBUTE4
  88. ,a.EATTRIBUTE5
  89. ,a.EATTRIBUTE6
  90. ,a.EATTRIBUTE7
  91. ,a.EATTRIBUTE8
  92. ,a.EATTRIBUTE9
  93. ,a.EATTRIBUTE10
  94. ,b.SourceCode
  95. ,c.CreatePerson AS MOCreater
  96. from ICSMOApplyNegDetail a
  97. LEFT JOIN ICSMOIssue b ON a.SourceDetailID=issueDetailID AND a.WorkPoint=b.WorkPoint
  98. LEFT JOIN ICSMO c ON c.MOCode=b.SourceCode AND c.WorkPoint=b.WorkPoint
  99. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  100. left join dbo.ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  101. WHERE a.ApplyNegCode='" + ApplyNegCode + "' ";
  102. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  103. }
  104. public string DeleteICSMOApplyNeg(string keyValue)
  105. {
  106. //站点信息
  107. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  108. string msg = "";
  109. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  110. string sql = string.Empty;
  111. string sqlSeach = string.Format(@"select a.LotNo from dbo.ICSInventoryLotDetail a
  112. inner join dbo.ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint and b.Type='13'
  113. where a.TransCode in ({0})", keyValue.TrimEnd(','));
  114. DataTable dt = SqlHelper.GetDataTableBySql(sqlSeach);
  115. if (dt.Rows.Count > 0)
  116. {
  117. msg = "该退料单已生成条码,请先删除条码!";
  118. return msg;
  119. }
  120. sql += string.Format(@"DELETE FROM dbo.ICSMOApplyNeg WHERE ApplyNegCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  121. sql += string.Format(@"DELETE FROM dbo.ICSMOApplyNegDetail WHERE ApplyNegCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  122. try
  123. {
  124. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  125. {
  126. }
  127. }
  128. catch (Exception ex)
  129. {
  130. throw new Exception(ex.Message);
  131. }
  132. return msg;
  133. }
  134. public DataTable GetICSReturnTemporary(string rfqno)
  135. {
  136. string sql = @"SELECT
  137. a.ApplyNegCode,
  138. a.InvCode,
  139. a.Quantity,
  140. a.Amount,
  141. a.SourceDetailID as ZJID,
  142. b.InvName,
  143. b.InvStd,
  144. b.InvUnit,
  145. a.IssueNegQuantity,
  146. 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
  147. FROM
  148. ICSMOApplyNegDetail a
  149. LEFT JOIN ICSInventory b ON a.InvCode = b.InvCode and a.WorkPoint=b.WorkPoint
  150. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  151. where a.ApplyNegCode='" + rfqno + "'";
  152. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  153. DataTable dtCloned = table.Clone();
  154. foreach (DataColumn col in dtCloned.Columns)
  155. {
  156. col.DataType = typeof(string);
  157. }
  158. foreach (DataRow row in table.Rows)
  159. {
  160. DataRow newrow = dtCloned.NewRow();
  161. foreach (DataColumn column in dtCloned.Columns)
  162. {
  163. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  164. }
  165. dtCloned.Rows.Add(newrow);
  166. }
  167. if (MDInvmes.Rows.Count > 0)
  168. {
  169. dtCloned.Merge(MDInvmes, false);
  170. }
  171. return dtCloned;
  172. }
  173. public void ClearTemp()
  174. {
  175. MDInvmes.Rows.Clear();
  176. }
  177. public DataTable GetINV(string invcode, string SourceCode, string SourceSequence, string MenuID, ref Pagination jqgridparam)
  178. {
  179. string DataActionsql = actionapp.DataActionSqlGet(MenuID);
  180. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  181. List<DbParameter> parameter = new List<DbParameter>();
  182. DataTable table = new DataTable();
  183. string wherestr = "";
  184. if (!string.IsNullOrEmpty(invcode))
  185. {
  186. wherestr += " and a.InvCode like '%" + invcode + "%'";
  187. }
  188. if (!string.IsNullOrEmpty(SourceCode))
  189. {
  190. wherestr += " and a.SourceCode like '%" + SourceCode + "%'";
  191. }
  192. if (!string.IsNullOrEmpty(SourceSequence))
  193. {
  194. wherestr += " and a.SourceSequence like '%" + SourceSequence + "%'";
  195. }
  196. string sql = @"SELECT DISTINCT a.IssueDetailID as ZJID,a.IssueCode,a.Sequence as MuHang,a.SourceCode,a.SourceSequence,ISNULL(g.DepCode,'') AS DepCode, a.InvCode,a.Quantity,a.Amount,b.InvName,b.InvStd,b.InvUnit,a.IssueQuantity as IssueNegQuantity,a.ExtensionID
  197. ,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
  198. FROM ICSMOIssue a left JOIN ICSInventory b ON a.InvCode = b.InvCode and a.WorkPoint=b.WorkPoint
  199. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  200. left join ICSMO g on g.MOCode=a.SourceCode and g.WorkPoint=a.WorkPoint
  201. where a.IssueQuantity>0 and a.WorkPoint = '" + WorkPoint + "'" + wherestr;
  202. sql += " " + DataActionsql;
  203. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  204. }
  205. public void AddMOApplyNegTemp(string json)
  206. {
  207. var data = json.ToJObject();
  208. if (MDInvmes.Columns.Count <= 0)
  209. {
  210. MDInvmes.Columns.Add("ZJID", typeof(string));
  211. MDInvmes.Columns.Add("InvCode", typeof(string));
  212. MDInvmes.Columns.Add("INVNAME", typeof(string));
  213. MDInvmes.Columns.Add("InvStd", typeof(string));
  214. MDInvmes.Columns.Add("InvUnit", typeof(string));
  215. MDInvmes.Columns.Add("Quantity", typeof(string));
  216. MDInvmes.Columns.Add("IssueNegQuantity", typeof(string));
  217. MDInvmes.Columns.Add("ExtensionID", typeof(string));
  218. MDInvmes.Columns.Add("Amount", typeof(string));
  219. MDInvmes.Columns.Add("ID", typeof(string));
  220. }
  221. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  222. DataRow newrow = MDInvmes.NewRow();
  223. newrow["ZJID"] = data["ZJID"];
  224. newrow["InvName"] = data["InvName"];
  225. newrow["InvCode"] = data["InvCode"];
  226. newrow["InvStd"] = data["InvStd"];
  227. newrow["InvUnit"] = data["InvUnit"];
  228. newrow["Amount"] = data["Amount"];
  229. newrow["IssueNegQuantity"] = data["IssueNegQuantity"];
  230. newrow["ExtensionID"] = data["ExtensionID"];
  231. newrow["Quantity"] = "";
  232. newrow["ID"] = data["ID"];
  233. MDInvmes.Rows.Add(newrow);
  234. }
  235. public void UpdateMOApplyNegTemp(string json)
  236. {
  237. var data = json.ToJObject();
  238. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  239. var info = MDInvmes.Select(string.Format("TLZID='{0}'", data["TLZID"]));
  240. if (info != null && info.Length > 0)
  241. {
  242. info[0]["ZJID"] = data["ZJID"];
  243. info[0]["InvName"] = data["InvName"];
  244. info[0]["InvCode"] = data["InvCode"];
  245. info[0]["InvStd"] = data["InvStd"];
  246. info[0]["InvUnit"] = data["InvUnit"];
  247. info[0]["Amount"] = data["Amount"];
  248. info[0]["IssueNegQuantity"] = data["IssueNegQuantity"];
  249. info[0]["ExtensionID"] = data["ExtensionID"];
  250. info[0]["Quantity"] = 0;
  251. }
  252. else
  253. {
  254. DataRow newrow = MDInvmes.NewRow();
  255. newrow["ZJID"] = data["ZJID"];
  256. newrow["InvName"] = data["InvName"];
  257. newrow["InvCode"] = data["InvCode"];
  258. newrow["InvStd"] = data["InvStd"];
  259. newrow["InvUnit"] = data["InvUnit"];
  260. newrow["Amount"] = data["Amount"];
  261. newrow["IssueNegQuantity"] = data["IssueNegQuantity"];
  262. newrow["ExtensionID"] = data["ExtensionID"];
  263. newrow["Quantity"] = 0;
  264. newrow["ID"] = data["ID"];
  265. newrow["TLZID"] = data["TLZID"];
  266. MDInvmes.Rows.Add(newrow);
  267. }
  268. }
  269. public string SaveICSMOApplyNeg(string ICSASN)
  270. {
  271. string msg = "";
  272. string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "MOIssueDocNegativeApply/Create";
  273. string result = HttpPost(APIURL, ICSASN);
  274. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  275. string MessAge = Obj["Message"].ToString();
  276. string Success = Obj["Success"].ToString();
  277. if (Success.ToUpper() == "FALSE")
  278. {
  279. msg = MessAge;
  280. }
  281. return msg;
  282. }
  283. public DataTable GetICSMOApplyNegDetailTemp(string ApplyNegCode)
  284. {
  285. string sql = @"SELECT
  286. a.ID,
  287. a.ID as TLZID,
  288. a.ApplyNegCode,
  289. a.InvCode,
  290. a.Quantity,
  291. a.Amount,
  292. a.SourceDetailID as ZJID,
  293. b.InvName,
  294. b.InvStd,
  295. b.InvUnit,
  296. ISNULL(l.Quantity, 0) as Quantitys,
  297. ISNULL(l.Amount, 0) as Amounts,
  298. a.IssueNegQuantity,
  299. 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
  300. FROM
  301. ICSMOApplyNegDetail a
  302. LEFT JOIN ICSInventory b ON a.InvCode = b.InvCode and a.WorkPoint=b.WorkPoint
  303. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  304. left join ICSMOIssue l ON l.InvCode=a.InvCode AND l.WorkPoint=a.WorkPoint AND l.ExtensionID=a.ExtensionID AND l.IssueDetailID=a.SourceDetailID
  305. where a.ApplyNegCode='" + ApplyNegCode + "'";
  306. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  307. if (MDInvmes == null || MDInvmes.Columns.Count <= 0)
  308. MDInvmes = table.Clone();
  309. DataTable dtCloned = table.Clone();
  310. foreach (DataColumn col in dtCloned.Columns)
  311. {
  312. col.DataType = typeof(string);
  313. }
  314. foreach (DataRow row in table.Rows)
  315. {
  316. DataRow newrow = dtCloned.NewRow();
  317. foreach (DataColumn column in dtCloned.Columns)
  318. {
  319. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  320. }
  321. dtCloned.Rows.Add(newrow);
  322. }
  323. if (MDInvmes.Rows.Count > 0)
  324. {
  325. //dtCloned.Merge(Invmes, false);
  326. foreach (DataRow data in MDInvmes.Rows)
  327. {
  328. var info = dtCloned.Select(string.Format("TLZID='{0}'", data["TLZID"]));
  329. if (info != null && info.Length > 0)
  330. {
  331. info[0]["ZJID"] = data["ZJID"];
  332. info[0]["InvName"] = data["InvName"];
  333. info[0]["InvCode"] = data["InvCode"];
  334. info[0]["InvStd"] = data["InvStd"];
  335. info[0]["InvUnit"] = data["InvUnit"];
  336. info[0]["Amount"] = data["Amount"];
  337. info[0]["IssueNegQuantity"] = data["IssueNegQuantity"];
  338. info[0]["ExtensionID"] = data["ExtensionID"];
  339. info[0]["Quantity"] = 0;
  340. }
  341. else
  342. {
  343. DataRow newrow = dtCloned.NewRow();
  344. newrow["ZJID"] = data["ZJID"];
  345. newrow["InvName"] = data["InvName"];
  346. newrow["InvCode"] = data["InvCode"];
  347. newrow["InvStd"] = data["InvStd"];
  348. newrow["InvUnit"] = data["InvUnit"];
  349. newrow["Amount"] = data["Amount"];
  350. newrow["Quantity"] = 0;
  351. newrow["ID"] = data["ID"];
  352. newrow["TLZID"] = data["TLZID"];
  353. newrow["IssueNegQuantity"] = data["IssueNegQuantity"];
  354. newrow["ExtensionID"] = data["ExtensionID"];
  355. dtCloned.Rows.Add(newrow);
  356. }
  357. }
  358. }
  359. return dtCloned;
  360. }
  361. public string UpdateICSMOApplyNeg(string ICSASN)
  362. {
  363. string msg = "";
  364. string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "MOIssueDocNegativeApply/Update";
  365. string result = HttpPost(APIURL, ICSASN);
  366. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  367. string MessAge = Obj["Message"].ToString();
  368. string Success = Obj["Success"].ToString();
  369. if (Success.ToUpper() == "FALSE")
  370. {
  371. msg = MessAge;
  372. }
  373. return msg;
  374. }
  375. public static string HttpPost(string url, string body)
  376. {
  377. try
  378. {
  379. Encoding encoding = Encoding.UTF8;
  380. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  381. request.Method = "POST";
  382. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  383. request.ContentType = "application/json; charset=utf-8";
  384. byte[] buffer = encoding.GetBytes(body);
  385. request.ContentLength = buffer.Length;
  386. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  387. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  388. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  389. {
  390. return reader.ReadToEnd();
  391. }
  392. }
  393. catch (WebException ex)
  394. {
  395. throw new Exception(ex.Message);
  396. }
  397. }
  398. }
  399. }