Kaynağa Gözat

代码标准化,添加注释

sunmiao 5 yıl önce
ebeveyn
işleme
ddaf18d81f

+ 1 - 1
.gitignore

@@ -29,7 +29,7 @@ dist
 
 # 生成的可执行文件
 sample/sample
-src/dashoo.cn/dqm_api/dqm_api
+src/dashoo.cn/api/api
 
 
 

+ 108 - 113
src/dashoo.cn/api/business/converseService/converse.go

@@ -14,41 +14,42 @@ const RUNNING = 6
 const REJECT = 7
 
 const SAMPLE_STATUS_OUT = 5
-const SAMPLE_STATUS_IN  = 2
+const SAMPLE_STATUS_IN = 2
 const TASK_TUBE_STORING = 1
 const TASK_TUBE_RETREIVING = 2
 
-
+// 请求报文实体
 type RequestEntity struct {
 	Request string      `json:"request"`
 	Time    string      `json:"time"`
 	Data    RequestData `json:"data"`
 }
 
+// 相应报文实体
 type ResponseEntity struct {
 	Response string       `json:"response"`
-	Result   int 		  `json:"result"`
+	Result   int          `json:"result"`
 	Time     string       `json:"time"`
 	Data     ResponseData `json:"data,omitempty"`
 }
 
 type RequestData struct {
-	Type    string `json:"type,omitempty"`
-	Key     string `json:"key,omitempty"`
-	Client  string `json:"client,omitempty"`
-	Status  int    `json:"status,omitempty"`
-	Rack_id string `json:"rack_id,omitempty"`
-	Tube_id string `json:"tube_id,omitempty"`
-	Task_id        string      `json:"task_id,omitempty"`
-	Task_data      interface{}    `json:"task_data,omitempty"`
+	Type           string        `json:"type,omitempty"`
+	Key            string        `json:"key,omitempty"`
+	Client         string        `json:"client,omitempty"`
+	Status         int           `json:"status,omitempty"`
+	Rack_id        string        `json:"rack_id,omitempty"`
+	Tube_id        string        `json:"tube_id,omitempty"`
+	Task_id        string        `json:"task_id,omitempty"`
+	Task_data      interface{}   `json:"task_data,omitempty"`
 	List           []interface{} `json:"list,omitempty"`
-	Operation_mode string      `json:"operation_mode,omitempty"`
-	Cu    int `json:"cu,omitempty"`
-	Ee    int `json:"ee,omitempty"`
-	Ltu   int `json:"ltu,omitempty"`
-	Group int `json:"group,omitempty"`
-	Unit  int `json:"unit,omitempty"`
-	Pos   int `json:"pos,omitempty"`
+	Operation_mode string        `json:"operation_mode,omitempty"`
+	Cu             int           `json:"cu,omitempty"`
+	Ee             int           `json:"ee,omitempty"`
+	Ltu            int           `json:"ltu,omitempty"`
+	Group          int           `json:"group,omitempty"`
+	Unit           int           `json:"unit,omitempty"`
+	Pos            int           `json:"pos,omitempty"`
 }
 
 type ResponseData struct {
@@ -57,37 +58,35 @@ type ResponseData struct {
 	Key            string        `json:"key,omitempty"`
 	Task_id        string        `json:"task_id,omitempty"`
 	Task_msg       []interface{} `json:"task_msg,omitempty"`
-	Causes         []Cause   	 `json:"causes,omitempty"`
+	Causes         []Cause       `json:"causes,omitempty"`
 	Is_end         bool          `json:"is_end,omitempty"`
 	Execution_time int           `json:"execution_time,omitempty"`
-	Exceptions     []Exception	 `json:"exceptions,omitempty"`
+	Exceptions     []Exception   `json:"exceptions,omitempty"`
 	Actual_data    []Single      `json:"actual_data,omitempty"`
-	Abnormal_data  Abmormal_data      `json:"abnormal_data,omitempty"`
-	List           []List_Data 	 `json:"list,omitempty"`
+	Abnormal_data  Abmormal_data `json:"abnormal_data,omitempty"`
+	List           []List_Data   `json:"list,omitempty"`
 }
 
 type List_Data struct {
+	Index int `json:"index,omitempty"`
+	Rack  int `json:"rack,omitempty"`
 
-	Index 			int 		`json:"index,omitempty"`
-	Rack 			int 		`json:"rack,omitempty"`
-
-	Tube 			int			`json:"tube,omitempty"`
-	Tube_number 	int			`json:"tube_number,omitempty"`
+	Tube        int `json:"tube,omitempty"`
+	Tube_number int `json:"tube_number,omitempty"`
 
-	No			    int    		`json:"no,omitempty"`
-	Id 				string 		`json:"id,omitempty"`
+	No int    `json:"no,omitempty"`
+	Id string `json:"id,omitempty"`
 
-	Cu 				int			`json:"cu,omitempty"`
-	Addr 			string		`json:"addr,omitempty"`
-	Type 			string		`json:"type,omitempty"`
-	Value 			string		`json:"value,omitempty"`
-
-	Ltu  		    int 		`json:"ltu,omitempty"`
-	Group    	    int 		`json:"group,omitempty"`
-	Unit     	    int 		`json:"unit,omitempty"`
-	Pos  		    int 		`json:"pos,omitempty"`
-	Rack_id  	    string 		`json:"rack_id,omitempty"`
+	Cu    int    `json:"cu,omitempty"`
+	Addr  string `json:"addr,omitempty"`
+	Type  string `json:"type,omitempty"`
+	Value string `json:"value,omitempty"`
 
+	Ltu     int    `json:"ltu,omitempty"`
+	Group   int    `json:"group,omitempty"`
+	Unit    int    `json:"unit,omitempty"`
+	Pos     int    `json:"pos,omitempty"`
+	Rack_id string `json:"rack_id,omitempty"`
 }
 
 //type Result_data struct {
@@ -99,24 +98,24 @@ type List_Data struct {
 //
 //}
 type Abmormal_data struct {
-	Racks		[]Single
-	Tubes 		[]Single
+	Racks []Single
+	Tubes []Single
 }
 
 type Source struct {
-	Cu  int `json:"cu,omitempty"`
-	Ee  int `json:"ee,omitempty"`
-	Pos int `json:"pos,omitempty"`
+	Cu      int    `json:"cu,omitempty"`
+	Ee      int    `json:"ee,omitempty"`
+	Pos     int    `json:"pos,omitempty"`
 	Rack_id string `json:"rack_id,omitempty"`
 }
 
 type Target struct {
-	Cu    int `json:"cu,omitempty"`
-	Ltu   int `json:"ltu,omitempty"`
-	Group int `json:"group,omitempty"`
-	Unit  int `json:"unit,omitempty"`
-	Pos   int `json:"pos,omitempty"`
-	Ee    int `json:"ee,omitempty"`
+	Cu      int    `json:"cu,omitempty"`
+	Ltu     int    `json:"ltu,omitempty"`
+	Group   int    `json:"group,omitempty"`
+	Unit    int    `json:"unit,omitempty"`
+	Pos     int    `json:"pos,omitempty"`
+	Ee      int    `json:"ee,omitempty"`
 	Rack_id string `json:"rack_id,omitempty"`
 }
 
@@ -138,82 +137,79 @@ type Target struct {
 //}
 
 type Tube struct {
-	No 		int   		`json:"no,omitempty"`
-	Id 		string 		`json:"id,omitempty"`
-	T_no 	int			`json:"t_no,omitempty"`
-	S_no 	int			`json:"s_no,omitempty"`
-	Oper 	bool 		`json:"oper,omitempty"`
+	No   int    `json:"no,omitempty"`
+	Id   string `json:"id,omitempty"`
+	T_no int    `json:"t_no,omitempty"`
+	S_no int    `json:"s_no,omitempty"`
+	Oper bool   `json:"oper,omitempty"`
 }
 
 type Single struct {
-	Rack   		int    	`json:"rack,omitempty"`
-	Tube   	 	int    	`json:"tube,omitempty"`
-	Id 			string 	`json:"id,omitempty"`
-	Rack_id 	string 	`json:"rack_id,omitempty"`
-	Source  	Source	`json:"source,omitempty"`
-	Target  	Target 	`json:"target,omitempty"`
-	Tubes   	[]Tube 	`json:"tubes"`
-	Exceptions 	[]int  	`json:"exceptions,omitempty"`
-
+	Rack       int    `json:"rack,omitempty"`
+	Tube       int    `json:"tube,omitempty"`
+	Id         string `json:"id,omitempty"`
+	Rack_id    string `json:"rack_id,omitempty"`
+	Source     Source `json:"source,omitempty"`
+	Target     Target `json:"target,omitempty"`
+	Tubes      []Tube `json:"tubes"`
+	Exceptions []int  `json:"exceptions,omitempty"`
 }
 
 type Cause struct {
-	Cu 		int		`json:"cu"`
-	Reason	int		`json:"reason"`
+	Cu     int `json:"cu"`
+	Reason int `json:"reason"`
 }
 
 type Exception struct {
-	Cu 		int		`json:"cu"`
-	Codes 	[]int	`json:"codes,omitempty"`
+	Cu    int   `json:"cu"`
+	Codes []int `json:"codes,omitempty"`
 }
 
-
 type GenePoint_Device_Report_Data struct {
-	Cu 		int			`json:"cu,omitempty"`
-	Addr 	string		`json:"addr,omitempty"`
-	Type 	string		`json:"type,omitempty"`
-	Value 	string		`json:"value,omitempty"`
-	RecordTime    time.Time
+	Cu         int    `json:"cu,omitempty"`
+	Addr       string `json:"addr,omitempty"`
+	Type       string `json:"type,omitempty"`
+	Value      string `json:"value,omitempty"`
+	RecordTime time.Time
 }
 
 type Sample_Storage_Task struct {
-	Id 			int
-	Task_id 	string
-	Task_type 	int
+	Id          int
+	Task_id     string
+	Task_type   int
 	EquipmentId int
-	Cu 			int
-	E_Row		int
-	E_Col		int
-	Ltu			int
-	Group		int
-	ShelfId		int
-	S_Row		int
-	S_Col		int
-	S_X			int
-	S_Y			int
-	BoxId 		string
-	BoxBarcode 	string
-	B_Row		int
-	B_Col		int
-	B_X			int
-	B_Y			int
-	BoxType		int
-	BarCode 	string
-	TubeType	int
-	Status 		int
-	Position 	string
-	No			int
-	Unit 		int
-	Pos			int
+	Cu          int
+	E_Row       int
+	E_Col       int
+	Ltu         int
+	Group       int
+	ShelfId     int
+	S_Row       int
+	S_Col       int
+	S_X         int
+	S_Y         int
+	BoxId       string
+	BoxBarcode  string
+	B_Row       int
+	B_Col       int
+	B_X         int
+	B_Y         int
+	BoxType     int
+	BarCode     string
+	TubeType    int
+	Status      int
+	Position    string
+	No          int
+	Unit        int
+	Pos         int
 	StatusCode  int
 	OperaMode   string
-	Exception 	string	 `xorm:"VARCHAR(512)"`
-	Remark 		string
-
+	Exception   string `xorm:"VARCHAR(512)"`
+	Remark      string
 }
 
 type Id struct {
-	Id	int
+	Id int
 }
 
 type Bank_Apply_Detail struct {
@@ -225,12 +221,12 @@ type Bank_Apply_Detail struct {
 	SampleTypeName string    `xorm:"VARCHAR(50)"` //样本类型
 	InitCapacity   float32   `xorm:"FLOAT"`
 	Capacity       float32   `xorm:"FLOAT"`
-	TaskStatus	   int		 `xorm:"INT(4)"`
+	TaskStatus     int       `xorm:"INT(4)"`
 	Unit           string    `xorm:"VARCHAR(50)"`
 	EquipmentId    int       `xorm:"INT(10)"`
 	ShelfId        int       `xorm:"INT(10)"`
 	BoxId          int       `xorm:"INT(10)"`
-	Position       string    `xorm:"VARCHAR(50)"` //位置 冻存盒的 X代表第几列 Y代表第几行  X;
+	Position       string    `xorm:"VARCHAR(50)"`  //位置 冻存盒的 X代表第几列 Y代表第几行  X;
 	PositionInfo   string    `xorm:"VARCHAR(100)"` //列表中显示的位置信息(容器+层+盒+position)
 	CHUserId       int       `xorm:"INT(10)"`
 	CHUserBy       string    `xorm:"VARCHAR(50)"`
@@ -246,7 +242,6 @@ type Bank_Apply_Detail struct {
 	RecoveryId     int       `xorm:INT(10)`
 	DetailId       int       `xorm:INT(10)`
 	IsLocked       int       `xorm:INT(10)`
-
 }
 
 type Bank_Apply_Main struct {
@@ -261,7 +256,7 @@ type Bank_Apply_Main struct {
 	ConUserBy      string    `xorm:"VARCHAR(50)"`
 	ConTime        time.Time `xorm:"DATETIME"`
 	Remark         string    `xorm:"VARCHAR(255)"`
-	Exception 	   string	 `xorm:"VARCHAR(512)"`
+	Exception      string    `xorm:"VARCHAR(512)"`
 	AuditorRemark  string    `xorm:"VARCHAR(255)"`
 	CreateOn       time.Time `xorm:"DATETIME created"` //创建时间
 	CreateUserId   int       `xorm:"INT(10)"`
@@ -269,10 +264,10 @@ type Bank_Apply_Main struct {
 	ModifiedOn     time.Time `xorm:"DATETIME updated"`
 	ModifiedUserId int       `xorm:"INT(10)"`
 	ModifiedBy     string    `xorm:"VARCHAR(50)"`
-	TaskStatus	   int		 `xorm:"INT(10)"`
-	Reason         int		 `xorm:"INT(10)"`
+	TaskStatus     int       `xorm:"INT(10)"`
+	Reason         int       `xorm:"INT(10)"`
 }
 
 type Equipment struct {
-	Name 	string
-}
+	Name string
+}

+ 130 - 135
src/dashoo.cn/api/business/converseService/converseService.go

@@ -2,14 +2,16 @@ package converseService
 
 import (
 	"crypto/md5"
-	"dashoo.cn/utils"
-	. "dashoo.cn/utils/db"
 	"fmt"
-	"github.com/go-xorm/xorm"
 	"log"
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/go-xorm/xorm"
+
+	"dashoo.cn/utils"
+	. "dashoo.cn/utils/db"
 )
 
 const CU = 1
@@ -29,11 +31,8 @@ const TABLE_APPLY_DETAIL = "bank_apply_detail"
 const STATUS_LOCKED = "1"
 const STATUS_UNLOCK = "0"
 const RK_PASS = "2"
-const CK_PASS_ONHOLD = "3"	//保留位置
-const CK_PASS_DONE = "4"	//已归档
-
-
-
+const CK_PASS_ONHOLD = "3" //保留位置
+const CK_PASS_DONE = "4"   //已归档
 
 type ConverseService struct {
 	ServiceBase
@@ -43,30 +42,30 @@ type ConverseSessionService struct {
 	SessionBase
 }
 
-func GetConverseService(xormEngine *xorm.Engine) *ConverseService{
+func GetConverseService(xormEngine *xorm.Engine) *ConverseService {
 	s := new(ConverseService)
 	s.DBE = xormEngine
 	return s
 }
 
-func GetConverseSessionService(session *xorm.Session) *ConverseSessionService{
+func GetConverseSessionService(session *xorm.Session) *ConverseSessionService {
 	s := new(ConverseSessionService)
 	s.Session = session
 	return s
 }
 
 //建立会话
-func (this *ConverseService) GetSessionSetupRequest(utc string) *RequestEntity{
+func (this *ConverseService) GetSessionSetupRequest(utc string) *RequestEntity {
 	var request = "session_setup"
 	var reqData RequestData
 	reqData.Key = this.GetKeyBaseOnTime(utc)
 	reqData.Client = "lims"
-	var entity = this.GetRequestEntity(request,utc,reqData)
+	var entity = this.GetRequestEntity(request, utc, reqData)
 	return entity
 }
 
 //生成请求报文
-func (this *ConverseService) GetRequestEntity(request string, utc string, data RequestData) *RequestEntity{
+func (this *ConverseService) GetRequestEntity(request string, utc string, data RequestData) *RequestEntity {
 	var entity RequestEntity
 	entity.Request = request
 	entity.Time = utc
@@ -74,8 +73,9 @@ func (this *ConverseService) GetRequestEntity(request string, utc string, data R
 	return &entity
 }
 
-//获取key
-func (this *ConverseService) GetKeyBaseOnTime(utc string) string{
+// 获取身份验证key
+// key的信息按照生物样本存储系统分配的私钥字符串+请求报文中的time字段的值进行MD5加密
+func (this *ConverseService) GetKeyBaseOnTime(utc string) string {
 	privateKey := "ZGlzdHJp23Yn4V06b3I6OGQ5NjllZWY2ZWNhZDNjMjlhM2E2MjkyODBlNjg2Y2YwYzNmNWQ1YTg2YWZmM2Nh3MTIwMjB3454jOTIzYWRjNmM5M4g"
 	unencoded := privateKey + utc
 	byte := md5.Sum([]byte(unencoded))
@@ -85,38 +85,38 @@ func (this *ConverseService) GetKeyBaseOnTime(utc string) string{
 }
 
 //查询库存冻存盒信息
-func (this *ConverseService) CheckStockRackInfo(cu int, rack_id string, utc string) *RequestEntity{
+func (this *ConverseService) CheckStockRackInfo(cu int, rack_id string, utc string) *RequestEntity {
 	var request = "stock_rack"
 	var data RequestData
 	data.Rack_id = rack_id
 	data.Cu = cu
-	entity := this.GetRequestEntity(request,utc,data)
+	entity := this.GetRequestEntity(request, utc, data)
 	return entity
 }
 
 //查询库存冻存管信息
-func (this *ConverseService) CheckStockTubeInfo(cu int, rack_id, tube_id, utc string) *RequestEntity{
+func (this *ConverseService) CheckStockTubeInfo(cu int, rack_id, tube_id, utc string) *RequestEntity {
 	var request = "stock_rack_tube"
 	var data RequestData
 	data.Rack_id = rack_id
 	data.Tube_id = tube_id
 	data.Cu = cu
-	entity := this.GetRequestEntity(request,utc,data)
+	entity := this.GetRequestEntity(request, utc, data)
 	return entity
 }
 
 //任务撤销
-func (this *ConverseService) CancelTast(utc string, task_id string) *RequestEntity{
+func (this *ConverseService) CancelTast(utc string, task_id string) *RequestEntity {
 	var request = "task_change"
 	var data RequestData
 	data.Task_id = task_id
 	data.Status = 1
-	entity := this.GetRequestEntity(request,utc,data)
+	entity := this.GetRequestEntity(request, utc, data)
 	return entity
 }
 
 //扫描新任务
-func (this *ConverseService) ScanNewTaskDetail() []Sample_Storage_Task{
+func (this *ConverseService) ScanNewTaskDetail() []Sample_Storage_Task {
 	var tasks []Sample_Storage_Task
 	where := "statuscode = 0"
 	this.GetEntitysByWhere(TABLE_TAST, where, &tasks)
@@ -124,7 +124,7 @@ func (this *ConverseService) ScanNewTaskDetail() []Sample_Storage_Task{
 }
 
 //新任务数量
-func (this *ConverseService) GetNewTaskBasic () []Sample_Storage_Task{
+func (this *ConverseService) GetNewTaskBasic() []Sample_Storage_Task {
 	//var count64 int64
 	var tasks []Sample_Storage_Task
 	//sql := "SELECT COUNT(DISTINCT(task_id)) FROM sample_storage_task WHERE status = 0"
@@ -163,8 +163,8 @@ func (this *ConverseService) GetNewTaskBasic () []Sample_Storage_Task{
 //	return no
 //}
 
-//根据任务类型获取requestName
-func (this *ConverseService)GenerateRequestEntity(taskType int, task_id string) *RequestEntity{
+// 生成请求实体,根据任务类型获取requestName
+func (this *ConverseService) GenerateRequestEntity(taskType int, task_id string) *RequestEntity {
 	var requestName string
 	switch taskType {
 	case 1:
@@ -194,47 +194,48 @@ func (this *ConverseService)GenerateRequestEntity(taskType int, task_id string)
 		data.Task_id = task_id
 		data.Type = "begin"
 	}
-	entity := this.GetRequestEntity(requestName,utc,data)
+	entity := this.GetRequestEntity(requestName, utc, data)
 	return entity
 }
 
-func (this *ConverseService) HandleTaskDetail(taskType int , entity *RequestEntity, detail *Sample_Storage_Task){
+// 按类型进行任务处理
+func (this *ConverseService) HandleTaskDetail(taskType int, entity *RequestEntity, detail *Sample_Storage_Task) {
 	switch taskType {
 	case 1:
 		handleRackStore(entity, detail)
 		break
 	case 2:
-		handleRackRetrieve(entity,detail)
+		handleRackRetrieve(entity, detail)
 		break
 	case 3:
-		handleTubeStore(entity,detail)
+		handleTubeStore(entity, detail)
 		break
 	case 4:
-		handleTubeRetrieve(entity,detail)
+		handleTubeRetrieve(entity, detail)
 		break
 	case 5:
-		handleQueryRack(entity,detail)
+		handleQueryRack(entity, detail)
 		break
 	case 6:
-		handleQueryTube(entity,detail)
+		handleQueryTube(entity, detail)
 		break
 	case 7:
-		handleTaskChange(entity,detail)
+		handleTaskChange(entity, detail)
 	}
 }
 
 //处理冻存盒入库任务信息
-func handleRackStore (entity *RequestEntity, detail *Sample_Storage_Task) {
-	var ones = make([]Single,0)
+func handleRackStore(entity *RequestEntity, detail *Sample_Storage_Task) {
+	var ones = make([]Single, 0)
 	var exist bool
 
 	if entity.Data.Task_data != nil {
 		ones = entity.Data.Task_data.([]Single)
-		for idx,value := range ones{
-			if value.Rack_id == detail.BoxBarcode{
+		for idx, value := range ones {
+			if value.Rack_id == detail.BoxBarcode {
 				var tube Tube
 				tube.Id = detail.BarCode
-				ones[idx].Tubes = append(ones[idx].Tubes,tube)
+				ones[idx].Tubes = append(ones[idx].Tubes, tube)
 				exist = true
 			}
 		}
@@ -260,8 +261,8 @@ func handleRackStore (entity *RequestEntity, detail *Sample_Storage_Task) {
 			var tube Tube
 			tube.Id = detail.BarCode
 			one.Tubes = append(one.Tubes, tube)
-		}else {
-			one.Tubes = make([]Tube,0)  //tubes不能为空, 否则Genepoint系统报错
+		} else {
+			one.Tubes = make([]Tube, 0) //tubes不能为空, 否则Genepoint系统报错
 		}
 		ones = append(ones, one)
 	}
@@ -269,27 +270,26 @@ func handleRackStore (entity *RequestEntity, detail *Sample_Storage_Task) {
 }
 
 //处理冻存盒出库任务信息
-func handleRackRetrieve(entity *RequestEntity, detail *Sample_Storage_Task){
+func handleRackRetrieve(entity *RequestEntity, detail *Sample_Storage_Task) {
 	var ones []Single
 	var one Single
-	one.Tubes = make([]Tube,0)	//tubes不能为空, 否则Genepoint系统报错
+	one.Tubes = make([]Tube, 0) //tubes不能为空, 否则Genepoint系统报错
 
 	if entity.Data.Task_data != nil {
-	//	ones = make([]Single, 0)
-	//}else{
+		//	ones = make([]Single, 0)
+		//}else{
 		ones = entity.Data.Task_data.([]Single)
 	}
 	one.Rack_id = detail.BoxBarcode
-	one.Target.Cu = detail.Cu		//todo
+	one.Target.Cu = detail.Cu //todo
 	one.Target.Ee = EE
 	one.Target.Pos = POS
 	ones = append(ones, one)
 	entity.Data.Task_data = ones
 }
 
-
 //处理冻存管入库任务信息
-func handleTubeStore (entity *RequestEntity, detail *Sample_Storage_Task){
+func handleTubeStore(entity *RequestEntity, detail *Sample_Storage_Task) {
 	var ones []Single
 	var exist bool
 	if entity.Data.Operation_mode == "" {
@@ -298,7 +298,7 @@ func handleTubeStore (entity *RequestEntity, detail *Sample_Storage_Task){
 
 	if entity.Data.Task_data != nil {
 		ones = entity.Data.Task_data.([]Single)
-		for idx,value := range ones {
+		for idx, value := range ones {
 			if value.Target.Rack_id == detail.BoxBarcode {
 				var tube Tube
 				if detail.OperaMode != "auto" {
@@ -307,7 +307,7 @@ func handleTubeStore (entity *RequestEntity, detail *Sample_Storage_Task){
 					tube.T_no = detail.No
 				}
 				tube.Id = detail.BarCode
-				ones[idx].Tubes = append(ones[idx].Tubes,tube)
+				ones[idx].Tubes = append(ones[idx].Tubes, tube)
 				//value.Tubes = append(value.Tubes,tube)
 				exist = true
 				goto label
@@ -319,8 +319,8 @@ func handleTubeStore (entity *RequestEntity, detail *Sample_Storage_Task){
 		var one Single
 		//one.Rack = 101			//测试临时使用
 		//one.Tube = 201			//测试临时使用
-		one.Rack = detail.BoxType    //样本库系统,没有添加该字段信息逻辑,临时注释
-		one.Tube = detail.TubeType   //样本库系统,没有添加该字段信息逻辑,临时注释
+		one.Rack = detail.BoxType  //样本库系统,没有添加该字段信息逻辑,临时注释
+		one.Tube = detail.TubeType //样本库系统,没有添加该字段信息逻辑,临时注释
 		//one.Source.Cu = CU		 //测试临时使用
 		one.Source.Cu = detail.Cu
 		one.Source.Ee = EE
@@ -340,12 +340,12 @@ func handleTubeStore (entity *RequestEntity, detail *Sample_Storage_Task){
 		one.Tubes = append(one.Tubes, tube)
 		ones = append(ones, one)
 	}
-	label:
+label:
 	entity.Data.Task_data = ones
 }
 
 //处理冻存管出库任务信息
-func handleTubeRetrieve(entity *RequestEntity, detail *Sample_Storage_Task){
+func handleTubeRetrieve(entity *RequestEntity, detail *Sample_Storage_Task) {
 	var one Single
 	var exist bool
 	if entity.Data.Task_data != nil {
@@ -357,43 +357,42 @@ func handleTubeRetrieve(entity *RequestEntity, detail *Sample_Storage_Task){
 		//one.Target.Cu = CU
 		one.Target.Cu = detail.Cu
 		one.Target.Ee = EE
-		one.Target.Pos =POS
+		one.Target.Pos = POS
 	}
 	var tube Tube
 	tube.Id = detail.BarCode
-	one.Tubes = append(one.Tubes,tube)
+	one.Tubes = append(one.Tubes, tube)
 	entity.Data.Task_data = one
 }
 
 //任务撤销
-func handleTaskChange(entity *RequestEntity, detail *Sample_Storage_Task){
+func handleTaskChange(entity *RequestEntity, detail *Sample_Storage_Task) {
 	entity.Data.Status = detail.Status
 }
 
 //查询冻存盒库存信息
-func handleQueryRack(entity *RequestEntity, detail *Sample_Storage_Task){
+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){
+func handleQueryTube(entity *RequestEntity, detail *Sample_Storage_Task) {
 	entity.Data.Rack_id = detail.BoxBarcode
 	entity.Data.Tube_id = detail.BarCode
 }
 
-
 //修改任务表状态码
-func (this *ConverseService) TaskStatusModify(statusCode int, task_id string)  error{
+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)
+	_, err := this.DBE.Exec(sql)
 	return err
 }
 
 // 修改出入库单状态
-func (this *ConverseService) SampleApplyStatusModify(statusCode int, entryNo string) error{
+func (this *ConverseService) SampleApplyStatusModify(statusCode int, entryNo string) error {
 	sql := "UPDATE " + TABLE_SAMPLE_APPLY + " SET taskstatus = '" + strconv.Itoa(statusCode) + "' WHERE entryno = '" + entryNo + "'"
-	_,err := this.DBE.Exec(sql)
+	_, err := this.DBE.Exec(sql)
 	return err
 }
 
@@ -424,15 +423,15 @@ func (this *ConverseService) SampleApplyStatusModify(statusCode int, entryNo str
 //}
 
 //任务执行驳回, 修改全部样本失败状态
-func (this *ConverseService)ModifySampleAllRejectStatus(res ResponseEntity) error{
-		//获取出入库单Id
-		getId := "SELECT id FROM " + TABLE_SAMPLE_APPLY + " WHERE entryno = '" + res.Data.Task_id + "'"
-		var idList []Id
-		err := this.DBE.SQL(getId).Find(&idList)
-		//批量更新全部成功或失败的任务样本状态
-		sql:= "UPDATE " + TABLE_APPLY_DETAIL + " SET taskstatus = '" + strconv.Itoa(REJECT) + "' WHERE parentid = '" + strconv.Itoa(idList[0].Id) + "'"
-		_,err = this.DBE.Exec(sql)
-		return err
+func (this *ConverseService) ModifySampleAllRejectStatus(res ResponseEntity) error {
+	//获取出入库单Id
+	getId := "SELECT id FROM " + TABLE_SAMPLE_APPLY + " WHERE entryno = '" + res.Data.Task_id + "'"
+	var idList []Id
+	err := this.DBE.SQL(getId).Find(&idList)
+	//批量更新全部成功或失败的任务样本状态
+	sql := "UPDATE " + TABLE_APPLY_DETAIL + " SET taskstatus = '" + strconv.Itoa(REJECT) + "' WHERE parentid = '" + strconv.Itoa(idList[0].Id) + "'"
+	_, err = this.DBE.Exec(sql)
+	return err
 }
 
 //修改部分样本执行成功部分样本执行失败状态
@@ -460,98 +459,95 @@ func (this *ConverseService)ModifySampleAllRejectStatus(res ResponseEntity) erro
 //	return idStr
 //}
 
-
-
-
 //修改样本失败状态
-func (this *ConverseService)handleSampleFailed(idsStr string, response string, parentId int) {
+func (this *ConverseService) handleSampleFailed(idsStr string, response string, parentId int) {
 	updatesql := "UPDATE " + TABLE_APPLY_DETAIL + " SET taskstatus = '" + strconv.Itoa(FAILED) + "' WHERE barcode IN (" + idsStr + ")" + " AND parentid = '" + strconv.Itoa(parentId) + "'"
 	this.DBE.Exec(updatesql)
 }
 
 //处理样本执行成功状态
-func (this *ConverseService)handleSampleSuccess(idsStr string, response string, applyMainId int ) {
-	if strings.Contains(response,"_storing")  {
+func (this *ConverseService) handleSampleSuccess(idsStr string, response string, applyMainId int) {
+	if strings.Contains(response, "_storing") {
 		this.sampleRKSuccessDBModify(idsStr, applyMainId)
-	}else if strings.Contains(response,"_retrieving") {
+	} else if strings.Contains(response, "_retrieving") {
 		this.sampleCKSuccessDBModify(idsStr, applyMainId)
 	}
 
 }
 
 //入库成功, 修改样本数据库状态信息
-func (this *ConverseService)sampleRKSuccessDBModify(idsStr string, parentId int) error{
+func (this *ConverseService) sampleRKSuccessDBModify(idsStr string, parentId int) error {
 	updatesql := "UPDATE " + TABLE_APPLY_DETAIL + " SET IsLocked = '" + STATUS_UNLOCK + "', taskstatus = '" + strconv.Itoa(SUCCESS) + "' WHERE barcode IN (" + idsStr + ")" + " AND parentid = '" + strconv.Itoa(parentId) + "'"
 	updatesql2 := "UPDATE " + TABLE_SAMPLE + " SET IsLocked = '" + STATUS_UNLOCK + "', IState = '" + RK_PASS + "' WHERE barcode IN (" + idsStr + ")"
-	_,err := this.DBE.Exec(updatesql)
-	_,err = this.DBE.Exec(updatesql2)
+	_, err := this.DBE.Exec(updatesql)
+	_, err = this.DBE.Exec(updatesql2)
 	return err
 }
 
 //出库成功, 修改样本数据库状态信息
-func (this *ConverseService) sampleCKSuccessDBModify (idsStr string, parentId int) error{
+func (this *ConverseService) sampleCKSuccessDBModify(idsStr string, parentId int) error {
 	var list []Bank_Apply_Detail
 	var onHold []string
 	var done []string
 	err := this.DBE.Where("barcode IN (" + idsStr + ")").Find(&list)
 	for _, one := range list {
 		if strconv.Itoa(one.RecoveryId) == CK_PASS_ONHOLD {
-			onHold = append(onHold,one.BarCode)
+			onHold = append(onHold, one.BarCode)
 		} else if strconv.Itoa(one.RecoveryId) == CK_PASS_DONE {
-			done = append(done,one.BarCode)
+			done = append(done, one.BarCode)
 		}
 	}
 
-	sql := "UPDATE " + TABLE_SAMPLE + " SET istate = '" + CK_PASS_ONHOLD + "', islocked = '" + STATUS_UNLOCK + "' WHERE barcode IN ('" + strings.Join(onHold,"','") + "')"
-	sql2 := "UPDATE " + TABLE_SAMPLE + " SET istate = '" + CK_PASS_DONE + "', islocked = '" + STATUS_UNLOCK + "', equipmentid = '0', shelfid = '0',boxid= '0', position = '', positioninfo = '' WHERE barcode IN ('" + strings.Join(done,"','") + "')"
+	sql := "UPDATE " + TABLE_SAMPLE + " SET istate = '" + CK_PASS_ONHOLD + "', islocked = '" + STATUS_UNLOCK + "' WHERE barcode IN ('" + strings.Join(onHold, "','") + "')"
+	sql2 := "UPDATE " + TABLE_SAMPLE + " SET istate = '" + CK_PASS_DONE + "', islocked = '" + STATUS_UNLOCK + "', equipmentid = '0', shelfid = '0',boxid= '0', position = '', positioninfo = '' WHERE barcode IN ('" + strings.Join(done, "','") + "')"
 	sql3 := "UPDATE " + TABLE_APPLY_DETAIL + " SET IsLocked = '" + STATUS_UNLOCK + "', taskstatus = '" + strconv.Itoa(SUCCESS) + "' WHERE barcode IN (" + idsStr + ")" + " AND parentid = '" + strconv.Itoa(parentId) + "'"
-	_,err = this.DBE.Exec(sql)
-	_,err = this.DBE.Exec(sql2)
-	_,err = this.DBE.Exec(sql3)
+	_, err = this.DBE.Exec(sql)
+	_, err = this.DBE.Exec(sql2)
+	_, err = this.DBE.Exec(sql3)
 	return err
 }
 
 //获取出入库单信息
-func (this *ConverseService) GetApplyMain(entryNo string) Bank_Apply_Main{
+func (this *ConverseService) GetApplyMain(entryNo string) Bank_Apply_Main {
 	where := "entryNo = '" + entryNo + "'"
-	var entity  Bank_Apply_Main
+	var entity Bank_Apply_Main
 	this.GetEntity(&entity, where)
 	return entity
 }
 
 //根据出入库单信息判断任务信息, 并修改样本状态
-func (this *ConverseService) ModifySampleStatusByApplyMainInfo(entryNo string, resp string, entity ResponseEntity){
+func (this *ConverseService) ModifySampleStatusByApplyMainInfo(entryNo string, resp string, entity ResponseEntity) {
 
 	applyMain := this.GetApplyMain(entryNo)
-	var operaIds,abnormalIds,taskType string
-	if applyMain.ApplyType == TASK_TUBE_STORING && strings.Contains(resp,"_storing") {
+	var operaIds, abnormalIds, taskType string
+	if applyMain.ApplyType == TASK_TUBE_STORING && strings.Contains(resp, "_storing") {
 		taskType = "tube_storing"
-		operaIds,abnormalIds = this.getOperaSampleIdsStr(applyMain.ApplyType,applyMain.Id,resp,entity)
-	}else if applyMain.ApplyType == TASK_TUBE_RETREIVING && strings.Contains(resp,"_storing") {
+		operaIds, abnormalIds = this.getOperaSampleIdsStr(applyMain.ApplyType, applyMain.Id, resp, entity)
+	} else if applyMain.ApplyType == TASK_TUBE_RETREIVING && strings.Contains(resp, "_storing") {
 		//lite设备 部分管子出库
 		taskType = "tube_retrieving"
-		operaIds,abnormalIds = this.getOperaSampleIdsStr(applyMain.ApplyType,applyMain.Id,resp,entity)
-	}else if applyMain.ApplyType == TASK_TUBE_RETREIVING && resp == "rack_retrieving" && entity.Data.Is_end {
+		operaIds, abnormalIds = this.getOperaSampleIdsStr(applyMain.ApplyType, applyMain.Id, resp, entity)
+	} else if applyMain.ApplyType == TASK_TUBE_RETREIVING && resp == "rack_retrieving" && entity.Data.Is_end {
 		//lite设备 整盒出库
 		taskType = "tube_retrieving"
-		operaIds,abnormalIds = this.getAllSampleIdsFromResEntity(entity)
-	}else {
+		operaIds, abnormalIds = this.getAllSampleIdsFromResEntity(entity)
+	} else {
 		return
 	}
 
-	this.handleSampleSuccess(operaIds,taskType,applyMain.Id)
+	this.handleSampleSuccess(operaIds, taskType, applyMain.Id)
 	if entity.Data.Type == "abnormal_end" {
-		this.handleSampleFailed(abnormalIds,taskType, applyMain.Id)
+		this.handleSampleFailed(abnormalIds, taskType, applyMain.Id)
 	}
 }
 
 //获取当前操作样本的id, 正常和异常的
-func (this *ConverseService) getOperaSampleIdsStr(applyType, parentId int, resp string, entity ResponseEntity) (actualIds string, abnormalIds string){
+func (this *ConverseService) getOperaSampleIdsStr(applyType, parentId int, resp string, entity ResponseEntity) (actualIds string, abnormalIds string) {
 
 	//获取出入库单中所有样本信息
 	var list []Bank_Apply_Detail
 	where := " parentid = '" + strconv.Itoa(parentId) + "'"
-	this.GetEntitysByWhere(TABLE_DETAIL, where,&list)
+	this.GetEntitysByWhere(TABLE_DETAIL, where, &list)
 	var sampleIds []string
 	for _, detail := range list {
 		sampleIds = append(sampleIds, detail.BarCode)
@@ -561,14 +557,14 @@ func (this *ConverseService) getOperaSampleIdsStr(applyType, parentId int, resp
 	var actualTubeIds []string
 	for _, single := range entity.Data.Actual_data {
 		for _, tube := range single.Tubes {
-			actualTubeIds = append(actualTubeIds,tube.Id)
+			actualTubeIds = append(actualTubeIds, tube.Id)
 		}
 	}
 
 	//获取反馈报文中的所有异常样本Id列表
 	var abnormalTubeIds []string
 	for _, single := range entity.Data.Abnormal_data.Tubes {
-		abnormalTubeIds = append(abnormalTubeIds,single.Id)
+		abnormalTubeIds = append(abnormalTubeIds, single.Id)
 	}
 
 	var operaTubeIds []string
@@ -577,15 +573,15 @@ func (this *ConverseService) getOperaSampleIdsStr(applyType, parentId int, resp
 		for _, sampleId := range sampleIds {
 			//操作成功样本Id
 			for _, tubeId := range actualTubeIds {
-				if sampleId ==tubeId {
+				if sampleId == tubeId {
 					operaTubeIds = append(operaTubeIds, tubeId)
 					break
 				}
 			}
 
 			//操作失败样本Id
-			for _,tubeId := range abnormalTubeIds {
-				if sampleId == tubeId{
+			for _, tubeId := range abnormalTubeIds {
+				if sampleId == tubeId {
 					failTubeIds = append(failTubeIds, tubeId)
 					break
 				}
@@ -604,8 +600,8 @@ func (this *ConverseService) getOperaSampleIdsStr(applyType, parentId int, resp
 			}
 
 			//操作失败样本Id
-			for _,tubeId := range abnormalTubeIds {
-				if sampleId == tubeId{
+			for _, tubeId := range abnormalTubeIds {
+				if sampleId == tubeId {
 					failTubeIds = append(failTubeIds, tubeId)
 					break
 				}
@@ -613,22 +609,21 @@ func (this *ConverseService) getOperaSampleIdsStr(applyType, parentId int, resp
 		}
 	}
 
-	actualIds = "'" + strings.Join(operaTubeIds,"','") + "'"
-	abnormalIds = "'" + strings.Join(failTubeIds,",") + "'"
+	actualIds = "'" + strings.Join(operaTubeIds, "','") + "'"
+	abnormalIds = "'" + strings.Join(failTubeIds, ",") + "'"
 	return
 }
 
-
 //当任务为rack_retrieving 且 end 时, 获取所有样本Ids
-func (this *ConverseService) getAllSampleIdsFromResEntity( entity ResponseEntity)  (actualIds string, abnormalIds string){
+func (this *ConverseService) getAllSampleIdsFromResEntity(entity ResponseEntity) (actualIds string, abnormalIds string) {
 	//获取反馈报文中的所有成功样本Id列表
 	var actualTubeIds []string
 	for _, single := range entity.Data.Actual_data {
 		for _, tube := range single.Tubes {
-			actualTubeIds = append(actualTubeIds,tube.Id)
+			actualTubeIds = append(actualTubeIds, tube.Id)
 		}
 	}
-	actualIds = "'" + strings.Join(actualTubeIds,"','") + "'"
+	actualIds = "'" + strings.Join(actualTubeIds, "','") + "'"
 	abnormalIds = ""
 	return
 }
@@ -715,16 +710,16 @@ func (this *ConverseService) getAllSampleIdsFromResEntity( entity ResponseEntity
 //}
 
 //保存异常信息
-func (this *ConverseService) SaveTaskExcepMsg(msg,taskId string) error{
-	sql := "UPDATE " + TABLE_TAST+ " SET exception = '" + msg + "' WHERE task_id = '" + taskId + "'"
-	_,err := this.DBE.Exec(sql)
+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)
+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
 }
 
@@ -746,7 +741,7 @@ func (s *ConverseSessionService) InsertEntityBytbl(tablename string, entity inte
 }
 
 //获取设备名称
-func (s *ConverseService)GetEquipmentName(cu int) string {
+func (s *ConverseService) GetEquipmentName(cu int) string {
 	sql := "SELECT name from " + TABLE_EQUIPMENT + " where cu = '" + strconv.Itoa(cu) + "'"
 	var entity Equipment
 	s.DBE.SQL(sql).Get(&entity)
@@ -754,9 +749,9 @@ func (s *ConverseService)GetEquipmentName(cu int) string {
 }
 
 //异常信息转换
-func (s *ConverseService)HandleCauses (causes []Cause) string {
+func (s *ConverseService) HandleCauses(causes []Cause) string {
 	var exceptInfo string
-	for _,cause := range causes {
+	for _, cause := range causes {
 		eName := s.GetEquipmentName(cause.Cu)
 		exceptInfo += s.GetReason(cause, eName)
 	}
@@ -764,7 +759,7 @@ func (s *ConverseService)HandleCauses (causes []Cause) string {
 }
 
 //根据异常码获取异常原因
-func (s *ConverseService)GetReason(cause Cause, equipmentName string) string{
+func (s *ConverseService) GetReason(cause Cause, equipmentName string) string {
 	var reasonStr string
 	switch cause.Reason {
 	case 1:
@@ -800,11 +795,11 @@ func (s *ConverseService)GetReason(cause Cause, equipmentName string) string{
 }
 
 //处理Exceptions异常信息
-func (s *ConverseService)HandleExceptions (excepts []Exception) string {
+func (s *ConverseService) HandleExceptions(excepts []Exception) string {
 	var exceptStr string
-	for _,except := range excepts {
+	for _, except := range excepts {
 		eName := s.GetEquipmentName(except.Cu)
-		for _,code := range except.Codes{
+		for _, code := range except.Codes {
 			//var tempStr = string(except.Cu)+"号设备," + eName + ","
 			var tempStr = "设备: " + eName + ","
 			switch code {
@@ -833,8 +828,8 @@ func (s *ConverseService)HandleExceptions (excepts []Exception) string {
 }
 
 //处理返回设备状态数据, 并存储到数据表里
-func RecordDeviceData(list []List_Data){
-	 t := time.Now()
+func RecordDeviceData(list []List_Data) {
+	t := time.Now()
 	var data []GenePoint_Device_Report_Data
 	for _, one := range list {
 		var piece GenePoint_Device_Report_Data
@@ -843,8 +838,8 @@ func RecordDeviceData(list []List_Data){
 		piece.Type = one.Type
 		piece.Value = one.Value
 		piece.RecordTime = t
-		data = append(data,piece)
+		data = append(data, piece)
 	}
 	svc := GetConverseService(utils.DBE)
 	svc.InsertEntity(data)
-}
+}

+ 1 - 34
src/dashoo.cn/api/conf/app.conf

@@ -1,15 +1,7 @@
 appname = genepoint_sevice
-httpport = 9635
-runmode = dev
-#runmode = prod
-autorender = false
-copyrequestbody = true
-EnableDocs = true
+
 
 [server]
-apiurl=http://121.42.244.228:10015/v1
-dataapiurl=http://121.42.244.228:18010/v1
-orderurl=http://uid.labsop.cn:8182/worker/2
 gpServiceUrl=ws://39.105.83.226:22225/socket
 #gpServiceUrl=ws://270100d53m.wicp.vip:46538/socket
 
@@ -23,28 +15,3 @@ db_port=3306
 user=dqmnt_user
 pwd=Y6Ba64w1Hezo
 
-[redis]
-addr = 114.215.26.149:26379
-
-[file]
-tmplateDir = ./static/file/doc/stepsexport/template/
-upFileHost = weed1.labsop.cn:9333
-downFileHost = weed1.labsop.cn:9390
-
-[casbin]
-type=mysql
-name=casbin_dqm
-host=39.98.34.197
-db_port=3306
-user=dqmnt_user
-pwd=Y6Ba64w1Hezo
-domain=dqm
-
-#[workflow]
-#callbackHost=http://36dcae10.ngrok.io
-#OriginUrl=http://39.98.34.197:8082/acti-api/api
-#AposeUrl=http://39.98.34.197:8082/acti-api/api/apose
-#BaseUrl=http://39.98.34.197:8082/acti-api/api/acti
-#OriginUrl=http://192.168.0.166:8081/api
-#AposeUrl=http://192.168.0.166:8081/api/apose
-#BaseUrl=http://192.168.0.166:8081/api/acti

+ 55 - 62
src/dashoo.cn/api/controllers/converse/converse.go

@@ -1,22 +1,24 @@
 package converse
 
 import (
-	. "dashoo.cn/api/business/converseService"
-	"dashoo.cn/utils"
 	"encoding/json"
-	"github.com/astaxie/beego"
-	"github.com/gorilla/websocket"
 	"log"
 	"strconv"
 	"time"
+
+	// "github.com/astaxie/beego"
+	"github.com/gorilla/websocket"
+
+	. "dashoo.cn/api/business/converseService"
+	"dashoo.cn/utils"
 )
 
 type ConverseController struct {
-	beego.Controller
+	// beego.Controller
 }
 
-
-func (this *ConverseController) SearchDatabase() map[string]*RequestEntity{
+// 查询样本库系统,进行接口任务处理
+func (this *ConverseController) SearchDatabase() map[string]*RequestEntity {
 	svc := GetConverseService(utils.DBE)
 	tasks := svc.ScanNewTaskDetail()
 	var reqMap = make(map[string]*RequestEntity)
@@ -24,40 +26,35 @@ func (this *ConverseController) SearchDatabase() map[string]*RequestEntity{
 	//依次处理每一条新任务信息
 	for _, value := range tasks {
 		//如果没有任务实体, 则创建新任务实体
-		if _,ok := reqMap[value.Task_id]; !ok{
-			entity := svc.GenerateRequestEntity(value.Task_type,value.Task_id)
+		if _, ok := reqMap[value.Task_id]; !ok {
+			entity := svc.GenerateRequestEntity(value.Task_type, value.Task_id)
 			reqMap[value.Task_id] = entity
 		}
 		//处理任务详细
-		svc.HandleTaskDetail(value.Task_type,reqMap[value.Task_id], &value)
+		svc.HandleTaskDetail(value.Task_type, reqMap[value.Task_id], &value)
 	}
-	for _,v := range reqMap{
+	for _, v := range reqMap {
 		log.Println("****************************")
-		 m,_ := json.Marshal(v)
+		m, _ := json.Marshal(v)
 		log.Println(string(m))
 	}
 	return reqMap
 }
 
-
 //建立会话
 func (this *ConverseController) GetConnection(c *websocket.Conn) {
-	// 建立会话
 	log.Println("建立会话")
 	svc := GetConverseService(utils.DBE)
 	utc := time.Now().UTC().Format(time.RFC3339)
 	req := svc.GetSessionSetupRequest(utc)
 
-	msg,_ := json.Marshal(req)
-	log.Printf("setup: %s",msg)
+	msg, _ := json.Marshal(req)
+	log.Printf("session_setup: %s", msg)
 
-	this.SendMessage(req,c)
-	//err := c.WriteJSON(req)
-	//if err != nil {
-	//	log.Println("write:", err)
-	//}
+	this.SendMessage(req, c)
 }
 
+// 发送消息给接口服务
 func (this *ConverseController) SendMessage(req *RequestEntity, conn *websocket.Conn) {
 	err := conn.WriteJSON(&req)
 	if err != nil {
@@ -65,16 +62,16 @@ func (this *ConverseController) SendMessage(req *RequestEntity, conn *websocket.
 	}
 }
 
-//修改任务状态码
-func (this *ConverseController) StatusModify(statusCode int , task_id string) error{
+// 修改任务状态码
+func (this *ConverseController) StatusModify(statusCode int, task_id string) error {
 	svc := GetConverseService(utils.DBE)
 	//修改任务表任务状态
-	err := svc.TaskStatusModify(statusCode,task_id)
+	err := svc.TaskStatusModify(statusCode, task_id)
 	if err != nil {
 		return err
 	}
 	//修改出入库任务状态
-	err = svc.SampleApplyStatusModify(statusCode,task_id)
+	err = svc.SampleApplyStatusModify(statusCode, task_id)
 	if err != nil {
 		return err
 	}
@@ -104,10 +101,10 @@ func (this *ConverseController) StatusModify(statusCode int , task_id string) er
 //	}
 //}
 
-//处理读到的信息
-func (this *ConverseController) HandleMessage(n int, message []byte){
+// 处理基点接口返回的信息
+func (this *ConverseController) HandleMessage(n int, message []byte) {
 	var res ResponseEntity
-	json.Unmarshal(message,&res)
+	json.Unmarshal(message, &res)
 
 	resp := res.Response
 	result := res.Result
@@ -132,13 +129,13 @@ func (this *ConverseController) HandleMessage(n int, message []byte){
 		if taskType == "end" {
 			log.Println(">>>>>>>>>>修改成功状态>>>>>>>>>>")
 			if isEnd {
-				err = this.StatusModify(SUCCESS,taskId)
+				err = this.StatusModify(SUCCESS, taskId)
 			}
 			svc := GetConverseService(utils.DBE)
-			svc.ModifySampleStatusByApplyMainInfo(taskId,resp,res)
+			svc.ModifySampleStatusByApplyMainInfo(taskId, resp, res)
 
 			//this.SampleAllStatusModify(res,SUCCESS)
-		}else if  taskType== "abnormal_end" {
+		} else if taskType == "abnormal_end" {
 			if isEnd {
 				log.Println("----------修改失败状态----------")
 				//保存异常信息
@@ -146,30 +143,30 @@ func (this *ConverseController) HandleMessage(n int, message []byte){
 				err = this.StatusModify(FAILED, taskId)
 			}
 			svc := GetConverseService(utils.DBE)
-			svc.ModifySampleStatusByApplyMainInfo(taskId,resp,res)
+			svc.ModifySampleStatusByApplyMainInfo(taskId, resp, res)
 			//this.SamplePartsStatusModify(res)
-		}else if taskType == "task_activate" {
+		} else if taskType == "task_activate" {
 			log.Println(">>>>>>>>>>修改激活状态>>>>>>>>>>")
 			if res.Data.Status == 3 {
-				err = this.StatusModify(REJECT,taskId)
-			}else {
-				err = this.StatusModify(ACTIVE,taskId)
+				err = this.StatusModify(REJECT, taskId)
+			} else {
+				err = this.StatusModify(ACTIVE, taskId)
 			}
-		}else if taskType == "accept" {
+		} else if taskType == "accept" {
 			log.Println(">>>>>>>>>>修改接受状态>>>>>>>>>>")
-			err = this.StatusModify(ACCEPT,taskId)
-		}else if taskType == "running" {
+			err = this.StatusModify(ACCEPT, taskId)
+		} else if taskType == "running" {
 			log.Println(">>>>>>>>>>修改执行中状态>>>>>>>>>>")
-			err = this.StatusModify(RUNNING,taskId)
+			err = this.StatusModify(RUNNING, taskId)
 		}
-	}else if result == 300 && taskType == "reject"{
-				log.Println("----------修改失败状态----------")
-				//保存异常信息
-				this.SaveExcepMsg(res,taskId)
-				err = this.StatusModify(REJECT,taskId)
-				//this.SampleAllStatusModify(res,REJECT)
-				svc := GetConverseService(utils.DBE)
-				svc.ModifySampleAllRejectStatus(res)
+	} else if result == 300 && taskType == "reject" {
+		log.Println("----------修改失败状态----------")
+		//保存异常信息
+		this.SaveExcepMsg(res, taskId)
+		err = this.StatusModify(REJECT, taskId)
+		//this.SampleAllStatusModify(res,REJECT)
+		svc := GetConverseService(utils.DBE)
+		svc.ModifySampleAllRejectStatus(res)
 	}
 
 	if err != nil {
@@ -178,7 +175,7 @@ func (this *ConverseController) HandleMessage(n int, message []byte){
 }
 
 //保存异常信息
-func (this *ConverseController) SaveExcepMsg(res ResponseEntity,taskId string) {
+func (this *ConverseController) SaveExcepMsg(res ResponseEntity, taskId string) {
 	svc := GetConverseService(utils.DBE)
 	//causeByte,_ := json.Marshal(res.Data.Causes)
 	//causeMsg := string(causeByte)
@@ -188,29 +185,27 @@ func (this *ConverseController) SaveExcepMsg(res ResponseEntity,taskId string) {
 	//abnormalMsg := string(abnormalByte)
 
 	var totalMsg string
-	if causeMsg != "" && exceptMsg == ""{
+	if causeMsg != "" && exceptMsg == "" {
 		totalMsg = causeMsg
-	}else if causeMsg == "" && exceptMsg != ""{
+	} else if causeMsg == "" && exceptMsg != "" {
 		totalMsg = exceptMsg
-	}else if causeMsg != "" && exceptMsg == "" {
+	} else if causeMsg != "" && exceptMsg == "" {
 		totalMsg = causeMsg + "\\r\\n\\r\\n" + exceptMsg
 	}
 
 	if totalMsg != "" {
-		svc.SaveTaskExcepMsg(totalMsg,taskId)
-		svc.SaveSampleExcepMsg(totalMsg,taskId)
+		svc.SaveTaskExcepMsg(totalMsg, taskId)
+		svc.SaveSampleExcepMsg(totalMsg, taskId)
 	} else {
 		//任务再次执行成功时,删除已有的异常信息
-		svc.SaveTaskExcepMsg(" ",taskId)
-		svc.SaveSampleExcepMsg(" ",taskId)
+		svc.SaveTaskExcepMsg(" ", taskId)
+		svc.SaveSampleExcepMsg(" ", taskId)
 	}
 }
 
-
-
 //清理已完成任务信息
-func (this *ConverseController) DeleteAccomplishedTask() error{
-	where := "statuscode = '"+ strconv.Itoa(SUCCESS) +"'"
+func (this *ConverseController) DeleteAccomplishedTask() error {
+	where := "statuscode = '" + strconv.Itoa(SUCCESS) + "'"
 	svc := GetConverseService(utils.DBE)
 	err := svc.DeleteEntityBytbl(TABLE_TAST, where)
 	log.Println("===============清除任务信息===============")
@@ -220,5 +215,3 @@ func (this *ConverseController) DeleteAccomplishedTask() error{
 	}
 	return nil
 }
-
-

+ 51 - 45
src/dashoo.cn/api/main.go

@@ -1,11 +1,7 @@
 package main
 
 import (
-	"dashoo.cn/api/business/converseService"
-	"dashoo.cn/api/controllers/converse"
-	"dashoo.cn/utils"
 	"fmt"
-	"github.com/robfig/cron"
 	"log"
 	"os"
 	"os/signal"
@@ -13,7 +9,13 @@ import (
 	"strconv"
 	"strings"
 	"time"
+
 	"github.com/gorilla/websocket"
+	"github.com/robfig/cron"
+
+	"dashoo.cn/api/business/converseService"
+	"dashoo.cn/api/controllers/converse"
+	"dashoo.cn/utils"
 )
 
 //const gpServiceUrl = "ws://39.105.83.226:22225/socket"
@@ -22,19 +24,23 @@ import (
 //const gpServiceUrl = "ws://fdgfghfg.oicp.net:23248/socket"
 //var gpServiceUrl = "ws://270100d53m.wicp.vip:46538/socket"
 //var gpServiceUrl = "ws://39.105.83.226:22225/socket"
+
+// 基点接口服务器地址
 var gpServiceUrl string
 
-//var conn *websocket.Conn
 var err error
 var ctrl converse.ConverseController
 var disconnect = make(chan bool)
 
 func main() {
 	utils.LoadConfig("conf/app.conf")
-	initgpServiceUrl()
+
+	// 初始化基点接口服务器
+	initGpServiceUrl()
 
 	// Initialize data.
 	utils.InitDb()
+
 	//定期清理已完成任务信息
 	go ClearSuccessfulTask()
 
@@ -43,32 +49,29 @@ func main() {
 	var done = make(chan struct{})
 	defer close(done)
 
-	//建立websocket连接
+	//建立websocket连接,连接基点接口
 	var conn *websocket.Conn
 	conn = WebSocketFound()
-	log.Println("连接成功: ", conn!=nil)
+	log.Println("WebSocket连接状态: ", conn != nil)
 	if conn != nil {
 		defer conn.Close()
-		//建立连接
+		// 建立基点接口连接
 		ctrl.GetConnection(conn)
-		//发送请求
-		 go ListenToSendMsg(conn)
-		//监听消息
+		// 查询任务,发送请求给基点接口
+		go ListenToSendMsg(conn)
+		// 监听基点接口返回的消息
 		go ListenToReadMsg(conn)
-	}else{
+	} else {
 		//设置连接失败
 		go SetDisconnect()
 	}
 
-
-
 	for {
 
 		select {
 		case <-done:
 			//return
 
-
 			//		case t := <-ticker.C:
 			//			err := c.WriteMessage(websocket.TextMessage, []byte(t.String()))
 			//			if err != nil {
@@ -86,25 +89,25 @@ func main() {
 				//return
 			}
 			select {
-				case <-done:
-				case <-time.After(time.Second*10):
+			case <-done:
+			case <-time.After(time.Second * 10):
 
 			}
 			//return
 		case <-disconnect:
 			log.Println("服务器连接已断开!")
 			for {
-				select{
-					case <-time.After(time.Second*10):
-						conn = WebSocketFound()
-						if conn != nil {
-							defer conn.Close()
-							ctrl.GetConnection(conn)
-							go ListenToSendMsg(conn)
-							go ListenToReadMsg(conn)
-							goto label
-						}
-						log.Println("连接失败, 等待重新连接........")
+				select {
+				case <-time.After(time.Second * 10):
+					conn = WebSocketFound()
+					if conn != nil {
+						defer conn.Close()
+						ctrl.GetConnection(conn)
+						go ListenToSendMsg(conn)
+						go ListenToReadMsg(conn)
+						goto label
+					}
+					log.Println("连接失败, 等待重新连接........")
 				}
 
 			}
@@ -117,7 +120,8 @@ func main() {
 	//conn.Close()
 }
 
-func WebSocketFound() *websocket.Conn{
+// 初始化WebSocket,连接基点接口
+func WebSocketFound() *websocket.Conn {
 	log.Printf("connecting to %s", gpServiceUrl)
 	conn, _, err := websocket.DefaultDialer.Dial(gpServiceUrl, nil)
 	if err != nil {
@@ -127,8 +131,8 @@ func WebSocketFound() *websocket.Conn{
 	return conn
 }
 
-// 监听消息
-func ListenToReadMsg(conn *websocket.Conn) (pid int){
+// 监听基点接口返回消息
+func ListenToReadMsg(conn *websocket.Conn) (pid int) {
 	log.Println("监听消息>>>>>>>>>>>>>>>>>>>")
 	pid = Goid()
 	for {
@@ -140,29 +144,31 @@ func ListenToReadMsg(conn *websocket.Conn) (pid int){
 			return
 		}
 		log.Printf("recv: %s", message)
-		ctrl.HandleMessage(n,message)
+		ctrl.HandleMessage(n, message)
 	}
 }
 
-//发送请求
-func ListenToSendMsg(conn *websocket.Conn){
+// 定时查询接口任务,给基点接口发送请求
+func ListenToSendMsg(conn *websocket.Conn) {
 	log.Println("发送消息>>>>>>>>>>>>>>>>>>>")
 	cron := cron.New()
-	tick := "*/5 * * * * ?"
+	// 定时规则:每隔10秒执行一次
+	tick := "*/10 * * * * ?"
 	err = cron.AddFunc(tick, func() {
-		//如果已连接则发送任务
-
+		// 查询任务,生成指令
 		reqMap := ctrl.SearchDatabase()
 		if err != nil {
 			log.Println("read err:", err)
 		}
 		//判断conn是否还在  todo
 
-		for taskId,reqEntity := range reqMap {
+		// 发送消息
+		for taskId, reqEntity := range reqMap {
 			err := conn.WriteJSON(reqEntity)
 			if err != nil {
 				log.Println("write err:", err)
-			}else{
+			} else {
+				// 发送成功,修改状态
 				err = ctrl.StatusModify(converseService.SENT, taskId)
 			}
 		}
@@ -170,7 +176,7 @@ func ListenToSendMsg(conn *websocket.Conn){
 	cron.Start()
 }
 
-//定期清理任务表已完成信息
+// 定期清理任务表已完成信息
 func ClearSuccessfulTask() {
 	log.Println("清理任务定时任务启动>>>>>>>>>>>>>>>>>>>")
 	cron := cron.New()
@@ -185,12 +191,11 @@ func ClearSuccessfulTask() {
 	cron.Start()
 }
 
-func SetDisconnect(){
+func SetDisconnect() {
 	log.Println("设置连接断开状态")
 	disconnect <- true
 }
 
-
 func Goid() int {
 	defer func() {
 		if err := recover(); err != nil {
@@ -208,6 +213,7 @@ func Goid() int {
 	return id
 }
 
-func initgpServiceUrl(){
+// 初始化基点接口服务器
+func initGpServiceUrl() {
 	gpServiceUrl = utils.Cfg.MustValue("server", "gpServiceUrl")
-}
+}