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.

386 lines
17 KiB

3 days ago
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using NFine.Code;
  4. using NFine.Data.Extensions;
  5. using NFine.Domain._03_Entity.SRM;
  6. using NFine.Repository;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Data;
  10. using System.Data.Common;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. namespace NFine.Application.KBSSRM
  15. {
  16. public class PalletplateApp : RepositoryFactory<ICSVendor>
  17. {
  18. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  19. {
  20. // string sqlDelete = @" DELETE a FROM ICSContainer a
  21. //LEFT JOIN dbo.ICSContainerLot b ON a.ContainerID=b.ContainerID
  22. // WHERE b.ContainerID IS NULL and a.EATTRIBUTE3='SRM'";
  23. // SqlHelper.ExecuteNonQuery(sqlDelete);
  24. DataTable dt = new DataTable();
  25. var queryParam = queryJson.ToJObject();
  26. List<DbParameter> parameter = new List<DbParameter>();
  27. string sql = @"SELECT a.ID,a.ContainerCode,a.MUSERName, CONVERT(NVARCHAR(50),a.MTIME,23) as MTIME,b.VenName,w.WorkPointName,w.WorkPointCode,a.EATTRIBUTE8
  28. FROM dbo.ICSContainer a
  29. LEFT JOIN Sys_WorkPoint w on a.WorkPoint=w.WorkPointCode
  30. LEFT JOIN dbo.ICSVendor b ON a.EATTRIBUTE8=b.VenCode AND a.WorkPoint=b.WorkPoint
  31. WHERE 1=1 and a.EATTRIBUTE3='SRM' and a.ContainerType='ContainerType04' ";
  32. if (queryParam["Type"].ToString() == "2")
  33. {
  34. sql += "and a.EATTRIBUTE1='2' ";
  35. }
  36. else if (queryParam["Type"].ToString() == "1")
  37. {
  38. sql += "and a.EATTRIBUTE1='1' ";
  39. }
  40. else
  41. {
  42. sql += "";
  43. }
  44. if (!string.IsNullOrWhiteSpace(queryJson))
  45. {
  46. if (!string.IsNullOrWhiteSpace(queryParam["CartonNo"].ToString()))
  47. {
  48. sql += " and ContainerCode like '%" + queryParam["CartonNo"].ToString() + "%' ";
  49. }
  50. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  51. {
  52. sql += " and a.EATTRIBUTE8 like '%" + queryParam["VenCode"].ToString() + "%' ";
  53. }
  54. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  55. {
  56. sql += " and b.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  57. }
  58. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  59. {
  60. sql += " and CONVERT(NVARCHAR(50),a.MTIME,23) >= '" + queryParam["TimeFrom"].ToString() + "' ";
  61. }
  62. if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
  63. {
  64. sql += " and CONVERT(NVARCHAR(50),a.MTIME,23) <= '" + queryParam["TimeTo"].ToString() + "' ";
  65. }
  66. }
  67. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  68. {
  69. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  70. }
  71. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  72. {
  73. sql += " and a.EATTRIBUTE8='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  74. }
  75. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  76. }
  77. /// <summary>
  78. /// 子表查询
  79. /// </summary>
  80. /// <param name="queryJson"></param>
  81. /// <param name="jqgridparam"></param>
  82. /// <returns></returns>
  83. public DataTable GetSubGridJson(string ContainerID, ref Pagination jqgridparam)
  84. {
  85. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  86. DataTable dt = new DataTable();
  87. List<DbParameter> parameter = new List<DbParameter>();
  88. string sql = @"
  89. select a.ID, a.ContainerCode,a.ContainerName,a.Memo,a.ContainerType,a.MTIME,a.MUSER,a.MUSERName from ICSContainer a
  90. WHERE a.ContainerType='ContainerType01' and a.EATTRIBUTE3='SRM' and a.ContainerID='" + ContainerID + "' ";
  91. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  92. {
  93. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  94. }
  95. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  96. }
  97. public DataTable GetSubGridJson_Add(string queryJson, ref Pagination jqgridparam)
  98. {
  99. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  100. DataTable dt = new DataTable();
  101. var queryParam = queryJson.ToJObject();
  102. List<DbParameter> parameter = new List<DbParameter>();
  103. string sql = @" select a.ID, a.ContainerCode,a.ContainerName,a.Memo,a.ContainerType,a.MUSERName,a.MTIME from ICSContainer a
  104. where a.ContainerType='ContainerType01' and a.EATTRIBUTE3='SRM'
  105. and a.ContainerID='" + queryParam["CartonNo"].ToString() + "' and a.WorkPoint='" + queryParam["WorkPoint"].ToString() + "'";
  106. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  107. }
  108. public DataTable GetSubGridJson_AddByASN(string queryJson, ref Pagination jqgridparam)
  109. {
  110. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  111. DataTable dt = new DataTable();
  112. var queryParam = queryJson.ToJObject();
  113. List<DbParameter> parameter = new List<DbParameter>();
  114. string sql = @" SELECT DISTINCT c.id,c.ContainerCode,c.MUSERName,c.MTIME FROM dbo.ICSASNDETAIL a
  115. inner JOIN dbo.ICSContainerLot b ON a.LotNO =b.LotNO AND a.WorkPoint=b.WorkPoint
  116. LEFT JOIN ICSContainer c ON b.ContainerID=c.id AND c.WorkPoint=b.WorkPoint AND c.ContainerType='ContainerType01'
  117. LEFT JOIN ICSContainer d ON d.id=c.ContainerID AND d.WorkPoint=c.WorkPoint AND d.ContainerType='ContainerType04'
  118. LEFT JOIN ICSInventoryLot e ON b.LotNO=e.LotNO AND b.WorkPoint=e.WorkPoint
  119. WHERE c.id IS NOT NULL
  120. AND d.id IS NULL
  121. and a.ASNCode='" + queryParam["ASNCode"].ToString() + "' and a.WorkPoint='" + queryParam["WorkPoint"].ToString() + "'";
  122. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  123. {
  124. sql += " and e.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  125. }
  126. if (!string.IsNullOrWhiteSpace(queryParam["LotNo"].ToString()))
  127. {
  128. sql += " and e.LotNo like '%" + queryParam["LotNo"].ToString() + "%' ";
  129. }
  130. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  131. }
  132. public string GetContainerCode(string RoleEnCode,string WorkPoint)
  133. {
  134. DataTable dt = new DataTable();
  135. string Date = DateTime.Now.ToString("yyMMdd");
  136. string Pre = "Z" + RoleEnCode + Date;
  137. string CartonNo = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", Pre, 3);
  138. return CartonNo;
  139. }
  140. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  141. {
  142. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  143. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  144. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  145. }
  146. public DataTable GetContainerForBox(string invcode, string Code, string LotNo, string VenCode, string WorkPoint, string Type,ref Pagination jqgridparam)
  147. {
  148. /// string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  149. List<DbParameter> parameter = new List<DbParameter>();
  150. DataTable table = new DataTable();
  151. string wherestr = "";
  152. if (!string.IsNullOrEmpty(invcode))
  153. {
  154. wherestr += " and c.InvCode like '%" + invcode + "%'";
  155. }
  156. if (!string.IsNullOrEmpty(Code))
  157. {
  158. wherestr += " and a.ContainerCode like '%" + Code + "%'";
  159. }
  160. if (!string.IsNullOrEmpty(LotNo))
  161. {
  162. wherestr += " and b.LotNo like '%" + LotNo + "%'";
  163. }
  164. string sql = @" SELECT DISTINCT a.ContainerCode,a.ID,
  165. a.MUSERName, a.MTIME,Dil.F_ItemName,d.InvCode,d.InvName,d.InvStd
  166. FROM ICSContainer a
  167. LEFT JOIN dbo.ICSContainerLot c ON a.ID=c.ContainerID and a.WorkPoint=c.WorkPoint
  168. LEFT join dbo.ICSInventoryLot lot on c.LotNo=lot.LotNo and a.WorkPoint=lot.WorkPoint
  169. left join Sys_SRM_ItemsDetail Dil on F_ItemId='6230217e-4413-4427-9bec-c67ba789eca9' and F_EnabledMark='1' and a.ContainerType=Dil.F_ItemCode
  170. LEFT JOIN ICSInventory d ON d.InvCode=lot.InvCode AND d.WorkPoint=lot.WorkPoint
  171. WHERE
  172. a.ID not IN
  173. (SELECT b.ContainerID FROM dbo.ICSASNDETAIL a inner JOIN dbo.ICSContainerLot b ON a.LotNO =b.LotNO AND a.WorkPoint=b.WorkPoint)
  174. and a.ContainerID='' and a.ContainerType='ContainerType01'
  175. and a.WorkPoint = '" + WorkPoint + "' and a.EATTRIBUTE8 = '" + VenCode + "' and a.EATTRIBUTE1='"+ Type + "' " + wherestr;
  176. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  177. }
  178. public string SaveICSContainerForPalletplate(string ICSASN)
  179. {
  180. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  181. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  182. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  183. string msg = "";
  184. string sql = string.Empty;
  185. string str1 = "";
  186. string ID = Guid.NewGuid().ToString();
  187. JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
  188. foreach (var item in res)
  189. {
  190. JObject jo = (JObject)item;
  191. //创建栈板
  192. sql += @" INSERT INTO dbo.ICSContainer
  193. ( ID ,ContainerCode ,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex,
  194. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerType,ContainerID,EATTRIBUTE1)
  195. VALUES ( '{0}','{1}','{1}','1','1','1','1','{2}','{3}',getdate(),'{4}','{5}','SRM','ContainerType04','','{6}')";
  196. sql = string.Format(sql, ID, jo["ContainerCode"].ToString(),MUSER, MUSERNAME, jo["WorkPoint"].ToString(), jo["VenCode"].ToString(), jo["Type"].ToString());
  197. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
  198. foreach (var detail in resdetail)
  199. {
  200. JObject det = (JObject)detail;
  201. sql += @"update ICSContainer set ContainerID='{0}' where ContainerCode='{1}' and EATTRIBUTE3='SRM' and ContainerType='ContainerType01'";
  202. sql = string.Format(sql, ID, det["CartonNo"].ToString());
  203. }
  204. }
  205. try
  206. {
  207. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  208. {
  209. }
  210. else
  211. {
  212. msg = "新增失败";
  213. }
  214. }
  215. catch (Exception ex)
  216. {
  217. msg = ex.Message;
  218. }
  219. return msg;
  220. }
  221. public string SaveICSContainerForPalletplateByASN(string ICSASN)
  222. {
  223. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  224. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  225. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  226. string msg = "";
  227. string sql = string.Empty;
  228. string str1 = "";
  229. string ID = Guid.NewGuid().ToString();
  230. JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
  231. foreach (var item in res)
  232. {
  233. JObject jo = (JObject)item;
  234. //创建栈板
  235. sql += @" INSERT INTO dbo.ICSContainer
  236. ( ID ,ContainerCode ,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex,
  237. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerType,ContainerID,EATTRIBUTE1)
  238. VALUES ( '{0}','{1}','{1}','1','1','1','1','{2}','{3}',getdate(),'{4}','{5}','SRM','ContainerType04','','{6}')";
  239. sql = string.Format(sql, ID, jo["ContainerCode"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString(), jo["VenCode"].ToString(), jo["Type"].ToString());
  240. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
  241. foreach (var detail in resdetail)
  242. {
  243. JObject det = (JObject)detail;
  244. sql += @"update ICSContainer set ContainerID='{0}' where ContainerCode='{1}' and EATTRIBUTE3='SRM' and ContainerType='ContainerType01'";
  245. sql = string.Format(sql, ID, det["CartonNo"].ToString());
  246. }
  247. }
  248. try
  249. {
  250. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  251. {
  252. }
  253. else
  254. {
  255. msg = "新增失败";
  256. }
  257. }
  258. catch (Exception ex)
  259. {
  260. msg = ex.Message;
  261. }
  262. return msg;
  263. }
  264. public string UpdateICSContainerForPalletplate(string ICSASN)
  265. {
  266. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  267. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  268. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  269. string msg = "";
  270. string sql = string.Empty;
  271. JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
  272. foreach (var item in res)
  273. {
  274. JObject jo = (JObject)item;
  275. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
  276. foreach (var detail in resdetail)
  277. {
  278. JObject det = (JObject)detail;
  279. string DetailID = Guid.NewGuid().ToString();
  280. sql += @" update ICSContainer set ContainerID='{0}' where ContainerCode='{1}' and EATTRIBUTE3='SRM' and ContainerType='ContainerType01'";
  281. sql = string.Format(sql, jo["ContainerID"].ToString() , det["CartonNo"].ToString());
  282. }
  283. }
  284. try
  285. {
  286. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  287. {
  288. }
  289. else
  290. {
  291. msg = "修改失败";
  292. }
  293. }
  294. catch (Exception ex)
  295. {
  296. msg = ex.Message;
  297. }
  298. return msg;
  299. }
  300. public string DeleteInfo(string keyValue, string WorkPoint)
  301. {
  302. string msg = "";
  303. string sql = string.Format(@"update ICSContainer set ContainerID='' where ContainerCode in ({0}) and EATTRIBUTE3='SRM' and ContainerType='ContainerType01' and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
  304. try
  305. {
  306. SqlHelper.ExecuteNonQuery(sql);
  307. }
  308. catch (Exception ex)
  309. {
  310. msg = ex.Message;
  311. }
  312. return msg;
  313. }
  314. public string DeleteContainer(string keyValue, string WorkPoint)
  315. {
  316. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  317. string msg = "";
  318. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  319. string sql = string.Empty;
  320. string sqls = string.Format(@"SELECT * FROM dbo.ICSASNDETAIL
  321. WHERE LOTNO IN (
  322. SELECT LotNO FROM dbo.ICSContainer a
  323. LEFT JOIN ICSContainerLot b ON a.ContainerID=b.ContainerID WHERE a.ContainerID in ({0}) and a.WorkPoint in ({1}))", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
  324. DataTable dt = SqlHelper.GetDataTableBySql(sqls);
  325. if (dt == null || dt.Rows.Count <= 0)
  326. {
  327. sql += string.Format(@" DELETE ICSContainer
  328. WHERE ID in ({0}) AND WorkPoint in ({1})", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
  329. sql += string.Format(@" update ICSContainer set ContainerID=''
  330. WHERE ContainerID in ({0}) AND WorkPoint in ({1})", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
  331. SqlHelper.CmdExecuteNonQueryLi(sql);
  332. }
  333. else
  334. {
  335. msg = "所选栈板中已有加入送货单中,请先在送单号中删除!";
  336. }
  337. return msg;
  338. }
  339. }
  340. }