RefreshBedNetInterfaceQdExcutor.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.SqlClient;
  4. using System.Linq;
  5. using JLHHJSvr.BLL;
  6. using JLHHJSvr.Com;
  7. using JLHHJSvr.Com.Model;
  8. using JLHHJSvr.Helper;
  9. using JLHHJSvr.LJException;
  10. using LJLib.DAL.SQL;
  11. using LJLib.Net.SPI.Server;
  12. using LJLib.SQLEX;
  13. namespace JLHHJSvr.Excutor
  14. {
  15. internal sealed class RefreshBedNetInterfaceQdExcutor : ExcutorBase<RefreshBedNetInterfaceQdRequest, RefreshBedNetInterfaceQdResponse>
  16. {
  17. protected override void ExcuteInternal(RefreshBedNetInterfaceQdRequest request, object state, RefreshBedNetInterfaceQdResponse rslt)
  18. {
  19. var tokendata = BllHelper.GetToken(request.token);
  20. if (tokendata == null)
  21. {
  22. rslt.ErrMsg = "会话已经中断,请重新登录";
  23. return;
  24. }
  25. if (request.bednetid == null || request.bednetid <= 0)
  26. {
  27. rslt.ErrMsg = "床网id有误,请检查!";
  28. return;
  29. }
  30. using (var con = GlobalVar.ConnectionString.NewSqlConnection())
  31. using (var cmd = con.CreateCommand())
  32. {
  33. con.Open();
  34. var mattress = new u_mattress() { mattressid = request.bednetid.Value };
  35. DbSqlHelper.SelectOne(cmd, mattress, "js2_flag");
  36. if (request.isCheck == 1 && mattress.js2_flag == 1)
  37. {
  38. throw new LJCommonException("床网已技术2审核,不能重新生成!");
  39. }
  40. var copy_list = new List<u_bednet_interface_qd>();
  41. var selectStr = @"SELECT u_bednet_interface_qd.bednetid
  42. ,u_bednet_interface_qd.printid
  43. ,u_bednet_interface_qd.itemname
  44. ,u_bednet_interface_qd.bj_pzname
  45. ,u_bednet_interface_qd.bj_pzname_mx
  46. ,u_bednet_interface_qd.bj_pzname_mx_mx
  47. ,u_bednet_interface_qd.mtrlid
  48. ,u_bednet_interface_qd.erp_mtrlid
  49. ,u_bednet_interface_qd.useqty
  50. ,u_bednet_interface_qd.dscrp
  51. ,u_mtrl_price.name AS mtrlname
  52. ,u_bednet_interface_qd.actual_useqty
  53. ,u_bednet_interface_qd.qd_actual_size
  54. ,u_bednet_interface_qd.wrkgrpid
  55. ,Space(200) AS erp_mtrlcode
  56. ,Space(200) AS erp_mtrlname
  57. ,Space(200) AS erp_mtrlmode
  58. ,Space(200) AS erp_unit
  59. ,Space(200) AS mtrlengname
  60. FROM u_bednet_interface_qd
  61. LEFT JOIN u_mtrl_price ON u_mtrl_price.mtrlid = u_bednet_interface_qd.mtrlid";
  62. var outputFields = "bednetid,printid,itemname,bj_pzname,bj_pzname_mx,bj_pzname_mx_mx,mtrlid,erp_mtrlid,useqty,dscrp,mtrlname,actual_useqty,qd_actual_size,qd_pfgroupqty,wrkgrpid,ss_rate,ls_rate,sh_rate,formulaid";
  63. DbSqlHelper.SelectJoin(cmd, selectStr, "bednetid = @bednetid", new Dictionary<string, object>() { { "@bednetid", request.bednetid } }, "printid", outputFields, 0, 0, copy_list);
  64. var interfaceHelper = HelperBase.GetHelper<InterfaceHelper>(cmd, new HelperBase.Context() { tokendata = tokendata });
  65. var qdList = interfaceHelper.RefreshBedNetInterfaceQdList(request.bednetid.Value);
  66. if (request.isPz != null && request.isPz == 1)
  67. {
  68. var copyDict = new Dictionary<Tuple<string, string, string>, u_bednet_interface_qd>();
  69. foreach (var mx2 in copy_list)
  70. {
  71. var key = Tuple.Create(mx2.itemname, mx2.bj_pzname, mx2.bj_pzname_mx);
  72. if (!copyDict.ContainsKey(key))
  73. {
  74. copyDict[key] = mx2;
  75. }
  76. }
  77. // 遍历qdList
  78. foreach (var mx in qdList)
  79. {
  80. var key = Tuple.Create(mx.itemname, mx.bj_pzname, mx.bj_pzname_mx); // 创建复合键
  81. if (copyDict.TryGetValue(key, out var mx2)) // 高效查找对应的mx2
  82. {
  83. // 更新mx属性
  84. mx.erp_mtrlid = mx2.erp_mtrlid;
  85. mx.erp_mtrlcode = mx2.erp_mtrlcode;
  86. mx.erp_mtrlname = mx2.erp_mtrlname;
  87. mx.erp_mtrlmode = mx2.erp_mtrlmode;
  88. mx.erp_unit = mx2.erp_unit;
  89. mx.useqty = mx2.useqty;
  90. mx.actual_useqty = mx2.actual_useqty;
  91. mx.wrkgrpid = mx2.wrkgrpid;
  92. mx.qd_actual_size = mx2.qd_actual_size;
  93. mx.dscrp = mx2.dscrp;
  94. }
  95. }
  96. }
  97. interfaceHelper.InterfaceFindERPPrdPf<u_bednet_interface_qd,u_bednet_interface>(qdList);
  98. rslt.mxList = qdList;
  99. }
  100. }
  101. }
  102. }