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.

880 lines
48 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. using NFine.Data.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Text;
  6. using NFine.Code;
  7. using NFine.Repository;
  8. using System.Data.Common;
  9. using NFine.Domain._03_Entity.SRM;
  10. using Newtonsoft.Json;
  11. using System.Configuration;
  12. using System.Net;
  13. using System.IO;
  14. using Newtonsoft.Json.Linq;
  15. namespace NFine.Application.OMAY
  16. {
  17. public class ICSMoCreateLotApp : RepositoryFactory<ICSVendor>
  18. {
  19. //奥美工单生成条码主表查询
  20. public DataTable GetGridJsonChengPing(string queryJson, ref Pagination jqgridparam)
  21. {
  22. DataTable dt = new DataTable();
  23. var queryParam = queryJson.ToJObject();
  24. List<DbParameter> parameter = new List<DbParameter>();
  25. object Figure = GetDecimalDigits();
  26. #region [SQL]
  27. string sql = @" select distinct a.ID, a.MODetailID,a.MOCode,a.Sequence, CAST(a.RCVQuantity AS DECIMAL(18,{0})) as RCVQuantity ,a.InvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,CAST( a.Quantity AS DECIMAL(18,{0})) as Quantity,CAST( a.Amount as DECIMAL(18,{0})) as Amount,a.StartDate
  28. ,a.DueDate,a.MOStatus,a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(18,{0})) as LOTQTY ,CAST( a.Quantity AS DECIMAL(18,{0})) -CAST(a.RCVQuantity AS DECIMAL(18,{0})) as ERPNum,a.MOMemo
  29. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  30. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  31. a.EATTRIBUTE9,a.EATTRIBUTE10
  32. from ICSMO a
  33. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  34. left join (
  35. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  36. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='3'
  37. where isnull(ee.EATTRIBUTE1,'')=''
  38. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  39. )c
  40. on a.MOCode=c.TransCode and a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  41. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint ";
  42. sql += " WHERE 1=1 and a.MOStatus<>'3' ";
  43. sql = string.Format(sql, Figure);
  44. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  45. #endregion
  46. if (!string.IsNullOrWhiteSpace(queryJson))
  47. {
  48. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  49. {
  50. sql += " and a.MOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  51. }
  52. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  53. {
  54. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  55. }
  56. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  57. {
  58. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  59. }
  60. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  61. {
  62. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  63. }
  64. if (!string.IsNullOrWhiteSpace(queryParam["SelGDLX"].ToString()))
  65. {
  66. sql += " and a.MOType like '%" + queryParam["SelGDLX"].ToString() + "%' ";
  67. }
  68. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  69. {
  70. string POStatus = queryParam["POStatus"].ToString();
  71. if (POStatus == "0")
  72. {
  73. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  74. }
  75. else if (POStatus == "1")
  76. {
  77. sql += " and ISNULL(c.LOTQTY,0)>=a.Quantity";
  78. }
  79. else
  80. {
  81. sql += " and ISNULL(c.LOTQTY,0)<a.Quantity";
  82. }
  83. }
  84. }
  85. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  86. {
  87. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  88. }
  89. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  90. {
  91. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  92. }
  93. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  94. }
  95. //生成条码子表查询
  96. public DataTable GetSubGridJson(string ApplyNegCode, string Sequence, string Type, ref Pagination jqgridparam)
  97. {
  98. DataTable dt = new DataTable();
  99. object Figure = GetDecimalDigits();
  100. List<DbParameter> parameter = new List<DbParameter>();
  101. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  102. string sql = @" select c.TransCode,c.TransSequence ,a.ID,a.LotNo, CAST( a.Quantity AS DECIMAL(18,{0})) as Quantity ,a.MUSERName,a.MTIME
  103. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  104. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,
  105. case when isnull(d.ID,'')='' then '' else '' end as isStorage,
  106. case when g.InvIQC='1'and isnull(e.ID,'')='' then '' else '' end as isInspection,
  107. case when g.InvIQC='1' then '是' else '否' end as isExemption,a.Amount,
  108. convert(varchar(20),a.ProductDate,23) as ProductDate,convert(varchar(20),a.ExpirationDate,23) as ExpirationDate ,g.EffectiveDays
  109. from ICSInventoryLot a
  110. left join (select count(LotNo) LotNoCount,LotNo,WorkPoint from ICSWareHouseLotInfo
  111. group by LotNo,WorkPoint)b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  112. left join ICSInventoryLotDetail c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  113. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  114. left join dbo.ICSWareHouseLotInfo d on a.LotNo=d.LotNo and a.WorkPoint=d.WorkPoint
  115. left join ICSInspection e on a.LotNo=e.LotNo and e.Enable='1' and a.WorkPoint=e.WorkPoint
  116. left join ICSInventory g on a.InvCode=g.InvCode and a.WorkPoint=g.WorkPoint
  117. WHERE isnull(a.EATTRIBUTE1,'')='' and a.Type='" + Type + "' and c.TransCode='" + ApplyNegCode + "' and c.TransSequence='" + Sequence + "' and a.WorkPoint in ('" + WorkPoint + "')";
  118. sql = string.Format(sql, Figure);
  119. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  120. }
  121. //获取小数点数位
  122. public object GetDecimalDigits()
  123. {
  124. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  125. try
  126. {
  127. string sql = string.Empty;
  128. sql = @"select Figure from ICSConfiguration where Code='Figure001' and Enable='1' and WorkPoint='" + WorkPoint + "'";
  129. object Figure = SqlHelper.ExecuteScalar(sql);
  130. return Figure;
  131. }
  132. catch (Exception ex)
  133. {
  134. throw new Exception(ex.Message.ToString());
  135. }
  136. }
  137. //工单生成条码获取物料数量信息
  138. public DataTable GetSubGridJsonChengPingByCreate(string MOCode, string Sequence, string WorkPoint)
  139. {
  140. DataTable dt = new DataTable();
  141. object Figure = GetDecimalDigits();
  142. List<DbParameter> parameter = new List<DbParameter>();
  143. string sql = @"select
  144. d.Enable, a.InvCode,b.ClassCode,b.InvName,b.InvStd,b.InvUnit,a.Quantity as Quantity,
  145. cast( isnull(h.BL,0)*a.Quantity AS DECIMAL(18,4)) as AbsolveQty,
  146. cast( isnull(h.BL,0)*a.Amount AS DECIMAL(18,4)) as AbsolveAmount,
  147. cast( isnull(c.LOTQTY,0) as DECIMAL(18,4)) as CreatedQty,
  148. CAST( ((isnull(h.BL,0)*a.Quantity) -(isnull(c.LOTQTY,0))) as DECIMAL(18,4)) as thisCreateQty,
  149. cast( a.Amount as DECIMAL(18,4)) as Amount,
  150. isnull(b.EffectiveEnable,0) as EffectiveEnable,
  151. cast( isnull(b.EffectiveDays,0) as DECIMAL(18,4)) as EffectiveDays
  152. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10
  153. from ICSMO a
  154. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  155. left join (
  156. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  157. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  158. where isnull(a.EATTRIBUTE1,'')=''
  159. group by b.TransCode,b.TransSequence
  160. ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  161. left join (
  162. select b.TransCode,PARSENAME(REPLACE(b.TransSequence, '~', '.'), 2) as TransSequence ,sum(isnull(Quantity,0)) FCPQTY from ICSInventoryLot a
  163. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  164. where isnull(a.EATTRIBUTE1,'')=''
  165. group by b.TransCode,PARSENAME(REPLACE(b.TransSequence, '~', '.'), 2)
  166. ) f on a.MOCode=f.TransCode and a.Sequence=f.TransSequence
  167. left join
  168. (
  169. select case when Flag>0 then ( case when PSLNUM>MLNUM then MLNUM else PSLNUM end) else PSLNUM end as BL ,MODetailID from (
  170. select a.MODetailID,
  171. case when isnull(sum(a.PSLYL),0)=0 then 0 else sum(a.PSLLSS)/sum(a.PSLYL)* max(isnull(F_Define1,0)/100.0) end as PSLNUM,
  172. case when isnull(sum(a.MLYL),0)=0 then 0 else sum(a.MLLSS)/sum(a.MLYL)*max(isnull(F_Define1,0)/100.0) end as MLNUM,
  173. sum(Flag) as Flag
  174. from (
  175. select a.MODetailID ,
  176. case when SUBSTRING(b.ClassCode, 1, 2) IN ('01','04','05') then a.Quantity else 0 end PSLYL,
  177. case when SUBSTRING(b.ClassCode, 1, 2) IN ('01','04','05') then a.IssueQuantity else 0 end PSLLSS,
  178. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then a.Quantity else 0 end MLYL,
  179. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then a.IssueQuantity else 0 end MLLSS,
  180. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then 1 else 0 end Flag
  181. from dbo.ICSMOPick a
  182. inner join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  183. where a.EATTRIBUTE1<>'1')a
  184. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  185. group by MODetailID )a) h on a.MODetailID=h.MODetailID
  186. left join ICSConfiguration d on d.Code='CompleteVerification001' and a.WorkPoint =d.WorkPoint
  187. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  188. WHERE 1 =1 and a.MOStatus<>'3'
  189. and a.MOCode='" + MOCode + "' and a.Sequence='" + Sequence + "'";
  190. sql += " and a.WorkPoint='" + WorkPoint + "'";
  191. sql = string.Format(sql, Figure);
  192. return Repository().FindTableBySql(sql.ToString());
  193. }
  194. //查询超生比例
  195. public DataTable GetScale()
  196. {
  197. DataTable dt = new DataTable();
  198. List<DbParameter> parameter = new List<DbParameter>();
  199. string sql = @" SELECT Top 1 a.F_Define1 as Prorate
  200. FROM [dbo].[Sys_SRM_ItemsDetail] a
  201. LEFT JOIN [dbo].[Sys_SRM_Items] b ON a.F_ItemId=b.F_Id AND b.F_EnabledMark='1'
  202. WHERE b.F_EnCode='CS0001' ORDER BY a.F_ItemCode";
  203. return Repository().FindTableBySql(sql.ToString());
  204. }
  205. //调用接口来显示本次可生产数量
  206. public object GetAbsolveQty(string MOCode, string Sequence,string Qty)
  207. {
  208. decimal AvailQty = 0;
  209. decimal AllQty = 0;
  210. string msg = "";
  211. string sql = @"select
  212. a.WorkPoint as WorkPoint,
  213. a.MODetailID as DetailID,
  214. '' as Type,
  215. cast( isnull(c.LOTQTY,0) as DECIMAL(18,4)) as InQty,
  216. " + Qty + @" as Qty,
  217. flag.F_Define1 as Prorate
  218. from ICSMO a
  219. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  220. left join (
  221. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  222. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  223. where isnull(a.EATTRIBUTE1,'')=''
  224. group by b.TransCode,b.TransSequence
  225. ) c on a.MOCode=c.TransCode and a.Sequence=c.TransSequence
  226. left join (
  227. select b.TransCode,PARSENAME(REPLACE(b.TransSequence, '~', '.'), 2) as TransSequence ,sum(isnull(Quantity,0)) FCPQTY from ICSInventoryLot a
  228. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  229. where isnull(a.EATTRIBUTE1,'')=''
  230. group by b.TransCode,PARSENAME(REPLACE(b.TransSequence, '~', '.'), 2)
  231. ) f on a.MOCode=f.TransCode and a.Sequence=f.TransSequence
  232. left join ICSConfiguration d on d.Code='CompleteVerification001' and a.WorkPoint =d.WorkPoint
  233. left join ICSExtension e on a.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  234. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  235. WHERE 1 =1 and a.MOStatus<>'3'
  236. and a.MOCode='" + MOCode + "' and a.Sequence='" + Sequence + "'";
  237. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  238. string Inputstr = JsonConvert.SerializeObject(dt);
  239. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "Completeamnew/Approve";
  240. string result = HttpPost(APIURL, Inputstr);
  241. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  242. string MessAge = Obj["Message"].ToString();
  243. string Success = Obj["Success"].ToString();
  244. if (Success.ToUpper() == "FALSE")
  245. {
  246. msg = MessAge;
  247. }
  248. else
  249. {
  250. if (msg == "")
  251. {
  252. JObject dataObj = JObject.Parse(Obj["Data"].ToString());
  253. AvailQty = decimal.Parse(dataObj["AvailQty"].ToString());
  254. AllQty = decimal.Parse(dataObj["AllQty"].ToString());
  255. //JArray res = (JArray)JsonConvert.DeserializeObject(Obj["Data"].ToString());
  256. //foreach (var item in res)
  257. //{
  258. // JObject jo = (JObject)item;
  259. // //var aa= jo["min_lotqty"].ToString();
  260. // Num = Convert.ToDecimal(jo["AllQty"].ToString());
  261. //}
  262. }
  263. }
  264. var Header = new
  265. {
  266. msg = msg,
  267. AvailQty = AvailQty,
  268. AllQty= AllQty,
  269. };
  270. return Header;
  271. }
  272. //接口api解析
  273. public static string HttpPost(string url, string body)
  274. {
  275. try
  276. {
  277. Encoding encoding = Encoding.UTF8;
  278. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  279. request.Method = "POST";
  280. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  281. request.ContentType = "application/json; charset=utf-8";
  282. byte[] buffer = encoding.GetBytes(body);
  283. request.ContentLength = buffer.Length;
  284. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  285. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  286. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  287. {
  288. return reader.ReadToEnd();
  289. }
  290. }
  291. catch (WebException ex)
  292. {
  293. throw new Exception(ex.Message);
  294. }
  295. }
  296. //工单生成条码
  297. public int SubmitFormChengPing(string MOCode, string Sequence, string keyValue, string WorkPoint,string AMEnable)
  298. {
  299. var queryParam = keyValue.ToJObject();
  300. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  301. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  302. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  303. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  304. decimal LOTQTY = minPackQty;
  305. //string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  306. //string VenCode = GetVendorCode(ApplyNegCode, Sequence, WorkPoint);
  307. string Pre = "CP" + MOCode + (Convert.ToInt32(Sequence)).ToString("D4");
  308. string sql = string.Empty;
  309. //string VendorLot = queryParam["VendorLot"].ToString();
  310. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  311. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  312. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  313. string InvCode = queryParam["ClassCode"].ToString();
  314. string sqls = string.Empty;
  315. string Colspan = "";
  316. string str1 = "";
  317. string LotNo=string.Empty;
  318. List<string> ExtensionIDList = new List<string>();
  319. for (int i = 0; i < createPageCount; i++)
  320. {
  321. if (i + 1 == createPageCount)
  322. {
  323. if (minPackQty * createPageCount > thisCreateQty)
  324. {
  325. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  326. }
  327. }
  328. 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();
  329. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  330. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  331. bool flag = true;
  332. foreach (var item in ExtensionIDList)
  333. {
  334. if (item == Colspan + WorkPoint)
  335. {
  336. flag = false;
  337. }
  338. }
  339. if (ExtensionID == null && flag == true)
  340. {
  341. str1 = Guid.NewGuid().ToString();
  342. 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)
  343. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  344. 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(),
  345. MUSER, MUSERNAME, WorkPoints);
  346. }
  347. else if (ExtensionID != null)
  348. {
  349. str1 = ExtensionID.ToString();
  350. }
  351. ExtensionIDList.Add(Colspan + WorkPoint);
  352. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  353. if (AMEnable == "true")
  354. {
  355. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  356. }
  357. else
  358. {
  359. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  360. }
  361. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  362. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  363. LotNo, MOCode, Sequence, MUSER, MUSERNAME, WorkPoints);
  364. //if (SqlHelper.ExecuteNonQuery(sqls) > 0)
  365. //{
  366. sql += string.Format(@"insert into ICSInventoryLot
  367. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount
  368. ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  369. select
  370. newid(),'{0}',InvCode,'{1}','{10}','{2}','{8}','3','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  371. from ICSMO where MOCode='{6}' and Sequence='{7}' and WorkPoint='{5}' ",
  372. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, MOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  373. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  374. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  375. sql += "\r\n";
  376. //}
  377. }
  378. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  379. return count;
  380. }
  381. public string GetSerialCode(string workPointCode, string tbName, string colName, string Pre, int numLen)
  382. {
  383. string sql = "EXEC Addins_GetSerialCode '{0}','{1}','{2}','{3}',{4}";
  384. sql = string.Format(sql, new object[] { workPointCode, tbName, colName, Pre, numLen });
  385. //return Repository().FindTableBySql(sql.ToString());
  386. return SqlHelper.ExecuteScalar(sql).ToString();
  387. //return DbHelper.ExecuteScalar(CommandType.Text, sql).ToString();
  388. }
  389. //副产品
  390. public DataTable GetGridJsonFCP(string queryJson, ref Pagination jqgridparam)
  391. {
  392. DataTable dt = new DataTable();
  393. var queryParam = queryJson.ToJObject();
  394. List<DbParameter> parameter = new List<DbParameter>();
  395. object Figure = GetDecimalDigits();
  396. #region [SQL]
  397. string sql = @"select a.ID,d.MOCode,d.Sequence+'~'+ a.Sequence as Sequence,a.PickID,a.InvCode as ZInvCode,d.InvCode as MInvCode,b.InvName,b.InvDesc,b.InvStd,b.InvUnit,
  398. CAST(a.Quantity AS DECIMAL(18,{0})) as Quantity ,a.MODetailID,
  399. CAST(a.Amount AS DECIMAL(18,{0})) as Amount,CAST(a.IssueQuantity AS DECIMAL(18,{0})) as IssueQuantity ,a.ExtensionID,a.MUSERName,a.MTIME ,CAST(c.LOTQTY AS DECIMAL(18,{0})) as LOTQTY
  400. ,f.Colspan ,f.ProjectCode ,f.BatchCode ,f.Version ,f.Brand ,f.cFree1 ,f.cFree2 ,f.cFree3 ,f.cFree4
  401. ,f.cFree5 ,f.cFree6 ,f.cFree7 ,f.cFree8 ,f.cFree9 ,f.cFree10,a.EATTRIBUTE1,a.EATTRIBUTE2,a.EATTRIBUTE3,a.EATTRIBUTE4,a.EATTRIBUTE5,a.EATTRIBUTE6,a.EATTRIBUTE7,a.EATTRIBUTE8,
  402. a.EATTRIBUTE9,a.EATTRIBUTE10
  403. from ICSMOPick a
  404. inner join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  405. inner join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  406. left join (
  407. select mm.TransCode,mm.TransSequence,sum(isnull(ee.Quantity,0)) LOTQTY,ee.WorkPoint from ICSInventoryLot ee
  408. left join ICSInventoryLotDetail mm on ee.LotNo=mm.LotNo and ee.type='18'
  409. where isnull(ee.EATTRIBUTE1,'')=''
  410. group by mm.TransCode,mm.TransSequence,ee.WorkPoint
  411. )c
  412. on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence and a.WorkPoint=c.WorkPoint
  413. left join ICSExtension f on a.ExtensionID=f.ID and a.WorkPoint=f.WorkPoint
  414. where a.EATTRIBUTE1='1' and SUBSTRING(b.ClassCode, 1, 2) not IN ('05') ";
  415. sql = string.Format(sql, Figure);
  416. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  417. #endregion
  418. if (!string.IsNullOrWhiteSpace(queryJson))
  419. {
  420. if (!string.IsNullOrWhiteSpace(queryParam["POCode"].ToString()))
  421. {
  422. sql += " and d.MOCode like '%" + queryParam["POCode"].ToString() + "%' ";
  423. }
  424. if (!string.IsNullOrWhiteSpace(queryParam["InvCode"].ToString()))
  425. {
  426. sql += " and a.InvCode like '%" + queryParam["InvCode"].ToString() + "%' ";
  427. }
  428. if (!string.IsNullOrWhiteSpace(queryParam["InvName"].ToString()))
  429. {
  430. sql += " and b.InvName like '%" + queryParam["InvName"].ToString() + "%' ";
  431. }
  432. if (!string.IsNullOrWhiteSpace(queryParam["BatchCode"].ToString()))
  433. {
  434. sql += " and f.BatchCode like '%" + queryParam["BatchCode"].ToString() + "%' ";
  435. }
  436. if (!string.IsNullOrWhiteSpace(queryParam["POStatus"].ToString()))
  437. {
  438. string POStatus = queryParam["POStatus"].ToString();
  439. if (POStatus == "0")
  440. {
  441. //sql += " and a.Quantity=ISNULL(c.LotQty,0)";
  442. }
  443. else if (POStatus == "1")
  444. {
  445. sql += " and ISNULL(c.LOTQTY,0)>=a.Quantity";
  446. }
  447. else
  448. {
  449. sql += " and ISNULL(c.LOTQTY,0)<a.Quantity";
  450. }
  451. }
  452. }
  453. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  454. {
  455. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  456. }
  457. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  458. {
  459. sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  460. }
  461. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  462. }
  463. //副产品生成条码获取物料数量信息
  464. public DataTable GetSubGridJsonFCPCreate(string FCPMOCode, string Sequence, string WorkPoint)
  465. {
  466. DataTable dt = new DataTable();
  467. object Figure = GetDecimalDigits();
  468. List<DbParameter> parameter = new List<DbParameter>();
  469. string sql = @"
  470. select
  471. a.InvCode,b.InvName,b.ClassCode,b.InvStd,b.InvUnit, a.Quantity as Quantity,
  472. cast( isnull(h.BL,0)*a.Quantity AS DECIMAL(18,4)) as AbsolveQty,
  473. cast( isnull(h.BL,0)*a.Amount AS DECIMAL(18,4)) as AbsolveAmount,
  474. cast( isnull(c.LOTQTY,0)+isnull(f.GDQTY,0) as DECIMAL(18,4)) as CreatedQty,
  475. CAST( ((isnull(h.BL,0)*a.Amount) -(isnull(c.LOTQTY,0)+isnull(f.GDQTY,0))) as DECIMAL(18,4)) as thisCreateQty,
  476. cast( a.Amount as DECIMAL(18,4)) as Amount,
  477. isnull(b.EffectiveEnable,0) as EffectiveEnable,
  478. cast( isnull(b.EffectiveDays,0) as DECIMAL(18,4)) as EffectiveDays
  479. ,e.ProjectCode,e.BatchCode,e.Version,e.Brand,e.cFree1,e.cFree2,e.cFree3,e.cFree4,e.cFree5,e.cFree6,e.cFree7,e.cFree8,e.cFree9,e.cFree10
  480. from ICSMOPick a
  481. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  482. --
  483. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  484. left join (
  485. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  486. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  487. where isnull(a.EATTRIBUTE1,'')=''
  488. group by b.TransCode,b.TransSequence
  489. ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  490. --
  491. left join (
  492. select b.TransCode,b.TransSequence ,sum(isnull(Quantity,0)) GDQTY from ICSInventoryLot a
  493. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  494. where isnull(a.EATTRIBUTE1,'')=''
  495. group by b.TransCode,b.TransSequence
  496. ) f on d.MOCode=f.TransCode and d.Sequence=f.TransSequence
  497. left join
  498. (select case when Flag>0 then ( case when PSLNUM>MLNUM then MLNUM else PSLNUM end) else PSLNUM end as BL ,MODetailID from (
  499. select a.MODetailID,
  500. case when isnull(sum(a.PSLYL),0)=0 then 0 else sum(a.PSLLSS)/sum(a.PSLYL)* max(isnull(F_Define1,0)/100.0) end as PSLNUM,
  501. case when isnull(sum(a.MLYL),0)=0 then 0 else sum(a.MLLSS)/sum(a.MLYL)*max(isnull(F_Define1,0)/100.0) end as MLNUM,
  502. sum(Flag) as Flag
  503. from (
  504. select a.MODetailID ,
  505. case when SUBSTRING(b.ClassCode, 1, 2) IN ('01','04','05') then a.Quantity else 0 end PSLYL,
  506. case when SUBSTRING(b.ClassCode, 1, 2) IN ('01','04','05') then a.IssueQuantity else 0 end PSLLSS,
  507. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then a.Quantity else 0 end MLYL,
  508. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then a.IssueQuantity else 0 end MLLSS,
  509. case when SUBSTRING(b.ClassCode, 1, 2) IN ('03') then 1 else 0 end Flag
  510. from dbo.ICSMOPick a
  511. inner join dbo.ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  512. where a.EATTRIBUTE1 <> '1')a
  513. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  514. group by MODetailID )a) h on a.MODetailID=h.MODetailID
  515. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  516. WHERE 1=1
  517. and d.MOCode='" + FCPMOCode + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "'";
  518. sql += " and a.WorkPoint='" + WorkPoint + "'";
  519. sql = string.Format(sql, Figure);
  520. return Repository().FindTableBySql(sql.ToString());
  521. }
  522. //副产品调用接口获取可生成数量
  523. public object GetFCPAbsolveQty(string MOCode, string Sequence, string Qty)
  524. {
  525. decimal AvailQty = 0;
  526. decimal AllQty = 0;
  527. string msg = "";
  528. string sql = @"
  529. select
  530. a.WorkPoint as WorkPoint,
  531. a.MODetailID as DetailID,
  532. '' as Type,
  533. cast( isnull(c.LOTQTY,0) as DECIMAL(18,4)) as InQty,
  534. " + Qty + @" as Qty,
  535. flag.F_Define1 as Prorate
  536. from ICSMOPick a
  537. left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3'
  538. --
  539. left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  540. left join (
  541. select b.TransCode,b.TransSequence,sum(isnull(Quantity,0)) LOTQTY from ICSInventoryLot a
  542. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='18'
  543. where isnull(a.EATTRIBUTE1,'')=''
  544. group by b.TransCode,b.TransSequence
  545. ) c on d.MOCode=c.TransCode and d.Sequence+'~'+a.Sequence=c.TransSequence
  546. --
  547. left join (
  548. select b.TransCode,b.TransSequence ,sum(isnull(Quantity,0)) GDQTY from ICSInventoryLot a
  549. left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.Type='3'
  550. where isnull(a.EATTRIBUTE1,'')=''
  551. group by b.TransCode,b.TransSequence
  552. ) f on d.MOCode=f.TransCode and d.Sequence=f.TransSequence
  553. left join ICSExtension e on d.ExtensionID=e.ID and a.WorkPoint=e.WorkPoint
  554. left join Sys_SRM_ItemsDetail flag on flag.F_ItemCode='GDCS0001'
  555. WHERE 1=1
  556. and d.MOCode='" + MOCode + "' and d.Sequence+'~'+a.Sequence='" + Sequence + "'";
  557. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  558. string Inputstr = JsonConvert.SerializeObject(dt);
  559. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "Completeamnew05/Approve";
  560. string result = HttpPost(APIURL, Inputstr);
  561. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  562. string MessAge = Obj["Message"].ToString();
  563. string Success = Obj["Success"].ToString();
  564. if (Success.ToUpper() == "FALSE")
  565. {
  566. msg = MessAge;
  567. }
  568. else
  569. {
  570. if (msg == "")
  571. {
  572. JObject dataObj = JObject.Parse(Obj["Data"].ToString());
  573. AvailQty = decimal.Parse(dataObj["AvailQty"].ToString());
  574. AllQty = decimal.Parse(dataObj["AllQty"].ToString());
  575. }
  576. }
  577. var Header = new
  578. {
  579. msg = msg,
  580. AvailQty = AvailQty,
  581. AllQty = AllQty,
  582. };
  583. return Header;
  584. }
  585. //联副产品
  586. public int SubmitFormFCP(string FCPMOCode, string Sequence, string keyValue, string WorkPoint,string AMEnable)
  587. {
  588. var queryParam = keyValue.ToJObject();
  589. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  590. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  591. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  592. decimal thisCreateQty = Convert.ToDecimal(queryParam["thisCreateQty"].ToString());
  593. decimal LOTQTY = minPackQty;
  594. string Sequences = Sequence.Replace("~", "");
  595. string Pre = "FCP" + FCPMOCode + (Convert.ToInt32(Sequences)).ToString("D4");
  596. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  597. string sql = string.Empty;
  598. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  599. string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  600. string InvCode = queryParam["ClassCode"].ToString();
  601. string sqls = string.Empty;
  602. string Colspan = "";
  603. string str1 = "";
  604. string LotNo = string.Empty;
  605. List<string> ExtensionIDList = new List<string>();
  606. for (int i = 0; i < createPageCount; i++)
  607. {
  608. if (i + 1 == createPageCount)
  609. {
  610. if (minPackQty * createPageCount > thisCreateQty)
  611. {
  612. LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  613. }
  614. }
  615. 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();
  616. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  617. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  618. bool flag = true;
  619. foreach (var item in ExtensionIDList)
  620. {
  621. if (item == Colspan + WorkPoint)
  622. {
  623. flag = false;
  624. }
  625. }
  626. if (ExtensionID == null && flag == true)
  627. {
  628. str1 = Guid.NewGuid().ToString();
  629. 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)
  630. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  631. 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(),
  632. MUSER, MUSERNAME, WorkPoints);
  633. }
  634. else if (ExtensionID != null)
  635. {
  636. str1 = ExtensionID.ToString();
  637. }
  638. ExtensionIDList.Add(Colspan + WorkPoint);
  639. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  640. if (AMEnable == "true")
  641. {
  642. LotNo = SqlHelper.GetLOTNumber(InvCode, WorkPoint);
  643. }
  644. else
  645. {
  646. LotNo = GetSerialCode(WorkPoint, "ICSInventoryLot", "LotNO", Pre, 5);
  647. }
  648. sql += string.Format(@"Insert into ICSInventoryLotDetail(LotNo, TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  649. Values('{0}','{1}','{2}','{3}','{4}',getdate(),'{5}' )",
  650. LotNo, FCPMOCode, Sequence, MUSER, MUSERNAME, WorkPoints);
  651. sql += string.Format(@"insert into ICSInventoryLot
  652. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  653. select
  654. newid(),'{0}',a.InvCode,'{1}','{10}','{2}','{8}','18','{3}','{4}', getdate(),'{5}','{9}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}'
  655. from ICSMOPick a left join ICSMO d on a.MODetailID=d.MODetailID and a.WorkPoint=d.WorkPoint and d.MOStatus<>'3' where d.MOCode='{6}' and d.Sequence+'~'+a.Sequence='{7}' and a.WorkPoint='{5}' ",
  656. LotNo, PRODUCTDATE, LOTQTY, MUSER, MUSERNAME, WorkPoints, FCPMOCode, Sequence, str1, Convert.ToDecimal(queryParam["Amount"].ToString()) / minPackQty * LOTQTY, queryParam["ExpirationDate"].ToString()
  657. , queryParam["EATTRIBUTE1"].ToString(), queryParam["EATTRIBUTE2"].ToString(), queryParam["EATTRIBUTE3"].ToString(), queryParam["EATTRIBUTE4"].ToString(), queryParam["EATTRIBUTE5"].ToString(),
  658. queryParam["EATTRIBUTE6"].ToString(), queryParam["EATTRIBUTE7"].ToString(), queryParam["EATTRIBUTE8"].ToString(), queryParam["EATTRIBUTE9"].ToString(), queryParam["EATTRIBUTE10"].ToString());
  659. sql += "\r\n";
  660. }
  661. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  662. return count;
  663. }
  664. public DataTable GetByproductGridJson(string queryJson, ref Pagination jqgridparam)
  665. {
  666. DataTable dt = new DataTable();
  667. var queryParam = queryJson.ToJObject();
  668. List<DbParameter> parameter = new List<DbParameter>();
  669. #region [SQL]
  670. string sql = @" select a.ID,a.LotNo,a.InvCode,c.InvName,c.InvStd,a.Quantity,a.MUSERName,b.MTIME as WMTIME,a.MTIME
  671. from dbo.ICSInventoryLot a
  672. left join dbo.ICSWareHouseLotInfo b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  673. inner join dbo.ICSInventory c on a.InvCode=c.InvCode
  674. where a.Type='19'";
  675. // sql += " WHERE 1=1";
  676. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  677. #endregion
  678. if (!string.IsNullOrWhiteSpace(queryJson))
  679. {
  680. if (!string.IsNullOrWhiteSpace(queryParam["MTDOCCode"].ToString()))
  681. {
  682. sql += " and a.MTDOCCode like '%" + queryParam["MTDOCCode"].ToString() + "%' ";
  683. }
  684. }
  685. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  686. {
  687. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  688. }
  689. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  690. //{
  691. // sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  692. //}
  693. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  694. }
  695. public DataTable GetInvCode()
  696. {
  697. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  698. string sql = @"
  699. select '' as Code,'' as InvCode
  700. union all
  701. SELECT InvCode as Code ,InvCode as InvCode FROM dbo.ICSInventory WITH (NOLOCK) WHERE 1=1 and SUBSTRING(ClassCode, 1, 2) IN ('05') ";
  702. sql += " and WorkPoint='" + WorkPoint + "'";
  703. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  704. return dt;
  705. }
  706. public DataTable SeachAmountEnablebyInvCode(string InvCode)
  707. {
  708. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  709. DataTable dt = new DataTable();
  710. List<DbParameter> parameter = new List<DbParameter>();
  711. string sql = @"
  712. select isnull(AmountEnable,0) as AmountEnable ,ClassCode,isnull(EATTRIBUTE1,'') as EATTRIBUTE1 from dbo.ICSInventory where InvCode='" + InvCode + "' and WorkPoint='" + WorkPoint + "'";
  713. return Repository().FindTableBySql(sql.ToString());
  714. }
  715. public int SubmitFormFCPNoCode (string keyValue, string WorkPoint, string AMEnable)
  716. {
  717. var queryParam = keyValue.ToJObject();
  718. string WorkPoints = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  719. int createPageCount = Convert.ToInt32(queryParam["createPageCount"].ToString());
  720. decimal minPackQty = Convert.ToDecimal(queryParam["minPackQty"].ToString());
  721. string InvCode = queryParam["InvCode"].ToString();
  722. decimal LOTQTY = minPackQty;
  723. //string Sequences = Sequence.Replace("~", "");
  724. //string Pre = "FCP" + FCPMOCode + (Convert.ToInt32(Sequences)).ToString("D4");
  725. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  726. string sql = string.Empty;
  727. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  728. // string PRODUCTDATE = queryParam["PRODUCTDATE"].ToString();
  729. string ClassCode = queryParam["ClassCode"].ToString();
  730. string sqls = string.Empty;
  731. string Colspan = "";
  732. string str1 = "";
  733. string LotNo = string.Empty;
  734. List<string> ExtensionIDList = new List<string>();
  735. for (int i = 0; i < createPageCount; i++)
  736. {
  737. //if (i + 1 == createPageCount)
  738. //{
  739. // if (minPackQty * createPageCount > thisCreateQty)
  740. // {
  741. // LOTQTY = thisCreateQty - (minPackQty * (createPageCount - 1));
  742. // }
  743. //}
  744. 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();
  745. sqls = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  746. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  747. bool flag = true;
  748. foreach (var item in ExtensionIDList)
  749. {
  750. if (item == Colspan + WorkPoint)
  751. {
  752. flag = false;
  753. }
  754. }
  755. if (ExtensionID == null && flag == true)
  756. {
  757. str1 = Guid.NewGuid().ToString();
  758. 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)
  759. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  760. 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(),
  761. MUSER, MUSERNAME, WorkPoints);
  762. }
  763. else if (ExtensionID != null)
  764. {
  765. str1 = ExtensionID.ToString();
  766. }
  767. ExtensionIDList.Add(Colspan + WorkPoint);
  768. //传过来的参数判断是否是奥美的项目奥美项目执行独有生成条码规则
  769. if (AMEnable == "true")
  770. {
  771. LotNo = SqlHelper.GetLOTNumber(ClassCode, WorkPoint);
  772. }
  773. sql += string.Format(@"insert into ICSInventoryLot (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,Amount ,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10)
  774. values(newid(),'{0}','{1}',getdate(),'{2}','{3}','{4}','19','{5}','{6}',getdate(),'{7}','{8}','','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}')",
  775. LotNo, InvCode, queryParam["ExpirationDate"].ToString(), LOTQTY, str1, MUSER, MUSERNAME, WorkPoints, queryParam["Amount"].ToString(),
  776. 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. }
  780. int count = SqlHelper.CmdExecuteNonQueryLi(sql);
  781. return count;
  782. }
  783. }
  784. }