|
|
@@ -20,8 +20,8 @@ type ConverseController struct {
|
|
|
// beego.Controller
|
|
|
}
|
|
|
|
|
|
-//建立会话
|
|
|
-func (this *ConverseController) GetConnection(c *websocket.Conn) {
|
|
|
+// 建立会话
|
|
|
+func (ctrl *ConverseController) GetConnection(c *websocket.Conn) {
|
|
|
log.Println("建立会话")
|
|
|
svc := GetConverseService(utils.DBE)
|
|
|
utc := time.Now().UTC().Format(time.RFC3339)
|
|
|
@@ -30,11 +30,11 @@ func (this *ConverseController) GetConnection(c *websocket.Conn) {
|
|
|
msg, _ := json.Marshal(req)
|
|
|
log.Printf("session_setup: %s", msg)
|
|
|
|
|
|
- this.SendMessage(req, c)
|
|
|
+ ctrl.SendMessage(req, c)
|
|
|
}
|
|
|
|
|
|
// 查询样本库系统,进行接口任务处理
|
|
|
-func (this *ConverseController) SearchDatabase() map[string]*RequestEntity {
|
|
|
+func (ctrl *ConverseController) SearchDatabase() map[string]*RequestEntity {
|
|
|
log.Println("组装请求数据报文开始---")
|
|
|
svc := GetConverseService(utils.DBE)
|
|
|
asvc := arrangeService.GetArrangeService(utils.DBE)
|
|
|
@@ -76,7 +76,7 @@ func (this *ConverseController) SearchDatabase() map[string]*RequestEntity {
|
|
|
}
|
|
|
|
|
|
// 发送消息给接口服务
|
|
|
-func (this *ConverseController) SendMessage(req *RequestEntity, conn *websocket.Conn) {
|
|
|
+func (ctrl *ConverseController) SendMessage(req *RequestEntity, conn *websocket.Conn) {
|
|
|
err := conn.WriteJSON(&req)
|
|
|
if err != nil {
|
|
|
log.Println("write err:", err)
|
|
|
@@ -84,7 +84,7 @@ func (this *ConverseController) SendMessage(req *RequestEntity, conn *websocket.
|
|
|
}
|
|
|
|
|
|
// 根据子任务结果修改状态,子任务中有一个失败,则整个申请单为失败状态
|
|
|
-func (this *ConverseController) StatusModifyWithDetail(task_id string, res ResponseEntity) error {
|
|
|
+func (ctrl *ConverseController) StatusModifyWithDetail(task_id string, res ResponseEntity) error {
|
|
|
svc := GetConverseService(utils.DBE)
|
|
|
err := svc.StatusModifyWithDetail(task_id, res)
|
|
|
if err != nil {
|
|
|
@@ -94,7 +94,7 @@ func (this *ConverseController) StatusModifyWithDetail(task_id string, res Respo
|
|
|
}
|
|
|
|
|
|
// 修改任务状态码
|
|
|
-func (this *ConverseController) StatusModify(statusCode int, task_id string, reqType, msg string) error {
|
|
|
+func (ctrl *ConverseController) StatusModify(statusCode int, task_id string, reqType, msg string) error {
|
|
|
svc := GetConverseService(utils.DBE)
|
|
|
|
|
|
asvc := arrangeService.GetArrangeService(utils.DBE)
|
|
|
@@ -143,7 +143,7 @@ func (this *ConverseController) StatusModify(statusCode int, task_id string, req
|
|
|
}
|
|
|
|
|
|
// 修改 同步任务 任务状态码
|
|
|
-func (this *ConverseController) StatusModifyApply(statusCode int, task_id string, reqType, Rack_id, msg string) error {
|
|
|
+func (ctrl *ConverseController) StatusModifyApply(statusCode int, task_id string, reqType, Rack_id, msg string) error {
|
|
|
svc := GetConverseService(utils.DBE)
|
|
|
|
|
|
err := svc.ApplyTaskStatusModify(statusCode, task_id, Rack_id)
|
|
|
@@ -185,7 +185,7 @@ func (this *ConverseController) StatusModifyApply(statusCode int, task_id string
|
|
|
//}
|
|
|
|
|
|
// 处理基点接口返回的信息
|
|
|
-func (this *ConverseController) HandleMessage(message []byte) {
|
|
|
+func (ctrl *ConverseController) HandleMessage(message []byte) {
|
|
|
var res ResponseEntity
|
|
|
json.Unmarshal(message, &res)
|
|
|
|
|
|
@@ -207,6 +207,23 @@ func (this *ConverseController) HandleMessage(message []byte) {
|
|
|
}*/
|
|
|
|
|
|
var err error
|
|
|
+ // 任务变更接口
|
|
|
+ if resp == "task_change" {
|
|
|
+ var taskChange TaskChangeResp
|
|
|
+ err = json.Unmarshal(message, &taskChange)
|
|
|
+ if err != nil {
|
|
|
+ log.Println(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ err = ctrl.HandleTaskChange(taskChange)
|
|
|
+ if err != nil {
|
|
|
+ log.Println(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
//如果正常响应且任务执行成功则修改任务状态为成功
|
|
|
if result == 200 {
|
|
|
if taskType == "end" || taskType == "abnormal_end" {
|
|
|
@@ -214,7 +231,7 @@ func (this *ConverseController) HandleMessage(message []byte) {
|
|
|
|
|
|
//若非正常结束,保存异常信息
|
|
|
if taskType == "abnormal_end" {
|
|
|
- this.SaveExcepMsg(res, taskId, resp)
|
|
|
+ ctrl.SaveExcepMsg(res, taskId, resp)
|
|
|
}
|
|
|
// add by 徐春林 库内整理任务需要单独处理
|
|
|
if resp == "moving" {
|
|
|
@@ -227,38 +244,38 @@ func (this *ConverseController) HandleMessage(message []byte) {
|
|
|
|
|
|
// 所有入库单下子任务已完成,根据样本申请状态(有一个不为成功则更新为失败状态)更新申请单,任务状态
|
|
|
if isEnd {
|
|
|
- err = this.StatusModifyWithDetail(taskId, res)
|
|
|
+ err = ctrl.StatusModifyWithDetail(taskId, res)
|
|
|
}
|
|
|
}
|
|
|
//this.SampleAllStatusModify(res,SUCCESS)
|
|
|
} else if taskType == "task_activate" {
|
|
|
log.Println(">>>>>>>>>>任务[" + taskId + "]激活>>>>>>>>>>")
|
|
|
if res.Data.Status == 3 {
|
|
|
- err = this.StatusModify(REJECT, taskId, resp, res.Data.Msg)
|
|
|
+ err = ctrl.StatusModify(REJECT, taskId, resp, res.Data.Msg)
|
|
|
} else if res.Data.Status == 6 || res.Data.Status == 7 {
|
|
|
- err = this.StatusModify(RUNNING, taskId, resp, res.Data.Msg)
|
|
|
+ err = ctrl.StatusModify(RUNNING, taskId, resp, res.Data.Msg)
|
|
|
} else {
|
|
|
- err = this.StatusModify(ACTIVE, taskId, resp, res.Data.Msg)
|
|
|
+ err = ctrl.StatusModify(ACTIVE, taskId, resp, res.Data.Msg)
|
|
|
}
|
|
|
} else if taskType == "accept" {
|
|
|
log.Println(">>>>>>>>>>任务[" + taskId + "]接受>>>>>>>>>>")
|
|
|
- err = this.StatusModify(ACCEPT, taskId, resp, "")
|
|
|
+ err = ctrl.StatusModify(ACCEPT, taskId, resp, "")
|
|
|
} else if taskType == "running" {
|
|
|
log.Println(">>>>>>>>>>任务[" + taskId + "]执行中>>>>>>>>>>")
|
|
|
- err = this.StatusModify(RUNNING, taskId, resp, res.Data.Msg)
|
|
|
+ err = ctrl.StatusModify(RUNNING, taskId, resp, res.Data.Msg)
|
|
|
} else if taskType == "rack_retrieving" {
|
|
|
log.Println(">>>>>>>>>>任务[" + taskId + "]执行中>>>>>>>>>>")
|
|
|
- err = this.StatusModify(RACKRETRIEVING, taskId, resp, res.Data.Msg)
|
|
|
+ err = ctrl.StatusModify(RACKRETRIEVING, taskId, resp, res.Data.Msg)
|
|
|
}
|
|
|
// 执行过程返回响应报文的处理
|
|
|
if resp == "task_activate" {
|
|
|
log.Println(">>>>>>>>>>任务[" + taskId + "] 响应处理>>>>>>>")
|
|
|
if res.Data.Status == 3 {
|
|
|
- err = this.StatusModify(REJECT, taskId, resp, res.Data.Msg)
|
|
|
+ err = ctrl.StatusModify(REJECT, taskId, resp, res.Data.Msg)
|
|
|
} else if res.Data.Status == 6 || res.Data.Status == 7 {
|
|
|
- err = this.StatusModify(RUNNING, taskId, resp, res.Data.Msg)
|
|
|
+ err = ctrl.StatusModify(RUNNING, taskId, resp, res.Data.Msg)
|
|
|
} else {
|
|
|
- err = this.StatusModify(ACTIVE, taskId, resp, res.Data.Msg)
|
|
|
+ err = ctrl.StatusModify(ACTIVE, taskId, resp, res.Data.Msg)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -280,11 +297,11 @@ func (this *ConverseController) HandleMessage(message []byte) {
|
|
|
} else if result == 300 && taskType == "reject" {
|
|
|
log.Println("----------任务[" + taskId + "]任务拒绝----------")
|
|
|
//保存异常信息
|
|
|
- this.SaveExcepMsg(res, taskId, resp)
|
|
|
- err = this.StatusModify(REJECT, taskId, resp, res.Data.Causes[0].Msg)
|
|
|
+ ctrl.SaveExcepMsg(res, taskId, resp)
|
|
|
+ err = ctrl.StatusModify(REJECT, taskId, resp, res.Data.Causes[0].Msg)
|
|
|
// 判断如果为盒操作, 需要将 盒解锁, 重新执行时再上锁
|
|
|
if resp == "rack_storing" || resp == "rack_retrieving" {
|
|
|
- err = this.UpdateBoxIsLocked(taskId)
|
|
|
+ err = ctrl.UpdateBoxIsLocked(taskId)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -292,7 +309,7 @@ func (this *ConverseController) HandleMessage(message []byte) {
|
|
|
log.Println(err)
|
|
|
}
|
|
|
}
|
|
|
-func (this *ConverseController) UpdateBoxIsLocked(taskId string) error {
|
|
|
+func (ctrl *ConverseController) UpdateBoxIsLocked(taskId string) error {
|
|
|
svc := GetConverseService(utils.DBE)
|
|
|
err := svc.UpdateBoxIsLocked(taskId)
|
|
|
if err != nil {
|
|
|
@@ -301,8 +318,8 @@ func (this *ConverseController) UpdateBoxIsLocked(taskId string) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-//保存异常信息
|
|
|
-func (this *ConverseController) SaveExcepMsg(res ResponseEntity, taskId, reqType string) {
|
|
|
+// 保存异常信息
|
|
|
+func (ctrl *ConverseController) SaveExcepMsg(res ResponseEntity, taskId, reqType string) {
|
|
|
svc := GetConverseService(utils.DBE)
|
|
|
//causeByte,_ := json.Marshal(res.Data.Causes)
|
|
|
//causeMsg := string(causeByte)
|
|
|
@@ -341,8 +358,8 @@ func (this *ConverseController) SaveExcepMsg(res ResponseEntity, taskId, reqType
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//清理已完成任务信息
|
|
|
-func (this *ConverseController) DeleteAccomplishedTask() error {
|
|
|
+// 清理已完成任务信息
|
|
|
+func (ctrl *ConverseController) DeleteAccomplishedTask() error {
|
|
|
where := "statuscode = '" + strconv.Itoa(SUCCESS) + "'"
|
|
|
svc := GetConverseService(utils.DBE)
|
|
|
err := svc.DeleteEntityBytbl(TABLE_TAST, where)
|
|
|
@@ -353,3 +370,51 @@ func (this *ConverseController) DeleteAccomplishedTask() error {
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+// HandleTaskChange 处理任务变更
|
|
|
+func (ctrl *ConverseController) HandleTaskChange(resp TaskChangeResp) error {
|
|
|
+ var err error
|
|
|
+ statusCode := SUCCESS
|
|
|
+ taskId := resp.Data.TaskId
|
|
|
+
|
|
|
+ if resp.Data.Type == "reject" { // 任务拒绝
|
|
|
+ asvc := arrangeService.GetArrangeService(utils.DBE)
|
|
|
+ msg := "[任务变更被拒绝]"
|
|
|
+ if resp.Data.Status == 3 {
|
|
|
+ msg = msg + ": 任务重启"
|
|
|
+ }
|
|
|
+ if resp.Data.Status == 5 {
|
|
|
+ msg = msg + ": 暂停任务"
|
|
|
+ }
|
|
|
+ err = asvc.SaveArrangeExcepMsg(msg, taskId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ statusCode = REJECT
|
|
|
+ }
|
|
|
+ if resp.Data.Type == "accept" { // 接受报文
|
|
|
+ statusCode = ACCEPT
|
|
|
+ }
|
|
|
+ if resp.Data.Type == "status_change" { // 执行结果
|
|
|
+ switch resp.Data.Status {
|
|
|
+ case 1, 17, 19, 20, 22:
|
|
|
+ statusCode = SUCCESS
|
|
|
+ case 3, 4, 15, 16, 18:
|
|
|
+ statusCode = RUNNING
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ svc := GetConverseService(utils.DBE)
|
|
|
+ // 修改任务表任务状态
|
|
|
+ err = svc.TaskStatusModify(statusCode, taskId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ if statusCode == SUCCESS {
|
|
|
+ // 修改整理表的状态
|
|
|
+ asvc := arrangeService.GetArrangeService(utils.DBE)
|
|
|
+ err = asvc.ArrangeMainStatusModify(PAUSE, taskId, "")
|
|
|
+ }
|
|
|
+ return err
|
|
|
+}
|