WrapPeriodJobDto.java 3.33 KB
Newer Older
1 2
package pwc.taxtech.atms.dto.vatdto;

neo's avatar
neo committed
3 4 5
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import org.apache.commons.lang3.StringUtils;
6 7 8 9 10 11 12 13 14 15 16 17
import pwc.taxtech.atms.common.util.MyAsserts;
import pwc.taxtech.atms.entity.Template;
import pwc.taxtech.atms.exception.Exceptions;
import pwc.taxtech.atms.vat.entity.PeriodJob;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

public class WrapPeriodJobDto {
    public static final String STATUS_BEGIN = "Begin";
18
    public static final String STATUS_RUNNING = "Running";
19 20 21 22 23 24
    public static final String STATUS_CANCEL = "Cancel";
    public static final String STATUS_ERROR = "Error";
    public static final String STATUS_END = "End";

    public static final String STEP_UPDATE_CONFIG = "UpdateConfig";

25
    public static PeriodJob createReportGenJob(String projectId, Integer period, List<Template> templates,List<String> dataValidateArray) {
26 27 28 29 30 31 32 33
        MyAsserts.assertNotEmpty(templates, Exceptions.NOT_FOUND_TEMPLATE_EXCEPTION);
        PeriodJob job = new PeriodJob();
        job.setCreateTime(new Date());
        job.setName("Gen All Report");
        job.setProjectId(projectId);
        job.setPeriod(period);
        job.setId(UUID.randomUUID().toString());
        job.setCurrentStep(STEP_UPDATE_CONFIG);
neo's avatar
neo committed
34
        setStatus(job,STEP_UPDATE_CONFIG,STATUS_BEGIN);
35
        StringBuilder builder = new StringBuilder(STEP_UPDATE_CONFIG);
36 37 38
        dataValidateArray.forEach(m ->{
            builder.append(",").append(m);
        });
39 40 41 42 43 44
        templates.forEach(m -> {
            builder.append(",").append(m.getCode());
        });
        job.setStepsCode(builder.toString());
        return job;
    }
neo's avatar
neo committed
45 46 47 48

    public static class Task {
        String code;
        String status;
eddie.woo's avatar
eddie.woo committed
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

        public String getCode() {
            return this.code;
        }

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

        public String getStatus() {
            return this.status;
        }

        public void setStatus(String status) {
            this.status = status;
        }
neo's avatar
neo committed
65 66 67
    }

    public static List<Task> fromJson(String taskJson) {
neo's avatar
neo committed
68
        return JSON.parseObject(taskJson, new TypeReference<List<Task>>() {});
neo's avatar
neo committed
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
    }

    public static String toJson(List<Task> tasks) {
        return JSON.toJSONString(tasks);
    }

    public static void setStatus(PeriodJob periodJob, String code, String status) {
        List<Task> list;
        if (StringUtils.isBlank(periodJob.getStatus())) {
            list = new ArrayList<>();
        } else {
            list = fromJson(periodJob.getStatus());
        }

        Task t = new Task();
        t.code = code;
        t.status = status;
        boolean contains = false;
        for (Task m : list) {
            if (m.code.equals(t.code)) {
                m.status = status;
                contains = true;
                break;
            }
        }
        if(!contains)list.add(t);
        periodJob.setStatus(toJson(list));
    }

    public static void setStatus(PeriodJob periodJob, String status) {
        List<Task> list;
        if (StringUtils.isBlank(periodJob.getStatus())) {
            list = new ArrayList<>();
        } else {
            list = fromJson(periodJob.getStatus());
        }
        list.get(list.size()-1).status=status;
        periodJob.setStatus(toJson(list));
    }
108
}