Browse Source

添加修改工作流实例form表单数据

huangyh 5 years ago
parent
commit
0745198b08

+ 51 - 43
controllers/gen/SysWfController_gen.go

@@ -1,12 +1,11 @@
-
 package gen
 
 import (
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
 	"github.com/gin-gonic/gin"
-	
+
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/controllers/partial"
-	
+
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
 )
 
@@ -20,173 +19,182 @@ func NewSysWfController(e *engine.ApiEngine) *SysWfController {
 	return controller
 }
 
-
-
 // WfInstanceList
 // @Title WfInstanceList
-// @Description 分页获取流程实例         
-// @Param	      false  ""  
+// @Description 分页获取流程实例
+// @Param	      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /wf_instance_list  [get]
 func (c *SysWfController) WfInstanceList(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_WfInstanceList(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // InstanceStepCurrent
 // @Title InstanceStepCurrent
-// @Description 实例当前状态         
-// @Param	instance_id      false  ""  
+// @Description 实例当前状态
+// @Param	instance_id      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /instance_step_current  [get]
 func (c *SysWfController) InstanceStepCurrent(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_InstanceStepCurrent(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // Prerun
 // @Title Prerun
-// @Description 运行实例前奏         
-// @Param	      false  ""  
+// @Description 运行实例前奏
+// @Param	      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /prerun  [post]
 func (c *SysWfController) Prerun(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_Prerun(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // Run
 // @Title Run
-// @Description 运行实例         
-// @Param	      false  ""  
+// @Description 运行实例
+// @Param	      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /run  [post]
 func (c *SysWfController) Run(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_Run(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // WfDefinesTag
 // @Title WfDefinesTag
-// @Description 根据tag获取工作流事项         
-// @Param	tag      false  ""  
+// @Description 根据tag获取工作流事项
+// @Param	tag      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /wf_defines_tag  [get]
 func (c *SysWfController) WfDefinesTag(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_WfDefinesTag(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // WfDefineForm
 // @Title WfDefineForm
-// @Description 根据表单名称获取表单         
-// @Param	form      false  ""  
+// @Description 根据表单名称获取表单
+// @Param	form      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /wf_define_form  [get]
 func (c *SysWfController) WfDefineForm(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_WfDefineForm(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // Recall
 // @Title Recall
-// @Description 撤回         
-// @Param	instance_id      false  ""  
+// @Description 撤回
+// @Param	instance_id      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /recall  [post]
 func (c *SysWfController) Recall(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_Recall(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // Designer
 // @Title Designer
-// @Description 修改流程定义         
-// @Param	define_id      false  ""  
+// @Description 修改流程定义
+// @Param	define_id      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /designer  [get]
 func (c *SysWfController) Designer(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_Designer(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // DefineSave
 // @Title DefineSave
-// @Description 保存流程定义         
-// @Param	      false  ""  
+// @Description 保存流程定义
+// @Param	      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /define_save  [post]
 func (c *SysWfController) DefineSave(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_DefineSave(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // DefineCreate
 // @Title DefineCreate
-// @Description 创建流程定义         
-// @Param	      false  ""  
+// @Description 创建流程定义
+// @Param	      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /define_create  [post]
 func (c *SysWfController) DefineCreate(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_DefineCreate(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // CreateInstance
 // @Title CreateInstance
-// @Description 创建流程实例         
-// @Param	      false  ""  
+// @Description 创建流程实例
+// @Param	      false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /create_instance  [post]
 func (c *SysWfController) CreateInstance(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_CreateInstance(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // Define
 // @Title Define
-// @Description 获取流程定义         
-// @Param	define_id    string  false  ""  
+// @Description 获取流程定义
+// @Param	define_id    string  false  ""
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /define  [get]
 func (c *SysWfController) Define(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_Define(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
 // AllDefine
 // @Title AllDefine
-// @Description 获取所有流程定义         
+// @Description 获取所有流程定义
 // @Success 200 {object} sysReturn
 // @Failure 403 :id is empty
 // @router /all_define  [get]
 func (c *SysWfController) AllDefine(ctx *gin.Context) {
 	//
-	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
 	partial.SysWf_AllDefine(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
+// UpdateIntanceForm
+// @Title UpdateIntanceForm
+// @Description 更新流程实例form表单
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /update_intance_form  [post]
+func (c *SysWfController) UpdateIntanceForm(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysWf_UpdateIntanceForm(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}

+ 29 - 5
controllers/partial/SysWfController.go

@@ -1,16 +1,15 @@
-
 package partial
 
 import (
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
 	//sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
-    //sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
+	//sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
+	"fmt"
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
 	sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/wfclient"
 	"strconv"
-	"fmt"
-//__import_packages__
+	//__import_packages__
 )
 
 // _WfInstanceList
@@ -281,7 +280,32 @@ func SysWf_AllDefine(c *entitys.CtrlContext) {
 	}
 }
 
+// _UpdateIntanceForm
+// @Title _UpdateIntanceForm
+// @Description 更新流程实例form表单
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysWf_UpdateIntanceForm(c *entitys.CtrlContext) {
+
+	var data struct {
+		InstanceId string `json:"instance_id"`
+		FormData   string `json:"form_data"`
+	}
+	err := c.Ctx.BindJSON(&data)
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+		return
+	}
+
+	bytess, err := wfclient.Instance().UpdateInstanceForm(data.InstanceId, data.FormData)
+	if err == nil {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", string(bytess)})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), ""})
+	}
+
+}
 
-func __none_func_sys_wf__(params ... interface{}) bool{
+func __none_func_sys_wf__(params ...interface{}) bool {
 	return true
 }

+ 6 - 0
light-apiengine.xml

@@ -882,6 +882,12 @@
 					<failure ref="$sys_return" desc=""></failure>
 				</return>
 			</api>
+            <api name="update_intance_form" desc="更新流程实例form表单" method="post">
+                <return>
+                    <success ref="$sys_return" desc=""></success>
+                    <failure ref="$sys_return" desc=""></failure>
+                </return>
+            </api>
 		</controller>
 		<controller name="sys_public" desc="开放接口" skip_login="true">
             <api name="wx_echo" desc="微信echo" method="get">

+ 22 - 23
routers/sys_wf_gen.go

@@ -1,65 +1,64 @@
-
 package routers
 
 import (
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/controllers/gen"
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/middleware"
-	"git.qianqiusoft.com/qianqiusoft/light-apiengine/controllers/gen"
 )
 
-func init(){
+func init() {
 	addRegisterHandler(registerSysWfRouter)
 }
 
-func registerSysWfRouter(e *engine.ApiEngine){
-	api:=e.GinEngine.Group("/api")
-	v1:=api.Group("/v1/sys_wf")
+func registerSysWfRouter(e *engine.ApiEngine) {
+	api := e.GinEngine.Group("/api")
+	v1 := api.Group("/v1/sys_wf")
 	v1.Use(middleware.LoginWare())
-	if len(_router["sys_wf"]) >0 {
+	if len(_router["sys_wf"]) > 0 {
 		v1.Use(_router["sys_wf"]...)
 	}
 	ctrler := gen.NewSysWfController(e)
 
-
-
-	v1.GET("/wf_instance_list",ctrler.WfInstanceList)
+	v1.GET("/wf_instance_list", ctrler.WfInstanceList)
 	//v1.POST("/wf_instance_list",ctrler.WfInstanceList)
 
-	v1.GET("/instance_step_current",ctrler.InstanceStepCurrent)
+	v1.GET("/instance_step_current", ctrler.InstanceStepCurrent)
 	//v1.POST("/instance_step_current",ctrler.InstanceStepCurrent)
 
 	//v1.GET("/prerun",ctrler.Prerun)
-	v1.POST("/prerun",ctrler.Prerun)
+	v1.POST("/prerun", ctrler.Prerun)
 
 	//v1.GET("/run",ctrler.Run)
-	v1.POST("/run",ctrler.Run)
+	v1.POST("/run", ctrler.Run)
 
-	v1.GET("/wf_defines_tag",ctrler.WfDefinesTag)
+	v1.GET("/wf_defines_tag", ctrler.WfDefinesTag)
 	//v1.POST("/wf_defines_tag",ctrler.WfDefinesTag)
 
-	v1.GET("/wf_define_form",ctrler.WfDefineForm)
+	v1.GET("/wf_define_form", ctrler.WfDefineForm)
 	//v1.POST("/wf_define_form",ctrler.WfDefineForm)
 
 	//v1.GET("/recall",ctrler.Recall)
-	v1.POST("/recall",ctrler.Recall)
+	v1.POST("/recall", ctrler.Recall)
 
-	v1.GET("/designer",ctrler.Designer)
+	v1.GET("/designer", ctrler.Designer)
 	//v1.POST("/designer",ctrler.Designer)
 
 	//v1.GET("/define_save",ctrler.DefineSave)
-	v1.POST("/define_save",ctrler.DefineSave)
+	v1.POST("/define_save", ctrler.DefineSave)
 
 	//v1.GET("/define_create",ctrler.DefineCreate)
-	v1.POST("/define_create",ctrler.DefineCreate)
+	v1.POST("/define_create", ctrler.DefineCreate)
 
 	//v1.GET("/create_instance",ctrler.CreateInstance)
-	v1.POST("/create_instance",ctrler.CreateInstance)
+	v1.POST("/create_instance", ctrler.CreateInstance)
 
-	v1.GET("/define",ctrler.Define)
+	v1.GET("/define", ctrler.Define)
 	//v1.POST("/define",ctrler.Define)
 
-	v1.GET("/all_define",ctrler.AllDefine)
+	v1.GET("/all_define", ctrler.AllDefine)
 	//v1.POST("/all_define",ctrler.AllDefine)
 
-}
+	//v1.GET("/update_intance_form",ctrler.UpdateIntanceForm)
+	v1.POST("/update_intance_form", ctrler.UpdateIntanceForm)
 
+}

+ 11 - 0
wfclient/client.go

@@ -190,6 +190,17 @@ func (w *WFClient) CreateInstance(defineId, name, formData string) ([]byte, erro
 	return HttpClientInstance().post(url, params, nil)
 }
 
+// 更新流程实例表单
+func (w *WFClient) UpdateInstanceForm(instanceId, formData string) ([]byte, error) {
+	url := w.getFullUrl("api/wf_instance/updateFormData")
+
+	params := make(map[string]string)
+	params["instance_id"] = instanceId
+	params["form_data"] = formData
+
+	return HttpClientInstance().post(url, params, nil)
+}
+
 type Choice struct {
 	XMLName xml.Name   `xml:"choice"json:"-"`
 	Name    string     `json:"name"xml:"name"`

+ 18 - 14
wfclient/http.go

@@ -24,8 +24,8 @@ var httpInstance *HttpClient = nil
 /**
  * @brief: single instance
  */
-func HttpClientInstance()*HttpClient{
-	if httpInstance == nil{
+func HttpClientInstance() *HttpClient {
+	if httpInstance == nil {
 		httpInstance = &HttpClient{}
 	}
 	return httpInstance
@@ -35,7 +35,7 @@ func HttpClientInstance()*HttpClient{
  * @brief: set interseptor of request
  * @param1 interseptor: interseptor
  */
-func (h *HttpClient)setRequestInterseptor(interseptor func(r *http.Request)){
+func (h *HttpClient) setRequestInterseptor(interseptor func(r *http.Request)) {
 	h.reqInterseptor = interseptor
 }
 
@@ -47,17 +47,17 @@ func (h *HttpClient)setRequestInterseptor(interseptor func(r *http.Request)){
  * @return1: content of response
  * @return2: error
  */
-func (h *HttpClient)get(url string, params map[string]string, headers map[string]string) ([]byte, error) {
+func (h *HttpClient) get(url string, params map[string]string, headers map[string]string) ([]byte, error) {
 	return h.doRequest("GET", url, params, headers)
 }
 
 // post
-func (h *HttpClient)post(url string, params map[string]string, headers map[string]string) ([]byte, error) {
+func (h *HttpClient) post(url string, params map[string]string, headers map[string]string) ([]byte, error) {
 	return h.doRequest("POST", url, params, headers)
 }
 
 // 模拟form提交数据,包含,上传文件
-func (h *HttpClient)postFormWithFile(url string, params map[string]string, paramName, path string) ([]byte, error) {
+func (h *HttpClient) postFormWithFile(url string, params map[string]string, paramName, path string) ([]byte, error) {
 	file, err := os.Open(path)
 	if err != nil {
 		return nil, err
@@ -67,7 +67,7 @@ func (h *HttpClient)postFormWithFile(url string, params map[string]string, param
 }
 
 // 模拟form提交数据,包含,上传文件
-func (h *HttpClient)postFormWithReader(url string, params map[string]string, fileField, fileName string, r io.Reader) ([]byte, error) {
+func (h *HttpClient) postFormWithReader(url string, params map[string]string, fileField, fileName string, r io.Reader) ([]byte, error) {
 	body := &bytes.Buffer{}
 	writer := multipart.NewWriter(body)
 	part, err := writer.CreateFormFile(fileField, fileName)
@@ -87,12 +87,12 @@ func (h *HttpClient)postFormWithReader(url string, params map[string]string, fil
 	return h.getResponse(request)
 }
 
-func (h *HttpClient)doRequest(method string, url string, params map[string]string, headers map[string]string) ([]byte, error) {
+func (h *HttpClient) doRequest(method string, url string, params map[string]string, headers map[string]string) ([]byte, error) {
 	bodystr := ""
 	var r http.Request
-	if method == "GET"{
+	if method == "GET" {
 		url = h.getUrlWithParams(url, params)
-	}else {
+	} else {
 		bodystr = h.getBobyStr(&r, params)
 	}
 	request, err := http.NewRequest(method, url, strings.NewReader(bodystr))
@@ -107,13 +107,13 @@ func (h *HttpClient)doRequest(method string, url string, params map[string]strin
 			request.Header.Set(k, v)
 		}
 	}
-	if h.reqInterseptor != nil{
+	if h.reqInterseptor != nil {
 		h.reqInterseptor(request)
 	}
 	return h.getResponse(request)
 }
 
-func (h *HttpClient)getResponse(request *http.Request) ([]byte, error) {
+func (h *HttpClient) getResponse(request *http.Request) ([]byte, error) {
 	if request == nil {
 		return []byte(""), errors.New("request is nil")
 	}
@@ -130,6 +130,10 @@ func (h *HttpClient)getResponse(request *http.Request) ([]byte, error) {
 		//log.Println("http.Do failed,[err=%s][url=%s]", err, url)
 		return []byte(""), err
 	}
+	if resp.Status != "200 OK" {
+		b, _ := ioutil.ReadAll(resp.Body)
+		return []byte(""), errors.New(string(b))
+	}
 	defer resp.Body.Close()
 	b, err := ioutil.ReadAll(resp.Body)
 	if err != nil {
@@ -138,7 +142,7 @@ func (h *HttpClient)getResponse(request *http.Request) ([]byte, error) {
 	return b, err
 }
 
-func (h *HttpClient)getBobyStr(r *http.Request, params map[string]string)string{
+func (h *HttpClient) getBobyStr(r *http.Request, params map[string]string) string {
 	r.ParseForm()
 	if params != nil {
 		for k, v := range params {
@@ -148,7 +152,7 @@ func (h *HttpClient)getBobyStr(r *http.Request, params map[string]string)string{
 	return strings.TrimSpace(r.Form.Encode())
 }
 
-func (h *HttpClient)getUrlWithParams(urlstr string, params map[string]string)string {
+func (h *HttpClient) getUrlWithParams(urlstr string, params map[string]string) string {
 	if params != nil && len(params) > 0 {
 		i := strings.Index(urlstr, "?")
 		if i < 0 {