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


import cn.ey.biz.module.weaver.autoconfigure.BacklogFeignConfiguration;
import cn.ey.biz.module.weaver.common.Constants;
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;

/**
 *   统一待办 接收异构系统流程接口
 */
@FeignClient(name= Constants.WEAVER_BACKLOG, url="${weaver.service.url}",configuration = BacklogFeignConfiguration.class)
public interface ReceiveRequestInfoByJsonService {

    @RequestMapping(method= RequestMethod.POST, value="/rest/ofs/ReceiveRequestInfoByJson",
            consumes = MediaType.APPLICATION_JSON_VALUE,
            produces = MediaType.APPLICATION_JSON_VALUE)
    ReceiveRequestInfoByJsonResponse receiveRequestInfoByJson(@RequestBody  ReceiveRequestInfoByJsonRequest request);

    @Data
    class  ReceiveRequestInfoByJsonRequest{
        String  syscode;      //异构系统标识
        String  flowid;       //流程实例id
        String  requestname;  //标题
        String  workflowname; //流程类型名称
        String  nodename;     //步骤名称（节点名称）
        String  pcurl;        //PC地址
        String  appurl;       //APP地址
        String  isremark;     //流程处理状态 0：待办 2：已办 4：办结 8：抄送（待阅）
        String  viewtype;     //流程查看状态0：未读 （注：isremark = 0 且 viewtype = 0 会给OA消息中心推送消息，对接钉钉、企业微信）1：已读;
        String  creator;      //创建人（原值）
        String  createdatetime;    //创建日期时间
        String  receiver;          //接收人（原值）
        String  receivedatetime;   //接收日期时间
        String  receivets;         //时间戳字段，客户端使用线程调用接口的时候，根据此字段判断是否需要更新数据，防止后发的请求数据被之前的覆盖例如"1602817491990"(毫秒级时间戳)
    }

    @Data
    class ReceiveRequestInfoByJsonResponse{
        String syscode;     //异构系统标识
        String dataType;    //数据类型IsUse：统一待办中心OtherSys：异构系统WfType：流程类型WfData：流程数据SetParam：参数设置
        String operType;    //操作类型 AutoNew自动创建  New新建  AutoEdit自动更新 Edit编辑 Del删除  Check检测 Set设置  Del删除  Check检测 Set设置
        String operResult;  //操作结果1：成功 0：失败
        String message;     //错误信息
    }

}
