SJA APS后端代码
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.

110 lines
3.1 KiB

  1. package service
  2. import "leit.com/leit_seat_aps/db"
  3. // 零件族业务对象
  4. type BL_PartFamily struct {
  5. Partfamilyid string
  6. Pf_attr_dict map[int]BL_PartFamily_Atcod // 零件族分配的属性字典
  7. Partfamilytab db.Me_partfamily
  8. }
  9. // 零件族分配的属性对象
  10. type BL_PartFamily_Atcod struct {
  11. Partfamilyid string // 零件族ID
  12. Attrcode int // 属性ID
  13. Mandatory int // 是否强制需要
  14. Verifyrule string // 验证规则
  15. Partfamily_attrtab db.Me_partfamily_atcodlst
  16. }
  17. // 获取零件族列表
  18. func GetPartfamilytabList() (pftablist []db.Me_partfamily, err error) {
  19. if err = db.G_DbEngine.Where("finr = ?", db.G_FINR).Find(&pftablist); err != nil {
  20. return
  21. }
  22. return
  23. }
  24. // 获取零件族属性列表
  25. func GetPartfamilyAtcodtabList() (pfatcodtablist []db.Me_partfamily_atcodlst, err error) {
  26. if err = db.G_DbEngine.Where("finr = ?", db.G_FINR).Find(&pfatcodtablist); err != nil {
  27. return
  28. }
  29. return
  30. }
  31. // 获取项目零件族列表
  32. func GetProjectPartfamilytabList(projnr string) (pftablist []db.Me_partfamily, err error) {
  33. if err = db.G_DbEngine.Where("finr = ? AND projnr = ?", db.G_FINR, projnr).Find(&pftablist); err != nil {
  34. return
  35. }
  36. return
  37. }
  38. // 获取项目零件族属性列表
  39. func GetProjectPartfamilyAtcodtabList(projnr string) (pfatcodtablist []db.Me_partfamily_atcodlst, err error) {
  40. var (
  41. pftablist []db.Me_partfamily
  42. i int
  43. pfarray []string
  44. )
  45. // 获取指定项目的零件族数组
  46. if pftablist, err = GetProjectPartfamilytabList(projnr); err != nil {
  47. return
  48. }
  49. pfarray = make([]string, len(pftablist))
  50. for i = 0; i < len(pftablist); i++ {
  51. pfarray[i] = pftablist[i].Partfamilyid
  52. }
  53. if err = db.G_DbEngine.Where("finr = ?", db.G_FINR).In("partfamilyid", pfarray).Find(&pfatcodtablist); err != nil {
  54. return
  55. }
  56. return
  57. }
  58. // 获取指定项目的零件族主数据字典
  59. func GetProjectParfamilyDict(projnr string) (pfdict map[string]BL_PartFamily, err error) {
  60. var (
  61. pftablst []db.Me_partfamily
  62. pfattrtablst []db.Me_partfamily_atcodlst
  63. bl_pf BL_PartFamily
  64. bl_pfattr BL_PartFamily_Atcod
  65. i int
  66. ok bool
  67. )
  68. pfdict = make(map[string]BL_PartFamily)
  69. if pftablst, err = GetProjectPartfamilytabList(projnr); err != nil {
  70. return
  71. }
  72. if pfattrtablst, err = GetProjectPartfamilyAtcodtabList(projnr); err != nil {
  73. return
  74. }
  75. // 遍历零件族列表
  76. for i = 0; i < len(pftablst); i++ {
  77. pftablst[i].Clipped()
  78. bl_pf = BL_PartFamily{}
  79. bl_pf.Partfamilyid = pftablst[i].Partfamilyid
  80. bl_pf.Pf_attr_dict = make(map[int]BL_PartFamily_Atcod)
  81. bl_pf.Partfamilytab = pftablst[i]
  82. pfdict[bl_pf.Partfamilyid] = bl_pf
  83. }
  84. // 遍历零件属性列表
  85. for i = 0; i < len(pfattrtablst); i++ {
  86. pfattrtablst[i].Clipped()
  87. if bl_pf, ok = pfdict[pfattrtablst[i].Partfamilyid]; !ok {
  88. continue
  89. }
  90. bl_pfattr = BL_PartFamily_Atcod{}
  91. bl_pfattr.Attrcode = pfattrtablst[i].Attrcode
  92. bl_pfattr.Mandatory = pfattrtablst[i].Mandatory
  93. bl_pfattr.Verifyrule = pfattrtablst[i].Verifyrule
  94. bl_pfattr.Partfamily_attrtab = pfattrtablst[i]
  95. bl_pf.Pf_attr_dict[bl_pfattr.Attrcode] = bl_pfattr
  96. // 更新回零件字典
  97. pfdict[bl_pf.Partfamilyid] = bl_pf
  98. }
  99. return
  100. }