workprocess.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package workprocess
  2. import (
  3. "errors"
  4. "zhiyuan/models"
  5. "zhiyuan/pkg/app"
  6. "zhiyuan/pkg/db"
  7. "zhiyuan/services/form"
  8. )
  9. var WorkProcess models.WorkProcess
  10. func Add(form form.WorkProcessAdd) (int64, error) {
  11. if CheckWorkProcessDuplicate(form.NodeId, form.Name) {
  12. return 0, errors.New("工序已存在")
  13. }
  14. workProcessMap := map[string]interface{}{
  15. "`node_id`": form.NodeId,
  16. "`name`": form.Name,
  17. "`state`": form.State,
  18. }
  19. workProcessID, err := db.InsertOne(WorkProcess.TableName(), workProcessMap)
  20. if err != nil {
  21. return 0, nil
  22. }
  23. return workProcessID, nil
  24. }
  25. func EditByID(form form.WorkProcessAdd, id int) error {
  26. info, err := GetInfoByID(id, nil, nil)
  27. if info == nil {
  28. return errors.New("invalid id")
  29. }
  30. if info.Name != form.Name && CheckWorkProcessDuplicate(form.NodeId, form.Name) {
  31. return errors.New("工序已存在")
  32. }
  33. workProcessMap := map[string]interface{}{
  34. "`node_id`": form.NodeId,
  35. "`name`": form.Name,
  36. "`state`": form.State,
  37. }
  38. _, err = db.Update(WorkProcess.TableName(), map[string]interface{}{"id": id}, workProcessMap)
  39. return err
  40. }
  41. func DeleteByID(id int) error {
  42. info, _ := GetInfoByID(id, nil, nil)
  43. if info == nil {
  44. return errors.New("invalid id")
  45. }
  46. _, err := db.DeleteSoft(WorkProcess.TableName(), map[string]interface{}{"id": id})
  47. return err
  48. }
  49. func Count(where map[string]interface{}) (int64, error) {
  50. return db.Count(WorkProcess.TableName(), where)
  51. }
  52. func CountRaw(where string, param map[string]interface{}) (int64, error) {
  53. query := "`zy_work_process` WHERE " + where
  54. return db.CountRaw(query, param)
  55. }
  56. func GetList(where map[string]interface{}, fields []string, page app.Page, retVal interface{}) ([]*models.WorkProcess, error) {
  57. if page.PageNum > 0 && page.PageSize > 0 {
  58. where["_limit"] = db.GetOffset(uint(page.PageNum), uint(page.PageSize))
  59. }
  60. return WorkProcess.GetMulti(where, fields, retVal)
  61. }
  62. func GetWorkProcesssRaw(where map[string]string, param map[string]interface{}, retVal interface{}) ([]*models.WorkProcess, error) {
  63. return WorkProcess.GetMultiRaw(where, param, retVal)
  64. }
  65. func GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*models.WorkProcess, error) {
  66. return WorkProcess.GetOne(where, fields, retVal)
  67. }
  68. func GetInfoByID(id int, fields []string, retVal interface{}) (*models.WorkProcess, error) {
  69. return GetOne(map[string]interface{}{"id": id}, fields, retVal)
  70. }
  71. func CheckWorkProcessDuplicate(nodeId int, name string) bool {
  72. workProcessInfo, err := GetOne(map[string]interface{}{"node_id": nodeId, "name": name, "deleted_at": 0}, nil, nil)
  73. return workProcessInfo != nil && err == nil
  74. }