MacCountDal.cs 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using Cksoft.Data;
  2. using Cksoft.Unity;
  3. using DllEapEntity;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using DllEapEntity.Dtos;
  8. using DllHsmsWeb;
  9. using DllHsms;
  10. namespace DllEapDal
  11. {
  12. public class MacCountDal
  13. {
  14. private IDatabase CurrDb = null;
  15. public MacCountDal(IDatabase db)
  16. {
  17. CurrDb = db;
  18. }
  19. /// <summary>
  20. /// 根据机台ID,读取机台数据,并保存
  21. /// </summary>
  22. /// <param name="maccode">机台编号</param>
  23. /// <param name="preid">trackinout id</param>
  24. /// <param name="usercode">用户编号</param>
  25. /// <param name="errorinfo"></param>
  26. /// <returns></returns>
  27. public int IMacCount(Machine mac, string usercode, ref string errorinfo)
  28. {
  29. try
  30. {
  31. HsmsWeb hsms = new HsmsWeb();
  32. string condition = $" and b.FCode='{mac.FCode}'";
  33. List<MacOrder> mst = CurrDb.FindListForCondition<MacOrder>(condition, ref errorinfo).ToList();
  34. if (mst.Count <= 0)
  35. {
  36. errorinfo = $"机台【{mac.FCode}】没有对应的指令【S1F3】。";
  37. return -1;
  38. }
  39. int ordermstid = mst[0].PreID;//机台对应的指令主档ID
  40. condition = $@" and {EntityAttribute.GetPropertyCondition<OrderDetail>(nameof(OrderDetail.PreID))}={ordermstid}
  41. and {EntityAttribute.GetPropertyCondition<OrderDetail>(nameof(OrderDetail.SVal))}=1
  42. and {EntityAttribute.GetPropertyCondition<OrderDetail>(nameof(OrderDetail.FVal))}=3";
  43. List<OrderDetail> orders = CurrDb.FindListForCondition<OrderDetail>(condition, ref errorinfo).ToList();
  44. if (orders.Count <= 0)
  45. {
  46. errorinfo = $"机台【{mac.FCode}】没有对应的指令【S1F3】。";
  47. return -1;
  48. }
  49. //读取指令参数列表
  50. condition = $" and b.FCode='{StandardCode.SVID_FinishUnit}' and a.preid={mac.MModeID}";
  51. List<MMSecDetail> detailsec = CurrDb.FindListForCondition<MMSecDetail>(condition, ref errorinfo).ToList();
  52. List<OrderData> datas = HsmsUnity.GetOrderS1F3Data(detailsec, ref errorinfo);
  53. OrderBlock result = hsms.SendOrderFor(mac.FCode, orders[0], datas, ref errorinfo);
  54. if (result == null)
  55. return -1;
  56. //List<OrderData> tempdatas = result.Datalists.Where(t => t.ParentID == 0).ToList();
  57. //if (tempdatas.Count <= 0)
  58. //{
  59. // errorinfo = $"指令返回的数据中,没找到L数据。";
  60. // return -1;
  61. //}
  62. //string fcount = tempdatas[0].FContent;
  63. string fcount = result.Datalists[1].FContent;
  64. MacCount maccount = new MacCount();
  65. maccount.FCount = int.Parse(fcount);
  66. maccount.MacID = mac.ID;
  67. maccount.ParamCode = StandardCode.SVID_FinishUnit;
  68. maccount.FDate = DateTime.Now;
  69. CurrDb.InsertFor<MacCount>(maccount, usercode);
  70. return 1;
  71. }
  72. catch (Exception ex)
  73. {
  74. errorinfo = ex.Message.ToString();
  75. return -1;
  76. }
  77. }
  78. public IEnumerable<MacCount> Get(string filter, ref string errorinfo)
  79. {
  80. return CurrDb.FindListForCondition<MacCount>(filter, ref errorinfo);
  81. }
  82. }
  83. }