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.

404 lines
19 KiB

3 weeks ago
  1. using NFine.Data.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using NFine.Code;
  6. using NFine.Repository;
  7. using System.Data.Common;
  8. using NFine.Domain._03_Entity.SRM;
  9. using Newtonsoft.Json;
  10. using Newtonsoft.Json.Linq;
  11. namespace NFine.Application.WMS
  12. {
  13. public class ICSApplyApp : RepositoryFactory<ICSVendor>
  14. {
  15. /// 主表查询
  16. public DataTable SearchICSApply(string queryJson, ref Pagination jqgridparam)
  17. {
  18. DataTable dt = new DataTable();
  19. var queryParam = queryJson.ToJObject();
  20. List<DbParameter> parameter = new List<DbParameter>();
  21. string sql = @" select a.ID ,a.ApplyCode ,a.WHCode ,c.WarehouseName,
  22. case when a.Status ='1' then '' when a.Status ='2' then '' else '' end as Status
  23. ,a.Type ,b.Name ,a.Memo ,a.CreatePerson ,a.CreateDateTime ,a.MUSER ,a.MUSERName ,a.MTIME ,a.WorkPoint ,
  24. a.EATTRIBUTE1 ,a.EATTRIBUTE2 ,a.EATTRIBUTE3 ,a.EATTRIBUTE4 ,a.EATTRIBUTE5 ,a.EATTRIBUTE6 ,a.EATTRIBUTE7 ,a.EATTRIBUTE8 ,a.EATTRIBUTE9 ,a.EATTRIBUTE10
  25. from dbo.ICSApply a
  26. left join ICSType b on a.Type=b.Code and b.TableCode='ICSApply' and b.ColumnCode='Type' and a.WorkPoint=b.WorkPoint
  27. left join dbo.ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=b.WorkPoint";
  28. //sql = string.Format(sql);
  29. //DataTable dttest = Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  30. if (!string.IsNullOrWhiteSpace(queryJson))
  31. {
  32. if (!string.IsNullOrWhiteSpace(queryParam["Code"].ToString()))
  33. {
  34. sql += " and a.ApplyCode like '%" + queryParam["Code"].ToString() + "%' ";
  35. }
  36. if (!string.IsNullOrWhiteSpace(queryParam["UserCode"].ToString()))
  37. {
  38. sql += " and a.MUSER like '%" + queryParam["UserCode"].ToString() + "%' ";
  39. }
  40. //if (!string.IsNullOrWhiteSpace(queryParam["selShow"].ToString()))
  41. //{
  42. // string POStatus = queryParam["selShow"].ToString();
  43. // if (POStatus == "1")
  44. // {
  45. // sql += " and a.Status='1' ";
  46. // }
  47. // else if (POStatus == "2")
  48. // {
  49. // sql += " and a.Status='2' ";
  50. // }
  51. // else if (POStatus == "3")
  52. // {
  53. // sql += " and a.Status='3' ";
  54. // }
  55. // else
  56. // {
  57. // }
  58. //}
  59. }
  60. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  61. }
  62. //子表查询
  63. public DataTable SeachICSApplyDetail(string Code, ref Pagination jqgridparam)
  64. {
  65. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  66. DataTable dt = new DataTable();
  67. //var queryParam = queryJson.ToJObject();
  68. List<DbParameter> parameter = new List<DbParameter>();
  69. string sql = @"select a.ID ,a.ApplyCode ,a.Sequence ,a.InvCode ,a.Quantity ,a.Amount , a.ApplyQuantity ,a.ExtensionID ,a.MUSER ,a.MUSERName ,a.MTIME , a.WorkPoint ,
  70. a.EATTRIBUTE1 ,a.EATTRIBUTE2 , a.EATTRIBUTE3 , a.EATTRIBUTE4 ,a.EATTRIBUTE5 ,a.EATTRIBUTE6 , a.EATTRIBUTE7 ,a.EATTRIBUTE8 ,a.EATTRIBUTE9 , a.EATTRIBUTE10 ,
  71. f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  72. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  73. from ICSApplyDetail a
  74. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  75. WHERE a.ApplyCode='" + Code + "' ";
  76. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  77. }
  78. public DataTable GetINV(string invcode, string Code, string Invstd, string EATTRIBUTE2, ref Pagination jqgridparam)
  79. {
  80. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  81. List<DbParameter> parameter = new List<DbParameter>();
  82. DataTable table = new DataTable();
  83. string wherestr = "";
  84. if (!string.IsNullOrEmpty(invcode))
  85. {
  86. wherestr += " and a.InvCode like '%" + invcode + "%'";
  87. }
  88. //if (!string.IsNullOrEmpty(Code))
  89. //{
  90. // wherestr += " and c.MOCode like '%" + Code + "%'";
  91. //}
  92. if (!string.IsNullOrEmpty(Invstd))
  93. {
  94. wherestr += " and b.InvStd like '%" + Invstd + "%'";
  95. }
  96. //if (!string.IsNullOrEmpty(EATTRIBUTE2))
  97. //{
  98. // wherestr += " and a.EATTRIBUTE2 like '%" + EATTRIBUTE2 + "%'";
  99. //}
  100. string sql = @"select InvCode,InvName,InvDesc,InvUnit,InvStd from dbo.ICSInventory
  101. where WorkPoint = '" + WorkPoint + "'" + wherestr;
  102. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  103. }
  104. public DataTable GetDocumentType()
  105. {
  106. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  107. string sql = @"
  108. select '' as Code,'' as Name
  109. union all
  110. select Code,Name from dbo.ICSType where TableCode='ICSApply' and ColumnCode='Type' and Enable='1' and WorkPoint='{0}'
  111. ";
  112. sql = string.Format(sql, WorkPoint);
  113. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  114. return dt;
  115. }
  116. public DataTable GetICSApplyDetail(string ApplyCode, ref Pagination jqgridparam)
  117. {
  118. List<DbParameter> parameter = new List<DbParameter>();
  119. string sql = @"SELECT
  120. a.ID,
  121. a.ID as SQZID,
  122. a.ApplyCode,
  123. a.InvCode,
  124. a.Quantity,
  125. a.Amount,
  126. b.InvName,
  127. b.InvStd,
  128. b.InvUnit,
  129. a.ApplyQuantity,
  130. a.ExtensionID
  131. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  132. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  133. FROM
  134. ICSApplyDetail a
  135. LEFT JOIN ICSInventory b ON a.InvCode = b.InvCode
  136. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  137. where a.ApplyCode='" + ApplyCode + "'";
  138. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  139. //DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  140. //return table;
  141. }
  142. public string SaveICSApply(string ICSASN)
  143. {
  144. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  145. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  146. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  147. string msg = "";
  148. string SeachCode;
  149. string sql = string.Empty;
  150. string Colspan = "";
  151. string str1 = "";
  152. List<string> ExtensionIDList = new List<string>();
  153. //获取单号
  154. SeachCode = @"DECLARE @MaxNO INT,@date varchar(20)='AP'+SUBSTRING(CONVERT(varchar(8), GETDATE(), 112), 1, 8)
  155. SELECT @MaxNO=SUBSTRING(MAX(ApplyCode),LEN(@date)+1,LEN(MAX(ApplyCode))-LEN(@date))+1 FROM ICSApply
  156. WHERE SUBSTRING(ApplyCode, 1, LEN(@date))=@date
  157. IF @MaxNO IS NULL
  158. BEGIN
  159. SELECT @date+'00001' AS Code
  160. END
  161. ELSE
  162. BEGIN
  163. SELECT @date+REPLICATE('0',5-LEN(@MaxNO))+CAST(@MaxNO AS nvarchar(10)) AS Code
  164. END ";
  165. object Code = SqlHelper.ExecuteScalar(SeachCode);
  166. JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
  167. foreach (var item in res)
  168. {
  169. JObject jo = (JObject)item;
  170. //创建主表
  171. sql += @"insert into ICSApply( ID,ApplyCode,WHCode,Status,Type,Memo,CreatePerson,CreateDateTime,MUSER,MUSERName,MTIME,WorkPoint)
  172. VALUES (NEWID(),'{0}','{1}','1','{2}','{3}','{4}',getdate(),'{4}','{5}',getdate(),'{6}')";
  173. sql = string.Format(sql, Code,jo["WHCode"].ToString(), jo["Type"].ToString(), jo["Memo"].ToString(), MUSER, MUSERNAME, WorkPoint);
  174. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
  175. foreach (var detail in resdetail)
  176. {
  177. JObject det = (JObject)detail;
  178. Colspan = det["ProjectCode"].ToString() + "~" + det["BatchCode"].ToString() + "~" + det["Version"].ToString() + "~" + det["Brand"].ToString() + "~" + det["cFree1"].ToString() + "~" + det["cFree2"].ToString() + "~" + det["cFree3"].ToString() + "~" + det["cFree4"].ToString() + "~" + det["cFree5"].ToString() + "~" + det["cFree6"].ToString() + "~" + det["cFree7"].ToString() + "~" + det["cFree8"].ToString() + "~" + det["cFree9"].ToString() + "~" + det["cFree10"].ToString();
  179. string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  180. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  181. bool flag = true;
  182. foreach (var itemE in ExtensionIDList)
  183. {
  184. if (itemE == Colspan + WorkPoint)
  185. {
  186. flag = false;
  187. }
  188. }
  189. if (ExtensionID == null && flag == true)
  190. {
  191. str1 = Guid.NewGuid().ToString();
  192. 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)
  193. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  194. str1, Colspan, det["ProjectCode"].ToString(), det["BatchCode"].ToString(), det["Version"].ToString(), det["Brand"].ToString(), det["cFree1"].ToString(), det["cFree2"].ToString(), det["cFree3"].ToString(), det["cFree4"].ToString(), det["cFree5"].ToString(), det["cFree6"].ToString(), det["cFree7"].ToString(), det["cFree8"].ToString(), det["cFree9"].ToString(), det["cFree10"].ToString(),
  195. MUSER, MUSERNAME, WorkPoint);
  196. }
  197. else if (ExtensionID != null)
  198. {
  199. str1 = ExtensionID.ToString();
  200. }
  201. ExtensionIDList.Add(Colspan + WorkPoint);
  202. sql += @"insert into ICSApplyDetail( ID,ApplyCode,Sequence,InvCode,Quantity,Amount,ApplyQuantity,ExtensionID,MUSER,MUSERName,MTIME,WorkPoint)
  203. VALUES (NEWID(),'{0}','{1}','{2}','{3}','{4}','0','{5}','{6}','{7}',getdate(),'{8}')";
  204. sql = string.Format(sql, Code, det["Sequence"].ToString(), det["InvCode"].ToString(), det["Quantity"].ToString(),
  205. det["Amount"].ToString(), str1, MUSER, MUSERNAME, WorkPoint);
  206. }
  207. }
  208. try
  209. {
  210. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  211. {
  212. }
  213. else
  214. {
  215. msg = "新增失败";
  216. }
  217. }
  218. catch (Exception ex)
  219. {
  220. msg=ex.Message;
  221. }
  222. return msg;
  223. }
  224. public string UpdateICSApply(string ICSASN)
  225. {
  226. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  227. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  228. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  229. string msg = "";
  230. string sql = string.Empty;
  231. string Colspan = "";
  232. string str1 = "";
  233. string idss = "";
  234. string Code = "";
  235. List<string> ExtensionIDList = new List<string>();
  236. JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
  237. foreach (var item in res)
  238. {
  239. JObject jo = (JObject)item;
  240. //创建主表
  241. sql += @"update ICSApply set WHCode='{0}' ,Memo='{1}' ,MUSER='{2}',MUSERName='{3}',MTIME=getdate() where ApplyCode='{4}'";
  242. sql = string.Format(sql, jo["WHCode"].ToString(), jo["Memo"].ToString(), MUSER, MUSERNAME, jo["Code"].ToString());
  243. Code = jo["Code"].ToString();
  244. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
  245. foreach (var detail in resdetail)
  246. {
  247. JObject det = (JObject)detail;
  248. Colspan = det["ProjectCode"].ToString() + "~" + det["BatchCode"].ToString() + "~" + det["Version"].ToString() + "~" + det["Brand"].ToString() + "~" + det["cFree1"].ToString() + "~" + det["cFree2"].ToString() + "~" + det["cFree3"].ToString() + "~" + det["cFree4"].ToString() + "~" + det["cFree5"].ToString() + "~" + det["cFree6"].ToString() + "~" + det["cFree7"].ToString() + "~" + det["cFree8"].ToString() + "~" + det["cFree9"].ToString() + "~" + det["cFree10"].ToString();
  249. string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  250. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  251. bool flag = true;
  252. foreach (var itemE in ExtensionIDList)
  253. {
  254. if (itemE == Colspan + WorkPoint)
  255. {
  256. flag = false;
  257. }
  258. }
  259. if (ExtensionID == null && flag == true)
  260. {
  261. str1 = Guid.NewGuid().ToString();
  262. 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)
  263. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  264. str1, Colspan, det["ProjectCode"].ToString(), det["BatchCode"].ToString(), det["Version"].ToString(), det["Brand"].ToString(), det["cFree1"].ToString(), det["cFree2"].ToString(), det["cFree3"].ToString(), det["cFree4"].ToString(), det["cFree5"].ToString(), det["cFree6"].ToString(), det["cFree7"].ToString(), det["cFree8"].ToString(), det["cFree9"].ToString(), det["cFree10"].ToString(),
  265. MUSER, MUSERNAME, WorkPoint);
  266. }
  267. else if (ExtensionID != null)
  268. {
  269. str1 = ExtensionID.ToString();
  270. }
  271. ExtensionIDList.Add(Colspan + WorkPoint);
  272. if (string.IsNullOrWhiteSpace(det["SQZID"].ToString()))
  273. {
  274. string DetailID = Guid.NewGuid().ToString();
  275. sql += @"insert into ICSApplyDetail( ID,ApplyCode,Sequence,InvCode,Quantity,Amount,ApplyQuantity,ExtensionID,MUSER,MUSERName,MTIME,WorkPoint)
  276. VALUES ('{9}','{0}','{1}','{2}','{3}','{4}','0','{5}','{6}','{7}',getdate(),'{8}')";
  277. sql = string.Format(sql, jo["Code"].ToString(), det["Sequence"].ToString(), det["InvCode"].ToString(), det["Quantity"].ToString(),
  278. det["Amount"].ToString(), str1, MUSER, MUSERNAME, WorkPoint, DetailID);
  279. idss += "'" + DetailID + "',";
  280. }
  281. else
  282. {
  283. //子表修改
  284. sql += @"update ICSApplyDetail set InvCode='{0}' ,Quantity='{1}',Amount='{2}',MUSER='{3}',MUSERName='{4}',MTIME=getdate() where ID='{5}' and WorkPoint='{6}'";
  285. sql = string.Format(sql, det["InvCode"].ToString(), det["Quantity"].ToString(), det["Amount"].ToString(), MUSER, MUSERNAME, det["SQZID"].ToString(), WorkPoint);
  286. idss += "'" + det["SQZID"].ToString() + "',";
  287. }
  288. }
  289. }
  290. sql += @"DELETE from ICSApplyDetail where ApplyCode ='{0}' and id not in ({1})";
  291. sql = string.Format(sql, Code, idss.Substring(0, idss.Length - 1));
  292. try
  293. {
  294. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  295. {
  296. }
  297. else
  298. {
  299. msg = "修改失败";
  300. }
  301. }
  302. catch (Exception ex)
  303. {
  304. msg = ex.Message;
  305. }
  306. return msg;
  307. }
  308. public string DeleteICSApply(string keyValue)
  309. {
  310. //站点信息
  311. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  312. string msg = "";
  313. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  314. string sql = string.Empty;
  315. sql += string.Format(@"DELETE FROM dbo.ICSApply WHERE ApplyCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  316. sql += string.Format(@"DELETE FROM dbo.ICSApplyDetail WHERE ApplyCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  317. try
  318. {
  319. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  320. {
  321. }
  322. }
  323. catch (Exception ex)
  324. {
  325. msg = ex.Message;
  326. }
  327. return msg;
  328. }
  329. public string AuditICSApply(string keyValue)
  330. {
  331. //站点信息
  332. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  333. string msg = "";
  334. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  335. string sql = string.Empty;
  336. sql += string.Format(@"update dbo.ICSApply set Status='2' WHERE ApplyCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  337. try
  338. {
  339. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  340. {
  341. }
  342. }
  343. catch (Exception ex)
  344. {
  345. msg=ex.Message;
  346. }
  347. return msg;
  348. }
  349. }
  350. }