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.

770 lines
35 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. namespace NFine.Application.WMS
  18. {
  19. public class BlitemApp : RepositoryFactory<ICSVendor>
  20. {
  21. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  22. {
  23. DataTable dt = new DataTable();
  24. var queryParam = queryJson.ToJObject();
  25. List<DbParameter> parameter = new List<DbParameter>();
  26. #region [SQL]
  27. string sql = @"SELECT ID, CheckCode, SelectLevel, Status, Quantity, Amount, MUSER, MUSERName, MTIME, WorkPoint
  28. FROM
  29. dbo.ICSCheck";
  30. sql += " WHERE 1=1";
  31. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  32. #endregion
  33. if (!string.IsNullOrWhiteSpace(queryJson))
  34. {
  35. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  36. {
  37. sql += " and CheckCode like '%" + queryParam["POCode"].ToString() + "%' ";
  38. }
  39. }
  40. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  41. {
  42. sql += " and WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  43. }
  44. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  45. {
  46. sql += " and VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  47. }
  48. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  49. }
  50. public DataTable GetSubGridJson(string ID, string Inventory, string InvCode,string LotNo, ref Pagination jqgridparam)
  51. {
  52. DataTable dt = new DataTable();
  53. //var queryParam = queryJson.ToJObject();
  54. List<DbParameter> parameter = new List<DbParameter>();
  55. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  56. string sql = @" SELECT distinct a.ID, b.InvCode,
  57. b.InvName ,
  58. b.InvUnit,
  59. b.InvStd ,
  60. a.LotNo,
  61. e.BatchCode,
  62. a.Quantity,
  63. d.WarehouseCode,
  64. d.LocationCode,
  65. f.LocationName,
  66. a.PrimaryQuantity,
  67. a.PrimaryAmount,
  68. a.ReplayQuantity,
  69. a.ReplayAmount,
  70. a.CheckQuantity,
  71. a.CheckAmount,
  72. a.PrimaryQuantity- a.Quantity as DifferenceNum,
  73. a.ReplayQuantity- a.Quantity as ReplayDifferenceNum,
  74. a.CheckQuantity- a.Quantity as CheckDifferenceNum,
  75. d.LockQuantity,e.Colspan ,e.ProjectCode ,e.Version ,e.Brand , e.cFree1 ,e.cFree2 ,e.cFree3 ,e.cFree4
  76. ,e.cFree5 ,e.cFree6 ,e.cFree7 ,e.cFree8 ,e.cFree9 ,e.cFree10 ,b.EATTRIBUTE1,b.EATTRIBUTE2,b.EATTRIBUTE3,b.EATTRIBUTE4,b.EATTRIBUTE5,b.EATTRIBUTE6,b.EATTRIBUTE7,b.EATTRIBUTE8,
  77. b.EATTRIBUTE9,b.EATTRIBUTE10
  78. FROM ICSCheckDetail a
  79. left join ICSInventoryLot c on a.LotNo=c.LotNO and a.WorkPoint=c.WorkPoint
  80. left join ICSInventory b on c.InvCode=b.InvCode AND c.WorkPoint=b.WorkPoint
  81. left join ICSWareHouseLotInfo d on c.LotNO=d.LotNO AND c.WorkPoint=d.WorkPoint
  82. left join dbo.ICSExtension e on c.ExtensionID=e.ID and c.WorkPoint=e.WorkPoint
  83. left join ICSLocation f on f.LocationCode=d.LocationCode and f.WorkPoint=d.WorkPoint
  84. WHERE a.CheckID='" + ID + "' and a.WorkPoint in ('" + WorkPoint + "')";
  85. if (!string.IsNullOrWhiteSpace(InvCode))
  86. {
  87. sql += " and b.InvCode like '%" + InvCode + "%' ";
  88. }
  89. if (!string.IsNullOrWhiteSpace(LotNo))
  90. {
  91. sql += " and a.LotNo like '%" + LotNo + "%' ";
  92. }
  93. if (Inventory=="1")
  94. {
  95. sql += "and a.Quantity>0";
  96. }
  97. else if (Inventory == "2")
  98. {
  99. sql += "and a.Quantity<=0";
  100. }
  101. else
  102. {
  103. }
  104. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  105. }
  106. public string DeleteICSCheckDetail(string ID)
  107. {
  108. //站点信息
  109. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  110. string msg = "";
  111. string sql = string.Empty;
  112. try
  113. {
  114. sql = string.Format(@"DELETE FROM ICSCheckDetail WHERE ID ='{0}' and WorkPoint ='{1}'", ID, WorkPoint);
  115. SqlHelper.ExecuteNonQuery(sql);
  116. }
  117. catch (Exception ex)
  118. {
  119. throw new Exception(ex.Message);
  120. }
  121. return msg;
  122. }
  123. /// <summary>
  124. /// 获取仓库
  125. /// </summary>
  126. /// <returns></returns>
  127. public DataTable GetWHCode()
  128. {
  129. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  130. string sql = @" select '' as ID,'' as WarehouseName union all
  131. SELECT ID+'|'+WarehouseCode,WarehouseName FROM ICSWarehouse WITH (NOLOCK) WHERE WorkPoint = '{0}' ";
  132. sql = string.Format(sql, WorkPoint);
  133. //string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  134. //if (role != "admin")
  135. //{
  136. // sql += " and b.WorkPoint='" + WorkPoint + "'";
  137. //}
  138. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  139. return dt;
  140. }
  141. public DataTable GetQU(string WHCodeID)
  142. {
  143. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  144. string sql = @" select '' as QUValue,'' as QUName union all
  145. SELECT Region as QUValue,Region+'区' as QUName FROM ICSLocation WITH (NOLOCK) WHERE WHID = '{0}' AND WorkPoint='{1}'
  146. ";
  147. sql = string.Format(sql, WHCodeID, WorkPoint);
  148. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  149. return dt;
  150. }
  151. //public DataTable GetQU(string WHCodeID)
  152. //{
  153. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  154. // string sql = @"SELECT Region as QUValue,Region+'区' as QUName FROM ICSLocation WHERE WHID = '{0}' AND WorkPoint='{1}'";
  155. // sql = string.Format(sql, WHCodeID, WorkPoint);
  156. // DataTable dt = Repository().FindTableBySql(sql);
  157. // return dt;
  158. //}
  159. public DataTable GetPai(string WHCodeID, string Qu)
  160. {
  161. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  162. string sql = @" select '' as PaiValue,'' as PaiName union all
  163. SELECT Row as PaiValue,Row+'排' as PaiName FROM ICSLocation WITH (NOLOCK) WHERE WHID = '{0}' AND WorkPoint='{1}' and Region='{2}'
  164. ";
  165. sql = string.Format(sql, WHCodeID, WorkPoint, Qu);
  166. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  167. return dt;
  168. }
  169. public DataTable GetHuoJia(string WHCodeID, string Qu, string Pai)
  170. {
  171. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  172. string sql = @" select '' as HuoJiaValue,'' as HuoJiaName union all
  173. SELECT GoodsShelf as HuoJiaValue,GoodsShelf +'' as HuoJiaName FROM ICSLocation WITH (NOLOCK) WHERE WHID = '{0}' AND WorkPoint='{1}' and Region='{2}' and Row='{3}'
  174. ";
  175. sql = string.Format(sql, WHCodeID, WorkPoint, Qu, Pai);
  176. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  177. return dt;
  178. }
  179. public DataTable GetCeng(string WHCodeID, string Qu, string Pai, string HuoJia)
  180. {
  181. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  182. string sql = @" select '' as CengValue,'' as CengName union all
  183. 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}'
  184. ";
  185. sql = string.Format(sql, WHCodeID, WorkPoint, Qu, Pai, HuoJia);
  186. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  187. return dt;
  188. }
  189. public DataTable GetGe(string WHCodeID, string Qu, string Pai, string HuoJia, string Ceng)
  190. {
  191. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  192. string sql = @" select '' as GeValue,'' as GeName union all
  193. 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}'
  194. ";
  195. sql = string.Format(sql, WHCodeID, WorkPoint, Qu, Pai, HuoJia, Ceng);
  196. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  197. return dt;
  198. }
  199. public string AddICSCheck(string Parameter)
  200. {
  201. string msg = "";
  202. string APIURL = ConfigurationManager.ConnectionStrings["APIURL"].ConnectionString + "Check/Create";
  203. string result = HttpPost(APIURL, Parameter);
  204. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  205. string MessAge = Obj["Message"].ToString();
  206. string Success = Obj["Success"].ToString();
  207. if (Success.ToUpper() == "FALSE")
  208. {
  209. msg = MessAge;
  210. }
  211. return msg;
  212. }
  213. //接口api解析
  214. public static string HttpPost(string url, string body)
  215. {
  216. try
  217. {
  218. Encoding encoding = Encoding.UTF8;
  219. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  220. request.Method = "POST";
  221. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  222. request.ContentType = "application/json; charset=utf-8";
  223. byte[] buffer = encoding.GetBytes(body);
  224. request.ContentLength = buffer.Length;
  225. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  226. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  227. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  228. {
  229. return reader.ReadToEnd();
  230. }
  231. }
  232. catch (WebException ex)
  233. {
  234. throw new Exception(ex.Message);
  235. }
  236. }
  237. public string DeleteICSCheck(string keyValue)
  238. {
  239. //站点信息
  240. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  241. string msg = "";
  242. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  243. string sql = string.Empty;
  244. try
  245. {
  246. sql += string.Format(@" IF EXISTS(SELECT CheckID FROM ICSCheckDetail WHERE CheckID in ({0}) and EATTRIBUTE1 ='1' )
  247. BEGIN
  248. RAISERROR(',',16,1);
  249. RETURN
  250. END
  251. DELETE FROM dbo.ICSCheck WHERE ID IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  252. sql += string.Format(@"DELETE FROM dbo.ICSCheckDetail WHERE CheckID IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  253. SqlHelper.ExecuteNonQuery(sql);
  254. }
  255. catch (Exception ex)
  256. {
  257. msg = ex.Message;
  258. }
  259. return msg;
  260. }
  261. public DataTable GetGridJsonWarehouse(string queryJson, ref Pagination jqgridparam)
  262. {
  263. DataTable dt = new DataTable();
  264. var queryParam = queryJson.ToJObject();
  265. List<DbParameter> parameter = new List<DbParameter>();
  266. #region [SQL]
  267. string sql = @"select distinct a.ID, a.WarehouseCode as SelectLevel ,a.WarehouseCode,a.WarehouseName
  268. from ICSWarehouse a ";
  269. #endregion
  270. if (!string.IsNullOrWhiteSpace(queryJson)&& !string.IsNullOrWhiteSpace(queryParam["StartDate"].ToString())&& !string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  271. {
  272. 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 ";
  273. if (!string.IsNullOrWhiteSpace(queryParam["StartDate"].ToString()))
  274. {
  275. sql += " and c.MTIME >= '" + queryParam["StartDate"].ToString() + "' ";
  276. }
  277. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  278. {
  279. sql += " and c.MTIME < '" + queryParam["EndDate"].ToString() + "' ";
  280. }
  281. }
  282. else
  283. {
  284. sql += " WHERE 1=1";
  285. }
  286. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  287. {
  288. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  289. }
  290. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  291. {
  292. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  293. }
  294. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  295. }
  296. public DataTable GetSubGridJsonRegion(string ID, ref Pagination jqgridparam)
  297. {
  298. DataTable dt = new DataTable();
  299. //var queryParam = queryJson.ToJObject();
  300. List<DbParameter> parameter = new List<DbParameter>();
  301. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  302. string sql = @" select distinct b.WarehouseCode+'-'+a.Region as SelectLevelAA, dbo.GetSelectLevel(a.LocationCode,b.WarehouseCode,a.Region) as SelectLevel, a.WHID, b.WarehouseCode,a.Region from ICSLocation a left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
  303. WHERE a.WHID='" + ID + "' and a.WorkPoint in ('" + WorkPoint + "')";
  304. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  305. }
  306. public DataTable GetSubGridJsonRow(string WHID, string Region, ref Pagination jqgridparam)
  307. {
  308. DataTable dt = new DataTable();
  309. //var queryParam = queryJson.ToJObject();
  310. List<DbParameter> parameter = new List<DbParameter>();
  311. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  312. string sql = @" select distinct isnull(b.WarehouseCode,'')+'-'+isnull(a.Region,'')+'-'+isnull(a.Row,'') as SelectLevelAA,
  313. dbo.GetSelectLevel(a.LocationCode,b.WarehouseCode,a.Region+'-'+a.Row) as SelectLevel,
  314. a.WHID, b.WarehouseCode,a.Region ,a.Row
  315. from ICSLocation a left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
  316. WHERE a.WHID='" + WHID + "' and a.Region='" + Region + "' and isnull(a.Row,'') !='' and a.WorkPoint in ('" + WorkPoint + "')";
  317. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  318. }
  319. public DataTable GetSubGridJsonGoodsShelf(string WHID, string Region, string Row, ref Pagination jqgridparam)
  320. {
  321. DataTable dt = new DataTable();
  322. //var queryParam = queryJson.ToJObject();
  323. List<DbParameter> parameter = new List<DbParameter>();
  324. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  325. string sql = @" select distinct isnull(b.WarehouseCode,'')+'-'+isnull(a.Region,'')+'-'+isnull(a.Row,'')+'-'+isnull(a.GoodsShelf,'') as SelectLevelAA,
  326. dbo.GetSelectLevel(a.LocationCode,b.WarehouseCode,a.Region+'-'+a.Row+'-'+a.GoodsShelf) as SelectLevel,
  327. a.WHID, b.WarehouseCode,a.Region ,a.Row,a.GoodsShelf
  328. from ICSLocation a left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
  329. WHERE a.WHID='" + WHID + "' and a.Region='" + Region + "' and a.Row='" + Row + "' and isnull(a.GoodsShelf,'') !='' and a.WorkPoint in ('" + WorkPoint + "')";
  330. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  331. }
  332. public DataTable GetSubGridJsonTier(string WHID, string Region, string Row, string GoodsShelf, ref Pagination jqgridparam)
  333. {
  334. DataTable dt = new DataTable();
  335. //var queryParam = queryJson.ToJObject();
  336. List<DbParameter> parameter = new List<DbParameter>();
  337. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  338. string sql = @" select distinct isnull(b.WarehouseCode,'')+'-'+isnull(a.Region,'')+'-'+isnull(a.Row,'')+'-'+isnull(a.GoodsShelf,'') +'-'+isnull(a.Tier,'') as SelectLevelAA,
  339. dbo.GetSelectLevel(a.LocationCode,b.WarehouseCode,a.Region+'-'+a.Row+'-'+a.GoodsShelf+'-'+a.Tier) as SelectLevel,
  340. a.WHID, b.WarehouseCode,a.Region ,a.Row,a.GoodsShelf ,a.Tier
  341. from ICSLocation a left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
  342. 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 + "')";
  343. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  344. }
  345. public DataTable GetSubGridJsonGrid(string WHID, string Region, string Row, string GoodsShelf, string Tier, ref Pagination jqgridparam)
  346. {
  347. DataTable dt = new DataTable();
  348. //var queryParam = queryJson.ToJObject();
  349. List<DbParameter> parameter = new List<DbParameter>();
  350. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  351. string sql = @" select distinct isnull(b.WarehouseCode,'')+'-'+isnull(a.Region,'')+'-'+isnull(a.Row,'')+'-'+isnull(a.GoodsShelf,'') +'-'+isnull(a.Tier,'')+'-'+isnull(a.Grid,'') as SelectLevelAA,
  352. dbo.GetSelectLevel(a.LocationCode,b.WarehouseCode,a.Region+'-'+a.Row+'-'+a.GoodsShelf+'-'+a.Tier+'-'+a.Grid) as SelectLevel,
  353. a.WHID, b.WarehouseCode,a.Region ,a.Row ,a.GoodsShelf ,a.Tier,a.Grid
  354. from ICSLocation a left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint
  355. 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 + "')";
  356. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  357. }
  358. public DataTable StatementExportAll(string ID,string Inventory,string InvCode)
  359. {
  360. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  361. string sql = string.Empty;
  362. object Figure = GetDecimalDigits();
  363. string TableCode = string.Empty;
  364. #region sql语句
  365. sql = @"SELECT distinct e.CheckCode as 盘点单号, a.LotNo as 条码,
  366. f.BatchCode as ,
  367. b.InvCode as ,
  368. b.InvName as ,
  369. b.InvStd as ,
  370. b.InvUnit as ,
  371. CAST(a.Quantity AS DECIMAL(18,{0})) as ,
  372. d.WarehouseCode as ,
  373. d.LocationCode as ,
  374. g.LocationName as ,
  375. CAST(a.PrimaryQuantity AS DECIMAL(18,{0})) as ,
  376. CAST(a.PrimaryAmount AS DECIMAL(18,{0})) as ,
  377. a.PrimaryQuantity- a.Quantity as ,
  378. CAST(a.ReplayQuantity as DECIMAL(18,{0})) as ,
  379. CAST(a.ReplayAmount as DECIMAL(18,{0})) as ,
  380. a.ReplayQuantity- a.Quantity as ,
  381. CAST(a.CheckQuantity as DECIMAL(18,{0})) as ,
  382. CAST(a.CheckAmount as DECIMAL(18,{0})) as ,
  383. a.CheckQuantity- a.Quantity as ,
  384. a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  385. a.EATTRIBUTE9,a.EATTRIBUTE10
  386. FROM ICSCheck e
  387. left join dbo.ICSCheckDetail a on a.CheckID=e.ID and a.WorkPoint=e.WorkPoint
  388. left join ICSInventoryLot c on a.LotNo=c.LotNO and a.WorkPoint=c.WorkPoint
  389. left join ICSInventory b on c.InvCode=b.InvCode AND c.WorkPoint=b.WorkPoint
  390. left join ICSWareHouseLotInfo d on c.LotNO=d.LotNO AND c.WorkPoint=d.WorkPoint
  391. left join dbo.ICSExtension f on c.ExtensionID=f.ID and c.WorkPoint=f.WorkPoint
  392. left join ICSLocation g on g.LocationCode=d.LocationCode and g.WorkPoint=d.WorkPoint
  393. WHERE 1=1 and e.CheckCode in (" + ID.TrimEnd(',') + ") ";
  394. TableCode = "ICSCheckDetail";
  395. #endregion
  396. sql = sql + " and a.WorkPoint='{1}'";
  397. if (!string.IsNullOrWhiteSpace(InvCode))
  398. {
  399. sql += " and b.InvCode like '%" + InvCode + "%' ";
  400. }
  401. if (Inventory == "1")
  402. {
  403. sql += "and a.Quantity>0";
  404. }
  405. else if (Inventory == "2")
  406. {
  407. sql += "and a.Quantity<=0";
  408. }
  409. sql += "order by d.WarehouseCode asc ,d.LocationCode asc";
  410. sql = string.Format(sql, Figure, WorkPoint);
  411. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  412. DataTable dtColumn = ColumnEnable(TableCode);
  413. foreach (DataRow drC in dtColumn.Rows)
  414. {
  415. if (dt.Columns.Contains(drC["ColumnCode"].ToString()))
  416. {
  417. if (!Convert.ToBoolean(drC["Enable"]))
  418. {
  419. dt.Columns.Remove(drC["ColumnCode"].ToString());
  420. }
  421. else if (Convert.ToBoolean(drC["Enable"]))
  422. {
  423. dt.Columns[drC["ColumnCode"].ToString()].ColumnName = drC["Name"].ToString();
  424. }
  425. }
  426. }
  427. return dt;
  428. }
  429. public DataTable ColumnEnable(string TableCode)
  430. {
  431. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  432. string sql = string.Empty;
  433. sql = @"select ColumnCode,Name,Enable from ICSColumnEnable where TableCode='{0}' and WorkPoint='{1}'";
  434. sql = string.Format(sql, TableCode, WorkPoint);
  435. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  436. return dt;
  437. }
  438. public object GetDecimalDigits()
  439. {
  440. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  441. try
  442. {
  443. string sql = string.Empty;
  444. sql = @"select Figure from ICSConfiguration where Code='Figure001' and Enable='1' and WorkPoint='" + WorkPoint + "'";
  445. object Figure = SqlHelper.ExecuteScalar(sql);
  446. return Figure;
  447. }
  448. catch (Exception ex)
  449. {
  450. throw new Exception(ex.Message.ToString());
  451. }
  452. }
  453. /// <summary>
  454. /// 按照物料显示数据
  455. /// </summary>
  456. /// <param name="queryJson"></param>
  457. /// <param name="jqgridparam"></param>
  458. /// <returns></returns>
  459. public DataTable GetGridJsonInv(string queryJson, ref Pagination jqgridparam)
  460. {
  461. DataTable dt = new DataTable();
  462. var queryParam = queryJson.ToJObject();
  463. List<DbParameter> parameter = new List<DbParameter>();
  464. #region [SQL]
  465. string sql = @"select DISTINCT a.ID ,a.InvName,a.InvStd,a.InvCode,a.InvUnit from ICSWareHouseLotInfo b
  466. INNER JOIN ICSInventory a ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint ";
  467. sql += " WHERE 1=1";
  468. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  469. #endregion
  470. if (!string.IsNullOrWhiteSpace(queryJson))
  471. {
  472. //if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  473. //{
  474. // sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  475. //}
  476. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  477. {
  478. string[] values = queryParam["InvCode"].ToString().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  479. string InvCode = "'" + string.Join("','", values) + "'";
  480. if (values.Length>1)
  481. {
  482. sql += " and a.InvCode in (" + InvCode + ") ";
  483. }
  484. else
  485. {
  486. sql += " and a.InvCode like '%"+ queryParam["InvCode"].ToString() + "%' ";
  487. }
  488. }
  489. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  490. {
  491. sql += " and a.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  492. }
  493. if (!string.IsNullOrWhiteSpace(queryParam["InvStd"].ToString()))
  494. {
  495. sql += " and a.InvStd like '%" + queryParam["InvStd"].ToString() + "%' ";
  496. }
  497. }
  498. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  499. {
  500. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  501. }
  502. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  503. }
  504. public string AuditICSCheck(string keyValue)
  505. {
  506. string msg = "";
  507. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  508. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  509. try
  510. {
  511. string connString = SqlHelper.DataCenterConnString;
  512. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  513. conn.Open();
  514. SqlTransaction sqlTran = conn.BeginTransaction();
  515. SqlCommand cmd = new SqlCommand();
  516. cmd.Transaction = sqlTran;
  517. cmd.Connection = conn;
  518. try
  519. {
  520. string sql = @"select a.WorkPoint,e.InvCode,f.WarehouseCode as WHCode ,
  521. sum(isnull(a.PrimaryQuantity,0))-sum(isnull(g.Quantity,0)) as Num
  522. ,c.BatchCode
  523. INTO #TempERP
  524. from ICSCheckDetail a
  525. left join ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  526. left join dbo.ICSInventory e on b.InvCode=e.InvCode and b.WorkPoint=e.WorkPoint
  527. left join ICSExtension c on b.ExtensionID=c.ID and a.WorkPoint=c.WorkPoint
  528. left join dbo.ICSWareHouseLotInfo g on b.LotNo=g.LotNo and b.WorkPoint=g.WorkPoint
  529. left join dbo.ICSLocation d on g.LocationCode=d.LocationCode and a.WorkPoint=d.WorkPoint
  530. left join dbo.ICSWarehouse f on d.WHID=f.ID and d.WorkPoint=f.WorkPoint
  531. where a.CheckID in ({0}) and a.WorkPoint='{1}'
  532. group by a.WorkPoint,e.InvCode,f.WarehouseCode,c.BatchCode
  533. select distinct WorkPoint as Costre,WorkPoint FROM #TempERP
  534. select WorkPoint as Costre, InvCode,WHCode,Num as Quantity ,'0' as Amount ,BatchCode FROM #TempERP where Num<>0
  535. DROP TABLE #TempERP";
  536. sql = string.Format(sql, keyValue.TrimEnd(','), WorkPoint);
  537. DataSet DSet = SqlCommandHelper.SQlReturnDataSet(sql, cmd);
  538. string Inputstr = SqlHelper.DataSetToJson(DSet, "details", "Costre");
  539. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "CheckDiffDoc/Create";
  540. string result = HttpPost(APIURL, Inputstr);
  541. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  542. string MessAge = Obj["Message"].ToString();
  543. string Success = Obj["Success"].ToString();
  544. string ERPSql = "";
  545. if (Success.ToUpper() == "FALSE")
  546. {
  547. throw new Exception("ERP接口调用失败:" + MessAge);
  548. }
  549. else
  550. {
  551. try
  552. {
  553. JArray res = (JArray)JsonConvert.DeserializeObject(Obj["Data"].ToString());
  554. foreach (var item in res)
  555. {
  556. JObject jo = (JObject)item;
  557. ERPSql = @"update ICSCheck set Status='3' ,EATTRIBUTE1='"+ jo ["ID"].ToString()+ "' where ID in ("+ keyValue.TrimEnd(',') + ") ";
  558. //JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
  559. //foreach (var detail in resdetail)
  560. //{
  561. // JObject det = (JObject)detail;
  562. // ERPSql += @"UPDATE a set ERPID='{3}',ERPDetailID='{4}',ERPCode='{5}',ERPSequence='{6}',ERPUpload='1'
  563. // from ICSWareHouseLotInfoLog a
  564. // inner join ICSMTDOC b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  565. // where b.MTDOCCode='{0}' and b.Sequence='{1}' and a.Identification='{2}'";
  566. // ERPSql += @" update ICSMTDOC set MTDOCID='{3}',MTDOCDetailID='{4}' where MTDOCCode='{0}' and Sequence='{1}'";
  567. // ERPSql = string.Format(ERPSql, MTDOCCode, det["Sequence"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["MTCode"].ToString(), det["Sequence"].ToString());
  568. //}
  569. }
  570. SqlCommandHelper.CmdExecuteNonQuery(ERPSql, cmd);
  571. }
  572. catch (Exception ex)
  573. {
  574. msg = ex.Message;
  575. }
  576. }
  577. cmd.Transaction.Commit();
  578. //return dt;
  579. }
  580. catch (Exception ex)
  581. {
  582. cmd.Transaction.Rollback();
  583. msg = ex.Message;
  584. }
  585. finally
  586. {
  587. if (conn.State == ConnectionState.Open)
  588. {
  589. conn.Close();
  590. }
  591. conn.Dispose();
  592. }
  593. }
  594. catch (Exception ex)
  595. {
  596. msg = ex.Message;
  597. }
  598. return msg;
  599. }
  600. public string AuditSkipLot(string keyValue)
  601. {
  602. //站点信息
  603. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  604. string msg = "";
  605. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  606. string sql = string.Empty;
  607. try
  608. {
  609. sql += string.Format(@" update A SET A.Quantity=0
  610. FROM ICSWareHouseLotInfo A
  611. INNER JOIN ICSCheckDetail B ON B.LotNo=A.LotNo AND B.WorkPoint=A.WorkPoint
  612. INNER JOIN ICSCheck C ON C.ID=B.CheckID AND C.WorkPoint=B.WorkPoint
  613. WHERE ISNULL(B.EATTRIBUTE1,0)=0 AND ISNULL(B.EATTRIBUTE2,0)=0
  614. AND ISNULL(B.EATTRIBUTE3,0)=0 AND C.ID IN ({0}) AND C.WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
  615. SqlHelper.ExecuteNonQuery(sql);
  616. }
  617. catch (Exception ex)
  618. {
  619. msg = ex.Message;
  620. }
  621. return msg;
  622. }
  623. /// <summary>
  624. /// 按照备用字段9(客户料号)显示数据 金豪特有 其他项目如果不是字段相同不要在前台配置此按钮
  625. /// </summary>
  626. /// <param name="queryJson"></param>
  627. /// <param name="jqgridparam"></param>
  628. /// <returns></returns>
  629. public DataTable GetGridJsonCustomerInvJH(string queryJson, ref Pagination jqgridparam)
  630. {
  631. DataTable dt = new DataTable();
  632. var queryParam = queryJson.ToJObject();
  633. List<DbParameter> parameter = new List<DbParameter>();
  634. #region [SQL]
  635. string sql = @"select DISTINCT a.ID ,a.InvName,a.InvStd,a.InvCode,a.InvUnit,a.EATTRIBUTE9 AS CustomerInvCode from ICSWareHouseLotInfo b
  636. INNER JOIN ICSInventory a ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint ";
  637. sql += " WHERE 1=1 AND ISNULL(a.EATTRIBUTE9,'')!='' ";
  638. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  639. #endregion
  640. if (!string.IsNullOrWhiteSpace(queryJson))
  641. {
  642. if (!string.IsNullOrWhiteSpace(queryParam["CustomerInvCode"].ToString()))
  643. {
  644. string[] values = queryParam["CustomerInvCode"].ToString().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
  645. string CustomerInvCode = "'" + string.Join("','", values) + "'";
  646. if (values.Length > 1)
  647. {
  648. sql += " and a.EATTRIBUTE9 in (" + CustomerInvCode + ") ";
  649. }
  650. else
  651. {
  652. sql += " and a.EATTRIBUTE9 like '%" + queryParam["CustomerInvCode"].ToString() + "%' ";
  653. }
  654. }
  655. }
  656. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  657. {
  658. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  659. }
  660. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  661. }
  662. }
  663. }