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.

503 lines
21 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 System.Reflection.Emit;
  22. namespace NFine.Application.WMS
  23. {
  24. public class ICSMOApp: RepositoryFactory<ICSVendor>
  25. {
  26. public static DataTable Invmes = new DataTable();
  27. // public static DataTable Supplier = new DataTable();
  28. /// <summary>
  29. /// 退料
  30. /// </summary>
  31. /// <param name="jqgridparam"></param>
  32. /// <returns></returns>
  33. public DataTable GetICSMOApplyNeg(ref Pagination jqgridparam)
  34. {
  35. DataTable dt = new DataTable();
  36. List<DbParameter> parameter = new List<DbParameter>();
  37. string sql = @"select a.mocode, a.MUSER,a.MUSERName as CreatePerson ,a.MOstatus from ICSMO a
  38. --LEFT JOIN ICSType d ON d.TableCode='ICSMO' AND d.ColumnCode='MOStatus' AND a.MOStatus=d.Code AND a.WorkPoint=d.WorkPoint
  39. group by a.mocode,a.CreatePerson,a.CreateDateTime, a.MUSER,a.MUSERName,a.MOstatus
  40. having 1=1 and a.MOStatus<>'3' ";
  41. sql = string.Format(sql);
  42. DataTable dttest = Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  43. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  44. }
  45. //子表查询
  46. public DataTable GetICSMOApplyNegDetail(string ApplyNegCode, ref Pagination jqgridparam)
  47. {
  48. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  49. DataTable dt = new DataTable();
  50. //var queryParam = queryJson.ToJObject();
  51. List<DbParameter> parameter = new List<DbParameter>();
  52. string sql = @"select a.id ,a.MOcode,a.Sequence,a.InvCode,a.Quantity,a.RCVQuantity,a.CreatePerson,a.CreateDateTime, a.MUSER,a.MUSERName,a.MTIME,a.ExtensionID,
  53. f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  54. ,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,
  55. a.EATTRIBUTE9,a.EATTRIBUTE10 from ICSMO a
  56. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  57. where a.MOStatus<> '3' and a.MOCode = '" + ApplyNegCode + "' ";
  58. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  59. }
  60. public DataTable GetINV(string invcode, ref Pagination jqgridparam)
  61. {
  62. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  63. List<DbParameter> parameter = new List<DbParameter>();
  64. DataTable table = new DataTable();
  65. string wherestr = "";
  66. if (!string.IsNullOrEmpty(invcode))
  67. {
  68. wherestr += " and InvCode like '%" + invcode + "%'";
  69. }
  70. string sql = @"select ID, InvCode ,InvName ,InvStd ,InvUnit ,ClassCode ,ClassName from ICSInventory where WorkPoint = '" + WorkPoint + "'" + wherestr;
  71. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  72. }
  73. public DataTable GetMO(string MOCode, ref Pagination jqgridparam)
  74. {
  75. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  76. List<DbParameter> parameter = new List<DbParameter>();
  77. DataTable table = new DataTable();
  78. string wherestr = "";
  79. if (!string.IsNullOrEmpty(MOCode))
  80. {
  81. wherestr += " and a.MOCode like '%" + MOCode + "%'";
  82. }
  83. string sql = @"select a.ID,a.MOCode,a.Sequence as MOSeq, a.InvCode ,b.InvName ,b.InvStd ,b.InvUnit,c.DepCode,c.DepName,a.StartDate
  84. from ICSMO a
  85. join ICSInventory b on a.InvCode = b.InvCode and a.WorkPoint = b.WorkPoint
  86. join ICSDepartment c on a.DepCode = c.DepCode and a.WorkPoint = c.WorkPoint where a.WorkPoint = '" + WorkPoint + "'" + wherestr;
  87. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  88. }
  89. public DataTable GetICSMOPickLog(string invcode, ref Pagination jqgridparam)
  90. {
  91. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  92. List<DbParameter> parameter = new List<DbParameter>();
  93. DataTable table = new DataTable();
  94. //string wherestr = "";
  95. //if (!string.IsNullOrEmpty(invcode))
  96. //{
  97. // wherestr += " and a.InvCode like '%" + invcode + "'%";
  98. //}
  99. string sql = @" select distinct a.WHCode,b.MOCode,b.Sequence,a.Sequence as ZJHH,c.BatchCode,a.Quantity,a.Amount,a.ID,a.InvCode
  100. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  101. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  102. from ICSMOPick a
  103. left join ICSMO b on b.ID=a.MODetailID and b.WorkPoint=a.WorkPoint and b.MOStatus<>'3'
  104. left join ICSExtension f on a.ExtensionID=f.ID
  105. where a.InvCode='{0}' and a.WorkPoint='{1}'
  106. ";
  107. sql = string.Format(sql, invcode, WorkPoint);
  108. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  109. }
  110. /// <summary>
  111. /// 获取仓库列表
  112. /// </summary>
  113. /// <returns></returns>
  114. public DataTable GetWHCode()
  115. {
  116. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  117. string sql = @"
  118. select '' as WarehouseCode,'' as WarehouseName
  119. union all
  120. select WarehouseCode,WarehouseName from ICSWarehouse where Enable='1' and WorkPoint='{0}'
  121. ";
  122. //string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  123. //if (role != "admin")
  124. //{
  125. // sql += " and b.WorkPoint=" + WorkPoint.TrimEnd(',') + "";
  126. //}
  127. sql = string.Format(sql, WorkPoint);
  128. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  129. return dt;
  130. }
  131. public DataTable GetICSReturnTemporary(string rfqno)
  132. {
  133. string sql = @"select a.mocode,a.CreatePerson,a.CreateDateTime, a.MUSER,a.MUSERName from ICSMO a where a.MOStatus<>'3'
  134. group by a.mocode,a.CreatePerson,a.CreateDateTime, a.MUSER,a.MUSERName
  135. having a.mocode='" + rfqno + "'";
  136. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  137. DataTable dtCloned = table.Clone();
  138. foreach (DataColumn col in dtCloned.Columns)
  139. {
  140. col.DataType = typeof(string);
  141. }
  142. foreach (DataRow row in table.Rows)
  143. {
  144. DataRow newrow = dtCloned.NewRow();
  145. foreach (DataColumn column in dtCloned.Columns)
  146. {
  147. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  148. }
  149. dtCloned.Rows.Add(newrow);
  150. }
  151. if (Invmes.Rows.Count > 0)
  152. {
  153. dtCloned.Merge(Invmes, false);
  154. }
  155. return dtCloned;
  156. }
  157. public string GetNewid()
  158. {
  159. string sql = "select newid() AS ID";
  160. return Repository().FindTableBySql(sql, null).Rows[0]["ID"].ToString();
  161. }
  162. public void AddMOApplyNegTemp(string json)
  163. {
  164. var data = json.ToJObject();
  165. if (Invmes.Columns.Count <= 0)
  166. {
  167. // ID: ID,
  168. Invmes.Columns.Add("InvCode", typeof(string));
  169. Invmes.Columns.Add("INVNAME", typeof(string));
  170. Invmes.Columns.Add("InvStd", typeof(string));
  171. Invmes.Columns.Add("InvUnit", typeof(string));
  172. Invmes.Columns.Add("ID", typeof(string));
  173. Invmes.Columns.Add("ProjectCode", typeof(string));
  174. Invmes.Columns.Add("BatchCode", typeof(string));
  175. Invmes.Columns.Add("Version", typeof(string));
  176. Invmes.Columns.Add("Brand", typeof(string));
  177. Invmes.Columns.Add("cFree1", typeof(string));
  178. Invmes.Columns.Add("cFree2", typeof(string));
  179. Invmes.Columns.Add("cFree3", typeof(string));
  180. Invmes.Columns.Add("cFree4", typeof(string));
  181. Invmes.Columns.Add("cFree5", typeof(string));
  182. Invmes.Columns.Add("cFree6", typeof(string));
  183. Invmes.Columns.Add("cFree7", typeof(string));
  184. Invmes.Columns.Add("cFree8", typeof(string));
  185. Invmes.Columns.Add("cFree9", typeof(string));
  186. Invmes.Columns.Add("cFree10", typeof(string));
  187. Invmes.Columns.Add("BeginDate", typeof(string));
  188. Invmes.Columns.Add("EndDate", typeof(string));
  189. }
  190. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  191. DataRow newrow = Invmes.NewRow();
  192. newrow["InvName"] = data["InvName"];
  193. newrow["InvCode"] = data["InvCode"];
  194. newrow["InvStd"] = data["InvStd"];
  195. newrow["InvUnit"] = data["InvUnit"];
  196. newrow["ID"] = data["ID"];
  197. newrow["ProjectCode"] = data["ProjectCode"];
  198. newrow["BatchCode"] = data["BatchCode"];
  199. newrow["Version"] = data["Version"];
  200. newrow["Brand"] = data["Brand"];
  201. newrow["cFree1"] = data["cFree1"];
  202. newrow["cFree2"] = data["cFree2"];
  203. newrow["cFree3"] = data["cFree3"];
  204. newrow["cFree4"] = data["cFree4"];
  205. newrow["cFree5"] = data["cFree5"];
  206. newrow["cFree6"] = data["cFree6"];
  207. newrow["cFree7"] = data["cFree7"];
  208. newrow["cFree8"] = data["cFree8"];
  209. newrow["cFree9"] = data["cFree9"];
  210. newrow["cFree10"] = data["cFree10"];
  211. newrow["BeginDate"] = data["BeginDate"];
  212. newrow["EndDate"] = data["EndDate"];
  213. Invmes.Rows.Add(newrow);
  214. }
  215. public string DeleteMopick(string json)
  216. {
  217. try
  218. {
  219. string wheresql = "(";
  220. string[] id = json.Split(',');
  221. for (int i = 0; i < id.Length; i++)
  222. {
  223. wheresql += "'" + id[i].Replace(']', ' ').Replace('[', ' ').Replace('"', ' ').Trim() + "',";
  224. }
  225. wheresql = wheresql.Trim(',') + ")";
  226. string sql = "delete from ICSMOApplyNeg where id in" + wheresql;
  227. int count = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  228. DataRow[] row = Invmes.Select("ID in " + wheresql + "");
  229. foreach (DataRow a in row)
  230. {
  231. Invmes.Rows.Remove(a);
  232. }
  233. return "删除成功!";
  234. }
  235. catch (Exception ex)
  236. {
  237. return ex.Message + " 删除失败!";
  238. }
  239. }
  240. public void ClearTemp()
  241. {
  242. Invmes.Rows.Clear();
  243. }
  244. public string SaveICSMOApplyNeg(string ICSASN)
  245. {
  246. string msg = "";
  247. string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "ICSMO/Create";
  248. string result = HttpPost(APIURL, ICSASN);
  249. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  250. string MessAge = Obj["Message"].ToString();
  251. string Success = Obj["Success"].ToString();
  252. if (Success.ToUpper() == "FALSE")
  253. {
  254. msg = MessAge;
  255. }
  256. return msg;
  257. }
  258. public string UpdateICSMOApplyNeg(string ICSASN)
  259. {
  260. string msg = "";
  261. //string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "MOIssueDocNegativeApply/Update";
  262. string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "ICSMO/Update";
  263. string result = HttpPost(APIURL, ICSASN);
  264. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  265. string MessAge = Obj["Message"].ToString();
  266. string Success = Obj["Success"].ToString();
  267. if (Success.ToUpper() == "FALSE")
  268. {
  269. msg = MessAge;
  270. }
  271. return msg;
  272. }
  273. //接口api解析
  274. public static string HttpPost(string url, string body)
  275. {
  276. try
  277. {
  278. Encoding encoding = Encoding.UTF8;
  279. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  280. request.Method = "POST";
  281. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  282. request.ContentType = "application/json; charset=utf-8";
  283. byte[] buffer = encoding.GetBytes(body);
  284. request.ContentLength = buffer.Length;
  285. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  286. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  287. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  288. {
  289. return reader.ReadToEnd();
  290. }
  291. }
  292. catch (WebException ex)
  293. {
  294. throw new Exception(ex.Message);
  295. }
  296. }
  297. /// <summary>
  298. /// 获取料品属性修改文本框值
  299. /// </summary>
  300. /// <param name="POCode"></param>
  301. /// <param name="PORow"></param>
  302. /// <returns></returns>
  303. public DataTable GetInputValue(string ID)
  304. {
  305. try
  306. {
  307. DataTable dt = new DataTable();
  308. //var queryParam = queryJson.ToJObject();
  309. List<DbParameter> parameter = new List<DbParameter>();
  310. string sql = @"select InvCode,InvName,InvDesc,InvStd,InvUnit,AmountUnit, ClassCode,ClassName,InvRate,InvVersion,InvBrand,InvIQC,
  311. InvFQC,EffectiveEnable,EffectiveDays,BatchEnable,LotEnable,PrintEnable,WHUser
  312. from ICSInventory
  313. WHERE 1=1 AND ID='{0}' ";
  314. sql = string.Format(sql, ID);
  315. return Repository().FindTableBySql(sql.ToString());
  316. }
  317. catch (Exception ex)
  318. {
  319. throw new Exception(ex.Message.ToString());
  320. }
  321. }
  322. public DataTable GetICSMOApplyNegDetailTemp(string ApplyNegCode)
  323. {
  324. string sql = @"select a.ID ,a.MOcode,a.Sequence,a.InvCode,a.Quantity,a.RCVQuantity,a.CreatePerson,a.CreateDateTime, a.MUSER,a.MUSERName,a.MTIME,a.ExtensionID,
  325. f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  326. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10 from ICSMO a
  327. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  328. where a.MOStatus<>'3' and a.MOCode = '" + ApplyNegCode + "' ";
  329. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  330. if(Invmes==null || Invmes.Columns.Count<=0)
  331. Invmes = table.Clone();
  332. DataTable dtCloned = table.Clone();
  333. foreach (DataColumn col in dtCloned.Columns)
  334. {
  335. col.DataType = typeof(string);
  336. }
  337. foreach (DataRow row in table.Rows)
  338. {
  339. DataRow newrow = dtCloned.NewRow();
  340. foreach (DataColumn column in dtCloned.Columns)
  341. {
  342. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  343. }
  344. dtCloned.Rows.Add(newrow);
  345. }
  346. if (Invmes.Rows.Count > 0)
  347. {
  348. //dtCloned.Merge(Invmes, false);
  349. foreach (DataRow data in Invmes.Rows)
  350. {
  351. var info = dtCloned.Select(string.Format("TLZID='{0}'", data["TLZID"]));
  352. if (info != null && info.Length > 0)
  353. {
  354. info[0]["ZJID"] = data["ZJID"];
  355. info[0]["InvName"] = data["InvName"];
  356. info[0]["InvCode"] = data["InvCode"];
  357. info[0]["InvStd"] = data["InvStd"];
  358. info[0]["InvUnit"] = data["InvUnit"];
  359. info[0]["Amount"] = data["Amount"];
  360. info[0]["IssueNegQuantity"] = data["IssueNegQuantity"];
  361. info[0]["ExtensionID"] = data["ExtensionID"];
  362. info[0]["Quantity"] = 0;
  363. }
  364. else
  365. {
  366. DataRow newrow = dtCloned.NewRow();
  367. newrow["ZJID"] = data["ZJID"];
  368. newrow["InvName"] = data["InvName"];
  369. newrow["InvCode"] = data["InvCode"];
  370. newrow["InvStd"] = data["InvStd"];
  371. newrow["InvUnit"] = data["InvUnit"];
  372. newrow["Amount"] = data["Amount"];
  373. newrow["Quantity"] = 0;
  374. newrow["ID"] = data["ID"];
  375. newrow["TLZID"] = data["TLZID"];
  376. newrow["IssueNegQuantity"] = data["IssueNegQuantity"];
  377. newrow["ExtensionID"] = data["ExtensionID"];
  378. dtCloned.Rows.Add(newrow);
  379. }
  380. }
  381. }
  382. return dtCloned;
  383. }
  384. public void UpdateMOApplyNegTemp(string json)
  385. {
  386. var data = json.ToJObject();
  387. string usercode = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  388. var info = Invmes.Select(string.Format("TLZID='{0}'", data["TLZID"]));
  389. if (info != null && info.Length > 0)
  390. {
  391. info[0]["ZJID"] = data["ZJID"];
  392. info[0]["InvName"] = data["InvName"];
  393. info[0]["InvCode"] = data["InvCode"];
  394. info[0]["InvStd"] = data["InvStd"];
  395. info[0]["InvUnit"] = data["InvUnit"];
  396. info[0]["Amount"] = data["Amount"];
  397. info[0]["IssueNegQuantity"] = data["IssueNegQuantity"];
  398. info[0]["ExtensionID"] = data["ExtensionID"];
  399. info[0]["Quantity"] = 0;
  400. }
  401. else
  402. {
  403. DataRow newrow = Invmes.NewRow();
  404. newrow["ZJID"] = data["ZJID"];
  405. newrow["InvName"] = data["InvName"];
  406. newrow["InvCode"] = data["InvCode"];
  407. newrow["InvStd"] = data["InvStd"];
  408. newrow["InvUnit"] = data["InvUnit"];
  409. newrow["Amount"] = data["Amount"];
  410. newrow["IssueNegQuantity"] = data["IssueNegQuantity"];
  411. newrow["ExtensionID"] = data["ExtensionID"];
  412. newrow["Quantity"] = 0;
  413. newrow["ID"] = data["ID"];
  414. newrow["TLZID"] = data["TLZID"];
  415. Invmes.Rows.Add(newrow);
  416. }
  417. }
  418. public string AuditICSMOApplyNeg(string ICSASN)
  419. {
  420. string msg = "";
  421. string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "ICSMO/Approve";
  422. string result = HttpPost(APIURL, ICSASN);
  423. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  424. string MessAge = Obj["Message"].ToString();
  425. string Success = Obj["Success"].ToString();
  426. if (Success.ToUpper() == "FALSE")
  427. {
  428. msg = MessAge;
  429. }
  430. return msg;
  431. }
  432. public string DeleteICSMOApplyNeg(string keyValue)
  433. {
  434. //站点信息
  435. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  436. string msg = "";
  437. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  438. string sql = string.Empty;
  439. sql += string.Format(@"DELETE FROM dbo.ICSMO WHERE MOCODE IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  440. //sql += string.Format(@"DELETE FROM dbo.ICSMOApplyNegDetail WHERE ApplyNegCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  441. try
  442. {
  443. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  444. {
  445. }
  446. }
  447. catch (Exception ex)
  448. {
  449. throw new Exception(ex.Message);
  450. }
  451. return msg;
  452. }
  453. }
  454. }