纽威
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.

3974 lines
215 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
  1. using NFine.Data.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using NFine.Code;
  9. using NFine.Repository;
  10. using System.Data.Common;
  11. using NFine.Domain._03_Entity.SRM;
  12. using ICS.Application.Entity;
  13. using Newtonsoft.Json;
  14. using System.Configuration;
  15. using System.Data.SqlClient;
  16. using ICS.Data;
  17. using NFine.Domain._03_Entity.WMS;
  18. namespace NFine.Application.WMS
  19. {
  20. public class PickMaterialApp : RepositoryFactory<ICSVendor>
  21. {
  22. public static DataTable Invmes = new DataTable();
  23. //工单备料(工单子件)
  24. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  25. {
  26. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  27. DataTable dt = new DataTable();
  28. var queryParam = queryJson.ToJObject();
  29. List<DbParameter> parameter = new List<DbParameter>();
  30. StringBuilder sqlstring = new StringBuilder();
  31. #region [SQL]
  32. // sql = @"select a.ID,b.MOCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,c.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  33. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  34. //from ICSMOPick a
  35. //left join ICSMO b on a.MODetailID=b.MODetailID and a.WorkPoint=b.WorkPoint
  36. //left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  37. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  38. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  39. // sql += " WHERE 1=1 and e.ID is null";
  40. sqlstring.Append($@"select a.MOCode as Code,a.CreateDateTime as MTIME,a.createperson as MUSER,
  41. case when max(d.SourceID) is null then '' else '' end as IsNew,
  42. f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,
  43. f.cFree2 ,f.cFree3 ,f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10
  44. from ICSMO a
  45. inner join ICSMOPick b on b.MODetailID=a.MODetailID and b.WorkPoint=a.WorkPoint
  46. left join ICSMOPickMerge d on d.SourceID=b.ID and d.WorkPoint=b.WorkPoint
  47. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  48. where a.WorkPoint='{WorkPoint}' ");
  49. if (!string.IsNullOrWhiteSpace(queryJson))
  50. {
  51. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  52. {
  53. sqlstring.Append($" and a.MOCode like '%{queryParam["POCode"]}%' ");
  54. }
  55. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  56. {
  57. sqlstring.Append($" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  58. }
  59. }
  60. sqlstring.Append(@" group by a.MOCode, a.WorkPoint,a.CreateDateTime,a.createperson,f.Colspan,f.ProjectCode,
  61. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4,
  62. f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10");
  63. #endregion
  64. return Repository().FindTablePageBySql(sqlstring.ToString(), parameter.ToArray(), ref jqgridparam);
  65. }
  66. //工单备料(工单子件)子表查询
  67. public DataTable GetSubGridJson1(string Code)
  68. {
  69. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  70. DataTable dt = new DataTable();
  71. //var queryParam = queryJson.ToJObject();
  72. List<DbParameter> parameter = new List<DbParameter>();
  73. string sql = @" select a.ID,b.MOCode as Code,a.Sequence+'-'+b.Sequence AS Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,c.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  74. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  75. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  76. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  77. from ICSMOPick a
  78. left join ICSMO b on a.MODetailID=b.MODetailID and a.WorkPoint=b.WorkPoint
  79. left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  80. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  81. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  82. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  83. where b.MOCode='{0}' and a.WorkPoint='{1}'";
  84. sql = string.Format(sql, Code, WorkPoint);
  85. return Repository().FindTableBySql(sql.ToString());
  86. }
  87. //工单领料(发料申请)
  88. public DataTable GetGridJson2(string queryJson, ref Pagination jqgridparam)
  89. {
  90. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  91. DataTable dt = new DataTable();
  92. var queryParam = queryJson.ToJObject();
  93. List<DbParameter> parameter = new List<DbParameter>();
  94. StringBuilder sqlString = new StringBuilder();
  95. #region [SQL]
  96. // select a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  97. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  98. // from ICSMOApply a
  99. // left join ICSWarehouse b on a.WHCode = b.WarehouseCode and a.WorkPoint = b.WorkPoint
  100. // left join ICSInventory d on a.InvCode = d.InvCode and a.WorkPoint = d.WorkPoint
  101. // left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  102. sqlString.Append($@"
  103. SELECT * from(select row_number() over(partition by a.ApplyCode ORDER BY a.ApplyCode) as row,
  104. a.ApplyCode as Code,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.createperson as MUSER,a.WHCode,detail.LocationCode AS Area,
  105. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  106. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,
  107. case when max(e.SourceID) is null then '' else '' end as IsNew,f.Colspan ,
  108. g.Status, ISNULL(p.PrintCount, 0) as PrintCount,
  109. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  110. --case when sum(a.Quantity) =sum(IssueQuantity) and a.MUSERName != 'JOB' then ''
  111. --else (case when sum(a.Quantity) =sum(IssueQuantity) and a.MUSERName = 'JOB' then '' else '' end) end as Status,
  112. f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,
  113. f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  114. case when a.MUSER!= 'JOB' then a.MUSER else '' end AS PickName
  115. from ICSMOApply a
  116. left JOIN ICSInventory b ON b.InvCode=a.InvCode
  117. LEFT JOIN ICSPrintCount p ON a.APPlyCode=p.TransCode
  118. LEFT JOIN ICSInventoryDetail detail ON b.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  119. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  120. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  121. left join (SELECT ApplyCode,
  122. case when sum(Quantity) =sum(IssueQuantity) and MUSERName != 'JOB' then ''
  123. else (case when sum(Quantity) =sum(IssueQuantity) and MUSERName = 'JOB' AND sum(IssueQuantity)>0 then ''
  124. else '' end) end as Status
  125. from ICSMOApply where WorkPoint='{WorkPoint}' and EATTRIBUTE!='17' group by ApplyCode,MUSERName) g on a.ApplyCode = g.ApplyCode
  126. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.ApplyCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  127. left join Sys_SRM_ItemsDetail j on j.F_Define3='HGAreaConfig' AND j.F_Define1=a.WHCode AND j.F_Define4=a.WorkPoint and detail.LocationCode = j.F_Define2
  128. where a.WorkPoint='{WorkPoint}' and a.EATTRIBUTE!='17'");
  129. if (!string.IsNullOrWhiteSpace(queryJson))
  130. {
  131. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  132. {
  133. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  134. }
  135. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  136. {
  137. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  138. }
  139. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  140. {
  141. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  142. }
  143. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  144. {
  145. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  146. }
  147. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  148. {
  149. sqlString.Append($@" and a.OrderNumber like '%{queryParam["Order"]}%' ");
  150. }
  151. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  152. {
  153. sqlString.Append($@" and (j.F_Id is null OR detail.LocationCode is null OR detail.LocationCode='') ");
  154. }
  155. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  156. {
  157. sqlString.Append($@" and a.CreateDateTime >='{queryParam["CreateDate"].ToDate()}' and a.CreateDateTime <'{queryParam["CreateDate"].ToDate().AddDays(+1)}' ");
  158. }
  159. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  160. {
  161. sqlString.Append($@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ");
  162. }
  163. }
  164. sqlString.Append(@"group by a.ApplyCode, a.WorkPoint,a.CreateDateTime,a.createperson,
  165. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  166. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,g.Status,
  167. a.WHCode,detail.LocationCode,a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  168. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,a.MUSERName,a.MUSER,p.PrintCount) as t where t.row=1");
  169. if (!string.IsNullOrWhiteSpace(queryParam["Status"].ToString()))
  170. {
  171. if (queryParam["Status"].ToString() == "3")
  172. {
  173. sqlString.Append($@" AND t.Status='已过账' ");
  174. }
  175. else if (queryParam["Status"].ToString() == "2")
  176. {
  177. sqlString.Append($@" AND t.Status='已配料' ");
  178. }
  179. else if (queryParam["Status"].ToString() == "1")
  180. {
  181. sqlString.Append($@" AND t.Status='未配料' ");
  182. }
  183. }
  184. #endregion
  185. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  186. }
  187. //工单领料(发料申请)子表查询
  188. public DataTable GetSubGridJson2(string queryJson, string Code, ref Pagination jqgridparam)
  189. {
  190. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  191. DataTable dt = new DataTable();
  192. var queryParam = queryJson.ToJObject();
  193. List<DbParameter> parameter = new List<DbParameter>();
  194. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  195. a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,a.OrderNumber,
  196. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  197. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.InvDescribe,a.Unit,a.StockIndicator,
  198. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,detail.LocationCode AS Area,a.SAPSequence,
  199. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  200. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  201. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  202. from ICSMOApply a
  203. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  204. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  205. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  206. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  207. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  208. where a.ApplyCode='{0}' and a.WorkPoint='{1}' and a.EATTRIBUTE!='17'";
  209. if (!string.IsNullOrWhiteSpace(queryJson))
  210. {
  211. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  212. {
  213. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  214. }
  215. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  216. {
  217. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  218. }
  219. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  220. {
  221. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  222. }
  223. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  224. {
  225. sql += $@" and a.OrderNumber like '%{queryParam["Order"]}%' ";
  226. }
  227. //if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  228. //{
  229. // sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  230. // WHERE
  231. // F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  232. //}
  233. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  234. {
  235. sql += $@" and a.CreateDateTime >='{queryParam["CreateDate"].ToDate()}' and a.CreateDateTime <'{queryParam["CreateDate"].ToDate().AddDays(+1)}' ";
  236. }
  237. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  238. {
  239. sql += $@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ";
  240. }
  241. }
  242. sql += " ) c WHERE c.row=1 ";
  243. sql = string.Format(sql, Code, WorkPoint);
  244. //return Repository().FindTableBySql(sql.ToString());
  245. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  246. }
  247. //售后领料
  248. public DataTable GetGridJson12(string queryJson, ref Pagination jqgridparam)
  249. {
  250. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  251. DataTable dt = new DataTable();
  252. var queryParam = queryJson.ToJObject();
  253. List<DbParameter> parameter = new List<DbParameter>();
  254. StringBuilder sqlString = new StringBuilder();
  255. #region [SQL]
  256. // select a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  257. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  258. // from ICSMOApply a
  259. // left join ICSWarehouse b on a.WHCode = b.WarehouseCode and a.WorkPoint = b.WorkPoint
  260. // left join ICSInventory d on a.InvCode = d.InvCode and a.WorkPoint = d.WorkPoint
  261. // left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  262. sqlString.Append($@"
  263. SELECT * from(select row_number() over(partition by a.ApplyCode ORDER BY a.ApplyCode) as row,
  264. a.ApplyCode as Code,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.createperson as MUSER,a.WHCode,detail.LocationCode AS Area,
  265. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  266. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,
  267. case when max(e.SourceID) is null then '' else '' end as IsNew,f.Colspan,a.CustomerName,a.Pagination,
  268. g.Status,ISNULL(p.PrintCount, 0) as PrintCount,
  269. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  270. f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,
  271. f.cFree4 ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  272. case when a.MUSER!= 'JOB' then a.MUSER else '' end AS PickName
  273. from ICSMOApply a
  274. left JOIN ICSInventory b ON b.InvCode=a.InvCode
  275. LEFT JOIN ICSPrintCount p ON a.APPlyCode=p.TransCode
  276. LEFT JOIN ICSInventoryDetail detail ON b.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  277. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  278. left join (SELECT ApplyCode,
  279. case when sum(Quantity) =sum(IssueQuantity) and MUSERName != 'JOB' then ''
  280. else (case when sum(Quantity) =sum(IssueQuantity) and MUSERName = 'JOB'AND sum(IssueQuantity)>0 then ''
  281. else '' end) end as Status
  282. from ICSMOApply where WorkPoint='{WorkPoint}' and EATTRIBUTE='17' group by ApplyCode,MUSERName) g on a.ApplyCode = g.ApplyCode
  283. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  284. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.ApplyCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  285. where a.WorkPoint='{WorkPoint}' and a.EATTRIBUTE='17' ");
  286. if (!string.IsNullOrWhiteSpace(queryJson))
  287. {
  288. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  289. {
  290. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  291. }
  292. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  293. {
  294. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  295. }
  296. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  297. {
  298. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  299. }
  300. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  301. {
  302. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  303. }
  304. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  305. {
  306. sqlString.Append($@" and a.OrderNumber like '%{queryParam["Order"]}%' ");
  307. }
  308. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  309. {
  310. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  311. WHERE
  312. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  313. }
  314. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  315. {
  316. sqlString.Append($@" and a.CreateDateTime >='{queryParam["CreateDate"].ToDate()}' and a.CreateDateTime <'{queryParam["CreateDate"].ToDate().AddDays(+1)}' ");
  317. }
  318. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  319. {
  320. sqlString.Append($@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ");
  321. }
  322. }
  323. sqlString.Append(@"group by a.ApplyCode, a.WorkPoint,a.CreateDateTime,a.createperson,
  324. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  325. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,g.Status,
  326. a.WHCode,detail.LocationCode,a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  327. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.Unit,a.StockIndicator,a.MUSERName,a.MUSER,p.PrintCount,a.CustomerName,a.Pagination) as t where t.row=1");
  328. if (!string.IsNullOrWhiteSpace(queryParam["Status"].ToString()))
  329. {
  330. if (queryParam["Status"].ToString() == "3")
  331. {
  332. sqlString.Append($@" AND t.Status='已过账' ");
  333. }
  334. else if (queryParam["Status"].ToString() == "2")
  335. {
  336. sqlString.Append($@" AND t.Status='已配料' ");
  337. }
  338. else if (queryParam["Status"].ToString() == "1")
  339. {
  340. sqlString.Append($@" AND t.Status='未配料' ");
  341. }
  342. }
  343. #endregion
  344. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  345. }
  346. //售后领料(子表查询)
  347. public DataTable GetSubGridJson12(string queryJson, string Code)
  348. {
  349. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  350. DataTable dt = new DataTable();
  351. var queryParam = queryJson.ToJObject();
  352. List<DbParameter> parameter = new List<DbParameter>();
  353. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  354. a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName ,a.InvCode,a.OrderNumber,
  355. a.EATTRIBUTE,a.Sets,a.OrderInvCode,a.OrderInvDescribe,a.BillType,a.Remarks,a.Desks,a.DispatchNumber,a.DispatcherName,
  356. a.ReceiverNumber,a.ReceiverName,a.Urgency,a.NeedDate,a.NeedTime,a.RemarksTerm,a.TextNumber,a.InvDescribe,a.Unit,a.StockIndicator,
  357. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,detail.LocationCode AS Area,a.SAPSequence,
  358. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  359. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  360. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  361. from ICSMOApply a
  362. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  363. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  364. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  365. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  366. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  367. where a.ApplyCode='{0}' and a.WorkPoint='{1}' and a.EATTRIBUTE='17'";
  368. if (!string.IsNullOrWhiteSpace(queryJson))
  369. {
  370. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  371. {
  372. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  373. }
  374. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  375. {
  376. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  377. }
  378. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  379. {
  380. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  381. }
  382. if (!string.IsNullOrWhiteSpace(queryParam["Order"].ToString()))
  383. {
  384. sql += $@" and a.OrderNumber like '%{queryParam["Order"]}%' ";
  385. }
  386. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  387. {
  388. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  389. WHERE
  390. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  391. }
  392. if (!string.IsNullOrWhiteSpace(queryParam["CreateDate"].ToString()))
  393. {
  394. sql += $@" and a.CreateDateTime like '%{queryParam["CreateDate"]}%' ";
  395. }
  396. if (!string.IsNullOrWhiteSpace(queryParam["NeedDate"].ToString()))
  397. {
  398. sql += $@" and a.NeedDate like '%{queryParam["NeedDate"]}%' ";
  399. }
  400. }
  401. sql += " ) c WHERE c.row=1 ";
  402. sql = string.Format(sql, Code, WorkPoint);
  403. return Repository().FindTableBySql(sql.ToString());
  404. }
  405. //工单材料出库(材料出库)
  406. public DataTable GetGridJson3(string queryJson, ref Pagination jqgridparam)
  407. {
  408. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  409. DataTable dt = new DataTable();
  410. var queryParam = queryJson.ToJObject();
  411. List<DbParameter> parameter = new List<DbParameter>();
  412. StringBuilder sqlString = new StringBuilder();
  413. #region [SQL]
  414. // sql = @"select a.ID,a.IssueCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode ,b.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  415. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  416. // from ICSMOIssue a
  417. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  418. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  419. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint ";
  420. // sql += " WHERE 1=1 and e.ID is null";
  421. sqlString.Append($@"SELECT * FROM(SELECT row_number ( ) OVER ( partition BY a.IssueCode ORDER BY a.IssueCode ) AS row,
  422. a.IssueCode as Code,a.CreateDateTime as MTIME,a.createperson as MUSER,
  423. case when max(e.SourceID) is null then '' else ''
  424. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  425. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  426. from ICSMOIssue a
  427. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  428. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  429. where a.WorkPoint = '{WorkPoint}' ");
  430. if (!string.IsNullOrWhiteSpace(queryJson))
  431. {
  432. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  433. {
  434. sqlString.Append($@" and a.IssueCode like '%{queryParam["POCode"]}%' ");
  435. }
  436. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  437. {
  438. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  439. }
  440. }
  441. sqlString.Append(@"group by a.IssueCode,a.CreateDateTime,a.createperson,f.Colspan,f.ProjectCode,f.BatchCode,
  442. f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  443. f.cFree8, f.cFree9, f.cFree10 ) AS t WHERE t.row= 1 ");
  444. #endregion
  445. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  446. }
  447. //工单材料出库(材料出库)子表查询
  448. public DataTable GetSubGridJson3(string Code)
  449. {
  450. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  451. DataTable dt = new DataTable();
  452. //var queryParam = queryJson.ToJObject();
  453. List<DbParameter> parameter = new List<DbParameter>();
  454. string sql = @"select a.ID,a.IssueCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode ,b.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  455. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  456. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  457. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  458. from ICSMOIssue a
  459. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  460. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  461. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  462. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  463. where a.IssueCode='{0}' and a.WorkPoint='{1}'";
  464. sql = string.Format(sql, Code, WorkPoint);
  465. return Repository().FindTableBySql(sql.ToString());
  466. }
  467. //委外备料(委外备料)
  468. public DataTable GetGridJson4(string queryJson, ref Pagination jqgridparam)
  469. {
  470. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  471. DataTable dt = new DataTable();
  472. var queryParam = queryJson.ToJObject();
  473. List<DbParameter> parameter = new List<DbParameter>();
  474. StringBuilder sqlString = new StringBuilder();
  475. #region [SQL]
  476. sqlString.Append($@"select * from (select row_number() over(partition by b.OOCode order by b.OOCode) row, b.OOCode as Code,
  477. b.CreateDateTime as MTIME,
  478. b.CreatePerson as MUSER,
  479. case
  480. when max(e.SourceID) is null then ''
  481. else ''
  482. end as IsNew,
  483. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,
  484. f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  485. from ICSOOPick a
  486. inner join ICSOutsourcingOrder b on a.OODetailID = b.OODetailID and a.WorkPoint = b.WorkPoint
  487. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  488. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  489. WHERE b.WorkPoint = '{WorkPoint}' ");
  490. if (!string.IsNullOrWhiteSpace(queryJson))
  491. {
  492. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  493. {
  494. sqlString.Append($@" and a.OOCode like '%{queryParam["POCode"]}%' ");
  495. }
  496. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  497. {
  498. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  499. }
  500. }
  501. sqlString.Append(@" group by b.OOCode,b.CreateDateTime,b.CreatePerson,f.Colspan ,f.ProjectCode ,
  502. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4,
  503. f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10) t where t.row=1");
  504. #endregion
  505. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  506. }
  507. //委外备料(委外备料)子表查询
  508. public DataTable GetSubGridJson4(string Code)
  509. {
  510. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  511. DataTable dt = new DataTable();
  512. //var queryParam = queryJson.ToJObject();
  513. List<DbParameter> parameter = new List<DbParameter>();
  514. string sql = @"select a.ID,b.OOCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,c.WarehouseName ,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  515. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  516. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  517. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  518. from ICSOOPick a
  519. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID and a.WorkPoint=b.WorkPoint
  520. left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  521. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  522. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  523. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  524. where b.OOCode='{0}' and b.WorkPoint='{1}'";
  525. sql = string.Format(sql, Code, WorkPoint);
  526. return Repository().FindTableBySql(sql.ToString());
  527. }
  528. //委外领料(委外发料申请)
  529. public DataTable GetGridJson5(string queryJson, ref Pagination jqgridparam)
  530. {
  531. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  532. DataTable dt = new DataTable();
  533. var queryParam = queryJson.ToJObject();
  534. List<DbParameter> parameter = new List<DbParameter>();
  535. StringBuilder sqlString = new StringBuilder();
  536. #region [SQL]
  537. // sql = @"select a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  538. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  539. // from ICSOApply a
  540. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  541. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  542. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  543. // sql += " WHERE 1=1 and e.ID is null";
  544. sqlString.Append($@"select * from (select row_number() over (partition by a.ApplyCode order by a.ApplyCode ) row, a.ApplyCode as Code,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.CreatePerson as MUSER,
  545. case when max(e.SourceID) is null then ''
  546. else ''
  547. end as IsNew,
  548. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  549. g.Status as Status1,ISNULL(p.PrintCount, 0) as PrintCount,
  550. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  551. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID
  552. from ICSOApply a
  553. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  554. LEFT JOIN ICSPrintCount p ON a.APPlyCode=p.TransCode
  555. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  556. left join (SELECT ApplyCode,
  557. case when sum(Quantity) =sum(IssueQuantity) AND sum(IssueQuantity)>0 then ''
  558. else '' end as Status
  559. from ICSOApply
  560. where WorkPoint='{WorkPoint}'
  561. group by ApplyCode) g on a.ApplyCode = g.ApplyCode
  562. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  563. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  564. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.ApplyCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  565. where a.WorkPoint = '{WorkPoint}'");
  566. if (!string.IsNullOrWhiteSpace(queryJson))
  567. {
  568. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  569. {
  570. sqlString.Append($@" and a.ApplyCode like '%{queryParam["POCode"]}%' ");
  571. }
  572. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  573. {
  574. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  575. }
  576. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  577. {
  578. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  579. }
  580. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  581. {
  582. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  583. }
  584. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  585. {
  586. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  587. WHERE
  588. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  589. }
  590. }
  591. sqlString.Append(@"group by a.ApplyCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  592. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,
  593. f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID,g.Status,p.PrintCount ) t where row=1");
  594. if (!string.IsNullOrWhiteSpace(queryParam["Status1"].ToString()))
  595. {
  596. if (queryParam["Status1"].ToString() == "1")
  597. {
  598. sqlString.Append($@" AND t.Status1='已过账' ");
  599. }
  600. else
  601. {
  602. sqlString.Append($@" AND t.Status1='未过账' ");
  603. }
  604. }
  605. #endregion
  606. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  607. }
  608. //委外领料(委外发料申请)子表查询
  609. public DataTable GetSubGridJson5(string Code, string queryJson, ref Pagination jqgridparam)
  610. {
  611. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  612. DataTable dt = new DataTable();
  613. var queryParam = queryJson.ToJObject();
  614. List<DbParameter> parameter = new List<DbParameter>();
  615. string sql = @"SELECT * FROM (select row_number() over(partition by a.ApplyCode,a.InvCode,a.Sequence ORDER BY a.ApplyCode) as row,
  616. a.ID,a.ApplyCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode, a.SourceCode,a.SourceSequence,a.VenCode,a.VenName,
  617. b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,a.SAPSequence,
  618. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity,detail.LocationCode AS Area,
  619. f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  620. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  621. from ICSOApply a
  622. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  623. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  624. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  625. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  626. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  627. where a.ApplyCode='{0}' and a.WorkPoint='{1}'";
  628. if (!string.IsNullOrWhiteSpace(queryJson))
  629. {
  630. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  631. {
  632. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  633. }
  634. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  635. {
  636. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  637. }
  638. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  639. {
  640. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  641. }
  642. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  643. {
  644. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  645. WHERE
  646. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  647. }
  648. }
  649. sql += " ) c WHERE c.row=1 ";
  650. sql = string.Format(sql, Code, WorkPoint);
  651. //return Repository().FindTableBySql(sql.ToString());
  652. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  653. }
  654. //委外材料出库(委外发料申请)
  655. public DataTable GetGridJson6(string queryJson, ref Pagination jqgridparam)
  656. {
  657. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  658. DataTable dt = new DataTable();
  659. var queryParam = queryJson.ToJObject();
  660. List<DbParameter> parameter = new List<DbParameter>();
  661. StringBuilder sqlString = new StringBuilder();
  662. #region [SQL]
  663. // sql = @"select a.ID,a.IssueCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseCode,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  664. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  665. // from ICSOIssue a
  666. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  667. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  668. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  669. // sql += " WHERE 1=1 and e.ID is null";
  670. sqlString.Append($@"select * from(select row_number() over(partition by a.IssueCode order by a.IssueCode) row, a.IssueCode as Code,
  671. a.CreateDateTime as MTIME,
  672. a.CreatePerson as MUSER,
  673. case
  674. when max(e.SourceID) is null then ''
  675. else ''
  676. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,
  677. f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  678. f.cFree8,f.cFree9,f.cFree10
  679. from ICSOIssue a
  680. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  681. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  682. where a.WorkPoint = '{WorkPoint}'");
  683. if (!string.IsNullOrWhiteSpace(queryJson))
  684. {
  685. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  686. {
  687. sqlString.Append($@" and a.IssueCode like '%{queryParam["POCode"]}%' ");
  688. }
  689. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  690. {
  691. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  692. }
  693. }
  694. sqlString.Append(@"group by a.IssueCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  695. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,
  696. f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10) t where t.row=1");
  697. #endregion
  698. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  699. }
  700. //委外材料出库(委外发料申请)子表查询
  701. public DataTable GetSubGridJson6(string Code)
  702. {
  703. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  704. DataTable dt = new DataTable();
  705. //var queryParam = queryJson.ToJObject();
  706. List<DbParameter> parameter = new List<DbParameter>();
  707. string sql = @"select a.ID,a.IssueCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseCode,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  708. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  709. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  710. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.IssueQuantity as IssueQuantity
  711. from ICSOIssue a
  712. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  713. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  714. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  715. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  716. where a.IssueCode='{0}' and a.WorkPoint='{1}'";
  717. sql = string.Format(sql, Code, WorkPoint);
  718. return Repository().FindTableBySql(sql.ToString());
  719. }
  720. //销售发货(销售发货)
  721. public DataTable GetGridJson7(string queryJson, ref Pagination jqgridparam)
  722. {
  723. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  724. DataTable dt = new DataTable();
  725. var queryParam = queryJson.ToJObject();
  726. List<DbParameter> parameter = new List<DbParameter>();
  727. StringBuilder sqlString = new StringBuilder();
  728. #region [SQL]
  729. // sql = @"select a.ID,a.SDNCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  730. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  731. // from ICSSDN a
  732. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  733. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  734. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  735. // sql += " WHERE 1=1 and a.Type='1' and e.ID is null";
  736. sqlString.Append($@"SELECT * from (SELECT Row_Number() over(partition by a.SDNCode Order by a.SDNCode) as r, a.SDNCode AS Code,
  737. CONVERT(varchar(100),a.CreateDateTime,23) AS MTIME,
  738. a.CreatePerson AS MUSER,
  739. a.CusCode,a.CusName,ISNULL(p.PrintCount, 0) as PrintCount,
  740. (CASE WHEN max(e.SourceID) IS NULL THEN '' ELSE '' END) AS IsNew,
  741. case when max(k.TransCode) is null then '' else '' end as IsOccupy,g.Status as Status1,
  742. f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  743. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10,a.ID
  744. FROM ICSSDN a
  745. LEFT JOIN ICSPrintCount p ON a.SDNCode=p.TransCode
  746. left join (SELECT SDNCode,case when sum(Quantity) =sum(SDNQuantity) AND sum(SDNQuantity)>0 then '' else '' end as Status
  747. from ICSSDN where WorkPoint='{WorkPoint}' group by SDNCode) g on a.SDNCode = g.SDNCode
  748. LEFT JOIN ICSMOPickMerge e ON a.ID = e.SourceID AND a.WorkPoint = e.WorkPoint
  749. LEFT JOIN ICSExtension f ON a.ExtensionID = f.ID AND a.WorkPoint = f.WorkPoint
  750. LEFT JOIN ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  751. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  752. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.SDNCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  753. WHERE a.WorkPoint = '{WorkPoint}' ");
  754. if (!string.IsNullOrWhiteSpace(queryJson))
  755. {
  756. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  757. {
  758. sqlString.Append($" and a.SDNCode like '%{queryParam["POCode"]}%' ");
  759. }
  760. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  761. {
  762. sqlString.Append($" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  763. }
  764. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  765. {
  766. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  767. }
  768. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  769. {
  770. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  771. }
  772. if (!string.IsNullOrWhiteSpace(queryParam["CusCode"].ToString()))
  773. {
  774. sqlString.Append($@" and a.CusCode like '%{queryParam["CusCode"]}%' ");
  775. }
  776. if (!string.IsNullOrWhiteSpace(queryParam["CusName"].ToString()))
  777. {
  778. sqlString.Append($@" and a.CusName like '%{queryParam["CusName"]}%' ");
  779. }
  780. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  781. {
  782. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  783. WHERE
  784. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  785. }
  786. }
  787. sqlString.Append(@"GROUP BY a.SDNCode, a.CreateDateTime, a.CreatePerson, f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  788. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10,a.ID,a.CusCode,a.CusName,p.PrintCount,g.Status) t WHERE t.r=1");
  789. if (!string.IsNullOrWhiteSpace(queryParam["Status1"].ToString()))
  790. {
  791. if (queryParam["Status1"].ToString() == "1")
  792. {
  793. sqlString.Append($@" AND t.Status1='已过账' ");
  794. }
  795. else
  796. {
  797. sqlString.Append($@" AND t.Status1='未过账' ");
  798. }
  799. }
  800. #endregion
  801. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  802. }
  803. //销售发货(销售发货)子表查询
  804. public DataTable GetSubGridJson7(string Code, string queryJson, ref Pagination jqgridparam)
  805. {
  806. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  807. DataTable dt = new DataTable();
  808. var queryParam = queryJson.ToJObject();
  809. List<DbParameter> parameter = new List<DbParameter>();
  810. string sql = @"SELECT * FROM (select row_number() over(partition by a.SDNCode,a.InvCode,a.Sequence ORDER BY a.SDNCode) as row,
  811. a.ID,a.SDNCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode
  812. ,a.WorkPoint,a.Points,a.DeliveryType,a.DeliveryDescribe,a.InvDescribe,a.OtherDescribe,a.CusCode,a.CusName,
  813. a.SalesUnit,a.StockIndicator,a.IsSerialNumber,a.SAPSequence,
  814. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  815. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity,detail.LocationCode AS Area
  816. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  817. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.SDNQuantity as IssueQuantity
  818. from ICSSDN a
  819. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  820. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  821. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  822. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  823. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  824. where a.SDNCode='{0}' and a.WorkPoint='{1}'";
  825. if (!string.IsNullOrWhiteSpace(queryJson))
  826. {
  827. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  828. {
  829. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  830. }
  831. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  832. {
  833. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  834. }
  835. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  836. {
  837. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  838. }
  839. if (!string.IsNullOrWhiteSpace(queryParam["CusCode"].ToString()))
  840. {
  841. sql += $@" and a.CusCode like '%{queryParam["CusCode"]}%' ";
  842. }
  843. if (!string.IsNullOrWhiteSpace(queryParam["CusName"].ToString()))
  844. {
  845. sql += $@" and a.CusName like '%{queryParam["CusName"]}%' ";
  846. }
  847. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  848. {
  849. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  850. WHERE
  851. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  852. }
  853. }
  854. sql += " ) c WHERE c.row=1 ";
  855. sql = string.Format(sql, Code, WorkPoint);
  856. //return Repository().FindTableBySql(sql.ToString());
  857. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  858. }
  859. //其它出库(其它出库)
  860. public DataTable GetGridJson8(string queryJson, ref Pagination jqgridparam)
  861. {
  862. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  863. DataTable dt = new DataTable();
  864. var queryParam = queryJson.ToJObject();
  865. List<DbParameter> parameter = new List<DbParameter>();
  866. StringBuilder sqlString = new StringBuilder();
  867. #region [SQL]
  868. // sql = @"select a.ID,a.OutCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  869. //case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  870. //from ICSOtherOut a
  871. //left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  872. //left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  873. //left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  874. // sql += " WHERE 1=1 and e.ID is null ";
  875. sqlString.Append($@"select * from(select row_number() over(partition by a.OutCode order by a.OutCode) row, a.OutCode as Code,
  876. CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,
  877. a.CreatePerson as MUSER,
  878. case
  879. when max(e.SourceID) is null then ''
  880. else ''
  881. end as IsNew,
  882. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  883. g.Status as Status1,ISNULL(p.PrintCount, 0) as PrintCount,
  884. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  885. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID
  886. from ICSOtherOut a
  887. LEFT JOIN ICSPrintCount p ON a.OutCode=p.TransCode
  888. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  889. left join (SELECT OutCode,case when sum(Quantity) =sum(OutQuantity) AND sum(OutQuantity)>0 then '' else '' end as Status
  890. from ICSOtherOut where WorkPoint='{WorkPoint}' group by OutCode) g on a.OutCode = g.OutCode
  891. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  892. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  893. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  894. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.OutCode=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  895. where a.WorkPoint = '{WorkPoint}'");
  896. #endregion
  897. if (!string.IsNullOrWhiteSpace(queryJson))
  898. {
  899. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  900. {
  901. sqlString.Append($@" and a.OutCode like '%{queryParam["POCode"]}%' ");
  902. }
  903. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  904. {
  905. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  906. }
  907. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  908. {
  909. sqlString.Append($@" and a.WHCode like '%{queryParam["WHCode"]}%' ");
  910. }
  911. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  912. {
  913. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  914. }
  915. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  916. {
  917. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  918. WHERE
  919. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  920. }
  921. }
  922. sqlString.Append(@" group by a.OutCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,f.BatchCode,
  923. f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,
  924. f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID,g.Status,p.PrintCount) t where t.row=1");
  925. if (!string.IsNullOrWhiteSpace(queryParam["Status1"].ToString()))
  926. {
  927. if (queryParam["Status1"].ToString() == "1")
  928. {
  929. sqlString.Append($@" AND t.Status1='已过账' ");
  930. }
  931. else
  932. {
  933. sqlString.Append($@" AND t.Status1='未过账' ");
  934. }
  935. }
  936. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  937. }
  938. //其它出库(其它出库)子表查询
  939. public DataTable GetSubGridJson8(string Code, string queryJson, ref Pagination jqgridparam)
  940. {
  941. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  942. DataTable dt = new DataTable();
  943. var queryParam = queryJson.ToJObject();
  944. List<DbParameter> parameter = new List<DbParameter>();
  945. string sql = @"SELECT * FROM (select row_number() over(partition by a.OutCode,a.InvCode,a.Sequence ORDER BY a.OutCode) as row,
  946. a.ID,a.OutCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.Quantity,
  947. a.InvCode,a.WorkPoint,a.OrderType, a.TypeDescribe,a.CostCenter,a.Remarks,a.PersonNumber,a.InvDescribe,
  948. a.Unit,a.StockIndicator,a.SAPSequence,
  949. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  950. case when e.SourceID is null then '' else '' end as IsNew,detail.LocationCode AS Area
  951. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  952. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.OutQuantity as IssueQuantity
  953. from ICSOtherOut a
  954. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  955. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  956. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.WHCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  957. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  958. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  959. where a.OutCode='{0}' and a.WorkPoint='{1}'";
  960. if (!string.IsNullOrWhiteSpace(queryJson))
  961. {
  962. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  963. {
  964. sql += " and a.WHCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  965. }
  966. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  967. {
  968. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  969. }
  970. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  971. {
  972. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  973. }
  974. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  975. {
  976. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  977. WHERE
  978. F_Define3='HGAreaConfig' AND F_Define1=a.WHCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  979. }
  980. }
  981. sql += " ) c WHERE c.row=1 ";
  982. sql = string.Format(sql, Code, WorkPoint);
  983. return Repository().FindTableBySql(sql.ToString());
  984. }
  985. //借用(借用)
  986. public DataTable GetGridJson9(string queryJson, ref Pagination jqgridparam)
  987. {
  988. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  989. DataTable dt = new DataTable();
  990. var queryParam = queryJson.ToJObject();
  991. List<DbParameter> parameter = new List<DbParameter>();
  992. StringBuilder sqlString = new StringBuilder();
  993. #region [SQL]
  994. // sql = @"
  995. //select a.ID,a.BrrowCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  996. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  997. // from ICSBrrow a
  998. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  999. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1000. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  1001. // sql += " WHERE 1=1 and e.ID is null ";
  1002. sqlString.Append($@"select * from(select row_number() over(partition by a.BrrowCode order by a.BrrowCode) row, a.BrrowCode as Code,
  1003. a.CreateDateTime as MTIME,
  1004. a.CreatePerson as MUSER,
  1005. case
  1006. when max(e.SourceID) is null then ''
  1007. else ''
  1008. end as IsNew,f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,
  1009. f.cFree1,f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,
  1010. f.cFree8,f.cFree9,f.cFree10
  1011. from ICSBrrow a
  1012. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  1013. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  1014. where a.WorkPoint = '{WorkPoint}'");
  1015. if (!string.IsNullOrWhiteSpace(queryJson))
  1016. {
  1017. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1018. {
  1019. sqlString.Append($@" and a.BrrowCode like '%{queryParam["POCode"]}%' ");
  1020. }
  1021. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1022. {
  1023. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  1024. }
  1025. }
  1026. sqlString.Append(@"group by a.BrrowCode,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  1027. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,
  1028. f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,
  1029. f.cFree10) t where t.row=1");
  1030. #endregion
  1031. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  1032. }
  1033. //借用(借用)子表查询
  1034. public DataTable GetSubGridJson9(string Code)
  1035. {
  1036. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1037. DataTable dt = new DataTable();
  1038. //var queryParam = queryJson.ToJObject();
  1039. List<DbParameter> parameter = new List<DbParameter>();
  1040. string sql = @"select a.ID,a.BrrowCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  1041. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  1042. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1043. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.BrrowQuantity as IssueQuantity
  1044. from ICSBrrow a
  1045. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1046. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1047. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  1048. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1049. where a.BrrowCode='{0}' and a.WorkPoint='{1}'";
  1050. sql = string.Format(sql, Code, WorkPoint);
  1051. return Repository().FindTableBySql(sql.ToString());
  1052. }
  1053. //物料调拨
  1054. public DataTable GetGridJson10(string queryJson, ref Pagination jqgridparam)
  1055. {
  1056. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1057. DataTable dt = new DataTable();
  1058. var queryParam = queryJson.ToJObject();
  1059. List<DbParameter> parameter = new List<DbParameter>();
  1060. StringBuilder sqlString = new StringBuilder();
  1061. #region [SQL]
  1062. // sql = @"
  1063. //select a.ID,a.BrrowCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  1064. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  1065. // from ICSBrrow a
  1066. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1067. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1068. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  1069. // sql += " WHERE 1=1 and e.ID is null ";
  1070. sqlString.Append($@"select * from (select row_number() over(partition by a.TransferNO order by a.TransferNO) row,
  1071. a.TransferNO as Code,a.ID,CONVERT(varchar(100),a.CreateDateTime,23) as MTIME,a.CreatePerson as MUSER,
  1072. g.Status as Status1,ISNULL(p.PrintCount, 0) as PrintCount,
  1073. f.Colspan,f.ProjectCode,f.BatchCode,f.Version,f.Brand,f.cFree1,
  1074. case when max(k.TransCode) is null then '' else '' end as IsOccupy,
  1075. f.cFree2,f.cFree3,f.cFree4,f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10
  1076. from ICSTransfer a
  1077. LEFT JOIN ICSPrintCount p ON a.TransferNO=p.TransCode
  1078. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  1079. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  1080. left join (SELECT TransferNO,case when sum(Quantity) =sum(TransferQuantity) AND sum(TransferQuantity)>0 then '' else '' end as Status
  1081. from ICSTransfer where WorkPoint='{WorkPoint}' group by TransferNO) g on a.TransferNO = g.TransferNO
  1082. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1083. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.FromWarehouseCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  1084. left join (select distinct TransCode,TransType,WorkPoint from dbo.ICSWareHouseLotInfoLog ) k on a.TransferNO=k.TransCode and a.WorkPoint=k.WorkPoint and k.TransType='15'
  1085. where a.WorkPoint = '{WorkPoint}' and a.Status = '2'");
  1086. if (!string.IsNullOrWhiteSpace(queryJson))
  1087. {
  1088. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1089. {
  1090. sqlString.Append($@" and a.TransferNO like '%{queryParam["POCode"]}%' ");
  1091. }
  1092. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1093. {
  1094. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  1095. }
  1096. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  1097. {
  1098. sqlString.Append($@" and a.ToWarehouseCode like '%{queryParam["WHCode"]}%' ");
  1099. }
  1100. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  1101. {
  1102. sqlString.Append($@" and detail.LocationCode like '%{queryParam["Area"]}%' ");
  1103. }
  1104. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  1105. {
  1106. sqlString.Append($@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  1107. WHERE
  1108. F_Define3='HGAreaConfig' AND F_Define1=a.FromWarehouseCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ");
  1109. }
  1110. }
  1111. sqlString.Append(@"group by a.TransferNO,a.CreateDateTime,a.CreatePerson,f.Colspan,f.ProjectCode,
  1112. f.BatchCode,f.Version,f.Brand,f.cFree1,f.cFree2,f.cFree3,f.cFree4,
  1113. f.cFree5,f.cFree6,f.cFree7,f.cFree8,f.cFree9,f.cFree10,a.ID,a.TransferQuantity,g.Status,p.PrintCount) t where t.row=1");
  1114. if (!string.IsNullOrWhiteSpace(queryParam["Status"].ToString()))
  1115. {
  1116. if (queryParam["Status1"].ToString() == "1")
  1117. {
  1118. sqlString.Append($@" AND t.Status1='已过账' ");
  1119. }
  1120. else
  1121. {
  1122. sqlString.Append($@" AND t.Status1='未过账' ");
  1123. }
  1124. }
  1125. #endregion
  1126. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  1127. }
  1128. //物料调拨子表查询
  1129. public DataTable GetSubGridJson10(string Code, string queryJson, ref Pagination jqgridparam)
  1130. {
  1131. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1132. DataTable dt = new DataTable();
  1133. var queryParam = queryJson.ToJObject();
  1134. List<DbParameter> parameter = new List<DbParameter>();
  1135. string sql = @"SELECT * from (select row_number() over(partition by a.TransferNO,a.InvCode,
  1136. a.Sequence ORDER BY a.TransferNO) as row, a.ID,a.TransferNO as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.FromWarehouseCode as WHCode,b.WarehouseName,detail.LocationCode AS Area,
  1137. a.InvCode,a.ToWarehouseCode,a.EATTRIBUTE1 AS ReceiveWork,a.WorkPoint,a.OrderType,
  1138. a.TypeDescribe,a.Remarks,a.PersonNumber,a.InvDescribe,
  1139. a.Unit,a.StockIndicator,a.ReceiveInvCode,a.ReceiveInvDescribe,
  1140. a.ReceiveStock,a.ReceiveSales,a.ReceiveSequence,a.Remark2,
  1141. d.InvName,d.InvDesc,d.InvStd,d.InvUnit,a.SAPSequence,
  1142. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  1143. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1144. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.TransferQuantity as IssueQuantity
  1145. from ICSTransfer a
  1146. left join ICSWarehouse b on a.FromWarehouseCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1147. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1148. LEFT JOIN ICSInventoryDetail detail ON d.InvCode=detail.INVCode AND a.FromWarehouseCode=detail.WHCode AND a.WorkPoint=detail.WorkPoint
  1149. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  1150. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1151. where a.TransferNO='{0}' and b.WorkPoint='{1}'";
  1152. if (!string.IsNullOrWhiteSpace(queryJson))
  1153. {
  1154. if (!string.IsNullOrWhiteSpace(queryParam["WHCode"].ToString()))
  1155. {
  1156. sql += " and a.ToWarehouseCode like '%" + queryParam["WHCode"].ToString() + "%' ";
  1157. }
  1158. if (!string.IsNullOrWhiteSpace(queryParam["Area"].ToString()))
  1159. {
  1160. sql += " and detail.LocationCode like '%" + queryParam["Area"].ToString() + "%' ";
  1161. }
  1162. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1163. {
  1164. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  1165. }
  1166. if (!string.IsNullOrWhiteSpace(queryParam["Container"].ToString()) && queryParam["Container"].ToString() == "2")
  1167. {
  1168. sql += $@" and (detail.LocationCode not in (SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  1169. WHERE
  1170. F_Define3='HGAreaConfig' AND F_Define1=a.FromWarehouseCode AND F_Define4=a.WorkPoint) OR detail.LocationCode is null OR detail.LocationCode='') ";
  1171. }
  1172. }
  1173. sql += " ) as t where t.row=1";
  1174. sql = string.Format(sql, Code, WorkPoint);
  1175. //return Repository().FindTableBySql(sql.ToString());
  1176. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1177. }
  1178. //两步调拨
  1179. public DataTable GetGridJson11(string queryJson, ref Pagination jqgridparam)
  1180. {
  1181. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1182. DataTable dt = new DataTable();
  1183. var queryParam = queryJson.ToJObject();
  1184. List<DbParameter> parameter = new List<DbParameter>();
  1185. StringBuilder sqlString = new StringBuilder();
  1186. #region [SQL]
  1187. // sql = @"
  1188. //select a.ID,a.BrrowCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  1189. // case when e.SourceID is null then '未合并' else '已合并' end as IsNew,a.Quantity
  1190. // from ICSBrrow a
  1191. // left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1192. // left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1193. // left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint";
  1194. // sql += " WHERE 1=1 and e.ID is null ";
  1195. sqlString.Append($@"select * from (select row_number() over(partition by a.OutCode order by a.OutCode)row, a.OutCode as Code, a.CreateDateTime as MTIME, a.CreatePerson as MUSER,
  1196. case when max(e.SourceID) is null then '' else '' end as IsNew,a.EATTRIBUTE1 AS ReceiveWork,tra.ToWarehouseCode,
  1197. f.Colspan, f.ProjectCode, f.BatchCode, f.Version, f.Brand,
  1198. f.cFree1, f.cFree2, f.cFree3, f.cFree4, f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10
  1199. FROM ICSOtherOut a
  1200. INNER JOIN ICSTransfer tra ON a.TransferDetailID = tra.TransferDetailID AND a.WorkPoint = tra.WorkPoint
  1201. left join ICSMOPickMerge e on a.ID = e.SourceID and a.WorkPoint = e.WorkPoint
  1202. left join ICSExtension f on a.ExtensionID = f.ID and a.WorkPoint = f.WorkPoint
  1203. where a.WorkPoint = '{WorkPoint}'
  1204. and a.Status = '2' ");
  1205. if (!string.IsNullOrWhiteSpace(queryJson))
  1206. {
  1207. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1208. {
  1209. sqlString.Append($@" and a.OutCode like '%{queryParam["POCode"]}%' ");
  1210. }
  1211. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1212. {
  1213. sqlString.Append($@" and a.InvCode like '%{queryParam["InvCode"]}%' ");
  1214. }
  1215. }
  1216. sqlString.Append(@" group by a.OutCode, a.CreateDateTime, a.CreatePerson,a.EATTRIBUTE1 ,tra.ToWarehouseCode, f.Colspan ,f.ProjectCode ,
  1217. f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4 ,
  1218. f.cFree5, f.cFree6, f.cFree7, f.cFree8, f.cFree9, f.cFree10) t where t.row=1");
  1219. #endregion
  1220. return Repository().FindTablePageBySql(sqlString.ToString(), parameter.ToArray(), ref jqgridparam);
  1221. }
  1222. //两步调拨子表查询
  1223. public DataTable GetSubGridJson11(string Code)
  1224. {
  1225. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1226. DataTable dt = new DataTable();
  1227. //var queryParam = queryJson.ToJObject();
  1228. List<DbParameter> parameter = new List<DbParameter>();
  1229. string sql = @" select a.ID,a.OutCode as Code,a.Sequence,a.MTIME,a.MUSERName,a.MUSER,a.WHCode ,b.WarehouseName,a.InvCode,d.InvName,d.InvDesc,d.InvStd,d.InvUnit,
  1230. case when e.SourceID is null then '' else '' end as IsNew,a.Quantity
  1231. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  1232. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.OutQuantity as IssueQuantity
  1233. FROM ICSOtherOut a
  1234. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  1235. left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
  1236. left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
  1237. left join ICSMOPickMerge e on a.ID=e.SourceID and a.WorkPoint=e.WorkPoint
  1238. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  1239. where a.OutCode='{0}' and a.WorkPoint='{1}'";
  1240. sql = string.Format(sql, Code, WorkPoint);
  1241. return Repository().FindTableBySql(sql.ToString());
  1242. }
  1243. // public DataTable GetICSMOPickMergeTemp(string ID,string Type)
  1244. // {
  1245. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1246. // ID = string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(',');
  1247. // #region sql
  1248. // string sql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  1249. // c.Code,
  1250. // c.InvCode,
  1251. // c.InvName,
  1252. // c.InvStd,
  1253. // c.InvUnit,
  1254. // FLOOR(c.iQuantity) AS iQuantity,
  1255. // d.WarehouseCode,
  1256. // m.LotNO,
  1257. // (case when m.LotNo is null then 0 else FLOOR(ISNULL(d.Quantity, 0)) end) AS QTY,
  1258. // (case when m.LotNo is null then null else d.LocationCode end) AS LocationCode,
  1259. // CONVERT(varchar(100),d.MTIME, 23) MTIME,
  1260. // FLOOR(f.QTYTotal) QTYTotal INTO #temp
  1261. // FROM
  1262. // ({0}) c
  1263. // LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode AND d.WorkPoint='{1}' AND d.Quantity>0
  1264. // left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
  1265. // LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  1266. //DECLARE @ItemCode VARCHAR(50),
  1267. // @QTY DECIMAL(18,3),
  1268. // @ItemCodeCurrent VARCHAR(50),
  1269. // @Lotno VARCHAR(50),
  1270. // @QTYCurrent DECIMAL(18,3),
  1271. // @iQuantityCurrent DECIMAL(18,3),
  1272. // @CanDelete BIT,
  1273. // @Row INT,
  1274. // @rowCurrent INT
  1275. //SET @Row = @@rowcount
  1276. //SET @rowCurrent=1
  1277. //SET @CanDelete=0
  1278. //SET @ItemCode=''
  1279. //SET @Lotno = ''
  1280. //WHILE @rowCurrent<=@Row
  1281. // BEGIN
  1282. // SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity,@Lotno = Lotno FROM #temp WHERE rowNo=@rowCurrent
  1283. //PRINT(@rowCurrent)
  1284. // IF @ItemCode<>@ItemCodeCurrent
  1285. // BEGIN
  1286. // SET @ItemCode=@ItemCodeCurrent
  1287. // SET @QTY=0
  1288. // SET @CanDelete=0
  1289. // END
  1290. // IF @CanDelete=1
  1291. // BEGIN
  1292. // DELETE FROM #temp WHERE rowNo=@rowCurrent
  1293. // SET @rowCurrent += 1
  1294. // CONTINUE
  1295. // END
  1296. // SET @QTY += @QTYCurrent
  1297. // IF @LotNo is null or @QTY>=@iQuantityCurrent
  1298. // BEGIN
  1299. // SET @CanDelete=1
  1300. // END
  1301. // SET @rowCurrent += 1
  1302. // END
  1303. //SELECT * FROM #temp
  1304. //DROP TABLE #temp
  1305. //";
  1306. // #endregion
  1307. // string sqls = "";
  1308. // if (Type=="1")
  1309. // {
  1310. // #region 工单备料sql
  1311. // sqls = @" SELECT
  1312. // c.MOCode as Code,
  1313. // a.InvCode,
  1314. // b.InvName,
  1315. // b.InvStd,
  1316. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1317. // a.WhCode,
  1318. // b.InvUnit,
  1319. // a.ExtensionID
  1320. // FROM
  1321. // ICSMOPick a
  1322. // inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  1323. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1324. // WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  1325. // GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1326. // #endregion
  1327. // }
  1328. // if (Type == "2")
  1329. // {
  1330. // return GetICSMOPickMergeByWorkorder(ID, WorkPoint);
  1331. // }
  1332. // if (Type=="3")
  1333. // {
  1334. // #region 工单材料出库SQL
  1335. // sqls = @" select
  1336. // a.IssueCode as Code,
  1337. // a.InvCode,
  1338. // b.InvName,
  1339. // b.InvStd,
  1340. // b.InvUnit,
  1341. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1342. // a.WhCode,
  1343. // a.ExtensionID
  1344. // FROM
  1345. // ICSMOIssue a
  1346. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1347. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1348. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1349. // #endregion
  1350. // }
  1351. // if (Type=="4")
  1352. // {
  1353. // #region 委外备料SQL
  1354. // sqls = @" select
  1355. // c.OOCode as Code,
  1356. // a.InvCode,
  1357. // b.InvName,
  1358. // b.InvStd,
  1359. // b.InvUnit,
  1360. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1361. // a.WhCode,
  1362. // a.ExtensionID
  1363. // FROM
  1364. // ICSOOPick a
  1365. // left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  1366. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1367. // WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  1368. // GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID";
  1369. // #endregion
  1370. // }
  1371. // if (Type=="5")
  1372. // {
  1373. // #region 委外领料SQL
  1374. // sqls = @" select
  1375. // a.ApplyCode as Code,
  1376. // a.InvCode,
  1377. // b.InvName,
  1378. // b.InvStd,
  1379. //b.InvUnit,
  1380. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1381. // a.WhCode,
  1382. // a.ExtensionID
  1383. // FROM
  1384. // ICSOApply a
  1385. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1386. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  1387. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1388. // #endregion
  1389. // }
  1390. // if (Type=="6")
  1391. // {
  1392. // #region 委外材料出库SQL
  1393. // sqls = @" select
  1394. // a.IssueCode as Code,
  1395. // a.InvCode,
  1396. // b.InvName,
  1397. // b.InvStd,
  1398. //b.InvUnit,
  1399. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1400. // a.WhCode,
  1401. //a.ExtensionID
  1402. // FROM
  1403. // ICSOIssue a
  1404. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1405. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  1406. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1407. // #endregion
  1408. // }
  1409. // if (Type=="7")
  1410. // {
  1411. // #region 销售发货SQL
  1412. // sqls = @" select
  1413. // a.SDNCode as Code,
  1414. // a.InvCode,
  1415. // b.InvName,
  1416. // b.InvStd,
  1417. //b.InvUnit,
  1418. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1419. // a.WhCode,
  1420. //a.ExtensionID
  1421. // FROM
  1422. // ICSSDN a
  1423. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1424. // WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  1425. // GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1426. // #endregion
  1427. // }
  1428. // if (Type=="8")
  1429. // {
  1430. // #region 其它出库SQL
  1431. // sqls = @" select
  1432. // a.OutCode as Code,
  1433. // a.InvCode,
  1434. // b.InvName,
  1435. // b.InvStd,
  1436. // b.InvUnit,
  1437. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1438. // a.WhCode,
  1439. // a.ExtensionID
  1440. // FROM
  1441. // ICSOtherOut a
  1442. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1443. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1444. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1445. // #endregion
  1446. // }
  1447. // if (Type == "9")
  1448. // {
  1449. // #region 借用SQL
  1450. // sqls = @"select
  1451. // a.BrrowCode as Code,
  1452. // a.InvCode,
  1453. // b.InvName,
  1454. // b.InvStd,
  1455. //b.InvUnit,
  1456. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1457. // a.WhCode,
  1458. //a.ExtensionID
  1459. // FROM
  1460. // ICSBrrow a
  1461. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1462. // WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  1463. // GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID";
  1464. // #endregion
  1465. // }
  1466. // if (Type == "10")
  1467. // {
  1468. // #region 物料调拨
  1469. // sqls = @" select
  1470. // a.TransferNO as Code,
  1471. // a.InvCode,
  1472. // b.InvName,
  1473. // b.InvStd,
  1474. //b.InvUnit,
  1475. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1476. // a.FromWarehouseCode as WhCode,
  1477. //a.ExtensionID
  1478. // FROM
  1479. // ICSTransfer a
  1480. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1481. // WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  1482. // GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID";
  1483. // #endregion
  1484. // }
  1485. // if (Type == "11")
  1486. // {
  1487. // #region 两步调出
  1488. // sqls = @"select
  1489. // a.OutCode as Code,
  1490. // a.InvCode,
  1491. // b.InvName,
  1492. // b.InvStd,
  1493. //b.InvUnit,
  1494. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  1495. // a.WHCode ,
  1496. //a.ExtensionID
  1497. // from ICSOtherOut a
  1498. // INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  1499. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1500. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  1501. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID";
  1502. // #endregion
  1503. // }
  1504. // sqls = string.Format(sqls, ID,WorkPoint);
  1505. // sql = string.Format(sql, sqls, WorkPoint);
  1506. // DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  1507. // DataTable dtCloned = table.Clone();
  1508. // foreach (DataColumn col in dtCloned.Columns)
  1509. // {
  1510. // col.DataType = typeof(string);
  1511. // }
  1512. // foreach (DataRow row in table.Rows)
  1513. // {
  1514. // DataRow newrow = dtCloned.NewRow();
  1515. // foreach (DataColumn column in dtCloned.Columns)
  1516. // {
  1517. // newrow[column.ColumnName] = row[column.ColumnName].ToString();
  1518. // }
  1519. // dtCloned.Rows.Add(newrow);
  1520. // }
  1521. // if (Invmes.Rows.Count > 0)
  1522. // {
  1523. // dtCloned.Merge(Invmes, false);
  1524. // }
  1525. // return dtCloned;
  1526. // }
  1527. public DataTable GetICSMOPickMergeTemp(string ID, string Type)
  1528. {
  1529. string postUrlStr = System.Configuration.ConfigurationManager.AppSettings["HGDocpostUrlStr"].ToString();
  1530. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1531. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1532. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1533. ID = string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(',');
  1534. string sqls = "";
  1535. #region sql
  1536. #endregion
  1537. //调拨单拣料增加逻辑,如果memo字段有条码信息,那么拣料的条码为备注条码,否则走正常逻辑
  1538. if (Type == "10")
  1539. {
  1540. string dataString = $@"select a.Memo,a.FromWarehouseCode,a.Quantity,a.TransferQuantity,a.InvCode,a.TransferNO,a.SAPSequence,a.Sequence FROM ICSTransfer a
  1541. WHERE a.TransferNO in ({ID}) AND a.WorkPoint = '{WorkPoint}'
  1542. AND ISNULL(a.Quantity, 0)>ISNULL(a.TransferQuantity, 0)
  1543. AND a.Memo is not null AND a.Memo!='' ";
  1544. var datasetModel = Repository().FindDataSetBySql(dataString);
  1545. DataTable table1 = null;
  1546. DataTable table = null;
  1547. StringBuilder updateString = new StringBuilder();
  1548. StringBuilder checklot = new StringBuilder();
  1549. string sqlString = String.Empty;
  1550. List<LotMessage> lotMessages = new List<LotMessage>();
  1551. if (datasetModel.Tables[0].Rows.Count != 0)
  1552. {
  1553. DataTable tableModel = datasetModel.Tables[0];
  1554. if (tableModel.Rows.Count > 0)
  1555. {
  1556. //循环验证条码信息是否与单据信息相符
  1557. for (int i = 0; i < tableModel.Rows.Count; i++)
  1558. {
  1559. LotMessage lotMessage = new LotMessage();
  1560. string transCode = tableModel.Rows[i]["TransferNO"].ToString();
  1561. string lotNo = tableModel.Rows[i]["Memo"].ToString();
  1562. string whCode = tableModel.Rows[i]["FromWarehouseCode"].ToString();
  1563. string sequence = tableModel.Rows[i]["Sequence"].ToString();
  1564. lotMessage.LotNo = lotNo;
  1565. lotMessage.Quantity = Convert.ToDecimal(tableModel.Rows[i]["Quantity"].ToString());
  1566. lotMessages.Add(lotMessage);
  1567. //验证信息
  1568. checklot.Append($@"IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo='{lotNo}' AND a.WorkPoint='{WorkPoint}')
  1569. BEGIN
  1570. RAISERROR('{lotNo}',16,1);
  1571. RETURN
  1572. END;
  1573. IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{tableModel.Rows[i]["Memo"]}' AND a.WorkPoint='{WorkPoint}' AND a.WarehouseCode='{whCode}')
  1574. BEGIN
  1575. RAISERROR('{lotNo}{transCode}{tableModel.Rows[i]["SAPSequence"]}',16,1);
  1576. RETURN
  1577. END;
  1578. IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{lotNo}' AND a.WorkPoint='{WorkPoint}' AND a.WarehouseCode='{whCode}' AND a.Quantity>=A.LockQuantity+'{tableModel.Rows[i]["Quantity"]}')
  1579. BEGIN
  1580. RAISERROR('{lotNo}',16,1);
  1581. RETURN
  1582. END;
  1583. IF NOT EXISTS(SELECT a.ID FROM ICSInventoryLot a WHERE a.LotNo='{lotNo}' AND a.WorkPoint='{WorkPoint}' AND InvCode='{tableModel.Rows[i]["InvCode"]}')
  1584. BEGIN
  1585. RAISERROR('{lotNo}{transCode}{tableModel.Rows[i]["SAPSequence"]}',16,1);
  1586. RETURN
  1587. END;"
  1588. );
  1589. updateString.Append($@" INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1590. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1591. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1592. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1593. MTIME,WorkPoint,EATTRIBUTE1)
  1594. SELECT NEWID(),NEWID(),'{transCode}','{sequence}',a.LotNo ,a.InvCode ,
  1595. a.WarehouseCode,a.LocationCode,'','','{tableModel.Rows[i]["Quantity"]}',
  1596. '','1','15','47','0','',
  1597. '','','','{MUSER}' ,'{MUSERNAME}' ,
  1598. GETDATE() ,'{WorkPoint}' ,''
  1599. FROM ICSWareHouseLotInfo a
  1600. WHERE a.LotNo='{tableModel.Rows[i]["Memo"]}' AND a.WorkPoint='{WorkPoint}'
  1601. update ICSWareHouseLotInfo set LockQuantity=LockQuantity+'{tableModel.Rows[i]["Quantity"]}' where LotNo='{lotNo}' AND WorkPoint='{WorkPoint}';");
  1602. }
  1603. SqlHelper.CmdExecuteNonQueryLi(checklot.ToString());
  1604. sqlString = $@"SELECT
  1605. a.TransferNO AS Code,a.Sequence,a.InvCode,b.InvName,b.InvStd,b.InvUnit,
  1606. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.TransferQuantity, 0))) AS iQuantity,--
  1607. a.FromWarehouseCode As WarehouseCode,
  1608. a.Memo AS LotNO,
  1609. ISNULL(c.Quantity, 0) AS QTY,--
  1610. ISNULL(c.Quantity, 0) AS QTYLeft,
  1611. a.Quantity as SendQTY, --
  1612. c.LocationCode,
  1613. CONVERT(varchar(100),c.MTIME, 23) MTIME,
  1614. SUM(c.Quantity-c.LockQuantity) AS QTYTotal,
  1615. a.ExtensionID
  1616. from ICSTransfer a
  1617. Left JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  1618. LEFT JOIN ICSWareHouseLotInfo c ON c.LotNo=a.Memo AND a.FromWarehouseCode=c.WarehouseCode
  1619. WHERE a.TransferNO in({ID}) AND a.Memo is NOT NULL and a.Memo!=''
  1620. GROUP BY a.TransferNO,a.Sequence,a.InvCode,b.InvName,b.InvStd,b.InvUnit,
  1621. a.Quantity,a.FromWarehouseCode ,a.Memo,c.LocationCode,c.MTIME,c.Quantity,a.ExtensionID,c.LockQuantity; ";
  1622. }
  1623. //if (!String.IsNullOrEmpty(sqlString))
  1624. //{
  1625. // var dataSet1 = Repository().FindDataSetBySql(updateString.ToString()+ sqlString);
  1626. // if (dataSet1.Tables[0].Rows.Count != 0)
  1627. // {
  1628. // table1 = dataSet1.Tables[0];
  1629. // }
  1630. //}
  1631. }
  1632. string sql = $@"SELECT row_number() over ( order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  1633. c.Code,
  1634. c.Sequence,
  1635. c.InvCode,
  1636. c.InvName,
  1637. c.InvStd,
  1638. c.InvUnit,
  1639. c.iQuantity AS iQuantity,
  1640. c.WHCode AS WarehouseCode,
  1641. d.LotNO,
  1642. ISNULL(d.Quantity, 0) AS QTY,
  1643. ISNULL(d.Quantity, 0) AS QTYLeft,
  1644. CONVERT(decimal(18,6),0) AS SendQTY,
  1645. d.LocationCode AS LocationCode,
  1646. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  1647. f.QTYTotal QTYTotal,c.ExtensionID
  1648. FROM
  1649. (select
  1650. a.TransferNO as Code,
  1651. a.Sequence,
  1652. a.InvCode,
  1653. b.InvName,
  1654. b.InvStd,
  1655. b.InvUnit,
  1656. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.TransferQuantity, 0))) AS iQuantity,
  1657. a.FromWarehouseCode as WhCode,
  1658. a.ExtensionID
  1659. FROM
  1660. ICSTransfer a
  1661. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  1662. WHERE a.TransferNO in ({ID}) AND a.WorkPoint = '{WorkPoint}' AND ISNULL(a.Quantity, 0)>ISNULL(a.TransferQuantity, 0)
  1663. and (a.Memo is null or a.Memo='' )
  1664. GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,a.Sequence) c
  1665. left join (select d.WarehouseCode,d.Quantity-d.LockQuantity as Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID
  1666. from ICSWareHouseLotInfo d ,ICSInventoryLot m
  1667. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  1668. and d.WorkPoint='{WorkPoint}' AND d.Quantity-d.LockQuantity>0 AND d.Quantity>0
  1669. --AND SUBSTRING( SUBSTRING(d.LocationCode, CHARINDEX('-',d.LocationCode)+1, LEN(d.LocationCode)),0,CHARINDEX('-', SUBSTRING(d.LocationCode, CHARINDEX('-',d.LocationCode)+1, LEN(d.LocationCode)))) Not IN(SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  1670. --WHERE F_Define3='HGAreaConfig' AND F_Define1=d.WarehouseCode AND F_Define4=d.WorkPoint)
  1671. ) d
  1672. on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  1673. LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity-LockQuantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{WorkPoint}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  1674. order by c.Code,Convert(int,c.Sequence),d.MTIME,d.LotNO ";
  1675. var dataset = Repository().FindDataSetBySql(sql);
  1676. if (dataset.Tables[0].Rows.Count != 0)
  1677. {
  1678. table = dataset.Tables[0];
  1679. decimal qtyCount = 0;
  1680. bool remove = false;
  1681. List<int> removeList = new List<int>();
  1682. for (int i = 0; i < table.Rows.Count; i++)
  1683. {
  1684. if (lotMessages != null && lotMessages.Count > 0)
  1685. {
  1686. //排除指定条码的锁定库存数量
  1687. List<LotMessage> models = lotMessages.Where(e => e.LotNo == table.Rows[i]["LotNO"].ToString()).ToList();
  1688. if (models != null && models.Count > 0)
  1689. {
  1690. decimal quantity = models.Select(e => e.Quantity).ToList().Sum();
  1691. table.Rows[i]["QTYLeft"] = table.Rows[i]["QTYLeft"].ToString().ToDecimal() - quantity;
  1692. }
  1693. }
  1694. if (i != 0
  1695. && (!table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString())
  1696. || !table.Rows[i]["Sequence"].ToString().Equals(table.Rows[i - 1]["Sequence"].ToString())
  1697. || !table.Rows[i]["Code"].ToString().Equals(table.Rows[i - 1]["Code"].ToString())
  1698. || !table.Rows[i]["ExtensionID"].ToString().Equals(table.Rows[i - 1]["ExtensionID"].ToString()))
  1699. )
  1700. {
  1701. qtyCount = 0;
  1702. remove = false;
  1703. }
  1704. if (table.Rows[i]["QTYLeft"].ToString().ToDecimal() == 0)
  1705. {
  1706. removeList.Add(i);
  1707. continue;
  1708. }
  1709. if (remove)
  1710. {
  1711. removeList.Add(i);
  1712. }
  1713. else
  1714. {
  1715. var lotQty = table.Rows[i]["QTYLeft"].ToString().ToDecimal();
  1716. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  1717. qtyCount += lotQty;
  1718. foreach (DataRow dr in table.Rows)
  1719. {
  1720. if (dr["LotNO"].ToString() == table.Rows[i]["LotNO"].ToString())
  1721. {
  1722. if (qtyCount > orderQty)
  1723. {
  1724. dr["QTYLeft"] = Convert.ToDecimal(qtyCount) - Convert.ToDecimal(orderQty);
  1725. }
  1726. else
  1727. {
  1728. dr["QTYLeft"] = 0;
  1729. }
  1730. }
  1731. }
  1732. if (qtyCount >= orderQty)
  1733. {
  1734. table.Rows[i]["SendQTY"] = Convert.ToDecimal(lotQty) - (Convert.ToDecimal(qtyCount) - Convert.ToDecimal(orderQty));
  1735. remove = true;
  1736. }
  1737. else
  1738. {
  1739. table.Rows[i]["SendQTY"] = lotQty;
  1740. }
  1741. }
  1742. }
  1743. if (removeList.Count > 0)
  1744. {
  1745. removeList.Reverse();
  1746. foreach (var item in removeList)
  1747. {
  1748. table.Rows.RemoveAt(item);
  1749. }
  1750. }
  1751. try
  1752. {
  1753. #region 占料前增加验证,如果条码数量超出实际需要领料数量,直接报错
  1754. string chksql = "";
  1755. #region 物料调拨
  1756. chksql = @" select InvCode,FromWarehouseCode AS WHCode,SUM(Quantity) as Quantity from ICSTransfer
  1757. where TransferNO in ({0}) and WorkPoint='{1}' and (Memo is NULL or Memo='')
  1758. GROUP BY InvCode,FromWarehouseCode";
  1759. #endregion
  1760. chksql = string.Format(chksql, ID, WorkPoint);
  1761. var chkdata = Repository().FindDataSetBySql(chksql);
  1762. DataTable chktable = chkdata.Tables[0];
  1763. foreach (DataRow chkdr in chktable.Rows)
  1764. {
  1765. decimal ZLQty = 0;
  1766. for (int i = 0; i < table.Rows.Count; i++)
  1767. {
  1768. if (table.Rows[i]["WarehouseCode"].ToString() == chkdr["WHCode"].ToString()
  1769. && table.Rows[i]["InvCode"].ToString() == chkdr["InvCode"].ToString())
  1770. {
  1771. ZLQty += Convert.ToDecimal(table.Rows[i]["SendQTY"].ToString());
  1772. }
  1773. }
  1774. if (Convert.ToDecimal(chkdr["Quantity"]) < ZLQty)
  1775. {
  1776. throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量大于单据需求数量,请尝试重新拣料。");
  1777. }
  1778. //if (Convert.ToDecimal(chkdr["Quantity"]) > ZLQty && (Type == "2" || Type == "5" || Type == "12"))
  1779. //{
  1780. // chksql = @" select B.F_Define2 from ICSInventoryDetail A
  1781. // INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define1=A.WHCode AND B.F_Define2=A.LocationCode AND B.F_Define4=A.WorkPoint
  1782. // where INVCode='{0}' and WHCode='{1}' and WorkPoint='{2}'";
  1783. // chksql = string.Format(chksql, chkdr["InvCode"].ToString(), chkdr["WHCode"].ToString(), WorkPoint);
  1784. // var chkds = Repository().FindDataSetBySql(chksql);
  1785. // DataTable chkdt = chkds.Tables[0];
  1786. // if (chkdt.Rows.Count != 0)
  1787. // {
  1788. // throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量小于单据需求数量,货柜单据必须整单拣料,请先核对库存。");
  1789. // }
  1790. //}
  1791. if (Convert.ToDecimal(chkdr["Quantity"]) > ZLQty)
  1792. {
  1793. throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量小于单据需求数量,货柜单据必须整单拣料,请先核对库存。");
  1794. }
  1795. }
  1796. #endregion
  1797. if (table.Rows.Count != 0)
  1798. {
  1799. #region 拣料时增加条码出入库记录,修改库存锁定数量,以作占料处理
  1800. int Count = 1;
  1801. string BusinessCode = "10";
  1802. string TransType = "调拨申请单";
  1803. string Identification = Guid.NewGuid().ToString();
  1804. var pikTbLogTime = DateTime.Now;
  1805. string pikTbLogsql = string.Empty;
  1806. List<string> DocNoList = new List<string>();
  1807. if (Type == "2" || Type == "12" || Type == "5")
  1808. {
  1809. #region 货柜
  1810. string InspectJosn = "";
  1811. string InspectJosnHead = "";
  1812. string InspectJosnBody = "";
  1813. InspectJosn += "{";
  1814. InspectJosn += "\"IMP_ORDINI\":[";
  1815. InspectJosn += "货柜主表区域预留";
  1816. InspectJosn += "],";
  1817. InspectJosn += "\"IMP_ORDINI_RIGHE\":[";
  1818. InspectJosn += "货柜子表区域预留";
  1819. InspectJosn += "]";
  1820. InspectJosn += "}";
  1821. for (int i = 0; i < table.Rows.Count; i++)
  1822. {
  1823. string hgsql = @"select A.InvCode,A.LocationCode,B.F_Define3,C.LocationCode AS Area
  1824. from ICSWareHouseLotInfo A
  1825. INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define2=A.LocationCode AND F_Define4=A.WorkPoint AND F_ItemName='HG_Location'
  1826. INNER JOIN ICSInventoryDetail C ON C.INVCode=A.InvCode AND C.WHCode=A.WarehouseCode AND C.WorkPoint=A.WorkPoint
  1827. where A.LotNo='{0}' AND A.WorkPoint='{1}'";
  1828. hgsql = string.Format(hgsql, table.Rows[i]["LotNO"].ToString(), WorkPoint);
  1829. var hgds = Repository().FindDataSetBySql(hgsql);
  1830. if (hgds.Tables.Count == 0)
  1831. return null;
  1832. DataTable hgtable = hgds.Tables[0];
  1833. if (hgtable.Rows.Count > 0)
  1834. {
  1835. if (!DocNoList.Contains(table.Rows[i]["Code"].ToString()))
  1836. {
  1837. DocNoList.Add(table.Rows[i]["Code"].ToString());
  1838. }
  1839. InspectJosnBody += "{";
  1840. InspectJosnBody += "\"RIG_ORDINE\":\"" + table.Rows[i]["Code"].ToString() + "\",";
  1841. InspectJosnBody += "\"RIG_ARTICOLO\": \"" + hgtable.Rows[0]["InvCode"].ToString() + "\",";
  1842. InspectJosnBody += "\"RIG_SUB1\": \"\",";
  1843. InspectJosnBody += "\"RIG_SUB2\": \"\",";
  1844. InspectJosnBody += "\"RIG_ELERUOLI_GEST\": \"" + hgtable.Rows[0]["Area"].ToString() + "\",";
  1845. InspectJosnBody += "\"RIG_ELEBAIE\": \"" + hgtable.Rows[0]["F_Define3"].ToString() + "\",";
  1846. InspectJosnBody += "\"RIG_QTAR\": " + table.Rows[i]["SendQTY"].ToString() + ",";
  1847. if (i == 0)
  1848. {
  1849. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + "\"";
  1850. }
  1851. else
  1852. {
  1853. if (table.Rows[i]["Code"].ToString() == table.Rows[i - 1]["Code"].ToString() &&
  1854. table.Rows[i]["Sequence"].ToString() == table.Rows[i - 1]["Sequence"].ToString())
  1855. {
  1856. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + Count.ToString() + "\"";
  1857. Count++;
  1858. }
  1859. else
  1860. {
  1861. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + "\"";
  1862. Count = 1;
  1863. }
  1864. }
  1865. InspectJosnBody += "},";
  1866. }
  1867. }
  1868. InspectJosnBody = InspectJosnBody.TrimEnd(',');
  1869. foreach (string DocNo in DocNoList)
  1870. {
  1871. InspectJosnHead += "{";
  1872. InspectJosnHead += "\"ORD_ORDINE\":\"" + DocNo.TrimStart('\'').TrimEnd('\'') + "\",";
  1873. InspectJosnHead += "\"ORD_DES\":\"" + TransType + "\",";
  1874. InspectJosnHead += "\"ORD_TIPOOP\":\"P\",";
  1875. InspectJosnHead += "\"ORD_CLIENTE\":\"" + WorkPoint + "\"";
  1876. InspectJosnHead += "},";
  1877. }
  1878. InspectJosnHead = InspectJosnHead.TrimEnd(',');
  1879. if (InspectJosnBody != "")
  1880. {
  1881. InspectJosn = InspectJosn.Replace("货柜主表区域预留", InspectJosnHead);
  1882. InspectJosn = InspectJosn.Replace("货柜子表区域预留", InspectJosnBody);
  1883. if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  1884. {
  1885. string callresult = "";
  1886. #region 货柜接口调用前日志
  1887. object logID = Guid.NewGuid();
  1888. string logsql = @"insert into ICSWMS_HGLog
  1889. values
  1890. ('{0}',GETDATE(),'{1}','{2}','{3}','{4}','{5}')";
  1891. logsql = string.Format(logsql, logID, InspectJosn, "", WorkPoint, MUSER, MUSERNAME);
  1892. SqlHelper.CmdExecuteNonQueryLi(logsql);
  1893. #endregion
  1894. callresult = HTTPHelper.RestFulGet(InspectJosn, postUrlStr);
  1895. #region 货柜接口调用后日志
  1896. logsql = @"update ICSWMS_HGLog set ReturnResult='{0}'
  1897. where ID='{1}'";
  1898. logsql = string.Format(logsql, callresult, logID);
  1899. SqlHelper.CmdExecuteNonQueryLi(logsql);
  1900. #endregion
  1901. }
  1902. }
  1903. #endregion
  1904. }
  1905. foreach (DataRow PickLog in table.Rows)
  1906. {
  1907. pikTbLogsql += @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{9}' AND a.WorkPoint='{8}' AND a.Quantity>=A.LockQuantity+'{3}')
  1908. BEGIN
  1909. RAISERROR('{9}', 16, 1);
  1910. RETURN
  1911. END;
  1912. IF NOT EXISTS(SELECT TransCode FROM ICSWareHouseLotInfoLog WHERE TransCode='{1}' AND TransSequence='{2}' AND LotNo='{9}' AND WorkPoint='{8}' AND TransType='15')
  1913. BEGIN
  1914. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  1915. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  1916. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  1917. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  1918. MTIME,WorkPoint,EATTRIBUTE1)
  1919. SELECT NEWID(),'{0}','{1}','{2}',a.LotNo ,a.InvCode ,
  1920. a.WarehouseCode,a.LocationCode,'','','{3}',
  1921. '','1','15','{4}','0','',
  1922. '','','','{5}' ,'{6}' ,
  1923. '{7}' ,'{8}' ,''
  1924. FROM ICSWareHouseLotInfo a
  1925. WHERE a.LotNo='{9}' AND a.WorkPoint='{8}'
  1926. update ICSWareHouseLotInfo set LockQuantity=LockQuantity+'{3}' where LotNo='{9}' AND WorkPoint='{8}'
  1927. END
  1928. UPDATE ICSMOApply SET MUSER='{6}' WHERE ApplyCode='{1}' and Sequence='{2}' ; ";
  1929. pikTbLogsql = string.Format(pikTbLogsql, Identification, PickLog["Code"].ToString(), PickLog["Sequence"].ToString(), PickLog["SendQTY"].ToString()
  1930. , BusinessCode, MUSER, MUSERNAME, pikTbLogTime, WorkPoint, PickLog["LotNO"].ToString());
  1931. }
  1932. SqlHelper.CmdExecuteNonQueryLi(pikTbLogsql + updateString.ToString());
  1933. #endregion
  1934. }
  1935. //查询有条码的拣料信息
  1936. if (!String.IsNullOrEmpty(sqlString))
  1937. {
  1938. var dataSet1 = Repository().FindDataSetBySql(sqlString);
  1939. if (dataSet1.Tables[0].Rows.Count != 0)
  1940. {
  1941. table1 = dataSet1.Tables[0];
  1942. }
  1943. }
  1944. //if (table1 != null)
  1945. //{
  1946. // table.Merge(table1);
  1947. //}
  1948. //var result = ConvertCellToString(table);
  1949. //if (Invmes.Rows.Count > 0)
  1950. //{
  1951. // result.Merge(Invmes, false);
  1952. //}
  1953. //return result;
  1954. }
  1955. catch (Exception ex)
  1956. {
  1957. throw new Exception(ex.Message);
  1958. }
  1959. }
  1960. else
  1961. {
  1962. if (!String.IsNullOrEmpty(updateString.ToString()))
  1963. {
  1964. SqlHelper.CmdExecuteNonQueryLi(updateString.ToString());
  1965. }
  1966. //查询有条码的拣料信息
  1967. if (!String.IsNullOrEmpty(sqlString))
  1968. {
  1969. var dataSet1 = Repository().FindDataSetBySql(sqlString);
  1970. if (dataSet1.Tables[0].Rows.Count != 0)
  1971. {
  1972. table1 = dataSet1.Tables[0];
  1973. }
  1974. }
  1975. }
  1976. if (table1 != null && table != null)
  1977. {
  1978. table.Merge(table1);
  1979. }
  1980. else if (table == null && table1 != null)
  1981. {
  1982. table = table1;
  1983. }
  1984. else if (table1 == null && table == null)
  1985. {
  1986. return null;
  1987. }
  1988. var result = ConvertCellToString(table);
  1989. if (Invmes.Rows.Count > 0)
  1990. {
  1991. result.Merge(Invmes, false);
  1992. }
  1993. return result;
  1994. }
  1995. else
  1996. {
  1997. if (Type == "1")
  1998. {
  1999. #region 工单备料sql
  2000. sqls = @" SELECT
  2001. c.MOCode as Code,
  2002. c.Sequence+'~'+a.Sequence as Sequence,
  2003. a.InvCode,
  2004. b.InvName,
  2005. b.InvStd,
  2006. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2007. a.WhCode,
  2008. b.InvUnit,
  2009. a.ExtensionID
  2010. FROM
  2011. ICSMOPick a
  2012. inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  2013. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2014. WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  2015. GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,c.Sequence+'~'+a.Sequence";
  2016. #endregion
  2017. }
  2018. if (Type == "2" || Type == "12")
  2019. {
  2020. sqls = @"select
  2021. a.ApplyCode as Code,a.Sequence, a.InvCode, b.InvName, b.InvStd, b.InvUnit, (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.IssueQuantity, 0))) AS iQuantity, a.WhCode,a.ExtensionID
  2022. FROM
  2023. ICSMOApply a
  2024. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2025. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}' AND ISNULL(a.Quantity, 0)>ISNULL(a.IssueQuantity, 0)
  2026. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2027. }
  2028. if (Type == "3")
  2029. {
  2030. #region 工单材料出库SQL
  2031. sqls = @" select
  2032. a.IssueCode as Code,
  2033. a.Sequence,
  2034. a.InvCode,
  2035. b.InvName,
  2036. b.InvStd,
  2037. b.InvUnit,
  2038. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2039. a.WhCode,
  2040. a.ExtensionID
  2041. FROM
  2042. ICSMOIssue a
  2043. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2044. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2045. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2046. #endregion
  2047. }
  2048. if (Type == "4")
  2049. {
  2050. #region 委外备料SQL
  2051. sqls = @" select
  2052. c.OOCode as Code,
  2053. c.Sequence+'~'+a.Sequence as Sequence,
  2054. a.InvCode,
  2055. b.InvName,
  2056. b.InvStd,
  2057. b.InvUnit,
  2058. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2059. a.WhCode,
  2060. a.ExtensionID
  2061. FROM
  2062. ICSOOPick a
  2063. left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  2064. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2065. WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  2066. GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode, a.ExtensionID,c.Sequence+'~'+a.Sequence";
  2067. #endregion
  2068. }
  2069. if (Type == "5")
  2070. {
  2071. #region 委外领料SQL
  2072. sqls = @"select
  2073. a.ApplyCode as Code,
  2074. a.Sequence,
  2075. a.InvCode,
  2076. b.InvName,
  2077. b.InvStd,
  2078. b.InvUnit,
  2079. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.IssueQuantity,0))) AS iQuantity,
  2080. a.WhCode,a.ExtensionID
  2081. FROM
  2082. ICSOApply a
  2083. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2084. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}' AND ISNULL(a.Quantity, 0)>ISNULL(a.IssueQuantity, 0)
  2085. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2086. #endregion
  2087. }
  2088. if (Type == "6")
  2089. {
  2090. #region 委外材料出库SQL
  2091. sqls = @" select
  2092. a.IssueCode as Code,
  2093. a.Sequence,
  2094. a.InvCode,
  2095. b.InvName,
  2096. b.InvStd,
  2097. b.InvUnit,
  2098. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2099. a.WhCode,
  2100. a.ExtensionID
  2101. FROM
  2102. ICSOIssue a
  2103. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2104. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2105. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2106. #endregion
  2107. }
  2108. if (Type == "7")
  2109. {
  2110. #region 销售发货SQL
  2111. sqls = @" select
  2112. a.SDNCode as Code,
  2113. a.Sequence,
  2114. a.InvCode,
  2115. b.InvName,
  2116. b.InvStd,
  2117. b.InvUnit,
  2118. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.SDNQuantity, 0))) AS iQuantity,
  2119. a.WhCode,
  2120. a.ExtensionID
  2121. FROM
  2122. ICSSDN a
  2123. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2124. WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}' AND ISNULL(a.Quantity, 0)>ISNULL(a.SDNQuantity, 0)
  2125. GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2126. #endregion
  2127. }
  2128. if (Type == "8")
  2129. {
  2130. #region 其它出库SQL
  2131. sqls = @" select
  2132. a.OutCode as Code,
  2133. a.Sequence,
  2134. a.InvCode,
  2135. b.InvName,
  2136. b.InvStd,
  2137. b.InvUnit,
  2138. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.OutQuantity, 0))) AS iQuantity,
  2139. a.WhCode,
  2140. a.ExtensionID
  2141. FROM
  2142. ICSOtherOut a
  2143. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2144. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}' AND ISNULL(a.Quantity, 0)>ISNULL(a.OutQuantity, 0)
  2145. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2146. #endregion
  2147. }
  2148. if (Type == "9")
  2149. {
  2150. #region 借用SQL
  2151. sqls = @"select
  2152. a.BrrowCode as Code,
  2153. a.Sequence,
  2154. a.InvCode,
  2155. b.InvName,
  2156. b.InvStd,
  2157. b.InvUnit,
  2158. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2159. a.WhCode,
  2160. a.ExtensionID
  2161. FROM
  2162. ICSBrrow a
  2163. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2164. WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  2165. GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,a.Sequence";
  2166. #endregion
  2167. }
  2168. if (Type == "10")
  2169. {
  2170. #region 物料调拨
  2171. sqls = @"select
  2172. a.TransferNO as Code,
  2173. a.Sequence,
  2174. a.InvCode,
  2175. b.InvName,
  2176. b.InvStd,
  2177. b.InvUnit,
  2178. (SUM(ISNULL(a.Quantity, 0))-SUM(ISNULL(a.TransferQuantity, 0))) AS iQuantity,
  2179. a.FromWarehouseCode as WhCode,
  2180. a.ExtensionID
  2181. FROM
  2182. ICSTransfer a
  2183. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2184. WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}' AND ISNULL(a.Quantity, 0)>ISNULL(a.TransferQuantity, 0)
  2185. and a.Memo is null
  2186. GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,a.Sequence";
  2187. #endregion
  2188. }
  2189. if (Type == "11")
  2190. {
  2191. #region 两步调出
  2192. sqls = @"select
  2193. a.OutCode as Code,
  2194. a.Sequence,
  2195. a.InvCode,
  2196. b.InvName,
  2197. b.InvStd,
  2198. b.InvUnit,
  2199. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2200. a.WHCode ,
  2201. a.ExtensionID
  2202. from ICSOtherOut a
  2203. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  2204. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2205. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2206. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,a.Sequence";
  2207. #endregion
  2208. }
  2209. sqls = string.Format(sqls, ID, WorkPoint);
  2210. string sql = $@"SELECT row_number() over ( order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  2211. c.Code,
  2212. c.Sequence,
  2213. c.InvCode,
  2214. c.InvName,
  2215. c.InvStd,
  2216. c.InvUnit,
  2217. c.iQuantity AS iQuantity,
  2218. c.WHCode AS WarehouseCode,
  2219. d.LotNO,
  2220. ISNULL(d.Quantity, 0) AS QTY,
  2221. ISNULL(d.Quantity, 0) AS QTYLeft,
  2222. CONVERT(decimal(18,6),0) AS SendQTY,
  2223. d.LocationCode AS LocationCode,
  2224. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  2225. f.QTYTotal QTYTotal,c.ExtensionID
  2226. FROM
  2227. ({sqls}) c
  2228. left join (select d.WarehouseCode,d.Quantity-d.LockQuantity as Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID
  2229. from ICSWareHouseLotInfo d ,ICSInventoryLot m
  2230. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  2231. and d.WorkPoint='{WorkPoint}' AND d.Quantity-d.LockQuantity>0 AND d.Quantity>0
  2232. --AND SUBSTRING( SUBSTRING(d.LocationCode, CHARINDEX('-',d.LocationCode)+1, LEN(d.LocationCode)),0,CHARINDEX('-', SUBSTRING(d.LocationCode, CHARINDEX('-',d.LocationCode)+1, LEN(d.LocationCode)))) Not IN(SELECT F_Define2 FROM Sys_SRM_ItemsDetail
  2233. --WHERE F_Define3='HGAreaConfig' AND F_Define1=d.WarehouseCode AND F_Define4=d.WorkPoint)
  2234. ) d
  2235. on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  2236. LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity-LockQuantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{WorkPoint}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  2237. order by c.Code,Convert(int,c.Sequence),d.MTIME,d.LotNO ";
  2238. var dataset = Repository().FindDataSetBySql(sql);
  2239. if (dataset.Tables[0].Rows.Count == 0)
  2240. return null;
  2241. DataTable table = dataset.Tables[0];
  2242. decimal qtyCount = 0;
  2243. bool remove = false;
  2244. List<int> removeList = new List<int>();
  2245. for (int i = 0; i < table.Rows.Count; i++)
  2246. {
  2247. if (i != 0
  2248. && (!table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString())
  2249. || !table.Rows[i]["Sequence"].ToString().Equals(table.Rows[i - 1]["Sequence"].ToString())
  2250. || !table.Rows[i]["Code"].ToString().Equals(table.Rows[i - 1]["Code"].ToString())
  2251. || !table.Rows[i]["ExtensionID"].ToString().Equals(table.Rows[i - 1]["ExtensionID"].ToString()))
  2252. )
  2253. {
  2254. qtyCount = 0;
  2255. remove = false;
  2256. }
  2257. if (table.Rows[i]["QTYLeft"].ToString().ToDecimal() == 0)
  2258. {
  2259. removeList.Add(i);
  2260. continue;
  2261. }
  2262. if (remove)
  2263. {
  2264. removeList.Add(i);
  2265. }
  2266. else
  2267. {
  2268. var lotQty = table.Rows[i]["QTYLeft"].ToString().ToDecimal();
  2269. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  2270. qtyCount += lotQty;
  2271. foreach (DataRow dr in table.Rows)
  2272. {
  2273. if (dr["LotNO"].ToString() == table.Rows[i]["LotNO"].ToString())
  2274. {
  2275. if (qtyCount > orderQty)
  2276. {
  2277. dr["QTYLeft"] = Convert.ToDecimal(qtyCount) - Convert.ToDecimal(orderQty);
  2278. }
  2279. else
  2280. {
  2281. dr["QTYLeft"] = 0;
  2282. }
  2283. }
  2284. }
  2285. if (qtyCount >= orderQty)
  2286. {
  2287. table.Rows[i]["SendQTY"] = Convert.ToDecimal(lotQty) - (Convert.ToDecimal(qtyCount) - Convert.ToDecimal(orderQty));
  2288. remove = true;
  2289. }
  2290. else
  2291. {
  2292. table.Rows[i]["SendQTY"] = lotQty;
  2293. }
  2294. }
  2295. }
  2296. if (removeList.Count > 0)
  2297. {
  2298. removeList.Reverse();
  2299. foreach (var item in removeList)
  2300. {
  2301. table.Rows.RemoveAt(item);
  2302. }
  2303. }
  2304. try
  2305. {
  2306. #region 占料前增加验证,如果条码数量超出实际需要领料数量,直接报错
  2307. string chksql = "";
  2308. if (Type == "2" || Type == "12")
  2309. {
  2310. chksql = @" select InvCode,WHCode,SUM(Quantity) as Quantity from ICSMOApply
  2311. where ApplyCode in ({0}) and WorkPoint='{1}'
  2312. GROUP BY InvCode,WHCode";
  2313. }
  2314. if (Type == "5")
  2315. {
  2316. #region 委外领料SQL
  2317. chksql = @" select InvCode,WHCode,SUM(Quantity) as Quantity from ICSOApply
  2318. where ApplyCode in ({0}) and WorkPoint='{1}'
  2319. GROUP BY InvCode,WHCode";
  2320. #endregion
  2321. }
  2322. if (Type == "7")
  2323. {
  2324. #region 销售发货SQL
  2325. chksql = @" select InvCode,WHCode,SUM(Quantity) as Quantity from ICSSDN
  2326. where SDNCode in ({0}) and WorkPoint='{1}'
  2327. GROUP BY InvCode,WHCode";
  2328. #endregion
  2329. }
  2330. if (Type == "8")
  2331. {
  2332. #region 其它出库SQL
  2333. chksql = @" select InvCode,WHCode,SUM(Quantity) as Quantity from ICSOtherOut
  2334. where OutCode in ({0}) and WorkPoint='{1}'
  2335. GROUP BY InvCode,WHCode";
  2336. #endregion
  2337. }
  2338. if (Type == "10")
  2339. {
  2340. #region 物料调拨
  2341. chksql = @" select InvCode,FromWarehouseCode AS WHCode,SUM(Quantity) as Quantity from ICSTransfer
  2342. where TransferNO in ({0}) and WorkPoint='{1}'
  2343. GROUP BY InvCode,FromWarehouseCode";
  2344. #endregion
  2345. }
  2346. chksql = string.Format(chksql, ID, WorkPoint);
  2347. var chkdata = Repository().FindDataSetBySql(chksql);
  2348. DataTable chktable = chkdata.Tables[0];
  2349. foreach (DataRow chkdr in chktable.Rows)
  2350. {
  2351. decimal ZLQty = 0;
  2352. for (int i = 0; i < table.Rows.Count; i++)
  2353. {
  2354. if (table.Rows[i]["WarehouseCode"].ToString() == chkdr["WHCode"].ToString()
  2355. && table.Rows[i]["InvCode"].ToString() == chkdr["InvCode"].ToString())
  2356. {
  2357. ZLQty += Convert.ToDecimal(table.Rows[i]["SendQTY"].ToString());
  2358. }
  2359. }
  2360. if (Convert.ToDecimal(chkdr["Quantity"]) < ZLQty)
  2361. {
  2362. throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量大于单据需求数量,请尝试重新拣料。");
  2363. }
  2364. //if (Convert.ToDecimal(chkdr["Quantity"]) > ZLQty && (Type == "2" || Type == "5" || Type == "12"))
  2365. //{
  2366. // chksql = @" select B.F_Define2 from ICSInventoryDetail A
  2367. // INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define1=A.WHCode AND B.F_Define2=A.LocationCode AND B.F_Define4=A.WorkPoint
  2368. // where INVCode='{0}' and WHCode='{1}' and WorkPoint='{2}'";
  2369. // chksql = string.Format(chksql, chkdr["InvCode"].ToString(), chkdr["WHCode"].ToString(), WorkPoint);
  2370. // var chkds = Repository().FindDataSetBySql(chksql);
  2371. // DataTable chkdt = chkds.Tables[0];
  2372. // if (chkdt.Rows.Count != 0)
  2373. // {
  2374. // throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量小于单据需求数量,货柜单据必须整单拣料,请先核对库存。");
  2375. // }
  2376. //}
  2377. if (Convert.ToDecimal(chkdr["Quantity"]) > ZLQty)
  2378. {
  2379. throw new Exception("物料:" + chkdr["InvCode"].ToString() + "实际拣料数量小于单据需求数量,单据必须整单拣料,请先核对库存。");
  2380. }
  2381. }
  2382. #endregion
  2383. if (table.Rows.Count != 0)
  2384. {
  2385. #region 拣料时增加条码出入库记录,修改库存锁定数量,以作占料处理
  2386. string ccInspectJosn = "";
  2387. string ForkLiftUrl = System.Configuration.ConfigurationManager.AppSettings["ForkLiftUrl"];
  2388. string cclogsql = @"";
  2389. int Count = 1;
  2390. string BusinessCode = string.Empty;
  2391. string TransType = "";
  2392. if (Type == "2") { BusinessCode = "13"; TransType = "生产发料-领料申请单"; }
  2393. if (Type == "12") { BusinessCode = "14"; TransType = "生产发料-领料申请单"; }
  2394. if (Type == "5") { BusinessCode = "6"; TransType = "委外发料-委外领料申请单"; }
  2395. if (Type == "7") { BusinessCode = "19"; TransType = "销售发货-销售发货单"; }
  2396. if (Type == "8") { BusinessCode = "24"; TransType = "杂发"; }
  2397. if (Type == "10") { BusinessCode = "47"; TransType = "调拨申请单"; }
  2398. string Identification = Guid.NewGuid().ToString();
  2399. var pikTbLogTime = DateTime.Now;
  2400. string pikTbLogsql = string.Empty;
  2401. List<string> DocNoList = new List<string>();
  2402. if (Type == "2" || Type == "12" || Type == "5")
  2403. {
  2404. string ccsql = @"select B.F_Id from ICSInventoryDetail A
  2405. INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define1=A.WHCode AND B.F_Define2=A.LocationCode AND B.F_Define4=A.WorkPoint
  2406. where INVCode='{0}' and WHCode='{1}' and WorkPoint='{2}' AND B.F_ItemCode Like 'ForkLiftAreaConfig%'";
  2407. ccsql = string.Format(ccsql, table.Rows[0]["InvCode"].ToString(), table.Rows[0]["WarehouseCode"].ToString()
  2408. , WorkPoint);
  2409. var ccds = Repository().FindDataSetBySql(ccsql);
  2410. DataTable cctable = ccds.Tables[0];
  2411. if (cctable.Rows.Count != 0)
  2412. {
  2413. List<string> SourceBinList = new List<string>();
  2414. #region 窄巷道
  2415. ccInspectJosn += "[";
  2416. foreach (DataRow dr in table.Rows)
  2417. {
  2418. if (!SourceBinList.Contains(dr["LocationCode"].ToString()))
  2419. {
  2420. SourceBinList.Add(dr["LocationCode"].ToString());
  2421. if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadForkLift"]))
  2422. {
  2423. string Year = DateTime.Now.Year.ToString();
  2424. string Month = DateTime.Now.Month.ToString().PadLeft(2, '0');
  2425. string Day = DateTime.Now.Day.ToString().PadLeft(2, '0');
  2426. string Pre = "CC" + Year + Month + Day;
  2427. string serialsql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  2428. serialsql = string.Format(serialsql, "1701", "ICSForkLiftTaskLog", "TaskCode", Pre, 4);
  2429. string TaskCode = DbHelper.ExecuteTable(DbHelper.ConnectionString, CommandType.Text, serialsql, true, null).Rows[0][0].ToString();
  2430. string SerialNum = DateTime.Now.Hour.ToString().PadLeft(2, '0');
  2431. ccInspectJosn += "{";
  2432. ccInspectJosn += "\"TaskID\":\"" + TaskCode + "\",";//任务编号
  2433. ccInspectJosn += "\"TaskType\": \"PICK\",";//任务类型
  2434. ccInspectJosn += "\"SourceBin\": \"" + dr["LocationCode"].ToString() + "\"";//起始点位
  2435. ccInspectJosn += "},";
  2436. #region 记录叉车的任务编号及相关信息
  2437. #endregion
  2438. cclogsql += @"INSERT INTO ICSForkLiftTaskLog
  2439. (ID,TaskCode,ContainerCode,TaskType,StartLocation,EndLocation,MTIME,WorkPoint)
  2440. select NEWID(),'{0}','','PICK','{1}','',GETDATE(),'1701'";
  2441. cclogsql = string.Format(cclogsql, TaskCode, dr["LocationCode"].ToString());
  2442. }
  2443. }
  2444. }
  2445. ccInspectJosn = ccInspectJosn.TrimEnd(',');
  2446. ccInspectJosn += "]";
  2447. #endregion
  2448. }
  2449. else
  2450. {
  2451. #region 货柜
  2452. string InspectJosn = "";
  2453. string InspectJosnHead = "";
  2454. string InspectJosnBody = "";
  2455. InspectJosn += "{";
  2456. InspectJosn += "\"IMP_ORDINI\":[";
  2457. InspectJosn += "货柜主表区域预留";
  2458. InspectJosn += "],";
  2459. InspectJosn += "\"IMP_ORDINI_RIGHE\":[";
  2460. InspectJosn += "货柜子表区域预留";
  2461. InspectJosn += "]";
  2462. InspectJosn += "}";
  2463. for (int i = 0; i < table.Rows.Count; i++)
  2464. {
  2465. string hgsql = @"select A.InvCode,A.LocationCode,B.F_Define3,C.LocationCode AS Area
  2466. from ICSWareHouseLotInfo A
  2467. INNER JOIN Sys_SRM_ItemsDetail B ON B.F_Define2=A.LocationCode AND F_Define4=A.WorkPoint AND F_ItemName='HG_Location'
  2468. INNER JOIN ICSInventoryDetail C ON C.INVCode=A.InvCode AND C.WHCode=A.WarehouseCode AND C.WorkPoint=A.WorkPoint
  2469. where A.LotNo='{0}' AND A.WorkPoint='{1}'";
  2470. hgsql = string.Format(hgsql, table.Rows[i]["LotNO"].ToString(), WorkPoint);
  2471. var hgds = Repository().FindDataSetBySql(hgsql);
  2472. if (hgds.Tables.Count == 0)
  2473. return null;
  2474. DataTable hgtable = hgds.Tables[0];
  2475. if (hgtable.Rows.Count > 0)
  2476. {
  2477. if (!DocNoList.Contains(table.Rows[i]["Code"].ToString()))
  2478. {
  2479. DocNoList.Add(table.Rows[i]["Code"].ToString());
  2480. }
  2481. InspectJosnBody += "{";
  2482. InspectJosnBody += "\"RIG_ORDINE\":\"" + table.Rows[i]["Code"].ToString() + "\",";
  2483. InspectJosnBody += "\"RIG_ARTICOLO\": \"" + hgtable.Rows[0]["InvCode"].ToString() + "\",";
  2484. InspectJosnBody += "\"RIG_SUB1\": \"\",";
  2485. InspectJosnBody += "\"RIG_SUB2\": \"\",";
  2486. InspectJosnBody += "\"RIG_ELERUOLI_GEST\": \"" + hgtable.Rows[0]["Area"].ToString() + "\",";
  2487. InspectJosnBody += "\"RIG_ELEBAIE\": \"" + hgtable.Rows[0]["F_Define3"].ToString() + "\",";
  2488. InspectJosnBody += "\"RIG_QTAR\": " + table.Rows[i]["SendQTY"].ToString() + ",";
  2489. if (i == 0)
  2490. {
  2491. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + "\"";
  2492. }
  2493. else
  2494. {
  2495. if (table.Rows[i]["Code"].ToString() == table.Rows[i - 1]["Code"].ToString() &&
  2496. table.Rows[i]["Sequence"].ToString() == table.Rows[i - 1]["Sequence"].ToString())
  2497. {
  2498. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + Count.ToString() + "\"";
  2499. Count++;
  2500. }
  2501. else
  2502. {
  2503. InspectJosnBody += "\"RIG_HOSTINF\": \"" + table.Rows[i]["Sequence"].ToString() + "\"";
  2504. Count = 1;
  2505. }
  2506. }
  2507. InspectJosnBody += "},";
  2508. }
  2509. }
  2510. InspectJosnBody = InspectJosnBody.TrimEnd(',');
  2511. foreach (string DocNo in DocNoList)
  2512. {
  2513. InspectJosnHead += "{";
  2514. InspectJosnHead += "\"ORD_ORDINE\":\"" + DocNo.TrimStart('\'').TrimEnd('\'') + "\",";
  2515. InspectJosnHead += "\"ORD_DES\":\"" + TransType + "\",";
  2516. InspectJosnHead += "\"ORD_TIPOOP\":\"P\",";
  2517. InspectJosnHead += "\"ORD_CLIENTE\":\"" + WorkPoint + "\"";
  2518. InspectJosnHead += "},";
  2519. }
  2520. InspectJosnHead = InspectJosnHead.TrimEnd(',');
  2521. if (InspectJosnBody != "")
  2522. {
  2523. InspectJosn = InspectJosn.Replace("货柜主表区域预留", InspectJosnHead);
  2524. InspectJosn = InspectJosn.Replace("货柜子表区域预留", InspectJosnBody);
  2525. if (Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UploadERP"]))
  2526. {
  2527. string callresult = "";
  2528. #region 货柜接口调用前日志
  2529. object logID = Guid.NewGuid();
  2530. string logsql = @"insert into ICSWMS_HGLog
  2531. values
  2532. ('{0}',GETDATE(),'{1}','{2}','{3}','{4}','{5}')";
  2533. logsql = string.Format(logsql, logID, InspectJosn, "", WorkPoint, MUSER, MUSERNAME);
  2534. SqlHelper.CmdExecuteNonQueryLi(logsql);
  2535. #endregion
  2536. callresult = HTTPHelper.RestFulGet(InspectJosn, postUrlStr);
  2537. #region 货柜接口调用后日志
  2538. logsql = @"update ICSWMS_HGLog set ReturnResult='{0}'
  2539. where ID='{1}'";
  2540. logsql = string.Format(logsql, callresult, logID);
  2541. SqlHelper.CmdExecuteNonQueryLi(logsql);
  2542. #endregion
  2543. }
  2544. }
  2545. #endregion
  2546. }
  2547. }
  2548. foreach (DataRow PickLog in table.Rows)
  2549. {
  2550. pikTbLogsql += @" IF NOT EXISTS(SELECT TransCode FROM ICSWareHouseLotInfoLog WHERE TransCode='{1}' AND TransSequence='{2}' AND LotNo='{9}' AND WorkPoint='{8}' AND TransType='15')
  2551. BEGIN
  2552. INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
  2553. FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
  2554. Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
  2555. ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
  2556. MTIME,WorkPoint,EATTRIBUTE1)
  2557. SELECT NEWID(),'{0}','{1}','{2}',a.LotNo ,a.InvCode ,
  2558. a.WarehouseCode,a.LocationCode,'','','{3}',
  2559. '','1','15','{4}','0','',
  2560. '','','','{5}' ,'{6}' ,
  2561. '{7}' ,'{8}' ,''
  2562. FROM ICSWareHouseLotInfo a
  2563. WHERE a.LotNo='{9}' AND a.WorkPoint='{8}'
  2564. update ICSWareHouseLotInfo set LockQuantity=LockQuantity+'{3}' where LotNo='{9}' AND WorkPoint='{8}'
  2565. END
  2566. UPDATE ICSMOApply SET MUSER='{6}' WHERE ApplyCode='{1}' and Sequence='{2}' ; ";
  2567. pikTbLogsql = string.Format(pikTbLogsql, Identification, PickLog["Code"].ToString(), PickLog["Sequence"].ToString(), PickLog["SendQTY"].ToString()
  2568. , BusinessCode, MUSER, MUSERNAME, pikTbLogTime, WorkPoint, PickLog["LotNO"].ToString());
  2569. }
  2570. CmdExecuteNonQueryWithAPI(pikTbLogsql, cclogsql, ccInspectJosn, ForkLiftUrl);
  2571. #endregion
  2572. }
  2573. var result = ConvertCellToString(table);
  2574. if (Invmes.Rows.Count > 0)
  2575. {
  2576. result.Merge(Invmes, false);
  2577. }
  2578. return result;
  2579. }
  2580. catch (Exception ex)
  2581. {
  2582. throw new Exception(ex.Message);
  2583. }
  2584. }
  2585. }
  2586. /// <summary>
  2587. /// 工单领料推荐
  2588. /// </summary>
  2589. /// <param name="Id"></param>
  2590. /// <param name="workPoint"></param>
  2591. /// <returns></returns>
  2592. public DataTable GetICSMOPickMergeByWorkorder(string Id, string workPoint)
  2593. {
  2594. string sql = $@"SELECT row_number() over (partition by c.Code,c.InvCode order by c.Code,c.InvCode,d.MTIME) AS rowNo,
  2595. c.Code,
  2596. c.InvCode,
  2597. c.InvName,
  2598. c.InvStd,
  2599. c.InvUnit,
  2600. FLOOR(c.iQuantity) AS iQuantity,
  2601. d.WarehouseCode,
  2602. d.LotNO,
  2603. FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  2604. d.LocationCode LocationCode,
  2605. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  2606. FLOOR(f.QTYTotal) QTYTotal
  2607. FROM
  2608. (select
  2609. a.ApplyCode as Code, a.InvCode, b.InvName, b.InvStd, b.InvUnit, SUM(ISNULL(a.Quantity, 0)) AS iQuantity, a.WhCode,a.ExtensionID
  2610. FROM
  2611. ICSMOApply a
  2612. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2613. WHERE a.ApplyCode in ({Id}) AND a.WorkPoint = '{workPoint}'
  2614. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID) c
  2615. left join (select d.WarehouseCode,d.Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID from ICSWareHouseLotInfo d ,ICSInventoryLot m
  2616. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  2617. and d.WorkPoint='{workPoint}' AND d.Quantity>0 ) d on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  2618. LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='1701' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  2619. order by c.Code,c.InvCode,d.MTIME";
  2620. var dataset = Repository().FindDataSetBySql(sql);
  2621. if (dataset.Tables.Count == 0)
  2622. return null;
  2623. DataTable table = dataset.Tables[0];
  2624. decimal qtyCount = 0;
  2625. bool remove = false;
  2626. List<int> removeList = new List<int>();
  2627. for (int i = 0; i < table.Rows.Count; i++)
  2628. {
  2629. if (i != 0
  2630. && !table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString()))
  2631. {
  2632. qtyCount = 0;
  2633. remove = false;
  2634. }
  2635. if (remove)
  2636. {
  2637. removeList.Add(i);
  2638. }
  2639. else
  2640. {
  2641. var lotQty = table.Rows[i]["QTY"].ToString().ToDecimal();
  2642. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  2643. qtyCount += lotQty;
  2644. if (qtyCount >= orderQty)
  2645. {
  2646. remove = true;
  2647. }
  2648. }
  2649. }
  2650. if (removeList.Count > 0)
  2651. {
  2652. removeList.Reverse();
  2653. foreach (var item in removeList)
  2654. {
  2655. table.Rows.RemoveAt(item);
  2656. }
  2657. }
  2658. var result = ConvertCellToString(table);
  2659. if (Invmes.Rows.Count > 0)
  2660. {
  2661. result.Merge(Invmes, false);
  2662. }
  2663. return result;
  2664. }
  2665. public DataTable ConvertCellToString(DataTable data)
  2666. {
  2667. DataTable dtCloned = data.Clone();
  2668. foreach (DataColumn col in dtCloned.Columns)
  2669. {
  2670. col.DataType = typeof(string);
  2671. }
  2672. foreach (DataRow row in data.Rows)
  2673. {
  2674. DataRow newrow = dtCloned.NewRow();
  2675. foreach (DataColumn column in dtCloned.Columns)
  2676. {
  2677. newrow[column.ColumnName] = row[column.ColumnName].ToString();
  2678. }
  2679. dtCloned.Rows.Add(newrow);
  2680. }
  2681. return dtCloned;
  2682. }
  2683. // public DataTable GetICSMOPickMergeTemp2(string ID, string Type)
  2684. // {
  2685. // string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  2686. // #region sql
  2687. // string sql = @"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  2688. // c.MergeID,
  2689. // c.Code,
  2690. // c.InvCode,
  2691. // c.InvName,
  2692. // c.InvStd,
  2693. //c.InvUnit,
  2694. // FLOOR(c.iQuantity) AS iQuantity,
  2695. // d.WarehouseCode,
  2696. // d.LocationCode,
  2697. // d.LotNO,
  2698. // FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  2699. // CONVERT(varchar(100),d.MTIME, 23) MTIME,
  2700. // FLOOR(f.QTYTotal) QTYTotal INTO #temp
  2701. // FROM
  2702. // ({0}) c
  2703. // LEFT JOIN ICSWareHouseLotInfo d ON c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode AND d.WorkPoint='{1}' AND d.Quantity>0
  2704. // left join ICSInventoryLot m on d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint and c.ExtensionID=m.ExtensionID
  2705. // LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{1}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  2706. //DECLARE @ItemCode VARCHAR(50),
  2707. // @QTY DECIMAL(18,3),
  2708. // @ItemCodeCurrent VARCHAR(50),
  2709. // @QTYCurrent DECIMAL(18,3),
  2710. // @iQuantityCurrent DECIMAL(18,3),
  2711. // @CanDelete BIT,
  2712. // @Row INT,
  2713. // @rowCurrent INT
  2714. //SET @Row = @@rowcount
  2715. //SET @rowCurrent=1
  2716. //SET @CanDelete=0
  2717. //SET @ItemCode=''
  2718. //WHILE @rowCurrent<=@Row
  2719. // BEGIN
  2720. // SELECT @ItemCodeCurrent=InvCode,@QTYCurrent=QTY,@iQuantityCurrent=iQuantity FROM #temp WHERE rowNo=@rowCurrent
  2721. //PRINT(@rowCurrent)
  2722. // IF @ItemCode<>@ItemCodeCurrent
  2723. // BEGIN
  2724. // SET @ItemCode=@ItemCodeCurrent
  2725. // SET @QTY=0
  2726. // SET @CanDelete=0
  2727. // END
  2728. // IF @CanDelete=1
  2729. // BEGIN
  2730. // DELETE FROM #temp WHERE rowNo=@rowCurrent
  2731. // SET @rowCurrent += 1
  2732. // CONTINUE
  2733. // END
  2734. // SET @QTY += @QTYCurrent
  2735. // IF @QTY>=@iQuantityCurrent
  2736. // BEGIN
  2737. // SET @CanDelete=1
  2738. // END
  2739. // SET @rowCurrent += 1
  2740. // END
  2741. //SELECT * FROM #temp
  2742. //DROP TABLE #temp
  2743. //";
  2744. // #endregion
  2745. // string sqls = "";
  2746. // if (Type == "1")
  2747. // {
  2748. // #region 工单备料sql
  2749. // sqls = @" select
  2750. // x.MergeID,
  2751. // c.MOCode as Code,
  2752. // a.InvCode,
  2753. // b.InvName,
  2754. // b.InvStd,
  2755. //b.InvUnit,
  2756. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2757. // a.WhCode,
  2758. //a.ExtensionID
  2759. // FROM
  2760. // ICSMOPick a
  2761. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2762. // inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  2763. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2764. // WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  2765. // GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  2766. // #endregion
  2767. // }
  2768. // if (Type == "2")
  2769. // {
  2770. // #region 工单领料SQL
  2771. // sqls = @" select
  2772. // x.MergeID,
  2773. // a.ApplyCode as Code,
  2774. // a.InvCode,
  2775. // b.InvName,
  2776. // b.InvStd,
  2777. //b.InvUnit,
  2778. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2779. // a.WhCode,
  2780. // a.ExtensionID
  2781. // FROM
  2782. // ICSMOApply a
  2783. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2784. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2785. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  2786. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  2787. // #endregion
  2788. // }
  2789. // if (Type == "3")
  2790. // {
  2791. // #region 工单材料出库SQL
  2792. // sqls = @" select
  2793. // x.MergeID,
  2794. // a.IssueCode as Code,
  2795. // a.InvCode,
  2796. // b.InvName,
  2797. // b.InvStd,
  2798. //b.InvUnit,
  2799. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2800. // a.WhCode,
  2801. //a.ExtensionID
  2802. // FROM
  2803. // ICSMOIssue a
  2804. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2805. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2806. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2807. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2808. // #endregion
  2809. // }
  2810. // if (Type == "4")
  2811. // {
  2812. // #region 委外备料SQL
  2813. // sqls = @" select
  2814. // x.MergeID,
  2815. // c.OOCode as Code,
  2816. // a.InvCode,
  2817. // b.InvName,
  2818. // b.InvStd,
  2819. //b.InvUnit,
  2820. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2821. // a.WhCode,
  2822. //a.ExtensionID
  2823. // FROM
  2824. // ICSOOPick a
  2825. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2826. // left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  2827. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2828. // WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  2829. // GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID, x.MergeID";
  2830. // #endregion
  2831. // }
  2832. // if (Type == "5")
  2833. // {
  2834. // #region 委外领料SQL
  2835. // sqls = @" select
  2836. // x.MergeID,
  2837. // a.ApplyCode as Code,
  2838. // a.InvCode,
  2839. // b.InvName,
  2840. // b.InvStd,
  2841. //b.InvUnit,
  2842. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2843. // a.WhCode,
  2844. //a.ExtensionID
  2845. // FROM
  2846. // ICSOApply a
  2847. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2848. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2849. // WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  2850. // GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2851. // #endregion
  2852. // }
  2853. // if (Type == "6")
  2854. // {
  2855. // #region 委外材料出库SQL
  2856. // sqls = @" select
  2857. // x.MergeID,
  2858. // a.IssueCode as Code,
  2859. // a.InvCode,
  2860. // b.InvName,
  2861. // b.InvStd,
  2862. //b.InvUnit,
  2863. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2864. // a.WhCode,
  2865. //a.ExtensionID
  2866. // FROM
  2867. // ICSOIssue a
  2868. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2869. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2870. // WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  2871. // GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2872. // #endregion
  2873. // }
  2874. // if (Type == "7")
  2875. // {
  2876. // #region 销售发货SQL
  2877. // sqls = @" select
  2878. // x.MergeID,
  2879. // a.SDNCode as Code,
  2880. // a.InvCode,
  2881. // b.InvName,
  2882. // b.InvStd,
  2883. //b.InvUnit,
  2884. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2885. // a.WhCode,
  2886. //a.ExtensionID
  2887. // FROM
  2888. // ICSSDN a
  2889. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2890. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2891. // WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}'
  2892. // GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2893. // #endregion
  2894. // }
  2895. // if (Type == "8")
  2896. // {
  2897. // #region 其它出库SQL
  2898. // sqls = @" select
  2899. // x.MergeID,
  2900. // a.OutCode as Code,
  2901. // a.InvCode,
  2902. // b.InvName,
  2903. // b.InvStd,
  2904. //b.InvUnit,
  2905. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2906. // a.WhCode,
  2907. //a.ExtensionID
  2908. // FROM
  2909. // ICSOtherOut a
  2910. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2911. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2912. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2913. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2914. // #endregion
  2915. // }
  2916. // if (Type == "9")
  2917. // {
  2918. // #region 借用SQL
  2919. // sqls = @" select
  2920. // x.MergeID,
  2921. // a.BrrowCode as Code,
  2922. // a.InvCode,
  2923. // b.InvName,
  2924. // b.InvStd,
  2925. //b.InvUnit,
  2926. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2927. // a.WhCode,
  2928. //a.ExtensionID
  2929. // FROM
  2930. // ICSBrrow a
  2931. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2932. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2933. // WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  2934. // GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  2935. // #endregion
  2936. // }
  2937. // if (Type == "10")
  2938. // {
  2939. // #region 物料调拨
  2940. // sqls = @" select
  2941. // x.MergeID,
  2942. // a.TransferNO as Code,
  2943. // a.InvCode,
  2944. // b.InvName,
  2945. // b.InvStd,
  2946. //b.InvUnit,
  2947. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2948. // a.FromWarehouseCode as WhCode,
  2949. //a.ExtensionID
  2950. // FROM
  2951. // ICSTransfer a
  2952. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2953. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2954. // WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  2955. // GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,x.MergeID";
  2956. // #endregion
  2957. // }
  2958. // if (Type == "11")
  2959. // {
  2960. // #region 两步调出
  2961. // sqls = @"select
  2962. // x.MergeID,
  2963. // a.OutCode as Code,
  2964. // a.InvCode,
  2965. // b.InvName,
  2966. // b.InvStd,
  2967. // b.InvUnit,
  2968. // SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  2969. // a.WHCode as WhCode,
  2970. // a.ExtensionID
  2971. // FROM
  2972. // ICSOtherOut a
  2973. // INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  2974. // inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  2975. // LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  2976. // WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  2977. // GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,x.MergeID";
  2978. // #endregion
  2979. // }
  2980. // sqls = string.Format(sqls, string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(','), WorkPoint);
  2981. // sql = string.Format(sql, sqls, WorkPoint);
  2982. // DataTable table = Repository().FindDataSetBySql(sql).Tables[0];
  2983. // DataTable dtCloned = table.Clone();
  2984. // foreach (DataColumn col in dtCloned.Columns)
  2985. // {
  2986. // col.DataType = typeof(string);
  2987. // }
  2988. // foreach (DataRow row in table.Rows)
  2989. // {
  2990. // DataRow newrow = dtCloned.NewRow();
  2991. // foreach (DataColumn column in dtCloned.Columns)
  2992. // {
  2993. // newrow[column.ColumnName] = row[column.ColumnName].ToString();
  2994. // }
  2995. // dtCloned.Rows.Add(newrow);
  2996. // }
  2997. // if (Invmes.Rows.Count > 0)
  2998. // {
  2999. // dtCloned.Merge(Invmes, false);
  3000. // }
  3001. // return dtCloned;
  3002. // }
  3003. public DataTable GetICSMOPickMergeTemp2(string ID, string Type)
  3004. {
  3005. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3006. string sqls = "";
  3007. if (Type == "1")
  3008. {
  3009. #region 工单备料sql
  3010. sqls = @" select
  3011. x.MergeID,
  3012. c.MOCode as Code,
  3013. a.InvCode,
  3014. b.InvName,
  3015. b.InvStd,
  3016. b.InvUnit,
  3017. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3018. a.WhCode,
  3019. a.ExtensionID
  3020. FROM
  3021. ICSMOPick a
  3022. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3023. inner join ICSMO c on a.MODetailID=c.MODetailID and a.WorkPoint=c.WorkPoint
  3024. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3025. WHERE c.MOCode in ({0}) AND a.WorkPoint = '{1}'
  3026. GROUP BY c.MOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  3027. #endregion
  3028. }
  3029. if (Type == "2" || Type == "12")
  3030. {
  3031. #region 工单领料SQL
  3032. sqls = @" select
  3033. x.MergeID,
  3034. a.ApplyCode as Code,
  3035. a.InvCode,
  3036. b.InvName,
  3037. b.InvStd,
  3038. b.InvUnit,
  3039. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3040. a.WhCode,
  3041. a.ExtensionID
  3042. FROM
  3043. ICSMOApply a
  3044. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3045. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3046. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  3047. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,x.MergeID,a.ExtensionID";
  3048. #endregion
  3049. }
  3050. if (Type == "3")
  3051. {
  3052. #region 工单材料出库SQL
  3053. sqls = @" select
  3054. x.MergeID,
  3055. a.IssueCode as Code,
  3056. a.InvCode,
  3057. b.InvName,
  3058. b.InvStd,
  3059. b.InvUnit,
  3060. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3061. a.WhCode,
  3062. a.ExtensionID
  3063. FROM
  3064. ICSMOIssue a
  3065. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3066. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3067. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  3068. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3069. #endregion
  3070. }
  3071. if (Type == "4")
  3072. {
  3073. #region 委外备料SQL
  3074. sqls = @" select
  3075. x.MergeID,
  3076. c.OOCode as Code,
  3077. a.InvCode,
  3078. b.InvName,
  3079. b.InvStd,
  3080. b.InvUnit,
  3081. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3082. a.WhCode,
  3083. a.ExtensionID
  3084. FROM
  3085. ICSOOPick a
  3086. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3087. left join ICSOutsourcingOrder c on a.OODetailID=c.OODetailID and a.WorkPoint=c.WorkPoint
  3088. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3089. WHERE c.OOCode in ({0}) AND a.WorkPoint = '{1}'
  3090. GROUP BY c.OOCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID, x.MergeID";
  3091. #endregion
  3092. }
  3093. if (Type == "5")
  3094. {
  3095. #region 委外领料SQL
  3096. sqls = @" select
  3097. x.MergeID,
  3098. a.ApplyCode as Code,
  3099. a.InvCode,
  3100. b.InvName,
  3101. b.InvStd,
  3102. b.InvUnit,
  3103. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3104. a.WhCode,
  3105. a.ExtensionID
  3106. FROM
  3107. ICSOApply a
  3108. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3109. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3110. WHERE a.ApplyCode in ({0}) AND a.WorkPoint = '{1}'
  3111. GROUP BY a.ApplyCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3112. #endregion
  3113. }
  3114. if (Type == "6")
  3115. {
  3116. #region 委外材料出库SQL
  3117. sqls = @" select
  3118. x.MergeID,
  3119. a.IssueCode as Code,
  3120. a.InvCode,
  3121. b.InvName,
  3122. b.InvStd,
  3123. b.InvUnit,
  3124. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3125. a.WhCode,
  3126. a.ExtensionID
  3127. FROM
  3128. ICSOIssue a
  3129. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3130. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3131. WHERE a.IssueCode in ({0}) AND a.WorkPoint = '{1}'
  3132. GROUP BY a.IssueCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3133. #endregion
  3134. }
  3135. if (Type == "7")
  3136. {
  3137. #region 销售发货SQL
  3138. sqls = @" select
  3139. x.MergeID,
  3140. a.SDNCode as Code,
  3141. a.InvCode,
  3142. b.InvName,
  3143. b.InvStd,
  3144. b.InvUnit,
  3145. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3146. a.WhCode,
  3147. a.ExtensionID
  3148. FROM
  3149. ICSSDN a
  3150. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3151. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3152. WHERE a.SDNCode in ({0}) AND a.WorkPoint = '{1}' AND a.Type='1'
  3153. GROUP BY a.SDNCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3154. #endregion
  3155. }
  3156. if (Type == "8")
  3157. {
  3158. #region 其它出库SQL
  3159. sqls = @" select
  3160. x.MergeID,
  3161. a.OutCode as Code,
  3162. a.InvCode,
  3163. b.InvName,
  3164. b.InvStd,
  3165. b.InvUnit,
  3166. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3167. a.WhCode,
  3168. a.ExtensionID
  3169. FROM
  3170. ICSOtherOut a
  3171. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3172. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3173. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  3174. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3175. #endregion
  3176. }
  3177. if (Type == "9")
  3178. {
  3179. #region 借用SQL
  3180. sqls = @" select
  3181. x.MergeID,
  3182. a.BrrowCode as Code,
  3183. a.InvCode,
  3184. b.InvName,
  3185. b.InvStd,
  3186. b.InvUnit,
  3187. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3188. a.WhCode,
  3189. a.ExtensionID
  3190. FROM
  3191. ICSBrrow a
  3192. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3193. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3194. WHERE a.BrrowCode in ({0}) AND a.WorkPoint = '{1}'
  3195. GROUP BY a.BrrowCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WhCode,a.ExtensionID,x.MergeID";
  3196. #endregion
  3197. }
  3198. if (Type == "10")
  3199. {
  3200. #region 物料调拨
  3201. sqls = @" select
  3202. x.MergeID,
  3203. a.TransferNO as Code,
  3204. a.InvCode,
  3205. b.InvName,
  3206. b.InvStd,
  3207. b.InvUnit,
  3208. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3209. a.FromWarehouseCode as WhCode,
  3210. a.ExtensionID
  3211. FROM
  3212. ICSTransfer a
  3213. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3214. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3215. WHERE a.TransferNO in ({0}) AND a.WorkPoint = '{1}'
  3216. GROUP BY a.TransferNO,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.FromWarehouseCode,a.ExtensionID,x.MergeID";
  3217. #endregion
  3218. }
  3219. if (Type == "11")
  3220. {
  3221. #region 两步调出
  3222. sqls = @" select
  3223. x.MergeID,
  3224. a.OutCode as Code,
  3225. a.InvCode,
  3226. b.InvName,
  3227. b.InvStd,
  3228. b.InvUnit,
  3229. SUM(ISNULL(a.Quantity, 0)) AS iQuantity,
  3230. a.WHCode as WhCode,
  3231. a.ExtensionID
  3232. FROM
  3233. ICSOtherOut a
  3234. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  3235. inner join ICSMOPickMerge x on a.ID=x.SourceID and a.WorkPoint=x.WorkPoint
  3236. LEFT JOIN ICSINVENTORY b ON a.InvCode = b.InvCode AND a.WorkPoint=b.WorkPoint
  3237. WHERE a.OutCode in ({0}) AND a.WorkPoint = '{1}'
  3238. GROUP BY a.OutCode,a.InvCode,b.InvName,b.InvStd,b.InvUnit,a.WHCode,a.ExtensionID,x.MergeID";
  3239. #endregion
  3240. }
  3241. sqls = string.Format(sqls, string.IsNullOrWhiteSpace(ID) ? "''" : ID.TrimEnd(','), WorkPoint);
  3242. #region sql
  3243. string sql = $@"SELECT row_number() over (order by c.Code,c.InvCode,d.MTIME,d.LotNO) AS rowNo,
  3244. c.MergeID,
  3245. c.Code,
  3246. c.InvCode,
  3247. c.InvName,
  3248. c.InvStd,
  3249. c.InvUnit,
  3250. FLOOR(c.iQuantity) AS iQuantity,
  3251. d.WarehouseCode,
  3252. d.LocationCode,
  3253. d.LotNO,
  3254. FLOOR(ISNULL(d.Quantity, 0)) AS QTY,
  3255. CONVERT(varchar(100),d.MTIME, 23) MTIME,
  3256. FLOOR(f.QTYTotal) QTYTotal
  3257. FROM
  3258. ({sqls}) c
  3259. left join (select d.WarehouseCode,d.Quantity,d.INVCode, m.LotNo, d.MTIME,d.LocationCode,m.ExtensionID
  3260. from ICSWareHouseLotInfo d ,ICSInventoryLot m
  3261. where d.LotNo=m.LotNo and d.WorkPoint=m.WorkPoint
  3262. and d.WorkPoint='{WorkPoint}' AND d.Quantity>0 ) d
  3263. on c.InvCode=d.INVCode AND c.WhCode=d.WarehouseCode and d.ExtensionID=c.ExtensionID
  3264. LEFT JOIN (SELECT INVCode,WarehouseCode,SUM(Quantity) AS QTYTotal FROM ICSWareHouseLotInfo WHERE WorkPoint='{WorkPoint}' GROUP BY INVCode,WarehouseCode) f ON c.InvCode=f.INVCode AND c.WhCode=f.WarehouseCode
  3265. order by c.Code,c.InvCode,d.MTIME ";
  3266. #endregion
  3267. var dataset = Repository().FindDataSetBySql(sql);
  3268. if (dataset.Tables.Count == 0)
  3269. return null;
  3270. DataTable table = dataset.Tables[0];
  3271. decimal qtyCount = 0;
  3272. bool remove = false;
  3273. List<int> removeList = new List<int>();
  3274. for (int i = 0; i < table.Rows.Count; i++)
  3275. {
  3276. if (i != 0
  3277. && (!table.Rows[i]["InvCode"].ToString().Equals(table.Rows[i - 1]["InvCode"].ToString())
  3278. || !table.Rows[i]["Code"].ToString().Equals(table.Rows[i - 1]["Code"].ToString()))
  3279. )
  3280. {
  3281. qtyCount = 0;
  3282. remove = false;
  3283. }
  3284. if (remove)
  3285. {
  3286. removeList.Add(i);
  3287. }
  3288. else
  3289. {
  3290. var lotQty = table.Rows[i]["QTY"].ToString().ToDecimal();
  3291. var orderQty = table.Rows[i]["iQuantity"].ToString().ToDecimal();
  3292. qtyCount += lotQty;
  3293. if (qtyCount >= orderQty)
  3294. {
  3295. remove = true;
  3296. }
  3297. }
  3298. }
  3299. if (removeList.Count > 0)
  3300. {
  3301. removeList.Reverse();
  3302. foreach (var item in removeList)
  3303. {
  3304. table.Rows.RemoveAt(item);
  3305. }
  3306. }
  3307. var result = ConvertCellToString(table);
  3308. if (Invmes.Rows.Count > 0)
  3309. {
  3310. result.Merge(Invmes, false);
  3311. }
  3312. return result;
  3313. }
  3314. public string MergeMaterial(string keyValue, string Type)
  3315. {
  3316. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3317. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3318. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3319. string msg = "";
  3320. string sql = string.Empty;
  3321. string dataList = string.Empty;
  3322. List<string> arry = keyValue.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
  3323. if (arry.Count > 0)
  3324. {
  3325. StringBuilder stringBuilder = new StringBuilder();
  3326. foreach (var i in arry)
  3327. {
  3328. stringBuilder.Append($@"'{i}',");
  3329. }
  3330. dataList = stringBuilder.ToString(0, stringBuilder.Length - 1);
  3331. }
  3332. Int64 Merge_ID = 0;
  3333. DateTime time = DateTime.Now;
  3334. string Tday = time.ToString("yyyyMMdd");
  3335. string sqls = string.Format(@"SELECT MAX(A.MergeID) AS SourceID FROM ICSMOPickMerge A WHERE A.MergeID LIKE '{0}%' AND LEN(a.MergeID) = 13", Tday);
  3336. DataSet ds = SqlHelper.GetDataSetBySql(sqls);
  3337. DataTable dts = ds.Tables[0];
  3338. if (dts != null && dts.Rows.Count > 0)
  3339. {
  3340. string lot = dts.Rows[0]["SourceID"].ToString();
  3341. if (!string.IsNullOrWhiteSpace(lot))
  3342. Merge_ID = Convert.ToInt64(lot.Substring(lot.Length - 5));
  3343. }
  3344. string MergeID = Tday + (Merge_ID + 1).ToString().PadLeft(5, '0');
  3345. string order = string.Empty;
  3346. string orderCode = string.Empty;
  3347. string quantity = string.Empty;
  3348. string sqlString1 = string.Empty;
  3349. string sqlString2 = string.Empty;
  3350. if (Type == "1")//工单备料
  3351. {
  3352. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3353. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3354. select NEWID(),'{0}',b.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3355. from ICSMO a inner join ICSMOPick b on b.MODetailID=a.MODetailID and b.WorkPoint=a.WorkPoint
  3356. where a.MOCode in ({5})
  3357. ";
  3358. }
  3359. if (Type == "2")//工单发料
  3360. {
  3361. order = "ICSMOApply";
  3362. orderCode = "b.ApplyCode";
  3363. quantity = "b.IssueQuantity";
  3364. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3365. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  3366. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.ApplyCode
  3367. from ICSMOApply a
  3368. where a.ApplyCode in ({5})";
  3369. }
  3370. if (Type == "3")//材料出库
  3371. {
  3372. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3373. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3374. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3375. from ICSMOIssue a
  3376. where a.IssueCode in ({5}) ";
  3377. }
  3378. if (Type == "4")//委外备料
  3379. {
  3380. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3381. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3382. select NEWID(),'{0}',b.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3383. from ICSOutsourcingOrder a inner join ICSOOPick b on a.OODetailID=b.OODetailID and b.WorkPoint=a.WorkPoint
  3384. where a.OOCode in ({5})";
  3385. }
  3386. if (Type == "5")//委外领料
  3387. {
  3388. order = "ICSOApply";
  3389. orderCode = "b.ApplyCode";
  3390. quantity = "b.IssueQuantity";
  3391. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3392. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  3393. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.ApplyCode
  3394. from ICSOApply a
  3395. where a.ApplyCode in ({5})";
  3396. }
  3397. if (Type == "6")//委外材料出库
  3398. {
  3399. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3400. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3401. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3402. from ICSOIssue a
  3403. where a.IssueCode in ({5})";
  3404. }
  3405. if (Type == "7")//销售发货
  3406. {
  3407. order = "ICSSDN";
  3408. orderCode = "b.SDNCode";
  3409. quantity = "b.SDNQuantity";
  3410. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3411. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  3412. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.SDNCode
  3413. from ICSSDN a
  3414. where a.SDNCode in ({5}) AND a.Type='1' ";
  3415. }
  3416. if (Type == "8")//其它出库
  3417. {
  3418. order = "ICSOtherOut";
  3419. orderCode = "b.OutCode";
  3420. quantity = "b.OutQuantity";
  3421. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3422. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  3423. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.OutCode
  3424. from ICSOtherOut a
  3425. where a.OutCode in ({5})";
  3426. }
  3427. if (Type == "9")//借用单
  3428. {
  3429. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3430. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3431. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3432. from ICSBrrow a
  3433. where a.BrrowCode in ({5})";
  3434. }
  3435. if (Type == "10")//物料调拨
  3436. {
  3437. order = "ICSTransfer";
  3438. orderCode = "b.TransferNO";
  3439. quantity = "b.TransferQuantity";
  3440. sql += @"INSERT INTO dbo.ICSMOPickMerge
  3441. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  3442. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}',a.TransferNO
  3443. from ICSTransfer a
  3444. where a.TransferNO in ({5})
  3445. ";
  3446. }
  3447. if (Type == "11")//两步调出
  3448. {
  3449. sql += @" INSERT INTO dbo.ICSMOPickMerge
  3450. ( ID ,MergeID ,SourceID ,Type,MUSER, MUSERName,MTIME,WorkPoint)
  3451. select NEWID(),'{0}',a.ID ,'{1}','{2}','{3}',GETDATE(),'{4}'
  3452. from ICSOtherOut a
  3453. INNER JOIN ICSTransfer tra ON a.TransferDetailID=tra.TransferDetailID AND a.WorkPoint=tra.WorkPoint
  3454. where a.OutCode in ({5})
  3455. ";
  3456. }
  3457. sql = string.Format(sql, MergeID, Type, MUSER, MUSERNAME, WorkPoint, dataList);
  3458. sqlString1 += $@" SELECT a.ID FROM ICSMOPickMerge a WHERE a.SourceID IN (SELECT b.ID FROM {order} b WHERE {orderCode} IN({dataList}) )";
  3459. sqlString2 += $@" SELECT b.ID FROM {order} b WHERE {orderCode} IN({dataList}) AND {quantity}>0";
  3460. DataSet ds1 = SqlHelper.GetDataSetBySql(sqlString1);
  3461. DataSet ds2 = SqlHelper.GetDataSetBySql(sqlString2);
  3462. DataTable dts1 = ds1.Tables[0];
  3463. DataTable dts2 = ds2.Tables[0];
  3464. if ((dts1 != null && dts1.Rows.Count > 0))
  3465. {
  3466. }
  3467. else if (dts2 != null && dts2.Rows.Count > 0)
  3468. {
  3469. msg = "当前选择单据号存在已出库的单据号,合并 失败";
  3470. }
  3471. else
  3472. {
  3473. try
  3474. {
  3475. if (SqlHelper.CmdExecuteNonQueryLi(sql) == 0)
  3476. {
  3477. msg = "新增失败";
  3478. }
  3479. }
  3480. catch (Exception ex)
  3481. {
  3482. throw new Exception(ex.Message);
  3483. }
  3484. }
  3485. return msg;
  3486. }
  3487. public string CancelMergeMaterial(string keyValue, string Type)
  3488. {
  3489. string msg = "";
  3490. string sql = string.Empty;
  3491. keyValue = keyValue.TrimEnd(',');
  3492. List<string> arry = keyValue.Split(',').ToList();
  3493. string dataList = string.Empty;
  3494. if (arry.Count > 0)
  3495. {
  3496. foreach (var i in arry)
  3497. {
  3498. dataList += $@"'{i}',";
  3499. }
  3500. if (dataList.Any())
  3501. {
  3502. dataList = dataList.TrimEnd(',');
  3503. }
  3504. }
  3505. string sqls = $@" SELECT SourceID FROM ICSMOPickMerge WHERE EATTRIBUTE1 IN({dataList}) ";
  3506. DataSet ds = SqlHelper.GetDataSetBySql(sqls);
  3507. DataTable dts = ds.Tables[0];
  3508. if (dts == null || dts.Rows.Count <= 0)
  3509. {
  3510. msg = "当前单据未合并拣料,取消合并拣料失败";
  3511. return msg;
  3512. }
  3513. string sqlStrring = string.Empty;
  3514. if (Type == "2")//工单发料
  3515. {
  3516. sqlStrring = $@"select ID from ICSMOApply a where a.ID in ({sqls}) and a.IssueQuantity=0 ";
  3517. }
  3518. if (Type == "5")//委外领料
  3519. {
  3520. sqlStrring = $@"select ID from ICSOApply a where a.ID in ({sqls}) and a.IssueQuantity=0 ";
  3521. }
  3522. if (Type == "7")//销售发货
  3523. {
  3524. sqlStrring = $@"select ID from ICSSDN a where a.ID in ({sqls}) and a.SDNQuantity=0 AND a.Type='1' ";
  3525. }
  3526. if (Type == "8")//其它出库
  3527. {
  3528. sqlStrring = $@"select ID
  3529. from ICSOtherOut a
  3530. where a.ID in ({sqls}) and a.OutQuantity=0";
  3531. }
  3532. if (Type == "10")//物料调拨
  3533. {
  3534. sqlStrring = $@"select ID from ICSTransfer a where a.ID in ({sqls}) and a.TransferQuantity=0 ";
  3535. }
  3536. DataSet dsdata = SqlHelper.GetDataSetBySql(sqlStrring);
  3537. DataTable dtdsdatas = dsdata.Tables[0];
  3538. if (dtdsdatas == null || dtdsdatas.Rows.Count <= 0)
  3539. {
  3540. msg = "当前物料已经出库,取消合并失败";
  3541. return msg;
  3542. }
  3543. sql = $@"DELETE FROM ICSMOPickMerge WHERE SourceID IN({sqls})";
  3544. try
  3545. {
  3546. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  3547. {
  3548. }
  3549. else
  3550. {
  3551. msg = "取消合并失败";
  3552. }
  3553. }
  3554. catch (Exception ex)
  3555. {
  3556. throw new Exception(ex.Message);
  3557. }
  3558. return msg;
  3559. }
  3560. public string CheckQty(string objArr)
  3561. {
  3562. objArr = objArr.TrimEnd(',');
  3563. string sql = @"select * from ICSMOPickMerge a
  3564. left join ICSMOPick b on a.SourceID=b.ID and a.WorkPoint=b.WorkPoint
  3565. left join ICSMO c on b.MODetailID=c.MODetailID and b.WorkPoint=c.WorkPoint
  3566. where MOCode in ({0})";
  3567. sql = string.Format(sql, objArr);
  3568. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  3569. if (dt != null && dt.Rows.Count > 0)
  3570. {
  3571. return "1";
  3572. }
  3573. return "0";
  3574. }
  3575. //删除占料
  3576. public string DelPickLog(string objCode)
  3577. {
  3578. //站点信息
  3579. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3580. string msg = "";
  3581. objCode = objCode.Substring(1, objCode.Length - 2);
  3582. string sql = string.Empty;
  3583. // sql += string.Format(@"update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),a.Quantity )
  3584. //from dbo.ICSWareHouseLotInfoLog a
  3585. //left join dbo.ICSWareHouseLotInfo b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  3586. // where a.TransCode in ({0}) and a.TransType='15' and a.WorkPoint='{1}'", objCode.TrimEnd(','), WorkPoint);
  3587. sql += string.Format(@" update b set b.LockQuantity=convert(decimal(18,6),b.LockQuantity)-convert(decimal(18,6),c.Quantity )
  3588. from dbo.ICSWareHouseLotInfo b
  3589. inner join (select sum(Quantity) as Quantity, LotNo from ICSWareHouseLotInfolog where TransCode in ({0})and TransType='15' and WorkPoint='{1}' group by LotNo) c
  3590. on c.LotNo =b.LotNo ", objCode.TrimEnd(','), WorkPoint);
  3591. sql += string.Format(@" delete dbo.ICSWareHouseLotInfoLog where TransCode in({0}) and TransType='15' and WorkPoint='{1}'", objCode.TrimEnd(','), WorkPoint);
  3592. try
  3593. {
  3594. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  3595. {
  3596. }
  3597. }
  3598. catch (Exception ex)
  3599. {
  3600. throw new Exception(ex.Message);
  3601. }
  3602. return msg;
  3603. }
  3604. public int SeachPickLog(string objCode)
  3605. {
  3606. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3607. objCode = objCode.TrimEnd(',');
  3608. string[] parameters = objCode.Split(',');
  3609. int parameterCount = parameters.Length;
  3610. string sql = @" select distinct a.TransCode from dbo.ICSWareHouseLotInfoLog a
  3611. left join dbo.ICSWareHouseLotInfo b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  3612. where a.TransCode in ({0}) and a.TransType='15' and a.WorkPoint='{1}'";
  3613. sql = string.Format(sql, objCode, WorkPoint);
  3614. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  3615. int count = dt.Rows.Count;
  3616. return count;
  3617. }
  3618. //添加打印次数
  3619. public int PrintCount(string objCode, string type)
  3620. {
  3621. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3622. string MUser = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  3623. string MUserName = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  3624. var date = DateTime.Now;
  3625. objCode = objCode.TrimEnd(',');
  3626. string[] parameters = objCode.Split(',');
  3627. StringBuilder sb = new StringBuilder();
  3628. foreach (var data in parameters)
  3629. {
  3630. sb.Append($@"IF EXISTS (SELECT ID FROM ICSPrintCount WHERE TransCode={data} )
  3631. BEGIN
  3632. UPDATE ICSPrintCount SET PrintCount=PrintCount+1 WHERE TransCode={data}
  3633. END
  3634. ELSE
  3635. BEGIN
  3636. INSERT INTO ICSPrintCount VALUES(NEWID(),{data},1,'{type}','{WorkPoint}','{MUser}','{MUserName}','{date}')
  3637. END
  3638. ;"
  3639. );
  3640. }
  3641. if (sb.IsEmpty())
  3642. {
  3643. return 0;
  3644. }
  3645. int count = SqlHelper.ExecuteNonQuery(sb.ToString());
  3646. return count;
  3647. }
  3648. public DataTable GetPickLogInfo(string ID)
  3649. {
  3650. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  3651. DataTable dt = new DataTable();
  3652. List<DbParameter> parameter = new List<DbParameter>();
  3653. string sql = @"
  3654. select '' as MergeID,a.TransCode as Code,a.TransSequence as Sequence,a.InvCode as InvCode, b.InvName as InvName,b.InvStd as InvStd,b.InvUnit as InvSInvUnittd,a.Quantity as iQuantity,
  3655. a.FromWarehouseCode as WarehouseCode,a.FromLocationCode as LocationCode,a.LotNO,a.MTIME,c.Quantity as QTY
  3656. from dbo.ICSWareHouseLotInfoLog a
  3657. left join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  3658. left join dbo.ICSWareHouseLotInfo c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  3659. where a.TransCode in ({0}) and a.TransType='15' and a.WorkPoint='{1}'";
  3660. sql = string.Format(sql, ID.TrimEnd(','), WorkPoint);
  3661. return Repository().FindTableBySql(sql.ToString());
  3662. }
  3663. public class LotMessage
  3664. {
  3665. public string LotNo { get; set; }
  3666. public decimal Quantity { get; set; }
  3667. }
  3668. //事务中执行SQL及调用接口
  3669. public static int CmdExecuteNonQueryWithAPI(string sql, string ccsql, string InputJson, string PostUrl, params SqlParameter[] spArr)
  3670. {
  3671. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  3672. {
  3673. conn.Open();
  3674. SqlTransaction sqlTran = conn.BeginTransaction();
  3675. SqlCommand cmd = new SqlCommand();
  3676. cmd.Transaction = sqlTran;
  3677. cmd.Connection = conn;
  3678. try
  3679. {
  3680. if (ccsql == "")
  3681. {
  3682. cmd.CommandText = sql;
  3683. int RES = cmd.ExecuteNonQuery();
  3684. cmd.Transaction.Commit();
  3685. return RES;
  3686. }
  3687. else
  3688. {
  3689. cmd.CommandText = sql;
  3690. int RES = cmd.ExecuteNonQuery();
  3691. cmd.CommandText = ccsql;
  3692. RES = cmd.ExecuteNonQuery();
  3693. #region 叉车接口调用(写进事务中,报错可以回滚,保证数据正确)
  3694. string rest = HTTPHelper.HttpPost("WMS调用叉车接口出库", PostUrl, InputJson);
  3695. ForkLiftResult result = JsonConvert.DeserializeObject<ForkLiftResult>(rest);
  3696. if (result.Ret == 1)
  3697. {
  3698. cmd.Transaction.Commit();
  3699. return RES;
  3700. }
  3701. else
  3702. {
  3703. throw new Exception(result.RetMsg);
  3704. }
  3705. #endregion
  3706. }
  3707. }
  3708. catch (Exception ex)
  3709. {
  3710. cmd.Transaction.Rollback();
  3711. throw new Exception(ex.Message);
  3712. }
  3713. finally
  3714. {
  3715. if (conn.State != ConnectionState.Closed)
  3716. {
  3717. conn.Close();
  3718. conn.Dispose();
  3719. }
  3720. }
  3721. return 0;
  3722. }
  3723. }
  3724. }
  3725. }