Browse Source

2023-11-29 工单系统优化

zoie 1 year ago
parent
commit
37ac98d273
3 changed files with 112 additions and 28 deletions
  1. 25 8
      controllers/WorkOrder.go
  2. 10 0
      models/Account/Admin.go
  3. 77 20
      models/WorkOrder/WorkOrder.go

+ 25 - 8
controllers/WorkOrder.go

@@ -78,6 +78,10 @@ func (c *WorkOrderController) User_List() {
 	}
 
 	var cnt int64
+	var Company_list []Account.Company
+	Company_list = Nats.CompanyListAllByT_name("")
+	Account.Read_Admin_All_Map(Nats.UserListAll())
+	Account.Read_Company_All_Map(Company_list)
 	List, cnt := WorkOrder.Read_UserWorkOrder_List(c.User_r, c.T_pid, page, page_z)
 
 	page_size := math.Ceil(float64(cnt) / float64(page_z))
@@ -92,7 +96,7 @@ func (c *WorkOrderController) User_List() {
 	return
 }
 
-// 标签修改-
+// 标签查询-
 func (c *WorkOrderController) Get() {
 	Id, err := c.GetInt("Id")
 	if err != nil || Id == 0 {
@@ -102,12 +106,12 @@ func (c *WorkOrderController) Get() {
 	}
 	r, err := WorkOrder.Read_WorkOrder_ById(Id)
 	if err != nil {
-		c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败!"}
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
 		c.ServeJSON()
 		return
 	}
 
-	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r}
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: WorkOrder.WorkOrderToWorkOrder_(r)}
 	c.ServeJSON()
 	return
 }
@@ -127,7 +131,7 @@ func (c *WorkOrderController) Add() {
 		T_pid:   c.User_r.T_pid,
 		T_title: T_title,
 		T_text:  T_text,
-		T_State: 2, // 1 已解决 2 未解决
+		T_State: 2, // 1 已处理 2 待处理
 	}
 	Id, err := WorkOrder.Add_WorkOrder(var_)
 	if err != nil {
@@ -151,9 +155,10 @@ func (c *WorkOrderController) Up() {
 		c.ServeJSON()
 		return
 	}
-	T_title := c.GetString("T_title")
-	T_text := c.GetString("T_text")
-	T_handle, T_handle_err := c.GetInt("T_handle")
+	T_title := c.GetString("T_title")              // 工单标题
+	T_text := c.GetString("T_text")                // 工单详情
+	T_handle, T_handle_err := c.GetInt("T_handle") // 处理状态 1-已处理 3-已回访
+	T_info := c.GetString("T_info")
 	r, err := WorkOrder.Read_WorkOrder_ById(Id)
 	if err != nil {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
@@ -162,18 +167,30 @@ func (c *WorkOrderController) Up() {
 	}
 
 	// .......
+	cols := []string{}
 	if len(T_title) > 0 {
 		r.T_title = T_title
+		cols = append(cols, "T_title")
 	}
 	if len(T_text) > 0 {
 		r.T_text = T_text
+		cols = append(cols, "T_text")
 	}
 	if T_handle_err == nil {
 		r.T_State = T_handle
+		cols = append(cols, "T_State")
+		if r.T_State == 1 {
+			r.T_deal_with = WorkOrder.UpdateWorkOrderInfoToString(r.T_deal_with, T_info, c.User_r.T_uuid)
+			cols = append(cols, "T_deal_with")
+		}
+		if r.T_State == 3 {
+			r.T_callback = WorkOrder.UpdateWorkOrderInfoToString(r.T_callback, T_info, c.User_r.T_uuid)
+			cols = append(cols, "T_callback")
+		}
 	}
 
 	// .......
-	if !WorkOrder.Update_WorkOrder(r, "T_title", "T_text", "T_State") {
+	if !WorkOrder.Update_WorkOrder(r, cols...) {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
 		c.ServeJSON()
 		return

+ 10 - 0
models/Account/Admin.go

@@ -52,3 +52,13 @@ func Read_User_T_phone_Get(T_uuid string) string {
 		return ""
 	}
 }
+
+func Read_User_T_pid_Get(T_uuid string) int {
+	// 有先加入 给全部人发消息
+	v, ok := AdminMap.Load(T_uuid)
+	if ok {
+		return v.(User).T_pid
+	} else {
+		return 0
+	}
+}

+ 77 - 20
models/WorkOrder/WorkOrder.go

@@ -5,6 +5,7 @@ import (
 	"Cold_WorkOrder/lib"
 	"Cold_WorkOrder/logs"
 	"Cold_WorkOrder/models/Account"
+	"encoding/json"
 	"fmt"
 	"github.com/beego/beego/v2/adapter/orm"
 	orm2 "github.com/beego/beego/v2/client/orm"
@@ -14,31 +15,44 @@ import (
 
 // 模板
 type WorkOrder struct {
-	Id         int       `orm:"column(ID);size(11);auto;pk"`
-	T_uuid     string    `orm:"size(50);null"`                                         // 提交人uuid
-	T_pid      int       `orm:"index;size(256);null"`                                  // Account.Company 绑定公司
-	T_title    string    `orm:"size(256);null"`                                        // 标题
-	T_text     string    `orm:"type(text);null"`                                       // 详情
-	T_State    int       `orm:"size(2);default(1)"`                                    // 0 删除   1 已解决 2 未解决
-	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
-	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
+	Id          int       `orm:"column(ID);size(11);auto;pk"`
+	T_uuid      string    `orm:"size(50);null"`                                         // 提交人uuid
+	T_pid       int       `orm:"index;size(256);null"`                                  // Account.Company 绑定公司
+	T_title     string    `orm:"size(256);null"`                                        // 标题
+	T_text      string    `orm:"type(text);null"`                                       // 详情
+	T_deal_with string    `orm:"type(text);null"`                                       // 工单处理信息 处理信息,处理人,处理时间|处理信息,处理人,处理时间|
+	T_callback  string    `orm:"type(text);null"`                                       // 工单回访信息 回访信息,回访人,回访时间|回访信息,回访人,回访时间|
+	T_State     int       `orm:"size(2);default(1)"`                                    // 0 删除  1 已处理 2 待处理 3 已回访
+	CreateTime  time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
+	UpdateTime  time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
 }
 type WorkOrder_R struct {
-	Id      int    // ID
-	T_title string // 标题
-	T_text  string // 详情
-	T_State int    // 0 删除   1 已解决 2 未解决
+	Id             int             // ID
+	T_name         string          // 用户名
+	T_phone        string          // 电话
+	T_Company_name string          // 公司名
+	T_title        string          // 标题
+	T_text         string          // 详情
+	T_State        int             // 0 删除 1 已处理 2 待处理 3 已回访
+	T_deal_with    []WorkOrderInfo // 处理信息
+	T_callback     []WorkOrderInfo // 回访信息
+	CreateTime     string          // 创建时间
+	UpdateTime     string          // 更新时间
 }
 
 type WorkOrder_ struct {
-	Id             int    // ID
-	T_uuid         string // 用户uuid
-	T_name         string // 用户名
-	T_phone        string // 电话
-	T_Company_name string // 公司名
-	T_title        string // 标题
-	T_text         string // 详情
-	T_State        int    // 状态 0 删除  1 已解决 2 未解决
+	Id             int             // ID
+	T_uuid         string          // 用户uuid
+	T_name         string          // 用户名
+	T_phone        string          // 电话
+	T_Company_name string          // 公司名
+	T_title        string          // 标题
+	T_text         string          // 详情
+	T_State        int             // 状态 0 删除  1 已处理 2 待处理 3 已回访
+	T_deal_with    []WorkOrderInfo // 处理信息
+	T_callback     []WorkOrderInfo // 回访信息
+	CreateTime     string          // 创建时间
+	UpdateTime     string          // 更新时间
 }
 
 func (t *WorkOrder) TableName() string {
@@ -48,14 +62,53 @@ func (t *WorkOrder) TableName() string {
 func init() {
 	//注册模型
 	orm.RegisterModel(new(WorkOrder))
+}
+
+type WorkOrderInfo struct {
+	T_text         string // 处理信息
+	T_uuid         string // 处理人
+	T_name         string // 处理人名称
+	T_Company_name string // 处理人公司
+	T_time         string // 处理时间
+}
+
+func UpdateWorkOrderInfoToString(oldInfo, T_info, T_uuid string) string {
+	var list []WorkOrderInfo
+	_ = json.Unmarshal([]byte(oldInfo), &list)
+	workOrderInfo := WorkOrderInfo{T_text: T_info, T_uuid: T_uuid, T_time: time.Now().Format("2006-01-02 15:04:05")}
+	list = append(list, workOrderInfo)
+	listJson, _ := json.Marshal(list)
+	return string(listJson)
+}
 
+func StringToWorkOrderInfoList(info string) []WorkOrderInfo {
+	var list []WorkOrderInfo
+	_ = json.Unmarshal([]byte(info), &list)
+	for i := 0; i < len(list); i++ {
+		list[i].T_name = Account.Read_User_T_name_Get(list[i].T_uuid)
+		pid := Account.Read_User_T_pid_Get(list[i].T_uuid)
+		if pid == 0 {
+			list[i].T_Company_name = "宝智达"
+		} else {
+			list[i].T_Company_name = Account.Read_Company_T_name_Get(pid)
+		}
+
+	}
+	return list
 }
 
 func WorkOrderToWorkOrder_R(t WorkOrder) (r WorkOrder_R) {
+	r.T_Company_name = Account.Read_Company_T_name_Get(t.T_pid)
+	r.T_name = Account.Read_User_T_name_Get(t.T_uuid)
+	r.T_phone = Account.Read_User_T_phone_Get(t.T_uuid)
 	r.Id = t.Id
 	r.T_title = t.T_title
 	r.T_text = t.T_text
 	r.T_State = t.T_State
+	r.T_deal_with = StringToWorkOrderInfoList(t.T_deal_with)
+	r.T_callback = StringToWorkOrderInfoList(t.T_callback)
+	r.CreateTime = t.CreateTime.Format("2006-01-02 15:04:05")
+	r.UpdateTime = t.UpdateTime.Format("2006-01-02 15:04:05")
 	return
 }
 
@@ -68,6 +121,10 @@ func WorkOrderToWorkOrder_(t WorkOrder) (r WorkOrder_) {
 	r.T_title = t.T_title
 	r.T_text = t.T_text
 	r.T_State = t.T_State
+	r.T_deal_with = StringToWorkOrderInfoList(t.T_deal_with)
+	r.T_callback = StringToWorkOrderInfoList(t.T_callback)
+	r.CreateTime = t.CreateTime.Format("2006-01-02 15:04:05")
+	r.UpdateTime = t.UpdateTime.Format("2006-01-02 15:04:05")
 	return
 }