瀏覽代碼

feature:基点任务变更

liran 1 年之前
父節點
當前提交
7882228921

+ 23 - 7
src/dashoo.cn/genepoint_srv/business/converseService/converse.go

@@ -14,6 +14,7 @@ const RUNNING = 6
 const REJECT = 7
 const EXCEPTION = 8
 const RACKRETRIEVING = 9
+const PAUSE = 70 // 任务变更的暂停状态
 
 const SAMPLE_STATUS_OUT = 5
 const SAMPLE_STATUS_IN = 2
@@ -55,6 +56,7 @@ type RequestData struct {
 	Pos            int           `json:"pos,omitempty"`
 	Name           string        `json:"name"`
 	Initiator      string        `json:"initiator"`
+	OrderTime      string        `json:"order_time,omitempty"`
 }
 
 type ResponseData struct {
@@ -96,14 +98,14 @@ type List_Data struct {
 	Rack_id string `json:"rack_id,omitempty"`
 }
 
-//type Result_data struct {
-//	Rack 			int 		`json:"rack,omitempty"`
-//	Rack_id  	    string 		`json:"rack_id,omitempty"`
-//	Tube 			int			`json:"tube,omitempty"`
-//	Target			Target		`json:"target,omitempty"`
-//	Tubes			[]Tube		`json:"tubes,omitempty"`
+//	type Result_data struct {
+//		Rack 			int 		`json:"rack,omitempty"`
+//		Rack_id  	    string 		`json:"rack_id,omitempty"`
+//		Tube 			int			`json:"tube,omitempty"`
+//		Target			Target		`json:"target,omitempty"`
+//		Tubes			[]Tube		`json:"tubes,omitempty"`
 //
-//}
+// }
 type Abmormal_data struct {
 	Racks []Single
 	Tubes []Single
@@ -395,3 +397,17 @@ type List struct {
 	No int    `json:"no"`
 	Id string `json:"id"`
 }
+
+// TaskChangeResp 任务变更返回结构体信息
+type TaskChangeResp struct {
+	Response string             `json:"response"`
+	Result   int                `json:"result"`
+	Time     string             `json:"time"`
+	Data     TaskChangeDataResp `json:"data,omitempty"`
+}
+
+type TaskChangeDataResp struct {
+	Type   string `json:"type"`
+	TaskId string `json:"task_id"`
+	Status int    `json:"status"`
+}

+ 45 - 37
src/dashoo.cn/genepoint_srv/business/converseService/converseService.go

@@ -71,7 +71,7 @@ func (this *ConverseService) GetSessionSetupRequest(utc string) *RequestEntity {
 	return entity
 }
 
-//生成请求报文
+// 生成请求报文
 func (this *ConverseService) GetRequestEntity(request string, utc string, data RequestData) *RequestEntity {
 	var entity RequestEntity
 	entity.Request = request
@@ -93,7 +93,7 @@ func (this *ConverseService) GetKeyBaseOnTime(utc string) string {
 	return resultKey
 }
 
-//查询库存冻存盒信息
+// 查询库存冻存盒信息
 func (this *ConverseService) CheckStockRackInfo(cu int, rack_id string, utc string) *RequestEntity {
 	var request = "stock_rack"
 	var data RequestData
@@ -103,7 +103,7 @@ func (this *ConverseService) CheckStockRackInfo(cu int, rack_id string, utc stri
 	return entity
 }
 
-//查询库存冻存管信息
+// 查询库存冻存管信息
 func (this *ConverseService) CheckStockTubeInfo(cu int, rack_id, tube_id, utc string) *RequestEntity {
 	var request = "stock_rack_tube"
 	var data RequestData
@@ -114,7 +114,7 @@ func (this *ConverseService) CheckStockTubeInfo(cu int, rack_id, tube_id, utc st
 	return entity
 }
 
-//任务撤销
+// 任务撤销
 func (this *ConverseService) CancelTast(utc string, task_id string) *RequestEntity {
 	var request = "task_change"
 	var data RequestData
@@ -124,7 +124,7 @@ func (this *ConverseService) CancelTast(utc string, task_id string) *RequestEnti
 	return entity
 }
 
-//扫描新任务
+// 扫描新任务
 func (this *ConverseService) ScanNewTaskDetail() []Sample_Storage_Task {
 	var tasks []Sample_Storage_Task
 	where := "statuscode = 0"
@@ -141,7 +141,7 @@ func (this *ConverseService) GetOperUser(EntryNo string) (user string) {
 	return user
 }
 
-//新任务数量
+// 新任务数量
 func (this *ConverseService) GetNewTaskBasic() []Sample_Storage_Task {
 	//var count64 int64
 	var tasks []Sample_Storage_Task
@@ -247,7 +247,7 @@ func (this *ConverseService) HandleTaskDetail(taskType int, entity *RequestEntit
 	}
 }
 
-//处理冻存盒入库任务信息
+// 处理冻存盒入库任务信息
 func handleRackStore(entity *RequestEntity, detail *Sample_Storage_Task) {
 	var ones = make([]Single, 0)
 	var exist bool
@@ -292,7 +292,7 @@ func handleRackStore(entity *RequestEntity, detail *Sample_Storage_Task) {
 	entity.Data.Task_data = ones
 }
 
-//处理冻存盒出库任务信息
+// 处理冻存盒出库任务信息
 func handleRackRetrieve(entity *RequestEntity, detail *Sample_Storage_Task) {
 	var ones []Single
 	var one Single
@@ -311,7 +311,7 @@ func handleRackRetrieve(entity *RequestEntity, detail *Sample_Storage_Task) {
 	entity.Data.Task_data = ones
 }
 
-//处理冻存管入库任务信息
+// 处理冻存管入库任务信息
 func handleTubeStore(entity *RequestEntity, detail *Sample_Storage_Task) {
 	var ones []Single
 	var exist bool
@@ -372,7 +372,7 @@ label:
 	entity.Data.Task_data = ones
 }
 
-//处理冻存管出库任务信息
+// 处理冻存管出库任务信息
 func handleTubeRetrieve(entity *RequestEntity, detail *Sample_Storage_Task) {
 	var one OutSingle
 	//var exist bool
@@ -393,18 +393,25 @@ func handleTubeRetrieve(entity *RequestEntity, detail *Sample_Storage_Task) {
 	entity.Data.Task_data = one
 }
 
-//任务撤销
+// 任务变更
 func handleTaskChange(entity *RequestEntity, detail *Sample_Storage_Task) {
-	entity.Data.Status = detail.Status
+	if detail.Status == 703 {
+		entity.Data.Status = 3 //任务重启
+	}
+	if detail.Status == 705 {
+		entity.Data.Status = 5 // 暂停任务
+	}
+	entity.Data.Task_id = detail.Task_id
+	entity.Data.OrderTime = time.Now().UTC().Format(time.RFC3339)
 }
 
-//查询冻存盒库存信息
+// 查询冻存盒库存信息
 func handleQueryRack(entity *RequestEntity, detail *Sample_Storage_Task) {
 	entity.Data.Cu = detail.Cu
 	entity.Data.Rack_id = detail.BoxBarcode
 }
 
-//查询冻存管库存信息
+// 查询冻存管库存信息
 func handleQueryTube(entity *RequestEntity, detail *Sample_Storage_Task) {
 	entity.Data.Rack_id = detail.BoxBarcode
 	entity.Data.Tube_id = detail.BarCode
@@ -497,7 +504,7 @@ func (this *ConverseService) StatusModifyWithDetail(task_id string, res Response
 	return err
 }
 
-//修改任务表状态码
+// 修改任务表状态码
 func (this *ConverseService) TaskStatusModify(statusCode int, task_id string) error {
 	sql := "UPDATE " + TABLE_TAST + " SET statuscode = '" + strconv.Itoa(statusCode) + "'   WHERE task_id = '" + task_id + "'"
 	_, err := this.DBE.Exec(sql)
@@ -527,7 +534,7 @@ func (this *ConverseService) SampleApplyStatusModify(statusCode int, entryNo, ms
 	return err
 }
 
-//2020/12/18新增  根据当前任务报文返回状态批量更新当前任务下所有的样本状态
+// 2020/12/18新增  根据当前任务报文返回状态批量更新当前任务下所有的样本状态
 func (this *ConverseService) SampleApplyDetailStatusModify(statusCode int, entryNo string) error {
 
 	//获取出入库单Id
@@ -543,7 +550,7 @@ func (this *ConverseService) SampleApplyDetailStatusModify(statusCode int, entry
 	return err
 }
 
-//任务执行驳回, 修改全部样本失败状态
+// 任务执行驳回, 修改全部样本失败状态
 func (this *ConverseService) ModifySampleAllRejectStatus(res ResponseEntity) error {
 	//获取出入库单Id
 	getId := "SELECT id FROM " + TABLE_SAMPLE_APPLY + " WHERE entryno = '" + res.Data.Task_id + "'"
@@ -573,7 +580,7 @@ func (this *ConverseService) handleSampleFailed(idsStr string, response string,
 
 }
 
-//处理样本执行成功状态
+// 处理样本执行成功状态
 func (this *ConverseService) handleSampleSuccess(idsStr string, response string, applyMainId int) {
 	if strings.Contains(response, "tube_storing") {
 		this.sampleRKSuccessDBModify(idsStr, applyMainId)
@@ -583,7 +590,7 @@ func (this *ConverseService) handleSampleSuccess(idsStr string, response string,
 
 }
 
-//入库成功, 修改样本数据库状态信息
+// 入库成功, 修改样本数据库状态信息
 func (this *ConverseService) sampleRKSuccessDBModify(idsStr string, parentId int) error {
 	fmt.Println("开始更新样本入库信息, 包括更新容量,状态, 锁定状态")
 	// add by 徐春林  基点入库成功, 根据样本入库详情表中 更新 样本的 剩余容量
@@ -605,7 +612,7 @@ func (this *ConverseService) sampleRKSuccessDBModify(idsStr string, parentId int
 	return err
 }
 
-//出库成功, 修改样本数据库状态信息
+// 出库成功, 修改样本数据库状态信息
 func (this *ConverseService) sampleCKSuccessDBModify(idsStr string, parentId int) error {
 	var list []Bank_Apply_Detail
 	var onHold []string
@@ -636,7 +643,7 @@ func (this *ConverseService) sampleCKSuccessDBModify(idsStr string, parentId int
 	return err
 }
 
-//获取出入库单信息
+// 获取出入库单信息
 func (this *ConverseService) GetApplyMain(entryNo string) Bank_Apply_Main {
 	where := "entryNo = '" + entryNo + "'"
 	var entity Bank_Apply_Main
@@ -644,7 +651,7 @@ func (this *ConverseService) GetApplyMain(entryNo string) Bank_Apply_Main {
 	return entity
 }
 
-//根据出入库单信息判断任务信息, 并修改样本状态
+// 根据出入库单信息判断任务信息, 并修改样本状态
 func (this *ConverseService) ModifySampleStatusByApplyMainInfo(entryNo string, resp string, entity ResponseEntity) {
 
 	applyMain := this.GetApplyMain(entryNo)
@@ -709,7 +716,7 @@ func (this *ConverseService) ModifySampleStatusByApplyMainInfo(entryNo string, r
 	}
 }
 
-//2021/01/09 by 卢传敏
+// 2021/01/09 by 卢传敏
 // 根据入库返回报文,更新 冻存盒的信息盒
 func (this *ConverseService) UpdateBoxInfo(entity ResponseEntity, parentId int) (err error) {
 	//1.  获取当前返回的  冻存架信息,
@@ -813,7 +820,7 @@ func (this *ConverseService) UpdateBoxAbnormalInfo(entity ResponseEntity, parent
 	return err
 }
 
-//2021/01/09 by 卢传敏
+// 2021/01/09 by 卢传敏
 // 根据出库返回报文,更新 冻存盒的信息盒
 func (this *ConverseService) UpdateBoxInfoCK(entity ResponseEntity, parentId int) (err error) {
 	//1.  获取当前返回的  冻存架信息,
@@ -873,7 +880,8 @@ func (this *ConverseService) UpdateBoxIsLocked(taskId string) (err error) {
 	return err
 }
 
-/**
+/*
+*
 修改detail 信息
 */
 func (this *ConverseService) UpdateDetail(BarCode string, entity ResponseEntity, parentId int, rack_id string) {
@@ -976,7 +984,7 @@ func (this *ConverseService) UpdatePosition(rack_id string, tubes []Tube, entity
 	}
 }
 
-//获取当前操作样本的id, 正常和异常的
+// 获取当前操作样本的id, 正常和异常的
 func (this *ConverseService) getOperaSampleIdsStr(applyType, parentId int, resp string, entity ResponseEntity) (actualIds string, abnormalIds string) {
 
 	//获取出入库单中所有样本信息
@@ -1050,7 +1058,7 @@ func (this *ConverseService) getOperaSampleIdsStr(applyType, parentId int, resp
 	return
 }
 
-//当任务为rack_retrieving 且 end 时, 获取所有样本Ids
+// 当任务为rack_retrieving 且 end 时, 获取所有样本Ids
 func (this *ConverseService) getAllSampleIdsFromResEntity(entity ResponseEntity) (actualIds string, abnormalIds string) {
 	//获取反馈报文中的所有成功样本Id列表
 	var actualTubeIds []string
@@ -1064,21 +1072,21 @@ func (this *ConverseService) getAllSampleIdsFromResEntity(entity ResponseEntity)
 	return
 }
 
-//保存异常信息
+// 保存异常信息
 func (this *ConverseService) SaveTaskExcepMsg(msg, taskId string) error {
 	sql := "UPDATE " + TABLE_TAST + " SET exception = '" + msg + "' WHERE task_id = '" + taskId + "'"
 	_, err := this.DBE.Exec(sql)
 	return err
 }
 
-//保存异常信息
+// 保存异常信息
 func (this *ConverseService) SaveSampleExcepMsg(msg, entryNo string) error {
 	sql := "UPDATE " + TABLE_SAMPLE_APPLY + " SET exception = '" + msg + "' WHERE entryno = '" + entryNo + "'"
 	_, err := this.DBE.Exec(sql)
 	return err
 }
 
-//根据条件删除数据,不记录日志
+// 根据条件删除数据,不记录日志
 func (this *ConverseService) DeleteEntityBytbl(tablename string, where string) (err error) {
 	if where == "" {
 		where = "1=2"
@@ -1088,14 +1096,14 @@ func (this *ConverseService) DeleteEntityBytbl(tablename string, where string) (
 	return
 }
 
-//样本库分表
+// 样本库分表
 func (s *ConverseSessionService) InsertEntityBytbl(tablename string, entity interface{}) (affected int64, err error) {
 	affected, err = s.Session.Table(tablename).Insert(entity)
 	LogError(err)
 	return
 }
 
-//获取设备名称
+// 获取设备名称
 func (s *ConverseService) GetEquipmentName(cu int) string {
 	sql := "SELECT name from " + TABLE_EQUIPMENT + " where cu = '" + strconv.Itoa(cu) + "'"
 	var entity Equipment
@@ -1103,7 +1111,7 @@ func (s *ConverseService) GetEquipmentName(cu int) string {
 	return entity.Name
 }
 
-//异常信息转换
+// 异常信息转换
 func (s *ConverseService) HandleCauses(causes []Cause) string {
 	var exceptInfo string
 	for _, cause := range causes {
@@ -1113,7 +1121,7 @@ func (s *ConverseService) HandleCauses(causes []Cause) string {
 	return exceptInfo
 }
 
-//根据异常码获取异常原因
+// 根据异常码获取异常原因
 func (s *ConverseService) GetReason(cause Cause, equipmentName string) string {
 	var reasonStr string
 	switch cause.Reason {
@@ -1151,7 +1159,7 @@ func (s *ConverseService) GetReason(cause Cause, equipmentName string) string {
 	return reasonStr
 }
 
-//处理Exceptions异常信息
+// 处理Exceptions异常信息
 func (s *ConverseService) HandleExceptions(excepts []Exception) string {
 	var exceptStr string
 	for _, except := range excepts {
@@ -1184,7 +1192,7 @@ func (s *ConverseService) HandleExceptions(excepts []Exception) string {
 	return exceptStr
 }
 
-//处理返回设备状态数据, 并存储到数据表里
+// 处理返回设备状态数据, 并存储到数据表里
 func RecordDeviceData(list []List_Data) {
 	t := time.Now()
 	var data []GenePoint_Device_Report_Data
@@ -1237,7 +1245,7 @@ func (this *ConverseService) ApplyStatusModify(statusCode int, entryNo, msg stri
 	return err
 }
 
-//修改任务表状态码
+// 修改任务表状态码
 func (this *ConverseService) ApplyTaskStatusModify(statusCode int, task_id, rack_id string) error {
 	sql := "UPDATE " + TABLE_TAST + " SET statuscode = '" + strconv.Itoa(statusCode) + "'   WHERE " +
 		" task_id = '" + task_id + "' and BoxBarcode = '" + rack_id + "' "

+ 93 - 28
src/dashoo.cn/genepoint_srv/controllers/converse/converse.go

@@ -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
+}