SJA工艺
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.

150 lines
5.1 KiB

3 years ago
  1. package models
  2. import (
  3. "LAPP_SJA_ME/db"
  4. "LAPP_SJA_ME/utils"
  5. "xorm.io/core"
  6. "errors"
  7. )
  8. //模块主数据
  9. type MePartgroup struct {
  10. Finr int `xorm:"pk comment('工厂号') int(0)" json:"me_partgroup-finr"`
  11. Partgroupid string `xorm:"pk comment('零件族Id') VARCHAR(20)" json:"me_partgroup-partgroupid"`
  12. Projnr string `xorm:"pk comment('项目Id') VARCHAR(40)" json:"me_partgroup-projnr"`
  13. Descr string `xorm:"comment('描述') VARCHAR(40)" json:"me_partgroup-descr"`
  14. PartgrpCust1 string `xorm:"comment('预留1') VARCHAR(40)" json:"me_partgroup-partgrp_cust1"`
  15. PartgrpCust2 string `xorm:"comment('预留2') VARCHAR(40)" json:"me_partgroup-partgrp_cust2"`
  16. PartgrpCust3 string `xorm:"comment('预留3') VARCHAR(40)" json:"me_partgroup-partgrp_cust3"`
  17. PartgrpCust4 string `xorm:"comment('预留4') VARCHAR(40)" json:"me_partgroup-partgrp_cust4"`
  18. Lastmodif string `xorm:"comment('最近一次更改时间') VARCHAR(14)" json:"me_partgroup-lastmodif"`
  19. Lastuser string `xorm:"comment('最近一次更改人') VARCHAR(20)" json:"me_partgroup-lastuser"`
  20. Credatuz string `xorm:"comment('创建时间') VARCHAR(14)" json:"me_partgroup-credatuz"`
  21. PartValst []MePart `json:"valst" xorm:"-"`
  22. UnPartValst []MePart `json:"unvalst" xorm:"-"`
  23. AttrValst []MeAttributegroup `json:"attrvalst" xorm:"-"`
  24. UnAttrValst []MeAttributegroup `json:"unattrvalst" xorm:"-"`
  25. }
  26. func (t *MePartgroup) TableName() string {
  27. return "me_partgroup"
  28. }
  29. // 清除string字段的右侧空格
  30. func (t *MePartgroup) Clipped() {
  31. utils.TrimStruct(t, *t)
  32. }
  33. //增
  34. func (t *MePartgroup) Add() error {
  35. e := db.Eloquent.Master()
  36. MePartgroup := new(Snrtab)
  37. MePartgroup.Finr = t.Finr
  38. id, err := MePartgroup.GetNextSnr("MePartgroup")
  39. if err != nil {
  40. return errors.New("流水号生成失败!")
  41. }
  42. t.Partgroupid = id
  43. _, err = e.Table("me_partgroup").Insert(t)
  44. if err != nil {
  45. return err
  46. }
  47. return nil
  48. }
  49. //删
  50. func (t *MePartgroup) Del() bool {
  51. e := db.Eloquent.Master()
  52. //删除模块
  53. _, err := e.ID(core.PK{t.Finr, t.Partgroupid, t.Projnr}).Delete(&MePartgroup{})
  54. if err != nil {
  55. return false
  56. }
  57. //删除分配零件
  58. e.Table("me_partgroup_partlst").Where("finr = ? and partgroupid = ? and projnr = ?", t.Finr, t.Partgroupid, t.Projnr).Delete(&MePartgroupPartlst{})
  59. //删除关联分配属性组
  60. e.Table("me_partgroup_attrgrplst").Where("finr = ? and partgroupid = ? and projnr = ?", t.Finr, t.Partgroupid, t.Projnr).Delete(&MePartgroupAttrgrplst{})
  61. return true
  62. }
  63. //改
  64. func (t *MePartgroup) Update() bool {
  65. e := db.Eloquent.Master()
  66. columns := []string{"descr", "partgrp_cust1", "partgrp_cust2", "partgrp_cust3", "partgrp_cust4", "lastmodif", "lastuser"}
  67. _, err := e.ID(core.PK{t.Finr, t.Partgroupid, t.Projnr}).Cols(columns...).Update(t)
  68. if err != nil {
  69. return false
  70. }
  71. return true
  72. }
  73. //查
  74. func (t *MePartgroup) SelectOne() (MePartgroup, error) {
  75. e := db.Eloquent.Master()
  76. var data MePartgroup
  77. _, err := e.ID(core.PK{t.Finr, t.Partgroupid, t.Projnr}).Get(&data)
  78. if err != nil {
  79. return data, err
  80. }
  81. return data, nil
  82. }
  83. //分页
  84. func (t *MePartgroup) GetPage(pageSize int, pageIndex int) ([]MePartgroup, int, error) {
  85. data := make([]MePartgroup, 0)
  86. e := db.Eloquent.Master()
  87. table := e.Table("me_partgroup").Where("finr = ? ", t.Finr)
  88. where := "where finr = " + "'" + utils.ValueToString(t.Finr, "") + "'"
  89. if t.Partgroupid != "" {
  90. table = table.And("partgroupid = ?", t.Partgroupid)
  91. where += " and partgroupid = " + "'" + utils.ValueToString(t.Partgroupid, "") + "'"
  92. }
  93. if t.Projnr != "" {
  94. table = table.And("projnr = ?", t.Projnr)
  95. where += " and projnr = " + "'" + utils.ValueToString(t.Projnr, "") + "'"
  96. }
  97. if t.Descr != "" {
  98. descr := "%" + t.Descr + "%"
  99. table = table.And("descr like ?", descr)
  100. where += " and descr like " + "'" + utils.ValueToString(descr, "") + "'"
  101. }
  102. Offset := (pageIndex - 1) * pageSize
  103. err := e.SQL("SELECT TOP " + utils.ValueToString(pageSize, "") + " me_partgroup.* FROM me_partgroup " + where + " AND (convert(varchar(10),finr)+convert(varchar(40),partgroupid)+convert(varchar(40),projnr) NOT IN (SELECT TOP " + utils.ValueToString(Offset, "") + " convert(varchar(10),finr)+convert(varchar(40),partgroupid)+convert(varchar(40),projnr) FROM me_partgroup " + where + " ORDER BY credatuz DESC)) ORDER BY credatuz DESC").Find(&data)
  104. pcount := new(MePartgroup)
  105. count, err := table.Count(pcount)
  106. if err != nil {
  107. return nil, 0, err
  108. }
  109. for k, _ := range data {
  110. data[k].Clipped()
  111. }
  112. return data, int(count), nil
  113. }
  114. type PartGroup struct {
  115. MePartgroup `xorm:"extends"`
  116. MePartAtcodlst `xorm:"extends"`
  117. MePart `xorm:"extends"`
  118. }
  119. //查询所有的模块名
  120. func (t *MePartgroup) SelectData() ([]MePartgroup, error) {
  121. e := db.Eloquent.Master()
  122. data := make([]MePartgroup, 0)
  123. //查询所有模块
  124. query := e.Table("me_partgroup").Where("finr = ?", t.Finr)
  125. if t.Projnr != "" {
  126. query = query.And("projnr = ?", t.Projnr)
  127. }
  128. err := query.Find(&data)
  129. if err != nil {
  130. return data, err
  131. }
  132. for k, _ := range data {
  133. data[k].Clipped()
  134. }
  135. return data, nil
  136. }