| 
					
				 | 
			
			
				@@ -0,0 +1,223 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package nckd.jxccl.base.common.plugins;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSONArray;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.dataentity.entity.DynamicObject;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.dataentity.entity.DynamicObjectCollection;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.dataentity.serialization.SerializationUtils;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.entity.param.CustomParam;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.orm.query.QCP;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.orm.query.QFilter;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.servicehelper.BusinessDataServiceHelper;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.servicehelper.QueryServiceHelper;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.servicehelper.parameter.SystemParamServiceHelper;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.workflow.engine.msg.AbstractMessageServiceHandler;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.workflow.engine.msg.ctx.MessageContext;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.workflow.engine.msg.info.ToDoInfo;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import nckd.jxccl.base.common.ApiClient;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.net.URI;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.HashMap;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class SendMsgServiceHelper extends AbstractMessageServiceHandler
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public String getBaseURI() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CustomParam customParam = new CustomParam();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        customParam.getSearchKeySet().add("NOTICE_TASK_BASE_URI");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, String> cusTomMap = SystemParamServiceHelper.loadCustomParameterFromCache(customParam);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String noticeTaskBaseURL  = cusTomMap.get("NOTICE_TASK_BASE_URI");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return noticeTaskBaseURL;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Integer getSysId() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        CustomParam customParam = new CustomParam();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        customParam.getSearchKeySet().add("NOTICE_TASK_SYSID");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, String> cusTomMap = SystemParamServiceHelper.loadCustomParameterFromCache(customParam);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String sysIdStr =  cusTomMap.get("NOTICE_TASK_SYSID");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return Integer.parseInt(sysIdStr);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void createToDo(MessageContext messageContext, ToDoInfo toDoInfo)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    {//流程创建任务方法
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String content = toDoInfo.getContent();// 标题内容
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String billno = toDoInfo.getBillNo();//单据编码
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        long taskId = toDoInfo.getTaskId();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String fsurl = toDoInfo.getUrl();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String selectProperties = "number";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        long fquserid = messageContext.getStartUserId();// 提交人id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DynamicObjectCollection dynamicObject1 = QueryServiceHelper.query("bos_user", selectProperties, new QFilter("id", QCP.equals, fquserid).toArray());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String fqnumber = "";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (DynamicObject object : dynamicObject1)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            fqnumber = object.getString("number");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Long> userIds = toDoInfo.getUserIds();// 待办任务处理人主键id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DynamicObject[] load = BusinessDataServiceHelper.load("bos_user", "id,phone",new QFilter("id", QCP.in, userIds).toArray());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> usergh = new ArrayList<>();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (DynamicObject user : load)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String number = user.getString("number");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String name = user.getString("name");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            usergh.add(number);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String modelType = "exclusion";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (usergh.size()>1)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            modelType = "countersign";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String apiPath = "/noticeTask/normalSaveTodo"; // 代办新增
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        URI baseURI = URI.create(getBaseURI());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        URI full = baseURI.resolve(apiPath);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String url = full.toString();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HashMap bodyMap = new HashMap();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessAppTodoUrl",fsurl);//移动端待办URL
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "sysId",getSysId());//系统ID
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessId", taskId);//业务主键id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessDoneUrl",fsurl);//已办URL
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "isPushApp", 1);//7.是否推送app消息
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessBillType", "");//zyq会签0909 业务单据类型
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessTodoUrl", fsurl);//待办URL
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "modelType", modelType);//1.审批模式,单人审批(exclusion)/会签(countersign)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "title", content);//标题
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //bodyMap.put( "startBy",fqnumber);//发起人ID
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //bodyMap.put( "createBy",fqnumber);//创建人id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "startByUsername",fqnumber);//发起人ID
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //bodyMap.put( "createBy",fqnumber);//创建人id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessParams","");//业务参数
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessBillCode",billno);//业务单据编码
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //bodyMap.put( "userIds",usergh);//当前待办人
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessType", billno);//3.业务类型  (业务主键+业务类型确定一条单据,同一个流程产生的待办这两个参数一致)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessAppDoneUrl",fsurl);//移动端已办URL
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "userIdUsernames", usergh);//4.待办人id/用户名 集合(二选一)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //bodyMap.put( "deleteUsernames", "");//5.删除待办人id/用户名 集合(二选一)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //bodyMap.put( "taskUserUsername", "");//6.当前处理人id/用户名(二选一)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "showInApp", 1);//是否展示在移动端
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String body = SerializationUtils.toJsonString (bodyMap);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONArray fh = ApiClient.getData(url,body);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void dealToDo(MessageContext messageContext, ToDoInfo toDoInfo)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    {//流程处理任务方法
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String content = toDoInfo.getContent();// 标题内容
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String billno = toDoInfo.getBillNo();//单据编码
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        long taskId = toDoInfo.getTaskId();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Long> userIds = toDoInfo.getUserIds();// 待办任务处理人主键id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DynamicObject[] load = BusinessDataServiceHelper.load("bos_user", "id,phone",new QFilter("id", QCP.in, userIds).toArray());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> usergh = new ArrayList<>();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (DynamicObject user : load)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String number = user.getString("number");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            usergh.add(number);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String taskUserUsername = "";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(!usergh.isEmpty())
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            taskUserUsername = usergh.get(0);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String modelType = "exclusion";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (usergh.size()>1)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            modelType = "countersign";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String apiPath = "/noticeTask/updateTodoAsDone"; // 代办转已办
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        URI baseURI = URI.create(getBaseURI());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        URI full = baseURI.resolve(apiPath);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String url = full.toString();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HashMap bodyMap = new HashMap();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessId",taskId);//业务ID
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessType",billno);//业务类型
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "modelType", modelType);//流程模式(排他模式:exclusion;会签模式 countersign) 默认为排他模式
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "taskUserUsername",taskUserUsername);//当前待办人用户名
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "userIdUsernames", usergh);//当前待办人code
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String body = SerializationUtils.toJsonString (bodyMap);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONArray fh = ApiClient.getData(url,body);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void deleteToDo(MessageContext messageContext, ToDoInfo toDoInfo)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    {//流程删除任务方法
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String billno = toDoInfo.getBillNo();//单据编码
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        long taskId = toDoInfo.getTaskId();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Long> userIds = toDoInfo.getUserIds();// 待办任务处理人主键id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        DynamicObject[] load = BusinessDataServiceHelper.load("bos_user", "id,phone",new QFilter("id", QCP.in, userIds).toArray());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> usergh = new ArrayList<>();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (DynamicObject user : load)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String number = user.getString("number");
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            usergh.add(number);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String modelType = "exclusion";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (usergh.size()>1)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            modelType = "countersign";
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String apiPath = "/noticeTask/noticeTodoDeleteBatch"; //删除待办
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        URI baseURI = URI.create(getBaseURI());
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        URI full = baseURI.resolve(apiPath);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String url = full.toString();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HashMap bodyMap = new HashMap();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessId",taskId);//业务ID
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "modelType", modelType);//流程模式(排他模式:exclusion;会签模式 countersign) 默认为排他模式
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "businessType",billno);//业务类型
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bodyMap.put( "deleteUsernames", usergh);//当前待办人code
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String body = SerializationUtils.toJsonString (bodyMap);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONArray fh = ApiClient.getData(url,body);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    @Override
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public void deleteProcessInstance(MessageContext ctx, Long proceInstanceId)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    {//苍穹删除流程时触发该方法,用户可以在该方法中完成必要业务逻辑。
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        //String billno = ctx.getBillNo();//单据编码
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        //long taskId = ctx.getTaskId();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        //long a = ctx.getStartUserId();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    @Override
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public void completeProcessInstance(MessageContext ctx, Long proceInstanceId)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    {//苍穹流程结束时触发该方法,用户可以在该方法中完成必要业务逻辑。
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        //long taskId = ctx.getTaskId();//流程id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        //String billno = ctx.getBillNo();//单据编码
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        //long a = ctx.getStartUserId();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 |