package cn.ey.biz.module.weaver.api;

import cn.ey.biz.module.weaver.common.Constants;
import cn.ey.biz.module.weaver.common.RSP;
import cn.ey.biz.module.weaver.autoconfigure.FeignConfiguration;
import lombok.Data;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;

/**
 * 流程数据：根据 tabids 来获取流程列表 (对外)
 */
@FeignClient(name= Constants.WEAVER_NAME, url="${weaver.service.url}", configuration = FeignConfiguration.class)
public interface GetToDoRequestListService {

    @RequestMapping(method= RequestMethod.POST, value="/api/workflow/paService/getToDoRequestList",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,
            produces = MediaType.TEXT_PLAIN_VALUE)
    RSP<List<ToDoRequestListResponse>> getToDoRequestList(@RequestBody ToDoRequestListRequest request);

    @Data
    class ToDoRequestListRequest{
        ToDoRequestListConditions  conditions;   //非必填
        boolean isMergeShow;	   //非必填	是否主次账号统一显示	"true"
        boolean isNeedOs;	       //非必填	是否显示异构系统数据 ， 为true时还需 设置开启异构系统显示才会显示	"true"
        String pageNo;		       //非必填	要查询的为第几页的数据	"1"
        String pageSize; 	       //非必填	分页时一页多少数据	"10"
        String tabIds;	           //非必填	要查询的范围 如: 0 全部待办 ， 1 未读 ， 多个tabid之间使用 ‘，’ 分隔。 不传默认为0	"0"
        String userId;	           //非必填	要查询的用户id，不传取当前登录用户
    }

    @Data
    class ToDoRequestListConditions{
        String wfcode;                  //非必填
        String  ownerdepartmentid;      //非必填
        String  requestname;            //非必填
        String  nodetype;               //非必填
        String  workcode;               //非必填
        String  archivestatus;          //非必填
        String  operatedateselect;      //非必填
        String  recievedateselect;      //非必填
        String  creatersubcompanyid;    //非必填
        String  requestlevel;           //非必填
        String  unophrmid;              //非必填
        String  docids;                 //非必填
        String  creatertype;            //非必填
        String  proids;                 //非必填
        String  crmids;                 //非必填
        String  craterid;               //非必填
        String  hrmcreaterid;           //非必填
        String  createdateselect;       //非必填
    }

    @Data
    class ToDoRequestListResponse{
        String createTime;		//创建时间
        String creatorId;		//创建人id
        String creatorName;		    //创建人姓名
        String currentNodeId;		//当前节点id
        String currentNodeName;		//当前节点名称
        String lastOperateTime;		//最后操作时间
        String lastOperatorId;		//最后操作人id
        String lastOperatorName;	//最后操作人名称
        String receiveTime;		    //接收时间
        String requestId;		    //请求id
        String requestLevel;		//紧急程度
        String requestName;		    //请求名称
        String status;	            //流程状态
        String sysName;		        //系统名称
        ToDoRequestListWorkflowBaseInfo workflowBaseInfo;	 //formId -表单id,workflowId-路径id,workflowName-流程名称,workflowTypeId-流程类型id,workflowTypeName-流程类型名称
    }

    @Data
    class ToDoRequestListWorkflowBaseInfo{
        String  formId;
        String  workflowId;
        String  workflowName;
        String  workflowTypeId;
        String  workflowTypeName;
    }
}
