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.

785 lines
40 KiB

3 weeks ago
  1. using Newtonsoft.Json.Linq;
  2. using Newtonsoft.Json;
  3. using NFine.Code;
  4. using NFine.Data.Extensions;
  5. using NFine.Domain._03_Entity.SRM;
  6. using NFine.Repository;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Configuration;
  10. using System.Data;
  11. using System.Data.Common;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using System.Threading;
  16. using System.Reflection.Emit;
  17. using NFine.Application.WMS;
  18. using System.Net;
  19. using System.IO;
  20. using System.Reflection;
  21. namespace NFine.Application.WMS
  22. {
  23. public class ICSSDNALLApp : RepositoryFactory<ICSVendor>
  24. {
  25. public static DataTable Invmes = new DataTable();
  26. PickMaterialApp App = new PickMaterialApp();
  27. DHAY.ICSAccessoriesMOIApplyApp iCSAccessoriesMOIApplyApp = new DHAY.ICSAccessoriesMOIApplyApp();
  28. #region 删除销售发货单
  29. public string DeleteICSSDN(string keyValue)
  30. {
  31. //站点信息
  32. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  33. string msg = "";
  34. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  35. string sql = string.Empty;
  36. sql += string.Format(@"If EXISTS (SELECT ID FROM ICSSDN WHERE Isnull(SDNQuantity,0)>0 AND WorkPoint = '{WorkPoint}' and SDNCode = '{data.Code}' )
  37. BEGIN
  38. RAISERROR('', 16, 1);
  39. RETURN
  40. END;
  41. UPDATE b SET b.SOQuantity=b.SOQuantity-a.Quantity FROM ICSSO b
  42. INNER JOIN (SELECT Sum(Quantity) Quantity,SOCode,SOSequence,WorkPoint,SDNCode FROM ICSSDN WHERE SDNCode = '{data.Code}'
  43. GROUP BY SOCode,SOSequence,SDNCode,WorkPoint ) a ON a.SOCode=b.SOCode AND a.SOSequence=b.Sequence AND a.WorkPoint=b.WorkPoint WHERE a.SDNCode = '{data.Code}';
  44. DELETE FROM dbo.ICSSDN WHERE SDNCode IN ({0}) and WorkPoint ='{1}'", keyValue.TrimEnd(','), WorkPoint);
  45. try
  46. {
  47. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  48. {
  49. }
  50. }
  51. catch (Exception ex)
  52. {
  53. throw new Exception(ex.Message);
  54. }
  55. return msg;
  56. }
  57. #endregion
  58. #region 修改
  59. public string UpdateICSSDN(string ICSASN)
  60. {
  61. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  62. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  63. string msg = "";
  64. try
  65. {
  66. // 获取解析后的数据
  67. JsonData data = JsonConvert.DeserializeObject<JsonData>(ICSASN);
  68. string sql = $@"If EXISTS (SELECT ID FROM ICSSDN WHERE Isnull(SDNQuantity,0)>0 AND WorkPoint = '{WorkPoint}' and SDNCode = '{data.Code}' )
  69. BEGIN
  70. RAISERROR('', 16, 1);
  71. RETURN
  72. END;
  73. UPDATE b SET b.SOQuantity=b.SOQuantity-a.Quantity FROM ICSSO b
  74. INNER JOIN (SELECT Sum(Quantity) Quantity,SOCode,SOSequence,WorkPoint,SDNCode FROM ICSSDN WHERE SDNCode = '{data.Code}'
  75. GROUP BY SOCode,SOSequence,SDNCode,WorkPoint ) a ON a.SOCode=b.SOCode AND a.SOSequence=b.Sequence AND a.WorkPoint=b.WorkPoint WHERE a.SDNCode = '{data.Code}';
  76. delete from ICSSDN where SDNCode = '{data.Code}'; ";
  77. string str1 = "";
  78. List<string> ExtensionIDList = new List<string>();
  79. string cus = string.Empty;
  80. string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  81. foreach (var detail in data.Detail)
  82. {
  83. if (cus.IsEmpty())
  84. {
  85. cus = detail.CusCode;
  86. }
  87. else
  88. {
  89. if (cus != detail.CusCode)
  90. {
  91. throw (new Exception("请选择相同的客户!"));
  92. }
  93. }
  94. //获取物料的可用数量,判断当前创建单据数量
  95. decimal invCount = iCSAccessoriesMOIApplyApp.GetInvCodeCount(detail.InvCode, "", "");
  96. if (invCount < detail.Quantity)
  97. {
  98. throw new Exception($"物料{detail.InvCode}创建单据数量:{detail.Quantity}不能大于库存可用量:{invCount}");
  99. }
  100. string Colspan = detail.ProjectCode + "~" + detail.BatchCode + "~" + detail.Version + "~" + detail.Brand + "~" + detail.cFree1 + "~" + detail.cFree2 + "~" + detail.cFree3 + "~" + detail.cFree4 + "~" + detail.cFree5 + "~" + detail.cFree6 + "~" + detail.cFree7 + "~" + detail.cFree8 + "~" + detail.cFree9 + "~" + detail.cFree10;
  101. string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  102. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  103. bool flag = true;
  104. foreach (var item in ExtensionIDList)
  105. {
  106. if (item == Colspan + WorkPoint)
  107. {
  108. flag = false;
  109. }
  110. }
  111. if (ExtensionID == null && flag == true)
  112. {
  113. str1 = Guid.NewGuid().ToString();
  114. 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)
  115. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  116. str1, Colspan, "", detail.Batch, "", "", "", "", "", "", "", "", "", "", "", "",
  117. data.User, UserName, WorkPoint);
  118. }
  119. else if (ExtensionID != null)
  120. {
  121. str1 = ExtensionID.ToString();
  122. }
  123. ExtensionIDList.Add(Colspan + WorkPoint);
  124. //If EXISTS(SELECT ID FROM ICSSDN WHERE SDNCode = '{1}' AND Sequence = '{3}' AND WorkPoint = '{8}' AND SOCode = '{17}' AND SOSequence = '{18}')
  125. // BEGIN
  126. // UPDATE ICSSO
  127. // SET SOQuantity = isnull(SOQuantity, 0) - (SELECT Quantity FROM ICSSDN WHERE SDNCode = '{1}' AND Sequence = '{3}' AND WorkPoint = '{8}' AND SOCode = '{17}' AND SOSequence = '{18}')
  128. // WHERE
  129. // SOCode = '{17}'
  130. // AND Sequence = '{18}'
  131. // AND WorkPoint = '{8}'
  132. // END;
  133. sql += @"If EXISTS (SELECT ID FROM ICSSO WHERE SOCode='{17}' AND Sequence='{18}' AND Quantity < Isnull(SOQuantity,0)+'{5}' AND WorkPoint = '{8}')
  134. BEGIN
  135. RAISERROR('', 16, 1);
  136. RETURN
  137. END ;
  138. INSERT INTO ICSSDN(ID,SDNCode,WHCode,Sequence,InvCode,Quantity,CreatePerson,CreateDateTime,WorkPoint,Status,ExtensionID,MUSER,MUSERName,MTIME,EATTRIBUTE1,CusCode,CusName,SOCode,SOSequence,EATTRIBUTE2,EATTRIBUTE3,ArriveDate,Type,SDNID,SDNDetailID,SDNQuantity,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)" + " select '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','1',NEWID(),NEWID(),0,'{22}','{23}','{24}','{25}','{26}' ,'{27}','{28}' ; UPDATE ICSSO SET ArriveDate='{7}', SOQuantity=isnull(SOQuantity,0)+'{5}' WHERE SOCode='{17}' AND Sequence='{18}' And WorkPoint='{8}' ; ";
  139. sql = string.Format(sql, detail.ID, data.Code, detail.WHCode, detail.Sequence, detail.InvCode, detail.Quantity, data.User, date, WorkPoint, '2', str1, data.User, UserName, date, data.CodeType, detail.CusCode, detail.CusName, detail.SOCode, detail.SOSequence, detail.EATTRIBUTE2, detail.EATTRIBUTE3, date, detail.EATTRIBUTE4, detail.EATTRIBUTE5, detail.EATTRIBUTE6, detail.EATTRIBUTE7, detail.EATTRIBUTE8, detail.EATTRIBUTE9, detail.EATTRIBUTE10);
  140. }
  141. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  142. {
  143. }
  144. }
  145. catch (Exception ex)
  146. {
  147. msg = ex.Message;
  148. }
  149. return msg;
  150. }
  151. #endregion
  152. #region 保存发料信息
  153. public string SaveICSSDN(string ICSASN)
  154. {
  155. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  156. string UserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  157. string msg = "";
  158. JsonData data = JsonConvert.DeserializeObject<JsonData>(ICSASN);
  159. string sql = "";
  160. string Colspan = "";
  161. string str1 = "";
  162. string cus = string.Empty;
  163. List<string> ExtensionIDList = new List<string>();
  164. string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  165. // 获取解析后的数据
  166. foreach (var detail in data.Detail)
  167. {
  168. if (cus.IsEmpty())
  169. {
  170. cus = detail.CusCode;
  171. }
  172. else
  173. {
  174. if (cus != detail.CusCode)
  175. {
  176. throw (new Exception("请选择相同的客户!"));
  177. }
  178. }
  179. //获取物料的可用数量,判断当前创建单据数量
  180. decimal invCount = iCSAccessoriesMOIApplyApp.GetInvCodeCount(detail.InvCode,"", "");
  181. //获取创建单据的所有的物料信息
  182. decimal allCount = data.Detail.Where(e => e.InvCode == detail.InvCode).Select(f => f.Quantity).Sum();
  183. if (invCount < allCount)
  184. {
  185. throw new Exception($"物料{detail.InvCode}创建单据总数量:{allCount}不能大于库存可用量:{invCount}");
  186. }
  187. // Colspan = "~" + detail.Batch + "~~~~~~~~~~~~";
  188. Colspan = detail.ProjectCode + "~" + detail.BatchCode + "~" + detail.Version + "~" + detail.Brand + "~" + detail.cFree1 + "~" + detail.cFree2 + "~" + detail.cFree3 + "~" + detail.cFree4 + "~" + detail.cFree5+ "~" + detail.cFree6 + "~" + detail.cFree7 + "~" + detail.cFree8 + "~" + detail.cFree9 + "~" + detail.cFree10;
  189. string sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  190. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  191. bool flag = true;
  192. foreach (var item in ExtensionIDList)
  193. {
  194. if (item == Colspan + WorkPoint)
  195. {
  196. flag = false;
  197. }
  198. }
  199. if (ExtensionID == null && flag == true)
  200. {
  201. str1 = Guid.NewGuid().ToString();
  202. 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)
  203. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  204. str1, Colspan, detail.ProjectCode, detail.BatchCode, detail.Version, detail.Brand, detail.cFree1, detail.cFree2, detail.cFree3 ,detail.cFree4, detail.cFree5, detail.cFree6, detail.cFree7, detail.cFree8, detail.cFree9, detail.cFree10,
  205. data.User, UserName, WorkPoint);
  206. }
  207. else if (ExtensionID != null)
  208. {
  209. str1 = ExtensionID.ToString();
  210. }
  211. ExtensionIDList.Add(Colspan + WorkPoint);
  212. sql += @"If EXISTS (SELECT ID FROM ICSSO WHERE SOCode='{17}' AND Sequence='{18}' AND Quantity < Isnull(SOQuantity,0)+'{5}')
  213. BEGIN
  214. RAISERROR('', 16, 1);
  215. RETURN
  216. END ;
  217. INSERT INTO ICSSDN(ID,SDNCode,WHCode,Sequence,InvCode,Quantity,CreatePerson,CreateDateTime,WorkPoint,Status,ExtensionID,MUSER,MUSERName,MTIME,EATTRIBUTE1,CusCode,CusName,SOCode,SOSequence,EATTRIBUTE2,EATTRIBUTE3,ArriveDate,Type,SDNID,SDNDetailID,SDNQuantity,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)" + " select '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','1',NEWID(),NEWID(),0,'{22}','{23}','{24}','{25}','{26}' ,'{27}','{28}' ; UPDATE ICSSO SET ArriveDate='{7}', SOQuantity=isnull(SOQuantity,0)+'{5}' WHERE SOCode='{17}' AND Sequence='{18}' And WorkPoint='{8}' ; ";
  218. sql = string.Format(sql, detail.ID, data.Code, detail.WHCode, detail.Sequence, detail.InvCode, detail.Quantity, data.User, date, WorkPoint, '2', str1, data.User, UserName, date, data.CodeType, detail.CusCode, detail.CusName, detail.SOCode, detail.SOSequence, detail.EATTRIBUTE2, detail.EATTRIBUTE3, date, detail.EATTRIBUTE4, detail.EATTRIBUTE5, detail.EATTRIBUTE6, detail.EATTRIBUTE7, detail.EATTRIBUTE8, detail.EATTRIBUTE9, detail.EATTRIBUTE10);
  219. }
  220. try
  221. {
  222. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  223. {
  224. }
  225. }
  226. catch (Exception ex)
  227. {
  228. msg = ex.Message;
  229. }
  230. return msg;
  231. }
  232. #endregion
  233. #region 销售发货单主表信息查询
  234. public DataTable GetICSSDN(ref Pagination jqgridparam, string queryJson)
  235. {
  236. DataTable dt = new DataTable();
  237. List<DbParameter> parameter = new List<DbParameter>();
  238. var queryParam = queryJson.ToJObject();
  239. string sql = @" SELECT DISTINCT
  240. a.SDNCode
  241. ,a.Status
  242. ,a.CreatePerson
  243. ,a.CreateDateTime
  244. ,a.MUSER
  245. ,a.MUSERName
  246. ,a.CusCode
  247. ,a.CusName,
  248. a.EATTRIBUTE2,
  249. a.EATTRIBUTE4,
  250. a.EATTRIBUTE5
  251. from dbo.ICSSDN a
  252. LEFT JOIN (SELECT case WHEN SUM(Quantity)=SUM(SDNQuantity) THEN '' else '' end as Status,SDNQuantity,SDNCode
  253. FROM ICSSDN GROUP BY SDNCode,SDNQuantity) c ON a.SDNCode=c.SDNCode
  254. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint where type='1' ";
  255. if (!string.IsNullOrWhiteSpace(queryJson))
  256. {
  257. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  258. {
  259. sql += " and a.SDNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  260. }
  261. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  262. {
  263. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  264. }
  265. if (!string.IsNullOrWhiteSpace(queryParam["CreatedBy"].ToString()))
  266. {
  267. sql += " and a.CreatePerson like '%" + queryParam["CreatedBy"].ToString() + "%' ";
  268. }
  269. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  270. {
  271. sql += " and convert(nvarchar(20),a.CreateDateTime,23) >= '" + queryParam["TimeFrom"].ToString() + "' ";
  272. }
  273. if (!string.IsNullOrWhiteSpace(queryParam["TimeArrive"].ToString()))
  274. {
  275. sql += " and convert(nvarchar(20),a.CreateDateTime,23) <= '" + queryParam["TimeArrive"].ToString() + "' ";
  276. }
  277. if (queryParam["Status"].ToString() == "1")
  278. {
  279. sql += " AND c.Status='已发完' ";
  280. }
  281. else if (queryParam["Status"].ToString() == "2")
  282. {
  283. sql += " AND c.Status='未发完'";
  284. }
  285. }
  286. sql = string.Format(sql);
  287. DataTable dttest = Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  288. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  289. }
  290. #endregion
  291. #region 销售发货单主表信息查询
  292. public DataTable GetICSSDNBySDNCode(string SDNCode)
  293. {
  294. DataTable dt = new DataTable();
  295. List<DbParameter> parameter = new List<DbParameter>();
  296. string sql = @" SELECT DISTINCT a.ID,a.SDNCode,a.WHCode,a.Sequence,a.InvCode,a.Quantity,a.CreatePerson,a.CreateDateTime,a.WorkPoint,a.Status,a.ExtensionID,a.MUSER,a.MUSERName,a.MTIME,a.EATTRIBUTE1,a.CusCode,a.CusName,a.SOCode,a.SOSequence,a.EATTRIBUTE2,a.EATTRIBUTE3,a.ArriveDate,a.EATTRIBUTE10,a.Type,a.SDNID,a.SDNDetailID ,b.WarehouseCode,b.WarehouseName,a.EATTRIBUTE4,a.EATTRIBUTE5
  297. from dbo.ICSSDN a
  298. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  299. WHERE a.SDNCode='{0}'";
  300. sql = string.Format(sql, SDNCode);
  301. return Repository().FindTableBySql(sql.ToString());
  302. }
  303. #endregion
  304. #region 主页面子表信息查询
  305. public DataTable GetICSSDNDetail(string SDNCode, string queryJson, ref Pagination jqgridparam)
  306. {
  307. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  308. DataTable dt = new DataTable();
  309. var queryParam = queryJson.ToJObject();
  310. //var queryParam = queryJson.ToJObject();
  311. List<DbParameter> parameter = new List<DbParameter>();
  312. string sql = @" select a.ID
  313. ,a.SDNCode
  314. ,a.Sequence
  315. ,a.InvCode
  316. ,a.Quantity
  317. ,a.Amount
  318. ,a.ExtensionID
  319. ,a.MUSER
  320. ,a.MUSERName
  321. ,a.SOCode
  322. ,a.MTIME
  323. ,a.EATTRIBUTE3
  324. ,a.EATTRIBUTE5
  325. ,a.EATTRIBUTE7 as CusDoc
  326. ,SDNQuantity
  327. ,b.EATTRIBUTE2 AS U8InvCode
  328. ,f.Colspan
  329. ,f.ProjectCode
  330. ,f.BatchCode
  331. ,f.Version
  332. ,f.Brand
  333. ,f.cFree1
  334. ,f.cFree2
  335. ,f.cFree3
  336. ,f.cFree4
  337. ,f.cFree5
  338. ,f.cFree6
  339. ,f.cFree7
  340. ,f.cFree8
  341. ,f.cFree9
  342. ,f.cFree10
  343. from ICSSDN a
  344. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  345. LEFT JOIN ICSInventory b on a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
  346. WHERE a.SDNCode='" + SDNCode + "' ";
  347. if (!string.IsNullOrWhiteSpace(queryJson))
  348. {
  349. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  350. {
  351. sql += " and a.SDNCode like '%" + queryParam["POCode"].ToString() + "%' ";
  352. }
  353. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  354. {
  355. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  356. }
  357. if (!string.IsNullOrWhiteSpace(queryParam["CreatedBy"].ToString()))
  358. {
  359. sql += " and a.CreatePerson like '%" + queryParam["CreatedBy"].ToString() + "%' ";
  360. }
  361. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  362. {
  363. sql += " and convert(nvarchar(20),a.CreateDateTime,23) >= '" + queryParam["TimeFrom"].ToString() + "' ";
  364. }
  365. if (!string.IsNullOrWhiteSpace(queryParam["TimeArrive"].ToString()))
  366. {
  367. sql += " and convert(nvarchar(20),a.CreateDateTime,23) <= '" + queryParam["TimeArrive"].ToString() + "' ";
  368. }
  369. }
  370. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  371. }
  372. #endregion
  373. #region
  374. public string DeleteICSSDNByCode(string keyValue)
  375. {
  376. //站点信息
  377. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  378. string msg = "";
  379. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  380. string sql = string.Empty;
  381. sql += string.Format(@"IF EXISTS( select ID from ICSSDN where SDNCode IN ({0}) and WorkPoint ='{1}' AND SDNQuantity>0)
  382. BEGIN
  383. RAISERROR('',16,1);
  384. RETURN
  385. END
  386. UPDATE b SET b.SOQuantity=b.SOQuantity-a.Quantity FROM ICSSDN a
  387. INNER JOIN ICSSO b ON a.SOCode=b.SOCode AND a.SOSequence=b.Sequence AND a.WorkPoint=b.WorkPoint WHERE a.SDNCode IN ({0}) and a.WorkPoint ='{1}';
  388. DELETE FROM dbo.ICSSDN WHERE SDNCode IN ({0}) and WorkPoint ='{1}' ;", keyValue.TrimEnd(','), WorkPoint);
  389. try
  390. {
  391. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  392. {
  393. }
  394. }
  395. catch (Exception ex)
  396. {
  397. msg = ex.Message;
  398. }
  399. return msg;
  400. }
  401. #endregion
  402. #region
  403. public DataTable GetICSReturnTemporary(string rfqno)
  404. {
  405. //string sql = @"SELECT
  406. // a.ID,a.SDNCode,a.WHCode,a.Sequence,a.InvCode as INVCODE,a.Quantity,a.CreatePerson,a.CreateDateTime,a.WorkPoint,a.Status,a.ExtensionID,a.MUSER,a.MUSERName,a.MTIME,a.EATTRIBUTE1,a.CusCode,a.CusName,a.SOCode,a.SOSequence,a.EATTRIBUTE2,a.EATTRIBUTE3 as DetailReamrk,a.EATTRIBUTE5 as DetailReamrk2,a.EATTRIBUTE6 as Project,a.EATTRIBUTE7 as CusDoc,a.ArriveDate,a.EATTRIBUTE10,a.Type,a.SDNID,a.SDNDetailID,b.InvName as INVNAME, b.InvStd,
  407. // f.BatchCode as Batch
  408. // ,c.WareHouseName
  409. // FROM ICSSDN a
  410. // LEFT JOIN ICSInventory b ON a.InvCode = b.InvCode
  411. // left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  412. // LEFT JOIN dbo.ICSWarehouse c ON a.WHCode=c.WarehouseCode AND a.WorkPoint=c.WorkPoint
  413. // where a.SDNCode='" + rfqno + "'";
  414. string sql = @"SELECT
  415. a.ID,a.SDNCode,a.WHCode,a.Sequence,a.InvCode as INVCODE,a.Quantity,a.CreatePerson,a.CreateDateTime,a.WorkPoint,a.Status,a.MUSER,a.MUSERName,a.MTIME,
  416. a.CusCode,a.CusName,a.SOCode,a.SOSequence,a.ArriveDate,a.Type,a.SDNID,a.SDNDetailID,b.InvName as INVNAME, b.InvStd,a.ExtensionID,
  417. f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  418. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  419. a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3 ,a.EATTRIBUTE4,a.EATTRIBUTE5 ,a.EATTRIBUTE6 ,a.EATTRIBUTE7,a.EATTRIBUTE8,a.EATTRIBUTE9 ,a.EATTRIBUTE10
  420. ,c.WareHouseName
  421. FROM ICSSDN a
  422. LEFT JOIN ICSInventory b ON a.InvCode = b.InvCode
  423. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  424. LEFT JOIN dbo.ICSWarehouse c ON a.WHCode=c.WarehouseCode AND a.WorkPoint=c.WorkPoint
  425. where a.SDNCode='" + rfqno + "'";
  426. DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  427. DataTable dtCloned = table.Clone();
  428. foreach (DataColumn col in dtCloned.Columns)
  429. {
  430. col.DataType = typeof(string);
  431. }
  432. foreach (DataRow row in table.Rows)
  433. {
  434. DataRow newrow = dtCloned.NewRow();
  435. foreach (DataColumn column in dtCloned.Columns)
  436. {
  437. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  438. }
  439. dtCloned.Rows.Add(newrow);
  440. }
  441. if (Invmes.Rows.Count > 0)
  442. {
  443. dtCloned.Merge(Invmes, false);
  444. }
  445. return dtCloned;
  446. }
  447. #endregion
  448. #region 获取销售订单信息
  449. public DataTable GetItemList(string queryJson, ref Pagination jqgridparam)
  450. {
  451. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  452. var queryParam = queryJson.ToJObject();
  453. List<DbParameter> parameter = new List<DbParameter>();
  454. // string sql = @"SELECT
  455. // a.SOCode,
  456. // a.Sequence,
  457. // a.CusCode,
  458. // a.CusName,
  459. // a.ArriveDate,
  460. // a.WHCode,
  461. // a.InvCode AS INVCODE,
  462. // a.EATTRIBUTE1 as Project,
  463. // Isnull(a.SOQuantity,0) as SOQuantity,
  464. // a.Quantity-Isnull(a.SOQuantity,0) as SQuantity,
  465. // a.Quantity-Isnull(a.SOQuantity,0) as Quantity,
  466. // b.INVNAME,
  467. // b.InvStd,
  468. // a.Quantity AS ZQuantity ,
  469. // b.EATTRIBUTE2 AS U8InvCode,
  470. // a.EATTRIBUTE2 as CusInvName,
  471. // a.EATTRIBUTE3 as CusInvCode,
  472. // a.EATTRIBUTE4 as CusVersion,
  473. // a.EATTRIBUTE5 as CusDoc,
  474. // a.EATTRIBUTE7,
  475. // ISnull(d.Quantity,0)-ISnull(c.Quantity,0) AS KQuantity
  476. //FROM ICSSO a
  477. //LEFT JOIN ICSInventory b on a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
  478. //LEFT JOIN (
  479. //SELECT SUM(c.Quantity)AS Quantity,c.InvCode,c.WorkPoint FROM
  480. // (SELECT Sum(ISnull(Quantity,0)) as Quantity,WorkPoint,INVCode FROM (SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(OutQuantity, 0)),0) as Quantity,WorkPoint,INVCode FROM ICSOtherOut GROUP BY WorkPoint,INVCode
  481. //UNION ALL
  482. //SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(IssueQuantity, 0)),0) as Quantity,WorkPoint,INVCode FROM ICSMOApply GROUP BY WorkPoint,INVCode
  483. //UNION ALL
  484. //SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(SDNQuantity, 0)),0) as Quantity,WorkPoint,INVCode FROM ICSSDN where EATTRIBUTE10='销售出库' GROUP BY WorkPoint,INVCode
  485. //UNION ALL
  486. //SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(IssueQuantity, 0)),0) as Quantity,WorkPoint,INVCode from ICSMOIssue WHERE Status<>'3'
  487. // GROUP BY WorkPoint,INVCode)d
  488. //GROUP BY d.INVCode,d.WorkPoint) c GROUP BY c.InvCode,c.WorkPoint
  489. //) c on b.InvCode = c.InvCode and b.WorkPoint = c.WorkPoint
  490. //left JOIN (SELECT Sum(ISnull(Quantity,0)) AS Quantity,InvCode, WorkPoint FROM ICSWareHouseLotInfo where Freeze<>1
  491. // ";
  492. string sql = @"SELECT
  493. a.SOCode,
  494. a.Sequence,
  495. a.CusCode,
  496. a.CusName,
  497. a.ArriveDate,
  498. a.WHCode,
  499. a.InvCode AS INVCODE,
  500. Isnull(a.SOQuantity,0) as SOQuantity,
  501. a.Quantity-Isnull(a.SOQuantity,0) as SQuantity,
  502. a.Quantity-Isnull(a.SOQuantity,0) as Quantity,
  503. b.INVNAME,
  504. b.InvStd,
  505. a.Quantity AS ZQuantity ,
  506. ISnull(d.Quantity,0)-ISnull(c.Quantity,0) AS KQuantity,
  507. a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,a.EATTRIBUTE9,
  508. a.EATTRIBUTE10,a.EATTRIBUTE11,a.EATTRIBUTE12,a.EATTRIBUTE13,a.EATTRIBUTE14,a.EATTRIBUTE15,a.EATTRIBUTE16,a.EATTRIBUTE17,a.EATTRIBUTE18,
  509. a.EATTRIBUTE19,a.EATTRIBUTE20,a.EATTRIBUTE21,a.EATTRIBUTE22,a.EATTRIBUTE23,a.EATTRIBUTE24,a.EATTRIBUTE25,a.EATTRIBUTE26,a.EATTRIBUTE27,
  510. a.EATTRIBUTE28,a.EATTRIBUTE29,a.EATTRIBUTE30
  511. FROM ICSSO a
  512. LEFT JOIN ICSInventory b on a.InvCode = b.InvCode AND a.WorkPoint = b.WorkPoint
  513. LEFT JOIN (
  514. SELECT SUM(c.Quantity)AS Quantity,c.InvCode,c.WorkPoint FROM
  515. (SELECT Sum(ISnull(Quantity,0)) as Quantity,WorkPoint,INVCode FROM (SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(OutQuantity, 0)),0) as Quantity,WorkPoint,INVCode FROM ICSOtherOut GROUP BY WorkPoint,INVCode
  516. UNION ALL
  517. SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(IssueQuantity, 0)),0) as Quantity,WorkPoint,INVCode FROM ICSMOApply GROUP BY WorkPoint,INVCode
  518. UNION ALL
  519. SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(SDNQuantity, 0)),0) as Quantity,WorkPoint,INVCode FROM ICSSDN where EATTRIBUTE10='' GROUP BY WorkPoint,INVCode
  520. UNION ALL
  521. SELECT ISNUll(sum(ISNULL(Quantity,0))-sum(ISNULL(IssueQuantity, 0)),0) as Quantity,WorkPoint,INVCode from ICSMOIssue WHERE Status<>'3'
  522. GROUP BY WorkPoint,INVCode)d
  523. GROUP BY d.INVCode,d.WorkPoint) c GROUP BY c.InvCode,c.WorkPoint
  524. ) c on b.InvCode = c.InvCode and b.WorkPoint = c.WorkPoint
  525. left JOIN (SELECT Sum(ISnull(Quantity,0)) AS Quantity,InvCode, WorkPoint FROM ICSWareHouseLotInfo where Freeze<>1
  526. ";
  527. string WhCodesql = $@"SELECT F_Define1
  528. FROM Sys_SRM_Items a
  529. INNER JOIN Sys_SRM_ItemsDetail b ON a.F_Id=b.F_ItemId
  530. WHERE F_EnCode='UseWHCode' ";
  531. var whcode=SqlHelper.CmdExecuteDataTable(WhCodesql);
  532. if (whcode.Rows.Count>0)
  533. {
  534. sql += " and WareHouseCode in (" + whcode.Rows[0]["F_Define1"].ToString() + ")";
  535. }
  536. sql += " GROUP BY InvCode, WorkPoint) d ON d.InvCode = a.INVCode AND d.WorkPoint = a.WorkPoint where a.Status = '2' ";
  537. if (!string.IsNullOrEmpty(queryJson))
  538. {
  539. if (!string.IsNullOrWhiteSpace(queryParam["SOCode"].ToString()))
  540. sql += " and a.SOCode like '%" + queryParam["SOCode"].ToString() + "%'";
  541. if (!string.IsNullOrWhiteSpace(queryParam["Sequence"].ToString()))
  542. sql += " and a.Sequence like '%" + queryParam["Sequence"].ToString() + "%'";
  543. if (!string.IsNullOrWhiteSpace(queryParam["NewInv"].ToString()))
  544. sql += " and a.InvCode like '%" + queryParam["NewInv"].ToString() + "%'";
  545. if (!string.IsNullOrWhiteSpace(queryParam["OldInv"].ToString()))
  546. sql += " and b. EATTRIBUTE5 like '%" + queryParam["OldInv"].ToString() + "%'";
  547. if (!string.IsNullOrWhiteSpace(queryParam["CusCode"].ToString()))
  548. sql += " and a.CusCode like '%" + queryParam["CusCode"].ToString() + "%'";
  549. if (!string.IsNullOrWhiteSpace(queryParam["CusName"].ToString()))
  550. sql += " and a.CusName like '%" + queryParam["CusName"].ToString() + "%'";
  551. if (!string.IsNullOrWhiteSpace(queryParam["CusDoc"].ToString()))
  552. sql += " and a.EATTRIBUTE5 like '%" + queryParam["CusDoc"].ToString() + "%'";
  553. }
  554. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  555. sql += " and a.WorkPoint=('" + WorkPoint + "') ";
  556. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  557. }
  558. #endregion
  559. #region 获取单据类型
  560. /// <summary>
  561. /// 获取U9单据类型
  562. /// </summary>
  563. /// <returns></returns>
  564. public DataTable GetU9CodeType()
  565. {
  566. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  567. string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  568. string sql = @" select '' as Code,'' as Name
  569. union all
  570. SELECT a.Code,b.Name FROM {0}{1}.dbo.SM_ShipDocType a
  571. LEFT JOIN {0}{1}.dbo.SM_ShipDocType_Trl b ON a.ID=b.ID
  572. WHERE Effective_DisableDate>=GETDATE()";
  573. sql = string.Format(sql, DbHelper.GetErpIpU9(), DbHelper.GetErpNameU9());
  574. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  575. return dt;
  576. }
  577. #endregion
  578. public string GetBidCode(string WorkPoint)
  579. {
  580. WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  581. string BidCide = string.Empty;
  582. if (!string.IsNullOrEmpty(WorkPoint))
  583. {
  584. string Date = DateTime.Now.ToString("yyyyMMdd");
  585. string Pre = "BZCH" + Date ;
  586. BidCide = GetSerialCode(WorkPoint, "ICSSDN", "SDNCode", Pre, 4);
  587. }
  588. if (!string.IsNullOrWhiteSpace(BidCide))
  589. {
  590. string sqlISHave = @"SELECT OutCode FROM ICSOtherOut a
  591. WHERE a.OutCode = '{0}'";
  592. sqlISHave = string.Format(sqlISHave, BidCide);
  593. DataTable dtIsHave = SqlHelper.GetDataTableBySql(sqlISHave);
  594. if (dtIsHave.Rows.Count > 0)
  595. {
  596. throw new Exception("单号已存在!");
  597. }
  598. }
  599. return BidCide;
  600. }
  601. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  602. {
  603. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  604. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  605. //return Repository().FindTableBySql(sql.ToString());
  606. return SqlHelper.ExecuteScalar(sql).ToString();
  607. //return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  608. }
  609. #region 获取批次信息
  610. public DataTable GetBatchList(string queryJson, ref Pagination jqgridparam)
  611. {
  612. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  613. var queryParam = queryJson.ToJObject();
  614. List<DbParameter> parameter = new List<DbParameter>();
  615. string sql = $@"select distinct c.BatchCode from ICSWareHouseLotInfo a
  616. INNER JOIN ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  617. INNER JOIN ICSExtension c ON b.ExtensionID=c.ID
  618. WHERE a.InvCode='{queryParam["InvCode"]}' AND a.WorkPoint='{WorkPoint}'";
  619. if (!string.IsNullOrEmpty(queryJson))
  620. {
  621. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  622. sql += " and c.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%'";
  623. }
  624. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  625. }
  626. #endregion
  627. #region
  628. public DataTable GetU9Status(string SOCode)
  629. {
  630. try
  631. {
  632. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  633. string sqlClass = $@"SELECT a.So,c.DOCNO FROM SM_SOModify a
  634. INNER JOIN Base_Organization b ON a.Org = b.ID
  635. INNER JOIN SM_SO c ON c.Id=a.so
  636. WHERE a.Status != 2 AND c.DOCNO = '{SOCode}' AND b.Code = '{WorkPoint}'";
  637. DataTable dt = ERPSqlServerHelper.GetDataTableBySql(sqlClass);
  638. if (dt.Rows.Count > 0)
  639. {
  640. throw new Exception($"销售订单{SOCode},存在未审核销售订单变更单,单号:{dt.Rows[0]["DocNO"]}");
  641. }
  642. else
  643. {
  644. return dt;
  645. }
  646. }
  647. catch (Exception ex)
  648. {
  649. throw new Exception(ex.Message);
  650. }
  651. }
  652. #endregion
  653. #region 定义一个类来表示 JSON 数据的结构
  654. public class JsonData
  655. {
  656. public string Dept { get; set; }
  657. public string CodeType { get; set; }
  658. public string ApplyNegCode { get; set; }
  659. public string Remarks { get; set; }
  660. public string Remarks2 { get; set; }
  661. public string Code { get; set; }
  662. public string MTIME { get; set; }
  663. public string User { get; set; }
  664. public string SYproject { get; set; }
  665. public List<JsonDetail> Detail { get; set; }
  666. }
  667. public class JsonDetail
  668. {
  669. public string ID;
  670. public int Sequence { get; set; }
  671. public string InvCode { get; set; }
  672. public decimal Quantity { get; set; }
  673. public string WHCode { get; set; }
  674. public string DetailReamrk { get; set; }
  675. public string DetailReamrk2 { get; set; }
  676. public string Batch { get; set; }
  677. /// <summary>
  678. /// 客户编码
  679. /// </summary>
  680. public string CusCode { get; set; }
  681. /// <summary>
  682. /// 客户名称
  683. /// </summary>
  684. public string CusName { get; set; }
  685. /// <summary>
  686. /// 客户订单
  687. /// </summary>
  688. public string CusDoc { get; set; }
  689. /// <summary>
  690. /// 销售订单
  691. /// </summary>
  692. public string SOCode { get; set; }
  693. /// <summary>
  694. /// 销售订单行
  695. /// </summary>
  696. public string SOSequence { get; set; }
  697. /// <summary>
  698. /// 发货日期
  699. /// </summary>
  700. public string ArriveDate { get; set; }
  701. /// <summary>
  702. /// 项次
  703. /// </summary>
  704. public string Project { get; set; }
  705. public string ProjectCode { get; set; }
  706. public string BatchCode { get; set; }
  707. public string Version { get; set; }
  708. public string Brand { get; set; }
  709. public string cFree1 { get; set; }
  710. public string cFree2 { get; set; }
  711. public string cFree3 { get; set; }
  712. public string cFree4 { get; set; }
  713. public string cFree5 { get; set; }
  714. public string cFree6 { get; set; }
  715. public string cFree7 { get; set; }
  716. public string cFree8 { get; set; }
  717. public string cFree9 { get; set; }
  718. public string cFree10 { get; set; }
  719. public string EATTRIBUTE1 { get; set; }
  720. public string EATTRIBUTE2 { get; set; }
  721. public string EATTRIBUTE3 { get; set; }
  722. public string EATTRIBUTE4 { get; set; }
  723. public string EATTRIBUTE5 { get; set; }
  724. public string EATTRIBUTE6 { get; set; }
  725. public string EATTRIBUTE7 { get; set; }
  726. public string EATTRIBUTE8 { get; set; }
  727. public string EATTRIBUTE9 { get; set; }
  728. public string EATTRIBUTE10 { get; set; }
  729. }
  730. #endregion
  731. }
  732. }