5
0
Эх сурвалжийг харах

fix(bug): 自动化修复
1 . 修复冷库抽屉数量超过 26 个以后,定位错误的问题

luchm 3 жил өмнө
parent
commit
ecef79d126

+ 13 - 6
src/dashoo.cn/genepoint_srv/business/arrangeService/arrangeService.go

@@ -6,6 +6,7 @@
 package arrangeService
 
 import (
+	"dashoo.cn/genepoint_srv/business/common"
 	"dashoo.cn/utils"
 	. "dashoo.cn/utils/db"
 	"encoding/json"
@@ -56,10 +57,16 @@ func (this *ArrangeService) GetOperUser(EntryNo string) (user string) {
  * @return
  **/
 // 修改出入库单状态
-func (this *ArrangeService) ArrangeMainStatusModify(statusCode int, entryNo string) error {
+func (this *ArrangeService) ArrangeMainStatusModify(statusCode int, entryNo,msg string) error {
 	set := ""
-	if statusCode == 1 || statusCode == 2 || statusCode == 3 || statusCode == 5 || statusCode == 6 {
+	if statusCode == 1 || statusCode == 2 || statusCode == 3 || statusCode == 5   {
 		set = "  ,exception='' "
+	}else{
+		if msg!=""{
+			set = "  ,exception='"+msg+"' "
+		}else{
+			set = "  ,exception='' "
+		}
 	}
 
 	sql := "UPDATE " + TABLE_ARRANGE_MAIN + " SET taskstatus = '" + strconv.Itoa(statusCode) + "' " + set + "  WHERE entryno = '" + entryNo + "'"
@@ -187,8 +194,8 @@ func (this *ArrangeService) UpdateBoxInfo(entity ResponseEntity) (err error) {
 			"and  a.Ltu = '" + utils.ToStr(Ltu) + "'   and a.Group ='" + utils.ToStr(Group) + "'"
 
 		// 拼接冻存盒位置信息
-		position := equipment.Code + "-" + utils.NumberToLetter(shelf.XStation) + utils.ToStr(shelf.YStation) + "-" +
-			"" + utils.NumberToLetter( Pos )
+		position := equipment.Code + "-" + common.Boxlinename(shelf.XStation) + utils.ToStr(shelf.YStation) + "-" +
+			"" + common.Boxlinename( Pos )
 
 		// 冷库设备
 		YStation:="  "
@@ -295,8 +302,8 @@ func (this *ArrangeService) UpdatePosition(taskId,rack_id string, tubes []Tube,
 
 			glog.Info("管子在盒子中的位置坐标为:", box_y, ";", box_x)
 
-			position := equipmentInfo.Code + "-" + utils.NumberToLetter(shelf.YStation) + utils.ToStr(shelf.XStation) + "-" +
-				"" + utils.NumberToLetter(box.YStation) + utils.ToStr(box.XStation)+"-"+utils.NumberToLetter(box_x) + utils.ToStr(box_y)
+			position := equipmentInfo.Code + "-" + common.Boxlinename(shelf.YStation) + utils.ToStr(shelf.XStation) + "-" +
+				"" + common.Boxlinename(box.YStation) + utils.ToStr(box.XStation)+"-"+common.Boxlinename(box_x) + utils.ToStr(box_y)
 
 			sql = "update bank_sample set BoxId = '" + utils.ToStr(box.Id) + "',Position = '" + utils.ToStr(box_y) + ";" + utils.ToStr(box_x) + "' , " +
 				"PositionInfo  =  '" + position + "'   where barcode ='" + id + "' "

+ 81 - 0
src/dashoo.cn/genepoint_srv/business/common/utils.go

@@ -0,0 +1,81 @@
+package common
+
+
+
+
+func Boxlinename(x int) string {
+	switch x {
+	case 1:
+		return "A"
+	case 2:
+		return "B"
+	case 3:
+		return "C"
+	case 4:
+		return "D"
+	case 5:
+		return "E"
+	case 6:
+		return "F"
+	case 7:
+		return "G"
+	case 8:
+		return "H"
+	case 9:
+		return "I"
+	case 10:
+		return "J"
+	case 11:
+		return "K"
+	case 12:
+		return "L"
+	case 13:
+		return "M"
+	case 14:
+		return "N"
+	case 15:
+		return "O"
+	case 16:
+		return "P"
+	case 17:
+		return "Q"
+	case 18:
+		return "R"
+	case 19:
+		return "S"
+	case 20:
+		return "T"
+	case 21:
+		return "U"
+	case 22:
+		return "V"
+	case 23:
+		return "W"
+	case 24:
+		return "X"
+	case 25:
+		return "Y"
+	case 26:
+		return "Z"
+	case 27:
+		return "AA"
+	case 28:
+		return "AB"
+	case 29:
+		return "AC"
+	case 30:
+		return "AD"
+	case 31:
+		return "AE"
+	case 32:
+		return "AF"
+	case 33:
+		return "AG"
+	case 34:
+		return "AH"
+	case 35:
+		return "AI"
+	default:
+		return "AJ"
+	}
+}

+ 2 - 0
src/dashoo.cn/genepoint_srv/business/converseService/converse.go

@@ -13,6 +13,7 @@ const SUCCESS = 5
 const RUNNING = 6
 const REJECT = 7
 const EXCEPTION = 8
+const RACKRETRIEVING = 9
 
 
 const SAMPLE_STATUS_OUT = 5
@@ -63,6 +64,7 @@ type ResponseData struct {
 	Key            string        `json:"key,omitempty"`
 	Task_id        string        `json:"task_id,omitempty"`
 	Task_msg       []interface{} `json:"task_msg,omitempty"`
+	Msg       	   string      `json:"msg,omitempty"`
 	Causes         []Cause       `json:"causes,omitempty"`
 	Is_end         bool          `json:"is_end,omitempty"`
 	Execution_time int           `json:"execution_time,omitempty"`

+ 54 - 17
src/dashoo.cn/genepoint_srv/business/converseService/converseService.go

@@ -3,6 +3,7 @@ package converseService
 import (
 	"crypto/md5"
 	"dashoo.cn/genepoint_srv/business/arrangeService"
+	"dashoo.cn/genepoint_srv/business/common"
 	"fmt"
 	"github.com/Unknwon/com"
 	"github.com/gogf/gf/os/glog"
@@ -206,6 +207,7 @@ func (this *ConverseService) GenerateRequestEntity(taskType int, task_id, user s
 	case 9:
 		// add by 徐春林 添加库内整理任务
 		requestName = "moving"
+
 	}
 	utc := time.Now().UTC().Format(time.RFC3339)
 	var data RequestData
@@ -245,6 +247,7 @@ func (this *ConverseService) HandleTaskDetail(taskType int, entity *RequestEntit
 		break
 	case 9: // add by 徐春林 添加库内整理任务 手动库内整理
 		handleArrange(entity, detail)
+
 	}
 }
 
@@ -446,6 +449,23 @@ func handleArrange (entity *RequestEntity, detail *Sample_Storage_Task) {
 	entity.Data.Name = "库内整理"
 	entity.Data.Task_data = ones
 }
+
+/**
+ * 卢传敏
+ * 响应报文,任务执行提示
+ */
+func handleTaskActivate(entity *RequestEntity, detail *Sample_Storage_Task){
+
+}
+
+
+
+
+
+
+
+
+
 // 查询申请单详情下状态,存在一条子任务失败的情况,则整个申请单状态为失败
 func (this *ConverseService) StatusModifyWithDetail(task_id string,res ResponseEntity) error {
 	status := SUCCESS
@@ -478,12 +498,31 @@ func (this *ConverseService) StatusModifyWithDetail(task_id string,res ResponseE
 	//updTaskSql := "UPDATE " + TABLE_TAST + " SET statuscode = '" + strconv.Itoa(status) + "' WHERE task_id = '" + task_id + "'"
 	//_, err = this.DBE.Exec(updTaskSql)
 
+
+
+	set :=""
+	if res.Data.Type =="end" {
+		set = "  ,exception='' "
+	}
+
 	// 更新申请主表状态
-	updApplySql := "UPDATE " + TABLE_SAMPLE_APPLY + " SET taskstatus = '" + strconv.Itoa(status) + "' WHERE entryno = '" + task_id + "'"
+	updApplySql := "UPDATE " + TABLE_SAMPLE_APPLY + " SET taskstatus = '" + strconv.Itoa(status) + "' "+set+"  WHERE entryno = '" + task_id + "'"
 	_, err := this.DBE.Exec(updApplySql)
 	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 + "'"
@@ -492,10 +531,16 @@ func (this *ConverseService) TaskStatusModify(statusCode int, task_id string) er
 }
 
 // 修改出入库单状态
-func (this *ConverseService) SampleApplyStatusModify(statusCode int, entryNo string) error {
-	set := ""
-	if statusCode == 1 || statusCode == 2 || statusCode == 3 || statusCode == 5 || statusCode == 6 {
+func (this *ConverseService) SampleApplyStatusModify(statusCode int, entryNo,msg string) error {
+	set := "    "
+	if statusCode == 1 || statusCode == 2 || statusCode == 3 || statusCode == 5   {
 		set = "  ,exception='' "
+	}else{
+		if msg!=""{
+			set = "  ,exception='"+msg+"' "
+		}else{
+			set = "  ,exception='' "
+		}
 	}
 
 	sql := "UPDATE " + TABLE_SAMPLE_APPLY + " SET taskstatus = '" + strconv.Itoa(statusCode) + "' " + set + "  WHERE entryno = '" + entryNo + "'"
@@ -779,8 +824,8 @@ func (this *ConverseService) UpdateBoxInfo(entity ResponseEntity,parentId int) (
 
 			//  更新盒所在的冻存架的信息  计算位置信息,并更新
 			// 临时处理逻辑,默认 pos 为 盒子的  XStation
-			pos := equipment.Code + "-" + utils.NumberToLetter(shelf.YStation) + utils.ToStr(shelf.XStation) + "-" +
-				"" + utils.NumberToLetter(    Unit  ) + utils.ToStr(utils.ToStr(Pos))
+			pos := equipment.Code + "-" + common.Boxlinename(shelf.YStation) + utils.ToStr(shelf.XStation) + "-" +
+				"" + common.Boxlinename(    Unit  ) + utils.ToStr(utils.ToStr(Pos))
 
 			possql := "update bank_box set XStation ='" + utils.ToStr(Pos) + "'  "+YStation+"," +
 				" EquipmentId ='" + com.ToStr(shelf.EquipmentId) + "'," +
@@ -843,16 +888,8 @@ func (this *ConverseService) UpdateBoxInfoCK(entity ResponseEntity,parentId int)
 	for i := range entity.Data.Actual_data {
 		TaskId := entity.Data.Task_id
 		boxBarcode := entity.Data.Actual_data[i].Rack_id // 冻存盒编号
-		//Cu := entity.Data.Actual_data[i].source.Cu			// 设备编号
-		//Ltu := entity.Data.Actual_data[i].source.Ltu		//
-		//Unit := entity.Data.Actual_data[i].source.Unit
-		Pos := entity.Data.Actual_data[i].Target.Pos
-		//Group := entity.Data.Actual_data[i].source.Group?
 
-		//fmt.Println("保存返回的冻存盒位置信息:cu:",Cu,",Ltu",Ltu,",Unit",Unit,",Group",Group,",Pos",Pos)
-		//
-		//sql := "select a.id,a.XStation,a.YStation from bank_shelf a left join bank_equipment b  on a.EquipmentId = b.id  where  b.cu = '"+utils.ToStr(Cu)+"' " +
-		//	"and  a.Ltu = '"+utils.ToStr(Ltu)+"' and a.Unit ='"+utils.ToStr(Unit) +"' and a.Group ='"+utils.ToStr(Group)+"'"
+		Pos := entity.Data.Actual_data[i].Target.Pos
 
 		sql := " select shelfId , EquipmentId from bank_box where code = '" + boxBarcode + "'"
 
@@ -994,8 +1031,8 @@ func (this *ConverseService) UpdatePosition(rack_id string, tubes []Tube, entity
 		glog.Info("管子在盒子中的位置坐标为:", box_y, ";", box_x)
 		//var position = utils.NumberToLetter(box_x) + utils.ToStr(box_y)
 
-		position := equipmentInfo.Code + "-" + utils.NumberToLetter(shelf.YStation) + utils.ToStr(shelf.XStation) + "-" +
-			"" + utils.NumberToLetter(box.YStation) + utils.ToStr(box.XStation) + "-" + utils.NumberToLetter(box_x) + utils.ToStr(box_y)
+		position := equipmentInfo.Code + "-" + common.Boxlinename(shelf.YStation) + utils.ToStr(shelf.XStation) + "-" +
+			"" + common.Boxlinename(box.YStation) + utils.ToStr(box.XStation) + "-" + common.Boxlinename(box_x) + utils.ToStr(box_y)
 		sql = "update bank_sample set BoxId = '" + utils.ToStr(box.Id) + "',Position = '" + utils.ToStr(box_y) + ";" +
 			"" + utils.ToStr(box_x) + "',PositionInfo = '"+position+"'  " +
 			// " , unit =  '"+  utils.ToStr( entity.Data.Actual_data[i].Target.Unit)+"'" +

+ 26 - 11
src/dashoo.cn/genepoint_srv/controllers/converse/converse.go

@@ -93,8 +93,9 @@ func (this *ConverseController) StatusModifyWithDetail(task_id string,res Respon
 }
 
 // 修改任务状态码
-func (this *ConverseController) StatusModify(statusCode int, task_id string,reqType string) error {
+func (this *ConverseController) StatusModify(statusCode int, task_id string,reqType,msg string) error {
 	svc := GetConverseService(utils.DBE)
+
 	asvc := arrangeService.GetArrangeService(utils.DBE)
 	//修改任务表任务状态
 	err := svc.TaskStatusModify(statusCode, task_id)
@@ -103,7 +104,7 @@ func (this *ConverseController) StatusModify(statusCode int, task_id string,reqT
 	}
 
 	if reqType == "moving" {
-		err = asvc.ArrangeMainStatusModify(statusCode, task_id)
+		err = asvc.ArrangeMainStatusModify(statusCode, task_id,msg)
 		if err != nil {
 			return err
 		}
@@ -115,11 +116,10 @@ func (this *ConverseController) StatusModify(statusCode int, task_id string,reqT
 		}
 	} else {
 		//修改出入库任务状态
-		err = svc.SampleApplyStatusModify(statusCode, task_id)
+		err = svc.SampleApplyStatusModify(statusCode, task_id,msg )
 		if err != nil {
 			return err
 		}
-
 		// 2020/12/18 卢传敏新增,修复多条报文返回的问题,同时处理 任务中样本的状态和任务状态不一致的问题
 		// 根据任务报文返回的执行状态 修改出入库单中的 样本的任务状态
 		// 状态码不为成功/失败(成功/失败状态会根据响应报文单独处理状态更改),则批量更新样本申请表状态
@@ -202,27 +202,42 @@ func (this *ConverseController) HandleMessage(n int, message []byte) {
 					err = this.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)
-			} else {
-				err = this.StatusModify(ACTIVE, taskId, resp)
+				err = this.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)
+			}else{
+				err = this.StatusModify(ACTIVE, taskId, resp,res.Data.Msg)
 			}
 		} else if taskType == "accept" {
 			log.Println(">>>>>>>>>>任务[" + taskId + "]接受>>>>>>>>>>")
-			err = this.StatusModify(ACCEPT, taskId, resp)
+			err = this.StatusModify(ACCEPT, taskId, resp,"")
 		} else if taskType == "running" {
 			log.Println(">>>>>>>>>>任务[" + taskId + "]执行中>>>>>>>>>>")
-			err = this.StatusModify(RUNNING, taskId, resp)
+			err = this.StatusModify(RUNNING, taskId, resp,"")
+		} else if taskType == "rack_retrieving" {
+			log.Println(">>>>>>>>>>任务[" + taskId + "]执行中>>>>>>>>>>")
+			err = this.StatusModify(RACKRETRIEVING, taskId, resp,"")
+		}
+		// 执行过程返回响应报文的处理
+		if resp == "task_activate" {
+			log.Println(">>>>>>>>>>任务[" + taskId + "] 响应处理>>>>>>>")
+			if res.Data.Status == 3 {
+				err = this.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)
+			} else {
+				err = this.StatusModify(ACTIVE, taskId, resp, res.Data.Msg)
+			}
 		}
 	} else if result == 300 && taskType == "reject" {
 		log.Println("----------任务[" + taskId + "]任务拒绝----------")
 		//保存异常信息
 		this.SaveExcepMsg(res, taskId, resp)
-		err = this.StatusModify(REJECT, taskId, resp)
+		err = this.StatusModify(REJECT, taskId, resp,"")
 		// 判断如果为盒操作, 需要将 盒解锁, 重新执行时再上锁
 		if resp == "rack_storing" || resp == "rack_retrieving" {
 			err = this.UpdateBoxIsLocked(taskId)

+ 5 - 4
src/dashoo.cn/genepoint_srv/main.go

@@ -65,6 +65,7 @@ var pingTimer = time.NewTicker(10 * time.Second)
 func main() {
 	temp = false
 
+
 	// 加载配置文件中服务器地址
 	utils.LoadConfig("conf/app.conf")
 
@@ -303,7 +304,7 @@ func ListenToSendMsg() {
 			log.Println("read err:", err)
 			// 任务发送失败,,,修改任务状态,,,,提示任务执行失败
 			for taskid, reqEntity := range reqMap {
-				err = ctrl.StatusModify(converseService.FAILED, taskid,reqEntity.Request)
+				err = ctrl.StatusModify(converseService.FAILED, taskid,reqEntity.Request,"")
 				svc.SaveErrInfo(err.Error(), taskid,reqEntity.Request)
 			}
 		}
@@ -318,7 +319,7 @@ func ListenToSendMsg() {
 			if err1 != nil {
 				log.Println("请求发送失败",err1)
 				// 任务发送失败,,,修改任务状态,,,,提示任务执行失败
-				err1 = ctrl.StatusModify(converseService.FAILED, taskid,reqEntity.Request)
+				err1 = ctrl.StatusModify(converseService.FAILED, taskid,reqEntity.Request,"")
 				// 跟新异常信息
 				totalMsg := "请求发送失败"
 				svc.SaveErrInfo(totalMsg, taskid,reqEntity.Request)
@@ -326,7 +327,7 @@ func ListenToSendMsg() {
 			} else {
 				log.Println("请求发送成功")
 				// 发送成功,修改状态
-				err1 = ctrl.StatusModify(converseService.SENT, taskid,reqEntity.Request)
+				err1 = ctrl.StatusModify(converseService.SENT, taskid,reqEntity.Request,"")
 			}
 		}
 	})
@@ -513,4 +514,4 @@ func BackupMySqlDb(tableName string) (error,string)  {
 		return err,""
 	}
 	return nil,backupPath
-}
+}

+ 1 - 1
src/dashoo.cn/test_server/server.go

@@ -10,7 +10,7 @@ import (
 	"github.com/gorilla/websocket"
 )
 
-var addr = flag.String("addr", "localhost:8080", "http service address")
+var addr = flag.String("addr", "localhost:8083", "http service address")
 
 var upgrader = websocket.Upgrader{} // use default options