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.

889 lines
43 KiB

4 days ago
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using NFine.Code;
  4. using NFine.Data.Extensions;
  5. using NFine.Domain._03_Entity.SRM;
  6. using NFine.Domain.Entity.ProductManage;
  7. using NFine.Domain.IRepository.ProductManage;
  8. using NFine.Repository;
  9. using NFine.Repository.ProductManage;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Configuration;
  13. using System.Data;
  14. using System.Data.Common;
  15. using System.Linq;
  16. using System.Text;
  17. namespace NFine.Application.SRM
  18. {
  19. public class ASNMangeWeiWaiApp : RepositoryFactory<ICSVendor>
  20. {
  21. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  22. {
  23. string ParentId = "";
  24. DataTable dt = new DataTable();
  25. var queryParam = queryJson.ToJObject();
  26. List<DbParameter> parameter = new List<DbParameter>();
  27. string sql = @"
  28. SELECT distinct a.ID, a.OASNCode,a.VenCode,b.VenName AS VENDORNAME,w.WorkPointName,w.WorkPointCode,a.MUSERName,
  29. a.MTIME,CONVERT(NVARCHAR(50),a.PlanArriveDate,23) as EXPARRIVALDATE,
  30. CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END AS STATUS,a.EATTRIBUTE1,convert(nvarchar(20),c.MTIME,120) DMTIME
  31. FROM dbo.ICSOASN a
  32. LEFT JOIN ICSOASNDetail d on a.OASNCode=d.OASNCode and a.WorkPoint=d.WorkPoint
  33. left join ICSInventoryLotDetail f on d.LotNo=f.LotNo and d.WorkPoint=f.WorkPoint
  34. left join dbo.ICSOutsourcingOrder g on f.TransCode=g.OOCode and f.TransSequence=g.Sequence and f.WorkPoint=g.WorkPoint
  35. LEFT JOIN dbo.ICSVendor b ON a.VenCode=b.VenCode and a.WOrkPoint=b.WorkPoint
  36. LEFT JOIN ICSODeliveryNotice c ON a.OASNCode = c.OASNCode
  37. LEFT JOIN Sys_WorkPoint w on a.WorkPoint=w.WorkPointCode
  38. WHERE 1=1";
  39. if (!string.IsNullOrWhiteSpace(queryJson))
  40. {
  41. if (!string.IsNullOrWhiteSpace(queryParam["STNO"].ToString()))
  42. {
  43. sql += " and a.OASNCode like '%" + queryParam["STNO"].ToString() + "%' ";
  44. }
  45. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  46. {
  47. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  48. }
  49. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  50. {
  51. sql += " and b.VenName like '%" + queryParam["VenName"].ToString() + "%' ";
  52. }
  53. if (!string.IsNullOrWhiteSpace(queryParam["TimeFrom"].ToString()))
  54. {
  55. sql += " and a.MTIME >= '" + queryParam["TimeFrom"].ToString() + "' ";
  56. }
  57. if (!string.IsNullOrWhiteSpace(queryParam["TimeTo"].ToString()))
  58. {
  59. sql += " and a.MTIME <= '" + queryParam["TimeTo"].ToString() + "' ";
  60. }
  61. if (!string.IsNullOrWhiteSpace(queryParam["PoCode"].ToString()))
  62. {
  63. sql += " and g.OOCode like '%" + queryParam["PoCode"].ToString() + "%' ";
  64. }
  65. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  66. {
  67. sql += " and g.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  68. }
  69. if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString()))
  70. {
  71. string ReleaseState = queryParam["ReleaseState"].ToString();
  72. if (ReleaseState == "0")
  73. sql += " AND CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END = '0'";
  74. else if (ReleaseState == "1")
  75. sql += " AND CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END = '1'";
  76. else if (ReleaseState == "2")
  77. sql += " AND CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END = '2'";
  78. else if (ReleaseState == "3")
  79. {
  80. sql += " AND CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END='3'";
  81. }
  82. else if (ReleaseState == "4")
  83. sql += " AND CASE WHEN c.ODNCode IS NULL THEN a.Status ELSE '3' END = '4'";
  84. }
  85. }
  86. //多站点
  87. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  88. {
  89. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  90. }
  91. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode.Contains("Vendor"))
  92. {
  93. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode + "'";
  94. }
  95. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  96. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  97. {
  98. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  99. }
  100. else
  101. {
  102. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  103. }
  104. }
  105. /// <summary>
  106. /// 子表查询
  107. /// </summary>
  108. /// <param name="queryJson"></param>
  109. /// <param name="jqgridparam"></param>
  110. /// <returns></returns>
  111. public DataTable GetSubGridJson(string STNO, ref Pagination jqgridparam,string WorkPoint)
  112. {
  113. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  114. DataTable dt = new DataTable();
  115. List<DbParameter> parameter = new List<DbParameter>();
  116. string sql = @" SELECT a.ID, a.LotNo,d.InvCode,d.InvName,c.ContainerID,b.Quantity,
  117. a.OASNCode,f.BatchCode,f.ProjectCode,m.TransCode,m.TransSequence,d.InvDesc,d.ClassName,d.InvStd,w.WorkPointName,w.WorkPointCode,x.ContainerCode as XH,y.ContainerCode as ZB
  118. FROM dbo.ICSOASNDetail a
  119. LEFT JOIN dbo.ICSInventoryLot b ON a.LotNo =b.LotNo AND a.WorkPoint=b.WorkPoint
  120. left join ICSExtension f on b.ExtensionID=f.ID and b.WorkPoint=f.WorkPoint
  121. left join ICSInventoryLotDetail m on b.LotNo=m.LotNo and b.WorkPoint=m.WorkPoint
  122. LEFT JOIN dbo.ICSContainerLot c ON b.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  123. LEFT JOIN dbo.ICSInventory d ON b.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
  124. LEFT JOIN dbo.ICSOutsourcingOrder e ON m.TransCode=e.OOCode AND m.TransSequence=e.Sequence AND a.WorkPoint=e.WorkPoint
  125. LEFT JOIN Sys_WorkPoint w on e.WorkPoint=w.WorkPointCode
  126. LEFT JOIN ICSContainer X ON c.ContainerID=X.ID AND c.WorkPoint=x.WorkPoint and X.ContainerType='ContainerType01'
  127. left join ICSContainer y on X.ContainerID=y.ID and X.WorkPoint=y.WorkPoint and y.ContainerType='ContainerType04'
  128. WHERE (b.TYPE='201' OR ISNULL(b.EATTRIBUTE7,'') ='') AND a.OASNCode='" + STNO + "' and a.WorkPoint='" + WorkPoint + "' ";
  129. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  130. }
  131. /// <summary>
  132. /// 删除送货单
  133. /// </summary>
  134. /// <param name="keyValue"></param>
  135. /// <returns></returns>
  136. public string DeleteSTNO(string keyValue, string WorkPoint, string EATTRIBUTE1)
  137. {
  138. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  139. string msg = "";
  140. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  141. string sql = string.Empty;
  142. sql = "SELECT OASNCode as STNO FROM dbo.ICSODeliveryNotice WHERE OASNCode IN (" + keyValue.TrimEnd(',') + ")";
  143. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  144. foreach (DataRow dr in dt.Rows)
  145. {
  146. string STNO = dr["STNO"].ToString();
  147. if (!string.IsNullOrEmpty(STNO))
  148. {
  149. msg += "送货单号:" + STNO + "已生成到货单,无法删除!";
  150. }
  151. }
  152. if (string.IsNullOrEmpty(msg))
  153. {
  154. sql = string.Format(@" DELETE FROM dbo.ICSOASNDetail WHERE OASNCode IN ({0}) and WorkPoint in ('{1}')
  155. DELETE FROM dbo.ICSOASN WHERE OASNCode IN ({0}) and WorkPoint in ('{1}')
  156. UPDATE ICSASN SET EATTRIBUTE1='{2}'WHERE ASNCode IN ({0}) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint.TrimEnd(','), EATTRIBUTE1);
  157. SqlHelper.ExecuteNonQuery(sql);
  158. }
  159. return msg;
  160. }
  161. public string CheckIsAll(string STNO)
  162. {
  163. string sql = @"SELECT * FROM dbo.ICSOASNDetail WHERE OASNCode='" + STNO + "' AND ISNULL(ODNQuantity,0)<>0";
  164. sql += " and WorkPoint in(" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  165. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  166. if (dt != null && dt.Rows.Count > 0)
  167. {
  168. return "0";
  169. }
  170. else
  171. {
  172. return "1";
  173. }
  174. }
  175. public string GetSTNO(string WorkPoint)
  176. {
  177. string STNO = string.Empty;
  178. string VenCode = NFine.Code.OperatorProvider.Provider.GetCurrent().VenCode;
  179. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  180. if (!string.IsNullOrEmpty(VenCode))
  181. {
  182. string Date = DateTime.Now.ToString("yy");
  183. string Pre = "DN" + VenCode + Date;
  184. STNO = GetSerialCode(WorkPoint, "ICSASN", "STNO", Pre, 5);
  185. }
  186. if (!string.IsNullOrEmpty(STNO))
  187. {
  188. string sql = string.Empty;
  189. string configSql = string.Empty;
  190. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  191. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  192. string Status = "2";
  193. #region [获取送货单配置信息,判断状态]
  194. configSql = @"SELECT a.F_ItemCode,a.F_ItemName FROM Sys_SRM_ItemsDetail a
  195. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  196. WHERE b.F_EnCode = 'DeliveryNoteConfig'";
  197. DataTable dt = SqlHelper.GetDataTableBySql(configSql);
  198. foreach (DataRow item in dt.Rows)
  199. {
  200. if (item["F_ItemName"].ToString().Equals("IsSub"))
  201. {
  202. Status = item["F_ItemCode"].ToString();
  203. }
  204. else if (item["F_ItemName"].ToString().Equals("IsEAV"))
  205. {
  206. if (Status == "1" && item["F_ItemCode"].ToString() == "3")
  207. Status = "2";
  208. }
  209. }
  210. #endregion
  211. if (string.IsNullOrWhiteSpace(WorkPoint))
  212. {
  213. throw new Exception("站点为空!");
  214. }
  215. else
  216. {
  217. sql = @"INSERT INTO dbo.ICSOASN( ID ,MTIME,MUSER,MUSERNAME ,OASNCode ,VenCode ,WorkPoint,Status)
  218. VALUES (NEWID(),GETDATE(),'" + VenCode + "','" + MUSERNAME + "','" + STNO + "','" + VenCode + "','" + WorkPoint + "','" + Status + "')";
  219. try
  220. {
  221. SqlHelper.ExecuteNonQuery(sql);
  222. }
  223. catch (Exception ex)
  224. {
  225. throw new Exception(ex.Message);
  226. }
  227. }
  228. }
  229. return STNO;
  230. }
  231. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  232. {
  233. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  234. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  235. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  236. }
  237. public string GetSTNOByPerson(string VenCode, string ExpArrivalDate, string WorkPoint)
  238. {
  239. string STNO = string.Empty;
  240. string Date = DateTime.Now.ToString("yy");
  241. string Pre = "DN" + VenCode + Date;
  242. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  243. STNO = GetSerialCode(WorkPoint, "ICSASN", "STNO", Pre, 5);
  244. if (!string.IsNullOrEmpty(STNO))
  245. {
  246. string sql = string.Empty;
  247. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  248. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  249. if (string.IsNullOrWhiteSpace(WorkPoint))
  250. {
  251. throw new Exception("站点为空!");
  252. }
  253. else
  254. {
  255. sql = @" INSERT INTO dbo.ICSOASN
  256. ( ID ,OASNCode,VenCode ,
  257. Status ,MUSER ,MUSERName ,MTIME,WorkPoint)
  258. VALUES (NEWID(),'" + STNO + "','" + VenCode + "','2','" + MUSER + "','" + MUSERNAME + "',getdate(),'" + WorkPoint + "')";
  259. try
  260. {
  261. SqlHelper.ExecuteNonQuery(sql);
  262. }
  263. catch (Exception ex)
  264. {
  265. throw new Exception(ex.Message);
  266. }
  267. }
  268. }
  269. return STNO;
  270. }
  271. /// <summary>
  272. /// 获取供应商列表
  273. /// </summary>
  274. /// <returns></returns>
  275. public DataTable GetVendor()
  276. {
  277. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  278. string sql = @"select '' as F_VenCode,'' as cVenName
  279. union all
  280. SELECT DISTINCT a.F_VenCode,isnull(b.VenName,'') as cVenName FROM dbo.Sys_SRM_User a
  281. LEFT JOIN dbo.ICSVendor b ON a.F_VenCode=b.VenCode and a.F_Location=b.WorkPoint
  282. WHERE a.F_VenCode IS NOT NULL AND a.F_VenCode <>''";
  283. string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  284. if (role != "admin")
  285. {
  286. sql += " and b.WorkPoint in (" + WorkPoint.TrimEnd(',') + ")";
  287. }
  288. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  289. return dt;
  290. }
  291. /// <summary>
  292. /// 获取组织号信息
  293. /// </summary>
  294. /// <returns></returns>
  295. public DataTable GetVendors()
  296. {
  297. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  298. string role = NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode;
  299. string sql = @" select '' as WorkPointCode,'' as WorkPointName
  300. union all
  301. SELECT distinct (b.WorkPointCode),b.WorkPointName FROM Sys_SRM_User a
  302. LEFT JOIN Sys_WorkPoint b ON a.F_Location=b.WorkPointCode where b.WorkPointCode is not null";
  303. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  304. return dt;
  305. }
  306. /// <summary>
  307. /// 选择条码信息
  308. /// </summary>
  309. /// <param name="queryJson"></param>
  310. /// <param name="jqgridparam"></param>
  311. /// <returns></returns>
  312. public DataTable GetSubGridJson_Add(string queryJson, ref Pagination jqgridparam)
  313. {
  314. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  315. DataTable dt = new DataTable();
  316. var queryParam = queryJson.ToJObject();
  317. List<DbParameter> parameter = new List<DbParameter>();
  318. string sql = @"SELECT a.ID,a.ID as ZJID, a.LOTNO,d.InvCode,d.InvName,c.ContainerID,b.Quantity,
  319. a.OASNCode,m.BatchCode,f.OOCode,f.Sequence,d.InvDesc,d.ClassName,d.InvStd,b.Amount
  320. FROM dbo.ICSOASNDetail a
  321. LEFT JOIN dbo.ICSInventoryLot b ON a.LotNo =b.LotNo AND a.WorkPoint=b.WorkPoint
  322. left join ICSExtension m on b.ExtensionID=m.ID and b.WorkPoint=m.WorkPoint
  323. LEFT JOIN dbo.ICSContainerLot c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
  324. LEFT JOIN dbo.ICSInventory d ON b.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
  325. left join ICSInventoryLotDetail e on b.LotNo=e.LotNo and b.WorkPoint=e.WorkPoint
  326. LEFT JOIN dbo.ICSOutsourcingOrder f ON e.TransCode=f.OOCode AND e.TransSequence=f.Sequence
  327. WHERE 1=1
  328. AND a.OASNCode='" + queryParam["STNO"].ToString() + "' and a.WorkPoint='" + queryParam["WorkPoint"].ToString() + "' ";
  329. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  330. }
  331. /// <summary>
  332. /// 选择条码
  333. /// </summary>
  334. /// <returns></returns>
  335. public DataTable GetInfoBySelectItemCode(string queryJson, ref Pagination jqgridparam,string WorkPoint)
  336. {
  337. var queryParam = queryJson.ToJObject();
  338. List<DbParameter> parameter = new List<DbParameter>();
  339. string sql = @" SELECT a.ID, a.LotNO,d.InvCode,d.InvName,a.Quantity,a.TYPE,
  340. g.ProjectCode,e.OOCode,e.Sequence,d.InvDesc,d.ClassName,d.INVSTD,g.BatchCode,a.Amount,a.WorkPoint
  341. FROM dbo.ICSInventoryLot a
  342. left join ICSExtension g on a.ExtensionID=g.ID and a.WorkPoint=g.WorkPoint
  343. LEFT JOIN dbo.ICSContainerLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  344. LEFT JOIN dbo.ICSOASNDetail c ON a.LotNO=c.LotNO AND a.WorkPoint=c.WorkPoint
  345. LEFT JOIN dbo.ICSInventory d ON a.InvCode=d.InvCode AND a.WorkPoint=d.WorkPoint
  346. left join ICSInventoryLotDetail f on a.LotNo=f.LotNo and a.WorkPoint=f.WorkPoint
  347. LEFT JOIN dbo.ICSOutsourcingOrder e ON f.TransCode=e.OOCode AND f.TransSequence=e.Sequence
  348. WHERE c.LotNo is null and B.LotNo IS NULL and ISNULL(a.EATTRIBUTE1,'') ='' and a.Type='201' AND e.Status<>'3' ";
  349. //AND a.TYPE='采购'";
  350. if (!string.IsNullOrEmpty(queryJson))
  351. {
  352. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  353. sql += " and d.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  354. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  355. sql += " and d.InvName like '%" + queryParam["InvName"].ToString() + "%'";
  356. if (!string.IsNullOrWhiteSpace(queryParam["OrderNo"].ToString()))
  357. sql += " and g.ProjectCode like '%" + queryParam["OrderNo"].ToString() + "%'";
  358. if (!string.IsNullOrWhiteSpace(queryParam["TransNo"].ToString()))
  359. sql += " and e.OOCode like '%" + queryParam["TransNo"].ToString() + "%'";
  360. if (!string.IsNullOrWhiteSpace(queryParam["TransLine"].ToString()))
  361. sql += " and e.Sequence like '%" + queryParam["TransLine"].ToString() + "%'";
  362. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  363. sql += " and e.VenCode like '%" + queryParam["VenCode"].ToString() + "%'";
  364. }
  365. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  366. sql += " and a.WorkPoint='" + WorkPoint + "'";
  367. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  368. }
  369. public string CheckSTNO_ItemCode(string JsonData, string STNO, string WorkPoint)
  370. {
  371. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  372. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  373. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  374. string msg = "";
  375. string sql = string.Empty;
  376. sql = @"
  377. INSERT INTO dbo.ICSOASNDetail
  378. ( ID ,OASNCode ,Sequence ,MUSER ,
  379. LotNo , Quantity ,Amount ,ODNQuantity ,ODNAmount ,MUSERName,
  380. MTIME,WorkPoint)
  381. SELECT NEWID(),'" + STNO + "',ROW_NUMBER()over(partition by LotNO order by mtime desc),'" + MUSER + @"',
  382. a.LotNO,a.Quantity,a.Quantity*Amount as Amount,0,0,'" + MUSERNAME + @"',
  383. getdate()," + WorkPoint.TrimEnd(',') + @"
  384. FROM dbo.ICSInventoryLot a
  385. WHERE a.ID IN (" + JsonData.TrimEnd(',') + ")";
  386. try
  387. {
  388. SqlHelper.ExecuteNonQuery(sql);
  389. }
  390. catch (Exception ex)
  391. {
  392. throw new Exception(ex.Message);
  393. }
  394. return msg;
  395. }
  396. /// <summary>
  397. /// 获取箱号主表信息
  398. /// </summary>
  399. /// <param name="queryJson"></param>
  400. /// <param name="jqgridparam"></param>
  401. /// <returns></returns>
  402. public DataTable ASNCartonGetCartonGridJson(string queryJson, ref Pagination jqgridparam, string WorkPoint)
  403. {
  404. string sql = string.Empty;
  405. DataTable dt = new DataTable();
  406. var queryParam = queryJson.ToJObject();
  407. List<DbParameter> parameter = new List<DbParameter>();
  408. if (queryParam["Type"].ToString()== "ContainerType01")
  409. {
  410. sql = @" SELECT DISTINCT a.ContainerCode,a.ID,
  411. c.MUSERName, a.MTIME,Dil.F_ItemName
  412. FROM ICSContainer a
  413. LEFT JOIN dbo.ICSContainerLot c ON a.ID=c.ContainerID and a.WorkPoint=c.WorkPoint
  414. left join dbo.ICSInventoryLot lot on c.LotNo=lot.LotNo and a.WorkPoint=lot.WorkPoint and lot.Type='201'
  415. left join Sys_SRM_ItemsDetail Dil on F_ItemId='6230217e-4413-4427-9bec-c67ba789eca9' and F_EnabledMark='1' and a.ContainerType=Dil.F_ItemCode
  416. WHERE
  417. a.ID not IN
  418. (SELECT b.ContainerID FROM dbo.ICSOASNDetail a inner JOIN dbo.ICSContainerLot b ON a.LotNO =b.LotNO AND a.WorkPoint=b.WorkPoint)
  419. and a.EATTRIBUTE1='2' and a.ContainerID=''
  420. ";
  421. }
  422. else
  423. {
  424. sql = @" SELECT DISTINCT a.ContainerCode,a.ID,
  425. c.MUSERName, a.MTIME,Dil.F_ItemName
  426. FROM ICSContainer a
  427. LEFT JOIN dbo.ICSContainerLot c ON a.ID=c.ContainerID and a.WorkPoint=c.WorkPoint
  428. left join dbo.ICSInventoryLot lot on c.LotNo=lot.LotNo and a.WorkPoint=lot.WorkPoint and lot.Type='201'
  429. left join Sys_SRM_ItemsDetail Dil on F_ItemId='6230217e-4413-4427-9bec-c67ba789eca9' and F_EnabledMark='1' and a.ContainerType=Dil.F_ItemCode
  430. left join ICSContainer xz on a.ID=xz.ContainerID and a.WorkPoint=xz.WorkPoint
  431. WHERE
  432. xz.ID not IN
  433. (SELECT b.ContainerID FROM dbo.ICSOASNDetail a inner JOIN dbo.ICSContainerLot b ON a.LotNO =b.LotNO AND a.WorkPoint=b.WorkPoint)
  434. and a.EATTRIBUTE1='2'
  435. ";
  436. }
  437. if (!string.IsNullOrWhiteSpace(queryJson))
  438. {
  439. if (!string.IsNullOrWhiteSpace(queryParam["CartonNo"].ToString()))
  440. {
  441. sql += " and a.ContainerID like '%" + queryParam["CartonNo"].ToString() + "%' ";
  442. }
  443. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  444. {
  445. sql += " and a.EATTRIBUTE8 = '" + queryParam["VenCode"].ToString() + "' ";
  446. }
  447. if (!string.IsNullOrWhiteSpace(queryParam["Type"].ToString()))
  448. {
  449. sql += " and a.ContainerType = '" + queryParam["Type"].ToString() + "' ";
  450. }
  451. }
  452. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  453. {
  454. sql += " and a.WorkPoint='" + WorkPoint + "'";
  455. }
  456. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  457. }
  458. /// <summary>
  459. /// 箱号子表查询
  460. /// </summary>
  461. /// <param name="CartonNo"></param>
  462. /// <param name="jqgridparam"></param>
  463. /// <returns></returns>
  464. public DataTable GetCartonSubGridJson(string CartonNo, ref Pagination jqgridparam)
  465. {
  466. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  467. DataTable dt = new DataTable();
  468. //var queryParam = queryJson.ToJObject();
  469. List<DbParameter> parameter = new List<DbParameter>();
  470. string sql = @"select a.LotNo,a.ID,c.InvCode,d.InvName,f.TransCode,f.TransSequence,d.InvDesc,d.InvStd
  471. from ICSContainerLot a
  472. left join ICSContainer b on a.ContainerID=b.ID and a.WorkPoint=b.WorkPoint
  473. left join ICSInventoryLot c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  474. left join ICSInventory d on c.InvCode=d.InvCode and c.WorkPoint=d.WorkPoint
  475. left join ICSInventoryLotDetail f on c.LotNo=f.LotNo and f.WorkPoint=c.WorkPoint
  476. left join ICSOutsourcingOrder e on f.TransCode=e.OOCode and f.TransSequence=e.Sequence and f.WorkPoint=e.WorkPoint
  477. WHERE a.ContainerID='" + CartonNo + "' and a.WorkPoint='" + WorkPoint + "'";
  478. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  479. }
  480. public string CheckSTNO_CartonNo(string JsonData, string STNO, string WorkPoint)
  481. {
  482. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  483. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  484. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  485. string msg = "";
  486. string sql = string.Empty;
  487. sql = @"INSERT INTO dbo.ICSOASNDetail
  488. ( ID ,OASNCode ,Sequence ,MUSER ,
  489. LotNo , Quantity ,Amount ,ODNQuantity ,ODNAmount ,MUSERName,
  490. MTIME,WorkPoint)
  491. SELECT NEWID(),'" + STNO + "',row_number(),'" + MUSER + @"',
  492. a.LotNO,b.Quantity,b.Quantity*b.Amount as Amount,0,0,'" + MUSERNAME + @"',
  493. ,getdate()," + WorkPoint.TrimEnd(',') + @"
  494. FROM dbo.ICSContainerLot a
  495. left JOIN dbo.ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
  496. LEFT JOIN dbo.ICSInventory c ON c.InvCode=b.InvCode AND a.WorkPoint=c.WorkPoint
  497. WHERE a.ContainerID IN (" + JsonData.TrimEnd(',') + ") and a.WorkPoint='" + WorkPoint + "'";
  498. try
  499. {
  500. SqlHelper.ExecuteNonQuery(sql);
  501. }
  502. catch (Exception ex)
  503. {
  504. throw new Exception(ex.Message);
  505. }
  506. return msg;
  507. }
  508. /// <summary>
  509. /// 删除送货单内的条码或者箱号
  510. /// </summary>
  511. /// <param name="keyValue"></param>
  512. /// <returns></returns>
  513. public string DeleteInfo(string keyValue,string WorkPoint)
  514. {
  515. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  516. string msg = "";
  517. string sql = string.Format(@" DELETE FROM dbo.ICSOASNDetail
  518. WHERE ID IN (
  519. SELECT ID FROM dbo.ICSOASNDetail WHERE LotNo IN (
  520. SELECT LotNo FROM dbo.ICSContainerLot WHERE ContainerID IN (
  521. SELECT a.ContainerID
  522. FROM dbo.ICSContainerLot a
  523. LEFT JOIN dbo.ICSOASNDetail b ON a.LotNO=b.LotNo AND a.WorkPoint=b.WorkPoint
  524. WHERE b.ID IN ({0}) AND a.WorkPoint='{1}')
  525. ))", keyValue.TrimEnd(','), WorkPoint);
  526. SqlHelper.ExecuteNonQuery(sql);
  527. sql = string.Format(@" DELETE
  528. FROM dbo.ICSOASNDetail
  529. WHERE ID IN ({0}) and WorkPoint ='{1}' ", keyValue.TrimEnd(','), WorkPoint);
  530. try
  531. {
  532. SqlHelper.ExecuteNonQuery(sql);
  533. }
  534. catch (Exception ex)
  535. {
  536. msg = ex.Message;
  537. }
  538. return msg;
  539. }
  540. /// <summary>
  541. /// 更新送货单
  542. /// </summary>
  543. /// <param name="keyValue"></param>
  544. /// <returns></returns>
  545. public string UpdateSTNO(string keyValue, string EATTRIBUTE1)
  546. {
  547. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  548. string msg = "";
  549. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  550. string[] keyValues = keyValue.Split(',');
  551. string sql = string.Empty;
  552. sql = "UPDATE ICSOASN SET MTIME = getdate() , EATTRIBUTE1='{2}' WHERE OASNCode = {0} AND WorkPoint in ({1})";
  553. sql = string.Format(sql, keyValues[0].TrimStart(',').TrimEnd(','), WorkPoint.Trim(','), EATTRIBUTE1);
  554. SqlHelper.ExecuteNonQuery(sql);
  555. return msg;
  556. }
  557. public int UpDateBySTNO(string keyValue, string Status, string WorkPoint)
  558. {
  559. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  560. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  561. WorkPoint = WorkPoint.Substring(1, WorkPoint.Length - 2);
  562. string sql = string.Empty;
  563. sql = @"UPDATE ICSOASN SET Status = '{1}' WHERE OASNCode IN ({0}) AND WorkPoint in({2})";
  564. sql = string.Format(sql, keyValue.TrimEnd(','), Status, WorkPoint.TrimEnd(','));
  565. return SqlHelper.ExecuteNonQuery(sql);
  566. }
  567. public string GetWWICSASNCode(string RoleEnCode, string WorkPoint)
  568. {
  569. DataTable dt = new DataTable();
  570. string Date = DateTime.Now.ToString("yy");
  571. string Pre = "DN" + RoleEnCode + Date;
  572. string ASNCode = GetSerialCode(WorkPoint, "ICSASN", "STNO", Pre, 5);
  573. return ASNCode;
  574. }
  575. public string SaveWWICSASNAndDetail(string ICSASN, string WorkPoint)
  576. {
  577. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  578. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  579. string msg = "";
  580. string sql = string.Empty;
  581. string ID = Guid.NewGuid().ToString();
  582. string Status;
  583. #region [获取送货单配置信息,判断状态]
  584. string F_ItemName = SqlHelper.GetSHDZDSHItemsDetails("ASNAudit", WorkPoint);
  585. if (!string.IsNullOrWhiteSpace(F_ItemName))
  586. {
  587. Status = "2";
  588. }
  589. else
  590. {
  591. Status = "0";
  592. }
  593. #endregion
  594. JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
  595. foreach (var item in res)
  596. {
  597. JObject jo = (JObject)item;
  598. //创建送货单主表
  599. sql += @" INSERT INTO dbo.ICSOASN
  600. ( ID ,OASNCode ,VenCode,Status,
  601. MUSER ,MUSERName ,MTIME,WorkPoint)
  602. VALUES ( newid(),'{0}','{1}','{2}','{3}','{4}',getdate(),'{5}')";
  603. sql = string.Format(sql, jo["ASNCode"].ToString(), jo["VenCode"].ToString(), Status, MUSER, MUSERNAME, jo["WorkPoint"].ToString());
  604. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
  605. foreach (var detail in resdetail)
  606. {
  607. //创建送货单子表
  608. JObject det = (JObject)detail;
  609. sql += @" INSERT INTO dbo.ICSOASNDetail
  610. ( ID ,OASNCode ,Sequence,LotNo,Quantity,Amount,ODNQuantity,ODNAmount,
  611. MUSER ,MUSERName ,MTIME,WorkPoint)
  612. VALUES ( newid(),'{0}','{1}','{2}','{3}','{4}',0,0,'{5}','{6}',getdate(),'{7}')";
  613. sql = string.Format(sql, jo["ASNCode"].ToString(), det["Sequence"].ToString(), det["LotNo"].ToString(), det["Quantity"].ToString(), det["Amount"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString());
  614. }
  615. }
  616. try
  617. {
  618. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  619. {
  620. }
  621. else
  622. {
  623. msg = "新增失败";
  624. }
  625. }
  626. catch (Exception ex)
  627. {
  628. msg = ex.Message;
  629. }
  630. return msg;
  631. }
  632. public string UpdateWWICSASNAndDetail(string ICSASN)
  633. {
  634. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  635. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  636. string msg = "";
  637. string sql = string.Empty;
  638. string idss = "";
  639. string Code = "";
  640. JArray res = (JArray)JsonConvert.DeserializeObject(ICSASN);
  641. foreach (var item in res)
  642. {
  643. JObject jo = (JObject)item;
  644. JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["Detail"].ToString());
  645. foreach (var detail in resdetail)
  646. {
  647. Code = jo["ASNCode"].ToString();
  648. JObject det = (JObject)detail;
  649. if (string.IsNullOrWhiteSpace(det["ZJID"].ToString()))
  650. {
  651. string DetailID = Guid.NewGuid().ToString();
  652. sql += @"INSERT INTO dbo.ICSOASNDetail
  653. ( ID ,OASNCode ,Sequence,LotNo,Quantity,Amount,ODNQuantity,ODNAmount,
  654. MUSER ,MUSERName ,MTIME,WorkPoint)
  655. VALUES ( '{0}','{1}','{2}','{3}','{4}','{5}',0,0,'{6}','{7}',getdate(),'{8}')";
  656. sql = string.Format(sql, DetailID, jo["ASNCode"].ToString(), det["Sequence"].ToString(), det["LotNo"].ToString(), det["Quantity"].ToString(),
  657. det["Amount"].ToString(), MUSER, MUSERNAME, jo["WorkPoint"].ToString());
  658. idss += "'" + DetailID + "',";
  659. }
  660. else
  661. {
  662. idss += "'" + det["ZJID"].ToString() + "',";
  663. }
  664. }
  665. }
  666. sql += @"DELETE ICSOASNDetail where OASNCode ='{0}' and id not in ({1})";
  667. sql = string.Format(sql, Code, idss.Substring(0, idss.Length - 1));
  668. try
  669. {
  670. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  671. {
  672. }
  673. else
  674. {
  675. msg = "修改失败";
  676. }
  677. }
  678. catch (Exception ex)
  679. {
  680. msg = ex.Message;
  681. }
  682. return msg;
  683. }
  684. public DataTable GetLotByContainer(string Value, string WorkPoint)
  685. {
  686. Value = Value.TrimEnd(',');
  687. string sql = @"
  688. WITH ICSBomALL AS
  689. (
  690. SELECT
  691. ContainerCode AS TContainerCode,
  692. ContainerCode AS PContainerCode,
  693. ContainerCode AS ContainerCode,
  694. ID,
  695. ContainerID,
  696. 0 AS [Level],
  697. CAST(1 AS nvarchar(MAX)) AS SortSeq,
  698. CAST('00001' AS nvarchar(MAX)) AS Sort
  699. FROM ICSContainer
  700. WHERE ContainerCode in ({0})
  701. UNION ALL
  702. SELECT
  703. b.TContainerCode,
  704. b.ContainerCode AS PContainerCode,
  705. a.ContainerCode,
  706. a.ID,
  707. a.ContainerID,
  708. b.[Level]+1 AS [Level],
  709. CAST(b.SortSeq AS nvarchar(MAX))+'.'+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS SortSeq,
  710. CAST(b.Sort+'.'+REPLICATE('0',5-len(row_number() over (order by a.ContainerCode)))+CAST(row_number() over (order by a.ContainerCode) AS nvarchar(MAX)) AS nvarchar(MAX)) AS Sort
  711. FROM
  712. ICSContainer a
  713. INNER JOIN ICSBomALL b ON a.ID=b.ContainerID
  714. )
  715. SELECT a.ID,
  716. con.ContainerCode,
  717. con.ContainerName,
  718. a.LotNo,
  719. lotD.TransCode,
  720. lotD.TransSequence,
  721. a.InvCode,
  722. inv.InvName,
  723. inv.InvStd,
  724. inv.InvUnit,
  725. inv.InvDesc,
  726. a.Quantity AS Quantity,
  727. a.Quantity*(a.Amount/a.Quantity) AS Amount,
  728. '' AS WHCode,
  729. '' AS WHName,
  730. '' AS LocationCode,
  731. '' AS LocationName,
  732. ext.BatchCode AS BatchCode,
  733. inv.AmountUnit,
  734. ext.ID AS ExtensionID,
  735. ext.ProjectCode,
  736. ext.Version,
  737. --ext.BatchCode,
  738. ext.Brand,
  739. ext.cFree1,
  740. ext.cFree2,
  741. ext.cFree3,
  742. ext.cFree4,
  743. ext.cFree5,
  744. ext.cFree6,
  745. ext.cFree7,
  746. ext.cFree8,
  747. ext.cFree9,
  748. ext.cFree10,
  749. a.MUSER AS [User],
  750. a.MTIME AS [MTime],
  751. a.WorkPoint
  752. FROM ICSInventoryLot a
  753. left join dbo.ICSInventoryLotDetail lotD on a.LotNo=lotD.LotNo and a.WorkPoint=lotD.WorkPoint
  754. INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
  755. LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
  756. LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
  757. LEFT JOIN ICSBomALL bom ON bom.ID=con.ContainerID
  758. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  759. WHERE bom.ContainerCode in ({0}) AND a.WorkPoint='{1}'
  760. UNION ALL
  761. SELECT a.ID,
  762. con.ContainerCode,
  763. con.ContainerName,
  764. a.LotNo,
  765. lotD.TransCode,
  766. lotD.TransSequence,
  767. a.InvCode,
  768. inv.InvName,
  769. inv.InvStd,
  770. inv.InvUnit,
  771. inv.InvDesc,
  772. a.Quantity AS Quantity,
  773. a.Quantity*(a.Amount/a.Quantity) AS Amount,
  774. '' AS WHCode,
  775. '' AS WHName,
  776. '' AS LocationCode,
  777. '' AS LocationName,
  778. ext.BatchCode AS BatchCode,
  779. inv.AmountUnit,
  780. ext.ID AS ExtensionID,
  781. ext.ProjectCode,
  782. ext.Version,
  783. --ext.BatchCode,
  784. ext.Brand,
  785. ext.cFree1,
  786. ext.cFree2,
  787. ext.cFree3,
  788. ext.cFree4,
  789. ext.cFree5,
  790. ext.cFree6,
  791. ext.cFree7,
  792. ext.cFree8,
  793. ext.cFree9,
  794. ext.cFree10,
  795. a.MUSER AS [User],
  796. a.MTIME AS [MTime],
  797. a.WorkPoint
  798. FROM ICSInventoryLot a
  799. left join dbo.ICSInventoryLotDetail lotD on a.LotNo=lotD.LotNo and a.WorkPoint=lotD.WorkPoint
  800. INNER JOIN ICSExtension ext ON a.ExtensionID=ext.ID AND a.WorkPoint=ext.WorkPoint
  801. LEFT JOIN ICSContainerLot conlot ON a.LotNo=conlot.LotNo AND a.WorkPoint=conlot.WorkPoint
  802. LEFT JOIN ICSContainer con ON conlot.ContainerID=con.ID AND conlot.WorkPoint=con.WorkPoint
  803. LEFT JOIN ICSBomALL bom ON bom.ID=conlot.ContainerID
  804. INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
  805. WHERE bom.ContainerCode in ({0}) AND a.WorkPoint='{1}'
  806. ";
  807. sql = string.Format(sql, Value, WorkPoint);
  808. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  809. return dt;
  810. }
  811. }
  812. }