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.

584 lines
31 KiB

4 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.Domain.Entity.ProductManage;
  7. using NFine.Domain.IRepository.ProductManage;
  8. using NFine.Repository;
  9. using NFine.Repository.ProductManage;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Data;
  13. using System.Data.Common;
  14. using System.Linq;
  15. using System.Text;
  16. namespace NFine.Application
  17. {
  18. public class DXCartonNoManageApp : RepositoryFactory<ICSVendor>
  19. {
  20. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  21. {
  22. // string sqlDelete = @" DELETE a FROM ICSContainer a
  23. //LEFT JOIN dbo.ICSContainerLot b ON a.ID=b.ContainerID
  24. // WHERE b.ContainerID IS NULL";
  25. // SqlHelper.ExecuteNonQuery(sqlDelete);
  26. DataTable dt = new DataTable();
  27. var queryParam = queryJson.ToJObject();
  28. List<DbParameter> parameter = new List<DbParameter>();
  29. //string sql = @"SELECT Serial,CartonNO,CartonStatus,PrintTimes,CONVERT(NVARCHAR(50),lastPrintTime,23) as lastPrintTime,MUSERName, CONVERT(NVARCHAR(50),MTIME,23) as MTIME,EATTRIBUTE8,EATTRIBUTE3,b.cVenName,w.WorkPointName,w.WorkPointCode
  30. // FROM dbo.ICSCarton a
  31. // LEFT JOIN Sys_WorkPoint w on a.WorkPoint=w.WorkPointCode
  32. // LEFT JOIN dbo.ICSVendor b ON a.EATTRIBUTE8=b.cVenCode AND a.WorkPoint=b.WorkPoint
  33. // WHERE 1=1 and EATTRIBUTE3='SRM'";
  34. string sql = @"SELECT DISTINCT a.ID,a.ContainerCode,a.MUSERName, CONVERT(NVARCHAR(50),a.MTIME,23) as MTIME,b.VenName,w.WorkPointName,w.WorkPointCode,a.EATTRIBUTE8
  35. FROM dbo.ICSContainer a
  36. LEFT JOIN ICSContainerLot c on a.ContainerID=c.ContainerID AND a.WorkPoint=c.WorkPoint
  37. LEFT JOIN dbo.ICSInventoryLot d ON c.LotNo=d.LotNo AND c.WorkPoint=d.WorkPoint
  38. left join ICSInventoryLotDetail f on d.LOTNO=f.LotNO
  39. LEFT JOIN dbo.ICSPurchaseOrder e ON f.TransCode=e.POCode AND f.TransSequence=e.Sequence AND f.WorkPoint=e.WorkPoint
  40. LEFT JOIN Sys_WorkPoint w on a.WorkPoint=w.WorkPointCode
  41. LEFT JOIN dbo.ICSVendor b ON a.EATTRIBUTE8=b.VenCode AND a.WorkPoint=b.WorkPoint
  42. WHERE 1=1 and a.EATTRIBUTE3='SRM' ";
  43. if (!string.IsNullOrWhiteSpace(queryJson))
  44. {
  45. if (!string.IsNullOrWhiteSpace(queryParam["CartonNo"].ToString()))
  46. {
  47. sql += " and ContainerCode like '%" + queryParam["CartonNo"].ToString() + "%' ";
  48. }
  49. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  50. {
  51. sql += " and a.EATTRIBUTE8 like '%" + queryParam["VenCode"].ToString() + "%' ";
  52. }
  53. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  54. {
  55. sql += " and b.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  56. }
  57. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  58. {
  59. sql += " and a.MTIME >= '" + queryParam["TimeFrom"].ToString() + "' ";
  60. }
  61. if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
  62. {
  63. sql += " and a.MTIME <= '" + queryParam["TimeTo"].ToString() + "' ";
  64. }
  65. if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  66. {
  67. sql += " and e.EATTRIBUTE4 like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  68. }
  69. }
  70. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  71. {
  72. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  73. }
  74. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  75. {
  76. sql += " and a.EATTRIBUTE8='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  77. }
  78. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  79. }
  80. /// <summary>
  81. /// 子表查询
  82. /// </summary>
  83. /// <param name="queryJson"></param>
  84. /// <param name="jqgridparam"></param>
  85. /// <returns></returns>
  86. public DataTable GetSubGridJson(string CartonNo, ref Pagination jqgridparam)
  87. {
  88. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  89. DataTable dt = new DataTable();
  90. //var queryParam = queryJson.ToJObject();
  91. List<DbParameter> parameter = new List<DbParameter>();
  92. //string sql = @"SELECT a.ID,c.ItemCODE,d.INVNAME,c.VenderLotNO,c.LOTQTY,c.TYPE,
  93. // b.EATTRIBUTE8,c.ORDERNO,c.TransNo,c.TransLine,a.LotNo,d.INVDESC,d.INVTYPE,e.MEMO,d.INVSTD,d.INVPARSETYPE
  94. // FROM dbo.ICSITEMLot2Carton a
  95. // LEFT JOIN dbo.ICSCarton b ON a.CartonNO=b.CartonNO AND a.WorkPoint=b.WorkPoint
  96. // LEFT JOIN dbo.ICSITEMLot c ON a.LotNo_ID=c.ID AND a.WorkPoint=c.WorkPoint
  97. // LEFT JOIN dbo.ICSINVENTORY d ON c.ItemCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
  98. // LEFT JOIN dbo.ICSPO_PoMain e ON c.TransNO=e.POCode AND c.TransLine=e.PORow AND a.WorkPoint=e.WorkPoint
  99. // WHERE a.CartonNO='" + CartonNo + "' and a.WorkPoint in(" + WorkPoint + ")";
  100. string sql = @"
  101. SELECT a.ID,c.InvCode,d.INVNAME,c.Quantity,c.TYPE, b.EATTRIBUTE8,g.ProjectCode,f.TransCode,f.TransSequence,a.LotNo,d.INVDESC,d.INVSTD,e.EATTRIBUTE4
  102. FROM dbo.ICSContainerLot a
  103. LEFT JOIN dbo.ICSContainer b ON a.ContainerID=b.ContainerID AND a.WorkPoint=b.WorkPoint
  104. LEFT JOIN dbo.ICSInventoryLot c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  105. left join ICSInventoryLotDetail f on c.LOTNO=f.LotNO
  106. LEFT JOIN dbo.ICSINVENTORY d ON c.InvCode=d.INVCODE AND a.WorkPoint=d.WorkPoint
  107. LEFT JOIN dbo.ICSPurchaseOrder e ON f.TransCode=e.POCode AND f.TransSequence=e.Sequence AND a.WorkPoint=e.WorkPoint
  108. LEFT JOIN dbo.ICSExtension g ON e.ExtensionID=g.ID
  109. WHERE b.ContainerCode='" + CartonNo + "' and a.WorkPoint in(" + WorkPoint + ")";
  110. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  111. }
  112. public DataTable GetSubGridJson_Add(string queryJson, ref Pagination jqgridparam)
  113. {
  114. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  115. DataTable dt = new DataTable();
  116. var queryParam = queryJson.ToJObject();
  117. List<DbParameter> parameter = new List<DbParameter>();
  118. if (!string.IsNullOrEmpty(queryParam["CartonNo"].ToString()))
  119. {
  120. string sql = @" SELECT a.ID,c.InvCode,d.INVNAME,c.Quantity,c.TYPE,
  121. b.EATTRIBUTE8,g.ProjectCode,f.TransCode,f.TransSequence,a.LotNo,d.INVDESC,d.INVSTD
  122. FROM dbo.ICSContainerLot a
  123. LEFT JOIN dbo.ICSContainer b ON a.ContainerID=b.ContainerID AND a.WorkPoint=b.WorkPoint
  124. LEFT JOIN dbo.ICSInventoryLot c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  125. left join ICSInventoryLotDetail f on c.LOTNO=f.LotNO
  126. LEFT JOIN dbo.ICSINVENTORY d ON c.InvCode=d.INVCODE AND a.WorkPoint=d.WorkPoint
  127. LEFT JOIN dbo.ICSPurchaseOrder e ON f.TransCode=e.POCode AND f.TransSequence=e.Sequence AND a.WorkPoint=e.WorkPoint
  128. LEFT JOIN dbo.ICSExtension g ON e.ExtensionID=g.ID
  129. WHERE b.ContainerCode='" + queryParam["CartonNo"].ToString() + "' and a.WorkPoint=" + WorkPoint + "and c.Type = '200'";
  130. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  131. }
  132. else
  133. {
  134. string sql = @"SELECT '' as LotNo,'' as ID,'' as ItemCODE,'' as INVNAME,'' as VenderLotNO,'' as LOTQTY,'' as TYPE,
  135. '' as EATTRIBUTE8,'' as ORDERNO,'' as TransNo,'' as TransLine,'' as INVDESC,'' as INVTYPE,'' as MEMO,'' as INVSTD,'' as INVPARSETYPE
  136. ";
  137. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  138. }
  139. }
  140. /// <summary>
  141. /// 子表查询
  142. /// </summary>
  143. /// <param name="queryJson"></param>
  144. /// <param name="jqgridparam"></param>
  145. /// <returns></returns>
  146. public DataTable GetSubGridJson(string CartonNo, string queryJson, ref Pagination jqgridparam)
  147. {
  148. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  149. DataTable dt = new DataTable();
  150. //var queryParam = queryJson.ToJObject();
  151. List<DbParameter> parameter = new List<DbParameter>();
  152. string sql = @"SELECT a.ID,c.ItemCODE,d.INVNAME,c.VenderLotNO,c.LOTQTY,c.TYPE
  153. FROM dbo.ICSITEMLot2Carton a
  154. LEFT JOIN dbo.ICSCarton b ON a.CartonNO=b.CartonNO AND a.WorkPoint=b.WorkPoint
  155. LEFT JOIN dbo.ICSITEMLot c ON a.LotNo_ID=c.ID AND a.WorkPoint=c.WorkPoint
  156. LEFT JOIN dbo.ICSINVENTORY d ON c.ItemCODE=d.INVCODE AND a.WorkPoint=d.WorkPoint
  157. WHERE a.CartonNO='" + CartonNo + "' and a.WorkPoint in(" + WorkPoint + ")";
  158. if (!string.IsNullOrEmpty(queryJson))
  159. {
  160. sql += @"UNION ALL
  161. SELECT a.ID,a.ItemCODE,b.INVNAME,a.VenderLotNO,a.LOTQTY,a.TYPE
  162. FROM dbo.ICSITEMLot a
  163. LEFT JOIN dbo.ICSINVENTORY b ON a.ItemCODE=b.INVCODE AND a.WorkPoint=b.WorkPoint
  164. WHERE a.ID IN (" + queryJson.TrimEnd(',') + ") and a.WorkPonit in (" + WorkPoint + ")";
  165. }
  166. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  167. }
  168. public DataTable GetSubGridJsonByCreate(string POCode, string PORow)
  169. {
  170. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  171. DataTable dt = new DataTable();
  172. //var queryParam = queryJson.ToJObject();
  173. List<DbParameter> parameter = new List<DbParameter>();
  174. string sql = @"SELECT a.ID, a.POCode,a.PORow, CONVERT(NVARCHAR(50),a.PODate,23) as PODate,a.ORDERNO,a.VenCode,a.VenName,a.InvCode,
  175. b.INVNAME,b.INVSTD,b.INVDESC,b.INVUOM,a.Quantity,ISNULL(c.CreatedQty,0) AS CreatedQty,isnull(c.InQty,0) as InQty,a.WorkPoint
  176. FROM dbo.ICSPO_PoMain a
  177. LEFT JOIN dbo.ICSINVENTORY b ON a.InvCode=b.INVCODE AND a.WorkPoint=b.WorkPoint
  178. LEFT JOIN (SELECT SUM(x.LOTQTY) CreatedQty,TransNO,TransLine,x.WorkPoint,
  179. SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.LOTQTY ELSE 0 END) AS InQty
  180. FROM dbo.ICSITEMLot x
  181. LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  182. GROUP BY TransNO,TransLine,x.WorkPoint) c ON a.POCode=c.TransNO AND a.PORow=c.TransLine AND a.WorkPoint=c.WorkPoint
  183. WHERE 1=1
  184. and a.POCode='" + POCode + "' and a.PORow='" + PORow + "' and a.WorkPonit in (" + WorkPoint + "";
  185. return Repository().FindTableBySql(sql.ToString());
  186. }
  187. public DataTable GetVendorLotNo(string VenCode, string WorkPoint)
  188. {
  189. DataTable dt = new DataTable();
  190. //var queryParam = queryJson.ToJObject();
  191. List<DbParameter> parameter = new List<DbParameter>();
  192. string dtPre = DateTime.Now.ToString("yyyyMMdd");
  193. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSITEMLotNo','VendorLotNo','" + VenCode + dtPre + "',2";
  194. return Repository().FindTableBySql(sql.ToString());
  195. }
  196. /// <summary>
  197. /// 生成条码
  198. /// </summary>
  199. /// <param name="POCode"></param>
  200. /// <param name="PORow"></param>
  201. /// <param name="keyValue"></param>
  202. /// <returns></returns>
  203. public int CreateItemLotNo(string POCode, string PORow, string keyValue)
  204. {
  205. var queryParam = keyValue.ToJObject();
  206. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  207. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  208. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  209. decimal LOTQTY = minPackQty;
  210. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  211. string VenCode = GetVendorCode(POCode, PORow, WorkPoint);
  212. string Pre = VenCode + DateTime.Now.ToString("yyMMdd");
  213. string sql = string.Empty;
  214. string VendorLot = queryParam["VendorLot"].ToString();
  215. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  216. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  217. for (int i = 0; i < createPageCount; i++)
  218. {
  219. if (i + 1 == createPageCount)
  220. {
  221. if (minPackQty * createPageCount > thisCreateQty)
  222. {
  223. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  224. }
  225. }
  226. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 5);
  227. sql += string.Format(@"INSERT INTO dbo.ICSITEMLot
  228. ( ID ,LotNO ,ItemCODE ,TransNO ,TransLine ,VENDORITEMCODE ,VENDORCODE ,
  229. VenderLotNO ,PRODUCTDATE ,LOTQTY ,ACTIVE ,Exdate ,WorkPoint ,
  230. MUSER ,MUSERName ,MTIME ,TYPE,ORDERNO)
  231. SELECT NEWID(),'{0}',InvCode,POCode,PORow,'',NULL,
  232. '{1}',GETDATE(),'{2}','Y','2999-12-31 00:00:00.000','{3}',
  233. '{4}','{5}',GETDATE(),'',ORDERNO
  234. FROM dbo.ICSPO_PoMain WHERE POCode='{6}' AND PORow='{7}' AND WorkPoint='{3}'",
  235. LotNo, VendorLot, LOTQTY, WorkPoint, MUSER, MUSERNAME, POCode, PORow);
  236. sql += "\r\n";
  237. }
  238. int count = SqlHelper.ExecuteNonQuery(sql);
  239. return count;
  240. }
  241. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  242. {
  243. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  244. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  245. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  246. }
  247. public string GetVendorCode(string POCode, string PORow, string WorkPoint)
  248. {
  249. string sql = string.Format(@"SELECT VenCode FROM dbo.ICSPO_PoMain
  250. WHERE POCode='{0}' AND PORow='{1}' AND WorkPoint='{2}'", POCode, PORow, WorkPoint);
  251. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  252. string VenCode = string.Empty;
  253. if (dt != null && dt.Rows.Count > 0)
  254. {
  255. VenCode = dt.Rows[0][0].ToString();
  256. }
  257. return VenCode;
  258. }
  259. /// <summary>
  260. /// 删除条码
  261. /// </summary>
  262. /// <param name="keyValue"></param>
  263. /// <returns></returns>
  264. public string DeleteItemLot(string keyValue)
  265. {
  266. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  267. string msg = "";
  268. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  269. string sql = string.Format(@"SELECT * FROM dbo.ICSASNDETAIL
  270. WHERE LOTNO IN (
  271. SELECT LotNo FROM dbo.ICSITEMLot2Carton WHERE LotNo_ID IN ({0})
  272. ) OR LOTNO IN (
  273. SELECT LotNO FROM dbo.ICSITEMLot WHERE ID IN ({0})
  274. ) and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
  275. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  276. if (dt == null || dt.Rows.Count <= 0)
  277. {
  278. sql = string.Format(@"DELETE FROM dbo.ICSITEMLot2Carton WHERE LotNo_ID IN ({0}) and WorkPoint='{1}'; ", keyValue.TrimEnd(','), WorkPoint);
  279. DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  280. }
  281. else
  282. {
  283. msg = "所选条码已加入送货单,请先在送货单管理页面删除该条码!";
  284. }
  285. return msg;
  286. }
  287. public string DeleteCartonNos(string keyValue, string WorkPoint)
  288. {
  289. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  290. string msg = "";
  291. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  292. //WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  293. string sql = string.Format(@"SELECT * FROM dbo.ICSInventoryLot
  294. WHERE LOTNO IN (
  295. SELECT LotNO FROM dbo.ICSContainerLot WHERE ContainerID in ({0}) and WorkPoint in ('{1}'))", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
  296. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  297. if (dt == null || dt.Rows.Count <= 0)
  298. {
  299. sql = string.Format(@"DELETE FROM dbo.ICSContainer WHERE ContainerCode in ({0}) and WorkPoint in ('{1}')
  300. DELETE FROM dbo.ICSContainerLot WHERE ContainerID in ({0}) and WorkPoint in ('{1}') ", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
  301. DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  302. }
  303. else
  304. {
  305. msg = "所选箱号中已有加入送货单中,请先在送单号中删除!";
  306. }
  307. return msg;
  308. }
  309. /// <summary>
  310. /// 删除箱号
  311. /// </summary>
  312. /// <param name="keyValue"></param>
  313. /// <returns></returns>
  314. public string DeleteCartonNo(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.Format(@"SELECT * FROM dbo.ICSASNDETAIL
  320. WHERE LOTNO IN (
  321. SELECT LotNO FROM dbo.ICSContainer a
  322. LEFT JOIN ICSContainerLot b ON a.ContainerID=b.ContainerID WHERE a.ContainerCode in ({0}) and a.WorkPoint in ({1}))", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
  323. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  324. if (dt == null || dt.Rows.Count <= 0)
  325. {
  326. sql = string.Format(@" DELETE a FROM dbo.ICSContainerLot a
  327. LEFT JOIN ICSContainer b ON a.ContainerID=b.ContainerID
  328. WHERE b.ContainerCode in ({0}) AND a.WorkPoint in ({1})
  329. DELETE FROM dbo.ICSContainer WHERE ContainerCode in ({0}) and WorkPoint in ({1})
  330. ", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
  331. DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  332. }
  333. else
  334. {
  335. msg = "所选箱号中已有加入送货单中,请先在送单号中删除!";
  336. }
  337. return msg;
  338. }
  339. /// <summary>
  340. /// 选择条码
  341. /// </summary>
  342. /// <returns></returns>
  343. public DataTable GetInfoBySelectItemCode(string queryJson, ref Pagination jqgridparam)
  344. {
  345. var queryParam = queryJson.ToJObject();
  346. List<DbParameter> parameter = new List<DbParameter>();
  347. string sql = @"SELECT a.ID, a.LotNO,a.InvCode,d.INVNAME,a.Quantity,a.TYPE,g.ProjectCode,f.TransCode,
  348. f.TransSequence,d.INVDESC,d.INVSTD
  349. FROM dbo.ICSInventoryLot a
  350. LEFT JOIN ICSInventoryLotDetail f ON a.LotNo=f.LotNo AND a.WorkPoint=f.WorkPoint
  351. LEFT JOIN dbo.ICSContainerLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  352. LEFT JOIN dbo.ICSASNDETAIL c ON a.LotNO=c.LOTNO AND a.WorkPoint=c.WorkPoint
  353. LEFT JOIN dbo.ICSINVENTORY d ON a.InvCode=d.INVCODE AND a.WorkPoint=d.WorkPoint
  354. LEFT JOIN dbo.ICSPurchaseOrder e ON f.TransCode=e.POCode AND f.TransSequence=e.Sequence AND a.WorkPoint=e.WorkPoint
  355. left join (SELECT LotNo FROM dbo.ICSContainerLot WHERE ContainerID = '{0}') ss on a.LotNo=ss.LotNO
  356. LEFT JOIN dbo.ICSExtension g ON e.ExtensionID=g.ID AND e.WorkPoint=g.WorkPoint
  357. WHERE b.LotNo IS NULL AND c.LOTNO IS NULL and ss.LotNo is NULL";
  358. sql = string.Format(sql, queryParam["CartonNo"].ToString());
  359. if (!string.IsNullOrEmpty(queryJson))
  360. {
  361. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  362. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  363. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  364. sql += " and d.INVNAME like '%" + queryParam["InvName"].ToString() + "%'";
  365. if (!string.IsNullOrWhiteSpace(queryParam["OrderNo"].ToString()))
  366. sql += " and g.ProjectCode like '%" + queryParam["OrderNo"].ToString() + "%'";
  367. if (!string.IsNullOrWhiteSpace(queryParam["TransNo"].ToString()))
  368. sql += " and f.TransCode like '%" + queryParam["TransNo"].ToString() + "%'";
  369. if (!string.IsNullOrWhiteSpace(queryParam["TransLine"].ToString()))
  370. sql += " and f.TransSequence like '%" + queryParam["TransLine"].ToString() + "%'";
  371. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  372. sql += " and e.VenCode like '%" + queryParam["VenCode"].ToString() + "%'";
  373. if (!string.IsNullOrWhiteSpace(queryParam["LotNo"].ToString()))
  374. sql += " and a.LotNo like '%" + queryParam["LotNo"].ToString() + "%'";
  375. }
  376. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  377. sql += " and a.WorkPoint=" + WorkPoint + "";
  378. //string VenCode = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  379. //if (!string.IsNullOrEmpty(VenCode))
  380. //{
  381. // sql += " AND e.VenCode='"+ VenCode + "'";
  382. //}
  383. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  384. }
  385. /// <summary>
  386. /// 获取供应商列表
  387. /// </summary>
  388. /// <returns></returns>
  389. public DataTable GetVendor()
  390. {
  391. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  392. string sql = @"
  393. select '' as F_VenCode, '' as cVenName
  394. union all
  395. SELECT DISTINCT a.F_VenCode,isnull(b.VenName,'') as cVenName FROM dbo.Sys_SRM_User a
  396. LEFT JOIN dbo.ICSVendor b ON a.F_VenCode=b.VenCode
  397. WHERE a.F_VenCode IS NOT NULL AND a.F_VenCode <>'' ";
  398. string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  399. if (role != "admin")
  400. {
  401. sql += " and b.WorkPoint=" + WorkPoint + "";
  402. }
  403. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  404. return dt;
  405. }
  406. public string GetCartonNo()
  407. {
  408. string CartonNo = string.Empty;
  409. string VenCode = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  410. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  411. if (!string.IsNullOrEmpty(VenCode))
  412. {
  413. string Date = DateTime.Now.ToString("yyMMdd");
  414. string Pre = "C" + VenCode + Date;
  415. CartonNo = GetSerialCode(WorkPoint, "ICSCarton", "CartonNo", Pre, 3);
  416. }
  417. if (!string.IsNullOrEmpty(CartonNo))
  418. {
  419. string sql = string.Empty;
  420. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  421. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  422. sql = @"INSERT INTO dbo.ICSContainer
  423. ( ID ,ContainerCode ,ContainerID,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex,
  424. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3)
  425. VALUES ( NEWID(),'" + CartonNo + "',NEWID(),'','','','','','" + MUSER + "','" + MUSERNAME + "',GETDATE()," + WorkPoint + ",'" + VenCode + "','SRM')";
  426. try
  427. {
  428. SqlHelper.ExecuteNonQuery(sql);
  429. }
  430. catch (Exception ex)
  431. {
  432. throw new Exception(ex.Message);
  433. }
  434. }
  435. return CartonNo;
  436. }
  437. public string GetCartonNoByPerson(string VenCode, string WorkPoint)
  438. {
  439. string CartonNo = string.Empty;
  440. string Date = DateTime.Now.ToString("yyMMdd");
  441. string Pre = "C" + VenCode + Date;
  442. CartonNo = GetSerialCode(WorkPoint, "ICSCarton", "CartonNo", Pre, 3);
  443. if (!string.IsNullOrEmpty(CartonNo))
  444. {
  445. string sql = string.Empty;
  446. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  447. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  448. sql = @"INSERT INTO dbo.ICSContainer
  449. ( ID ,ContainerCode ,ContainerID,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex,
  450. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3)
  451. VALUES ( NEWID(),'" + CartonNo + "',NEWID(),'','','','','','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint + "','" + VenCode + "','SRM')";
  452. try
  453. {
  454. SqlHelper.ExecuteNonQuery(sql);
  455. }
  456. catch (Exception ex)
  457. {
  458. throw new Exception(ex.Message);
  459. }
  460. }
  461. return CartonNo;
  462. }
  463. public string CheckCartonNo(string JsonData, string CartonNo, string WorkPoint)
  464. {
  465. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  466. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  467. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  468. string msg = "";
  469. string sql = "";
  470. //string sql = string.Format(@"SELECT DISTINCT * FROM (
  471. // SELECT DISTINCT INVCODE FROM dbo.ICSITEMLot2Carton
  472. // WHERE CartonNO='{0}' and WorkPoint={2}
  473. // UNION ALL
  474. // SELECT DISTINCT ItemCODE AS INVCODE FROM dbo.ICSITEMLot WHERE ID IN ({1}) and WorkPoint={2}
  475. // ) t", CartonNo, JsonData.TrimEnd(','), WorkPoint);
  476. //DataTable dt = SqlHelper.GetDataTableBySql(sql);
  477. //if (dt.Rows.Count > 1)
  478. //{
  479. // msg = "箱号原有物料与新增物料编码不同!";
  480. //}
  481. //else
  482. //{
  483. //sql = string.Format(@"UPDATE dbo.ICSCarton SET ItemCode=
  484. // ( SELECT DISTINCT ItemCODE AS INVCODE FROM dbo.ICSITEMLot WHERE ID IN ({0}) and WorkPoint={2})
  485. // WHERE CartonNO='{1}' and WorkPoint={2}", JsonData.TrimEnd(','), CartonNo, WorkPoint);
  486. //try
  487. //{
  488. // SqlHelper.ExecuteNonQuery(sql);
  489. //}
  490. //catch (Exception ex)
  491. //{
  492. // throw new Exception(ex.Message);
  493. //}
  494. sql = "SELECT ContainerID FROM ICSContainer WHERE ContainerCode='{0}' ";
  495. sql = string.Format(sql, CartonNo);
  496. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  497. string ID = dt.Rows[0]["ContainerID"].ToString();
  498. sql = @"INSERT INTO dbo.ICSContainerLot
  499. ( ID ,ContainerID ,LotNo ,
  500. MUSER ,MUSERName ,MTIME ,WorkPoint )
  501. SELECT NEWID(), '" + ID + @"',a.LotNO,
  502. '" + MUSER + "','" + MUSERNAME + "',getdate()," + WorkPoint + @"
  503. FROM dbo.ICSInventoryLot a
  504. left join ICSInventoryLotDetail b on a.LOTNO=b.LotNO
  505. WHERE ID IN(" + JsonData.TrimEnd(',') + ") and a.WorkPoint=" + WorkPoint + "";
  506. try
  507. {
  508. SqlHelper.ExecuteNonQuery(sql);
  509. }
  510. catch (Exception ex)
  511. {
  512. throw new Exception(ex.Message);
  513. }
  514. //}
  515. return msg;
  516. }
  517. /// <summary>
  518. /// 删除箱号内的条码
  519. /// </summary>
  520. /// <param name="keyValue"></param>
  521. /// <returns></returns>
  522. public string DeleteInfo(string keyValue,string WorkPoint)
  523. {
  524. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  525. string msg = "";
  526. string sql = string.Format(@"DELETE FROM dbo.ICSContainerLot WHERE ID in ({0}) and WorkPoint in ('{1}') ", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','));
  527. try
  528. {
  529. SqlHelper.ExecuteNonQuery(sql);
  530. }
  531. catch (Exception ex)
  532. {
  533. msg = ex.Message;
  534. }
  535. return msg;
  536. }
  537. public string CheckIsAll(string CartonNo)
  538. {
  539. string sql = @"SELECT a.ContainerCode,b.ID
  540. FROM dbo.ICSContainer a
  541. LEFT JOIN ICSContainerLot b ON a.ContainerID=b.ContainerID AND a.WorkPoint=b.WorkPoint
  542. LEFT JOIN dbo.ICSASNDETAIL c ON c.LotNo=b.LOTNO AND a.WorkPoint=c.WorkPoint
  543. WHERE a.ContainerCode='" + CartonNo + "' AND c.ID IS not NULL";
  544. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  545. if (dt != null && dt.Rows.Count > 0)
  546. {
  547. return "0";
  548. }
  549. else
  550. {
  551. return "1";
  552. }
  553. }
  554. }
  555. }