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.

1473 lines
74 KiB

3 weeks ago
  1. using NFine.Data.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Text;
  6. using NFine.Code;
  7. using NFine.Repository;
  8. using System.Data.Common;
  9. using NFine.Domain._03_Entity.SRM;
  10. using Newtonsoft.Json;
  11. using System.Configuration;
  12. using System.Net;
  13. using System.IO;
  14. using Newtonsoft.Json.Linq;
  15. using System.Data.SqlClient;
  16. using ICS.Data;
  17. using System.Linq;
  18. namespace NFine.Application.PNWMS
  19. {
  20. public class BlitemApp : RepositoryFactory<ICSVendor>
  21. {
  22. private static string ERPDB = ConfigurationManager.ConnectionStrings["ERPDB"].ConnectionString;
  23. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  24. {
  25. DataTable dt = new DataTable();
  26. var queryParam = queryJson.ToJObject();
  27. List<DbParameter> parameter = new List<DbParameter>();
  28. #region [SQL]
  29. string sql = @"SELECT ID, CheckCode, SelectLevel, Status, Quantity, Amount, MUSER, MUSERName, MTIME, WorkPoint
  30. FROM
  31. dbo.ICSCheck";
  32. sql += " WHERE 1=1";
  33. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  34. #endregion
  35. if (!string.IsNullOrWhiteSpace(queryJson))
  36. {
  37. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  38. {
  39. sql += " and CheckCode like '%" + queryParam["POCode"].ToString() + "%' ";
  40. }
  41. }
  42. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  43. {
  44. sql += " and WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  45. }
  46. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  47. {
  48. sql += " and VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  49. }
  50. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  51. }
  52. public DataTable GetGridJsonForIntermediate(string queryJson, ref Pagination jqgridparam)
  53. {
  54. DataTable dt = new DataTable();
  55. var queryParam = queryJson.ToJObject();
  56. List<DbParameter> parameter = new List<DbParameter>();
  57. #region [SQL]
  58. string sql = @" select A.ID,CheckCode,Case When Status='1' Then '开立' When Status='2' Then '已修正WMS库存' ELSE '已生成盘点差异单' END AS Status
  59. ,A.InvCode,B.InvStd,A.WHCode,CASE WHEN C.BatchEnable=1 THEN A.BatchCode ELSE '' END AS BatchCode,SUM(A.InvQTY) AS Quantity,SUM(A.PrimaryQTY) AS FirstQuantity
  60. ,D.U9WhQuantity,D.U9WhQuantity-SUM(A.PrimaryQTY) as FirstWMSU9DiffQTY
  61. ,SUM(ISNULL(A.PrimaryQTY,0)-ISNULL(A.InvQTY,0)) AS PrimaryDiff,SUM(A.ReplayQTY) AS ReplayQTY,SUM(ISNULL(A.ReplayQTY,0)-ISNULL(A.InvQTY,0)) AS ReplayDiff
  62. ,SUM(A.CheckQTY) AS CheckQTY,SUM(ISNULL(A.CheckQTY,0)-ISNULL(A.InvQTY,0)) AS CheckDiff
  63. ,CASE WHEN SUM(A.PrimaryQTY)>D.U9WhQuantity THEN '' WHEN SUM(A.PrimaryQTY)=D.U9WhQuantity THEN ''
  64. ELSE '' END AS DiffType
  65. from ICSCheckIntermediate A
  66. INNER JOIN ICSInventory B ON B.InvCode=A.InvCode AND B.WorkPoint=A.WorkPoint
  67. LEFT JOIN ICSWarehouse C ON C.WarehouseCode=A.WHCode AND C.WorkPoint=A.WorkPoint
  68. LEFT JOIN (SELECT Wh,ItemInfo_ItemID,LotInfo_LotCode
  69. ,isnull(SUM ([StoreQty]+[ToRetStQty]),0) AS U9WhQuantity
  70. FROM {0}.[dbo].InvTrans_WhQoh
  71. GROUP BY Wh,ItemInfo_ItemID,LotInfo_LotCode)D
  72. ON D.Wh=C.ID AND D.ItemInfo_ItemID=B.ID AND ISNULL(D.LotInfo_LotCode,'')=CASE WHEN C.BatchEnable=1 THEN A.BatchCode ELSE '' END";
  73. sql += " WHERE 1=1";
  74. sql = string.Format(sql, ERPDB);
  75. #endregion
  76. if (!string.IsNullOrWhiteSpace(queryJson))
  77. {
  78. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  79. {
  80. sql += " and A.CheckCode like '%" + queryParam["POCode"].ToString() + "%' ";
  81. }
  82. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  83. {
  84. sql += " and A.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  85. }
  86. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  87. {
  88. sql += " and a.MTIME >= '" + queryParam["TimeFrom"].ToString() + "' ";
  89. }
  90. if (!string.IsNullOrWhiteSpace(queryParam["TimeArrive"].ToString()))
  91. {
  92. sql += " and a.MTIME <= '" + queryParam["TimeArrive"].ToString() + "' ";
  93. }
  94. }
  95. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  96. {
  97. sql += " and A.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  98. }
  99. sql += " GROUP BY A.ID,A.CheckCode,A.Status,A.InvCode,B.InvStd,A.WHCode,CASE WHEN C.BatchEnable=1 THEN A.BatchCode ELSE '' END,D.U9WhQuantity";
  100. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  101. }
  102. public DataTable GetSubGridJsonForIntermediate(string ID, string Inventory, string InvCode, ref Pagination jqgridparam)
  103. {
  104. DataTable dt = new DataTable();
  105. //var queryParam = queryJson.ToJObject();
  106. List<DbParameter> parameter = new List<DbParameter>();
  107. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  108. string sql = @" select F.ID,A.LotNo,B.InvCode AS INVCode,B.WarehouseCode AS WHCode,D.BatchCode,A.Quantity
  109. ,A.PrimaryQuantity,ISNULL(A.PrimaryQuantity,0)-ISNULL(A.Quantity,0) AS DifferenceNum
  110. ,A.ReplayQuantity,ISNULL(A.ReplayQuantity,0)-ISNULL(A.Quantity,0) AS ReplayDifferenceNum
  111. ,A.CheckQuantity,ISNULL(A.CheckQuantity,0)-ISNULL(A.Quantity,0) AS CheckDifferenceNum
  112. ,G.LocationCode,G.LocationName,A.MUSERName,A.MTIME,C.Type from ICSCheckDetail A
  113. INNER JOIN ICSWareHouseLotInfo B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
  114. INNER JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  115. INNER JOIN ICSExtension D ON D.ID=C.ExtensionID
  116. LEFT JOIN ICSCheck E ON E.ID=A.CheckID
  117. LEFT JOIN ICSCheckIntermediate F ON F.CheckCode=E.CheckCode AND F.InvCode=B.InvCode AND F.BatchCode=D.BatchCode AND F.WHCode=B.WarehouseCode
  118. LEFT JOIN ICSLocation G ON G.LocationCode=B.LocationCode AND G.WorkPoint=B.WorkPoint
  119. WHERE F.ID='" + ID + "' and a.WorkPoint in ('" + WorkPoint + "')";
  120. if (!string.IsNullOrWhiteSpace(InvCode))
  121. {
  122. sql += " and F.InvCode like '%" + InvCode + "%' ";
  123. }
  124. if (Inventory == "1")
  125. {
  126. sql += "and A.Quantity>0";
  127. }
  128. else if (Inventory == "2")
  129. {
  130. sql += "and A.Quantity<=0";
  131. }
  132. else
  133. {
  134. }
  135. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  136. }
  137. public DataTable GetGridJsonForApprove(string queryJson, ref Pagination jqgridparam)
  138. {
  139. DataTable dt = new DataTable();
  140. var queryParam = queryJson.ToJObject();
  141. List<DbParameter> parameter = new List<DbParameter>();
  142. #region [SQL]
  143. string sql = @" SELECT ID, CheckCode, SelectLevel, Status, Quantity, Amount, MUSER, MUSERName, MTIME, WorkPoint
  144. FROM
  145. dbo.ICSCheck";
  146. sql += " WHERE 1=1";
  147. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  148. #endregion
  149. if (!string.IsNullOrWhiteSpace(queryJson))
  150. {
  151. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  152. {
  153. sql += " and CheckCode like '%" + queryParam["POCode"].ToString() + "%' ";
  154. }
  155. }
  156. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  157. {
  158. sql += " and WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  159. }
  160. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  161. {
  162. sql += " and VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  163. }
  164. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  165. }
  166. public DataTable GetSubGridJson(string ID, string Inventory, string InvCode, ref Pagination jqgridparam)
  167. {
  168. DataTable dt = new DataTable();
  169. //var queryParam = queryJson.ToJObject();
  170. List<DbParameter> parameter = new List<DbParameter>();
  171. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  172. string sql = @" SELECT distinct a.ID, b.InvCode,
  173. b.InvName ,
  174. b.InvUnit,
  175. b.InvStd ,
  176. a.LotNo,
  177. e.BatchCode,
  178. a.Quantity,
  179. d.WarehouseCode,
  180. d.LocationCode,
  181. a.PrimaryQuantity,
  182. a.PrimaryAmount,
  183. a.ReplayQuantity,
  184. a.ReplayAmount,
  185. a.CheckQuantity,
  186. a.CheckAmount,
  187. a.PrimaryQuantity- a.Quantity as DifferenceNum,
  188. a.ReplayQuantity- a.Quantity as ReplayDifferenceNum,
  189. a.CheckQuantity- a.Quantity as CheckDifferenceNum,
  190. d.LockQuantity
  191. FROM ICSCheckDetail a
  192. left join ICSInventoryLot c on a.LotNo=c.LotNO and a.WorkPoint=c.WorkPoint
  193. left join ICSInventory b on c.InvCode=b.InvCode AND c.WorkPoint=b.WorkPoint
  194. left join ICSWareHouseLotInfo d on c.LotNO=d.LotNO AND c.WorkPoint=d.WorkPoint
  195. left join dbo.ICSExtension e on c.ExtensionID=e.ID and c.WorkPoint=e.WorkPoint
  196. WHERE a.CheckID='" + ID + "' and a.WorkPoint in ('" + WorkPoint + "')";
  197. if (!string.IsNullOrWhiteSpace(InvCode))
  198. {
  199. sql += " and b.InvCode like '%" + InvCode + "%' ";
  200. }
  201. if (Inventory == "1")
  202. {
  203. sql += "and a.Quantity>0";
  204. }
  205. else if (Inventory == "2")
  206. {
  207. sql += "and a.Quantity<=0";
  208. }
  209. else
  210. {
  211. }
  212. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  213. }
  214. public string DeleteICSCheckDetail(string ID)
  215. {
  216. //站点信息
  217. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  218. string msg = "";
  219. string sql = string.Empty;
  220. try
  221. {
  222. sql = string.Format(@"DELETE FROM ICSCheckDetail WHERE ID ='{0}' and WorkPoint ='{1}'", ID, WorkPoint);
  223. SqlHelper.ExecuteNonQuery(sql);
  224. }
  225. catch (Exception ex)
  226. {
  227. throw new Exception(ex.Message);
  228. }
  229. return msg;
  230. }
  231. /// <summary>
  232. /// 获取仓库
  233. /// </summary>
  234. /// <returns></returns>
  235. public DataTable GetWHCode()
  236. {
  237. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  238. string sql = @" select '' as ID,'' as WarehouseName union all
  239. SELECT ID+'|'+WarehouseCode,WarehouseName FROM ICSWarehouse WITH (NOLOCK) WHERE WorkPoint = '{0}' ";
  240. sql = string.Format(sql, WorkPoint);
  241. //string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  242. //if (role != "admin")
  243. //{
  244. // sql += " and b.WorkPoint='" + WorkPoint + "'";
  245. //}
  246. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  247. return dt;
  248. }
  249. public DataTable GetQU(string WHCodeID)
  250. {
  251. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  252. string sql = @" select '' as QUValue,'' as QUName union all
  253. SELECT Region as QUValue,Region+'区' as QUName FROM ICSLocation WITH (NOLOCK) WHERE WHID = '{0}' AND WorkPoint='{1}'
  254. ";
  255. sql = string.Format(sql, WHCodeID, WorkPoint);
  256. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  257. return dt;
  258. }
  259. //public DataTable GetQU(string WHCodeID)
  260. //{
  261. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  262. // string sql = @"SELECT Region as QUValue,Region+'区' as QUName FROM ICSLocation WHERE WHID = '{0}' AND WorkPoint='{1}'";
  263. // sql = string.Format(sql, WHCodeID, WorkPoint);
  264. // DataTable dt = Repository().FindTableBySql(sql);
  265. // return dt;
  266. //}
  267. public DataTable GetPai(string WHCodeID, string Qu)
  268. {
  269. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  270. string sql = @" select '' as PaiValue,'' as PaiName union all
  271. SELECT Row as PaiValue,Row+'排' as PaiName FROM ICSLocation WITH (NOLOCK) WHERE WHID = '{0}' AND WorkPoint='{1}' and Region='{2}'
  272. ";
  273. sql = string.Format(sql, WHCodeID, WorkPoint, Qu);
  274. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  275. return dt;
  276. }
  277. public DataTable GetHuoJia(string WHCodeID, string Qu, string Pai)
  278. {
  279. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  280. string sql = @" select '' as HuoJiaValue,'' as HuoJiaName union all
  281. SELECT GoodsShelf as HuoJiaValue,GoodsShelf +'' as HuoJiaName FROM ICSLocation WITH (NOLOCK) WHERE WHID = '{0}' AND WorkPoint='{1}' and Region='{2}' and Row='{3}'
  282. ";
  283. sql = string.Format(sql, WHCodeID, WorkPoint, Qu, Pai);
  284. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  285. return dt;
  286. }
  287. public DataTable GetCeng(string WHCodeID, string Qu, string Pai, string HuoJia)
  288. {
  289. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  290. string sql = @" select '' as CengValue,'' as CengName union all
  291. SELECT Tier as CengValue,Tier +'层' as CengName FROM ICSLocation WITH (NOLOCK) WHERE WHID = '{0}' AND WorkPoint='{1}' and Region='{2}' and Row='{3}' and GoodsShelf ='{4}'
  292. ";
  293. sql = string.Format(sql, WHCodeID, WorkPoint, Qu, Pai, HuoJia);
  294. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  295. return dt;
  296. }
  297. public DataTable GetGe(string WHCodeID, string Qu, string Pai, string HuoJia, string Ceng)
  298. {
  299. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  300. string sql = @" select '' as GeValue,'' as GeName union all
  301. SELECT Grid as GeValue,Grid +'格' as GeName FROM ICSLocation WITH (NOLOCK) WHERE WHID = '{0}' AND WorkPoint='{1}' and Region='{2}' and Row='{3}' and GoodsShelf ='{4}' and Tier='{5}'
  302. ";
  303. sql = string.Format(sql, WHCodeID, WorkPoint, Qu, Pai, HuoJia, Ceng);
  304. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  305. return dt;
  306. }
  307. public string AddICSCheck(string Parameter)
  308. {
  309. string msg = "";
  310. string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "Check/Create";
  311. string result = HttpPost(APIURL, Parameter);
  312. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  313. string MessAge = Obj["Message"].ToString();
  314. string Success = Obj["Success"].ToString();
  315. if (Success.ToUpper() == "FALSE")
  316. {
  317. msg = MessAge;
  318. }
  319. return msg;
  320. }
  321. //接口api解析
  322. public static string HttpPost(string url, string body)
  323. {
  324. try
  325. {
  326. Encoding encoding = Encoding.UTF8;
  327. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  328. request.Method = "POST";
  329. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  330. request.ContentType = "application/json; charset=utf-8";
  331. byte[] buffer = encoding.GetBytes(body);
  332. request.ContentLength = buffer.Length;
  333. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  334. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  335. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  336. {
  337. return reader.ReadToEnd();
  338. }
  339. }
  340. catch (WebException ex)
  341. {
  342. throw new Exception(ex.Message);
  343. }
  344. }
  345. public string DeleteICSCheck(string keyValue)
  346. {
  347. //站点信息
  348. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  349. string msg = "";
  350. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  351. string sql = string.Empty;
  352. try
  353. {
  354. sql += string.Format(@" IF EXISTS(SELECT CheckID FROM ICSCheckDetail WHERE CheckID in ({0}) and EATTRIBUTE1 ='1' )
  355. BEGIN
  356. RAISERROR(',',16,1);
  357. RETURN
  358. END
  359. DELETE FROM dbo.ICSCheck WHERE ID IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  360. sql += string.Format(@"DELETE FROM dbo.ICSCheckDetail WHERE CheckID IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  361. SqlHelper.ExecuteNonQuery(sql);
  362. }
  363. catch (Exception ex)
  364. {
  365. msg = ex.Message;
  366. }
  367. return msg;
  368. }
  369. public DataTable GetGridJsonWarehouse(string queryJson, ref Pagination jqgridparam)
  370. {
  371. DataTable dt = new DataTable();
  372. var queryParam = queryJson.ToJObject();
  373. List<DbParameter> parameter = new List<DbParameter>();
  374. #region [SQL]
  375. string sql = @"select distinct a.ID, a.WarehouseCode as SelectLevel ,a.WarehouseCode,a.WarehouseName
  376. from ICSWarehouse a ";
  377. #endregion
  378. if (!string.IsNullOrWhiteSpace(queryJson) && !string.IsNullOrWhiteSpace(queryParam["StartDate"].ToString()) && !string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  379. {
  380. sql += " INNER JOIN ICSWareHouseLotInfoLog c ON (c.FromWarehouseCode=a.WarehouseCode or c.ToWarehouseCode=a.WarehouseCode) AND a.WorkPoint=c.WorkPoint AND (c.TransType='1' or c.TransType='2') WHERE 1=1 ";
  381. if (!string.IsNullOrWhiteSpace(queryParam["StartDate"].ToString()))
  382. {
  383. sql += " and c.MTIME >= '" + queryParam["StartDate"].ToString() + "' ";
  384. }
  385. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  386. {
  387. sql += " and c.MTIME < '" + queryParam["EndDate"].ToString() + "' ";
  388. }
  389. }
  390. else
  391. {
  392. sql += " WHERE 1=1";
  393. }
  394. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  395. {
  396. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  397. }
  398. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  399. {
  400. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  401. }
  402. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  403. }
  404. public DataTable GetSubGridJsonRegion(string ID, ref Pagination jqgridparam)
  405. {
  406. DataTable dt = new DataTable();
  407. //var queryParam = queryJson.ToJObject();
  408. List<DbParameter> parameter = new List<DbParameter>();
  409. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  410. string sql = @" select distinct a.Region+a.Row as SelectLevel,
  411. --dbo.GetSelectLevel(a.LocationCode,b.WarehouseCode,a.Region) as SelectLevel,
  412. a.WHID, b.WarehouseCode,a.Region,a.Row from ICSLocation a left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
  413. WHERE a.WHID='" + ID + "' and a.WorkPoint in ('" + WorkPoint + "')";
  414. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  415. }
  416. public DataTable GetSubGridJsonRow(string WHID, string Region, ref Pagination jqgridparam)
  417. {
  418. DataTable dt = new DataTable();
  419. //var queryParam = queryJson.ToJObject();
  420. List<DbParameter> parameter = new List<DbParameter>();
  421. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  422. string sql = @" select distinct isnull(a.Region,'')+isnull(a.Row,'')+isnull(a.GoodsShelf,'') as SelectLevel,
  423. --dbo.GetSelectLevel(a.LocationCode,b.WarehouseCode,a.Region+'-'+a.Row) as SelectLevel,
  424. a.WHID, b.WarehouseCode,a.Region ,a.Row ,a.GoodsShelf
  425. from ICSLocation a left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
  426. WHERE a.WHID='" + WHID + "' and a.Region='" + Region + "' and isnull(a.Row,'') !='' and a.WorkPoint in ('" + WorkPoint + "')";
  427. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  428. }
  429. public DataTable GetSubGridJsonGoodsShelf(string WHID, string Region, string Row, ref Pagination jqgridparam)
  430. {
  431. DataTable dt = new DataTable();
  432. //var queryParam = queryJson.ToJObject();
  433. List<DbParameter> parameter = new List<DbParameter>();
  434. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  435. string sql = @" select distinct isnull(a.Region,'')+isnull(a.Row,'')+isnull(a.GoodsShelf,'') +isnull(a.Tier,'') as SelectLevel,
  436. --dbo.GetSelectLevel(a.LocationCode,b.WarehouseCode,a.Region+'-'+a.Row+'-'+a.GoodsShelf) as SelectLevel,
  437. a.WHID, b.WarehouseCode,a.Region ,a.Row,a.GoodsShelf ,a.Tier
  438. from ICSLocation a left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
  439. WHERE a.WHID='" + WHID + "' and a.Region='" + Region + "' and a.Row='" + Row + "' and isnull(a.GoodsShelf,'') !='' and a.WorkPoint in ('" + WorkPoint + "')";
  440. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  441. }
  442. public DataTable GetSubGridJsonTier(string WHID, string Region, string Row, string GoodsShelf, ref Pagination jqgridparam)
  443. {
  444. DataTable dt = new DataTable();
  445. //var queryParam = queryJson.ToJObject();
  446. List<DbParameter> parameter = new List<DbParameter>();
  447. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  448. string sql = @" select distinct isnull(a.Region,'')+isnull(a.Row,'')+isnull(a.GoodsShelf,'') +isnull(a.Tier,'')+isnull(a.Grid,'')+ as SelectLevel,
  449. --dbo.GetSelectLevel(a.LocationCode,b.WarehouseCode,a.Region+'-'+a.Row+'-'+a.GoodsShelf+'-'+a.Tier) as SelectLevel,
  450. a.WHID, b.WarehouseCode,a.Region ,a.Row,a.GoodsShelf ,a.Tier
  451. from ICSLocation a left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
  452. WHERE a.WHID='" + WHID + "' and a.Region='" + Region + "' and a.Row='" + Row + "' and a.GoodsShelf='" + GoodsShelf + "' and isnull(a.Tier,'') !='' and a.WorkPoint in ('" + WorkPoint + "')";
  453. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  454. }
  455. public DataTable GetSubGridJsonGrid(string WHID, string Region, string Row, string GoodsShelf, string Tier, ref Pagination jqgridparam)
  456. {
  457. DataTable dt = new DataTable();
  458. //var queryParam = queryJson.ToJObject();
  459. List<DbParameter> parameter = new List<DbParameter>();
  460. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  461. string sql = @" select distinct isnull(a.Region,'')+isnull(a.Row,'')+isnull(a.GoodsShelf,'') +isnull(a.Tier,'')+isnull(a.Grid,'') as SelectLevel,
  462. --dbo.GetSelectLevel(a.LocationCode,b.WarehouseCode,a.Region+'-'+a.Row+'-'+a.GoodsShelf+'-'+a.Tier) as SelectLevel,
  463. a.WHID, b.WarehouseCode,a.Region ,a.Row ,a.GoodsShelf ,a.Tier,a.Grid
  464. from ICSLocation a left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
  465. WHERE a.WHID='" + WHID + "' and a.Region='" + Region + "' and a.Row='" + Row + "' and a.Tier='" + Tier + "' and a.GoodsShelf='" + GoodsShelf + "' and isnull(a.Grid,'') !='' and a.WorkPoint in ('" + WorkPoint + "')";
  466. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  467. }
  468. public DataTable StatementExportAll(string ID, string Inventory, string InvCode)
  469. {
  470. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  471. string sql = string.Empty;
  472. object Figure = GetDecimalDigits();
  473. string TableCode = string.Empty;
  474. #region sql语句
  475. sql = @"SELECT distinct e.CheckCode as 盘点单号, a.LotNo as 条码,
  476. f.BatchCode as ,
  477. b.InvCode as ,
  478. b.InvName as ,
  479. b.InvStd as ,
  480. b.InvUnit as ,
  481. CAST(a.Quantity AS DECIMAL(18,{0})) as ,
  482. d.WarehouseCode as ,
  483. d.LocationCode as ,
  484. CAST(a.PrimaryQuantity AS DECIMAL(18,{0})) as ,
  485. CAST(a.PrimaryAmount AS DECIMAL(18,{0})) as ,
  486. a.PrimaryQuantity- a.Quantity as ,
  487. CAST(a.ReplayQuantity as DECIMAL(18,{0})) as ,
  488. CAST(a.ReplayAmount as DECIMAL(18,{0})) as ,
  489. a.ReplayQuantity- a.Quantity as ,
  490. CAST(a.CheckQuantity as DECIMAL(18,{0})) as ,
  491. CAST(a.CheckAmount as DECIMAL(18,{0})) as ,
  492. a.CheckQuantity- a.Quantity as ,
  493. a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  494. a.EATTRIBUTE9,a.EATTRIBUTE10
  495. FROM ICSCheck e
  496. left join dbo.ICSCheckDetail a on a.CheckID=e.ID and a.WorkPoint=e.WorkPoint
  497. left join ICSInventoryLot c on a.LotNo=c.LotNO and a.WorkPoint=c.WorkPoint
  498. left join ICSInventory b on c.InvCode=b.InvCode AND c.WorkPoint=b.WorkPoint
  499. left join ICSWareHouseLotInfo d on c.LotNO=d.LotNO AND c.WorkPoint=d.WorkPoint
  500. left join dbo.ICSExtension f on c.ExtensionID=f.ID and c.WorkPoint=f.WorkPoint
  501. WHERE 1=1 and e.CheckCode in (" + ID.TrimEnd(',') + ") ";
  502. TableCode = "ICSCheckDetail";
  503. #endregion
  504. sql = sql + " and a.WorkPoint='{1}'";
  505. if (!string.IsNullOrWhiteSpace(InvCode))
  506. {
  507. sql += " and b.InvCode like '%" + InvCode + "%' ";
  508. }
  509. if (Inventory == "1")
  510. {
  511. sql += "and a.Quantity>0";
  512. }
  513. else if (Inventory == "2")
  514. {
  515. sql += "and a.Quantity<=0";
  516. }
  517. sql = string.Format(sql, Figure, WorkPoint);
  518. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  519. DataTable dtColumn = ColumnEnable(TableCode);
  520. foreach (DataRow drC in dtColumn.Rows)
  521. {
  522. if (dt.Columns.Contains(drC["ColumnCode"].ToString()))
  523. {
  524. if (!Convert.ToBoolean(drC["Enable"]))
  525. {
  526. dt.Columns.Remove(drC["ColumnCode"].ToString());
  527. }
  528. else if (Convert.ToBoolean(drC["Enable"]))
  529. {
  530. dt.Columns[drC["ColumnCode"].ToString()].ColumnName = drC["Name"].ToString();
  531. }
  532. }
  533. }
  534. return dt;
  535. }
  536. /// <summary>
  537. /// 盘点审核界面按单据导出
  538. /// </summary>
  539. /// <param name="ID"></param>
  540. /// <param name="Inventory"></param>
  541. /// <param name="InvCode"></param>
  542. /// <returns></returns>
  543. public DataTable StatementExportAllByDoc(string ID, string Inventory, string InvCode)
  544. {
  545. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  546. string sql = string.Empty;
  547. #region sql语句
  548. sql = @"select CheckCode AS 盘点单号
  549. ,Case When Status='1' Then '' When Status='2' Then 'WMS库存' ELSE '' END AS
  550. ,A.InvCode AS ,B.InvName AS ,B.InvStd AS ,A.WHCode AS
  551. ,C.WarehouseName AS ,A.BatchCode AS ,SUM(A.InvQTY) AS
  552. ,SUM(A.PrimaryQTY) AS WMS盘点数量,ISNULL(D.U9WhQuantity,0) AS U9现存量
  553. ,ISNULL(D.U9WhQuantity,0)-SUM(A.PrimaryQTY) as U9盘点差异
  554. ,SUM(ISNULL(A.PrimaryQTY,0)-ISNULL(A.InvQTY,0)) AS WMS盘点差异
  555. ,CASE WHEN SUM(A.PrimaryQTY)>ISNULL(D.U9WhQuantity,0) THEN '' WHEN SUM(A.PrimaryQTY)=ISNULL(D.U9WhQuantity,0) THEN ''
  556. ELSE '' END AS
  557. from ICSCheckIntermediate A
  558. INNER JOIN ICSInventory B ON B.InvCode=A.InvCode AND B.WorkPoint=A.WorkPoint
  559. LEFT JOIN ICSWarehouse C ON C.WarehouseCode=A.WHCode AND C.WorkPoint=A.WorkPoint
  560. LEFT JOIN (SELECT Wh,ItemInfo_ItemID,LotInfo_LotCode
  561. ,isnull(SUM ([StoreQty]+[ToRetStQty]),0) AS U9WhQuantity
  562. FROM {0}.[dbo].InvTrans_WhQoh
  563. GROUP BY Wh,ItemInfo_ItemID,LotInfo_LotCode)D
  564. ON D.Wh=C.ID AND D.ItemInfo_ItemID=B.ID AND D.LotInfo_LotCode=A.BatchCode
  565. WHERE 1=1 and A.CheckCode in (" + ID.TrimEnd(',') + ") ";
  566. #endregion
  567. sql = sql + " and a.WorkPoint='{1}'";
  568. if (!string.IsNullOrWhiteSpace(InvCode))
  569. {
  570. sql += " and A.InvCode like '%" + InvCode + "%' ";
  571. }
  572. if (Inventory == "1")
  573. {
  574. sql += "and A.InvQTY>0";
  575. }
  576. else if (Inventory == "2")
  577. {
  578. sql += "and A.InvQTY<=0";
  579. }
  580. sql += " GROUP BY A.ID,A.CheckCode,A.Status,A.InvCode,B.InvName,B.InvStd,A.WHCode,C.WarehouseName,A.BatchCode,D.U9WhQuantity";
  581. sql = string.Format(sql, ERPDB, WorkPoint);
  582. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  583. return dt;
  584. }
  585. /// <summary>
  586. /// 盘点审核界面按条码导出
  587. /// </summary>
  588. /// <param name="ID"></param>
  589. /// <param name="Inventory"></param>
  590. /// <param name="InvCode"></param>
  591. /// <returns></returns>
  592. public DataTable StatementExportAllByLot(string ID, string Inventory, string InvCode)
  593. {
  594. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  595. string sql = string.Empty;
  596. #region sql语句
  597. sql = @"select A.LotNo AS 物料条码,B.InvCode AS 物料编码,H.InvName AS 物料名称,B.WarehouseCode AS 仓库编码,I.WarehouseName AS 仓库名称
  598. ,D.BatchCode AS ,A.Quantity AS WMS库存,A.PrimaryQuantity AS
  599. ,ISNULL(A.PrimaryQuantity,0)-ISNULL(A.Quantity,0) AS
  600. ,G.LocationCode AS ,G.LocationName AS
  601. ,A.MUSERName AS ,A.MTIME AS from ICSCheckDetail A
  602. INNER JOIN ICSWareHouseLotInfo B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
  603. INNER JOIN ICSInventoryLot C ON C.LotNo=A.LotNo AND C.WorkPoint=A.WorkPoint
  604. INNER JOIN ICSExtension D ON D.ID=C.ExtensionID
  605. LEFT JOIN ICSCheck E ON E.ID=A.CheckID
  606. LEFT JOIN ICSCheckIntermediate F ON F.CheckCode=E.CheckCode AND F.InvCode=B.InvCode AND F.BatchCode=D.BatchCode AND F.WHCode=B.WarehouseCode
  607. LEFT JOIN ICSLocation G ON G.LocationCode=B.LocationCode AND G.WorkPoint=B.WorkPoint
  608. INNER JOIN ICSInventory H ON H.InvCode=B.InvCode AND H.WorkPoint=B.WorkPoint
  609. LEFT JOIN ICSWarehouse I ON I.WarehouseCode=B.WarehouseCode AND I.WorkPoint=B.WorkPoint
  610. WHERE F.CheckCode in (" + ID.TrimEnd(',') + ")";
  611. #endregion
  612. sql = sql + " and a.WorkPoint='{0}'";
  613. if (!string.IsNullOrWhiteSpace(InvCode))
  614. {
  615. sql += " and A.InvCode like '%" + InvCode + "%' ";
  616. }
  617. if (Inventory == "1")
  618. {
  619. sql += "and A.Quantity>0";
  620. }
  621. else if (Inventory == "2")
  622. {
  623. sql += "and A.Quantity<=0";
  624. }
  625. sql = string.Format(sql, WorkPoint);
  626. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  627. return dt;
  628. }
  629. public DataTable ColumnEnable(string TableCode)
  630. {
  631. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  632. string sql = string.Empty;
  633. sql = @"select ColumnCode,Name,Enable from ICSColumnEnable where TableCode='{0}' and WorkPoint='{1}'";
  634. sql = string.Format(sql, TableCode, WorkPoint);
  635. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  636. return dt;
  637. }
  638. public object GetDecimalDigits()
  639. {
  640. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  641. try
  642. {
  643. string sql = string.Empty;
  644. sql = @"select Figure from ICSConfiguration where Code='Figure001' and Enable='1' and WorkPoint='" + WorkPoint + "'";
  645. object Figure = SqlHelper.ExecuteScalar(sql);
  646. return Figure;
  647. }
  648. catch (Exception ex)
  649. {
  650. throw new Exception(ex.Message.ToString());
  651. }
  652. }
  653. /// <summary>
  654. /// 按照物料显示数据
  655. /// </summary>
  656. /// <param name="queryJson"></param>
  657. /// <param name="jqgridparam"></param>
  658. /// <returns></returns>
  659. public DataTable GetGridJsonInv(string queryJson, ref Pagination jqgridparam)
  660. {
  661. DataTable dt = new DataTable();
  662. var queryParam = queryJson.ToJObject();
  663. List<DbParameter> parameter = new List<DbParameter>();
  664. #region [SQL]
  665. string sql = @"select DISTINCT a.ID ,a.InvName,a.InvStd,a.InvCode,a.InvUnit from ICSWareHouseLotInfo b
  666. INNER JOIN ICSInventory a ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint ";
  667. sql += " WHERE 1=1";
  668. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  669. #endregion
  670. if (!string.IsNullOrWhiteSpace(queryJson))
  671. {
  672. //if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  673. //{
  674. // sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  675. //}
  676. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  677. {
  678. string[] values = queryParam["InvCode"].ToString().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  679. string InvCode = "'" + string.Join("','", values) + "'";
  680. if (values.Length > 1)
  681. {
  682. sql += " and a.InvCode in (" + InvCode + ") ";
  683. }
  684. else
  685. {
  686. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  687. }
  688. }
  689. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  690. {
  691. sql += " and a.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  692. }
  693. if (!string.IsNullOrWhiteSpace(queryParam["InvStd"].ToString()))
  694. {
  695. sql += " and a.InvStd like '%" + queryParam["InvStd"].ToString() + "%' ";
  696. }
  697. }
  698. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  699. {
  700. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  701. }
  702. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  703. }
  704. public string AuditICSCheck(string keyValue)
  705. {
  706. string msg = "";
  707. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  708. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  709. try
  710. {
  711. string CheckCodeList = "";
  712. foreach (string CheckCode in keyValue.TrimEnd(',').Split(','))
  713. {
  714. if (!CheckCodeList.Contains(CheckCode))
  715. {
  716. CheckCodeList += CheckCode + ",";
  717. }
  718. }
  719. CheckCodeList = CheckCodeList.TrimEnd(',');
  720. string connString = SqlHelper.DataCenterConnString;
  721. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  722. conn.Open();
  723. SqlTransaction sqlTran = conn.BeginTransaction();
  724. SqlCommand cmd = new SqlCommand();
  725. cmd.Transaction = sqlTran;
  726. cmd.Connection = conn;
  727. try
  728. {
  729. string sql = @" SELECT a.WorkPoint,a.INVID,a.InvCode,a.WHID,a.WHCode,SUM(a.PrimaryQTY) as PrimaryQTY,a.BatchCode INTO #TempWMS FROM (
  730. select a.WorkPoint,B.ID AS INVID,a.InvCode,C.ID AS WHID,a.WHCode as WHCode ,
  731. A.PrimaryQTY
  732. ,CASE WHEN C.BatchEnable=1 THEN A.BatchCode ELSE '' END AS BatchCode
  733. from ICSCheckIntermediate A
  734. INNER JOIN ICSInventory B ON B.InvCode=A.InvCode AND B.WorkPoint=A.WorkPoint
  735. LEFT JOIN ICSWarehouse C ON C.WarehouseCode=A.WHCode AND C.WorkPoint=A.WorkPoint
  736. where a.CheckCode in ({0}) and a.WorkPoint='{1}'
  737. group by a.WorkPoint,a.InvCode,a.WHCode,a.BatchCode,A.PrimaryQTY,B.ID,C.ID,C.BatchEnable
  738. UNION ALL
  739. SELECT A.WorkPoint AS WorkPoint,I.ID AS INVID,D.InvCode AS InvCode,G.ID AS WHID,F.WarehouseCode AS WHCode
  740. ,SUM(ISNULL(A.PrimaryQuantity,0))
  741. ,CASE WHEN G.BatchEnable=1 THEN E.BatchCode ELSE '' END AS BatchCode
  742. FROM ICSCheckDetail A
  743. LEFT JOIN ICSCheckIntermediateTable B
  744. ON B.LotNo=A.LotNo AND B.CheckID=A.CheckID AND B.WorkPoint=A.WorkPoint
  745. LEFT JOIN ICSCheck C ON C.ID=A.CheckID AND C.WorkPoint=A.WorkPoint
  746. LEFT JOIN ICSInventoryLot D ON D.LotNo=A.LotNo AND D.WorkPoint=A.WorkPoint
  747. LEFT JOIN ICSExtension E ON E.ID=D.ExtensionID AND E.WorkPoint=D.WorkPoint
  748. LEFT JOIN ICSWareHouseLotInfo F ON F.LotNo=A.LotNo AND F.WorkPoint=A.WorkPoint
  749. LEFT JOIN ICSWarehouse G ON G.WarehouseCode=F.WarehouseCode AND G.WorkPoint=A.WorkPoint
  750. LEFT JOIN ICSInventory I ON I.InvCode=D.InvCode AND I.WorkPoint=D.WorkPoint
  751. WHERE B.LotNo IS NULL
  752. AND C.CheckCode IN ({0}) AND A.WorkPoint='{1}'
  753. AND F.WorkPoint='{1}'
  754. GROUP BY A.WorkPoint,D.InvCode,F.WarehouseCode,E.BatchCode,G.ID,I.ID,G.BatchEnable) A
  755. GROUP BY a.WorkPoint,a.INVID,a.InvCode,a.WHID,a.WHCode,a.BatchCode
  756. select A.WorkPoint AS WorkPoint,A.InvCode AS InvCode,A.WHCode AS WHCode
  757. ,ISNULL(A.PrimaryQTY,0)-isnull(SUM (B.[StoreQty]+B.[ToRetStQty]),0) AS Num
  758. ,A.BatchCode AS BatchCode INTO #TempERP from #TempWMS A
  759. LEFT JOIN {2}.[dbo].InvTrans_WhQoh B ON B.Wh=A.WHID
  760. AND B.ItemInfo_ItemID=A.INVID AND ISNULL(B.LotInfo_LotCode,'')=A.BatchCode
  761. GROUP BY A.WorkPoint,A.InvCode,A.WHCode,A.BatchCode,ISNULL(A.PrimaryQTY,0)
  762. select distinct WorkPoint as Costre,WorkPoint FROM #TempERP
  763. select WorkPoint as Costre, InvCode,WHCode,Num as Quantity ,'0' as Amount ,BatchCode FROM #TempERP where Num<>0
  764. DROP TABLE #TempWMS
  765. DROP TABLE #TempERP";
  766. sql = string.Format(sql, CheckCodeList, WorkPoint, ERPDB);
  767. DataSet DSet = SqlCommandHelper.SQlReturnDataSet(sql, cmd);
  768. string Inputstr = SqlHelper.DataSetToJson(DSet, "details", "Costre");
  769. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "CheckDiffDoc/Create";
  770. string result = HttpPost(APIURL, Inputstr);
  771. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  772. string MessAge = Obj["Message"].ToString();
  773. string Success = Obj["Success"].ToString();
  774. string ERPSql = "";
  775. if (Success.ToUpper() == "FALSE")
  776. {
  777. throw new Exception("ERP接口调用失败:" + MessAge);
  778. }
  779. else
  780. {
  781. try
  782. {
  783. JArray res = (JArray)JsonConvert.DeserializeObject(Obj["Data"].ToString());
  784. foreach (var item in res)
  785. {
  786. JObject jo = (JObject)item;
  787. ERPSql = @"update ICSCheck set Status='3' ,EATTRIBUTE1='" + jo["ID"].ToString() + "' where CheckCode in (" + CheckCodeList + ") ";
  788. ERPSql += @" update ICSCheckIntermediateTable set IsCheckDetail='3' where CheckNo in (" + CheckCodeList + ") ";
  789. ERPSql += @" update ICSCheckIntermediate set Status='3' where CheckCode in (" + CheckCodeList + ") ";
  790. }
  791. SqlCommandHelper.CmdExecuteNonQuery(ERPSql, cmd);
  792. }
  793. catch (Exception ex)
  794. {
  795. msg = ex.Message;
  796. }
  797. }
  798. cmd.Transaction.Commit();
  799. //return dt;
  800. }
  801. catch (Exception ex)
  802. {
  803. cmd.Transaction.Rollback();
  804. msg = ex.Message;
  805. }
  806. finally
  807. {
  808. if (conn.State == ConnectionState.Open)
  809. {
  810. conn.Close();
  811. }
  812. conn.Dispose();
  813. }
  814. }
  815. catch (Exception ex)
  816. {
  817. msg = ex.Message;
  818. }
  819. return msg;
  820. }
  821. public string ApproveWMSCheckResult(string keyValue)
  822. {
  823. string msg = "";
  824. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  825. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  826. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  827. try
  828. {
  829. string Identification = Guid.NewGuid().ToString();
  830. string CheckCodeList = "";
  831. foreach (string CheckCode in keyValue.TrimEnd(',').Split(','))
  832. {
  833. if (!CheckCodeList.Contains(CheckCode))
  834. {
  835. CheckCodeList += CheckCode + ",";
  836. }
  837. }
  838. CheckCodeList = CheckCodeList.TrimEnd(',');
  839. string connString = SqlHelper.DataCenterConnString;
  840. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  841. conn.Open();
  842. SqlTransaction sqlTran = conn.BeginTransaction();
  843. SqlCommand cmd = new SqlCommand();
  844. cmd.Transaction = sqlTran;
  845. cmd.Connection = conn;
  846. try
  847. {
  848. int result = 0;
  849. bool isSuccess = true;
  850. ///添加日志
  851. string sql = @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
  852. BEGIN
  853. RAISERROR('{2} ',16,1);
  854. RETURN
  855. END
  856. select CheckNo, LotNo, Quantity, PrimaryQuantity,WorkPoint into #tempCheck from
  857. (SELECT CheckNo, LotNo, Quantity, PrimaryQuantity,WorkPoint
  858. FROM
  859. dbo.ICSCheckIntermediateTable
  860. where IsCheckDetail='1'
  861. AND Quantity!=PrimaryQuantity
  862. AND CheckNo IN ({0}) AND WorkPoint='{1}'
  863. UNION ALL
  864. SELECT C.CheckCode AS CheckNo,A.LotNo AS LotNo,A.Quantity AS Quantity
  865. ,A.PrimaryQuantity AS PrimaryQuantity,A.WorkPoint AS WorkPoint FROM ICSCheckDetail A
  866. LEFT JOIN ICSCheckIntermediateTable B
  867. ON B.LotNo=A.LotNo AND B.CheckID=A.CheckID AND B.WorkPoint=A.WorkPoint
  868. LEFT JOIN ICSCheck C ON C.ID=A.CheckID AND C.WorkPoint=A.WorkPoint
  869. WHERE B.LotNo IS NULL AND A.Quantity!=A.PrimaryQuantity
  870. AND C.CheckCode IN ({0}) AND A.WorkPoint='{1}'
  871. ) A
  872. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  873. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  874. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  875. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  876. MTIME,WorkPoint,EATTRIBUTE1)
  877. SELECT NEWID(),'{3}',a.CheckNo,'',a.LotNo ,b.InvCode ,
  878. b.WarehouseCode,b.LocationCode,'','',a.Quantity,
  879. '','0','8','40','0','',
  880. '','','',f.F_Account ,f.F_RealName ,
  881. SYSDATETIME() ,a.WorkPoint ,''
  882. FROM #tempCheck a
  883. INNER JOIN ICSWareHouseLotInfo b on b.LotNo=a.LotNo and b.WorkPoint=a.WorkPoint
  884. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  885. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  886. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  887. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  888. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  889. MTIME,WorkPoint,EATTRIBUTE1)
  890. SELECT NEWID(),'{3}',a.CheckNo,'',a.LotNo ,b.InvCode ,
  891. b.WarehouseCode,b.LocationCode,'','',a.PrimaryQuantity,
  892. '','0','8','41','0','',
  893. '','','',f.F_Account ,f.F_RealName ,
  894. SYSDATETIME() ,a.WorkPoint ,''
  895. FROM #tempCheck a
  896. INNER JOIN ICSWareHouseLotInfo b on b.LotNo=a.LotNo and b.WorkPoint=a.WorkPoint
  897. INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
  898. drop table #tempCheck ";
  899. sql = string.Format(sql, CheckCodeList, WorkPoint, MUSER, Identification);
  900. cmd.CommandText = sql;
  901. result = cmd.ExecuteNonQuery();
  902. if (isSuccess && result <= 0)
  903. {
  904. throw new Exception("库存日志写入失败!");
  905. }
  906. ///更新库存
  907. sql = @"select CheckNo, LotNo, Quantity, PrimaryQuantity,WorkPoint into #tempCheck from
  908. (SELECT CheckNo, LotNo, Quantity, PrimaryQuantity,WorkPoint
  909. FROM
  910. dbo.ICSCheckIntermediateTable
  911. where IsCheckDetail='1'
  912. AND Quantity!=PrimaryQuantity
  913. AND CheckNo IN ({0}) AND WorkPoint='{1}'
  914. UNION ALL
  915. SELECT C.CheckCode AS CheckNo,A.LotNo AS LotNo,A.Quantity AS Quantity
  916. ,A.PrimaryQuantity AS PrimaryQuantity,A.WorkPoint AS WorkPoint FROM ICSCheckDetail A
  917. LEFT JOIN ICSCheckIntermediateTable B
  918. ON B.LotNo=A.LotNo AND B.CheckID=A.CheckID AND B.WorkPoint=A.WorkPoint
  919. LEFT JOIN ICSCheck C ON C.ID=A.CheckID AND C.WorkPoint=A.WorkPoint
  920. WHERE B.LotNo IS NULL AND A.Quantity!=A.PrimaryQuantity
  921. AND C.CheckCode IN ({0}) AND A.WorkPoint='{1}'
  922. ) A
  923. UPDATE A SET A.Quantity=B.PrimaryQuantity
  924. FROM ICSWareHouseLotInfo A
  925. INNER JOIN #tempCheck B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
  926. UPDATE ICSCheckIntermediateTable SET IsCheckDetail='2'
  927. WHERE CheckNo IN ({0}) AND WorkPoint='{1}'
  928. UPDATE ICSCheckIntermediate SET Status='2'
  929. WHERE CheckCode IN ({0}) AND WorkPoint='{1}'
  930. UPDATE ICSCheck SET Status='2'
  931. WHERE CheckCode IN ({0}) AND WorkPoint='{1}'
  932. drop table #tempCheck";
  933. sql = string.Format(sql, CheckCodeList, WorkPoint);
  934. cmd.CommandText = sql;
  935. result = cmd.ExecuteNonQuery();
  936. if (isSuccess && result <= 0)
  937. {
  938. throw new Exception("库存表更新失败!");
  939. }
  940. cmd.Transaction.Commit();
  941. }
  942. catch (Exception ex)
  943. {
  944. cmd.Transaction.Rollback();
  945. msg = ex.Message;
  946. }
  947. finally
  948. {
  949. if (conn.State == ConnectionState.Open)
  950. {
  951. conn.Close();
  952. }
  953. conn.Dispose();
  954. }
  955. }
  956. catch (Exception ex)
  957. {
  958. msg = ex.Message;
  959. }
  960. return msg;
  961. }
  962. /// <summary>
  963. /// 派纳盘点单生成条码获取盘点单信息
  964. /// </summary>
  965. /// <param name="CheckCode"></param>
  966. /// <param name="WorkPoint"></param>
  967. /// <returns></returns>
  968. public DataTable GetCheckDocInfo(string CheckCode, string WorkPoint)
  969. {
  970. DataTable dt = new DataTable();
  971. object Figure = GetDecimalDigits();
  972. List<DbParameter> parameter = new List<DbParameter>();
  973. string sql = $@" select TOP 1 C.WarehouseCode AS WHCode,A.WorkPoint AS WorkPoint
  974. ,'' AS ProjectCode,'' AS BatchCode,'' AS Version,'' AS Brand,'' AS cFree1,'' AS cFree2,'' AS cFree3,'' AS cFree4,'' AS cFree5,'' AS cFree6,'' AS cFree7,'' AS cFree8,'' AS cFree9,'' AS cFree10
  975. ,'' EATTRIBUTE2 ,'' EATTRIBUTE3 ,'' EATTRIBUTE4 ,'' EATTRIBUTE5,'' EATTRIBUTE6 ,'' EATTRIBUTE7 ,'' EATTRIBUTE8 ,'' EATTRIBUTE9 ,'' EATTRIBUTE10
  976. from ICSCheck A
  977. LEFT JOIN ICSCheckDetail B ON B.CheckID=A.ID AND B.WorkPoint=A.WorkPoint
  978. LEFT JOIN ICSWareHouseLotInfo C ON C.LotNo=B.LotNo AND C.WorkPoint=B.WorkPoint
  979. where A.CheckCode='{CheckCode}' and A.WorkPoint='{WorkPoint}'";
  980. sql = string.Format(sql, Figure);
  981. return Repository().FindTableBySql(sql.ToString());
  982. }
  983. public DataTable GetINV(string invcode, ref Pagination jqgridparam)
  984. {
  985. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  986. List<DbParameter> parameter = new List<DbParameter>();
  987. DataTable table = new DataTable();
  988. string wherestr = "";
  989. if (!string.IsNullOrEmpty(invcode))
  990. {
  991. wherestr += " and InvCode like '%" + invcode + "%'";
  992. }
  993. string sql = @"select ID, InvCode ,InvName ,InvStd ,InvUnit ,ClassCode ,ClassName
  994. ,isnull(EffectiveEnable, 0 ) AS EffectiveEnable
  995. ,CAST ( isnull(EffectiveDays, 0 ) AS DECIMAL ( 38,6 ) ) AS EffectiveDays
  996. from ICSInventory
  997. where WorkPoint = '" + WorkPoint + "'" + wherestr;
  998. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  999. }
  1000. public DataTable GetLocation(string WHCode, ref Pagination jqgridparam)
  1001. {
  1002. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1003. List<DbParameter> parameter = new List<DbParameter>();
  1004. DataTable table = new DataTable();
  1005. string sql = @"select A.ID,B.WarehouseCode,B.WarehouseName,A.LocationCode,A.LocationName
  1006. from ICSLocation A
  1007. LEFT JOIN ICSWarehouse B ON B.ID=A.WHID AND B.WorkPoint=A.WorkPoint
  1008. WHERE B.WarehouseCode='" + WHCode + "' AND B.WorkPoint='" + WorkPoint + "'";
  1009. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1010. }
  1011. /// <summary>
  1012. /// 派纳 盘点单生成条码 保存(生成条码的同时入库并写入对应盘点单)
  1013. /// </summary>
  1014. /// <param name="TransferNO"></param>
  1015. /// <param name="keyValue"></param>
  1016. /// <param name="WorkPoint"></param>
  1017. /// <returns></returns>
  1018. public int CreateLotNoForPD(string CheckCode, string keyValue, string WorkPoint)
  1019. {
  1020. try
  1021. {
  1022. var queryParam = keyValue.ToJObject();
  1023. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1024. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  1025. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1026. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1027. decimal LOTQTY = minPackQty;
  1028. string Pre = CheckCode;
  1029. string sql = string.Empty;
  1030. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1031. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1032. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1033. string Identification = Guid.NewGuid().ToString();
  1034. string sqls = string.Empty;
  1035. string Colspan = "";
  1036. string str1 = "";
  1037. List<string> ExtensionIDList = new List<string>();
  1038. #region 装箱的功能
  1039. int createPackCount = Convert.ToInt32(queryParam["createPackCount"].ToString());//包装箱数 为0 则不生成
  1040. string VenCode = queryParam["VenCode"].ToString();
  1041. int PackCount = 0;//每箱放的数量
  1042. int Pack_YuShu = 0;//需要平摊的数量
  1043. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");//箱号代码的前缀
  1044. List<PackModel> List_Pack = new List<PackModel>();
  1045. int ZQty = 0;
  1046. if (createPackCount > 0)
  1047. {
  1048. Pack_YuShu = (int)(createPageCount % createPackCount); ;//最后一箱放的数量
  1049. if (Pack_YuShu == 0)
  1050. {
  1051. PackCount = (createPageCount / createPackCount);
  1052. }
  1053. else
  1054. {
  1055. PackCount = ((createPageCount - Pack_YuShu) / (createPackCount));
  1056. }
  1057. for (int jj = 0; jj < createPackCount; jj++)
  1058. {
  1059. object CARID = Guid.NewGuid();
  1060. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  1061. sql += @" INSERT INTO dbo.ICSContainer
  1062. ( ID,ContainerCode ,
  1063. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,
  1064. InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  1065. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint +
  1066. "','" + VenCode + "','WMS','" + CARID + "','" + Carton + "',1,1,1,1)";
  1067. PackModel PP = new PackModel();
  1068. PP.ID = CARID.ToString();
  1069. PP.PackCode = Carton;
  1070. if (jj < Pack_YuShu)
  1071. {
  1072. PP.FristBarIndex = ZQty;
  1073. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount));
  1074. }
  1075. else
  1076. {
  1077. PP.FristBarIndex = ZQty;
  1078. PP.LastBarIndex = ZQty + Convert.ToInt32(Convert.ToDouble(PackCount)) - 1;
  1079. }
  1080. ZQty += (PP.LastBarIndex - PP.FristBarIndex) + 1;
  1081. List_Pack.Add(PP);
  1082. }
  1083. }
  1084. #endregion
  1085. for (int i = 0; i < createPageCount; i++)
  1086. {
  1087. if (i + 1 == createPageCount)
  1088. {
  1089. if (minPackQty * createPageCount > thisCreateQty)
  1090. {
  1091. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1092. }
  1093. }
  1094. Colspan = queryParam["ProjectCode"].ToString() + "~" + queryParam["BatchCode"].ToString() + "~" + queryParam["Version"].ToString() + "~" + queryParam["Brand"].ToString() + "~" + queryParam["cFree1"].ToString() + "~" + queryParam["cFree2"].ToString() + "~" + queryParam["cFree3"].ToString() + "~" + queryParam["cFree4"].ToString() + "~" + queryParam["cFree5"].ToString() + "~" + queryParam["cFree6"].ToString() + "~" + queryParam["cFree7"].ToString() + "~" + queryParam["cFree8"].ToString() + "~" + queryParam["cFree9"].ToString() + "~" + queryParam["cFree10"].ToString();
  1095. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  1096. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  1097. bool flag = true;
  1098. foreach (var item in ExtensionIDList)
  1099. {
  1100. if (item == Colspan + WorkPoint)
  1101. {
  1102. flag = false;
  1103. }
  1104. }
  1105. if (ExtensionID == null && flag == true)
  1106. {
  1107. str1 = Guid.NewGuid().ToString();
  1108. 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)
  1109. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  1110. str1, Colspan, queryParam["ProjectCode"].ToString(), queryParam["BatchCode"].ToString(), queryParam["Version"].ToString(), queryParam["Brand"].ToString(), queryParam["cFree1"].ToString(), queryParam["cFree2"].ToString(), queryParam["cFree3"].ToString(), queryParam["cFree4"].ToString(), queryParam["cFree5"].ToString(), queryParam["cFree6"].ToString(), queryParam["cFree7"].ToString(), queryParam["cFree8"].ToString(), queryParam["cFree9"].ToString(), queryParam["cFree10"].ToString(),
  1111. MUSER, MUSERNAME, WorkPoints);
  1112. }
  1113. else if (ExtensionID != null)
  1114. {
  1115. str1 = ExtensionID.ToString();
  1116. }
  1117. ExtensionIDList.Add(Colspan + WorkPoint);
  1118. string LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  1119. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  1120. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  1121. LotNo, CheckCode, 1, MUSER, MUSERNAME, WorkPoints);
  1122. sql += string.Format(@"
  1123. insert into ICSInventoryLot
  1124. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  1125. values
  1126. (NEWID(),'{0}','{1}','{2}','{3}','{4}','{5}',204,'{6}','{7}',GETDATE(),'{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}')",
  1127. LotNo, queryParam["InvCode"].ToString(), PRODUCTDATE, queryParam["ExpirationDate"].ToString(), LOTQTY, str1, MUSER, MUSERNAME, WorkPoints, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY
  1128. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  1129. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  1130. //派纳盘点单生成的条码需要自动入库
  1131. sql += string.Format(@"
  1132. INSERT INTO ICSWareHouseLotInfo
  1133. (ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint)
  1134. values
  1135. (NEWID(),'{0}','{1}','{2}','{3}',{4},SYSDATETIME(),0,'{5}','{6}',SYSDATETIME(),'{7}')",
  1136. LotNo, queryParam["WHCode"].ToString(), queryParam["LocationCode"].ToString(), queryParam["InvCode"].ToString(), LOTQTY, MUSER, MUSERNAME, WorkPoint);
  1137. //盘点生成的条码需要写入盘点表中
  1138. sql += string.Format(@"
  1139. SELECT E.ID,B.TransCode AS CheckCode,A.LotNo,D.WarehouseCode,D.LocationCode
  1140. ,A.InvCode,C.BatchCode,D.Quantity,A.WorkPoint
  1141. INTO #TEMPLot{0}
  1142. FROM ICSInventoryLot A
  1143. LEFT JOIN ICSInventoryLotDetail B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
  1144. LEFT JOIN ICSExtension C ON C.ID=A.ExtensionID AND C.WorkPoint=A.WorkPoint
  1145. LEFT JOIN ICSWareHouseLotInfo D ON D.LotNo=A.LotNo AND D.WorkPoint=A.WorkPoint
  1146. LEFT JOIN ICSCheck E ON E.CheckCode=B.TransCode AND E.WorkPoint=B.WorkPoint
  1147. WHERE A.LotNo='{0}' AND A.WorkPoint='{1}'
  1148. UPDATE A SET A.Quantity+=B.Quantity
  1149. FROM ICSCheck A
  1150. INNER JOIN #TEMPLot{0} B ON B.CheckCode=A.CheckCode AND B.WorkPoint=A.WorkPoint
  1151. Insert into ICSCheckDetail
  1152. (ID,CheckID,LotNo,LocationCode,Quantity,Amount,PrimaryLocationCode,PrimaryQuantity,PrimaryAmount,ReplayLocationCode,ReplayQuantity
  1153. ,ReplayAmount,CheckLocationCode,CheckQuantity,CheckAmount,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  1154. SELECT NEWID(),ID,LotNo,LocationCode,Quantity,0,LocationCode,Quantity,0,'',0,0,'',0,0,'{2}','{3}'
  1155. ,GETDATE(),WorkPoint,1
  1156. FROM #TEMPLot{0}
  1157. IF Exists(SELECT A.CheckCode FROM ICSCheckIntermediate A
  1158. INNER JOIN #TEMPLot{0} B ON B.CheckCode=A.CheckCode AND B.InvCode=A.InvCode
  1159. AND B.BatchCode=A.BatchCode AND B.WorkPoint=A.WorkPoint)
  1160. BEGIN
  1161. update A SET A.InvQTY+=B.Quantity,A.PrimaryQTY+=B.Quantity
  1162. FROM ICSCheckIntermediate A
  1163. INNER JOIN #TEMPLot{0} B ON B.CheckCode=A.CheckCode AND B.InvCode=A.InvCode
  1164. AND B.BatchCode=A.BatchCode AND B.WorkPoint=A.WorkPoint
  1165. END
  1166. ELSE
  1167. BEGIN
  1168. INSERT INTO ICSCheckIntermediate
  1169. (ID,CheckCode,Status,InvCode,WHCode,BatchCode,InvQTY,PrimaryQTY,ReplayQTY,CheckQTY,MUSER,MUSERName,MTIME,WorkPoint)
  1170. SELECT NEWID(),CheckCode,2,InvCode,WarehouseCode,BatchCode,Quantity,Quantity,0,0,'{2}','{3}'
  1171. ,GETDATE(),WorkPoint
  1172. FROM #TEMPLot{0}
  1173. END
  1174. insert into ICSCheckIntermediateTable
  1175. (ID,CheckID,CheckNo,LotNo,LocationCode,Quantity,Amount,PrimaryLocationCode,PrimaryQuantity,PrimaryAmount,ReplayLocationCode,ReplayQuantity,ReplayAmount
  1176. ,CheckLocationCode,CheckQuantity,CheckAmount,CheckType,IsCheckDetail,IsWHUpdate,MUSER,MUSERName,MTIME,WorkPoint)
  1177. SELECT NEWID(),ID,CheckCode,LotNo,LocationCode,Quantity,0,LocationCode,Quantity,0,'',0,0
  1178. ,'',0,0,'',1,1,'{2}','{3}',GETDATE(),WorkPoint FROM #TEMPLot{0}
  1179. drop table #TEMPLot{0}",
  1180. LotNo, WorkPoint, MUSER, MUSERNAME);
  1181. sql += string.Format(@"
  1182. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1183. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1184. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1185. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1186. MTIME,WorkPoint)
  1187. SELECT NEWID(),'{2}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
  1188. '','',c.WarehouseCode,c.LocationCode,c.Quantity,
  1189. '','0','8','76','1',D.ID,
  1190. D.ID,D.CheckCode,1,'{3}' ,'{4}' ,
  1191. SYSDATETIME() ,a.WorkPoint
  1192. FROM ICSInventoryLot a
  1193. INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  1194. INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  1195. INNER JOIN ICSCheck D ON D.CheckCode=B.TransCode AND D.WorkPoint=B.WorkPoint
  1196. WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'",
  1197. LotNo, WorkPoint, Identification, MUSER, MUSERNAME);
  1198. sql += "\r\n";
  1199. //装箱的功能
  1200. if (List_Pack.Count > 0)
  1201. {
  1202. PackModel mm = new PackModel();
  1203. mm = List_Pack.Where(a => a.FristBarIndex <= i && a.LastBarIndex >= i).First();
  1204. sql += string.Format(@" INSERT INTO dbo.ICSContainerLot
  1205. ( ID ,ContainerID ,LotNo , MUSER ,MUSERName ,MTIME ,WorkPoint )
  1206. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' ) ", mm.ID, LotNo, MUSER, MUSERNAME, WorkPoint);
  1207. }
  1208. }
  1209. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1210. return count;
  1211. }
  1212. catch (Exception ex)
  1213. {
  1214. throw new Exception(ex.Message);
  1215. }
  1216. }
  1217. /// <summary>
  1218. /// 派纳盘点删除条码
  1219. /// </summary>
  1220. /// <param name="keyValue"></param>
  1221. /// <returns></returns>
  1222. public string DeleteItemLot(string keyValue)
  1223. {
  1224. try
  1225. {
  1226. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1227. string msg = string.Empty;
  1228. string sql = string.Format(@"select Type from ICSInventoryLot
  1229. where LotNo in ({0}) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1230. DataTable lotdt = SqlHelper.GetDataTableBySql(sql);
  1231. if (lotdt.Rows[0]["Type"].ToString() != "204")
  1232. {
  1233. msg = "所选条码中存在不是根据盘点单生成的条码,无法删除!";
  1234. }
  1235. else
  1236. {
  1237. if (string.IsNullOrEmpty(msg))
  1238. {
  1239. string errorlot = "";
  1240. string chksql = @"select LotNo from ICSWareHouseLotInfoLog
  1241. where LotNo in ({0}) and WorkPoint='{1}' and BusinessCode!='76'";
  1242. chksql = string.Format(chksql, keyValue.TrimEnd(','), WorkPoint);
  1243. DataTable chkdt = SqlHelper.GetDataTableBySql(chksql);
  1244. foreach (DataRow dr in chkdt.Rows)
  1245. {
  1246. errorlot += dr["LotNo"].ToString() + ",";
  1247. }
  1248. if (errorlot != "")
  1249. {
  1250. msg = "条码:" + errorlot.TrimEnd(',') + "生成后已进行过其他操作,无法删除!";
  1251. return msg;
  1252. }
  1253. string sqls = string.Format(@"
  1254. select B.InvCode,D.WarehouseCode,C.BatchCode,A.Quantity,A.PrimaryQuantity,A.ReplayQuantity,A.CheckQuantity
  1255. , A.CheckNo, A.WorkPoint
  1256. INTO #tempLot
  1257. from ICSCheckIntermediateTable A
  1258. INNER JOIN ICSInventoryLot B ON B.LotNo = A.LotNo AND B.WorkPoint = A.WorkPoint
  1259. INNER JOIN ICSExtension C ON C.ID = B.ExtensionID AND C.WorkPoint = B.WorkPoint
  1260. INNER JOIN ICSWareHouseLotInfo D ON D.LotNo = A.LotNo AND D.WorkPoint = A.WorkPoint
  1261. where A.LotNo IN({0}) AND A.WorkPoint = '{1}'
  1262. UPDATE A SET A.InvQTY -= B.Quantity, A.PrimaryQTY -= B.PrimaryQuantity, A.ReplayQTY -= B.ReplayQuantity
  1263. , A.CheckQTY -= B.CheckQuantity
  1264. FROM ICSCheckIntermediate A
  1265. INNER JOIN #tempLot B ON B.CheckNo=A.CheckCode AND B.InvCode=A.InvCode AND B.WarehouseCode=A.WHCode
  1266. AND B.BatchCode = A.BatchCode AND B.WorkPoint = A.WorkPoint
  1267. DROP TABLE #tempLot", keyValue.TrimEnd(','), WorkPoint);
  1268. sqls += string.Format(@"
  1269. DELETE FROM ICSCheckIntermediateTable WHERE LotNo IN ({0}) and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
  1270. sqls += string.Format(@"
  1271. UPDATE A set A.Quantity-=B.Quantity
  1272. FROM ICSCheck A
  1273. INNER JOIN ICSCheckDetail B ON B.CheckID=A.ID AND B.WorkPoint=A.WorkPoint
  1274. WHERE B.LotNo IN ({0}) AND B.WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
  1275. sqls += string.Format(@"
  1276. DELETE FROM ICSCheckDetail WHERE LotNo IN ({0}) and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
  1277. sqls += string.Format(@"
  1278. DELETE FROM ICSWareHouseLotInfo WHERE LotNo IN ({0}) and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
  1279. sqls += string.Format(@"
  1280. DELETE FROM ICSWareHouseLotInfoLog WHERE LotNo IN ({0}) and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
  1281. sqls += string.Format(@"
  1282. DELETE FROM ICSInventoryLotDetail WHERE LotNO IN (select LotNO from ICSInventoryLot where ID in ({0}) ) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1283. sqls += string.Format(@"
  1284. DELETE FROM dbo.ICSContainerLot WHERE LotNO IN (select LotNO from ICSInventoryLot where ID in ({0}) ) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);//删除箱子 条码对应关系
  1285. sqls += string.Format(@"
  1286. DELETE FROM dbo.ICSInventoryLot WHERE ID IN ({0}) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1287. SqlHelper.CmdExecuteNonQueryLi(sqls);
  1288. }
  1289. }
  1290. return msg;
  1291. }
  1292. catch (Exception ex)
  1293. {
  1294. return ex.Message;
  1295. }
  1296. }
  1297. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  1298. {
  1299. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  1300. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  1301. //return Repository().FindTableBySql(sql.ToString());
  1302. return SqlHelper.ExecuteScalar(sql).ToString();
  1303. //return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  1304. }
  1305. }
  1306. }