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.

1436 lines
88 KiB

3 days ago
  1. using Newtonsoft.Json.Linq;
  2. using Newtonsoft.Json;
  3. using NFine.Code;
  4. using NFine.Data.Extensions;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Configuration;
  8. using System.Data.Common;
  9. using System.Data;
  10. using System.IO;
  11. using System.Linq;
  12. using System.Net;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using NFine.Domain._03_Entity.SRM;
  16. using NFine.Repository;
  17. using System.Data.SqlClient;
  18. using System.Data.Common.CommandTrees.ExpressionBuilder;
  19. namespace NFine.Application.SRM
  20. {
  21. public class DXCreateItemLotApp : RepositoryFactory<ICSPO_PoMain>
  22. {
  23. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  24. {
  25. string ParentId = "";
  26. DataTable dt = new DataTable();
  27. var queryParam = queryJson.ToJObject();
  28. List<DbParameter> parameter = new List<DbParameter>();
  29. string sql = @"SELECT a.ID, a.POCode,a.Sequence,CONVERT(NVARCHAR(15),a.CreateDateTime,23) AS PODate,
  30. a.ExtensionID,a.VenCode,ee.VenName,a.InvCode,cc.NGQTY AS RefuseLotQty,dd.returnqty AS BackLotQty,
  31. b.InvName,b.InvStd,b.InvUnit,a.Quantity,ISNULL(bb.LotQty,0) AS LotQty ,b.InvDesc,b.ClassCode,isnull(InQuantity,0) as InQuantity,a.WorkPoint as WorkPointCode
  32. ,CreatePerson,a.EATTRIBUTE4 ProjectCode
  33. FROM dbo.ICSPurchaseOrder a
  34. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  35. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  36. LEFT JOIN (
  37. SELECT mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  38. FROM ICSInventoryLot ee
  39. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo
  40. WHERE (ISNULL(ee.EATTRIBUTE1,'') ='' or ISNULL(ee.EATTRIBUTE6,'') ='' )
  41. group by mm.TransCode,mm.TransSequence,ee.WorkPoint ) bb
  42. on a.POCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  43. left join (
  44. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  45. from ICSDeliveryNotice a
  46. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  47. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  48. group by c.TransCode,c.TransSequence,a.WorkPoint,DNType having a.DNType='3') cc
  49. on a.POCode=cc.TransCode and a.Sequence=cc.TransSequence AND a.WorkPoint=cc.WorkPoint
  50. left join (select b.POCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  51. FROM ICSDeliveryNotice a
  52. left join ICSPurchaseOrder b on a.PODetailID=b.PODetailID
  53. group by b.POCode,b.Sequence,a.DNType,a.WorkPoint having a.DNType='2' ) dd
  54. on a.POCode=dd.POCode and a.Sequence=dd.Sequence AND a.WorkPoint=dd.WorkPoint
  55. left join ICSVendor ee on a.VenCode=ee.VenCode and a.WorkPoint=ee.WorkPoint
  56. WHERE 1=1 AND a.ReleaseState = '1' and a.Status<>'3'";
  57. if (!string.IsNullOrWhiteSpace(queryJson))
  58. {
  59. if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  60. {
  61. sql += " and a.EATTRIBUTE4 like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  62. }
  63. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  64. {
  65. sql += " and a.POCode like '%" + queryParam["POCode"].ToString() + "%' ";
  66. }
  67. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  68. {
  69. sql += " and a.ReleaseDate >='" + queryParam["BeginDate"].ToString() + "' ";
  70. }
  71. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  72. {
  73. sql += " and a.ReleaseDate <='" + queryParam["EndDate"].ToString() + "'";
  74. }
  75. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  76. {
  77. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  78. }
  79. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  80. {
  81. sql += " and ee.VenName like '%" + queryParam["VenName"].ToString() + "%'";
  82. }
  83. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  84. {
  85. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  86. }
  87. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  88. {
  89. string POStatus = queryParam["POStatus"].ToString();
  90. if (POStatus == "0")
  91. {
  92. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  93. }
  94. else if (POStatus == "1")
  95. {
  96. sql += " and a.Quantity=ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  97. }
  98. else
  99. {
  100. sql += " and a.Quantity>ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  101. }
  102. }
  103. }
  104. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  105. {
  106. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  107. }
  108. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  109. {
  110. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  111. }
  112. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  113. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  114. {
  115. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  116. }
  117. else
  118. {
  119. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  120. }
  121. }
  122. public DataTable GetGridJsonWeiWai(string queryJson, ref Pagination jqgridparam)
  123. {
  124. string ParentId = "";
  125. DataTable dt = new DataTable();
  126. var queryParam = queryJson.ToJObject();
  127. List<DbParameter> parameter = new List<DbParameter>();
  128. string sql = @" SELECT a.ID, a.OOCode,a.Sequence,CONVERT(NVARCHAR(15),a.CreateDateTime,23) AS PODate,a.OODetailID,
  129. a.ExtensionID,a.VenCode,ee.VenName,a.InvCode,cc.NGQTY AS RefuseLotQty,dd.returnqty AS BackLotQty,
  130. b.InvName,b.InvStd,b.InvUnit,a.Quantity,ISNULL(bb.LotQty,0) AS LotQty ,b.InvDesc,b.ClassCode,isnull(InQuantity,0) as InQuantity,a.WorkPoint as WorkPointCode,a.EATTRIBUTE1 ProjectCode
  131. FROM dbo.ICSOutsourcingOrder a
  132. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  133. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  134. LEFT JOIN (
  135. SELECT mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  136. FROM ICSInventoryLot ee
  137. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo
  138. WHERE (ISNULL(ee.EATTRIBUTE1,'') ='' or ISNULL(ee.EATTRIBUTE6,'') ='' )
  139. group by mm.TransCode,mm.TransSequence,ee.WorkPoint ) bb
  140. on a.OOCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  141. left join (
  142. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  143. from ICSODeliveryNotice a
  144. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  145. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  146. group by c.TransCode,c.TransSequence,a.WorkPoint,ODNType having a.ODNType='3') cc
  147. on a.OOCode=cc.TransCode and a.Sequence=cc.TransSequence AND a.WorkPoint=cc.WorkPoint
  148. left join (select b.OOCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  149. FROM ICSODeliveryNotice a
  150. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID
  151. group by b.OOCode,b.Sequence,a.ODNType,a.WorkPoint having a.ODNType='2' ) dd
  152. on a.OOCode=dd.OOCode and a.Sequence=dd.Sequence AND a.WorkPoint=dd.WorkPoint
  153. left join ICSVendor ee on a.VenCode=ee.VenCode and a.WorkPoint=ee.WorkPoint
  154. WHERE 1=1 AND a.ReleaseState = '1' and a.Status<>'3'";
  155. if (!string.IsNullOrWhiteSpace(queryJson))
  156. {
  157. if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  158. {
  159. sql += " and a.ExtensionID like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  160. }
  161. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  162. {
  163. sql += " and a.OOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  164. }
  165. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  166. {
  167. sql += " and a.ReleaseDate >='" + queryParam["BeginDate"].ToString() + "' ";
  168. }
  169. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  170. {
  171. sql += " and a.ReleaseDate <='" + queryParam["EndDate"].ToString() + "'";
  172. }
  173. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  174. {
  175. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  176. }
  177. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  178. {
  179. sql += " and ee.VenName like '%" + queryParam["VenName"].ToString() + "%'";
  180. }
  181. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  182. {
  183. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  184. }
  185. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  186. {
  187. string POStatus = queryParam["POStatus"].ToString();
  188. if (POStatus == "0")
  189. {
  190. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  191. }
  192. else if (POStatus == "1")
  193. {
  194. sql += " and a.Quantity=ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  195. }
  196. else
  197. {
  198. sql += " and a.Quantity>ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  199. }
  200. }
  201. }
  202. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  203. {
  204. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  205. }
  206. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  207. {
  208. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  209. }
  210. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  211. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  212. {
  213. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  214. }
  215. else
  216. {
  217. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  218. }
  219. }
  220. /// <summary>
  221. /// 子表查询(排除分批后的条码)
  222. /// </summary>
  223. /// <param name="queryJson"></param>
  224. /// <param name="jqgridparam"></param>
  225. /// <returns></returns>
  226. public DataTable GetSubGridJson(string POCode, string PORow, string WorkPoint, ref Pagination jqgridparam)
  227. {
  228. DataTable dt = new DataTable();
  229. //var queryParam = queryJson.ToJObject();
  230. List<DbParameter> parameter = new List<DbParameter>();
  231. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  232. string sql = @"SELECT c.TransCode,c.TransSequence,a.ID,a.LotNO,a.Quantity,a.PrintTimes,a.ProductDate,
  233. CASE WHEN b.LotNoCount>0 THEN a.Quantity ELSE 0 END AS ruku,a.LastPrintTime,a.WorkPoint
  234. FROM dbo.ICSInventoryLot a
  235. LEFT JOIN (SELECT COUNT(LotNO) LotNoCount,LotNO,WorkPoint from dbo.ICSWareHouseLotInfo
  236. group BY LotNO,WorkPoint) b ON a.LotNO=b.LotNO AND a.WorkPoint=b.WorkPoint
  237. left JOIN ICSInventoryLotDetail c on a.LotNo=c.LotNo
  238. --left JOIN (SELECT DISTINCT LotNO,WorkPoint FROM ICSWareHouseLotInfolog WHERE ISNULL(BusinessCode,'')<>'32') d ON a.LotNO=d.LotNO AND a.WorkPoint=d.WorkPoint
  239. WHERE c.TransCode='" + POCode + "' and c.TransSequence='" + PORow + "' and a.WorkPoint in ('" + WorkPoint + "')and (ISNULL(a.EATTRIBUTE1,'') ='' or ISNULL(a.EATTRIBUTE6,'') ='' )";
  240. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  241. }
  242. /// <summary>
  243. /// 点击生成条码
  244. /// </summary>
  245. /// <param name="POCode">采购订单</param>
  246. /// <param name="PORow">采购订单行</param>
  247. /// <param name="WorkPoint">多站点</param>
  248. /// 已改
  249. /// <returns></returns>
  250. public DataTable GetSubGridJsonByCreate(string POCode, string PORow, string WorkPoint)
  251. {
  252. DataTable dt = new DataTable();
  253. //var queryParam = queryJson.ToJObject();
  254. List<DbParameter> parameter = new List<DbParameter>();
  255. string sql = @"SELECT a.ID, a.POCode,a.Sequence, CONVERT(NVARCHAR(50),a.CreateDateTime,23) as PODate,a.ExtensionID,a.VenCode,mm.VenName,a.InvCode,
  256. (a.Quantity-ISNULL(bb.LOTQTY,0)+isnull(cc.NGQTY,0)+isnull(dd.returnqty,0)) as thisCreateQty,
  257. b.InvName,b.InvStd,b.InvDesc,b.InvUnit,a.Quantity,isnull(a.InQuantity,0) as InQty,a.WorkPoint,ISNULL(bb.LOTQTY,0) AS CreatedQty,
  258. isnull(cc.NGQTY,0) AS RefuseLotQty,isnull(dd.returnqty,0) AS BackLotQty,ISNULL(ee.repairqty,0) AS RepairQty,
  259. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(18,2)) as EffectiveDays ,
  260. CAST( a.Amount as DECIMAL(18,2)) as Amount
  261. FROM dbo.ICSPurchaseOrder a
  262. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  263. left join (
  264. SELECT b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY
  265. FROM ICSInventoryLot a
  266. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo
  267. WHERE (ISNULL(a.EATTRIBUTE1,'') ='' or ISNULL(a.EATTRIBUTE6,'') ='' )
  268. group by b.TransCode,b.TransSequence
  269. ) bb on a.POCode=bb.TransCode and a.Sequence=bb.TransSequence
  270. left join ( select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  271. from ICSDeliveryNotice a
  272. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  273. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  274. group by c.TransCode,c.TransSequence,a.WorkPoint,DNType having a.DNType='3'
  275. ) cc on a.POCode=cc.TransCode and a.Sequence=cc.TransSequence
  276. left join (
  277. select b.POCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty
  278. from ICSDeliveryNotice a
  279. left join ICSPurchaseOrder b on a.PODetailID=b.PODetailID
  280. group by b.POCode,b.Sequence,a.DNType
  281. having a.DNType='2' ) dd
  282. on a.POCode=dd.POCode and a.Sequence=dd.Sequence
  283. --LEFT JOIN (
  284. --SELECT SUM(x.Quantity) CreatedQty,z.TransCode,z.TransSequence,x.WorkPoint,
  285. --SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.Quantity ELSE 0 END) AS InQty
  286. -- FROM dbo.ICSInventoryLot x
  287. -- LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  288. --left join ICSInventoryLotDetail z on x.LotNo=z.LotNo
  289. --WHERE ISNULL(x.EATTRIBUTE1,'')=''
  290. --GROUP BY z.TransCode,z.TransSequence,x.WorkPoint
  291. -- ) c ON a.POCode=c.TransCode AND a.Sequence=c.TransSequence AND a.WorkPoint=c.WorkPoint
  292. LEFT JOIN (SELECT c.TransCode,c.TransSequence,
  293. 0 AS repairqty,a.WorkPoint
  294. FROM ICSASNDetail a
  295. LEFT JOIN ICSInventoryLot b ON a.LotNO = b.LotNO AND a.WorkPoint = b.WorkPoint
  296. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo and b.WorkPoint=c.WorkPoint
  297. GROUP BY c.TransCode,c.TransSequence,a.WorkPoint
  298. ) ee ON a.POCode = ee.TransCode AND a.Sequence = ee.TransSequence AND a.WorkPoint = ee.WorkPoint
  299. left join ICSVendor mm on a.VenCode=mm.VenCode
  300. WHERE 1 =1
  301. and a.POCode='" + POCode + "' and a.Sequence='" + PORow + "'";
  302. sql += " and a.WorkPoint='" + WorkPoint + "'";
  303. return Repository().FindTableBySql(sql.ToString());
  304. }
  305. public DataTable GetSubGridJsonByCreateBYMore(string POCode, string PORow, string WorkPoint)
  306. {
  307. DataTable dt = new DataTable();
  308. //var queryParam = queryJson.ToJObject();
  309. List<DbParameter> parameter = new List<DbParameter>();
  310. string sql = @"SELECT a.ID, a.POCode,a.Sequence, CONVERT(NVARCHAR(50),a.CreateDateTime,23) as PODate,a.ExtensionID,a.VenCode,mm.VenName,a.InvCode,
  311. (a.Quantity-ISNULL(potp.Quantity,0)-ISNULL(bb.LOTQTY,0)+isnull(cc.NGQTY,0)+isnull(dd.returnqty,0)) as thisCreateQty,
  312. b.InvName,b.InvStd,b.InvDesc,b.InvUnit,a.Quantity,isnull(a.InQuantity,0) as InQty,a.WorkPoint,ISNULL(bb.LOTQTY,0) AS CreatedQty,
  313. isnull(cc.NGQTY,0) AS RefuseLotQty,isnull(dd.returnqty,0) AS BackLotQty,ISNULL(ee.repairqty,0) AS RepairQty,
  314. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(18,2)) as EffectiveDays ,
  315. CAST( a.Amount as DECIMAL(18,2)) as Amount
  316. FROM dbo.ICSPurchaseOrder a
  317. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  318. LEFT JOIN (
  319. SELECT ee.TransCode,ee.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  320. FROM ICSFinishedProductShipment ee
  321. WHERE ee.Type='4'
  322. group by ee.TransCode,ee.TransSequence,ee.WorkPoint ) bb
  323. on a.POCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  324. left join ( select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  325. from ICSDeliveryNotice a
  326. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  327. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  328. group by c.TransCode,c.TransSequence,a.WorkPoint,DNType having a.DNType='3'
  329. ) cc on a.POCode=cc.TransCode and a.Sequence=cc.TransSequence
  330. left join (
  331. select b.POCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty
  332. from ICSDeliveryNotice a
  333. left join ICSPurchaseOrder b on a.PODetailID=b.PODetailID
  334. group by b.POCode,b.Sequence,a.DNType
  335. having a.DNType='2' ) dd
  336. on a.POCode=dd.POCode and a.Sequence=dd.Sequence
  337. --LEFT JOIN (
  338. --SELECT SUM(x.Quantity) CreatedQty,z.TransCode,z.TransSequence,x.WorkPoint,
  339. --SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.Quantity ELSE 0 END) AS InQty
  340. -- FROM dbo.ICSInventoryLot x
  341. -- LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  342. --left join ICSInventoryLotDetail z on x.LotNo=z.LotNo
  343. --WHERE ISNULL(x.EATTRIBUTE1,'')=''
  344. --GROUP BY z.TransCode,z.TransSequence,x.WorkPoint
  345. -- ) c ON a.POCode=c.TransCode AND a.Sequence=c.TransSequence AND a.WorkPoint=c.WorkPoint
  346. LEFT JOIN (SELECT c.TransCode,c.TransSequence,
  347. 0 AS repairqty,a.WorkPoint
  348. FROM ICSASNDetail a
  349. LEFT JOIN ICSInventoryLot b ON a.LotNO = b.LotNO AND a.WorkPoint = b.WorkPoint
  350. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo and b.WorkPoint=c.WorkPoint
  351. GROUP BY c.TransCode,c.TransSequence,a.WorkPoint
  352. ) ee ON a.POCode = ee.TransCode AND a.Sequence = ee.TransSequence AND a.WorkPoint = ee.WorkPoint
  353. left join ICSVendor mm on a.VenCode=mm.VenCode
  354. LEFT JOIN po_temp potp ON a.pocode=potp.pocode AND a.Sequence=potp.pocodeseq
  355. WHERE 1 =1
  356. and a.POCode='" + POCode + "' and a.Sequence='" + PORow + "'";
  357. sql += " and a.WorkPoint='" + WorkPoint + "'";
  358. return Repository().FindTableBySql(sql.ToString());
  359. }
  360. /// <summary>
  361. /// 点击生成条码
  362. /// </summary>
  363. /// <param name="POCode">采购订单</param>
  364. /// <param name="PORow">采购订单行</param>
  365. /// <param name="WorkPoint">多站点</param>
  366. /// 已改
  367. /// 拒收数量取值变更
  368. /// <returns></returns>
  369. public DataTable GetSubGridJsonByCreateWeiWai(string OOCode, string Sequence, string WorkPoint)
  370. {
  371. DataTable dt = new DataTable();
  372. //var queryParam = queryJson.ToJObject();
  373. //string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  374. List<DbParameter> parameter = new List<DbParameter>();
  375. string sql = @"
  376. SELECT a.ID, pp.Enable,a.OOCode,a.Sequence,CAST( a.Amount as DECIMAL(18,2)) as Amount, CONVERT(NVARCHAR(50),a.CreateDateTime,23) as PODate,a.ExtensionID,a.VenCode,mm.VenName,a.InvCode,
  377. (a.Quantity-ISNULL(bb.LOTQTY,0)+isnull(cc.NGQTY,0)+isnull(dd.returnqty,0)) as thisCreateQty,
  378. b.InvName,b.InvStd,b.InvDesc,b.InvUnit,a.Quantity,isnull(a.InQuantity,0) as InQty,a.WorkPoint,ISNULL(bb.LOTQTY,0) AS CreatedQty,
  379. isnull(cc.NGQTY,0) AS RefuseLotQty,isnull(dd.returnqty,0) AS BackLotQty,ISNULL(ee.repairqty,0) AS RepairQty,
  380. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(18,2)) as EffectiveDays
  381. FROM dbo.ICSOutsourcingOrder a
  382. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  383. left join (
  384. SELECT b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY
  385. FROM ICSInventoryLot a
  386. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo
  387. WHERE (ISNULL(a.EATTRIBUTE1,'') ='' or ISNULL(a.EATTRIBUTE6,'') ='' )
  388. group by b.TransCode,b.TransSequence
  389. ) bb on a.OOCode=bb.TransCode and a.Sequence=bb.TransSequence
  390. left join (
  391. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  392. from ICSODeliveryNotice a
  393. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  394. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  395. group by c.TransCode,c.TransSequence,a.WorkPoint,ODNType having a.ODNType='3'
  396. ) cc on a.OOCode=cc.TransCode and a.Sequence=cc.TransSequence
  397. left join (
  398. select b.OOCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty
  399. from ICSODeliveryNotice a
  400. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID
  401. group by b.OOCode,b.Sequence,a.ODNType
  402. having a.ODNType='2' ) dd
  403. on a.OOCode=dd.OOCode and a.Sequence=dd.Sequence
  404. --LEFT JOIN (
  405. --SELECT SUM(x.Quantity) CreatedQty,z.TransCode,z.TransSequence,x.WorkPoint,
  406. --SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.Quantity ELSE 0 END) AS InQty
  407. --FROM dbo.ICSInventoryLot x
  408. --LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  409. --left join ICSInventoryLotDetail z on x.LotNo=z.LotNo
  410. --WHERE ISNULL(x.EATTRIBUTE1,'')=''
  411. --GROUP BY z.TransCode,z.TransSequence,x.WorkPoint
  412. --) c ON a.OOCode=c.TransCode AND a.Sequence=c.TransSequence AND a.WorkPoint=c.WorkPoint
  413. LEFT JOIN (SELECT c.TransCode,c.TransSequence,
  414. 0 AS repairqty,a.WorkPoint
  415. FROM ICSOASNDetail a
  416. LEFT JOIN ICSInventoryLot b ON a.LotNO = b.LotNO AND a.WorkPoint = b.WorkPoint
  417. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo and b.WorkPoint=c.WorkPoint
  418. GROUP BY c.TransCode,c.TransSequence,a.WorkPoint
  419. ) ee ON a.OOCode = ee.TransCode AND a.Sequence = ee.TransSequence AND a.WorkPoint = ee.WorkPoint
  420. left join ICSVendor mm on a.VenCode=mm.VenCode
  421. left join ICSConfiguration pp on pp.Code='CompleteVerification'
  422. WHERE 1 =1
  423. and a.OOCode='" + OOCode + "' and a.Sequence='" + Sequence + "'";
  424. sql += " and a.WorkPoint='" + WorkPoint + "'";
  425. return Repository().FindTableBySql(sql.ToString());
  426. }
  427. public DataTable GetSubGridJsonByCreateWeiWaiByMore(string OOCode, string Sequence, string WorkPoint)
  428. {
  429. DataTable dt = new DataTable();
  430. //var queryParam = queryJson.ToJObject();
  431. //string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  432. List<DbParameter> parameter = new List<DbParameter>();
  433. string sql = @"
  434. SELECT a.ID, pp.Enable,a.OOCode,a.Sequence,CAST( a.Amount as DECIMAL(18,2)) as Amount, CONVERT(NVARCHAR(50),a.CreateDateTime,23) as PODate,a.ExtensionID,a.VenCode,mm.VenName,a.InvCode,
  435. (a.Quantity-ISNULL(bb.LOTQTY,0)+isnull(cc.NGQTY,0)+isnull(dd.returnqty,0)) as thisCreateQty,
  436. b.InvName,b.InvStd,b.InvDesc,b.InvUnit,a.Quantity,isnull(a.InQuantity,0) as InQty,a.WorkPoint,ISNULL(bb.LOTQTY,0) AS CreatedQty,
  437. isnull(cc.NGQTY,0) AS RefuseLotQty,isnull(dd.returnqty,0) AS BackLotQty,ISNULL(ee.repairqty,0) AS RepairQty,
  438. isnull(b.EffectiveEnable,0) as EffectiveEnable, CAST( isnull(b.EffectiveDays,0) as DECIMAL(18,2)) as EffectiveDays
  439. FROM dbo.ICSOutsourcingOrder a
  440. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  441. LEFT JOIN (
  442. SELECT ee.TransCode,ee.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  443. FROM ICSFinishedProductShipment ee
  444. WHERE ee.Type='6'
  445. group by ee.TransCode,ee.TransSequence,ee.WorkPoint) bb
  446. on a.OOCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  447. left join (
  448. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  449. from ICSODeliveryNotice a
  450. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  451. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  452. group by c.TransCode,c.TransSequence,a.WorkPoint,ODNType having a.ODNType='3'
  453. ) cc on a.OOCode=cc.TransCode and a.Sequence=cc.TransSequence
  454. left join (
  455. select b.OOCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty
  456. from ICSODeliveryNotice a
  457. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID
  458. group by b.OOCode,b.Sequence,a.ODNType
  459. having a.ODNType='2' ) dd
  460. on a.OOCode=dd.OOCode and a.Sequence=dd.Sequence
  461. --LEFT JOIN (
  462. --SELECT SUM(x.Quantity) CreatedQty,z.TransCode,z.TransSequence,x.WorkPoint,
  463. --SUM(CASE WHEN y.LotNO IS NOT NULL THEN x.Quantity ELSE 0 END) AS InQty
  464. --FROM dbo.ICSInventoryLot x
  465. --LEFT JOIN dbo.ICSWareHouseLotInfo y ON x.LotNO=y.LotNO AND x.WorkPoint=y.WorkPoint
  466. --left join ICSInventoryLotDetail z on x.LotNo=z.LotNo
  467. --WHERE ISNULL(x.EATTRIBUTE1,'')=''
  468. --GROUP BY z.TransCode,z.TransSequence,x.WorkPoint
  469. --) c ON a.OOCode=c.TransCode AND a.Sequence=c.TransSequence AND a.WorkPoint=c.WorkPoint
  470. LEFT JOIN (SELECT c.TransCode,c.TransSequence,
  471. 0 AS repairqty,a.WorkPoint
  472. FROM ICSOASNDetail a
  473. LEFT JOIN ICSInventoryLot b ON a.LotNO = b.LotNO AND a.WorkPoint = b.WorkPoint
  474. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo and b.WorkPoint=c.WorkPoint
  475. GROUP BY c.TransCode,c.TransSequence,a.WorkPoint
  476. ) ee ON a.OOCode = ee.TransCode AND a.Sequence = ee.TransSequence AND a.WorkPoint = ee.WorkPoint
  477. left join ICSVendor mm on a.VenCode=mm.VenCode
  478. left join ICSConfiguration pp on pp.Code='CompleteVerification'
  479. WHERE 1 =1
  480. and a.OOCode='" + OOCode + "' and a.Sequence='" + Sequence + "'";
  481. sql += " and a.WorkPoint='" + WorkPoint + "'";
  482. return Repository().FindTableBySql(sql.ToString());
  483. }
  484. /// <summary>
  485. /// 自动生成批次信息
  486. /// </summary>
  487. /// <param name="InvCode"></param>
  488. /// <param name="WorkPoint"></param>
  489. /// <returns></returns>
  490. public DataTable GetVendorLotNo(string InvCode, string WorkPoint)
  491. {
  492. DataTable dt = new DataTable();
  493. string sqlClass = "SELECT EATTRIBUTE1 FROM ICSInventory WHERE InvCode='{0}'and WorkPoint='{1}'";
  494. sqlClass = string.Format(sqlClass, InvCode, WorkPoint);
  495. DataTable dtClass = SqlHelper.GetDataTableBySql(sqlClass);
  496. string pre = dtClass.Rows[0]["EATTRIBUTE1"].ToString() + DateTime.Now.ToString("yyyyMMdd");
  497. //var queryParam = queryJson.ToJObject();
  498. //List<DbParameter> parameter = new List<DbParameter>();
  499. //string dtPre = DateTime.Now.ToString("yyyyMMdd");
  500. string sql = @"EXEC Addins_GetSerialCode '" + WorkPoint + "','ICSInventoryLot','BatchCode','" + pre + "',4";
  501. return Repository().FindTableBySql(sql.ToString());
  502. }
  503. public string GetPoStatus(string POCode, string PORow)
  504. {
  505. string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
  506. DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
  507. string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
  508. string DBName = dtU9.Rows[0]["DBName"].ToString();
  509. string msg = "";
  510. string U9ConnStr = ConfigurationManager.ConnectionStrings["U9connstr"].ConnectionString;
  511. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  512. string sql = string.Format(@"select a.docno,b.DocLineNo,b.status,d.code 组织
  513. from [{0}].{1}.dbo.PM_PurchaseOrder A
  514. LEFT JOIN [{0}].{1}.dbo.PM_POLine B ON A.ID=B.PurchaseOrder and a.Org=b.CurrentOrg
  515. LEFT JOIN [{0}].{1}.dbo.pm_poshipline C ON B.ID=C.poline and a.Org=c.CurrentOrg
  516. left join [{0}].{1}.dbo.Base_Organization d with (nolock) on a.org=d.id
  517. left join [{0}].{1}.dbo.Base_Organization_trl e with (nolock) on d.id=e.ID
  518. WHERE d.code='" + WorkPoint + "'and a.docno='" + POCode + "' and b.doclineno='" + PORow + "'", U9IP, DBName);
  519. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  520. if (dt != null && dt.Rows.Count > 0)
  521. {
  522. string poStatus = dt.Rows[0]["status"].ToString();
  523. if (poStatus != "2")
  524. {
  525. msg = "该订单行不是审核状态,无法生成条码!";
  526. }
  527. }
  528. return msg;
  529. }
  530. /// <summary>
  531. /// 生成条码
  532. /// </summary>
  533. /// <param name="POCode"></param>
  534. /// <param name="PORow"></param>
  535. /// <param name="keyValue"></param>
  536. /// 已改
  537. /// <returns></returns>
  538. public int CreateItemLotNo(string POCode, string PORow, string keyValue, string WorkPoint, string IsEable)
  539. {
  540. int RowNumber = Convert.ToInt32(SqlHelper.GetItemsDetails("PORowZero"));
  541. var queryParam = keyValue.ToJObject();
  542. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  543. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  544. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  545. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  546. decimal PageNUM = Convert.ToDecimal(queryParam["PageNUM"].ToString());
  547. decimal Quantity = Convert.ToDecimal(queryParam["Quantity"].ToString());
  548. decimal LOTQTY = minPackQty;
  549. string VenCode = GetVendorCode(POCode, PORow, WorkPoint);
  550. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");
  551. string sql = string.Empty;
  552. //string VendorLot = queryParam["VendorLot"].ToString();
  553. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  554. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  555. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  556. string sqls = string.Empty;
  557. string Colspan = "";
  558. string str1 = "";
  559. Colspan = queryParam["ProjectCode"].ToString() + "~" + queryParam["BatchCode"].ToString() + "~" + queryParam["Version"].ToString() + "~" + queryParam["Brand"].ToString() + "~" + queryParam["cFree1"].ToString() + "~" + queryParam["cFree2"].ToString() + "~" + queryParam["cFree3"].ToString() + "~" + queryParam["cFree4"].ToString() + "~" + queryParam["cFree5"].ToString() + "~" + queryParam["cFree6"].ToString() + "~" + queryParam["cFree7"].ToString() + "~" + queryParam["cFree8"].ToString() + "~" + queryParam["cFree9"].ToString() + "~" + queryParam["cFree10"].ToString();
  560. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}'", Colspan);
  561. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  562. if (ExtensionID == null)
  563. {
  564. str1 = Guid.NewGuid().ToString();
  565. sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
  566. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  567. str1, Colspan, queryParam["ProjectCode"].ToString(), queryParam["BatchCode"].ToString(),
  568. queryParam["Version"].ToString(), queryParam["Brand"].ToString(),
  569. queryParam["cFree1"].ToString(), queryParam["cFree2"].ToString(),
  570. queryParam["cFree3"].ToString(), queryParam["cFree4"].ToString(),
  571. queryParam["cFree5"].ToString(), queryParam["cFree6"].ToString(),
  572. queryParam["cFree7"].ToString(), queryParam["cFree8"].ToString(),
  573. queryParam["cFree9"].ToString(), queryParam["cFree10"].ToString(),
  574. MUSER, MUSERNAME, WorkPoint);
  575. }
  576. else if (ExtensionID != null)
  577. {
  578. str1 = ExtensionID.ToString();
  579. }
  580. if (IsEable == "" || IsEable == "0")
  581. {
  582. for (int i = 0; i < createPageCount; i++)
  583. {
  584. if (i + 1 == createPageCount)
  585. {
  586. if (minPackQty * createPageCount > thisCreateQty)
  587. {
  588. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  589. }
  590. }
  591. string Pre = POCode + PORow.PadLeft(RowNumber, '0');
  592. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 3);
  593. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  594. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  595. LotNo, POCode, PORow, MUSER, MUSERNAME, WorkPoint);
  596. sql += string.Format(@" insert into ICSInventoryLot
  597. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  598. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  599. select
  600. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','200','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  601. from ICSPurchaseOrder where POCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  602. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, POCode, PORow, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  603. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  604. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  605. sql += "\r\n";
  606. }
  607. }
  608. else
  609. {
  610. var CartonCount = Math.Ceiling(createPageCount / PageNUM);
  611. decimal Count = 0;
  612. for (int j = 0; j < PageNUM; j++)
  613. {
  614. object CARID = Guid.NewGuid();
  615. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  616. sql += @"INSERT INTO dbo.ICSContainer
  617. ( ID,ContainerCode ,
  618. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  619. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint + "','" + VenCode + "','SRM','" + CARID + "','" + Carton + "',1,1,1,1)";
  620. for (int i = 0; i < CartonCount; i++)
  621. {
  622. if (Count >= Quantity)
  623. {
  624. break;
  625. }
  626. if (j + 1 == PageNUM)
  627. {
  628. if (minPackQty * CartonCount * CartonCount > thisCreateQty)
  629. {
  630. LOTQTY = thisCreateQty - Count;
  631. }
  632. }
  633. string Pre = POCode + PORow.PadLeft(RowNumber, '0');
  634. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 4);
  635. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  636. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  637. LotNo, POCode, PORow, MUSER, MUSERNAME, WorkPoint);
  638. sql += string.Format(@" insert into ICSInventoryLot
  639. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  640. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  641. select
  642. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','200','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  643. from ICSPurchaseOrder where POCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  644. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoint, POCode, PORow, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString(), queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  645. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  646. sql += "\r\n";
  647. sql += string.Format(@"INSERT INTO dbo.ICSContainerLot
  648. ( ID ,ContainerID ,LotNo ,
  649. MUSER ,MUSERName ,MTIME ,WorkPoint )
  650. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' )", CARID, LotNo, MUSER, MUSERNAME, WorkPoint);
  651. Count = Count + LOTQTY;
  652. }
  653. }
  654. }
  655. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  656. return count;
  657. }
  658. /// <summary>
  659. /// 生成条码
  660. /// </summary>
  661. /// <param name="POCode"></param>
  662. /// <param name="PORow"></param>
  663. /// <param name="keyValue"></param>
  664. /// 已改
  665. /// <returns></returns>
  666. public int SubmitFormWeiWai(string OOCode, string Sequence, string keyValue, string WorkPoint, string IsEable)
  667. {
  668. int RowNumber = Convert.ToInt32(SqlHelper.GetItemsDetails("PORowZero"));
  669. var queryParam = keyValue.ToJObject();
  670. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  671. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  672. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  673. decimal PageNUM = Convert.ToDecimal(queryParam["PageNUM"].ToString());
  674. decimal Quantity = Convert.ToDecimal(queryParam["Quantity"].ToString());
  675. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  676. decimal LOTQTY = minPackQty;
  677. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  678. string VenCode = GetVendorCodeWW(OOCode, Sequence, WorkPoint);
  679. //string Pre = OOCode + Sequence.PadLeft(RowNumber, '0');
  680. string sql = string.Empty;
  681. string car = "CR" + DateTime.Now.ToString("yyyy") + DateTime.Now.ToString("MM");
  682. //string VendorLot = queryParam["VendorLot"].ToString();
  683. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  684. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  685. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  686. string sqls = string.Empty;
  687. string Colspan = "";
  688. string str1 = "";
  689. Colspan = queryParam["ProjectCode"].ToString() + "~" + queryParam["BatchCode"].ToString() + "~" + queryParam["Version"].ToString() + "~" + queryParam["Brand"].ToString() + "~" + queryParam["cFree1"].ToString() + "~" + queryParam["cFree2"].ToString() + "~" + queryParam["cFree3"].ToString() + "~" + queryParam["cFree4"].ToString() + "~" + queryParam["cFree5"].ToString() + "~" + queryParam["cFree6"].ToString() + "~" + queryParam["cFree7"].ToString() + "~" + queryParam["cFree8"].ToString() + "~" + queryParam["cFree9"].ToString() + "~" + queryParam["cFree10"].ToString();
  690. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}'", Colspan);
  691. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  692. if (ExtensionID == null)
  693. {
  694. str1 = Guid.NewGuid().ToString();
  695. sql += string.Format(@"Insert into ICSExtension(ID, Colspan, ProjectCode, BatchCode, Version, Brand, cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8, cFree9, cFree10, MTIME, MUSER, MUSERName, WorkPoint)
  696. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  697. str1, Colspan, queryParam["ProjectCode"].ToString(), queryParam["BatchCode"].ToString(), queryParam["Version"].ToString(), queryParam["Brand"].ToString(), queryParam["cFree1"].ToString(), queryParam["cFree2"].ToString(), queryParam["cFree3"].ToString(), queryParam["cFree4"].ToString(), queryParam["cFree5"].ToString(), queryParam["cFree6"].ToString(), queryParam["cFree7"].ToString(), queryParam["cFree8"].ToString(), queryParam["cFree9"].ToString(), queryParam["cFree10"].ToString(),
  698. MUSER, MUSERNAME, WorkPoint);
  699. }
  700. else if (ExtensionID != null)
  701. {
  702. str1 = ExtensionID.ToString();
  703. }
  704. if (IsEable == "" || IsEable == "0")
  705. {
  706. for (int i = 0; i < createPageCount; i++)
  707. {
  708. if (i + 1 == createPageCount)
  709. {
  710. if (minPackQty * createPageCount > thisCreateQty)
  711. {
  712. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  713. }
  714. }
  715. string Pre = OOCode + Sequence.PadLeft(RowNumber, '0');
  716. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 5);
  717. // sqls= string.Format(@"select * from ICSInventoryLotDetail where TransCode='{0}' and TransSequence='{1}' )",
  718. // POCode, PORow);
  719. //DataTable dtASN = SqlHelper.GetDataTableBySql(sqls);
  720. //if (dtASN == null && dtASN.Rows.Count <= 0)
  721. //{
  722. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  723. Values('{0}','{1}','{2}','{3}','{4}',getdate(),{5} )",
  724. LotNo, OOCode, Sequence, MUSER, MUSERNAME, WorkPoints);
  725. //}
  726. //if (SqlHelper.ExecuteNonQuery(sqls)>0)
  727. //{
  728. sql += string.Format(@" insert into ICSInventoryLot
  729. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  730. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  731. select
  732. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),{5},'{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  733. from ICSOutsourcingOrder where OOCode='{6}' and Sequence='{7}' and WorkPoint={5} ",
  734. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, OOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString(), queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  735. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  736. sql += "\r\n";
  737. //}
  738. }
  739. }
  740. else
  741. {
  742. var CartonCount = Math.Ceiling(createPageCount / PageNUM);
  743. decimal Count = 0;
  744. for (int j = 0; j < PageNUM; j++)
  745. {
  746. object CARID = Guid.NewGuid();
  747. string Carton = GetSerialCode(WorkPoint, "ICSContainer", "ContainerCode", car, 5);
  748. sql += @"INSERT INTO dbo.ICSContainer
  749. ( ID,ContainerCode ,
  750. MUSER ,MUSERName ,MTIME,WorkPoint,EATTRIBUTE8,EATTRIBUTE3,ContainerID,ContainerName,InventoryMixed,ProjectMixed,BatchMixed,Multiplex)
  751. VALUES ( NEWID(),'" + Carton + "','" + MUSER + "','" + MUSERNAME + "',GETDATE(),'" + WorkPoint + "','" + VenCode + "','SRM','" + CARID + "','" + Carton + "',1,1,1,1)";
  752. for (int i = 0; i < CartonCount; i++)
  753. {
  754. if (Count >= Quantity)
  755. {
  756. break;
  757. }
  758. if (j + 1 == PageNUM)
  759. {
  760. if (minPackQty * CartonCount * CartonCount > thisCreateQty)
  761. {
  762. LOTQTY = thisCreateQty - Count;
  763. }
  764. }
  765. string Pre = OOCode + Sequence.PadLeft(RowNumber, '0');
  766. string LotNo = GetSerialCode(WorkPoint, "ICSITEMLot", "LotNO", Pre, 4);
  767. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  768. Values('{0}','{1}','{2}','{3}','{4}',getdate(),{5} )",
  769. LotNo, OOCode, Sequence, MUSER, MUSERNAME, WorkPoints);
  770. sql += string.Format(@" insert into ICSInventoryLot
  771. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  772. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  773. select
  774. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','201','{3}','{4}', getdate(),{5},'{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  775. from ICSOutsourcingOrder where OOCode='{6}' and Sequence='{7}' and WorkPoint={5} ",
  776. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, OOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString(), queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  777. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  778. sql += "\r\n";
  779. sql += string.Format(@"INSERT INTO dbo.ICSContainerLot
  780. ( ID ,ContainerID ,LotNo ,
  781. MUSER ,MUSERName ,MTIME ,WorkPoint )
  782. Values( newid(),'{0}','{1}','{2}','{3}',getdate(),'{4}' )", CARID, LotNo, MUSER, MUSERNAME, WorkPoint);
  783. Count = Count + LOTQTY;
  784. }
  785. }
  786. }
  787. int count = SqlHelper.ExecuteNonQuery(sql);
  788. return count;
  789. }
  790. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  791. {
  792. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  793. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  794. return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  795. }
  796. public string GetVendorCode(string POCode, string PORow, string WorkPoint)
  797. {
  798. string sql = string.Format(@"SELECT VenCode FROM dbo.ICSPurchaseOrder
  799. WHERE POCode='{0}' AND Sequence='{1}' AND WorkPoint='{2}'", POCode, PORow, WorkPoint);
  800. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  801. string VenCode = string.Empty;
  802. if (dt != null && dt.Rows.Count > 0)
  803. {
  804. VenCode = dt.Rows[0][0].ToString();
  805. }
  806. return VenCode;
  807. }
  808. public string GetVendorCodeWW(string POCode, string PORow, string WorkPoint)
  809. {
  810. string sql = string.Format(@"SELECT VenCode FROM dbo.ICSOutsourcingOrder
  811. WHERE OOCode='{0}' AND Sequence='{1}' AND WorkPoint='{2}'", POCode, PORow, WorkPoint);
  812. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  813. string VenCode = string.Empty;
  814. if (dt != null && dt.Rows.Count > 0)
  815. {
  816. VenCode = dt.Rows[0][0].ToString();
  817. }
  818. return VenCode;
  819. }
  820. /// <summary>
  821. /// 删除条码
  822. /// </summary>
  823. /// <param name="keyValue"></param>
  824. /// <returns></returns>
  825. public string DeleteItemLot(string keyValue, string WorkPoint)
  826. {
  827. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  828. string msg = string.Empty;
  829. string sql = string.Format(@"SELECT * FROM dbo.ICSASNDetail
  830. WHERE LotNo IN (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  831. DataTable dtASN = SqlHelper.GetDataTableBySql(sql);
  832. if (dtASN != null && dtASN.Rows.Count > 0)
  833. {
  834. msg = "所选条码已有加入送货单中,请先在送货单中删除!";
  835. }
  836. sql = string.Format(@"SELECT * FROM dbo.ICSOASNDetail
  837. WHERE LotNo IN (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  838. DataTable dtOAASN = SqlHelper.GetDataTableBySql(sql);
  839. if (dtOAASN != null && dtOAASN.Rows.Count > 0)
  840. {
  841. msg = "所选条码已有加入送货单中,请先在送货单中删除!";
  842. }
  843. sql = string.Format(@"SELECT * FROM dbo.ICSContainerLot WHERE LotNO IN
  844. (SELECT LotNO FROM dbo.ICSInventoryLot WHERE ID IN ({0})) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  845. DataTable dtCarton = SqlHelper.GetDataTableBySql(sql);
  846. if (dtCarton != null && dtCarton.Rows.Count > 0)
  847. {
  848. msg += "所选条码已有加入箱号中,请先在箱号中删除!";
  849. }
  850. if (string.IsNullOrEmpty(msg))
  851. {
  852. sql = string.Format("DELETE FROM dbo.ICSInventoryLot WHERE ID IN ({0}) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  853. SqlHelper.ExecuteNonQuery(sql);
  854. }
  855. return msg;
  856. //keyValue = keyValue.Substring(1, keyValue.Length - 2);
  857. //string sql = @"DELETE FROM dbo.ICSITEMLot WHERE ID IN (" + keyValue.TrimEnd(',') + ")";
  858. //int i = DbHelper.ExecuteNonQuery(CommandType.Text, sql);
  859. //return i;
  860. }
  861. public DataTable SelectICSExtensionEnable(string BeginTime, string EndTime)
  862. {
  863. string sql = @"select ColCode from ICSExtensionEnable
  864. where Enable=0
  865. order by cast(EATTRIBUTE1 as int)";
  866. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  867. return dt;
  868. }
  869. public DataTable SelectICSInventoryEnable(string InvCode)
  870. {
  871. string sql = @"SELECT case when AmountEnable=1 then '是' else '否' end as AmountEnable
  872. FROM dbo.ICSInventory WHERE InvCode='" + InvCode + "'";
  873. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  874. return dt;
  875. }
  876. public DataTable SelectICSColumnEnableForLotEnable(string WorkPoint)
  877. {
  878. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  879. string sql = @" select ColumnCode from ICSColumnEnable
  880. where Enable='0' and TableCode='ICSInventoryLot' and WorkPoint='" + WorkPoint + "' order by cast(Code as int)";
  881. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  882. return dt;
  883. }
  884. public object GetQiSetNum(string keyValue)
  885. {
  886. int Num = 0;
  887. string msg = "";
  888. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "Complete/Approve";
  889. string result = HttpPost(APIURL, keyValue);
  890. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  891. string MessAge = Obj["Message"].ToString();
  892. string Success = Obj["Success"].ToString();
  893. if (Success.ToUpper() == "FALSE")
  894. {
  895. msg = MessAge;
  896. }
  897. if (msg == "")
  898. {
  899. JArray res = (JArray)JsonConvert.DeserializeObject(Obj["Data"].ToString());
  900. foreach (var item in res)
  901. {
  902. JObject jo = (JObject)item;
  903. Num = Convert.ToInt32(jo["min_lotqty"].ToString());
  904. }
  905. }
  906. var Header = new
  907. {
  908. msg = msg,
  909. Num = Num,
  910. };
  911. return Header;
  912. }
  913. public DataTable GetWWComplete(string BeginTime, string EndTime)
  914. {
  915. string sql = @"select Enable from ICSConfiguration where Code='CompleteVerification004'";
  916. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  917. return dt;
  918. }
  919. public DataTable GetLoadShowForColumn(string WorkPoint)
  920. {
  921. //string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  922. string sql = @"
  923. select * from ICSColumnEnable where TableCode='ICSInventoryLot' and WorkPoint='" + WorkPoint + "' order by cast(code as int) ";
  924. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  925. return dt;
  926. }
  927. //接口api解析
  928. public static string HttpPost(string url, string body)
  929. {
  930. try
  931. {
  932. Encoding encoding = Encoding.UTF8;
  933. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  934. request.Method = "POST";
  935. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  936. request.ContentType = "application/json; charset=utf-8";
  937. byte[] buffer = encoding.GetBytes(body);
  938. request.ContentLength = buffer.Length;
  939. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  940. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  941. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  942. {
  943. return reader.ReadToEnd();
  944. }
  945. }
  946. catch (WebException ex)
  947. {
  948. throw new Exception(ex.Message);
  949. }
  950. }
  951. public DataTable GetInventoryIsEnable(string InvCode, string WorkPoint)
  952. {
  953. DataTable dt = new DataTable();
  954. //var queryParam = queryJson.ToJObject();
  955. List<DbParameter> parameter = new List<DbParameter>();
  956. //string dtPre = DateTime.Now.ToString("yyyyMMdd");
  957. string sql = @"SELECT EATTRIBUTE10 FROM ICSInventory WHERE invcode='" + InvCode + "'";
  958. return Repository().FindTableBySql(sql.ToString());
  959. }
  960. public DataTable GetInvBatchEnable(string InvCode)
  961. {
  962. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  963. string sql = @"select distinct BatchEnable from ICSInventory where InvCode='{0}' and WorkPoint in({1})";
  964. sql = string.Format(sql, InvCode, WorkPoints);
  965. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  966. return dt;
  967. }
  968. public DataTable GetVendorBatchBYInvCodeZZ(string InvCode, string WorkPoint)
  969. {
  970. DataTable dataTable = new DataTable();
  971. string text = "SELECT EATTRIBUTE1 FROM ICSInventory WHERE InvCode='{0}'and WorkPoint='{1}'";
  972. text = string.Format(text, InvCode, WorkPoint);
  973. DataTable dataTableBySql = SqlHelper.GetDataTableBySql(text, new SqlParameter[0]);
  974. if (dataTableBySql.Rows.Count > 0)
  975. {
  976. string zZNumber = SqlHelper.GetZZNumber(dataTableBySql.Rows[0]["EATTRIBUTE1"].ToString());
  977. string text2 = zZNumber + DateTime.Now.ToString("yyyyMMdd");
  978. string text3 = string.Concat(new string[]
  979. {
  980. "EXEC Addins_GetSerialCode '",
  981. WorkPoint,
  982. "','ICSInventoryLot','BatchCode','",
  983. text2,
  984. "',3"
  985. });
  986. return base.Repository().FindTableBySql(text3.ToString());
  987. }
  988. throw new Exception("物料档案不存在!!!");
  989. }
  990. public DataTable GetGridJsonNOGK(string queryJson, ref Pagination jqgridparam)
  991. {
  992. string ParentId = "";
  993. DataTable dt = new DataTable();
  994. var queryParam = queryJson.ToJObject();
  995. List<DbParameter> parameter = new List<DbParameter>();
  996. string sql = @"SELECT a.ID, a.POCode,a.Sequence,CONVERT(NVARCHAR(15),a.CreateDateTime,23) AS PODate,
  997. a.ExtensionID,a.VenCode,ee.VenName,a.InvCode,cc.NGQTY AS RefuseLotQty,dd.returnqty AS BackLotQty,
  998. b.InvName,b.InvStd,b.InvUnit,a.Quantity,ISNULL(bb.LotQty,0) AS LotQty ,b.InvDesc,b.ClassCode,isnull(InQuantity,0) as InQuantity,a.WorkPoint as WorkPointCode
  999. ,CreatePerson,e.ProjectCode
  1000. FROM dbo.ICSPurchaseOrder a
  1001. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  1002. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  1003. LEFT JOIN (
  1004. SELECT ee.TransCode,ee.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  1005. FROM ICSFinishedProductShipment ee
  1006. WHERE ee.Type='4'
  1007. group by ee.TransCode,ee.TransSequence,ee.WorkPoint ) bb
  1008. on a.POCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  1009. left join (
  1010. select c.TransCode,c.TransSequence,SUM(ISNULL(a.Quantity,0)) NGQTY,a.WorkPoint
  1011. from ICSDeliveryNotice a
  1012. left join ICSInventoryLot b on a.EATTRIBUTE1=b.LotNo
  1013. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  1014. group by c.TransCode,c.TransSequence,a.WorkPoint,DNType having a.DNType='3') cc
  1015. on a.POCode=cc.TransCode and a.Sequence=cc.TransSequence AND a.WorkPoint=cc.WorkPoint
  1016. left join (select b.POCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  1017. FROM ICSDeliveryNotice a
  1018. left join ICSPurchaseOrder b on a.PODetailID=b.PODetailID
  1019. group by b.POCode,b.Sequence,a.DNType,a.WorkPoint having a.DNType='2' ) dd
  1020. on a.POCode=dd.POCode and a.Sequence=dd.Sequence AND a.WorkPoint=dd.WorkPoint
  1021. left join ICSVendor ee on a.VenCode=ee.VenCode and a.WorkPoint=ee.WorkPoint
  1022. WHERE 1=1 AND a.ReleaseState = '1' and a.Status<>'3'";
  1023. if (!string.IsNullOrWhiteSpace(queryJson))
  1024. {
  1025. if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  1026. {
  1027. sql += " and a.ExtensionID like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  1028. }
  1029. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1030. {
  1031. sql += " and a.POCode like '%" + queryParam["POCode"].ToString() + "%' ";
  1032. }
  1033. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  1034. {
  1035. sql += " and CONVERT(NVARCHAR(15),a.CreateDateTime,23) >='" + queryParam["BeginDate"].ToString() + "' ";
  1036. }
  1037. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  1038. {
  1039. sql += " and CONVERT(NVARCHAR(15),a.CreateDateTime,23) <='" + queryParam["EndDate"].ToString() + "'";
  1040. }
  1041. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  1042. {
  1043. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  1044. }
  1045. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  1046. {
  1047. sql += " and ee.VenName like '%" + queryParam["VenName"].ToString() + "%'";
  1048. }
  1049. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1050. {
  1051. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  1052. }
  1053. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  1054. {
  1055. string POStatus = queryParam["POStatus"].ToString();
  1056. if (POStatus == "0")
  1057. {
  1058. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  1059. }
  1060. else if (POStatus == "1")
  1061. {
  1062. sql += " and a.Quantity=ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  1063. }
  1064. else
  1065. {
  1066. sql += " and a.Quantity>ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  1067. }
  1068. }
  1069. }
  1070. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  1071. {
  1072. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  1073. }
  1074. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  1075. {
  1076. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  1077. }
  1078. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  1079. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  1080. {
  1081. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  1082. }
  1083. else
  1084. {
  1085. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1086. }
  1087. }
  1088. /// <summary>
  1089. /// 子表查询(不受管控条码)
  1090. /// </summary>
  1091. /// <param name="queryJson"></param>
  1092. /// <param name="jqgridparam"></param>
  1093. /// <returns></returns>
  1094. public DataTable GetSubGridJsonNOGK(string POCode, string PORow, string WorkPoint, ref Pagination jqgridparam)
  1095. {
  1096. DataTable dt = new DataTable();
  1097. //var queryParam = queryJson.ToJObject();
  1098. List<DbParameter> parameter = new List<DbParameter>();
  1099. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1100. string sql = @"SELECT ID, TransCode,TransSequence,LotNo,Quantity,MUSERName,ProductDate,WorkPoint
  1101. FROM ICSFinishedProductShipment
  1102. WHERE TransCode='" + POCode + "' AND TransSequence='" + PORow + "' and Type='4' and WorkPoint in ('" + WorkPoint + "')";
  1103. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1104. }
  1105. /// <summary>
  1106. /// 子表查询(不受管控条码)
  1107. /// </summary>
  1108. /// <param name="queryJson"></param>
  1109. /// <param name="jqgridparam"></param>
  1110. /// <returns></returns>
  1111. public DataTable GetSubGridJsonWeiWaiNOGK(string POCode, string PORow, string WorkPoint, ref Pagination jqgridparam)
  1112. {
  1113. DataTable dt = new DataTable();
  1114. //var queryParam = queryJson.ToJObject();
  1115. List<DbParameter> parameter = new List<DbParameter>();
  1116. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1117. string sql = @"SELECT ID, TransCode,TransSequence,LotNo,Quantity,MUSERName,ProductDate,WorkPoint
  1118. FROM ICSFinishedProductShipment
  1119. WHERE TransCode='" + POCode + "' AND TransSequence='" + PORow + "' and Type='6' and WorkPoint in ('" + WorkPoint + "')";
  1120. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1121. }
  1122. /// <summary>
  1123. /// 生成条码
  1124. /// </summary>
  1125. /// <param name="POCode"></param>
  1126. /// <param name="PORow"></param>
  1127. /// <param name="keyValue"></param>
  1128. /// 已改
  1129. /// <returns></returns>
  1130. public int SubmitFormNOGK(string POCode, string PORow, string keyValue, string WorkPoint, string IsEable)
  1131. {
  1132. int RowNumber = Convert.ToInt32(SqlHelper.GetItemsDetails("PORowZero"));
  1133. var queryParam = keyValue.ToJObject();
  1134. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  1135. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1136. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1137. decimal PageNUM = Convert.ToDecimal(queryParam["PageNUM"].ToString());
  1138. decimal Quantity = Convert.ToDecimal(queryParam["Quantity"].ToString());
  1139. string InvCode = queryParam["InvCode"].ToString();
  1140. decimal LOTQTY = minPackQty;
  1141. string Pre = POCode;
  1142. string sql = string.Empty;
  1143. //string VendorLot = queryParam["VendorLot"].ToString();
  1144. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1145. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1146. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1147. string EATTRIBUTE3 = queryParam["EATTRIBUTE3"].ToString();
  1148. string str1 = "";
  1149. if (IsEable == "" || IsEable == "0")
  1150. {
  1151. for (int i = 0; i < createPageCount; i++)
  1152. {
  1153. if (i + 1 == createPageCount)
  1154. {
  1155. if (minPackQty * createPageCount > thisCreateQty)
  1156. {
  1157. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1158. }
  1159. }
  1160. //string Pre = VenCode + "_" + queryParam["BatchCode"].ToString() + "_" + queryParam["InvCode"].ToString() + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + queryParam["EATTRIBUTE3"].ToString() + "_" + (int)LOTQTY + "_";
  1161. string LotNo = GetSerialCode(WorkPoint, "ICSFinishedProductShipment", "LotNo", Pre, 4);
  1162. sql += string.Format(@"INSERT INTO [dbo].[ICSFinishedProductShipment]
  1163. ([ID], [LotNo], [InvCode], [ProductDate], [ExpirationDate],
  1164. [Quantity], [Amount], [TransCode], [TransSequence],
  1165. [ExtensionID], [Type], [PrintTimes], [LastPrintUser],
  1166. [LastPrintTime], [MUSER], [MUSERName], [MTIME],
  1167. [WorkPoint], [EATTRIBUTE1], [EATTRIBUTE2],
  1168. [EATTRIBUTE3], [EATTRIBUTE4], [EATTRIBUTE5],
  1169. [EATTRIBUTE6], [EATTRIBUTE7], [EATTRIBUTE8],
  1170. [EATTRIBUTE9], [EATTRIBUTE10], [minPackQty])
  1171. VALUES (
  1172. NEWID(), N'{0}', N'{1}', GETDATE(), '{2}',
  1173. {3},0, N'{4}', N'{5}'
  1174. , NULL, N'4', NULL, NULL,
  1175. NULL, N'{6}', N'{7}', GETDATE(),
  1176. N'{8}', N'', NULL,
  1177. NULL, NULL, NULL,
  1178. NULL, NULL, NULL,
  1179. NULL, N'{10}', {9})", LotNo, InvCode, PRODUCTDATE, LOTQTY, POCode, PORow, MUSER, MUSERNAME, WorkPoint, minPackQty, EATTRIBUTE3);
  1180. }
  1181. }
  1182. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1183. return count;
  1184. }
  1185. /// <summary>
  1186. /// 删除条码
  1187. /// </summary>
  1188. /// <param name="keyValue"></param>
  1189. /// <returns></returns>
  1190. public string DeleteItemLotNOGK(string keyValue, string WorkPoint)
  1191. {
  1192. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1193. string msg = string.Empty;
  1194. string sql = string.Empty;
  1195. if (string.IsNullOrEmpty(msg))
  1196. {
  1197. sql = string.Format("DELETE FROM dbo.ICSFinishedProductShipment WHERE ID IN ({0}) and WorkPoint in ('{1}')", keyValue.TrimEnd(','), WorkPoint);
  1198. SqlHelper.ExecuteNonQuery(sql);
  1199. }
  1200. return msg;
  1201. }
  1202. public DataTable GetGridJsonWeiWaiNOGK(string queryJson, ref Pagination jqgridparam)
  1203. {
  1204. string ParentId = "";
  1205. DataTable dt = new DataTable();
  1206. var queryParam = queryJson.ToJObject();
  1207. List<DbParameter> parameter = new List<DbParameter>();
  1208. string sql = @" SELECT a.ID, a.OOCode,a.Sequence,CONVERT(NVARCHAR(15),a.CreateDateTime,23) AS PODate,a.OODetailID,
  1209. a.ExtensionID,a.VenCode,ee.VenName,a.InvCode,cc.NGQTY AS RefuseLotQty,dd.returnqty AS BackLotQty,
  1210. b.InvName,b.InvStd,b.InvUnit,a.Quantity,ISNULL(bb.LotQty,0) AS LotQty ,b.InvDesc,b.ClassCode,isnull(InQuantity,0) as InQuantity,a.WorkPoint as WorkPointCode,e.ProjectCode
  1211. FROM dbo.ICSOutsourcingOrder a
  1212. LEFT JOIN dbo.ICSExtension e ON a.ExtensionID=e.ID AND a.WorkPoint=e.WorkPoint
  1213. LEFT JOIN dbo.ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
  1214. LEFT JOIN (
  1215. SELECT ee.TransCode,ee.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY ,ee.WorkPoint
  1216. FROM ICSFinishedProductShipment ee
  1217. WHERE ee.Type='6'
  1218. group by ee.TransCode,ee.TransSequence,ee.WorkPoint) bb
  1219. on a.OOCode=bb.TransCode and a.Sequence=bb.TransSequence AND a.WorkPoint=bb.WorkPoint
  1220. left join (
  1221. select c.TransCode,c.TransSequence,sum(isnull(a.UnqualifiedQuantity,0)) NGQTY,a.WorkPoint
  1222. from ICSInspection a
  1223. left join ICSInventoryLot b on a.LotNo=b.LotNo
  1224. left join ICSInventoryLotDetail c on b.LotNo=c.LotNo
  1225. group by c.TransCode,c.TransSequence,a.WorkPoint) cc
  1226. on a.OOCode=cc.TransCode and a.Sequence=cc.TransSequence AND a.WorkPoint=cc.WorkPoint
  1227. left join (select b.OOCode,b.Sequence,sum(isnull(a.Quantity,0)) returnqty ,a.WorkPoint
  1228. FROM ICSODeliveryNotice a
  1229. left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID
  1230. group by b.OOCode,b.Sequence,a.ODNType,a.WorkPoint having a.ODNType='2' ) dd
  1231. on a.OOCode=dd.OOCode and a.Sequence=dd.Sequence AND a.WorkPoint=dd.WorkPoint
  1232. left join ICSVendor ee on a.VenCode=ee.VenCode and a.WorkPoint=ee.WorkPoint
  1233. WHERE 1=1 AND a.ReleaseState = '1' and a.Status<>'3'";
  1234. if (!string.IsNullOrWhiteSpace(queryJson))
  1235. {
  1236. if (!string.IsNullOrWhiteSpace(queryParam["ORDERNO"].ToString()))
  1237. {
  1238. sql += " and a.ExtensionID like '%" + queryParam["ORDERNO"].ToString() + "%' ";
  1239. }
  1240. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  1241. {
  1242. sql += " and a.OOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  1243. }
  1244. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  1245. {
  1246. sql += " and a.ReleaseDate >='" + queryParam["BeginDate"].ToString() + "' ";
  1247. }
  1248. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  1249. {
  1250. sql += " and a.ReleaseDate <='" + queryParam["EndDate"].ToString() + "'";
  1251. }
  1252. if (!string.IsNullOrWhiteSpace(queryParam["VenCode"].ToString()))
  1253. {
  1254. sql += " and a.VenCode like '%" + queryParam["VenCode"].ToString() + "%' ";
  1255. }
  1256. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  1257. {
  1258. sql += " and ee.VenName like '%" + queryParam["VenName"].ToString() + "%'";
  1259. }
  1260. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  1261. {
  1262. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%'";
  1263. }
  1264. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  1265. {
  1266. string POStatus = queryParam["POStatus"].ToString();
  1267. if (POStatus == "0")
  1268. {
  1269. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  1270. }
  1271. else if (POStatus == "1")
  1272. {
  1273. sql += " and a.Quantity=ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  1274. }
  1275. else
  1276. {
  1277. sql += " and a.Quantity>ISNULL(bb.LOTQTY,0)-isnull(cc.NGQTY,0)-isnull(dd.returnqty,0)";
  1278. }
  1279. }
  1280. }
  1281. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  1282. {
  1283. sql += " and a.WorkPoint in (" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',') + ")";
  1284. }
  1285. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  1286. {
  1287. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  1288. }
  1289. ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  1290. if (!string.IsNullOrWhiteSpace(ParentId) && ParentId != "0" && NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "Vendor")
  1291. {
  1292. return SqlHelper.FindTablePageBySql_OtherTemp(sql.ToString(), sql, ParentId, parameter.ToArray(), ref jqgridparam);
  1293. }
  1294. else
  1295. {
  1296. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  1297. }
  1298. }
  1299. /// <summary>
  1300. /// 生成条码
  1301. /// </summary>
  1302. /// <param name="POCode"></param>
  1303. /// <param name="PORow"></param>
  1304. /// <param name="keyValue"></param>
  1305. /// 已改
  1306. /// <returns></returns>
  1307. public int SubmitFormWeiWaiNOGK(string POCode, string PORow, string keyValue, string WorkPoint, string IsEable)
  1308. {
  1309. int RowNumber = Convert.ToInt32(SqlHelper.GetItemsDetails("PORowZero"));
  1310. var queryParam = keyValue.ToJObject();
  1311. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  1312. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  1313. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  1314. decimal PageNUM = Convert.ToDecimal(queryParam["PageNUM"].ToString());
  1315. decimal Quantity = Convert.ToDecimal(queryParam["Quantity"].ToString());
  1316. string InvCode = queryParam["InvCode"].ToString();
  1317. decimal LOTQTY = minPackQty;
  1318. string Pre = POCode;
  1319. string sql = string.Empty;
  1320. //string VendorLot = queryParam["VendorLot"].ToString();
  1321. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  1322. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  1323. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  1324. string EATTRIBUTE3 = queryParam["EATTRIBUTE3"].ToString();
  1325. string str1 = "";
  1326. if (IsEable == "" || IsEable == "0")
  1327. {
  1328. for (int i = 0; i < createPageCount; i++)
  1329. {
  1330. if (i + 1 == createPageCount)
  1331. {
  1332. if (minPackQty * createPageCount > thisCreateQty)
  1333. {
  1334. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  1335. }
  1336. }
  1337. //string Pre = VenCode + "_" + queryParam["BatchCode"].ToString() + "_" + queryParam["InvCode"].ToString() + "_" + DateTime.Now.ToString("yyyyMMdd") + "_" + queryParam["EATTRIBUTE3"].ToString() + "_" + (int)LOTQTY + "_";
  1338. string LotNo = GetSerialCode(WorkPoint, "ICSFinishedProductShipment", "LotNo", Pre, 4);
  1339. sql += string.Format(@"INSERT INTO [dbo].[ICSFinishedProductShipment]
  1340. ([ID], [LotNo], [InvCode], [ProductDate], [ExpirationDate],
  1341. [Quantity], [Amount], [TransCode], [TransSequence],
  1342. [ExtensionID], [Type], [PrintTimes], [LastPrintUser],
  1343. [LastPrintTime], [MUSER], [MUSERName], [MTIME],
  1344. [WorkPoint], [EATTRIBUTE1], [EATTRIBUTE2],
  1345. [EATTRIBUTE3], [EATTRIBUTE4], [EATTRIBUTE5],
  1346. [EATTRIBUTE6], [EATTRIBUTE7], [EATTRIBUTE8],
  1347. [EATTRIBUTE9], [EATTRIBUTE10], [minPackQty])
  1348. VALUES (
  1349. NEWID(), N'{0}', N'{1}', GETDATE(), '{2}',
  1350. {3},0, N'{4}', N'{5}'
  1351. , NULL, N'6', NULL, NULL,
  1352. NULL, N'{6}', N'{7}', GETDATE(),
  1353. N'{8}', N'', NULL,
  1354. NULL, NULL, NULL,
  1355. NULL, NULL, NULL,
  1356. NULL, N'{10}', {9})", LotNo, InvCode, PRODUCTDATE, LOTQTY, POCode, PORow, MUSER, MUSERNAME, WorkPoint, minPackQty, EATTRIBUTE3);
  1357. }
  1358. }
  1359. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  1360. return count;
  1361. }
  1362. }
  1363. }