fix bug.
This commit is contained in:
parent
d8ac56fc53
commit
cfa72920da
@ -16,6 +16,7 @@ import (
|
||||
"github.com/jinzhu/gorm"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
/*
|
||||
@ -73,6 +74,7 @@ func (h *Handle) Countersign(c *gin.Context) (err error) {
|
||||
|
||||
err = json.Unmarshal(h.workOrderDetails.State, &stateList)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -99,6 +101,7 @@ func (h *Handle) Countersign(c *gin.Context) (err error) {
|
||||
h.endHistory = true
|
||||
err = h.circulation()
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -117,11 +120,13 @@ func (h *Handle) circulation() (err error) {
|
||||
}
|
||||
err = GetVariableValue(stateList, h.workOrderDetails.Creator)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
stateValue, err = json.Marshal(h.updateValue["state"])
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -133,6 +138,7 @@ func (h *Handle) circulation() (err error) {
|
||||
}).Error
|
||||
if err != nil {
|
||||
h.tx.Rollback()
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
return
|
||||
@ -155,6 +161,7 @@ func (h *Handle) ConditionalJudgment(condExpr map[string]interface{}) (result bo
|
||||
default:
|
||||
err = errors.New("未知错误")
|
||||
}
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
}()
|
||||
@ -163,6 +170,7 @@ func (h *Handle) ConditionalJudgment(condExpr map[string]interface{}) (result bo
|
||||
var formData map[string]interface{}
|
||||
err = json.Unmarshal(data, &formData)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
if condExprValue, condExprOk = formData[condExpr["key"].(string)]; condExprOk {
|
||||
@ -172,6 +180,7 @@ func (h *Handle) ConditionalJudgment(condExpr map[string]interface{}) (result bo
|
||||
|
||||
if condExprValue == nil {
|
||||
err = errors.New("未查询到对应的表单数据。")
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -237,6 +246,7 @@ func (h *Handle) ConditionalJudgment(condExpr map[string]interface{}) (result bo
|
||||
}
|
||||
default:
|
||||
err = errors.New("条件判断目前仅支持字符串、整型。")
|
||||
log.Error(err)
|
||||
}
|
||||
|
||||
return
|
||||
@ -251,6 +261,7 @@ func (h *Handle) completeAllParallel(c *gin.Context, target string) (statusOk bo
|
||||
err = json.Unmarshal(h.workOrderDetails.State, &stateList)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("反序列化失败,%v", err.Error())
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -282,6 +293,7 @@ func (h *Handle) commonProcessing(c *gin.Context) (err error) {
|
||||
err = h.circulation()
|
||||
if err != nil {
|
||||
err = fmt.Errorf("工单跳转失败,%v", err.Error())
|
||||
log.Error(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
@ -293,23 +305,27 @@ func (h *Handle) commonProcessing(c *gin.Context) (err error) {
|
||||
h.endHistory = false
|
||||
err = h.Countersign(c)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = h.circulation()
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
} else {
|
||||
err = h.circulation()
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
} else {
|
||||
err = h.circulation()
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -358,6 +374,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
default:
|
||||
err = errors.New("未知错误")
|
||||
}
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
}()
|
||||
@ -365,28 +382,33 @@ func (h *Handle) HandleWorkOrder(
|
||||
// 获取工单信息
|
||||
err = orm.Eloquent.Model(&process.WorkOrderInfo{}).Where("id = ?", workOrderId).Find(&h.workOrderDetails).Error
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
// 获取流程信息
|
||||
err = orm.Eloquent.Model(&process.Info{}).Where("id = ?", h.workOrderDetails.Process).Find(&processInfo).Error
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
err = json.Unmarshal(processInfo.Structure, &h.processState.Structure)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
// 获取当前节点
|
||||
h.stateValue, err = h.processState.GetNode(sourceState)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
// 目标状态
|
||||
h.targetStateValue, err = h.processState.GetNode(targetState)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -395,6 +417,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
Where("work_order = ?", workOrderId).
|
||||
Pluck("form_data", &h.workOrderData).Error
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -404,11 +427,13 @@ func (h *Handle) HandleWorkOrder(
|
||||
Order("id desc").
|
||||
Find(&h.cirHistoryList).Error
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
err = json.Unmarshal(h.workOrderDetails.RelatedPerson, &relatedPersonList)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
relatedPersonStatus := false
|
||||
@ -424,6 +449,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
|
||||
relatedPersonValue, err = json.Marshal(relatedPersonList)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -444,6 +470,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
case "exclusiveGateway":
|
||||
sourceEdges, err = h.processState.GetEdge(h.targetStateValue["id"].(string), "source")
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
breakTag:
|
||||
@ -451,24 +478,28 @@ func (h *Handle) HandleWorkOrder(
|
||||
edgeCondExpr := make([]map[string]interface{}, 0)
|
||||
err = json.Unmarshal([]byte(edge["conditionExpression"].(string)), &edgeCondExpr)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
for _, condExpr := range edgeCondExpr {
|
||||
// 条件判断
|
||||
condExprStatus, err = h.ConditionalJudgment(condExpr)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
if condExprStatus {
|
||||
// 进行节点跳转
|
||||
h.targetStateValue, err = h.processState.GetNode(edge["target"].(string))
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
if h.targetStateValue["clazz"] == "userTask" || h.targetStateValue["clazz"] == "receiveTask" {
|
||||
if h.targetStateValue["assignValue"] == nil || h.targetStateValue["assignType"] == "" {
|
||||
err = errors.New("处理人不能为空")
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -482,6 +513,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
err = h.commonProcessing(c)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("流程流程跳转失败,%v", err.Error())
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -491,6 +523,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
}
|
||||
if !condExprStatus {
|
||||
err = errors.New("所有流转均不符合条件,请确认。")
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
// 并行/聚合网关
|
||||
@ -499,22 +532,26 @@ func (h *Handle) HandleWorkOrder(
|
||||
sourceEdges, err = h.processState.GetEdge(h.targetStateValue["id"].(string), "source")
|
||||
if err != nil {
|
||||
err = fmt.Errorf("查询流转信息失败,%v", err.Error())
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
targetEdges, err = h.processState.GetEdge(h.targetStateValue["id"].(string), "target")
|
||||
if err != nil {
|
||||
err = fmt.Errorf("查询流转信息失败,%v", err.Error())
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
if len(sourceEdges) > 0 {
|
||||
h.targetStateValue, err = h.processState.GetNode(sourceEdges[0]["target"].(string))
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = errors.New("并行网关流程不正确")
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -524,6 +561,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
for _, edge := range sourceEdges {
|
||||
targetStateValue, err := h.processState.GetNode(edge["target"].(string))
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return err
|
||||
}
|
||||
h.updateValue["state"] = append(h.updateValue["state"].([]map[string]interface{}), map[string]interface{}{
|
||||
@ -536,6 +574,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
err = h.circulation()
|
||||
if err != nil {
|
||||
err = fmt.Errorf("工单跳转失败,%v", err.Error())
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
} else if len(sourceEdges) == 1 && len(targetEdges) > 1 {
|
||||
@ -543,6 +582,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
parallelStatusOk, err = h.completeAllParallel(c, sourceEdges[0]["target"].(string))
|
||||
if err != nil {
|
||||
err = fmt.Errorf("并行检测失败,%v", err.Error())
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
if parallelStatusOk {
|
||||
@ -566,6 +606,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
err = h.circulation()
|
||||
if err != nil {
|
||||
err = fmt.Errorf("工单跳转失败,%v", err.Error())
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
@ -574,11 +615,13 @@ func (h *Handle) HandleWorkOrder(
|
||||
|
||||
} else {
|
||||
err = errors.New("并行网关流程不正确")
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
// 包容网关
|
||||
case "inclusiveGateway":
|
||||
fmt.Println("inclusiveGateway")
|
||||
log.Error(err)
|
||||
return
|
||||
case "start":
|
||||
stateValue["processor"] = []int{h.workOrderDetails.Creator}
|
||||
@ -586,6 +629,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
h.updateValue["state"] = []map[string]interface{}{stateValue}
|
||||
err = h.circulation()
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
case "userTask":
|
||||
@ -594,6 +638,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
h.updateValue["state"] = []map[string]interface{}{stateValue}
|
||||
err = h.commonProcessing(c)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
case "receiveTask":
|
||||
@ -602,6 +647,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
h.updateValue["state"] = []map[string]interface{}{stateValue}
|
||||
err = h.commonProcessing(c)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
case "scriptTask":
|
||||
@ -615,6 +661,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
err = h.circulation()
|
||||
if err != nil {
|
||||
h.tx.Rollback()
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
err = h.tx.Model(&process.WorkOrderInfo{}).
|
||||
@ -622,6 +669,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
Update("is_end", 1).Error
|
||||
if err != nil {
|
||||
h.tx.Rollback()
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -633,6 +681,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
Order("create_time desc").Error
|
||||
if err != nil {
|
||||
h.tx.Rollback()
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
for _, t := range cirHistoryValue {
|
||||
@ -647,6 +696,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
Where("user_id = ?", tools.GetUserId(c)).
|
||||
Find(¤tUserInfo).Error
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -666,12 +716,14 @@ func (h *Handle) HandleWorkOrder(
|
||||
err = h.tx.Create(&cirHistoryData).Error
|
||||
if err != nil {
|
||||
h.tx.Rollback()
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
// 获取流程通知类型列表
|
||||
err = json.Unmarshal(processInfo.Notice, ¬iceList)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -706,6 +758,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
}).Error
|
||||
if err != nil {
|
||||
h.tx.Rollback()
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
if len(noticeList) > 0 {
|
||||
@ -714,6 +767,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
Where("user_id = ?", h.workOrderDetails.Creator).
|
||||
Find(&sendToUserList).Error
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -727,6 +781,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
go func(bodyData notify.BodyData) {
|
||||
err = bodyData.SendNotify()
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
}(bodyData)
|
||||
@ -739,6 +794,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
if len(noticeList) > 0 {
|
||||
sendToUserList, err = GetPrincipalUserInfo(h.updateValue["state"].([]interface{}), h.workOrderDetails.Creator)
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
@ -752,6 +808,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
go func(bodyData notify.BodyData) {
|
||||
err = bodyData.SendNotify()
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
return
|
||||
}
|
||||
}(bodyData)
|
||||
|
Loading…
x
Reference in New Issue
Block a user