SmartDeviceService.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:SmartDeviceService.cs
  5. * 2.功能描述:接收智能设备请求
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈晓野 2018/10/25 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Data;
  12. using System.ServiceModel;
  13. using System.ServiceModel.Activation;
  14. using Dongke.IBOSS.PRD.Basics.Library;
  15. using Dongke.IBOSS.PRD.Service.DataModels;
  16. using Dongke.IBOSS.PRD.Service.PMModuleLogic;
  17. using Dongke.IBOSS.PRD.Service.SmartDeviceService;
  18. using Dongke.IBOSS.PRD.WCF.Contracts;
  19. using Dongke.IBOSS.PRD.WCF.DataModels;
  20. using Newtonsoft.Json.Linq;
  21. namespace Dongke.IBOSS.PRD.WCF.Services
  22. {
  23. /// <summary>
  24. /// 智能设备对接服务
  25. /// </summary>
  26. [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
  27. [ServiceBehavior(ConfigurationName = "SmartDeviceService",
  28. InstanceContextMode = InstanceContextMode.PerCall,
  29. ConcurrencyMode = ConcurrencyMode.Multiple,
  30. UseSynchronizationContext = false)]
  31. public class SmartDeviceService : ISmartDevice
  32. {
  33. /// <summary>
  34. /// 连接测试
  35. /// </summary>
  36. /// <param name="message"></param>
  37. /// <returns></returns>
  38. public string Test(string message)
  39. {
  40. return message + " is ok";
  41. }
  42. /// <summary>
  43. /// 自动扫描计件
  44. /// </summary>
  45. /// <returns></returns>
  46. public void AddWorkPiece(string accountCode, string userCode, string userPassword,
  47. int procedureID, string barcode)
  48. {
  49. try
  50. {
  51. DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode);
  52. if (userInfo == null)
  53. {
  54. OutputLog.TraceLog(LogPriority.Warning,
  55. this.ToString(),
  56. System.Reflection.MethodBase.GetCurrentMethod().Name,
  57. " userInfo is null " + userPassword + System.Environment.NewLine +
  58. " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode,
  59. LocalPath.LogExePath + "SmartDevice\\");
  60. return;
  61. }
  62. SUserInfo sUserInfo = new SUserInfo();
  63. sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]);
  64. sUserInfo.AccountCode = accountCode;
  65. sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]);
  66. sUserInfo.UserCode = userCode;
  67. //DataTable barcodeTable = new DataTable();
  68. //barcodeTable.TableName = "barcodeTable";
  69. //barcodeTable.Columns.Add("BarCode");
  70. //barcodeTable.Columns.Add("UserID");
  71. //barcodeTable.Columns.Add("UserCode");
  72. //barcodeTable.Columns.Add("UserName");
  73. //barcodeTable.Columns.Add("LogoID");
  74. //DataRow drCollectType = barcodeTable.NewRow();
  75. //drCollectType["BarCode"] = barcode;
  76. //drCollectType["UserID"] = sUserInfo.UserID;
  77. //drCollectType["UserCode"] = sUserInfo.UserCode;
  78. //drCollectType["UserName"] = userInfo.Rows[0]["UserName"].ToString();
  79. //barcodeTable.Rows.Add(drCollectType);
  80. DataTable barcodeTable = userInfo;
  81. barcodeTable.Columns.Add("LogoID");
  82. barcodeTable.Columns.Add("BarCode");
  83. barcodeTable.Rows[0]["BarCode"] = barcode;
  84. ProcedureEntity procedureInfo = null;
  85. DataTable dt = PMModuleLogicDAL.AddWorkPiece(procedureID, barcodeTable, sUserInfo, out procedureInfo);
  86. if (dt != null && dt.Rows.Count > 0 && !string.IsNullOrWhiteSpace(dt.Rows[0]["out_errMsg"].ToString()))
  87. {
  88. OutputLog.TraceLog(LogPriority.Warning,
  89. this.ToString(),
  90. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  91. userPassword + System.Environment.NewLine +
  92. " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode,
  93. JsonHelper.ToJson(dt),
  94. LocalPath.LogExePath + "SmartDevice\\");
  95. }
  96. }
  97. catch (Exception ex)
  98. {
  99. OutputLog.TraceLog(LogPriority.Error,
  100. this.ToString(),
  101. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  102. userPassword + System.Environment.NewLine +
  103. " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode,
  104. ex.ToString(),
  105. LocalPath.LogExePath);
  106. }
  107. }
  108. /// <summary>
  109. /// 自动扫描计件
  110. /// </summary>
  111. /// <returns></returns>
  112. public string AddWorkPieceByStatus(string accountCode, string userCode, string userPassword,
  113. int procedureID, string barcode, string remarks)
  114. {
  115. try
  116. {
  117. DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode);
  118. if (userInfo == null)
  119. {
  120. OutputLog.TraceLog(LogPriority.Warning,
  121. this.ToString(),
  122. System.Reflection.MethodBase.GetCurrentMethod().Name,
  123. " userInfo is null " + userPassword + System.Environment.NewLine +
  124. " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode,
  125. LocalPath.LogExePath + "SmartDevice\\");
  126. return "EU-01";
  127. }
  128. SUserInfo sUserInfo = new SUserInfo();
  129. sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]);
  130. sUserInfo.AccountCode = accountCode;
  131. sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]);
  132. sUserInfo.UserCode = userCode;
  133. //DataTable barcodeTable = new DataTable();
  134. //barcodeTable.TableName = "barcodeTable";
  135. //barcodeTable.Columns.Add("BarCode");
  136. //barcodeTable.Columns.Add("UserID");
  137. //barcodeTable.Columns.Add("UserCode");
  138. //barcodeTable.Columns.Add("UserName");
  139. //barcodeTable.Columns.Add("LogoID");
  140. //DataRow drCollectType = barcodeTable.NewRow();
  141. //drCollectType["BarCode"] = barcode;
  142. //drCollectType["UserID"] = sUserInfo.UserID;
  143. //drCollectType["UserCode"] = sUserInfo.UserCode;
  144. //drCollectType["UserName"] = userInfo.Rows[0]["UserName"].ToString();
  145. //barcodeTable.Rows.Add(drCollectType);
  146. DataTable barcodeTable = userInfo;
  147. barcodeTable.Columns.Add("LogoID");
  148. barcodeTable.Columns.Add("BarCode");
  149. barcodeTable.Columns.Add("Remarks");
  150. barcodeTable.Rows[0]["BarCode"] = barcode;
  151. barcodeTable.Rows[0]["Remarks"] = remarks;
  152. ProcedureEntity procedureInfo = null;
  153. DataTable dt = PMModuleLogicDAL.AddWorkPiece(procedureID, barcodeTable, sUserInfo, out procedureInfo);
  154. if (dt != null && dt.Rows.Count > 0)
  155. {
  156. string out_msg = dt.Rows[0]["out_errMsg"].ToString();
  157. if (!string.IsNullOrWhiteSpace(out_msg))
  158. {
  159. OutputLog.TraceLog(LogPriority.Warning,
  160. this.ToString(),
  161. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  162. userPassword + System.Environment.NewLine +
  163. " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode,
  164. JsonHelper.ToJson(dt),
  165. LocalPath.LogExePath + "SmartDevice\\");
  166. if (out_msg.StartsWith("无效条码"))
  167. {
  168. return "EP-01";
  169. }
  170. if (out_msg.Contains("不能到达该工序"))
  171. {
  172. return "EP-02";
  173. }
  174. return "EP-00";
  175. }
  176. }
  177. return "OK";
  178. }
  179. catch (Exception ex)
  180. {
  181. OutputLog.TraceLog(LogPriority.Error,
  182. this.ToString(),
  183. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  184. userPassword + System.Environment.NewLine +
  185. " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode,
  186. ex.ToString(),
  187. LocalPath.LogExePath);
  188. return "EE";
  189. }
  190. }
  191. /// <summary>
  192. /// 注浆接口 xuwei add 2019-11-19
  193. /// </summary>
  194. /// <param name="accountCode"></param>
  195. /// <param name="userCode"></param>
  196. /// <param name="groutingData"></param>
  197. /// <returns></returns>
  198. public string SetGroutingLineDetail(string accountCode, string userCode,
  199. string groutingData, string remarks)
  200. {
  201. try
  202. {
  203. ServiceResultEntity sre = SmartDeviceLogic.SetGroutingLineDetail(accountCode, userCode, groutingData);
  204. DataTable dt = sre.Data.Tables[0];
  205. return dt.Rows[0]["out_errMsg"].ToString();
  206. }
  207. catch (Exception ex)
  208. {
  209. OutputLog.TraceLog(LogPriority.Error,
  210. this.ToString(),
  211. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  212. " accountCode:" + accountCode + " userCode:" + userCode,
  213. ex.ToString(),
  214. LocalPath.LogExePath);
  215. return "EE";
  216. }
  217. }
  218. /// <summary>
  219. /// 登窑、入窑、出窑 接口 xuwei add 2019-11-19
  220. /// </summary>
  221. /// <param name="accountCode"></param>
  222. /// <param name="userCode"></param>
  223. /// <param name="groutingData"></param>
  224. /// <returns></returns>
  225. public string AddWorkPieceKiln(string accountCode, string userCode, int procedureID,
  226. string kilnCarCode, string barCodeAndPosition, string remarks)
  227. {
  228. try
  229. {
  230. #region 验证用户 并配置参数 sUserInfo
  231. DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode);
  232. if (userInfo == null)
  233. {
  234. OutputLog.TraceLog(LogPriority.Warning,
  235. this.ToString(),
  236. System.Reflection.MethodBase.GetCurrentMethod().Name,
  237. $" accountCode:{accountCode} userCode:{userCode} procedureID:{procedureID} kilnCarCode:{kilnCarCode} barCodeAndPosition:{barCodeAndPosition}",
  238. LocalPath.LogExePath + "SmartDevice\\");
  239. return "EU-01";
  240. }
  241. SUserInfo sUserInfo = new SUserInfo();
  242. sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]);
  243. sUserInfo.AccountCode = accountCode;
  244. sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]);
  245. sUserInfo.UserCode = userCode;
  246. #endregion
  247. #region 按窑车号取窑车信息
  248. DataTable carInfo = SmartDeviceLogic.getKilnCarByCode(kilnCarCode);
  249. if (carInfo == null || carInfo.Rows.Count == 0)
  250. {
  251. OutputLog.TraceLog(LogPriority.Warning,
  252. this.ToString(),
  253. System.Reflection.MethodBase.GetCurrentMethod().Name,
  254. $" accountCode:{accountCode} userCode:{userCode} procedureID:{procedureID} kilnCarCode:{kilnCarCode} barCodeAndPosition:{barCodeAndPosition}",
  255. LocalPath.LogExePath + "SmartDevice\\");
  256. return "EP-01";
  257. }
  258. #endregion
  259. #region 配置参数 barcodeTable
  260. //入窑参数
  261. //"Barcode": "11100000012",
  262. //"KilnCarName": "TK21",
  263. //"KilnCode": "TK2",
  264. //"UserCode": "F8",
  265. //"UserID": 55,
  266. //"UserName": "胡贤万",
  267. //"KilnCarID": 35,
  268. //"KilnName": "新窑炉",
  269. //"KilnCarPosition": 2,
  270. //"KilnCarCode": "TK21",
  271. //"KilnID": 3
  272. DataTable barcodeTable = new DataTable();
  273. //入窑 卸窑 配置参数 barcodeTable
  274. if (string.IsNullOrWhiteSpace(barCodeAndPosition))
  275. {
  276. barcodeTable.TableName = "barcodeTable";
  277. barcodeTable.Columns.Add("UserID");
  278. barcodeTable.Columns.Add("UserCode");
  279. barcodeTable.Columns.Add("UserName");
  280. barcodeTable.Columns.Add("KilnID");
  281. barcodeTable.Columns.Add("KilnCode");
  282. barcodeTable.Columns.Add("KilnName");
  283. barcodeTable.Columns.Add("KilnCarCode");
  284. barcodeTable.Columns.Add("KilnCarID");
  285. barcodeTable.Columns.Add("KilnCarName");
  286. barcodeTable.Columns.Add("Remarks");
  287. DataRow drCollectType = barcodeTable.NewRow();
  288. drCollectType["UserID"] = userInfo.Rows[0]["UserID"].ToString();
  289. drCollectType["UserCode"] = userInfo.Rows[0]["UserCode"].ToString();
  290. drCollectType["UserName"] = userInfo.Rows[0]["UserName"].ToString();
  291. drCollectType["KilnID"] = carInfo.Rows[0]["KilnID"].ToString();
  292. drCollectType["KilnCode"] = carInfo.Rows[0]["KilnCode"].ToString();
  293. drCollectType["KilnName"] = carInfo.Rows[0]["KilnName"].ToString();
  294. drCollectType["KilnCarID"] = carInfo.Rows[0]["KilnCarID"].ToString();
  295. drCollectType["KilnCarCode"] = carInfo.Rows[0]["KilnCarCode"].ToString();
  296. drCollectType["KilnCarName"] = carInfo.Rows[0]["KilnCarName"].ToString();
  297. drCollectType["Remarks"] = remarks;
  298. barcodeTable.Rows.Add(drCollectType);
  299. }
  300. else
  301. {
  302. //登窑 添加数据 配置参数 barcodeTable
  303. barcodeTable.TableName = "barcodeTable";
  304. barcodeTable.Columns.Add("UserID");
  305. barcodeTable.Columns.Add("UserCode");
  306. barcodeTable.Columns.Add("UserName");
  307. barcodeTable.Columns.Add("BarCode");
  308. barcodeTable.Columns.Add("KilnID");
  309. barcodeTable.Columns.Add("KilnCode");
  310. barcodeTable.Columns.Add("KilnName");
  311. barcodeTable.Columns.Add("KilnCarID");
  312. barcodeTable.Columns.Add("KilnCarCode");
  313. barcodeTable.Columns.Add("KilnCarName");
  314. barcodeTable.Columns.Add("KilnCarPosition");
  315. barcodeTable.Columns.Add("Remarks");
  316. JArray barCodeArray = JArray.Parse(barCodeAndPosition);
  317. for (int i = 0; i < barCodeArray.Count; i++)
  318. {
  319. DataRow drCollectType = barcodeTable.NewRow();
  320. drCollectType["BarCode"] = barCodeArray[i]["barCode"].ToString();
  321. drCollectType["UserID"] = userInfo.Rows[0]["UserID"].ToString();
  322. drCollectType["UserCode"] = userInfo.Rows[0]["UserCode"].ToString();
  323. drCollectType["UserName"] = userInfo.Rows[0]["UserName"].ToString();
  324. drCollectType["KilnID"] = carInfo.Rows[0]["KilnID"].ToString();
  325. drCollectType["KilnCode"] = carInfo.Rows[0]["KilnCode"].ToString();
  326. drCollectType["KilnName"] = carInfo.Rows[0]["KilnName"].ToString();
  327. drCollectType["KilnCarID"] = carInfo.Rows[0]["KilnCarID"].ToString();
  328. drCollectType["KilnCarCode"] = carInfo.Rows[0]["KilnCarCode"].ToString();
  329. drCollectType["KilnCarName"] = carInfo.Rows[0]["KilnCarName"].ToString();
  330. drCollectType["KilnCarPosition"] = barCodeArray[i]["kilnCarPosition"].ToString();
  331. drCollectType["Remarks"] = remarks;
  332. barcodeTable.Rows.Add(drCollectType);
  333. }
  334. }
  335. #endregion
  336. #region 调用原始业务逻辑
  337. DataTable dt = SmartDeviceLogic.AddWorkPieceKiln(procedureID, barcodeTable, sUserInfo);
  338. #endregion
  339. #region 输出结果
  340. if (dt != null && dt.Rows.Count > 0)
  341. {
  342. string out_msg = dt.Rows[0]["out_errMsg"].ToString();
  343. if (!string.IsNullOrWhiteSpace(out_msg))
  344. {
  345. OutputLog.TraceLog(LogPriority.Warning,
  346. this.ToString(),
  347. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  348. $" accountCode:{accountCode} userCode:{userCode} procedureID:{procedureID} kilnCarCode:{kilnCarCode} barCodeAndPosition:{barCodeAndPosition}",
  349. JsonHelper.ToJson(dt),
  350. LocalPath.LogExePath + "SmartDevice\\");
  351. //if (out_msg.StartsWith("无效条码"))
  352. //{
  353. // return "EP-01";
  354. //}
  355. if (out_msg.Contains("不能到达该工序"))
  356. {
  357. return "EP-02";
  358. }
  359. return "EP-00";
  360. }
  361. }
  362. return "OK";
  363. #endregion
  364. }
  365. catch (Exception ex)
  366. {
  367. OutputLog.TraceLog(LogPriority.Error,
  368. this.ToString(),
  369. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  370. $" accountCode:{accountCode} userCode:{userCode} procedureID:{procedureID} kilnCarCode:{kilnCarCode} barCodeAndPosition:{barCodeAndPosition}",
  371. ex.ToString(),
  372. LocalPath.LogExePath);
  373. return "EE";
  374. }
  375. }
  376. }
  377. }