commit
a529d695b6
@ -121,6 +121,7 @@ QQ群:1127401830
|
||||
| :---- | :---- |
|
||||
| KAKA | 100元 |
|
||||
| 劉鑫 | 30元 |
|
||||
| *锋 | 30元 |
|
||||
| 老白@天智 | 20元 |
|
||||
| J*f | 20元 |
|
||||
| 吻住,我们能赢 | 10.24元 |
|
||||
@ -128,7 +129,7 @@ QQ群:1127401830
|
||||
| Super_z | 10元 |
|
||||
| T*i | 10元 |
|
||||
| *伟 | 10元 |
|
||||
| *伟 | 10元 |
|
||||
| *郎 | 8元 |
|
||||
| *上 | 5元 |
|
||||
| *Sam . Chai | 5元 |
|
||||
| *悟 | 3元 |
|
||||
|
@ -81,7 +81,7 @@ func WorkOrderList(c *gin.Context) {
|
||||
classifyInt int
|
||||
)
|
||||
|
||||
classify := c.DefaultQuery("classify", "0")
|
||||
classify := c.DefaultQuery("classify", "")
|
||||
if classify == "" {
|
||||
app.Error(c, -1, errors.New("参数错误,请确认classify是否传递"), "")
|
||||
return
|
||||
|
@ -31,6 +31,8 @@ func CreateWorkOrder(c *gin.Context) (err error) {
|
||||
processState ProcessState
|
||||
condExprStatus bool
|
||||
tpl []byte
|
||||
sourceEdges []map[string]interface{}
|
||||
targetEdges []map[string]interface{}
|
||||
workOrderValue struct {
|
||||
process.WorkOrderInfo
|
||||
Tpls map[string][]interface{} `json:"tpls"`
|
||||
@ -137,8 +139,48 @@ func CreateWorkOrder(c *gin.Context) (err error) {
|
||||
return
|
||||
}
|
||||
case "parallelGateway":
|
||||
err = fmt.Errorf("新建工单无法使用并行网关,%v", err)
|
||||
return
|
||||
// 入口,判断
|
||||
sourceEdges, err = processState.GetEdge(nodeValue["id"].(string), "source")
|
||||
if err != nil {
|
||||
err = fmt.Errorf("查询流转信息失败,%v", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
targetEdges, err = processState.GetEdge(nodeValue["id"].(string), "target")
|
||||
if err != nil {
|
||||
err = fmt.Errorf("查询流转信息失败,%v", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if len(sourceEdges) > 0 {
|
||||
nodeValue, err = processState.GetNode(sourceEdges[0]["target"].(string))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = errors.New("并行网关流程不正确")
|
||||
return
|
||||
}
|
||||
|
||||
if len(sourceEdges) > 1 && len(targetEdges) == 1 {
|
||||
// 入口
|
||||
variableValue = []interface{}{}
|
||||
for _, edge := range sourceEdges {
|
||||
targetStateValue, err := processState.GetNode(edge["target"].(string))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
variableValue = append(variableValue, map[string]interface{}{
|
||||
"id": edge["target"].(string),
|
||||
"label": targetStateValue["label"],
|
||||
"processor": targetStateValue["assignValue"],
|
||||
"process_method": targetStateValue["assignType"],
|
||||
})
|
||||
}
|
||||
} else {
|
||||
err = errors.New("并行网关流程配置不正确")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// 获取变量数据
|
||||
|
@ -243,7 +243,7 @@ func (h *Handle) ConditionalJudgment(condExpr map[string]interface{}) (result bo
|
||||
}
|
||||
|
||||
// 并行网关,确认其他节点是否完成
|
||||
func (h *Handle) completeAllParallel(c *gin.Context, target string) (statusOk bool, err error) {
|
||||
func (h *Handle) completeAllParallel(target string) (statusOk bool, err error) {
|
||||
var (
|
||||
stateList []map[string]interface{}
|
||||
)
|
||||
@ -548,7 +548,7 @@ func (h *Handle) HandleWorkOrder(
|
||||
}
|
||||
} else if len(sourceEdges) == 1 && len(targetEdges) > 1 {
|
||||
// 出口
|
||||
parallelStatusOk, err = h.completeAllParallel(c, sourceEdges[0]["target"].(string))
|
||||
parallelStatusOk, err = h.completeAllParallel(sourceEdges[0]["target"].(string))
|
||||
if err != nil {
|
||||
err = fmt.Errorf("并行检测失败,%v", err.Error())
|
||||
return
|
||||
|
@ -24,6 +24,7 @@ type WorkOrder struct {
|
||||
type workOrderInfo struct {
|
||||
process.WorkOrderInfo
|
||||
Principals string `json:"principals"`
|
||||
StateName string `json:"state_name"`
|
||||
DataClassify int `json:"data_classify"`
|
||||
}
|
||||
|
||||
@ -98,8 +99,10 @@ func (w *WorkOrder) PureWorkOrderList() (result interface{}, err error) {
|
||||
func (w *WorkOrder) WorkOrderList() (result interface{}, err error) {
|
||||
|
||||
var (
|
||||
principals string
|
||||
StateList []map[string]interface{}
|
||||
principals string
|
||||
StateList []map[string]interface{}
|
||||
workOrderInfoList []workOrderInfo
|
||||
minusTotal int
|
||||
)
|
||||
|
||||
result, err = w.PureWorkOrderList()
|
||||
@ -107,16 +110,51 @@ func (w *WorkOrder) WorkOrderList() (result interface{}, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
for i, w := range *result.(*pagination.Paginator).Data.(*[]workOrderInfo) {
|
||||
err = json.Unmarshal(w.State, &StateList)
|
||||
for i, v := range *result.(*pagination.Paginator).Data.(*[]workOrderInfo) {
|
||||
err = json.Unmarshal(v.State, &StateList)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("json反序列化失败,%v", err.Error())
|
||||
return
|
||||
}
|
||||
var (
|
||||
stateName string
|
||||
structResult map[string]interface{}
|
||||
authStatus bool
|
||||
)
|
||||
if len(StateList) != 0 {
|
||||
structResult, err = ProcessStructure(w.GinObj, v.Process, v.Id)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
authStatus, err = JudgeUserAuthority(w.GinObj, v.Id, structResult["workOrder"].(WorkOrderData).CurrentState)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if !authStatus {
|
||||
minusTotal += 1
|
||||
continue
|
||||
}
|
||||
|
||||
processorList := make([]int, 0)
|
||||
for _, v := range StateList[0]["processor"].([]interface{}) {
|
||||
processorList = append(processorList, int(v.(float64)))
|
||||
if len(StateList) > 1 {
|
||||
for _, s := range StateList {
|
||||
for _, p := range s["processor"].([]interface{}) {
|
||||
if int(p.(float64)) == tools.GetUserId(w.GinObj) {
|
||||
processorList = append(processorList, int(p.(float64)))
|
||||
}
|
||||
}
|
||||
if len(processorList) > 0 {
|
||||
stateName = s["label"].(string)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(processorList) == 0 {
|
||||
for _, v := range StateList[0]["processor"].([]interface{}) {
|
||||
processorList = append(processorList, int(v.(float64)))
|
||||
}
|
||||
stateName = StateList[0]["label"].(string)
|
||||
}
|
||||
principals, err = GetPrincipal(processorList, StateList[0]["process_method"].(string))
|
||||
if err != nil {
|
||||
@ -126,8 +164,15 @@ func (w *WorkOrder) WorkOrderList() (result interface{}, err error) {
|
||||
}
|
||||
workOrderDetails := *result.(*pagination.Paginator).Data.(*[]workOrderInfo)
|
||||
workOrderDetails[i].Principals = principals
|
||||
workOrderDetails[i].DataClassify = w.Classify
|
||||
workOrderDetails[i].StateName = stateName
|
||||
workOrderDetails[i].DataClassify = v.Classify
|
||||
if authStatus {
|
||||
workOrderInfoList = append(workOrderInfoList, workOrderDetails[i])
|
||||
}
|
||||
}
|
||||
|
||||
result.(*pagination.Paginator).Data = &workOrderInfoList
|
||||
result.(*pagination.Paginator).TotalCount -= minusTotal
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user