Llamada api de Zen Tao (método de rastreo)

Tabla de contenido

Obtenga información sobre todos los proyectos en curso

URL

cartero

codigo java

clase de entidad

procesamiento lógico

Obtenga todas las identificaciones de tareas no cerradas en el proyecto especificado de acuerdo con la identificación del proyecto

URL

cartero

codigo java

Resumir


Obtenga información sobre todos los proyectos en curso

URL

http://Zen Tao dirección xxx/zentao/project-all-doing-project ID-order_desc-0.html

cartero

codigo java

Puede consultar este blog sobre la implementación comercial del inicio de sesión de ZenTao: http://t.csdn.cn/I2uPU

clase de entidad

package com.example.zentaoaibackend.entity;

import lombok.Data;
import java.util.Date;
import java.io.Serializable;

public class ProjectInfoEntity extends BaseAttribute {
    /**
     * 项目ID
     */
    private Integer projectId;

    /**
     * 项目名称
     */
    private String name;
    /**
     * 项目代号
     */
    private String code;
    /**
     * 项目负责人
     */
    private String director;
    /**
     * 项目截止日期
     */
    private Date endtime;
    /**
     * 是否参与消息推送
     */
    private int joinStatus;
    /**
     * 钉钉群id
     */
    private String dingGroupId;
    /**
     * 钉钉群名称
     */
    private String dingGroupName;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getDirector() {
        return director;
    }

    public void setDirector(String director) {
        this.director = director;
    }

    public Date getEndtime() {
        return endtime;
    }

    public void setEndtime(Date endtime) {
        this.endtime = endtime;
    }

    public int getJoinStatus() {
        return joinStatus;
    }

    public void setJoinStatus(int joinStatus) {
        this.joinStatus = joinStatus;
    }

    public String getDingGroupId() {
        return dingGroupId;
    }

    public void setDingGroupId(String dingGroupId) {
        this.dingGroupId = dingGroupId;
    }

    public String getDingGroupName() {
        return dingGroupName;
    }

    public void setDingGroupName(String dingGroupName) {
        this.dingGroupName = dingGroupName;
    }

    public void setProjectId(Integer projectId) {
        this.projectId = projectId;
    }

    public Integer getProjectId() {
        return projectId;
    }

}

procesamiento lógico

El formato de la página html devuelta por el rastreo es como se muestra en la figura a continuación, y la analizamos de acuerdo con la estructura dada

import com.example.zentaoaibackend.entity.ProjectInfoEntity;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;


public List<ProjectInfoEntity> GetDoingProjectInfo() {
        List<ProjectInfoEntity> doingProjectList = new ArrayList<>();
        try {
            //登录禅道
            zentaoLogin();

            //url地址
            String url = "http://127.0.0.1/zentao/project-all-doing-422-order_desc-0.html";
            //执行url,并传入cookie
            Document doc = Jsoup.connect(url).cookie("zentaosid", Constant.ZENTAOID).get();
            //解析html页面,获取tr标签
            Elements tfElements = doc.select("table").select("tbody").select("tr");

            //遍历tr标签,根据任务状态获取对应的任务id,并放入到集合中
            for (Element element : tfElements) {
                //获取td标签
                Elements tdElements = element.select("td");
                //用于解析后的数据信息存储
                ProjectInfoEntity projectInfo = new ProjectInfoEntity();

                //遍历td标签
                for (Element tdElement : tdElements) {
                    //判断当前遍历的标签中class元素是否包含text-left
                    //包含:获取项目id
                    //不包含:继续下一次遍历
                    if (tdElement.attr("class").equals("text-left")) {
                        //获取项目ID
                        String attr = element.attr("data-id");
                        //将项目ID传入到实体中
                        projectInfo.setProjectId(Integer.valueOf(attr));

                        //因为返回的有多个td标签中都包含了class='text-left'的元素,我们不能直接获取项目信息,需要进行判断
                        //包含title元素:为项目代码;否则:为项目名称
                        if (tdElement.attr("title").equals("")) {
                            //项目代号
                            projectInfo.setCode(tdElement.text());
                        } else {
                            //项目名称
                            projectInfo.setName(tdElement.attr("title"));
                        }
                    }
                }
                doingProjectList.add(projectInfo);
            }
        } catch (Exception e) {
            System.out.println(e);
        }
        return doingProjectList;
    }


Obtenga todas las identificaciones de tareas no cerradas en el proyecto especificado de acuerdo con la identificación del proyecto

URL

http://Zen Tao dirección xxx/zentao/project-task-439-unclosed.html

cartero

codigo java

package com.example.zentaoaibackend.utils.zentaoAPI;

import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static com.example.zentaoaibackend.utils.zentaoAPI.DoGet.doGet;
import static com.example.zentaoaibackend.utils.zentaoAPI.login.ZentaoLogin.zentaoLogin;


/**
 * @BelongsProject: zentaoai-backend
 * @BelongsPackage: com.example.zentaoaibackend.utils.zentaoAPI
 * @Author: author
 * @CreateTime: 2022-11-26  11:14
 * @Description: 根据项目id获取指定项目下所有任务
 * @Version: 1.0
 */
@Component
public class GetProjectTask extends IJobHandler {
    public List<String> GetTaskByProjectId(String projectId) throws IOException {
        List<String> unClosedList = new ArrayList<>();
        try {
            zentaoLogin();
            //url地址
            String url = "http://127.0.0.1/zentao/project-task-" + projectId + "-unclosed.html";
            //执行接口调用,并传入cookie
            Document doc = Jsoup.connect(url).cookie("zentaosid", Constant.ZENTAOID).get();
            //解析html页面,获取tr标签
            Elements select = doc.select("table").select("tbody").select("tr");
            //遍历tr标签,根据任务状态获取对应的任务id,并放入到集合中
            for (Element element : select) {
                unClosedList.add(element.attr("data-id"));
            }

        } catch (Exception e) {
            System.out.println(e);
        }
        return unClosedList;
    }

    @Override
    public ReturnT<String> execute(String s) throws Exception {
        return null;
    }
}

Resumir

Nota: la información individual es relativamente privada y confusa, y no es fácil de divulgar, ¡perdóneme! !

Si desea intercambiar contenido, deje un mensaje en el área de comentarios. Si le gusta este documento, deje sus Me gusta y huellas de colección para apoyar al blogger ~

Supongo que te gusta

Origin blog.csdn.net/weixin_43319713/article/details/128426836
Recomendado
Clasificación