Explorar o código

镇江本部历年项目建设进度

yue %!s(int64=5) %!d(string=hai) anos
pai
achega
5992dd98b6

+ 294 - 0
src/main/java/com/jeeplus/modules/sg/progress/entity/YearProgress.java

@@ -0,0 +1,294 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.progress.entity;
+
+
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+import com.jeeplus.modules.test.treetable.dialog.entity.CarKind1;
+
+/**
+ * 车辆Entity
+ * @author lgf
+ * @version 2018-06-12
+ */
+public class YearProgress extends DataEntity<YearProgress> {
+
+	private static final long serialVersionUID = 1L;
+	//序号
+	private String importNo;
+	//年度
+	private String projectYear;
+	//项目定义号
+	private String projectId;
+	//项目编号
+	private String projectNO;
+	//项目名称(按照项目名称)
+	private String projectName;
+	//合同单位
+	private String assignedUnit;
+	//费率
+	private String rate;
+	//施工单位
+	private String constructionUnit;
+	//业主项目经理
+	private String ownerProjectManager;
+	//施工项目经理
+	private String constructionProjectManager;
+	//分包单位
+	private String subcontractor;
+	//设计人员
+	private String designer;
+	//建设中存在的问题
+	private String problemsInConstruction;
+	//项目投运状态
+	private String projectOperationStatus;
+	//项目投运时间
+	private String projectOperationTime;
+	//设计费是否发生
+	private String isTheDesign;
+	//监理费是否发生
+	private String isTheSupervision;
+	//施工费是否发生
+	private String whetherIsIncurred;
+	//施工单位是否送审
+	private String whetherIsApproval;
+	//是否审定
+	private String approvedNot;
+	//是否审定
+	private String approvedNotNot;
+	//甲供材是否平
+	private String whetherFlat;
+	//财务决算批次
+	private String settlementBatch;
+	//项目关闭日期
+	private String projectCloseDate;
+	//资产卡片号
+	private String assetCardNo;
+
+	@ExcelField(title="序号", align=2, sort=1)
+	public String getImportNo() {
+		return importNo;
+	}
+
+	public void setImportNo(String importNo) {
+		this.importNo = importNo;
+	}
+
+	@ExcelField(title="年度", align=2, sort=2)
+	public String getProjectYear() {
+		return projectYear;
+	}
+
+	public void setProjectYear(String projectYear) {
+		this.projectYear = projectYear;
+	}
+
+	@ExcelField(title="项目定义号", align=2, sort=3)
+	public String getProjectId() {
+		return projectId;
+	}
+
+	public void setProjectId(String projectId) {
+		this.projectId = projectId;
+	}
+
+	@ExcelField(title="项目编号", align=2, sort=4)
+	public String getProjectNO() {
+		return projectNO;
+	}
+
+	public void setProjectNO(String projectNO) {
+		this.projectNO = projectNO;
+	}
+
+	@ExcelField(title="项目名称", align=2, sort=5)
+	public String getProjectName() {
+		return projectName;
+	}
+
+	public void setProjectName(String projectName) {
+		this.projectName = projectName;
+	}
+
+	@ExcelField(title="合同单位", align=2, sort=6)
+	public String getAssignedUnit() {
+		return assignedUnit;
+	}
+
+	public void setAssignedUnit(String assignedUnit) {
+		this.assignedUnit = assignedUnit;
+	}
+
+	@ExcelField(title="费率", align=2, sort=7)
+	public String getRate() {
+		return rate;
+	}
+
+	public void setRate(String rate) {
+		this.rate = rate;
+	}
+
+	@ExcelField(title="施工单位", align=2, sort=8)
+	public String getConstructionUnit() {
+		return constructionUnit;
+	}
+
+	public void setConstructionUnit(String constructionUnit) {
+		this.constructionUnit = constructionUnit;
+	}
+
+	@ExcelField(title="业主项目经理", align=2, sort=9)
+	public String getOwnerProjectManager() {
+		return ownerProjectManager;
+	}
+
+	public void setOwnerProjectManager(String ownerProjectManager) {
+		this.ownerProjectManager = ownerProjectManager;
+	}
+
+	@ExcelField(title="施工项目经理", align=2, sort=10)
+	public String getConstructionProjectManager() {
+		return constructionProjectManager;
+	}
+
+	public void setConstructionProjectManager(String constructionProjectManager) {
+		this.constructionProjectManager = constructionProjectManager;
+	}
+
+	@ExcelField(title="分包单位", align=2, sort=11)
+	public String getSubcontractor() {
+		return subcontractor;
+	}
+
+	public void setSubcontractor(String subcontractor) {
+		this.subcontractor = subcontractor;
+	}
+
+	@ExcelField(title="设计人员", align=2, sort=12)
+	public String getDesigner() {
+		return designer;
+	}
+
+	public void setDesigner(String designer) {
+		this.designer = designer;
+	}
+
+	@ExcelField(title="建设中存在的问题", align=2, sort=13)
+	public String getProblemsInConstruction() {
+		return problemsInConstruction;
+	}
+
+	public void setProblemsInConstruction(String problemsInConstruction) {
+		this.problemsInConstruction = problemsInConstruction;
+	}
+
+	@ExcelField(title="项目投运状态", align=2, sort=14)
+	public String getProjectOperationStatus() {
+		return projectOperationStatus;
+	}
+
+	public void setProjectOperationStatus(String projectOperationStatus) {
+		this.projectOperationStatus = projectOperationStatus;
+	}
+
+	@ExcelField(title="项目投运时间", align=2, sort=15)
+	public String getProjectOperationTime() {
+		return projectOperationTime;
+	}
+
+	public void setProjectOperationTime(String projectOperationTime) {
+		this.projectOperationTime = projectOperationTime;
+	}
+
+	@ExcelField(title="设计费是否发生", align=2, sort=16)
+	public String getIsTheDesign() {
+		return isTheDesign;
+	}
+
+	public void setIsTheDesign(String isTheDesign) {
+		this.isTheDesign = isTheDesign;
+	}
+
+	@ExcelField(title="监理费是否发生", align=2, sort=17)
+	public String getIsTheSupervision() {
+		return isTheSupervision;
+	}
+
+	public void setIsTheSupervision(String isTheSupervision) {
+		this.isTheSupervision = isTheSupervision;
+	}
+
+	@ExcelField(title="施工费是否发生", align=2, sort=18)
+	public String getWhetherIsIncurred() {
+		return whetherIsIncurred;
+	}
+
+	public void setWhetherIsIncurred(String whetherIsIncurred) {
+		this.whetherIsIncurred = whetherIsIncurred;
+	}
+
+	@ExcelField(title="施工单位是否送审", align=2, sort=19)
+	public String getWhetherIsApproval() {
+		return whetherIsApproval;
+	}
+
+	public void setWhetherIsApproval(String whetherIsApproval) {
+		this.whetherIsApproval = whetherIsApproval;
+	}
+
+	@ExcelField(title="是否审定", align=2, sort=20)
+	public String getApprovedNot() {
+		return approvedNot;
+	}
+
+	public void setApprovedNot(String approvedNot) {
+		this.approvedNot = approvedNot;
+	}
+
+	@ExcelField(title="是否审定", align=2, sort=21)
+	public String getApprovedNotNot() {
+		return approvedNotNot;
+	}
+
+	public void setApprovedNotNot(String approvedNotNot) {
+		this.approvedNotNot = approvedNotNot;
+	}
+
+	@ExcelField(title="甲供材是否平", align=2, sort=22)
+	public String getWhetherFlat() {
+		return whetherFlat;
+	}
+
+	public void setWhetherFlat(String whetherFlat) {
+		this.whetherFlat = whetherFlat;
+	}
+
+	@ExcelField(title="财务决算批次", align=2, sort=23)
+	public String getSettlementBatch() {
+		return settlementBatch;
+	}
+
+	public void setSettlementBatch(String settlementBatch) {
+		this.settlementBatch = settlementBatch;
+	}
+
+	@ExcelField(title="项目关闭日期", align=2, sort=24)
+	public String getProjectCloseDate() {
+		return projectCloseDate;
+	}
+
+	public void setProjectCloseDate(String projectCloseDate) {
+		this.projectCloseDate = projectCloseDate;
+	}
+
+	@ExcelField(title="资产卡片号", align=2, sort=25)
+	public String getAssetCardNo() {
+		return assetCardNo;
+	}
+
+	public void setAssetCardNo(String assetCardNo) {
+		this.assetCardNo = assetCardNo;
+	}
+}

+ 22 - 0
src/main/java/com/jeeplus/modules/sg/progress/mapper/YearProgressMapper.java

@@ -0,0 +1,22 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.progress.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.progress.entity.YearProgress;
+
+import java.util.List;
+
+/**
+ * 车辆MAPPER接口
+ * @author lgf
+ * @version 2018-06-12
+ */
+@MyBatisMapper
+public interface YearProgressMapper extends BaseMapper<YearProgress> {
+    void replaceAll(List<YearProgress> yearProgressList);
+
+    List<YearProgress> findAllYear();
+}

+ 289 - 0
src/main/java/com/jeeplus/modules/sg/progress/mapper/xml/YearProgressMapper.xml

@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.sg.progress.mapper.YearProgressMapper">
+
+    <sql id="progressColumns">
+        a.id,
+        a.projectYear,
+		a.projectId,
+		a.projectNO,
+		a.projectName,
+		a.assignedUnit,
+		a.rate,
+		a.constructionUnit,
+		a.ownerProjectManager,
+		a.constructionProjectManager,
+		a.subcontractor,
+		a.designer,
+		a.problemsInConstruction,
+		a.projectOperationStatus,
+		a.projectOperationTime,
+		a.isTheDesign,
+		a.isTheSupervision,
+		a.whetherIsIncurred,
+		a.whetherIsApproval,
+		a.approvedNot,
+		a.approvedNotNot,
+		a.whetherFlat,
+		a.settlementBatch,
+		a.projectCloseDate,
+		a.assetCardNo
+    </sql>
+
+    <select id="get" resultType="YearProgress">
+        SELECT
+        <include refid="progressColumns"/>
+        FROM xm_year_progress a
+        WHERE a.id = #{id}
+    </select>
+
+    <select id="findList" resultType="YearProgress">
+        SELECT
+        <include refid="progressColumns"/>
+        FROM xm_year_progress a
+        <where>
+            a.del_flag = #{DEL_FLAG_NORMAL}
+            ${dataScope}
+            <if test="projectYear!=null and projectYear !=''">
+                and a.projectYear = #{projectYear}
+            </if>
+            <if test="projectNO!=null and projectNO != ''">
+                and a.projectNO = #{projectNO}
+            </if>
+            <if test="projectId!=null and projectId != ''">
+                and a.projectId = #{projectId}
+            </if>
+            <if test="projectName!=null and projectName != ''">
+                and a.projectName = #{projectName}
+            </if>
+        </where>
+        <choose>
+            <when test="page !=null and page.orderBy != null and page.orderBy != ''">
+                ORDER BY ${page.orderBy}
+            </when>
+            <otherwise>
+                ORDER BY update_date DESC
+            </otherwise>
+        </choose>
+
+    </select>
+
+    <select id="findAllYear" resultType="YearProgress">
+        SELECT
+        <include refid="progressColumns"/>
+        FROM xm_year_progress a
+        group by projectYear
+    </select>
+
+    <select id="findAllList" resultType="YearProgress">
+        SELECT
+        <include refid="progressColumns"/>
+        FROM xm_year_progress a
+        <where>
+            a.del_flag = #{DEL_FLAG_NORMAL}
+            ${dataScope}
+        </where>
+        <choose>
+            <when test="page !=null and page.orderBy != null and page.orderBy != ''">
+                ORDER BY ${page.orderBy}
+            </when>
+            <otherwise>
+                ORDER BY a.create_date ASC
+            </otherwise>
+        </choose>
+    </select>
+
+    <insert id="insert">
+        INSERT INTO xm_year_progress
+        (id,
+         create_by,
+         create_date,
+         update_by,
+         update_date,
+         del_flag,
+         remarks,
+         projectYear,
+         projectId,
+         projectNO,
+         projectName,
+         assignedUnit,
+         rate,
+         constructionUnit,
+         ownerProjectManager,
+         constructionProjectManager,
+         subcontractor,
+         designer,
+         problemsInConstruction,
+         projectOperationStatus,
+         projectOperationTime,
+         isTheDesign,
+         isTheSupervision,
+         whetherIsIncurred,
+         whetherIsApproval,
+         approvedNot,
+         approvedNotNot,
+         whetherFlat,
+         settlementBatch,
+         projectCloseDate,
+         assetCardNo
+         )
+        VALUES
+               (#{id},
+                #{createBy.id},
+                #{createDate},
+                #{updateBy.id},
+                #{updateDate},
+                #{delFlag},
+                #{remarks},
+                #{projectYear},
+                #{projectId},
+                #{projectNO},
+                #{projectName},
+                #{assignedUnit},
+                #{rate},
+                #{constructionUnit},
+                #{ownerProjectManager},
+                #{constructionProjectManager},
+                #{subcontractor},
+                #{designer},
+                #{problemsInConstruction},
+                #{projectOperationStatus},
+                #{projectOperationTime},
+                #{isTheDesign},
+                #{isTheSupervision},
+                #{whetherIsIncurred},
+                #{whetherIsApproval},
+                #{approvedNot},
+                #{approvedNotNot},
+                #{whetherFlat},
+                #{settlementBatch},
+                #{projectCloseDate},
+                #{assetCardNo}
+               )
+    </insert>
+
+    <insert id="replaceAll">
+        REPLACE INTO xm_year_progress
+        (id,
+         create_by,
+         create_date,
+         update_by,
+         update_date,
+         del_flag,
+         remarks,
+         projectYear,
+         projectId,
+         projectNO,
+         projectName,
+         assignedUnit,
+         rate,
+         constructionUnit,
+         ownerProjectManager,
+         constructionProjectManager,
+         subcontractor,
+         designer,
+         problemsInConstruction,
+         projectOperationStatus,
+         projectOperationTime,
+         isTheDesign,
+         isTheSupervision,
+         whetherIsIncurred,
+         whetherIsApproval,
+         approvedNot,
+         approvedNotNot,
+         whetherFlat,
+         settlementBatch,
+         projectCloseDate,
+         assetCardNo
+        )
+        VALUES
+        <foreach collection="list" item="item" index="index" separator="," >
+        (#{item.id},
+         #{item.createBy.id},
+         #{item.createDate},
+         #{item.updateBy.id},
+         #{item.updateDate},
+         #{item.delFlag},
+         #{item.remarks},
+         #{item.projectYear},
+         #{item.projectId},
+         #{item.projectNO},
+         #{item.projectName},
+         #{item.assignedUnit},
+         #{item.rate},
+         #{item.constructionUnit},
+         #{item.ownerProjectManager},
+         #{item.constructionProjectManager},
+         #{item.subcontractor},
+         #{item.designer},
+         #{item.problemsInConstruction},
+         #{item.projectOperationStatus},
+         #{item.projectOperationTime},
+         #{item.isTheDesign},
+         #{item.isTheSupervision},
+         #{item.whetherIsIncurred},
+         #{item.whetherIsApproval},
+         #{item.approvedNot},
+         #{item.approvedNotNot},
+         #{item.whetherFlat},
+         #{item.settlementBatch},
+         #{item.projectCloseDate},
+         #{item.assetCardNo}
+        )
+        </foreach>
+    </insert>
+
+    <update id="update">
+        UPDATE xm_year_progress
+        SET
+            projectYear = #{projectYear},
+            projectId = #{projectId},
+            projectNO = #{projectNO},
+            assignedUnit = #{assignedUnit},
+            rate = #{rate},
+            constructionUnit = #{constructionUnit},
+            ownerProjectManager = #{ownerProjectManager},
+            constructionProjectManager = #{constructionProjectManager},
+            subcontractor = #{subcontractor},
+            designer = #{designer},
+            problemsInConstruction = #{problemsInConstruction},
+            projectOperationStatus = #{projectOperationStatus},
+            projectOperationTime = #{projectOperationTime},
+            isTheDesign = #{isTheDesign},
+            isTheSupervision = #{isTheSupervision},
+            whetherIsIncurred = #{whetherIsIncurred},
+            whetherIsApproval = #{whetherIsApproval},
+            approvedNot = #{approvedNot},
+            approvedNotNot = #{approvedNotNot},
+            whetherFlat = #{whetherFlat},
+            settlementBatch = #{settlementBatch},
+            projectCloseDate = #{projectCloseDate},
+            assetCardNo = #{assetCardNo},
+            update_by   = #{updateBy.id},
+            update_date = #{updateDate}
+        WHERE id = #{id}
+    </update>
+
+
+    <!--物理删除-->
+    <update id="delete">
+        DELETE FROM xm_year_progress
+        <choose>
+            <when test="id !=null and id != ''">
+                WHERE id = #{id}
+            </when>
+        </choose>
+    </update>
+
+    <!--逻辑删除-->
+    <update id="deleteByLogic">
+        UPDATE xm_year_progress SET
+        del_flag = #{DEL_FLAG_DELETE}
+        <choose>
+            <when test="id !=null and id != ''">
+                WHERE id = #{id}
+            </when>
+        </choose>
+    </update>
+
+</mapper>

+ 43 - 0
src/main/java/com/jeeplus/modules/sg/progress/service/YearProgressService.java

@@ -0,0 +1,43 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.progress.service;
+
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.sg.progress.entity.YearProgress;
+import com.jeeplus.modules.sg.progress.mapper.YearProgressMapper;
+import com.jeeplus.modules.test.treetable.dialog.entity.Car1;
+import com.jeeplus.modules.test.treetable.dialog.mapper.Car1Mapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 车辆Service
+ * @author lgf
+ * @version 2018-06-12
+ */
+@Service
+@Transactional(readOnly = true)
+public class YearProgressService extends CrudService<YearProgressMapper, YearProgress> {
+
+    @Autowired
+    private YearProgressMapper yearProgressMapper;
+
+    @Transactional(readOnly = false)
+    public void replaceAll(List<YearProgress> yearProgressList) {
+        for (YearProgress y:yearProgressList
+             ) {
+            y.preInsert();
+        }
+        yearProgressMapper.replaceAll(yearProgressList);
+    }
+
+    public List<YearProgress> findAllYear() {
+        return yearProgressMapper.findAllYear();
+    }
+	
+}

+ 246 - 0
src/main/java/com/jeeplus/modules/sg/progress/web/YearProgressController.java

@@ -0,0 +1,246 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.progress.web;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.sg.progress.entity.YearProgress;
+import com.jeeplus.modules.sg.progress.service.YearProgressService;
+import com.jeeplus.modules.test.treetable.dialog.entity.CarKind1;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.ConstraintViolationException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 车辆Controller
+ *
+ * @author lgf
+ * @version 2018-06-12
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/sg/progress")
+public class YearProgressController extends BaseController {
+
+    @Autowired
+    private YearProgressService yearProgressService;
+
+    @ModelAttribute
+    public YearProgress get(@RequestParam(required = false) String id) {
+        YearProgress entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = yearProgressService.get(id);
+        }
+        if (entity == null) {
+            entity = new YearProgress();
+        }
+        return entity;
+    }
+
+    /**
+     * 车辆列表页面
+     */
+    @RequiresPermissions("test:progress:list")
+    @RequestMapping(value = "list")
+    public String list(YearProgress yearProgress, Model model) {
+        model.addAttribute("yearProgress", yearProgress);
+        return "modules/sg/progress/yearProgressList";
+    }
+
+    /**
+     * 车辆列表数据
+     */
+    @ResponseBody
+    @RequiresPermissions("test:progress:list")
+    @RequestMapping(value = "data")
+    public Map<String, Object> data(YearProgress yearProgress, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<YearProgress> page = yearProgressService.findPage(new Page<YearProgress>(request, response), yearProgress);
+        return getBootstrapData(page);
+    }
+
+    /**
+     * 查看,增加,编辑车辆表单页面
+     */
+    @RequiresPermissions(value = {"test:progress:view", "test:progress:add", "test:progress:edit"}, logical = Logical.OR)
+    @RequestMapping(value = "form")
+    public String form(YearProgress yearProgress, Model model) {
+        model.addAttribute("yearProgress", yearProgress);
+        return "modules/sg/progress/yearProgressForm";
+    }
+
+    /**
+     * 保存车辆
+     */
+    @ResponseBody
+    @RequiresPermissions(value = {"test:progress:add", "test:progress:edit"}, logical = Logical.OR)
+    @RequestMapping(value = "save")
+    public AjaxJson save(YearProgress yearProgress, Model model) throws Exception {
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String errMsg = beanValidator(yearProgress);
+        if (StringUtils.isNotBlank(errMsg)) {
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        //新增或编辑表单保存
+        yearProgressService.save(yearProgress);//保存
+        j.setSuccess(true);
+        j.setMsg("项目信息保存成功");
+        return j;
+    }
+
+    /**
+     * 删除车辆
+     */
+    @ResponseBody
+    @RequiresPermissions("test:progress:del")
+    @RequestMapping(value = "delete")
+    public AjaxJson delete(YearProgress yearProgress) {
+        AjaxJson j = new AjaxJson();
+        yearProgressService.delete(yearProgress);
+        j.setMsg("删除项目信息成功");
+        return j;
+    }
+
+    /**
+     * 批量删除车辆
+     */
+    @ResponseBody
+    @RequiresPermissions("test:progress:del")
+    @RequestMapping(value = "deleteAll")
+    public AjaxJson deleteAll(String ids) {
+        AjaxJson j = new AjaxJson();
+        String idArray[] = ids.split(",");
+        for (String id : idArray) {
+            yearProgressService.delete(yearProgressService.get(id));
+        }
+        j.setMsg("删除项目信息成功");
+        return j;
+    }
+
+    /**
+     * 导出excel文件
+     */
+    @ResponseBody
+    @RequiresPermissions("test:progress:export")
+    @RequestMapping(value = "export")
+    public AjaxJson exportFile(YearProgress yearProgress, HttpServletRequest request, HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "镇江本部历年项目建设进度统计表" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
+            Page<YearProgress> page = yearProgressService.findPage(new Page<YearProgress>(request, response, -1), yearProgress);
+            List<YearProgress> list = page.getList();
+            int i = 1;
+            for (YearProgress yearProgress1 : list
+            ) {
+                yearProgress1.setImportNo(String.valueOf(i));
+                i += 1;
+            }
+            new ExportExcel("", YearProgress.class).setDataList(page.getList()).write(response, fileName).dispose();
+            j.setSuccess(true);
+            j.setMsg("导出成功!");
+            return j;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导出镇江本部历年项目建设进度记录失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    /**
+     * 导入Excel数据
+     */
+    @ResponseBody
+    @RequiresPermissions("test:progress:import")
+    @RequestMapping(value = "import")
+    public AjaxJson importFile(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        try {
+            int failureNum = 0;
+            StringBuilder failureMsg = new StringBuilder();
+            ImportExcel ei = new ImportExcel(file, 0, 0);
+            List<YearProgress> insertList = new ArrayList<>();
+            List<YearProgress> list = ei.getDataList(YearProgress.class);
+            for (YearProgress yearProgress : list) {
+                if (null != yearProgress.getProjectName() && !"".equals(yearProgress.getProjectName())) {
+                    insertList.add(yearProgress);
+                } else {
+                    failureNum++;
+                }
+            }
+            if (failureNum > 0) {
+                failureMsg.insert(0, ",有 " + failureNum + " 条记录没有项目名称,请核实。");
+            }
+            yearProgressService.replaceAll(insertList);
+            j.setMsg("已成功导入 " + list.size() + " 条记录" + failureMsg);
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    /**
+     * 下载导入车辆数据模板
+     */
+    @ResponseBody
+    @RequiresPermissions("test:progress:import")
+    @RequestMapping(value = "template")
+    public AjaxJson importFileTemplate(HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "镇江本部历年项目建设进度统计表导入模板.xlsx";
+            List<YearProgress> list = Lists.newArrayList();
+            new ExportExcel("", YearProgress.class, 1).setDataList(list).write(response, fileName).dispose();
+            return null;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入模板下载失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+
+    @ResponseBody
+    @RequestMapping(value = "treeData")
+    public List<Map<String, Object>> treeData(@RequestParam(required = false) String extId, HttpServletResponse response) {
+        List<Map<String, Object>> mapList = Lists.newArrayList();
+        List<YearProgress> list = yearProgressService.findAllYear();
+        for (int i = 0; i < list.size(); i++) {
+            YearProgress e = list.get(i);
+            if (StringUtils.isBlank(extId) || (extId != null && !extId.equals(e.getId()))) {
+                Map<String, Object> map = Maps.newHashMap();
+                map.put("id", e.getProjectYear());
+                map.put("text", e.getProjectYear());
+                mapList.add(map);
+            }
+        }
+        return mapList;
+    }
+}

+ 170 - 0
src/main/webapp/webpage/modules/sg/progress/yearProgressForm.jsp

@@ -0,0 +1,170 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>年度项目建设进度统计管理</title>
+    <meta name="decorator" content="ani"/>
+    <script type="text/javascript">
+        $(document).ready(function () {
+
+        });
+
+        function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if (!isValidate) {
+                return false;
+            } else {
+                jp.loading();
+                jp.post("${ctx}/sg/progress/save", $('#inputForm').serialize(), function (data) {
+                    if (data.success) {
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+                    } else {
+                        jp.error(data.msg);
+                    }
+                })
+            }
+
+        }
+    </script>
+</head>
+<body class="bg-white">
+<form:form id="inputForm" modelAttribute="yearProgress" class="form-horizontal">
+    <form:hidden path="id"/>
+    <table class="table table-bordered">
+        <tbody>
+        <tr>
+            <td class="width-15 active"><label class="">年度:</label></td>
+            <td class="width-35">
+                <form:input path="projectYear" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">项目定义号:</label></td>
+            <td class="width-35">
+                <form:input path="projectId" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">项目编号:</label></td>
+            <td class="width-35">
+                <form:input path="projectNO" htmlEscape="false" class="form-control"/>
+            </td>
+            <td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+            <td class="width-35">
+                <c:choose>
+                    <c:when test="${not empty yearProgress.projectName}">
+                        <form:input path="projectName" readonly="true" htmlEscape="false"
+                                    class="form-control required"/>
+                    </c:when>
+                    <c:otherwise>
+                        <form:input path="projectName" htmlEscape="false" class="form-control required"/>
+                    </c:otherwise>
+                </c:choose>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">合同单位:</label></td>
+            <td class="width-35">
+                <form:input path="assignedUnit" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">费率:</label></td>
+            <td class="width-35">
+                <form:input path="rate" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">施工单位:</label></td>
+            <td class="width-35">
+                <form:input path="constructionUnit" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">业主项目经理:</label></td>
+            <td class="width-35">
+                <form:input path="ownerProjectManager" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">施工项目经理:</label></td>
+            <td class="width-35">
+                <form:input path="constructionProjectManager" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">分包单位:</label></td>
+            <td class="width-35">
+                <form:input path="subcontractor" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">设计人员:</label></td>
+            <td class="width-35">
+                <form:input path="designer" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">建设中存在的问题:</label></td>
+            <td class="width-35">
+                <form:input path="problemsInConstruction" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">项目投运状态:</label></td>
+            <td class="width-35">
+                <form:input path="projectOperationStatus" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">项目投运时间:</label></td>
+            <td class="width-35">
+                <form:input path="projectOperationTime" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">设计费是否发生:</label></td>
+            <td class="width-35">
+                <form:input path="isTheDesign" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">监理费是否发生:</label></td>
+            <td class="width-35">
+                <form:input path="isTheSupervision" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">施工费是否发生:</label></td>
+            <td class="width-35">
+                <form:input path="whetherIsIncurred" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">施工单位是否送审:</label></td>
+            <td class="width-35">
+                <form:input path="whetherIsApproval" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">是否审定:</label></td>
+            <td class="width-35">
+                <form:input path="approvedNot" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">是否审定:</label></td>
+            <td class="width-35">
+                <form:input path="approvedNotNot" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">甲供材是否平:</label></td>
+            <td class="width-35">
+                <form:input path="whetherFlat" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">财务决算批次:</label></td>
+            <td class="width-35">
+                <form:input path="settlementBatch" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="width-15 active"><label class="">项目关闭日期:</label></td>
+            <td class="width-35">
+                <form:input path="projectCloseDate" htmlEscape="false" class="form-control "/>
+            </td>
+            <td class="width-15 active"><label class="">资产卡片号:</label></td>
+            <td class="width-35">
+                <form:input path="assetCardNo" htmlEscape="false" class="form-control"/>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+</form:form>
+</body>
+</html>

+ 267 - 0
src/main/webapp/webpage/modules/sg/progress/yearProgressList.js

@@ -0,0 +1,267 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#car1Table').bootstrapTable({
+		 
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	       showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)     
+               cache: false,    
+               //是否显示分页(*)  
+               pagination: true,   
+                //排序方式 
+               sortOrder: "asc",  
+               //初始化加载第一页,默认第一页
+               pageNumber:1,   
+               //每页的记录行数(*)   
+               pageSize: 10,  
+               //可供选择的每页的行数(*)    
+               pageList: [10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据  
+               url: "${ctx}/sg/progress/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',   
+               ////查询参数,每次调用是会带上这个参数,可自定义                         
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+		       
+		    }
+			,{
+		        field: 'projectYear',
+		        title: '年度'
+		    }
+			,{
+		        field: 'projectId',
+		        title: '项目定义号'
+		    }
+			,{
+		        field: 'projectNO',
+		        title: '项目编号'
+               }
+			   ,{
+				   field: 'projectName',
+				   title: '项目名称'
+			   }
+			   ,{
+				   field: 'assignedUnit',
+				   title: '合同单位'
+			   }
+			   ,{
+				   field: 'rate',
+				   title: '费率'
+			   }
+			   ,{
+				   field: 'constructionUnit',
+				   title: '施工单位'
+			   }
+			   ,{
+				   field: 'ownerProjectManager',
+				   title: '业主项目经理'
+			   }
+			   ,{
+				   field: 'constructionProjectManager',
+				   title: '施工项目经理'
+			   }
+			   ,{
+				   field: 'subcontractor',
+				   title: '分包单位'
+			   }
+			   ,{
+				   field: 'designer',
+				   title: '设计人员'
+			   }
+			   ,{
+				   field: 'problemsInConstruction',
+				   title: '建设中存在的问题'
+			   }
+			   ,{
+				   field: 'projectOperationStatus',
+				   title: '项目投运状态'
+			   }
+			   ,{
+				   field: 'projectOperationTime',
+				   title: '项目投运时间'
+			   }
+			   ,{
+				   field: 'isTheDesign',
+				   title: '设计费是否发生'
+			   }
+			   ,{
+				   field: 'isTheSupervision',
+				   title: '监理费是否发生'
+			   }
+			   ,{
+				   field: 'whetherIsIncurred',
+				   title: '施工费是否发生'
+			   }
+			   ,{
+				   field: 'whetherIsApproval',
+				   title: '施工单位是否送审'
+			   }
+			   ,{
+				   field: 'approvedNot',
+				   title: '是否审定'
+			   }
+			   ,{
+				   field: 'approvedNotNot',
+				   title: '是否审定'
+			   }
+			   ,{
+				   field: 'whetherFlat',
+				   title: '甲供材是否平'
+			   }
+			   ,{
+				   field: 'settlementBatch',
+				   title: '财务决算批次'
+			   }
+			   ,{
+				   field: 'projectCloseDate',
+				   title: '项目关闭日期'
+			   }
+			   ,{
+				   field: 'assetCardNo',
+				   title: '资产卡片号'
+			   }
+		     ]
+		
+		});
+		
+		  
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#car1Table').bootstrapTable("toggleView");
+		}
+	  
+	  $('#car1Table').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#car1Table').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#car1Table').bootstrapTable('getSelections').length!=1);
+        });
+		  
+		$("#btnImport").click(function(){
+			jp.open({
+			    type: 2,
+                area: [500, 200],
+                auto: true,
+			    title:"导入数据",
+			    content: "${ctx}/tag/importExcel" ,
+			    btn: ['下载模板','确定', '关闭'],
+				    btn1: function(index, layero){
+					  jp.downloadFile('${ctx}/sg/progress/template');
+				  },
+			    btn2: function(index, layero){
+				        var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+						iframeWin.contentWindow.importExcel('${ctx}/sg/progress/import', function (data) {
+							if(data.success){
+								jp.success(data.msg);
+								refresh();
+							}else{
+								jp.error(data.msg);
+							}
+                            jp.close(index);
+                        });//调用保存事件
+                    return false;
+				  },
+				 
+				  btn3: function(index){ 
+					  jp.close(index);
+	    	       }
+			}); 
+		});
+		
+		
+	 $("#export").click(function(){//导出Excel文件
+			jp.downloadFile('${ctx}/sg/progress/export');
+	  });
+
+		    
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#car1Table').bootstrapTable('refresh');
+		});
+	 
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		  $("#searchForm  .select-item").html("");
+		  $('#car1Table').bootstrapTable('refresh');
+		});
+		
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#car1Table").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+  
+  function deleteAll(){
+
+		jp.confirm('确认要删除该建设进度吗?', function(){
+			jp.loading();  	
+			jp.get("${ctx}/sg/progress/deleteAll?ids=" + getIdSelections(), function(data){
+         	  		if(data.success){
+         	  			$('#car1Table').bootstrapTable('refresh');
+         	  			jp.success(data.msg);
+         	  		}else{
+         	  			jp.error(data.msg);
+         	  		}
+         	  	})
+          	   
+		})
+  }
+    //刷新列表
+  function refresh(){
+  	$('#car1Table').bootstrapTable('refresh');
+  }
+  
+   function add(){
+	  jp.openSaveDialog('新增项目假设进度', "${ctx}/sg/progress/form",'800px', '500px');
+  }
+
+   function edit(id) {//没有权限时,不显示确定按钮
+	   if (id == undefined) {
+		   id = getIdSelections();
+	   }
+	   jp.openSaveDialog('编辑项目假设进度', "${ctx}/sg/progress/form?id=" + id, '800px', '500px');
+   }
+
+
+</script>

+ 97 - 0
src/main/webapp/webpage/modules/sg/progress/yearProgressList.jsp

@@ -0,0 +1,97 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>镇江本部历年项目建设进度统计表</title>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp" %>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@include file="yearProgressList.js" %>
+    <%@include file="yearProgressTreeList.js" %>
+
+</head>
+<body>
+<div class="wrapper wrapper-content">
+    <div class="panel panel-primary">
+        <div class="panel-heading">
+            <h3 class="panel-title">镇江本部历年项目建设进度统计表</h3>
+        </div>
+        <div class="panel-body">
+            <div class="row">
+                <div class="col-sm-4 col-md-3">
+                    <div id="carKind1jsTree" style="overflow-x:auto; border:0px;"></div>
+                </div>
+                <div class="col-sm-8 col-md-9" >
+                    <!-- 搜索 -->
+                    <div id="search-collapse" class="collapse">
+                        <div class="accordion-inner">
+                            <form:form id="searchForm" modelAttribute="yearProgress"
+                                       class="form form-horizontal well clearfix">
+                                <div class="col-xs-12 col-sm-6 col-md-4">
+                                    <div class="form-group">
+                                        <label class="label-item  " title="项目定义号:">项目定义号:</label>
+                                        <form:input path="projectId" htmlEscape="false" class=" form-control"/>
+                                    </div>
+                                </div>
+                                <div class="col-xs-12 col-sm-6 col-md-4">
+                                    <div class="form-group">
+                                        <label class="label-item  " title="项目编号:">项目编号:</label>
+                                        <form:input path="projectNO" htmlEscape="false" class=" form-control"/>
+                                    </div>
+                                </div>
+                                <div class="col-xs-12 col-sm-6 col-md-4">
+                                    <div class="form-group">
+                                        <label class="label-item  " title="项目名称:">项目名称:</label>
+                                        <form:input path="projectName" htmlEscape="false" class=" form-control"/>
+                                    </div>
+                                </div>
+                                <div class="col-xs-12 col-sm-6 col-md-4">
+                                    <div style="margin-top:26px">
+                                        <a id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                                class="fa fa-search"></i> 查询</a>
+                                        <a id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i
+                                                class="fa fa-refresh"></i> 重置</a>
+                                    </div>
+                                </div>
+                            </form:form>
+                        </div>
+                    </div>
+
+                    <!-- 工具栏 -->
+                    <div id="toolbar">
+                        <shiro:hasPermission name="test:progress:add">
+                            <button id="add" class="btn btn-primary" onclick="add()">
+                                <i class="glyphicon glyphicon-plus"></i> 新建
+                            </button>
+                        </shiro:hasPermission>
+                        <shiro:hasPermission name="test:progress:edit">
+                            <button id="edit" class="btn btn-success" disabled onclick="edit()">
+                                <i class="glyphicon glyphicon-edit"></i> 修改
+                            </button>
+                        </shiro:hasPermission>
+                        <shiro:hasPermission name="test:progress:del">
+                            <button id="remove" class="btn btn-danger" disabled onclick="deleteAll()">
+                                <i class="glyphicon glyphicon-remove"></i> 删除
+                            </button>
+                        </shiro:hasPermission>
+                        <shiro:hasPermission name="test:progress:import">
+                            <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+                        </shiro:hasPermission>
+                        <shiro:hasPermission name="test:progress:export">
+                            <button id="export" class="btn btn-warning">
+                                <i class="fa fa-file-excel-o"></i> 导出
+                            </button>
+                        </shiro:hasPermission>
+                    </div>
+
+                    <!-- 表格 -->
+                    <table id="car1Table" data-toolbar="#toolbar"></table>
+
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 63 - 0
src/main/webapp/webpage/modules/sg/progress/yearProgressTreeList.js

@@ -0,0 +1,63 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+	<script>
+		$(document).ready(function() {
+			var to = false;
+			$('#search_q').keyup(function () {
+				if(to) { clearTimeout(to); }
+				to = setTimeout(function () {
+					var v = $('#search_q').val();
+					$('#carKind1jsTree').jstree(true).search(v);
+				}, 250);
+			});
+			$('#carKind1jsTree').jstree({
+				'core' : {
+					"multiple" : false,
+					"animation" : 0,
+					"themes" : { "variant" : "large", "icons":true , "stripes":true},
+					'data' : {
+						"url" : "${ctx}/sg/progress/treeData",
+						"dataType" : "json" 
+					}
+				},
+				"conditionalselect" : function (node, event) {
+					return false;
+				},
+				'plugins': ["contextmenu", 'types', 'wholerow', "search"],
+				"contextmenu": {
+					"items": function (node) {
+						var tmp = $.jstree.defaults.contextmenu.items();
+						delete tmp.create.action;
+						delete tmp.rename.action;
+						tmp.rename = null;
+						return tmp;
+					}
+
+				},
+				"types":{
+					'default' : { 'icon' : 'fa fa-group' },
+					'1' : {'icon' : 'fa fa-folder'},
+					'2' : {'icon' : 'fa fa-home' },
+					'3' : { 'icon' : 'fa fa-file-text-o'},
+					'4' : { 'icon' : 'fa fa-umbrella' }
+				}
+
+			}).bind("activate_node.jstree", function (obj, e) {
+				var node = $('#carKind1jsTree').jstree(true).get_selected(true)[0];
+				var opt = {
+					silent: true,
+					query:{
+						'projectYear':node.id
+					}
+				};
+				$("#kindId").val(node.id);
+				$("#kindName").val(node.text);
+				$('#car1Table').bootstrapTable('refresh',opt);
+			}).on('loaded.jstree', function() {
+				$("#carKind1jsTree").jstree('open_all');
+			});
+		});
+
+		function refreshTree() {
+	            $('#carKind1jsTree').jstree("refresh");
+	        }
+	</script>