java讀取xml格式的project文件大概代碼

//判斷PJ計劃的文件與內容是否正確
    @RequestMapping("checkUp0.do")
    @ResponseBody
    public ObjectNode checkUp0(HttpServletRequest request)throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        ObjectNode re = mapper.createObjectNode();

        String attachment = request.getParameter("fj");
        if (StringUtils.isBlank(attachment) || attachment.length() < 1) {
            return returnFaild("錯誤:請上傳附件!");
        }

        try {
            Path path = AttachmentUtils.getAttachByUri(attachment.split(":")[0]).getPath();
            if(!path.getFileName().toString().endsWith(".xml")){
                path = detService.getXmlFileByZip(path);
                if(path == null)
                    return returnFaild("錯誤:上傳的文件異常!請上傳xml文件或只含有一個xml文件的壓縮文件!");
            }

            ProjectFile project = detService.getProjectFileByPath(path);//新的計劃

            if(project == null){
                return returnFaild("錯誤:PJ計劃無法識別!");
            }

            List<String> listError = new ArrayList<>();//錯誤信息
            for(Task t :project.getAllTasks()){
                if(t.getID()==0){
                    continue;
                }
                
                if(t.getName() == null){
                    listError.add(t.getID()+" 號任務的任務名爲空!");
                }else{
                    try{
                        t.setName(t.getName().trim());
                    }catch (Exception e){
                        listError.add(t.getID()+" 號任務的任務名無法成功去除前後空格!");
                    }
                }
                if(t.getStart() == null){
                    listError.add(t.getID()+" 號任務的開始時間爲空!");
                }if(t.getFinish() == null){
                    listError.add(t.getID()+" 號任務的完成時間爲空!");
                }if(t.getDuration() == null){
                    listError.add(t.getID()+" 號任務的工期爲零或空!");
                }else if(t.getStart() != null && t.getFinish() != null && (t.getDuration().getDuration() < 0 || t.getStart().getTime() > t.getFinish().getTime())){
                    listError.add(t.getID()+" 號任務的開始時間大於完成時間!");
                }

                if(t.getBaselineStart() == null){
                    listError.add(t.getID()+" 號任務的基準(基準)開始時間爲空!");
                }if(t.getBaselineFinish() == null){
                    listError.add(t.getID()+" 號任務的基準(基準)完成時間爲空!");
                }
                if(t.getBaselineDuration() == null ){
                    listError.add(t.getID()+" 號任務的基線(基準)工期爲零或空!");
                }else if(t.getBaselineStart() != null && t.getBaselineFinish() != null && (t.getBaselineDuration().getDuration() < 0 || t.getBaselineStart().getTime() > t.getBaselineFinish().getTime())){
                    listError.add(t.getID()+" 號任務的基線(基準)開始時間大於基線(基準)完成時間!");
                }

            }
            
            if(listError.size()>0){//存在多種問題,列表形式在頁面顯示
                //去重
                List<String> listNew = new ArrayList<>();
                for(String error : listError){
                    boolean flag = true;
                    for(String ne : listNew){
                        if(error.equals(ne)){
                            flag = false;
                        }
                    }
                    if(flag){
                        listNew.add(error);
                    }
                }
                re.put("error", 2);
                re.put("msg", "錯誤!");
                re.put("list", StringUtils.join(listNew,","));
                return re;
            }
            
        }catch (Exception e){
            e.printStackTrace();
            re.put("error", 1);
            re.put("msg", "未知錯誤!");
            return re;
        }

        re.put("error", 0);
        re.put("msg", "正確!");
        return re;
    }
//將Path轉換成ProjectFile
	public ProjectFile getProjectFileByPath(Path path){
		if(path == null) return null;
		String str = getXMLContent(path,null,null,false);
		return getProjectFile(str);
	}
	//將xml字符串轉換成ProjectFile
	public ProjectFile getProjectFile(String str){
		ProjectReader reader = new MSPDIReader();
		InputStream inputStream = null;
		try{
			inputStream = new ByteArrayInputStream(str.getBytes("utf-8"));
			ProjectFile project = reader.read(inputStream);
			inputStream.close();
			return project;
		}catch (Exception e){
			e.printStackTrace();
		}finally {
			if(inputStream!=null){
				try{
					inputStream.close();
				}catch (Exception e){

				}
			}
		}
		return  null;
	}
    
    public String getXMLContent(Path path,List<AppProjectDetailEntity> listProDet,String calendarStr,boolean isNeedTimephasedData){
		return new XmlHelper().getXmlContent(path.toFile(),listProDet,getCalendar(calendarStr),isNeedTimephasedData);
	}
    
    //將日曆字符串組裝
	private List<Map<String,Object>> getCalendar(String calendarStr){
		List<Map<String,Object>> liWork = new ArrayList<>();
		if(StringUtils.isNotBlank(calendarStr)){
			JSONArray workJson = JSONArray.fromObject(calendarStr);
			for(int i=0;i<workJson.size();i++){
				Map<String,Object> mapW = new HashedMap();
				JSONObject d = workJson.getJSONObject(i);
				mapW.put("is_work",d.getString("is_work"));
				mapW.put("day_name",d.get("day_name")==null?"":d.getString("day_name"));
				if(i == 0)
					mapW.put("exception",d.get("exception") == null?"":d.getString("exception").split(";"));
				mapW.put("hours",d.getString("hours").split(";"));
				liWork.add(mapW);
			}
		}
		return liWork;
	}
package eiis.app.project.pojo;

import eiis.app.project.entity.AppProjectDetailEntity;
import org.apache.commons.lang3.StringUtils;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * Created by SSKJ on 2017/8/29.
 */
public class XmlHelper extends DefaultHandler{

    private final static String needDelete = ";Views;Filters;Groups;Tables;";
    private final static String[] WEEKS = {"SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"};//默認周
    private final static String ADD_DEL = ";"+ProjectField.ActualStart.toString()+";"+ProjectField.ActualFinish.toString()+";"+ProjectField.Stop.toString()+";"+ProjectField.Resume.toString()+";";//需要刪除或新增的標籤

    private StringBuffer sb=new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n");

    private boolean isTask=false;//計劃標籤開始
    private boolean isExtendedAttribute=false;//自定義標籤開始
    private boolean isAssignment=false;//分配標籤開始
    private boolean isDel=false;//是否刪除
    private boolean isTimephasedData=false;
    private static boolean isNeedTimephasedData=true;//是否需要TimephasedData標籤
    private boolean isFinish=false;//該任務是否完成

    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//時間格式
    private String name = "";//當前標籤的名稱
    private String startTime = "";//開始日期的時分秒
    private String endTime = "";//完成日期的時分秒
    private String FieldID="";//自定義標籤的編號

    private static AppProjectDetailEntity detEntity = null;//當前計劃
    private static List<AppProjectDetailEntity> listProDet = new ArrayList<>();//需要更新到xml的計劃
    private static List<Map<String,Object>> listCalendar = new ArrayList<>();//默認日曆

    public String getXmlContent(File file,List<AppProjectDetailEntity> listProDet,List<Map<String,Object>> listCalendar,boolean isNeedTimephasedData){
        if(listProDet == null)
            listProDet = new ArrayList<>();
        this.listProDet = listProDet;

        if(listCalendar == null)
            listCalendar = new ArrayList<>();
        this.listCalendar = listCalendar;

        this.isNeedTimephasedData = isNeedTimephasedData;
        long sT = System.currentTimeMillis();

        int len = new Long(file.length()).intValue();
        sb.setLength(len);
        XmlHelper xmlHelper=new XmlHelper();
        try {
            SAXParserFactory sf = SAXParserFactory.newInstance();
            SAXParser sp = sf.newSAXParser();
            sp.parse(file,xmlHelper);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
            return null;
        } catch (SAXException e) {
            e.printStackTrace();
            return null;
        }finally {
            sb.setLength(0);
            listCalendar.clear();
        }

        //System.out.println("耗時"+((System.currentTimeMillis()-sT)/1000)+"秒"+isNeedTimephasedData);
        return xmlHelper.getSb();
    }

    //標籤開始事件
    @Override
    public void startElement(String uri, String localName, String qName, Attributes att) throws SAXException {
        name = qName;
        //判斷是否進入任務或資源標籤裏面
        if(ProjectField.Task.toString().equals(name)){
            isTask=true;
            isAssignment = false;
        }else if(ProjectField.ExtendedAttribute.toString().equals(name)){
            isExtendedAttribute=true;
        }else if(ProjectField.Assignment.toString().equals(name)){
            isTask = false;
            isAssignment = true;
        }else if(ProjectField.TimephasedData.toString().equals(name)){
            isTimephasedData = true;
        }else if(needDelete.contains(";"+name+";")){
            //System.out.println(name);
            isDel = true;
        }

        if(isDeleteTag()){
            return;
        }

        //標籤名稱
        sb.append("<"+name);
        //標籤屬性
        for(int i = 0;i < att.getLength();i++){
            sb.append(" "+att.getQName(i)+"=\""+att.getValue(i)+"\"");
        }
        sb.append(">");

    }

    //非標籤事件
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        String value=new String(ch,start,length);
        //if(detEntity !=null && detEntity.getUniqueId() == 5754){
        //    System.out.println(name);
        //}
        if(isDeleteTag() || ProjectField.TimephasedData.toString().equals(name)){
            return;
        }

        if((isTask || isAssignment) && StringUtils.isNotBlank(value)){//進入任務或分配
            if((isTask && ProjectField.UID.toString().equals(name)) || (isAssignment && ProjectField.TaskUID.toString().equals(name))){
                try{
                    boolean isHave = false;
                    for(AppProjectDetailEntity entity : listProDet){
                        if(Integer.parseInt(value) == entity.getUniqueId()){
                            isHave = true;
                            detEntity = entity;
                            Calendar c = Calendar.getInstance();
                            c.setTime(detEntity.getStartDate());
                            String weekStr1 = WEEKS[c.get(Calendar.DAY_OF_WEEK)-1];
                            c.setTime(detEntity.getEndDate());
                            String weekStr2 = WEEKS[c.get(Calendar.DAY_OF_WEEK)-1];

                            for(Map<String,Object> map : listCalendar){
                                if(map.get("day_name") == null || map.get("is_work") == null || !"WORKING".equalsIgnoreCase(map.get("is_work").toString())){
                                    continue;
                                }
                                String[] hours = (String[]) map.get("hours");
                                if(map.get("day_name").toString().equalsIgnoreCase(weekStr1)){
                                    startTime = "T"+hours[0];
                                }if(map.get("day_name").toString().equalsIgnoreCase(weekStr2)){
                                    endTime = "T"+hours[hours.length-1];
                                }
                            }
                            //System.out.println(startTime+"    "+endTime);

                            //未完成的任務不需要新增標籤
                            if(detEntity.getTaskState() != 1){
                                isFinish = false;
                            }else{
                                isFinish = true;
                            }
                            break;
                        }
                    }
                    if(!isHave){
                        detEntity = null;
                    }
                }catch (Exception e){}

            }else if(detEntity != null){
                value = getValueByTaskOrAssignment(value);
            }
        }
        if((ProjectField.Duration.toString().equals(name) || ProjectField.ManualDuration.toString().equals(name) || ProjectField.RemainingDuration.toString().equals(name) || ProjectField.Work.toString().equals(name) || ProjectField.RegularWork.toString().equals(name) || ProjectField.RemainingWork.toString().equals(name) || ProjectField.RemainingOvertimeWork.toString().equals(name) || ProjectField.OvertimeWork.toString().equals(name) || ProjectField.ActualDuration.toString().equals(name) || ProjectField.ActualWork.toString().equals(name) || ProjectField.ActualOvertimeWork.toString().equals(name)) && value.contains("-")){
            value = value.replaceAll("-","");
        }
        sb.append(value);
    }

    //標籤結束事件
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        name = qName;
        //需要新增的標籤Stop、Resume、
        if(ProjectField.Task.toString().equals(name) || ProjectField.Assignment.toString().equals(name)){
            if(detEntity != null){
                //已經完成的計劃
                if(isFinish && isNeedTimephasedData){
                    //新增標籤
                    String[] adds = ADD_DEL.split(";");
                    for(int i = 0;i < adds.length;i++){
                        String addName = adds[i];
                        if(StringUtils.isBlank(addName))
                            continue;
                        String value = "";
                        if(ProjectField.ActualStart.toString().equals(addName)){
                            value = sdf.format(detEntity.getStartDate())+startTime;
                        }else if(ProjectField.ActualFinish.toString().equals(addName) || ProjectField.Stop.toString().equals(addName) || ProjectField.Resume.toString().equals(addName)){
                            value = sdf.format(detEntity.getEndDate())+endTime;
                        }
                        if(i == adds.length-1){
                            sb.append("<"+addName+">"+value+"</"+addName+">\n\t\t");
                        }else{
                            sb.append("<"+addName+">"+value+"</"+addName+">\n\t\t\t");
                        }

                    }
                }
                if(isNeedTimephasedData && ProjectField.Assignment.toString().equals(name) && detEntity.getAssUniqueId() != null)
                    getTimephasedData();
            }

            //對任務和分配標籤的操作結束
            isTask = false;
            isAssignment = false;
            detEntity = null;
        }else if(ProjectField.ExtendedAttribute.toString().equals(name) && isExtendedAttribute){
            isExtendedAttribute = false;
            FieldID = "";
        }

        if(isDeleteTag()){
            if(ProjectField.TimephasedData.toString().equals(name))
                isTimephasedData = false;
            if(needDelete.contains(";"+name+";"))
                isDel = false;
            return;
        }
        sb.append("</"+name+">");
    }

    private String getValueByTaskOrAssignment(String value){
        if(isExtendedAttribute){
            if(ProjectField.FieldID.toString().equals(name)){
                FieldID = value;
            }else if(ProjectField.Value.toString().equals(name)){
                if(ProjectField.FieldID_TEXT_9.toString().equals(FieldID)){//文本9,責任成員ID
                    value = detEntity.getMemberId();
                }else if(ProjectField.FieldID_TEXT_10.toString().equals(FieldID)){//文本10,責任成員名稱
                    value = detEntity.getMemberName();
                }else if(ProjectField.FieldID_TEXT_11.toString().equals(FieldID)){//文本11,責任單位ID
                    value = detEntity.getCustomId();
                }else if(ProjectField.FieldID_TEXT_12.toString().equals(FieldID)){//文本12,責任單位名稱
                    value = detEntity.getCustomName();
                }else if(ProjectField.FieldID_NUM_6.toString().equals(FieldID)){//數字6,任務狀態:未開始(-1)、進行中(0)、完成(1)
                    value = detEntity.getTaskState().toString();
                }else if(ProjectField.FieldID_NUM_7.toString().equals(FieldID)){//數字7,實測實量期限
                    value = detEntity.getTaskMeasureTerm().toString();
                }else if(ProjectField.FieldID_NUM_8.toString().equals(FieldID)){//數字8,實測實量提前量
                    value = detEntity.getTaskMeasureRemind().toString();
                }else if(ProjectField.FieldID_NUM_9.toString().equals(FieldID)){//數字9,提醒
                    value = detEntity.getTaskRemind().toString();
                }else if(ProjectField.FieldID_NUM_10.toString().equals(FieldID)){//數字10,管控級別
                    value = detEntity.getTaskLevel().toString();
                }
                if(StringUtils.isBlank(value))
                    value = "";
            }
        }else if(ProjectField.Start.toString().equals(name) || ProjectField.EarlyStart.toString().equals(name) || ProjectField.LateStart.toString().equals(name) || ProjectField.ManualStart.toString().equals(name)){
            if(StringUtils.isBlank(startTime))
                startTime = "T"+value.split("T")[1];
            value = sdf.format(detEntity.getStartDate())+startTime;
        }else if(ProjectField.Finish.toString().equals(name) || ProjectField.EarlyFinish.toString().equals(name) || ProjectField.LateFinish.toString().equals(name) || ProjectField.ManualFinish.toString().equals(name)){
            if(StringUtils.isBlank(endTime))
                endTime = "T"+value.split("T")[1];
            value = sdf.format(detEntity.getEndDate())+endTime;
        }else if(ProjectField.Duration.toString().equals(name) || ProjectField.ManualDuration.toString().equals(name) || ProjectField.RemainingDuration.toString().equals(name) || (!isFinish && isAssignment && (ProjectField.Work.toString().equals(name) || ProjectField.RegularWork.toString().equals(name) || ProjectField.RemainingWork.toString().equals(name))) || (isFinish && (ProjectField.Work.toString().equals(name) || ProjectField.RegularWork.toString().equals(name)))){
            //工期
            value = getDuration(detEntity.getDuration().intValue());
        }else if(ProjectField.StartVariance.toString().equals(name) || ProjectField.FinishVariance.toString().equals(name) || ProjectField.FreeSlack.toString().equals(name) || ProjectField.Delay.toString().equals(name) || (isFinish && (ProjectField.TotalSlack.toString().equals(name) || ProjectField.StartSlack.toString().equals(name) || ProjectField.FinishSlack.toString().equals(name)))){
            value = "0";
        }else if(ProjectField.WorkVariance.toString().equals(name)){
            value = "0.00";
        }else if(ProjectField.ActualOvertimeWork.toString().equals(name) || ProjectField.RemainingOvertimeWork.toString().equals(name) || ProjectField.OvertimeWork.toString().equals(name) || (!isFinish && isTask && (ProjectField.Work.toString().equals(name) || ProjectField.RegularWork.toString().equals(name) || ProjectField.RemainingWork.toString().equals(name))) || (isFinish && ProjectField.RemainingWork.toString().equals(name))){
            value = getDuration(0);
        }else if(ProjectField.DurationFormat.toString().equals(name)){
            value = "7";//日期格式按天計算
        }

        if(!isFinish){
            //任務未完成
            if(ProjectField.ActualDuration.toString().equals(name) || ProjectField.ActualWork.toString().equals(name)){
                value = getDuration(0);
            }else if(ProjectField.PercentComplete.toString().equals(name) || ProjectField.PercentWorkComplete.toString().equals(name)){
                value = "0";
            }
        }else{
            //任務已經完成
            if(ProjectField.ActualDuration.toString().equals(name) || ProjectField.ActualWork.toString().equals(name)){
                value = getDuration(detEntity.getDuration().intValue());
            }else if(ProjectField.PercentComplete.toString().equals(name) || ProjectField.PercentWorkComplete.toString().equals(name)){
                value = "100";//完成百分比,工作完成百分比
            }
        }
        return value;
    }

    //判斷是否爲需要刪除的標籤
    private boolean isDeleteTag(){
        return (isTimephasedData || (isNeedTimephasedData && ADD_DEL.contains(";"+name+";")) || isDel);
    }
    //拼裝TimephasedData標籤
    private void getTimephasedData(){
        //添加TimephasedData標籤
        try{
            Date start = sdf.parse(sdf.format(detEntity.getStartDate()));
            Date end = sdf.parse(sdf.format(detEntity.getEndDate()));
            Calendar c = Calendar.getInstance();
            c.setTime(start);
            do{
                //<TimephasedData>
                //    <Type>1</Type>
                //    <UID>20244</UID>
                //    <Start>2017-07-13T08:00:00</Start>
                //    <Finish>2017-07-14T08:00:00</Finish>
                //    <Unit>2</Unit>
                //    <Value>PH8H0M0S</Value>
                //</TimephasedData>
                Date s = c.getTime();
                //判斷開始這一天是否爲工作日
                boolean isWork = true;
                for(Map<String,Object> map : listCalendar){
                    if(map.get("exception") != null){
                        for(String exc : (String[])map.get("exception")){
                            if(s.equals(sdf.parse(exc))){
                                isWork = false;
                                break;
                            }
                        }
                        if(!isWork)
                            break;
                    }if(map.get("day_name") != null && map.get("day_name").toString().equalsIgnoreCase(WEEKS[c.get(Calendar.DAY_OF_WEEK)-1])){
                        //"day_name":"WEDNESDAY","hours":"8;12;13;17","is_work":"WORKING"
                        if(map.get("is_work") != null && "WORKING".equalsIgnoreCase(map.get("is_work").toString())){
                            isWork = true;
                        }else{
                            isWork = false;
                        }
                        break;
                    }

                }
                c.set(Calendar.DAY_OF_MONTH,c.get(Calendar.DAY_OF_MONTH)+1);

                sb.append("\t<TimephasedData>\n\t\t\t\t");
                sb.append("<Type>"+(isFinish?2:1)+"</Type>\n\t\t\t\t");//1表示未完成,2表示已經完成
                sb.append("<UID>"+detEntity.getAssUniqueId()+"</UID>\n\t\t\t\t");
                sb.append("<Start>"+(sdf.format(s))+startTime+"</Start>\n\t\t\t\t");
                sb.append("<Finish>"+(s.equals(end)?(sdf.format(s)+endTime):(sdf.format(c.getTime())+startTime))+"</Finish>\n\t\t\t\t");
                sb.append("<Unit>1</Unit>\n\t\t\t\t");
                sb.append("<Value>"+(isWork?getDuration(1):"")+"</Value>\n\t\t\t");
                sb.append("</TimephasedData>\n\t\t");
            }while (!end.before(c.getTime()));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    //計算工期
    private String getDuration(int day){
        String duration = "PT"+(day*8)+"H0M0S";
        return duration;
    }

    public String getSb(){
        return this.sb.toString();
    }
}
package eiis.app.project.entity;

import javax.persistence.*;
import java.math.BigDecimal;
import java.sql.Timestamp;

/**
 * Created by SSKJ on 2017/7/11.
 */
@Entity
@Table(name = "app_project_detail")
public class AppProjectDetailEntity {
    private String taskId;
    private String taskParentId;
    private Integer parentId;
    private Integer uniqueId;
    private Integer assUniqueId;
    private String outlineNumber;
    private String taskName;
    private String taskNameAll;
    private String taskPlanType;
    private String taskType;
    private Integer taskLevel;
    private Integer taskState;
    private Integer taskRemind;
    private BigDecimal progress;
    private Timestamp plannedEndDate;
    private BigDecimal plannedDuration;
    private Timestamp plannedStartDate;
    private Timestamp startDate;
    private Timestamp endDate;
    private BigDecimal duration;
    private String projectId;
    private String projectSection;
    private String customId;
    private String customName;
    private String memberId;
    private String memberName;
    private Integer childrenCount;
    private BigDecimal finishCompare;
    private String predecessors;
    private String preSourceId;
    private Integer preTargetId;
    private String preLag;
    private String preType;
    private Integer taskMeasureTerm;
    private Integer taskMeasureRemind;
    private String originalCode;
    private String comment;
    private Boolean isValid = false;
    private Boolean canQuery = false;
    private Double taskTextX;
    private Double taskTextY;

    @Id
    @Column(name = "TASK_ID")
    public String getTaskId() {
        return taskId;
    }
    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }

    @Basic
    @Column(name = "TASK_PARENT_ID")
    public String getTaskParentId() {
        return taskParentId;
    }
    public void setTaskParentId(String taskParentId) {
        this.taskParentId = taskParentId;
    }

    @Basic
    @Column(name = "PARENT_ID")
    public Integer getParentId() {
        return parentId;
    }
    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    @Basic
    @Column(name = "UNIQUE_ID")
    public Integer getUniqueId() {return uniqueId;}

    public void setUniqueId(Integer uniqueId) {this.uniqueId = uniqueId;}

    @Basic
    @Column(name = "ASS_UNIQUE_ID")
    public Integer getAssUniqueId() {
        return assUniqueId;
    }

    public void setAssUniqueId(Integer assUniqueId) {
        this.assUniqueId = assUniqueId;
    }

    @Basic
    @Column(name = "OUTLINE_NUMBER")
    public String getOutlineNumber() {
        return outlineNumber;
    }
    public void setOutlineNumber(String outlineNumber) {
        this.outlineNumber = outlineNumber;
    }

    @Basic
    @Column(name = "TASK_NAME")
    public String getTaskName() {
        return taskName;
    }
    public void setTaskName(String taskName) {
        this.taskName = taskName;
    }

    @Basic
    @Column(name = "TASK_NAME_ALL")
    public String getTaskNameAll() {return taskNameAll;}
    public void setTaskNameAll(String taskNameAll) {this.taskNameAll = taskNameAll;}

    @Basic
    @Column(name = "TASK_PLAN_TYPE")
    public String getTaskPlanType() {
        return taskPlanType;
    }

    public void setTaskPlanType(String taskPlanType) {
        this.taskPlanType = taskPlanType;
    }

    @Basic
    @Column(name = "TASK_TYPE")
    public String getTaskType() {
        return taskType;
    }
    public void setTaskType(String taskType) {
        this.taskType = taskType;
    }

    @Basic
    @Column(name = "TASK_LEVEL")
    public Integer getTaskLevel() {
        return taskLevel;
    }
    public void setTaskLevel(Integer taskLevel) {
        this.taskLevel = taskLevel;
    }

    @Basic
    @Column(name = "TASK_STATE")
    public Integer getTaskState() {
        return taskState;
    }
    public void setTaskState(Integer taskState) {
        this.taskState = taskState;
    }

    @Basic
    @Column(name = "TASK_REMIND")
    public Integer getTaskRemind() {
        return taskRemind;
    }
    public void setTaskRemind(Integer taskRemind) {
        this.taskRemind = taskRemind;
    }

    @Basic
    @Column(name = "PROGRESS")
    public BigDecimal getProgress() {
        return progress;
    }
    public void setProgress(BigDecimal progress) {
        this.progress = progress;
    }

    @Basic
    @Column(name = "PLANNED_START_DATE")
    public Timestamp getPlannedStartDate() {
        return plannedStartDate;
    }
    public void setPlannedStartDate(Timestamp plannedStartDate) {
        this.plannedStartDate = plannedStartDate;
    }

    @Basic
    @Column(name = "PLANNED_END_DATE")
    public Timestamp getPlannedEndDate() {
        return plannedEndDate;
    }
    public void setPlannedEndDate(Timestamp plannedEndDate) {
        this.plannedEndDate = plannedEndDate;
    }

    @Basic
    @Column(name = "PLANNED_DURATION")
    public BigDecimal getPlannedDuration() {
        return plannedDuration;
    }
    public void setPlannedDuration(BigDecimal plannedDuration) {
        this.plannedDuration = plannedDuration;
    }

    @Basic
    @Column(name = "START_DATE")
    public Timestamp getStartDate() {
        return startDate;
    }
    public void setStartDate(Timestamp startDate) {
        this.startDate = startDate;
    }

    @Basic
    @Column(name = "END_DATE")
    public Timestamp getEndDate() {
        return endDate;
    }
    public void setEndDate(Timestamp endDate) {
        this.endDate = endDate;
    }

    @Basic
    @Column(name = "DURATION")
    public BigDecimal getDuration() {
        return duration;
    }
    public void setDuration(BigDecimal duration) {
        this.duration = duration;
    }

    @Basic
    @Column(name = "PROJECT_ID")
    public String getProjectId() {
        return projectId;
    }

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

    @Basic
    @Column(name = "PROJECT_SECTION")
    public String getProjectSection() {
        return projectSection;
    }
    public void setProjectSection(String projectSection) {
        this.projectSection = projectSection;
    }

    @Basic
    @Column(name = "CUSTOM_ID")
    public String getCustomId() {
        return customId;
    }
    public void setCustomId(String customId) {
        this.customId = customId;
    }

    @Basic
    @Column(name = "CUSTOM_NAME")
    public String getCustomName() {
        return customName;
    }
    public void setCustomName(String customName) {
        this.customName = customName;
    }

    @Basic
    @Column(name = "MEMBER_ID")
    public String getMemberId() {
        return memberId;
    }
    public void setMemberId(String memberId) {
        this.memberId = memberId;
    }

    @Basic
    @Column(name = "MEMBER_NAME")
    public String getMemberName() {
        return memberName;
    }
    public void setMemberName(String memberName) {
        this.memberName = memberName;
    }

    @Basic
    @Column(name = "CHILDREN_COUNT")
    public Integer getChildrenCount() {
        return childrenCount;
    }
    public void setChildrenCount(Integer childrenCount) {
        this.childrenCount = childrenCount;
    }

    @Basic
    @Column(name = "FINISH_COMPARE")
    public BigDecimal getFinishCompare() {
        return finishCompare;
    }
    public void setFinishCompare(BigDecimal finishCompare) {
        this.finishCompare = finishCompare;
    }

    @Basic
    @Column(name = "PREDECESSORS")
    public String getPredecessors() {
        return predecessors;
    }
    public void setPredecessors(String predecessors) {
        this.predecessors = predecessors;
    }

    @Basic
    @Column(name = "PRE_SOURCE_ID")
    public String getPreSourceId() {
        return preSourceId;
    }
    public void setPreSourceId(String preSourceId) {
        this.preSourceId = preSourceId;
    }

    @Basic
    @Column(name = "PRE_TARGET_ID")
    public Integer getPreTargetId() {
        return preTargetId;
    }

    public void setPreTargetId(Integer preTargetId) {
        this.preTargetId = preTargetId;
    }

    @Basic
    @Column(name = "PRE_LAG")
    public String getPreLag() {
        return preLag;
    }
    public void setPreLag(String preLag) {
        this.preLag = preLag;
    }

    @Basic
    @Column(name = "PRE_TYPE")
    public String getPreType() {
        return preType;
    }
    public void setPreType(String preType) {
        this.preType = preType;
    }

    @Basic
    @Column(name = "TASK_MEASURE_TERM")
    public Integer getTaskMeasureTerm() {return taskMeasureTerm;}

    public void setTaskMeasureTerm(Integer taskMeasureTerm) {this.taskMeasureTerm = taskMeasureTerm;}

    @Basic
    @Column(name = "TASK_MEASURE_REMIND")
    public Integer getTaskMeasureRemind() {return taskMeasureRemind;}

    public void setTaskMeasureRemind(Integer taskMeasureRemind) {this.taskMeasureRemind = taskMeasureRemind;}

    @Basic
    @Column(name = "ORIGINAL_CODE")
    public String getOriginalCode() {
        return originalCode;
    }
    public void setOriginalCode(String originalCode) {
        this.originalCode = originalCode;
    }

    @Basic
    @Column(name = "COMMENT")
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }

    @Basic
    @Column(name = "IS_VALID")
    public Boolean getIsValid() {
        return isValid;
    }

    public void setIsValid(Boolean isValid) {
        this.isValid = isValid;
    }


    @Basic
    @Column(name = "CAN_QUERY")
    public Boolean getCanQuery() {
        return canQuery;
    }

    public void setCanQuery(Boolean canQuery) {
        this.canQuery = canQuery;
    }


    @Basic
    @Column(name = "TASK_TEXTX")
    public Double getTaskTextX() { return taskTextX; }

    public void setTaskTextX(Double taskTextX) { this.taskTextX = taskTextX; }

    @Basic
    @Column(name = "TASK_TEXTY")
    public Double getTaskTextY() { return taskTextY; }

    public void setTaskTextY(Double taskTextY) { this.taskTextY = taskTextY; }
}

 

下面鏈接是該功能的概要
https://blog.csdn.net/xsb_20171227/article/details/78949891#commentsedit

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章