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.

1131 lines
67 KiB

3 weeks ago
  1. using ICS.Data;
  2. using Newtonsoft.Json.Linq;
  3. using Newtonsoft.Json;
  4. using NFine.Code;
  5. using NFine.Data.Extensions;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Configuration;
  9. using System.Data.Common;
  10. using System.Data.SqlClient;
  11. using System.Data;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Net;
  15. using System.Text;
  16. using System.Threading.Tasks;
  17. using NFine.Domain._03_Entity.SRM;
  18. using NFine.Repository;
  19. namespace NFine.Application.DHAY
  20. {
  21. public class ICSMTDOCDHApp : RepositoryFactory<ICSVendor>
  22. {
  23. public DataTable GetGridJson(string queryJson, ref Pagination jqgridparam)
  24. {
  25. DataTable dt = new DataTable();
  26. var queryParam = queryJson.ToJObject();
  27. List<DbParameter> parameter = new List<DbParameter>();
  28. #region [SQL]
  29. string sql = @" select Row_Number() OVER (ORDER BY MTDOCCode desc) AS ID,a.MTDOCCode,a.CreatePerson,a.CreateDateTime,a.Status,a.MUSER,a.MUSERName,a.MTIME,a.WorkPoint from (select distinct MTDOCCode,CreatePerson,CreateDateTime,Status,MUSER,MUSERName,MTIME,WorkPoint from dbo.ICSMTDOC )a";
  30. sql += " WHERE 1=1";
  31. sql = string.Format(sql, DbHelper.GetErpIp(), DbHelper.GetErpName());
  32. #endregion
  33. if (!string.IsNullOrWhiteSpace(queryJson))
  34. {
  35. if (!string.IsNullOrWhiteSpace(queryParam["MTDOCCode"].ToString()))
  36. {
  37. sql += " and a.MTDOCCode like '%" + queryParam["MTDOCCode"].ToString() + "%' ";
  38. }
  39. }
  40. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode != "admin")
  41. {
  42. sql += " and a.WorkPoint='" + NFine.Code.OperatorProvider.Provider.GetCurrent().Location + "'";
  43. }
  44. //if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  45. //{
  46. // sql += " and a.VenCode='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  47. //}
  48. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  49. }
  50. public DataTable GetSubGridJson(string MTDOCCode)
  51. {
  52. DataTable dt = new DataTable();
  53. //var queryParam = queryJson.ToJObject();
  54. string sql = string.Empty;
  55. object Figure = GetDecimalDigits();
  56. List<DbParameter> parameter = new List<DbParameter>();
  57. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  58. sql = @" select e.ID,a.DepCode,d.DepName,a.WHCode,c.WarehouseName,a.Sequence,a.LotNo,b.InvCode,b.InvName, CAST( a.Quantity AS DECIMAL(18,{2})) as Quantity,a.Amount,CAST( a.MTDOCQuantity AS DECIMAL(18,{2})) as MTDOCQuantity,
  59. a.MTDOCType
  60. from ICSMTDOC a
  61. left join dbo.ICSInventoryLot e on a.LotNo=e.LotNo and a.WorkPoint=e.WorkPoint
  62. left join ICSInventory b on e.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
  63. left join ICSWarehouse c on a.WHCode=c.WarehouseCode and a.WorkPoint=c.WorkPoint
  64. left join ICSDepartment d on a.DepCode=d.DepCode and a.WorkPoint=d.WorkPoint
  65. WHERE a.MTDOCCode='{0}' and a.WorkPoint in ('{1}') order by a.Sequence ";
  66. sql = string.Format(sql, MTDOCCode, WorkPoint, Figure);
  67. return Repository().FindTableBySql(sql.ToString());
  68. }
  69. public DataTable GetRepertory(string LotNo, ref Pagination jqgridparam)
  70. {
  71. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  72. List<DbParameter> parameter = new List<DbParameter>();
  73. DataTable table = new DataTable();
  74. string wherestr = "";
  75. if (!string.IsNullOrEmpty(LotNo))
  76. {
  77. wherestr += " and a.LotNO like '%" + LotNo + "%'";
  78. }
  79. string sql = @"select a.WarehouseCode,a.LotNo,b.Amount,a.InvCode,c.InvName,c.InvDesc,c.InvStd,c.InvUnit,a.Quantity ,
  80. d.ProjectCode,d.BatchCode,d.Version,d.Brand,d.cFree1,d.cFree2,d.cFree3,d.cFree4,d.cFree5,d.cFree6,d.cFree7,d.cFree8,d.cFree9,d.cFree10
  81. from ICSWareHouseLotInfo a
  82. inner join ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  83. left join ICSInventory c on b.InvCode=c.InvCode and b.WorkPoint=c.WorkPoint
  84. left join dbo.ICSExtension d on b.ExtensionID=d.ID and b.WorkPoint=d.WorkPoint
  85. WHERE a.Quantity>0 and a.WorkPoint = '" + WorkPoint + "'" + wherestr;
  86. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  87. }
  88. public DataTable GetInvcode(string Invcode, ref Pagination jqgridparam)
  89. {
  90. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  91. List<DbParameter> parameter = new List<DbParameter>();
  92. DataTable table = new DataTable();
  93. string wherestr = "";
  94. if (!string.IsNullOrEmpty(Invcode))
  95. {
  96. wherestr += " and InvCode like '%" + Invcode + "%'";
  97. }
  98. string sql = @"select distinct InvCode,InvName,InvStd,InvUnit,InvDesc from dbo.ICSInventory
  99. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  100. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  101. }
  102. /// <summary>
  103. /// 获取库位信息
  104. /// </summary>
  105. /// <param name="LocationCode"></param>
  106. /// <param name="jqgridparam"></param>
  107. /// <returns></returns>
  108. public DataTable GetLocationCode(string LocationCode, ref Pagination jqgridparam)
  109. {
  110. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  111. List<DbParameter> parameter = new List<DbParameter>();
  112. DataTable table = new DataTable();
  113. string wherestr = "";
  114. if (!string.IsNullOrEmpty(LocationCode))
  115. {
  116. wherestr += " and a.LocationCode like '%" + LocationCode + "%'";
  117. }
  118. string sql = @"select a.LocationCode as LocationCode ,a.ID,a.LocationName,b.WarehouseCode, b.WarehouseName,a.Musername as 'MUSER',a.MTIME
  119. from ICSLocation a WITH (NOLOCK)
  120. inner join ICSWarehouse b WITH (NOLOCK) on a.WHID=b.ID
  121. where 1=1 and a.WorkPoint = '" + WorkPoint + "'" + wherestr;
  122. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  123. }
  124. public DataTable GetCode(string Type, string Common, ref Pagination jqgridparam)
  125. {
  126. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  127. List<DbParameter> parameter = new List<DbParameter>();
  128. DataTable dt = new DataTable();
  129. DataTable table = new DataTable();
  130. string wherestr = "";
  131. string sql = string.Empty;
  132. if (Type == "1")
  133. {
  134. if (!string.IsNullOrEmpty(Common))
  135. {
  136. wherestr += " and ProjectCode like '%" + Common + "%'";
  137. }
  138. sql = @"select distinct ProjectCode as Code from ICSExtension
  139. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  140. }
  141. if (Type == "2")
  142. {
  143. if (!string.IsNullOrEmpty(Common))
  144. {
  145. wherestr += " and BatchCode like '%" + Common + "%'";
  146. }
  147. sql = @"select distinct BatchCode as Code from ICSExtension
  148. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  149. }
  150. if (Type == "3")
  151. {
  152. if (!string.IsNullOrEmpty(Common))
  153. {
  154. wherestr += " and Version like '%" + Common + "%'";
  155. }
  156. sql = @"select distinct Version as Code from ICSExtension
  157. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  158. }
  159. if (Type == "4")
  160. {
  161. if (!string.IsNullOrEmpty(Common))
  162. {
  163. wherestr += " and Brand like '%" + Common + "%'";
  164. }
  165. sql = @"select distinct Brand as Code from ICSExtension
  166. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  167. }
  168. if (Type == "5")
  169. {
  170. if (!string.IsNullOrEmpty(Common))
  171. {
  172. wherestr += " and cFree1 like '%" + Common + "%'";
  173. }
  174. sql = @"select distinct cFree1 as Code from ICSExtension
  175. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  176. }
  177. if (Type == "6")
  178. {
  179. if (!string.IsNullOrEmpty(Common))
  180. {
  181. wherestr += " and cFree2 like '%" + Common + "%'";
  182. }
  183. sql = @"select distinct cFree2 as Code from ICSExtension
  184. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  185. }
  186. if (Type == "7")
  187. {
  188. if (!string.IsNullOrEmpty(Common))
  189. {
  190. wherestr += " and cFree3 like '%" + Common + "%'";
  191. }
  192. sql = @"select distinct cFree3 as Code from ICSExtension
  193. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  194. }
  195. if (Type == "8")
  196. {
  197. if (!string.IsNullOrEmpty(Common))
  198. {
  199. wherestr += " and cFree4 like '%" + Common + "%'";
  200. }
  201. sql = @"select distinct cFree4 as Code from ICSExtension
  202. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  203. }
  204. if (Type == "9")
  205. {
  206. if (!string.IsNullOrEmpty(Common))
  207. {
  208. wherestr += " and cFree5 like '%" + Common + "%'";
  209. }
  210. sql = @"select distinct cFree5 as Code from ICSExtension
  211. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  212. }
  213. if (Type == "10")
  214. {
  215. if (!string.IsNullOrEmpty(Common))
  216. {
  217. wherestr += " and cFree6 like '%" + Common + "%'";
  218. }
  219. sql = @"select distinct cFree6 as Code from ICSExtension
  220. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  221. }
  222. if (Type == "11")
  223. {
  224. if (!string.IsNullOrEmpty(Common))
  225. {
  226. wherestr += " and cFree7 like '%" + Common + "%'";
  227. }
  228. sql = @"select distinct cFree7 as Code from ICSExtension
  229. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  230. }
  231. if (Type == "12")
  232. {
  233. if (!string.IsNullOrEmpty(Common))
  234. {
  235. wherestr += " and cFree8 like '%" + Common + "%'";
  236. }
  237. sql = @"select distinct cFree8 as Code from ICSExtension
  238. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  239. }
  240. if (Type == "13")
  241. {
  242. if (!string.IsNullOrEmpty(Common))
  243. {
  244. wherestr += " and cFree9 like '%" + Common + "%'";
  245. }
  246. sql = @"select distinct cFree9 as Code from ICSExtension
  247. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  248. }
  249. if (Type == "14")
  250. {
  251. if (!string.IsNullOrEmpty(Common))
  252. {
  253. wherestr += " and cFree10 like '%" + Common + "%'";
  254. }
  255. sql = @"select distinct cFree10 as Code from ICSExtension
  256. WHERE WorkPoint = '" + WorkPoint + "'" + wherestr;
  257. }
  258. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  259. }
  260. //新增形态转换
  261. public string CreateICSMTDOC(string ICSMTDOC, string InvCode, string LocationCode, string Memo)
  262. {
  263. string Colspan = "";
  264. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  265. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  266. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  267. string msg = "";
  268. string MTDOCCode = "";
  269. DateTime TimeNow = DateTime.Now;
  270. string sql = string.Empty;
  271. JArray res = (JArray)JsonConvert.DeserializeObject(ICSMTDOC);
  272. int Num = 1;
  273. DataTable dts = new DataTable();
  274. string Time = DateTime.Now.ToString("yyyyMMdd");
  275. string sqlss = @"select max(MTDOCCode) as NewMTDOCCode from ICSMTDOC where substring(MTDOCCode,1,8)='{0}'";
  276. sqlss = string.Format(sqlss, Time);
  277. dts = Repository().FindTableBySql(sqlss.ToString());
  278. if (dts == null || dts.Rows.Count == 0 || dts.Rows[0]["NewMTDOCCode"].ToString() == "")
  279. {
  280. MTDOCCode = Time + "000001";
  281. }
  282. else
  283. {
  284. string NewMTDOCCode = dts.Rows[0]["NewMTDOCCode"].ToString();
  285. int COUNT = Convert.ToInt32(NewMTDOCCode.Substring(8)) + 1;
  286. MTDOCCode = Time + COUNT.ToString().PadLeft(6, '0');
  287. }
  288. Dictionary<string, object> dic = new Dictionary<string, object>();
  289. foreach (var item in res)
  290. {
  291. JObject jo = (JObject)item;
  292. DataTable dt = new DataTable();
  293. string NewLotNo = "";
  294. string LotNo = jo["LotNo"].ToString();
  295. string sqls = @"SELECT top 1 LotNo NewLotNo FROM(
  296. select
  297. CAST( RIGHT(LotNo, CHARINDEX('-', REVERSE(LotNo)) - 1) AS INT) AS result ,LotNo
  298. from ICSInventoryLot where EATTRIBUTE1='{0}' ) a
  299. ORDER BY result DESC";
  300. sqls = string.Format(sqls, LotNo);
  301. dt = Repository().FindTableBySql(sqls.ToString());
  302. if (dt == null || dt.Rows.Count == 0 || dt.Rows[0]["NewLotNo"].ToString() == "")
  303. {
  304. NewLotNo = LotNo + "-1";
  305. }
  306. else
  307. {
  308. string newLotNO = dt.Rows[0]["NewLotNo"].ToString();
  309. int COUNT = Convert.ToInt32(newLotNO.Substring(newLotNO.LastIndexOf('-') + 1)) + 1;
  310. NewLotNo = LotNo + "-" + COUNT.ToString();
  311. }
  312. string sqloldLotNo = string.Format(@"select a.ProjectCode,a.BatchCode,a.Version,a.Brand,a.cFree1,a.cFree2,a.cFree3,a.cFree4,a.cFree5,a.cFree6,a.cFree7,a.cFree8,a.cFree9,a.cFree10,c.EffectiveDays,c.EffectiveEnable
  313. from ICSExtension a
  314. inner join dbo.ICSInventoryLot b on a.ID=b.ExtensionID and a.WorkPoint=b.WorkPoint
  315. left JOIN ICSInventory c ON b.InvCode=c.InvCode AND b.WorkPoint=c.WorkPoint
  316. where b.LotNo='{0}'", LotNo);
  317. DataTable oldLotNo = SqlHelper.GetDataTableBySql(sqloldLotNo);
  318. string oProjectCode = oldLotNo.Rows[0]["ProjectCode"].ToString();
  319. string oBatchCode = oldLotNo.Rows[0]["BatchCode"].ToString();
  320. string oVersion = oldLotNo.Rows[0]["Version"].ToString();
  321. string oBrand = oldLotNo.Rows[0]["Brand"].ToString();
  322. string ocFree1 = oldLotNo.Rows[0]["cFree1"].ToString();
  323. string ocFree2 = oldLotNo.Rows[0]["cFree2"].ToString();
  324. string ocFree3 = oldLotNo.Rows[0]["cFree3"].ToString();
  325. string ocFree4 = oldLotNo.Rows[0]["cFree4"].ToString();
  326. string ocFree5 = oldLotNo.Rows[0]["cFree5"].ToString();
  327. string ocFree6 = oldLotNo.Rows[0]["cFree6"].ToString();
  328. string ocFree7 = oldLotNo.Rows[0]["cFree7"].ToString();
  329. string ocFree8 = oldLotNo.Rows[0]["cFree8"].ToString();
  330. string ocFree9 = oldLotNo.Rows[0]["cFree9"].ToString();
  331. string ocFree10 = oldLotNo.Rows[0]["cFree10"].ToString();
  332. string productDate = jo["ProductDate"].ToString();
  333. if (jo["FlagProjectCode"].ToString() != "" && jo["FlagProjectCode"].ToString() == "1")
  334. {
  335. oProjectCode = jo["ProjectCode"].ToString();
  336. }
  337. if (jo["FlagBatchCode"].ToString() != "" && jo["FlagBatchCode"].ToString() == "1")
  338. {
  339. oBatchCode = jo["BatchCode"].ToString();
  340. }
  341. if (jo["FlagVersion"].ToString() != "" && jo["FlagVersion"].ToString() == "1")
  342. {
  343. oVersion = jo["Version"].ToString();
  344. }
  345. if (jo["FlagBrand"].ToString() != "" && jo["FlagBrand"].ToString() == "1")
  346. {
  347. oBrand = jo["Brand"].ToString();
  348. }
  349. if (jo["FlagcFree1"].ToString() != "" && jo["FlagcFree1"].ToString() == "1")
  350. {
  351. ocFree1 = jo["cFree1"].ToString();
  352. }
  353. if (jo["FlagcFree2"].ToString() != "" && jo["FlagcFree2"].ToString() == "1")
  354. {
  355. ocFree2 = jo["cFree2"].ToString();
  356. }
  357. if (jo["FlagcFree3"].ToString() != "" && jo["FlagcFree3"].ToString() == "1")
  358. {
  359. ocFree3 = jo["cFree3"].ToString();
  360. }
  361. if (jo["FlagcFree4"].ToString() != "" && jo["FlagcFree4"].ToString() == "1")
  362. {
  363. ocFree4 = jo["cFree4"].ToString();
  364. }
  365. if (jo["FlagcFree5"].ToString() != "" && jo["FlagcFree5"].ToString() == "1")
  366. {
  367. ocFree5 = jo["cFree5"].ToString();
  368. }
  369. if (jo["FlagcFree6"].ToString() != "" && jo["FlagcFree6"].ToString() == "1")
  370. {
  371. ocFree6 = jo["cFree6"].ToString();
  372. }
  373. if (jo["FlagcFree7"].ToString() != "" && jo["FlagcFree7"].ToString() == "1")
  374. {
  375. ocFree7 = jo["cFree7"].ToString();
  376. }
  377. if (jo["FlagcFree8"].ToString() != "" && jo["FlagcFree8"].ToString() == "1")
  378. {
  379. ocFree8 = jo["cFree8"].ToString();
  380. }
  381. if (jo["FlagcFree9"].ToString() != "" && jo["FlagcFree9"].ToString() == "1")
  382. {
  383. ocFree9 = jo["cFree9"].ToString();
  384. }
  385. if (jo["FlagcFree10"].ToString() != "" && jo["FlagcFree10"].ToString() == "1")
  386. {
  387. ocFree10 = jo["cFree10"].ToString();
  388. }
  389. //Colspan = jo["ProjectCode"].ToString() + "~" + jo["BatchCode"].ToString() + "~" + jo["Version"].ToString() + "~" + jo["Brand"].ToString() + "~" + jo["cFree1"].ToString() + "~" + jo["cFree2"].ToString() + "~" + jo["cFree3"].ToString() + "~" + jo["cFree4"].ToString() + "~" + jo["cFree5"].ToString() + "~" + jo["cFree6"].ToString() + "~" + jo["cFree7"].ToString() + "~" + jo["cFree8"].ToString() + "~" + jo["cFree9"].ToString() + "~" + jo["cFree10"].ToString();
  390. Colspan = oProjectCode + "~" + oBatchCode + "~" + oVersion + "~" + oBrand + "~" + ocFree1 + "~" + ocFree2 + "~" + ocFree3 + "~" + ocFree4 + "~" + ocFree5 + "~" + ocFree6 + "~" + ocFree7 + "~" + ocFree8 + "~" + ocFree9 + "~" + ocFree10;
  391. string sqlsss = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", Colspan, WorkPoint);
  392. object ExtensionID = SqlHelper.ExecuteScalar(sqlsss);
  393. if (ExtensionID == null)
  394. {
  395. if (string.IsNullOrEmpty(productDate))
  396. {
  397. msg = "创建新的批次,生产日期为必填选项";
  398. return msg;
  399. }
  400. if (dic.Keys.Contains(Colspan))
  401. {
  402. ExtensionID = dic[Colspan];
  403. }
  404. else
  405. {
  406. ExtensionID = Guid.NewGuid();
  407. 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)
  408. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  409. ExtensionID, Colspan, oProjectCode, oBatchCode, oVersion, oBrand, ocFree1, ocFree2, ocFree3, ocFree4, ocFree5, ocFree6, ocFree7, ocFree8, ocFree9, ocFree10,
  410. MUSER, MUSERNAME, WorkPoint);
  411. dic.Add(Colspan, ExtensionID);
  412. }
  413. }
  414. else
  415. {
  416. productDate = "";
  417. }
  418. //如果生产日期不为空 计算条码的失效日期
  419. string exDate = string.Empty;
  420. if (!string.IsNullOrWhiteSpace(productDate))
  421. {
  422. if (oldLotNo.Rows[0]["EffectiveEnable"].ToString()=="True")
  423. {
  424. exDate = productDate.ToDate().AddDays(+oldLotNo.Rows[0]["EffectiveDays"].ToDouble()).ToString("yyyy-MM-dd hh:mm:ss");
  425. }
  426. else
  427. {
  428. exDate = "2999-12-31";
  429. }
  430. }
  431. string sqloldInvcode = string.Format(@"select InvCode from dbo.ICSInventoryLot where LotNo='{0}'", LotNo);
  432. object OldInvcode = SqlHelper.ExecuteScalar(sqloldInvcode);
  433. if (jo["FlagInvCode"].ToString() != "" && jo["FlagInvCode"].ToString() == "1")
  434. {
  435. OldInvcode = InvCode;
  436. }
  437. //老
  438. sql += @" INSERT INTO dbo.ICSMTDOC
  439. ( ID ,MTDOCCode,WHCode ,Sequence ,LotNo,Quantity,Amount,MTDOCQuantity,MTDOCType,Memo,Status,CreatePerson,
  440. CreateDateTime,MTDOCID,MTDOCDetailID,ExtensionID,MUSER,MUSERName ,MTIME ,WorkPoint,LocationCode,EATTRIBUTE1 )
  441. select NEWID(),'{0}',b.WarehouseCode,'{2}','{3}','{4}','{5}','{6}','1','{7}','1','{8}','{16}',newid(),newid(),a.ExtensionID,'{10}','{11}','{16}','{12}',b.LocationCode ,'{19}'
  442. from ICSInventoryLot a inner join dbo.ICSWareHouseLotInfo b on a.LotNo=b.LotNo where a.LotNo='{3}'";
  443. //新
  444. sql += @"INSERT INTO dbo.ICSMTDOC
  445. ( ID ,MTDOCCode,WHCode ,Sequence ,LotNo,Quantity,Amount,MTDOCQuantity,MTDOCType,Memo,Status,CreatePerson,
  446. CreateDateTime,MTDOCID,MTDOCDetailID,ExtensionID,MUSER,MUSERName ,MTIME ,WorkPoint,LocationCode,EATTRIBUTE1 )
  447. values(NEWID(),'{0}','{1}','{14}','{13}','{18}','{5}','{6}','2','{7}','1','{8}','{16}',newid(),newid(),'{9}','{10}','{11}','{16}','{12}','{17}','{19}' )";
  448. if (string.IsNullOrEmpty(exDate))
  449. {
  450. //新增条码
  451. sql += @"INSERT into ICSInventoryLot
  452. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,Amount,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6
  453. ,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10,EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13,EATTRIBUTE14,EATTRIBUTE15
  454. ,EATTRIBUTE16,EATTRIBUTE17,EATTRIBUTE18,EATTRIBUTE19,EATTRIBUTE20,EATTRIBUTE21,EATTRIBUTE22,EATTRIBUTE23,EATTRIBUTE24
  455. ,EATTRIBUTE25,EATTRIBUTE26,EATTRIBUTE27,EATTRIBUTE28,EATTRIBUTE29,EATTRIBUTE30)
  456. select newid(),'{13}','{15}',ProductDate,ExpirationDate,CASE WHEN ISNULL(" + jo["InvCodeQuantity"].ToDecimal() + @",0)=0 Then Quantity ELSE '" + jo["InvCodeQuantity"].ToDecimal() + @"' end
  457. ,CASE WHEN ISNULL(" + jo["InvCodeQuantity"].ToDecimal() + @",0)=0 Then Amount ELSE Amount/Quantity*" + jo["InvCodeQuantity"].ToDecimal() + @" end
  458. ,'{9}','102',MUSER,MUSERName,MTIME,WorkPoint,'{3}',EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6
  459. ,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10,EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13,EATTRIBUTE14,EATTRIBUTE15
  460. ,EATTRIBUTE16,EATTRIBUTE17,EATTRIBUTE18,EATTRIBUTE19,EATTRIBUTE20,EATTRIBUTE21,EATTRIBUTE22,EATTRIBUTE23,EATTRIBUTE24
  461. ,EATTRIBUTE25,EATTRIBUTE26,EATTRIBUTE27,EATTRIBUTE28,EATTRIBUTE29,EATTRIBUTE30
  462. from ICSInventoryLot
  463. where LotNo='{3}'";
  464. }
  465. else
  466. {
  467. //新增条码
  468. sql += @"INSERT into ICSInventoryLot
  469. (ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,Amount,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6
  470. ,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10,EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13,EATTRIBUTE14,EATTRIBUTE15
  471. ,EATTRIBUTE16,EATTRIBUTE17,EATTRIBUTE18,EATTRIBUTE19,EATTRIBUTE20,EATTRIBUTE21,EATTRIBUTE22,EATTRIBUTE23,EATTRIBUTE24
  472. ,EATTRIBUTE25,EATTRIBUTE26,EATTRIBUTE27,EATTRIBUTE28,EATTRIBUTE29,EATTRIBUTE30)
  473. select newid(),'{13}','{15}','{19}','{20}',CASE WHEN ISNULL(" + jo["InvCodeQuantity"].ToDecimal() + @",0)=0 Then Quantity ELSE '" + jo["InvCodeQuantity"].ToDecimal() + @"' end
  474. ,CASE WHEN ISNULL(" + jo["InvCodeQuantity"].ToDecimal() + @",0)=0 Then Amount ELSE Amount/Quantity*" + jo["InvCodeQuantity"].ToDecimal() + @" end
  475. ,'{9}','102',MUSER,MUSERName,MTIME,WorkPoint,'{3}',EATTRIBUTE2,EATTRIBUTE3,EATTRIBUTE4,EATTRIBUTE5,EATTRIBUTE6
  476. ,EATTRIBUTE7,EATTRIBUTE8,EATTRIBUTE9,EATTRIBUTE10,EATTRIBUTE11,EATTRIBUTE12,EATTRIBUTE13,EATTRIBUTE14,EATTRIBUTE15
  477. ,EATTRIBUTE16,EATTRIBUTE17,EATTRIBUTE18,EATTRIBUTE19,EATTRIBUTE20,EATTRIBUTE21,EATTRIBUTE22,EATTRIBUTE23,EATTRIBUTE24
  478. ,EATTRIBUTE25,EATTRIBUTE26,EATTRIBUTE27,EATTRIBUTE28,EATTRIBUTE29,EATTRIBUTE30
  479. from ICSInventoryLot
  480. where LotNo='{3}'";
  481. }
  482. //新增条码关联
  483. sql += @" INSERT into ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  484. select '{13}',TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint from ICSInventoryLotDetail
  485. where LotNo='{3}'";
  486. sql = string.Format(sql, MTDOCCode, jo["WHCode"].ToString(), Num++, jo["LotNo"].ToString(), jo["Quantity"].ToString(), jo["Amount"].ToString(), jo["MTDOCQuantity"].ToString(), Memo, MUSER, ExtensionID, MUSER, MUSERNAME, WorkPoint, NewLotNo, Num++, OldInvcode, TimeNow, LocationCode, jo["InvCodeQuantity"].ToDecimal() == 0 ? jo["Quantity"].ToDecimal() : jo["InvCodeQuantity"].ToDecimal(), productDate,exDate);
  487. }
  488. if (SqlHelper.CmdExecuteNonQueryLi(sql) > 0)
  489. {
  490. msg = "";
  491. }
  492. else
  493. {
  494. msg = "形态转换失败!";
  495. }
  496. return msg;
  497. }
  498. //审核
  499. public string ICSMTDOCAudit(string MTDOCCode)
  500. {
  501. string msg = "";
  502. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  503. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  504. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  505. DateTime TimeNow = DateTime.Now;
  506. string sql = string.Empty;
  507. string sqlAsn = @" select LotNo,WHCode,LocationCode,Quantity from ICSMTDOC where MTDOCCode='{0}' and MTDOCType='2'";
  508. sqlAsn = string.Format(sqlAsn, MTDOCCode);
  509. DataTable dt = Repository().FindTableBySql(sqlAsn.ToString());
  510. string Identification = Guid.NewGuid().ToString();
  511. for (int i = 0; i < dt.Rows.Count; i++)
  512. {
  513. string NewLotNo = dt.Rows[i]["LotNo"].ToString();
  514. string NewWHCode = dt.Rows[i]["WHCode"].ToString();
  515. string NewLocationCode = dt.Rows[i]["LocationCode"].ToString();
  516. string Quantity = dt.Rows[i]["Quantity"].ToString();
  517. string sqlAsnD = @"select EATTRIBUTE1,InvCode from dbo.ICSInventoryLot where LotNo='{0}' ";
  518. sqlAsnD = string.Format(sqlAsnD, NewLotNo);
  519. DataTable dtD = Repository().FindTableBySql(sqlAsnD.ToString());
  520. string OldLotNo = dtD.Rows[0]["EATTRIBUTE1"].ToString();
  521. string NewInvCode = dtD.Rows[0]["InvCode"].ToString();
  522. //修改形态表状态
  523. sql += @"UPDATE ICSMTDOC set Status='2',MTIME='" + TimeNow + "',MUSER ='" + MUSER + "',MUSERName='" + MUSERNAME + "' WHERE MTDOCCode='" + MTDOCCode + "' and WorkPoint='" + WorkPoint + "'";
  524. //加入一条老条码的出库记录
  525. sql += @"INSERT into ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,FromWarehouseCode,FromLocationCode,
  526. Quantity,Lock,TransType,BusinessCode,
  527. MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  528. select newid(),'" + Identification + "',d.MTDOCCode,d.Sequence, a.LotNo,a.InvCode,d.WHCode,d.LocationCode,a.Quantity,'0' ,'10','35','" + MUSER + @"','" + MUSERNAME + @"','" + TimeNow + @"',a.WorkPoint,''
  529. from ICSWareHouseLotInfo a
  530. left join dbo.ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  531. left join dbo.ICSInventoryLotDetail c on b.LotNo=c.LotNo and b.WorkPoint=c.WorkPoint
  532. left join dbo.ICSMTDOC d on a.LotNo=d.LotNo and d.WorkPoint=c.WorkPoint
  533. where a.LotNo='" + OldLotNo + "' and a.WorkPoint='" + WorkPoint + "'";
  534. //新条码加入库存表
  535. sql += @"INSERT into ICSWareHouseLotInfo(ID
  536. ,LotNo
  537. ,WarehouseCode
  538. ,LocationCode
  539. ,InvCode
  540. ,Quantity
  541. ,InDate
  542. ,LockQuantity
  543. ,MUSER
  544. ,MUSERName
  545. ,MTIME
  546. ,WorkPoint
  547. ,EATTRIBUTE1)
  548. select newid()
  549. ,'" + NewLotNo + @"'
  550. ,CASE WHEN ISNULL('" + NewWHCode + @"','')='' THEN a.WarehouseCode ELSE '" + NewWHCode + @"' end
  551. ,CASE WHEN ISNULL('" + NewLocationCode + @"','')='' THEN a.LocationCode ELSE '" + NewLocationCode + @"' end
  552. ,'" + NewInvCode + @"'
  553. ,CASE WHEN ISNULL(" + Quantity + @",0)=0 Then a.Quantity ELSE " + Quantity + @" end
  554. ,a.InDate
  555. ,a.LockQuantity
  556. ,'" + MUSER + @"'
  557. ,'" + MUSERNAME + @"'
  558. ,'" + TimeNow + @"'
  559. ,a.WorkPoint
  560. ,a.EATTRIBUTE1
  561. from ICSWareHouseLotInfo a
  562. left join dbo.ICSInventoryLot b on a.LotNo=b.EATTRIBUTE1 and a.WorkPoint=b.WorkPoint and b.LotNo='" + NewLotNo + @"'
  563. where a.LotNo='" + OldLotNo + "'";
  564. //修改老条码库存
  565. //sql += @"UPDATE ICSWareHouseLotInfo set CASE WHEN Quantity=0 THEN Quantity-Quantity ELSE Quantity=Quantity-'"+Quantity+@"' END ,MTIME='" + TimeNow + "',MUSER='" + MUSER + "',MUSERName='" + MUSERNAME + "' WHERE LotNo='" + OldLotNo + "'";
  566. sql += @"UPDATE ICSWareHouseLotInfo set Quantity=0 ,MTIME='" + TimeNow + "',MUSER='" + MUSER + "',MUSERName='" + MUSERNAME + "' WHERE LotNo='" + OldLotNo + "'";
  567. //库存记录加入新条码记录
  568. sql += @"INSERT into ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,ToWarehouseCode,ToLocationCode,
  569. Quantity,Lock,TransType,BusinessCode,
  570. MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  571. select newid(),'" + Identification + "',d.MTDOCCode,d.Sequence, a.LotNo,a.InvCode,d.WHCode,d.LocationCode,a.Quantity,'0' ,'10','36','" + MUSER + @"','" + MUSERNAME + @"','" + TimeNow + @"',a.WorkPoint,''
  572. from ICSWareHouseLotInfo a
  573. left join dbo.ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  574. left join dbo.ICSInventoryLotDetail c on b.LotNo=c.LotNo and b.WorkPoint=c.WorkPoint
  575. left join dbo.ICSMTDOC d on a.LotNo=d.LotNo and d.WorkPoint=c.WorkPoint
  576. where a.LotNo='" + NewLotNo + "' and a.WorkPoint='" + WorkPoint + "'";
  577. }
  578. sql += @" select isnull(a.DepCode,'')+a.WHCode+a.MUSER as Costre , isnull(a.DepCode,'') as DepCode,a.WHCode as InWhCode, (row_number() over(order by cast(a.Sequence as int) ,a.WHCode,b.InvCode)-1)/2+1 as GroupNO ,
  579. a.WHCode as OutWhCode,row_number() over(order by cast(a.Sequence as int) ,a.WHCode,b.InvCode) as Sequence,a.EATTRIBUTE1 as ProductDate,b.InvCode,d.Name as [Type] ,a.WHCode as WHCode,conStock.Enable AS UpdateStock,
  580. a.Quantity as Quantity ,a.Amount,a.MUSER as [User],a.WorkPoint,
  581. isnull(c.BatchCode,'') as BatchCode ,isnull(c.ProjectCode,'') as ProjectCode,isnull(c.Version,'') as Version,isnull(c.Brand,'') as Brand,isnull(c.cFree1,'') as cFree1,isnull(c.cFree2,'') as cFree2,isnull(c.cFree3,'') as cFree3,isnull(c.cFree4,'') as cFree4,isnull(c.cFree5,'') as cFree5,isnull(c.cFree6,'') as cFree6,
  582. isnull(c.cFree7,'') as cFree7,isnull(c.cFree8,'') as cFree8,isnull(c.cFree9,'') as cFree9,isnull(c.cFree10,'') as cFree10
  583. INTO #TempERP
  584. from ICSMTDOC a
  585. left join ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  586. left join ICSExtension c on a.ExtensionID=c.ID and a.WorkPoint=c.WorkPoint
  587. left join ICSType d on d.TableCode='ICSMTDOC' and d.ColumnCode='MTDOCType' and d.Code=a.MTDOCType and d.WorkPoint=a.WorkPoint
  588. INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock010' AND a.WorkPoint=conStock.WorkPoint
  589. where a.MTDOCCode='{0}' and a.WorkPoint='{1}'
  590. select distinct Costre, DepCode,InWhCode,OutWhCode,[User],getdate() as MTime,WorkPoint,UpdateStock,'TransForm001' as TransferType FROM #TempERP
  591. select Costre, Sequence,GroupNO,ProductDate,[Type],InvCode,WHCode,BatchCode,ProjectCode,Quantity,Amount,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 FROM #TempERP
  592. DROP TABLE #TempERP";
  593. sql = string.Format(sql, MTDOCCode, WorkPoint);
  594. msg = CmdExecuteData(sql, MTDOCCode, Identification);
  595. return msg;
  596. }
  597. public string CmdExecuteData(string sql, string MTDOCCode, string Identification)
  598. {
  599. string msg = "";
  600. try
  601. {
  602. string connString = SqlHelper.DataCenterConnString;
  603. SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
  604. conn.Open();
  605. SqlTransaction sqlTran = conn.BeginTransaction();
  606. SqlCommand cmd = new SqlCommand();
  607. cmd.Transaction = sqlTran;
  608. cmd.Connection = conn;
  609. try
  610. {
  611. DataSet DSet = SqlCommandHelper.SQlReturnDataSet(sql, cmd);
  612. string Inputstr = SqlHelper.DataSetToJson(DSet, "details", "Costre");
  613. string APIURL = ConfigurationManager.ConnectionStrings["ERPAPIURL"].ConnectionString + "MorphologicalTransformationDoc/Create";
  614. string result = HttpPost(APIURL, Inputstr);
  615. JObject Obj = (JObject)JsonConvert.DeserializeObject(result);//或者JObject jo = JObject.Parse(jsonText);
  616. string MessAge = Obj["Message"].ToString();
  617. string Success = Obj["Success"].ToString();
  618. string ERPSql = "";
  619. if (Success.ToUpper() == "FALSE")
  620. {
  621. throw new Exception(MessAge);
  622. }
  623. else
  624. {
  625. try
  626. {
  627. //JArray res = (JArray)JsonConvert.DeserializeObject(Obj["Data"].ToString());
  628. JObject res = (JObject)JsonConvert.DeserializeObject(Obj["Data"].ToString());
  629. //foreach (var item in res)
  630. //{
  631. //JObject jo = (JObject)item;
  632. JArray resdetail = (JArray)JsonConvert.DeserializeObject(res["details"].ToString());
  633. foreach (var detail in resdetail)
  634. {
  635. JObject det = (JObject)detail;
  636. ERPSql += @"
  637. UPDATE a set ERPID='{3}',ERPDetailID='{4}',ERPCode='{5}',ERPSequence='{6}',ERPUpload='1'
  638. from ICSWareHouseLotInfoLog a
  639. inner join ICSMTDOC b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  640. where b.MTDOCCode='{0}' --and b.Sequence='{1}'
  641. and a.Identification='{2}'";
  642. ERPSql += @" update ICSMTDOC set MTDOCID='{3}',MTDOCDetailID='{4}' where MTDOCCode='{0}' --and Sequence='{1}'";
  643. ERPSql = string.Format(ERPSql, MTDOCCode, det["Sequence"].ToString(), Identification, res["ID"].ToString(), det["ID"].ToString(), res["TransCode"].ToString(), det["Sequence"].ToString());
  644. }
  645. //}
  646. SqlCommandHelper.CmdExecuteNonQuery(ERPSql, cmd);
  647. }
  648. catch (Exception ex)
  649. {
  650. msg = ex.Message;
  651. }
  652. }
  653. cmd.Transaction.Commit();
  654. //return dt;
  655. }
  656. catch (Exception ex)
  657. {
  658. cmd.Transaction.Rollback();
  659. msg = ex.Message;
  660. }
  661. finally
  662. {
  663. if (conn.State == ConnectionState.Open)
  664. {
  665. conn.Close();
  666. }
  667. conn.Dispose();
  668. }
  669. }
  670. catch (Exception ex)
  671. {
  672. msg = ex.Message;
  673. }
  674. return msg;
  675. }
  676. public static string HttpPost(string url, string body)
  677. {
  678. try
  679. {
  680. Encoding encoding = Encoding.UTF8;
  681. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  682. request.Method = "POST";
  683. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  684. request.ContentType = "application/json; charset=utf-8";
  685. byte[] buffer = encoding.GetBytes(body);
  686. request.ContentLength = buffer.Length;
  687. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  688. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  689. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  690. {
  691. return reader.ReadToEnd();
  692. }
  693. }
  694. catch (WebException ex)
  695. {
  696. throw new Exception(ex.Message);
  697. }
  698. }
  699. //形态转换导入
  700. public string ToLead(String savePath, string Year)
  701. {
  702. //数据获取
  703. try
  704. {
  705. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  706. string MUSER = NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode;
  707. string MUSERNAME = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
  708. SqlConnection conn = SqlHelper.GetDataCenterConn();
  709. DataTable data = FileToExcel.ExcelToTable(savePath);
  710. int index = 1;
  711. string Time = DateTime.Now.ToString("yyyyMMdd");
  712. string MTDOCCode = "";
  713. string Memo = "";
  714. decimal Amount = 0;
  715. DateTime TimeNow = DateTime.Now;
  716. int Num = 1;
  717. DateTime time = DateTime.Now;
  718. string sql = string.Empty;
  719. string sqltxt = string.Empty;
  720. sql = string.Format(@"SELECT a.LotNo, a.InvCode, b.ProjectCode, b.BatchCode, b.Version, b.Brand, b.cFree1, b.cFree2, b.cFree3, b.cFree4, b.cFree5, b.cFree6, b.cFree7, b.cFree8, b.cFree9, b.cFree10 FROM ICSInventoryLot AS a LEFT JOIN ICSExtension AS b ON a.ExtensionID = b.ID AND a.WorkPoint = b.WorkPoint where a.WorkPoint ='{0}' ", WorkPoint);
  721. sql += string.Format(@"select LotNo,InvCode from ICSInventoryLot where WorkPoint ='{0}' ", WorkPoint);
  722. sql += string.Format(@"select a.LotNo,a.WarehouseCode,a.InvCode,a.Quantity,b.Amount from ICSWareHouseLotInfo a left JOIN ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint where a.WorkPoint ='{0}' ", WorkPoint);
  723. sql += string.Format(@"select max(MTDOCCode) as NewMTDOCCode from ICSMTDOC where substring(MTDOCCode,1,8)='{0}'", Time);
  724. DataSet ds = SqlHelper.GetDataSetBySql(sql);
  725. if (data != null && data.Rows.Count > 0)
  726. {
  727. foreach (DataRow dr in data.Rows)
  728. {
  729. index++;
  730. #region 获取数据及卡控
  731. string LotNo = dr["条码"].ToString();
  732. string FrontInvCode = dr["转换前料号"].ToString();
  733. string LaterInvCode = dr["转换后料号"].ToString();
  734. string FrontProjectCode = string.Empty;
  735. string LaterProjectCode = string.Empty;
  736. string FrontBatchCode = string.Empty;
  737. string LaterBatchCode = string.Empty;
  738. string FrontVersion = string.Empty;
  739. string LaterVersion = string.Empty;
  740. string FrontBrand = string.Empty;
  741. string LaterBrand = string.Empty;
  742. string FrontcFree1 = string.Empty;
  743. string LatercFree1 = string.Empty;
  744. string FrontcFree2 = string.Empty;
  745. string LatercFree2 = string.Empty;
  746. string FrontcFree3 = string.Empty;
  747. string LatercFree3 = string.Empty;
  748. string FrontcFree4 = string.Empty;
  749. string LatercFree4 = string.Empty;
  750. string FrontcFree5 = string.Empty;
  751. string LatercFree5 = string.Empty;
  752. string FrontcFree6 = string.Empty;
  753. string LatercFree6 = string.Empty;
  754. string FrontcFree7 = string.Empty;
  755. string LatercFree7 = string.Empty;
  756. string FrontcFree8 = string.Empty;
  757. string LatercFree8 = string.Empty;
  758. string FrontcFree9 = string.Empty;
  759. string LatercFree9 = string.Empty;
  760. string FrontcFree10 = string.Empty;
  761. string LatercFree10 = string.Empty;
  762. if (data.Columns.Contains("转换前项目号")) { FrontProjectCode = dr["转换前项目号"].ToString(); }
  763. if (data.Columns.Contains("转换后项目号")) { LaterProjectCode = string.IsNullOrEmpty(dr["转换后项目号"].ToString()) ? dr["转换前项目号"].ToString() : dr["转换后项目号"].ToString(); }
  764. if (data.Columns.Contains("转换前批次")) { FrontBatchCode = dr["转换前批次"].ToString(); }
  765. if (data.Columns.Contains("转换后批次")) { LaterBatchCode = string.IsNullOrEmpty(dr["转换后批次"].ToString()) ? dr["转换前批次"].ToString() : dr["转换后批次"].ToString(); }
  766. if (data.Columns.Contains("转换前版本")) { FrontVersion = dr["转换前版本"].ToString(); }
  767. if (data.Columns.Contains("转换后版本")) { LaterVersion = string.IsNullOrEmpty(dr["转换后版本"].ToString()) ? dr["转换前版本"].ToString() : dr["转换后版本"].ToString(); }
  768. if (data.Columns.Contains("转换前厂牌")) { FrontBrand = dr["转换前厂牌"].ToString(); }
  769. if (data.Columns.Contains("转换后厂牌")) { LaterBrand = string.IsNullOrEmpty(dr["转换后厂牌"].ToString()) ? dr["转换前厂牌"].ToString() : dr["转换后厂牌"].ToString(); }
  770. if (data.Columns.Contains("转换前自由项1")) { FrontcFree1 = dr["转换前自由项1"].ToString(); }
  771. if (data.Columns.Contains("转换后自由项1")) { LatercFree1 = string.IsNullOrEmpty(dr["转换后自由项1"].ToString()) ? dr["转换前自由项1"].ToString() : dr["转换后自由项1"].ToString(); }
  772. if (data.Columns.Contains("转换前自由项2")) { FrontcFree2 = dr["转换前自由项2"].ToString(); }
  773. if (data.Columns.Contains("转换后自由项2")) { LatercFree2 = string.IsNullOrEmpty(dr["转换后自由项2"].ToString()) ? dr["转换前自由项2"].ToString() : dr["转换后自由项2"].ToString(); }
  774. if (data.Columns.Contains("转换前自由项3")) { FrontcFree3 = dr["转换前自由项3"].ToString(); }
  775. if (data.Columns.Contains("转换后自由项3")) { LatercFree3 = string.IsNullOrEmpty(dr["转换后自由项3"].ToString()) ? dr["转换前自由项3"].ToString() : dr["转换后自由项3"].ToString(); }
  776. if (data.Columns.Contains("转换前自由项4")) { FrontcFree4 = dr["转换前自由项4"].ToString(); }
  777. if (data.Columns.Contains("转换后自由项4")) { LatercFree4 = string.IsNullOrEmpty(dr["转换后自由项4"].ToString()) ? dr["转换前自由项4"].ToString() : dr["转换后自由项4"].ToString(); }
  778. if (data.Columns.Contains("转换前自由项5")) { FrontcFree5 = dr["转换前自由项5"].ToString(); }
  779. if (data.Columns.Contains("转换后自由项5")) { LatercFree5 = string.IsNullOrEmpty(dr["转换后自由项5"].ToString()) ? dr["转换前自由项5"].ToString() : dr["转换后自由项5"].ToString(); }
  780. if (data.Columns.Contains("转换前自由项6")) { FrontcFree6 = dr["转换前自由项6"].ToString(); }
  781. if (data.Columns.Contains("转换后自由项6")) { LatercFree6 = string.IsNullOrEmpty(dr["转换后自由项6"].ToString()) ? dr["转换前自由项6"].ToString() : dr["转换后自由项6"].ToString(); }
  782. if (data.Columns.Contains("转换前自由项7")) { FrontcFree7 = dr["转换前自由项7"].ToString(); }
  783. if (data.Columns.Contains("转换后自由项7")) { LatercFree7 = string.IsNullOrEmpty(dr["转换后自由项7"].ToString()) ? dr["转换前自由项7"].ToString() : dr["转换后自由项7"].ToString(); }
  784. if (data.Columns.Contains("转换前自由项8")) { FrontcFree8 = dr["转换前自由项8"].ToString(); }
  785. if (data.Columns.Contains("转换后自由项8")) { LatercFree8 = string.IsNullOrEmpty(dr["转换后自由项8"].ToString()) ? dr["转换前自由项8"].ToString() : dr["转换后自由项8"].ToString(); }
  786. if (data.Columns.Contains("转换前自由项9")) { FrontcFree9 = dr["转换前自由项9"].ToString(); }
  787. if (data.Columns.Contains("转换后自由项9")) { LatercFree9 = string.IsNullOrEmpty(dr["转换后自由项9"].ToString()) ? dr["转换前自由项9"].ToString() : dr["转换后自由项9"].ToString(); }
  788. if (data.Columns.Contains("转换前自由项10")) { FrontcFree10 = dr["转换前自由项10"].ToString(); }
  789. if (data.Columns.Contains("转换后自由项10")) { LatercFree10 = string.IsNullOrEmpty(dr["转换后自由项10"].ToString()) ? dr["转换前自由项10"].ToString() : dr["转换后自由项10"].ToString(); }
  790. string FrontColspan = FrontProjectCode + "~" + FrontBatchCode + "~" + FrontVersion + "~" + FrontBrand + "~" + FrontcFree1 + "~" + FrontcFree2 + "~" + FrontcFree3 + "~" + FrontcFree4 + "~" + FrontcFree5 + "~" + FrontcFree6 + "~" + FrontcFree7 + "~" + FrontcFree8 + "~" + FrontcFree9 + "~" + FrontcFree10;
  791. string LaterColspan = LaterProjectCode + "~" + LaterBatchCode + "~" + LaterVersion + "~" + LaterBrand + "~" + LatercFree1 + "~" + LatercFree2 + "~" + LatercFree3 + "~" + LatercFree4 + "~" + LatercFree5 + "~" + LatercFree6 + "~" + LatercFree7 + "~" + LatercFree8 + "~" + LatercFree9 + "~" + LatercFree10;
  792. //if (LotNo == null || LotNo == "")
  793. //{
  794. // throw new Exception("第 " + index + " 行,请输入条码!");
  795. //}
  796. if (!string.IsNullOrEmpty(FrontInvCode))
  797. {
  798. if (string.IsNullOrEmpty(LaterInvCode))
  799. {
  800. throw new Exception("第 " + index + " 行,已输入转换前料号,请输入转换后料号!");
  801. }
  802. }
  803. else if (!string.IsNullOrEmpty(LaterInvCode))
  804. {
  805. if (string.IsNullOrEmpty(FrontInvCode))
  806. {
  807. throw new Exception("第 " + index + " 行,已输入转换后料号,请输入转换前料号!");
  808. }
  809. }
  810. var LotNoResult = ds.Tables[2].Select(string.Format(" LotNo='{0}'", LotNo));
  811. if (LotNoResult == null || LotNoResult.Length <= 0)
  812. {
  813. throw new Exception("第 " + index + " 行,条码:" + LotNo + "未查询到库存信息!");
  814. }
  815. var FrontInvCodeResult = ds.Tables[2].Select(string.Format("InvCode='{0}' and LotNo='{1}'", FrontInvCode, LotNo));
  816. if (FrontInvCodeResult == null || FrontInvCodeResult.Length <= 0)
  817. {
  818. throw new Exception("第 " + index + " 行,转换前料号:" + FrontInvCode + " 与条码对应信息不符!");
  819. }
  820. if (!string.IsNullOrEmpty(FrontProjectCode) || !string.IsNullOrEmpty(LaterProjectCode))
  821. {
  822. var ProjectCodeResult = ds.Tables[0].Select(string.Format("ProjectCode='{0}' and LotNo='{1}'", FrontProjectCode, LotNo));
  823. if (ProjectCodeResult == null || ProjectCodeResult.Length <= 0)
  824. {
  825. throw new Exception("第 " + index + " 行,转换前项目号:" + FrontProjectCode + " 与条码对应信息不符合!");
  826. }
  827. }
  828. if (!string.IsNullOrEmpty(FrontBatchCode) || !string.IsNullOrEmpty(LaterBatchCode))
  829. {
  830. var BatchCodeResult = ds.Tables[0].Select(string.Format("BatchCode='{0}' and LotNo='{1}'", FrontBatchCode, LotNo));
  831. if (BatchCodeResult == null || BatchCodeResult.Length <= 0)
  832. {
  833. throw new Exception("第 " + index + " 行,转换前批次:" + FrontBatchCode + " 与条码对应信息不符合!");
  834. }
  835. }
  836. if (!string.IsNullOrEmpty(FrontVersion) || !string.IsNullOrEmpty(LaterVersion))
  837. {
  838. var VersionResult = ds.Tables[0].Select(string.Format("Version='{0}' and LotNo='{1}'", FrontVersion, LotNo));
  839. if (VersionResult == null || VersionResult.Length <= 0)
  840. {
  841. throw new Exception("第 " + index + " 行,转换前版本:" + FrontVersion + " 与条码对应信息不符合!");
  842. }
  843. }
  844. if (!string.IsNullOrEmpty(FrontBrand) || !string.IsNullOrEmpty(LaterBrand))
  845. {
  846. var BrandResult = ds.Tables[0].Select(string.Format("Brand='{0}' and LotNo='{1}'", FrontBrand, LotNo));
  847. if (BrandResult == null || BrandResult.Length <= 0)
  848. {
  849. throw new Exception("第 " + index + " 行,转换前厂牌:" + FrontBrand + " 与条码对应信息不符合!");
  850. }
  851. }
  852. if (!string.IsNullOrEmpty(FrontcFree1) || !string.IsNullOrEmpty(LatercFree1))
  853. {
  854. var cFree1Result = ds.Tables[0].Select(string.Format("cFree1='{0}' and LotNo='{1}'", FrontcFree1, LotNo));
  855. if (cFree1Result == null || cFree1Result.Length <= 0)
  856. {
  857. throw new Exception("第 " + index + " 行,转换前自由项1:" + FrontcFree1 + " 与条码对应信息不符合!");
  858. }
  859. }
  860. if (!string.IsNullOrEmpty(FrontcFree2) || !string.IsNullOrEmpty(LatercFree2))
  861. {
  862. var cFree2Result = ds.Tables[0].Select(string.Format("cFree2='{0}' and LotNo='{1}'", FrontcFree2, LotNo));
  863. if (cFree2Result == null || cFree2Result.Length <= 0)
  864. {
  865. throw new Exception("第 " + index + " 行,转换前自由项2:" + FrontcFree2 + " 与条码对应信息不符合!");
  866. }
  867. }
  868. if (!string.IsNullOrEmpty(FrontcFree3) || !string.IsNullOrEmpty(LatercFree3))
  869. {
  870. var cFree3Result = ds.Tables[0].Select(string.Format("cFree3='{0}' and LotNo='{1}'", FrontcFree3, LotNo));
  871. if (cFree3Result == null || cFree3Result.Length <= 0)
  872. {
  873. throw new Exception("第 " + index + " 行,转换前自由项3:" + FrontcFree3 + " 与条码对应信息不符合!");
  874. }
  875. }
  876. if (!string.IsNullOrEmpty(FrontcFree4) || !string.IsNullOrEmpty(LatercFree4))
  877. {
  878. var cFree4Result = ds.Tables[0].Select(string.Format("cFree4='{0}' and LotNo='{1}'", FrontcFree4, LotNo));
  879. if (cFree4Result == null || cFree4Result.Length <= 0)
  880. {
  881. throw new Exception("第 " + index + " 行,转换前自由项4:" + FrontcFree4 + " 与条码对应信息不符合!");
  882. }
  883. }
  884. if (!string.IsNullOrEmpty(FrontcFree5) || !string.IsNullOrEmpty(LatercFree5))
  885. {
  886. var cFree5Result = ds.Tables[0].Select(string.Format("cFree5='{0}' and LotNo='{1}'", FrontcFree5, LotNo));
  887. if (cFree5Result == null || cFree5Result.Length <= 0)
  888. {
  889. throw new Exception("第 " + index + " 行,转换前自由项5:" + FrontcFree5 + " 与条码对应信息不符合!");
  890. }
  891. }
  892. if (!string.IsNullOrEmpty(FrontcFree6) || !string.IsNullOrEmpty(LatercFree6))
  893. {
  894. var cFree6Result = ds.Tables[0].Select(string.Format("cFree6='{0}' and LotNo='{1}'", FrontcFree6, LotNo));
  895. if (cFree6Result == null || cFree6Result.Length <= 0)
  896. {
  897. throw new Exception("第 " + index + " 行,转换前自由项6:" + FrontcFree6 + " 与条码对应信息不符合!");
  898. }
  899. }
  900. if (!string.IsNullOrEmpty(FrontcFree7) || !string.IsNullOrEmpty(LatercFree7))
  901. {
  902. var cFree7Result = ds.Tables[0].Select(string.Format("cFree7='{0}' and LotNo='{1}'", FrontcFree7, LotNo));
  903. if (cFree7Result == null || cFree7Result.Length <= 0)
  904. {
  905. throw new Exception("第 " + index + " 行,转换前自由项7:" + FrontcFree7 + " 与条码对应信息不符合!");
  906. }
  907. }
  908. if (!string.IsNullOrEmpty(FrontcFree8) || !string.IsNullOrEmpty(LatercFree8))
  909. {
  910. var cFree8Result = ds.Tables[0].Select(string.Format("cFree8='{0}' and LotNo='{1}'", FrontcFree8, LotNo));
  911. if (cFree8Result == null || cFree8Result.Length <= 0)
  912. {
  913. throw new Exception("第 " + index + " 行,转换前自由项8:" + FrontcFree8 + " 与条码对应信息不符合!");
  914. }
  915. }
  916. if (!string.IsNullOrEmpty(FrontcFree9) || !string.IsNullOrEmpty(LatercFree9))
  917. {
  918. var cFree9Result = ds.Tables[0].Select(string.Format("cFree9='{0}' and LotNo='{1}'", FrontcFree9, LotNo));
  919. if (cFree9Result == null || cFree9Result.Length <= 0)
  920. {
  921. throw new Exception("第 " + index + " 行,转换前自由项9:" + FrontcFree9 + " 与条码对应信息不符合!");
  922. }
  923. }
  924. if (!string.IsNullOrEmpty(FrontcFree10) || !string.IsNullOrEmpty(LatercFree10))
  925. {
  926. var cFree10Result = ds.Tables[0].Select(string.Format("cFree10='{0}' and LotNo='{1}'", FrontcFree10, LotNo));
  927. if (cFree10Result == null || cFree10Result.Length <= 0)
  928. {
  929. throw new Exception("第 " + index + " 行,转换前自由项10:" + FrontcFree10 + " 与条码对应信息不符合!");
  930. }
  931. }
  932. #endregion
  933. if (ds.Tables[3] == null || ds.Tables[3].Rows.Count == 0 || ds.Tables[3].Rows[0]["NewMTDOCCode"].ToString() == "")
  934. {
  935. MTDOCCode = Time + "000001";
  936. }
  937. else
  938. {
  939. string NewMTDOCCode = ds.Tables[3].Rows[0]["NewMTDOCCode"].ToString();
  940. int COUNT = Convert.ToInt32(NewMTDOCCode.Substring(8)) + 1;
  941. MTDOCCode = Time + COUNT.ToString().PadLeft(6, '0');
  942. }
  943. string NewLotNo = "";
  944. string sqls = @"select max(LotNo) as NewLotNo from ICSInventoryLot where EATTRIBUTE1='{0}' ";
  945. sqls = string.Format(sqls, LotNo);
  946. DataTable dt = Repository().FindTableBySql(sqls.ToString());
  947. if (dt == null || dt.Rows.Count == 0 || dt.Rows[0]["NewLotNo"].ToString() == "")
  948. {
  949. NewLotNo = LotNo + "-1";
  950. }
  951. else
  952. {
  953. string newLotNO = dt.Rows[0]["NewLotNo"].ToString();
  954. int COUNT = Convert.ToInt32(newLotNO.Substring(newLotNO.LastIndexOf('-') + 1)) + 1;
  955. NewLotNo = LotNo + "-" + COUNT.ToString();
  956. }
  957. var info = ds.Tables[2].Select(string.Format(" LotNo='{0}'", LotNo));
  958. if (!string.IsNullOrEmpty(info[0]["Amount"].ToString()))
  959. {
  960. Amount = Convert.ToDecimal(info[0]["Amount"].ToString());
  961. }
  962. string sqlsss = string.Format(@"select ID from ICSExtension where Colspan='{0}' and WorkPoint='{1}'", LaterColspan, WorkPoint);
  963. object ExtensionID = SqlHelper.ExecuteScalar(sqls);
  964. if (ExtensionID == null)
  965. {
  966. ExtensionID = Guid.NewGuid();
  967. sqltxt += 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)
  968. Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}',getdate(),'{16}','{17}','{18}' )",
  969. ExtensionID, LaterColspan, LaterProjectCode, LaterBatchCode, LaterVersion, LaterBrand, LatercFree1, LatercFree2, LatercFree3, LatercFree4, LatercFree5, LatercFree6, LatercFree7, LatercFree8, FrontcFree9, LatercFree10,
  970. MUSER, MUSERNAME, WorkPoint);
  971. }
  972. //老
  973. sqltxt += @"INSERT INTO dbo.ICSMTDOC
  974. ( ID ,MTDOCCode,WHCode ,Sequence ,LotNo,Quantity,Amount,MTDOCQuantity,MTDOCType,Memo,Status,CreatePerson,
  975. CreateDateTime,MTDOCID,MTDOCDetailID,ExtensionID,MUSER,MUSERName ,MTIME ,WorkPoint )
  976. values(NEWID(),'{0}','{1}','{2}','{3}','{4}','{5}','{6}','1','{7}','1','{8}','{16}',newid(),newid(),'{9}','{10}','{11}','{16}','{12}')";
  977. //新
  978. sqltxt += @"INSERT INTO dbo.ICSMTDOC
  979. ( ID ,MTDOCCode,WHCode ,Sequence ,LotNo,Quantity,Amount,MTDOCQuantity,MTDOCType,Memo,Status,CreatePerson,
  980. CreateDateTime,MTDOCID,MTDOCDetailID,ExtensionID,MUSER,MUSERName ,MTIME ,WorkPoint )
  981. values(NEWID(),'{0}','{1}','{14}','{13}','{4}','{5}','{6}','2','{7}','1','{8}','{16}',newid(),newid(),'{9}','{10}','{11}','{16}','{12}')";
  982. //新增条码
  983. sqltxt += @"INSERT into ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,Amount,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
  984. select newid(),'{13}','{15}',ProductDate,ExpirationDate,Quantity,Amount,ExtensionID,'102',MUSER,MUSERName,MTIME,WorkPoint,'{3}' from ICSInventoryLot
  985. where LotNo='{3}'";
  986. //新增条码关联
  987. sqltxt += @" INSERT into ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
  988. select '{13}',TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint from ICSInventoryLotDetail
  989. where LotNo='{3}'";
  990. sqltxt = string.Format(sqltxt, MTDOCCode, info[0]["WarehouseCode"].ToString(), Num++, info[0]["LotNo"].ToString(), info[0]["Quantity"].ToString(), Amount, info[0]["Quantity"].ToString(), Memo, MUSER, ExtensionID, MUSER, MUSERNAME, WorkPoint, NewLotNo, Num++, info[0]["InvCode"].ToString(), TimeNow);
  991. }
  992. SqlHelper.CmdExecuteNonQueryLi(sqltxt);
  993. }
  994. else
  995. {
  996. return "无有效的导入数据。";
  997. }
  998. return "true";
  999. }
  1000. catch (Exception ex)
  1001. {
  1002. return ex.Message;
  1003. }
  1004. }
  1005. public string GetNewid()
  1006. {
  1007. string sql = "select newid() AS ID";
  1008. return Repository().FindTableBySql(sql, null).Rows[0]["ID"].ToString();
  1009. }
  1010. public object GetDecimalDigits()
  1011. {
  1012. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location.TrimEnd(',');
  1013. try
  1014. {
  1015. string sql = string.Empty;
  1016. sql = @"select Figure from ICSConfiguration where Code='Figure001' and Enable='1' and WorkPoint='" + WorkPoint + "'";
  1017. object Figure = SqlHelper.ExecuteScalar(sql);
  1018. return Figure;
  1019. }
  1020. catch (Exception ex)
  1021. {
  1022. throw new Exception(ex.Message.ToString());
  1023. }
  1024. }
  1025. public string DeleteICSMTDOC(string keyValue)
  1026. {
  1027. //站点信息
  1028. string WorkPoint = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
  1029. string msg = "";
  1030. keyValue = keyValue.Substring(1, keyValue.Length - 2);
  1031. string sql = string.Empty;
  1032. try
  1033. {
  1034. sql += string.Format(@"delete b from ICSMTDOC a
  1035. left join ICSInventoryLot b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
  1036. where a.MTDOCCode in ({0}) and a.WorkPoint='{1}' and a.MTDOCType='2'", keyValue.TrimEnd(','), WorkPoint);
  1037. sql += string.Format(@"delete c from ICSMTDOC a
  1038. inner join ICSInventoryLotDetail c on a.LotNo=c.LotNo and a.WorkPoint=c.WorkPoint
  1039. where a.MTDOCCode in ({0}) and a.WorkPoint='{1}' and a.MTDOCType='2'", keyValue.TrimEnd(','), WorkPoint);
  1040. sql += string.Format(@"delete ICSMTDOC where MTDOCCode in ({0}) and WorkPoint='{1}'", keyValue.TrimEnd(','), WorkPoint);
  1041. SqlHelper.CmdExecuteNonQueryLi(sql);
  1042. }
  1043. catch (Exception ex)
  1044. {
  1045. msg = ex.Message;
  1046. }
  1047. return msg;
  1048. }
  1049. }
  1050. }