work_order.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package model
  2. import (
  3. "kpt-pasture/http/util"
  4. "strconv"
  5. "strings"
  6. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  7. )
  8. type WorkOrder struct {
  9. Id int64 `json:"id"`
  10. Name string `json:"name"`
  11. CategoryId pasturePb.WorkOrderCategory_Kind `json:"categoryId"`
  12. CategoryName string `json:"categoryName"`
  13. Priority pasturePb.Priority_Kind `json:"priority"`
  14. Frequency pasturePb.WorkOrderFrequency_Kind `json:"frequency"`
  15. ExecTime string `json:"execTime"`
  16. SubscribeUnit pasturePb.WorkOrderSubscribeUnit_Kind `json:"subscribeUnit"`
  17. ExecPersons string `json:"execPersons"`
  18. ExecPersonNames string `json:"execPersonsNames"`
  19. ExecDepartmental string `json:"execDepartmental"`
  20. ExecDepartmentalNames string `json:"execDepartmentalNames"`
  21. WeekMonthValue string `json:"WeekMonthValue"`
  22. IsShow pasturePb.IsShow_Kind `json:"isShow"`
  23. Photos string `json:"photos"`
  24. Remarks string `json:"remarks"`
  25. OperationId int64 `json:"operationId"`
  26. OperationName string `json:"operationName"`
  27. CreatedAt int64 `json:"createdAt"`
  28. UpdatedAt int64 `json:"updatedAt"`
  29. }
  30. func (w *WorkOrder) TableName() string {
  31. return "work_order"
  32. }
  33. func NewWorkOrder(
  34. req *pasturePb.WorkOrderList,
  35. curUser *SystemUser,
  36. systemUserList []*SystemUser,
  37. deptList []*SystemDept,
  38. workOrderCategoryMap map[pasturePb.WorkOrderCategory_Kind]string,
  39. ) *WorkOrder {
  40. execPersonNames := make([]string, 0)
  41. execDeptNames := make([]string, 0)
  42. if len(req.ExecPersons) > 0 {
  43. for _, v := range req.ExecPersons {
  44. for _, vv := range systemUserList {
  45. if int32(vv.Id) != v {
  46. continue
  47. }
  48. execPersonNames = append(execPersonNames, vv.Name)
  49. }
  50. }
  51. }
  52. for _, d := range deptList {
  53. for _, dd := range req.ExecDepartmental {
  54. if int32(d.Id) != dd {
  55. continue
  56. }
  57. execDeptNames = append(execDeptNames, d.Name)
  58. }
  59. }
  60. weekMonthValue := ""
  61. if req.Frequency == pasturePb.WorkOrderFrequency_Weekly || req.Frequency == pasturePb.WorkOrderFrequency_Monthly {
  62. weekMonthValue = util.Int32SliceToString(req.WeekMonthValue, ",")
  63. }
  64. return &WorkOrder{
  65. Name: req.Name,
  66. CategoryId: req.CategoryId,
  67. CategoryName: workOrderCategoryMap[req.CategoryId],
  68. Priority: req.Priority,
  69. ExecTime: req.ExecTime,
  70. SubscribeUnit: req.SubscribeUnit,
  71. ExecPersons: util.Int32SliceToString(req.ExecPersons, ","),
  72. ExecPersonNames: strings.Join(execPersonNames, ","),
  73. ExecDepartmental: util.Int32SliceToString(req.ExecDepartmental, ","),
  74. ExecDepartmentalNames: strings.Join(execDeptNames, ","),
  75. WeekMonthValue: weekMonthValue,
  76. IsShow: req.IsShow,
  77. Photos: strings.Join(req.Photos, ","),
  78. Frequency: req.Frequency,
  79. Remarks: req.Remarks,
  80. OperationId: curUser.Id,
  81. OperationName: curUser.Name,
  82. }
  83. }
  84. type WorkOrderSlice []*WorkOrder
  85. func (w WorkOrderSlice) ToPB(
  86. priorityMap map[pasturePb.Priority_Kind]string,
  87. frequencyMap map[pasturePb.WorkOrderFrequency_Kind]string,
  88. subscribeUnitMap map[pasturePb.WorkOrderSubscribeUnit_Kind]string,
  89. weekMap map[pasturePb.Week_Kind]string,
  90. monthMap map[int32]string,
  91. ) []*pasturePb.WorkOrderList {
  92. res := make([]*pasturePb.WorkOrderList, len(w))
  93. for i, v := range w {
  94. execPersons, execDepartmental, weekMonthValue := make([]int32, 0), make([]int32, 0), make([]int32, 0)
  95. weekMonthValueName := make([]string, 0)
  96. if len(v.ExecPersons) > 0 {
  97. for _, personId := range strings.Split(v.ExecPersons, ",") {
  98. p, _ := strconv.Atoi(personId)
  99. execPersons = append(execPersons, int32(p))
  100. }
  101. }
  102. if len(v.ExecDepartmental) > 0 {
  103. for _, deptId := range strings.Split(v.ExecDepartmental, ",") {
  104. d, _ := strconv.Atoi(deptId)
  105. execDepartmental = append(execDepartmental, int32(d))
  106. }
  107. }
  108. if len(v.WeekMonthValue) > 0 {
  109. for _, week := range strings.Split(v.WeekMonthValue, ",") {
  110. k, _ := strconv.Atoi(week)
  111. if v.Frequency == pasturePb.WorkOrderFrequency_Weekly {
  112. weekMonthValueName = append(weekMonthValueName, weekMap[pasturePb.Week_Kind(k)])
  113. }
  114. if v.Frequency == pasturePb.WorkOrderFrequency_Monthly {
  115. weekMonthValueName = append(weekMonthValueName, monthMap[int32(k)])
  116. }
  117. weekMonthValue = append(weekMonthValue, int32(k))
  118. }
  119. }
  120. res[i] = &pasturePb.WorkOrderList{
  121. Id: int32(v.Id),
  122. Name: v.Name,
  123. CategoryId: v.CategoryId,
  124. CategoryName: v.CategoryName,
  125. Priority: v.Priority,
  126. PriorityName: priorityMap[v.Priority],
  127. Frequency: v.Frequency,
  128. FrequencyName: frequencyMap[v.Frequency],
  129. ExecTime: v.ExecTime,
  130. SubscribeUnit: v.SubscribeUnit,
  131. SubscribeUnitName: subscribeUnitMap[v.SubscribeUnit],
  132. ExecPersons: execPersons,
  133. ExecPersonsNames: strings.Split(v.ExecPersonNames, ","),
  134. ExecDepartmental: execDepartmental,
  135. ExecDepartmentalNames: strings.Split(v.ExecDepartmental, ","),
  136. IsShow: v.IsShow,
  137. Photos: strings.Split(v.Photos, ","),
  138. WeekMonthValue: weekMonthValue,
  139. WeekMonthValueName: weekMonthValueName,
  140. Remarks: v.Remarks,
  141. OperatorId: int32(v.OperationId),
  142. OperatorName: v.OperationName,
  143. CreatedAt: int32(v.CreatedAt),
  144. UpdatedAt: int32(v.UpdatedAt),
  145. }
  146. }
  147. return res
  148. }