SmartDeviceService.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  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. string out_msg = dt.Rows[0]["out_errMsg"].ToString();
  155. if (dt != null && dt.Rows.Count > 0 && !string.IsNullOrWhiteSpace(out_msg))
  156. {
  157. OutputLog.TraceLog(LogPriority.Warning,
  158. this.ToString(),
  159. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  160. userPassword + System.Environment.NewLine +
  161. " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode,
  162. JsonHelper.ToJson(dt),
  163. LocalPath.LogExePath + "SmartDevice\\");
  164. if (out_msg.StartsWith("无效条码"))
  165. {
  166. return "EP-01";
  167. }
  168. if (out_msg.Contains("不能到达该工序"))
  169. {
  170. return "EP-02";
  171. }
  172. return "EP-00";
  173. }
  174. return "OK";
  175. }
  176. catch (Exception ex)
  177. {
  178. OutputLog.TraceLog(LogPriority.Error,
  179. this.ToString(),
  180. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  181. userPassword + System.Environment.NewLine +
  182. " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID + " barcode:" + barcode,
  183. ex.ToString(),
  184. LocalPath.LogExePath);
  185. return "EE";
  186. }
  187. }
  188. /// <summary>
  189. /// 注浆接口 xuwei add 2019-11-19
  190. /// </summary>
  191. /// <param name="accountCode"></param>
  192. /// <param name="userCode"></param>
  193. /// <param name="groutingData"></param>
  194. /// <returns></returns>
  195. public string SetGroutingLineDetail(string accountCode, string userCode, string groutingData)
  196. {
  197. try
  198. {
  199. ServiceResultEntity sre = SmartDeviceLogic.SetGroutingLineDetail(accountCode, userCode, groutingData);
  200. DataTable dt = sre.Data.Tables[0];
  201. return dt.Rows[0]["out_errMsg"].ToString();
  202. }
  203. catch(Exception ex)
  204. {
  205. OutputLog.TraceLog(LogPriority.Error,
  206. this.ToString(),
  207. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  208. " accountCode:" + accountCode + " userCode:" + userCode ,
  209. ex.ToString(),
  210. LocalPath.LogExePath);
  211. return "EE";
  212. }
  213. }
  214. /// <summary>
  215. /// 登窑、入窑、出窑 接口 xuwei add 2019-11-19
  216. /// </summary>
  217. /// <param name="accountCode"></param>
  218. /// <param name="userCode"></param>
  219. /// <param name="groutingData"></param>
  220. /// <returns></returns>
  221. public string AddWorkPieceKiln(string accountCode, string userCode, int procedureID,string kilnCarCode, string barCodeAndPosition="")
  222. {
  223. try
  224. {
  225. #region 验证用户 并配置参数 sUserInfo
  226. DataTable userInfo = SmartDeviceLogic.CheckUserCode(accountCode, userCode);
  227. if (userInfo == null)
  228. {
  229. OutputLog.TraceLog(LogPriority.Warning,
  230. this.ToString(),
  231. System.Reflection.MethodBase.GetCurrentMethod().Name,
  232. " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID ,
  233. LocalPath.LogExePath + "SmartDevice\\");
  234. return "EU-01";
  235. }
  236. SUserInfo sUserInfo = new SUserInfo();
  237. sUserInfo.AccountID = Convert.ToInt32(userInfo.Rows[0]["AccountID"]);
  238. sUserInfo.AccountCode = accountCode;
  239. sUserInfo.UserID = Convert.ToInt32(userInfo.Rows[0]["userid"]);
  240. sUserInfo.UserCode = userCode;
  241. #endregion
  242. #region 按窑车号取窑车信息
  243. DataTable carInfo = SmartDeviceLogic.getKilnCarByCode(kilnCarCode);
  244. #endregion
  245. #region 配置参数 barcodeTable
  246. //入窑参数
  247. //"Barcode": "11100000012",
  248. //"KilnCarName": "TK21",
  249. //"KilnCode": "TK2",
  250. //"UserCode": "F8",
  251. //"UserID": 55,
  252. //"UserName": "胡贤万",
  253. //"KilnCarID": 35,
  254. //"KilnName": "新窑炉",
  255. //"KilnCarPosition": 2,
  256. //"KilnCarCode": "TK21",
  257. //"KilnID": 3
  258. DataTable barcodeTable = new DataTable();
  259. //入窑 卸窑 配置参数 barcodeTable
  260. if (barCodeAndPosition == "")
  261. {
  262. barcodeTable.TableName = "barcodeTable";
  263. barcodeTable.Columns.Add("UserID");
  264. barcodeTable.Columns.Add("UserCode");
  265. barcodeTable.Columns.Add("UserName");
  266. barcodeTable.Columns.Add("KilnCode");
  267. DataRow drCollectType = barcodeTable.NewRow();
  268. drCollectType["UserID"] = userInfo.Rows[0]["UserID"].ToString();
  269. drCollectType["UserCode"] = userInfo.Rows[0]["UserCode"].ToString();
  270. drCollectType["UserName"] = userInfo.Rows[0]["UserName"].ToString();
  271. drCollectType["KilnCode"] = carInfo.Rows[0]["KilnCode"].ToString();
  272. barcodeTable.Rows.Add(drCollectType);
  273. }
  274. //登窑 添加数据 配置参数 barcodeTable
  275. if (barCodeAndPosition != "")
  276. {
  277. barcodeTable.TableName = "barcodeTable";
  278. barcodeTable.Columns.Add("UserID");
  279. barcodeTable.Columns.Add("UserCode");
  280. barcodeTable.Columns.Add("UserName");
  281. barcodeTable.Columns.Add("BarCode");
  282. barcodeTable.Columns.Add("KilnID");
  283. barcodeTable.Columns.Add("KilnCode");
  284. barcodeTable.Columns.Add("KilnName");
  285. barcodeTable.Columns.Add("KilnCarCode");
  286. barcodeTable.Columns.Add("KilnCarID");
  287. barcodeTable.Columns.Add("KilnCarName");
  288. barcodeTable.Columns.Add("KilnCarPosition");
  289. JArray barCodeArray = JArray.Parse(barCodeAndPosition);
  290. for(int i=0;i< barCodeArray.Count;i++)
  291. {
  292. DataRow drCollectType = barcodeTable.NewRow();
  293. drCollectType["BarCode"] = barCodeArray[i]["barCode"].ToString();
  294. drCollectType["UserID"] = userInfo.Rows[0]["UserID"].ToString();
  295. drCollectType["UserCode"] = userInfo.Rows[0]["UserCode"].ToString();
  296. drCollectType["UserName"] = userInfo.Rows[0]["UserName"].ToString();
  297. drCollectType["KilnID"] = carInfo.Rows[0]["KilnID"].ToString();
  298. drCollectType["KilnCode"] = carInfo.Rows[0]["KilnCode"].ToString();
  299. drCollectType["KilnName"] = carInfo.Rows[0]["KilnName"].ToString();
  300. drCollectType["KilnCarID"] = carInfo.Rows[0]["KilnCarID"].ToString();
  301. drCollectType["KilnCarName"] = carInfo.Rows[0]["KilnCarName"].ToString();
  302. drCollectType["KilnCarPosition"] = barCodeArray[i]["kilnCarPosition"].ToString();
  303. barcodeTable.Rows.Add(drCollectType);
  304. }
  305. }
  306. #endregion
  307. #region 调用原始业务逻辑
  308. ProcedureEntity procedureInfo = null;
  309. ServiceResultEntity sre = SmartDeviceLogic.AddWorkPieceKiln(accountCode, userCode, procedureID, barcodeTable, out procedureInfo);
  310. DataTable dt = sre.Data.Tables[0];
  311. #endregion
  312. #region 输出结果
  313. string out_msg = dt.Rows[0]["out_errMsg"].ToString();
  314. if (dt != null && dt.Rows.Count > 0 && !string.IsNullOrWhiteSpace(out_msg))
  315. {
  316. OutputLog.TraceLog(LogPriority.Warning,
  317. this.ToString(),
  318. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  319. " accountCode:" + accountCode + " userCode:" + userCode + " procedureID:" + procedureID ,
  320. JsonHelper.ToJson(dt),
  321. LocalPath.LogExePath + "SmartDevice\\");
  322. if (out_msg.StartsWith("无效条码"))
  323. {
  324. return "EP-01";
  325. }
  326. if (out_msg.Contains("不能到达该工序"))
  327. {
  328. return "EP-02";
  329. }
  330. return "EP-00";
  331. }
  332. return "OK";
  333. #endregion
  334. }
  335. catch (Exception ex)
  336. {
  337. OutputLog.TraceLog(LogPriority.Error,
  338. this.ToString(),
  339. System.Reflection.MethodBase.GetCurrentMethod().Name + System.Environment.NewLine +
  340. " accountCode:" + accountCode + " userCode:" + userCode + "procedureID:"+ procedureID ,
  341. ex.ToString(),
  342. LocalPath.LogExePath);
  343. return "EE";
  344. }
  345. }
  346. }
  347. }