Переглянути джерело

拆旧模块,转资多资产卡片号修改

lem 5 роки тому
батько
коміт
58eb344792
28 змінених файлів з 2402 додано та 36 видалено
  1. 5 2
      src/main/java/com/jeeplus/modules/act/service/ActTaskService.java
  2. 19 1
      src/main/java/com/jeeplus/modules/act/web/ActTaskController.java
  3. 10 0
      src/main/java/com/jeeplus/modules/sg/fund/entity/Fund.java
  4. 1 1
      src/main/java/com/jeeplus/modules/sg/fund/mapper/FundMapper.java
  5. 5 1
      src/main/java/com/jeeplus/modules/sg/fund/mapper/xml/FundMapper.xml
  6. 2 2
      src/main/java/com/jeeplus/modules/sg/fund/service/FundService.java
  7. 5 3
      src/main/java/com/jeeplus/modules/sg/fund/web/FundController.java
  8. 11 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/entity/Project.java
  9. 257 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/entity/TearDown.java
  10. 48 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/mapper/ProjectMapper.java
  11. 209 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/mapper/xml/ProjectMapper.xml
  12. 88 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/service/ProjectService.java
  13. 3 2
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/util/ProjectImportUtil.java
  14. 476 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/web/ProjectController.java
  15. 32 1
      src/main/webapp/webpage/modules/sg/fund/assetForm.js
  16. 10 4
      src/main/webapp/webpage/modules/sg/fund/assetForm.jsp
  17. 7 0
      src/main/webapp/webpage/modules/sg/fund/wbsForm.js
  18. 9 4
      src/main/webapp/webpage/modules/sg/fund/wbsForm.jsp
  19. 186 0
      src/main/webapp/webpage/modules/sg/managementcenter/activiti/importTable.js
  20. 3 0
      src/main/webapp/webpage/modules/sg/managementcenter/activiti/importTable.jsp
  21. 155 13
      src/main/webapp/webpage/modules/sg/managementcenter/activiti/operatorUploadList.js
  22. 36 2
      src/main/webapp/webpage/modules/sg/managementcenter/activiti/operatorUploadList.jsp
  23. 87 0
      src/main/webapp/webpage/modules/sg/managementcenter/project/tearAdd.jsp
  24. 237 0
      src/main/webapp/webpage/modules/sg/managementcenter/project/tearDown.js
  25. 65 0
      src/main/webapp/webpage/modules/sg/managementcenter/project/tearDown.jsp
  26. 96 0
      src/main/webapp/webpage/modules/sg/managementcenter/project/tearEidForm.jsp
  27. 275 0
      src/main/webapp/webpage/modules/sg/managementcenter/project/tearFinal.js
  28. 65 0
      src/main/webapp/webpage/modules/sg/managementcenter/project/tearFinal.jsp

+ 5 - 2
src/main/java/com/jeeplus/modules/act/service/ActTaskService.java

@@ -3589,7 +3589,7 @@ public class ActTaskService extends BaseService {
     }
 
     /**
-     * 交底:是否借款
+     * 填写wbs编码
      */
     @Transactional(readOnly = false)
     public void wbsTask(Act act) {
@@ -3604,7 +3604,7 @@ public class ActTaskService extends BaseService {
     }
 
     /**
-     * 交底:是否借款
+     * 填写资产卡片号
      */
     @Transactional(readOnly = false)
     public void assetTask(Act act) {
@@ -3613,6 +3613,9 @@ public class ActTaskService extends BaseService {
         act.preUpdate();
         // 提交流程任务
         Map<String, Object> vars = Maps.newHashMap();
+        Project user = MyActiviUtils.findFundUser(act.getProcInsId());
+        vars.put("manager", UserUtils.getByUserName(user.getAssignment().getOwnerManager()).getLoginName());
+        vars.put("pass", "yes".equals(act.getFlag()) ? true : false);
         complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
     }
 }

+ 19 - 1
src/main/java/com/jeeplus/modules/act/web/ActTaskController.java

@@ -914,7 +914,7 @@ public class ActTaskController extends BaseController {
      */
     @ResponseBody
     @RequestMapping(value = "operatorUpload")
-    public AjaxJson operatorUpload(Act act, String path, String reserveProjectName) {
+    public AjaxJson operatorUpload(Act act, String path, String budget,String civil,String reserveProjectName) {
         AjaxJson j = new AjaxJson();
         try {
             if (path != null && !"".equals(path)) {
@@ -926,6 +926,24 @@ public class ActTaskController extends BaseController {
                 uploadImages.setReserveProjectName(reserveProjectName);
                 constructionService.uploadSave(uploadImages);
             }
+            if (budget != null && !"".equals(budget)) {
+                UploadImages budgetImages = new UploadImages();
+                budgetImages.setPath(budget);
+                budgetImages.setUid(UserUtils.getUser().getName());
+                budgetImages.setImgName("1");
+                budgetImages.setProcInsId(act.getProcInsId());
+                budgetImages.setReserveProjectName(reserveProjectName);
+                constructionService.uploadSave(budgetImages);
+            }
+            if (civil != null && !"".equals(civil)) {
+                UploadImages civilImages = new UploadImages();
+                civilImages.setPath(civil);
+                civilImages.setUid(UserUtils.getUser().getName());
+                civilImages.setImgName("1");
+                civilImages.setProcInsId(act.getProcInsId());
+                civilImages.setReserveProjectName(reserveProjectName);
+                constructionService.uploadSave(civilImages);
+            }
             String comment = URLDecoder.decode(act.getComment(), "UTF-8");
             act.setComment(comment);
             actTaskService.operatorUpload(act);

+ 10 - 0
src/main/java/com/jeeplus/modules/sg/fund/entity/Fund.java

@@ -16,6 +16,8 @@ public class Fund extends ActEntity<Fund> {
     private String reserveProjectName;
     //wbs编码
     private String wbsEncoding;
+    //需要填写多少资产卡片号
+    private String wbsNumber;
     //资产卡片号
     private String assetCardNumber;
     //项目基础信息
@@ -61,6 +63,14 @@ public class Fund extends ActEntity<Fund> {
         this.wbsEncoding = wbsEncoding;
     }
 
+    public String getWbsNumber() {
+        return wbsNumber;
+    }
+
+    public void setWbsNumber(String wbsNumber) {
+        this.wbsNumber = wbsNumber;
+    }
+
     public String getAssetCardNumber() {
         return assetCardNumber;
     }

+ 1 - 1
src/main/java/com/jeeplus/modules/sg/fund/mapper/FundMapper.java

@@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Param;
 @MyBatisMapper
 public interface FundMapper extends BaseMapper<Fund> {
     //修改项目wbs
-    void updateWbs(@Param("wbsEncoding") String wbsEncoding, @Param("procInsId")String procInsId);
+    void updateWbs(@Param("wbsEncoding") String wbsEncoding,@Param("wbsNumber") String wbsNumber, @Param("procInsId")String procInsId);
 
     //修改项目资产卡片号
     void updateAsset(@Param("assetCardNumber") String assetCardNumber, @Param("procInsId")String procInsId);

+ 5 - 1
src/main/java/com/jeeplus/modules/sg/fund/mapper/xml/FundMapper.xml

@@ -13,6 +13,7 @@
         a.projectId,
         a.projectName,
         a.proc_ins_id,
+        a.wbsNumber,
         a.reserveProjectName,
         a.wbsEncoding,
         a.assetCardNumber
@@ -121,6 +122,7 @@
          proc_ins_id,
          reserveProjectName,
          wbsEncoding,
+         wbsNumber,
          assetCardNumber)
         VALUES (#{id},
                 #{createBy.id},
@@ -134,6 +136,7 @@
                 #{procInsId},
                 #{reserveProjectName},
                 #{wbsEncoding},
+                #{wbsNumber},
                 #{assetCardNumber});
     </insert>
 
@@ -146,7 +149,8 @@
 
     <update id="updateWbs">
         UPDATE xm_fund_process
-        SET wbsEncoding = #{wbsEncoding}
+        SET wbsEncoding = #{wbsEncoding},
+            wbsNumber = #{wbsNumber}
         WHERE proc_ins_id = #{procInsId}
     </update>
 

+ 2 - 2
src/main/java/com/jeeplus/modules/sg/fund/service/FundService.java

@@ -52,8 +52,8 @@ public class FundService extends CrudService<FundMapper, Fund> {
 
 	//修改项目wbs
 	@Transactional(readOnly = false)
-	public void updateWbs(String wbsEncoding, String procInsId) {
-		fundMapper.updateWbs(wbsEncoding, procInsId);
+	public void updateWbs(String wbsEncoding,String wbsNumber,String procInsId) {
+		fundMapper.updateWbs(wbsEncoding,wbsNumber, procInsId);
 	}
 
 	//修改项目资产卡片号

+ 5 - 3
src/main/java/com/jeeplus/modules/sg/fund/web/FundController.java

@@ -262,10 +262,10 @@ public class FundController extends BaseController {
      * */
     @ResponseBody
     @RequestMapping(value = "wbsTask")
-    public AjaxJson wbsTask(Act act, String wbsEncoding) {
+    public AjaxJson wbsTask(Act act, String wbsEncoding,String wbsNumber) {
         AjaxJson j = new AjaxJson();
         try {
-            fundService.updateWbs(wbsEncoding, act.getProcInsId());
+            fundService.updateWbs(wbsEncoding,wbsNumber, act.getProcInsId());
             String comment = URLDecoder.decode(act.getComment(), "UTF-8");
             act.setComment(comment);
             actTaskService.wbsTask(act);
@@ -281,7 +281,9 @@ public class FundController extends BaseController {
     public AjaxJson assetTask(Act act, String assetCardNumber) {
         AjaxJson j = new AjaxJson();
         try {
-            fundService.updateAsset(assetCardNumber, act.getProcInsId());
+            if ("yes".equals(act.getFlag())) {
+                fundService.updateAsset(assetCardNumber, act.getProcInsId());
+            }
             String comment = URLDecoder.decode(act.getComment(), "UTF-8");
             act.setComment(comment);
             actTaskService.assetTask(act);

+ 11 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/project/entity/Project.java

@@ -18,6 +18,8 @@ public class Project extends DataEntity<Project> {
     private String projectName;
     //项目基础信息表
     private BasicInformation basicInformation;
+    //拆旧表信息
+    private TearDown tearDown;
     //施工任务分配信息
     private Assignment assignment;
     //交底计划安排
@@ -53,6 +55,7 @@ public class Project extends DataEntity<Project> {
     //项目类型
     private String projectType;
 
+
     public String getReserveProjectName() {
         return reserveProjectName;
     }
@@ -93,6 +96,14 @@ public class Project extends DataEntity<Project> {
         this.basicInformation = basicInformation;
     }
 
+    public TearDown getTearDown() {
+        return tearDown;
+    }
+
+    public void setTearDown(TearDown tearDown) {
+        this.tearDown = tearDown;
+    }
+
     public Assignment getAssignment() {
         return assignment;
     }

+ 257 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/project/entity/TearDown.java

@@ -0,0 +1,257 @@
+package com.jeeplus.modules.sg.managementcenter.project.entity;
+
+/**
+ * 拆旧表基础-类
+ * */
+public class TearDown {
+    //序号
+    private String serialNumber;
+    //基础-设备材料名称
+    private String reservedName;
+    //基础-型号
+    private String reserveModel;
+    //基础-单位
+    private String reserveUnit;
+    //基础-数量
+    private String reserveNumber;
+    //基础-差额
+    private String reserveBalance;
+    //基础-备注
+    private String reserveNotes;
+    //交底-设备材料名称
+    private String confessionName;
+    //交底-型号
+    private String confessionModel;
+    //交底-单位
+    private String confessionUnit;
+    //交底-数量
+    private String confessionNumber;
+    //交底-差额
+    private String confessionDifference;
+    //交底-备注
+    private String confessionNotes;
+    //设计变更-设备材料名称
+    private String changeName;
+    //设计变更-型号
+    private String changeModel;
+    //设计变更-单位
+    private String changeUnit;
+    //设计变更-数量
+    private String changeNumber;
+    //设计变更-差额
+    private String changeDifference;
+    //设计变更-备注
+    private String changeNotes;
+    //实际设备材料名称
+    private String actualName;
+    //实际型号
+    private String actualModel;
+    //实际单位
+    private String actualUnit;
+    //实际数量
+    private String actualNumber;
+    //实际差额
+    private String actualDifference;
+    //实际备注
+    private String actualNotes;
+
+    public String getSerialNumber() {
+        return serialNumber;
+    }
+
+    public void setSerialNumber(String serialNumber) {
+        this.serialNumber = serialNumber;
+    }
+
+    public String getReservedName() {
+        return reservedName;
+    }
+
+    public void setReservedName(String reservedName) {
+        this.reservedName = reservedName;
+    }
+
+    public String getReserveModel() {
+        return reserveModel;
+    }
+
+    public void setReserveModel(String reserveModel) {
+        this.reserveModel = reserveModel;
+    }
+
+    public String getReserveUnit() {
+        return reserveUnit;
+    }
+
+    public void setReserveUnit(String reserveUnit) {
+        this.reserveUnit = reserveUnit;
+    }
+
+    public String getReserveNumber() {
+        return reserveNumber;
+    }
+
+    public void setReserveNumber(String reserveNumber) {
+        this.reserveNumber = reserveNumber;
+    }
+
+    public String getReserveBalance() {
+        return reserveBalance;
+    }
+
+    public void setReserveBalance(String reserveBalance) {
+        this.reserveBalance = reserveBalance;
+    }
+
+    public String getReserveNotes() {
+        return reserveNotes;
+    }
+
+    public void setReserveNotes(String reserveNotes) {
+        this.reserveNotes = reserveNotes;
+    }
+
+    public String getConfessionName() {
+        return confessionName;
+    }
+
+    public void setConfessionName(String confessionName) {
+        this.confessionName = confessionName;
+    }
+
+    public String getConfessionModel() {
+        return confessionModel;
+    }
+
+    public void setConfessionModel(String confessionModel) {
+        this.confessionModel = confessionModel;
+    }
+
+    public String getConfessionUnit() {
+        return confessionUnit;
+    }
+
+    public void setConfessionUnit(String confessionUnit) {
+        this.confessionUnit = confessionUnit;
+    }
+
+    public String getConfessionNumber() {
+        return confessionNumber;
+    }
+
+    public void setConfessionNumber(String confessionNumber) {
+        this.confessionNumber = confessionNumber;
+    }
+
+    public String getConfessionDifference() {
+        return confessionDifference;
+    }
+
+    public void setConfessionDifference(String confessionDifference) {
+        this.confessionDifference = confessionDifference;
+    }
+
+    public String getConfessionNotes() {
+        return confessionNotes;
+    }
+
+    public void setConfessionNotes(String confessionNotes) {
+        this.confessionNotes = confessionNotes;
+    }
+
+    public String getChangeName() {
+        return changeName;
+    }
+
+    public void setChangeName(String changeName) {
+        this.changeName = changeName;
+    }
+
+    public String getChangeModel() {
+        return changeModel;
+    }
+
+    public void setChangeModel(String changeModel) {
+        this.changeModel = changeModel;
+    }
+
+    public String getChangeUnit() {
+        return changeUnit;
+    }
+
+    public void setChangeUnit(String changeUnit) {
+        this.changeUnit = changeUnit;
+    }
+
+    public String getChangeNumber() {
+        return changeNumber;
+    }
+
+    public void setChangeNumber(String changeNumber) {
+        this.changeNumber = changeNumber;
+    }
+
+    public String getChangeDifference() {
+        return changeDifference;
+    }
+
+    public void setChangeDifference(String changeDifference) {
+        this.changeDifference = changeDifference;
+    }
+
+    public String getChangeNotes() {
+        return changeNotes;
+    }
+
+    public void setChangeNotes(String changeNotes) {
+        this.changeNotes = changeNotes;
+    }
+
+    public String getActualName() {
+        return actualName;
+    }
+
+    public void setActualName(String actualName) {
+        this.actualName = actualName;
+    }
+
+    public String getActualModel() {
+        return actualModel;
+    }
+
+    public void setActualModel(String actualModel) {
+        this.actualModel = actualModel;
+    }
+
+    public String getActualUnit() {
+        return actualUnit;
+    }
+
+    public void setActualUnit(String actualUnit) {
+        this.actualUnit = actualUnit;
+    }
+
+    public String getActualNumber() {
+        return actualNumber;
+    }
+
+    public void setActualNumber(String actualNumber) {
+        this.actualNumber = actualNumber;
+    }
+
+    public String getActualDifference() {
+        return actualDifference;
+    }
+
+    public void setActualDifference(String actualDifference) {
+        this.actualDifference = actualDifference;
+    }
+
+    public String getActualNotes() {
+        return actualNotes;
+    }
+
+    public void setActualNotes(String actualNotes) {
+        this.actualNotes = actualNotes;
+    }
+}

+ 48 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/project/mapper/ProjectMapper.java

@@ -66,6 +66,36 @@ public interface ProjectMapper extends BaseMapper<Project> {
     void updatePlanList(List<Project> project);
 
     /**
+     * 批量拆旧表信息 insertTearList
+     */
+    void insertTearList(List<Project> projects);
+
+    /**
+     * 批量修改基础拆旧表信息
+     * */
+    void updateTearList(List<Project> projects);
+
+    /**
+     * 批量修改设计拆旧表信息
+     * */
+    void updateDesTearList(List<Project> projects);
+
+    /**
+     * 批量修改交底拆旧表信息
+     * */
+    void updateConTearList(List<Project> projects);
+
+    /**
+     * 批量修改实际拆旧表信息
+     * */
+    void updateFinTearList(List<Project> projects);
+
+    /**
+     *
+     */
+    int isNotByName(@Param("reserveProjectName") String reserveProjectName, @Param("reservedName") String reservedName);
+
+    /**
      * 项目现有项目所有的项目名称
      */
     List<String> allProjectName();
@@ -81,6 +111,11 @@ public interface ProjectMapper extends BaseMapper<Project> {
     Project findProByName(String name);
 
     /**
+     * 根据名称查询项目拆旧信息
+     * */
+    Project findTearByName(String name);
+
+    /**
      * 根据名称查询施工任务分配信息
      */
     Project findAssByName(String name);
@@ -122,6 +157,11 @@ public interface ProjectMapper extends BaseMapper<Project> {
     List<Project> findApprovalList(Project project);
 
     /**
+     * 项目拆旧信息
+     * */
+    List<Project> findTearDownList(Project project);
+
+    /**
      * 项目名称查询项目信息
      * */
     Project findProcess(String name);
@@ -141,7 +181,13 @@ public interface ProjectMapper extends BaseMapper<Project> {
      */
     Project getApproval(Project project);
 
+    /**
+     * 获取拆旧表的某一条数据
+     * */
+    Project getTear(Project project);
+
 
+    void tearEditSave(Project project);
 
     /**
      * 查找系统中所有人员信息
@@ -284,4 +330,6 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
     void wzStatusByName(@Param("status") String status, @Param("reserveProjectName") String reserveProjectName);
 
+    //批量删除基础拆旧信息
+    void deleteTearAll(String id);
 }

+ 209 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/project/mapper/xml/ProjectMapper.xml

@@ -102,6 +102,38 @@
         e.otherExpenses as `approval.otherExpenses`
     </sql>
 
+    <sql id="tearColumns">
+        t.reservedName as `tearDown.reservedName`,
+        t.reserveModel as `tearDown.reserveModel`,
+        t.reserveUnit as `tearDown.reserveUnit`,
+        t.reserveNumber as `tearDown.reserveNumber`,
+        t.reserveBalance as `tearDown.reserveBalance`,
+        t.reserveNotes as `tearDown.reserveNotes`,
+        t.confessionName as `tearDown.confessionName`,
+        t.confessionModel as `tearDown.confessionModel`,
+        t.confessionUnit as `tearDown.confessionUnit`,
+        t.confessionNumber as `tearDown.confessionNumber`,
+        t.confessionDifference as `tearDown.confessionDifference`,
+        t.confessionNotes as `tearDown.confessionNotes`,
+        t.changeName as `tearDown.changeName`,
+        t.changeModel as `tearDown.changeModel`,
+        t.changeUnit as `tearDown.changeUnit`,
+        t.changeNumber as `tearDown.changeNumber`,
+        t.changeDifference as `tearDown.changeDifference`,
+        t.changeNotes as `tearDown.changeNotes`,
+        t.actualName as `tearDown.actualName`,
+        t.actualModel as `tearDown.actualModel`,
+        t.actualUnit as `tearDown.actualUnit`,
+        t.actualNumber as `tearDown.actualNumber`,
+        t.actualDifference as `tearDown.actualDifference`,
+        t.actualNotes as `tearDown.actualNotes`
+    </sql>
+    <delete id="deleteTearAll">
+        delete
+        from xm_tear_down
+        where id = #{id}
+    </delete>
+
     <select id="get" resultType="Project">
         SELECT
         <include refid="projectColumns"/>,
@@ -215,6 +247,9 @@
             <if test="canEnter != null and canEnter != '' ">
                 and a.canEnter = #{canEnter}
             </if>
+            <if test="basicInformation.projectNature!=null and basicInformation.projectNature!=''">
+                and b.projectNature like concat('%', #{basicInformation.projectNature}, '%')
+            </if>
             ${dataScope}
         </where>
     </select>
@@ -599,6 +634,81 @@
         </foreach>
     </update>
 
+    <insert id="insertTearList">
+           insert into xm_tear_down
+               (
+                id,
+                create_by,
+                create_date,
+                update_by,
+                update_date,
+                remarks,
+                del_flag,
+                reserveProjectName,
+                reservedName,
+                reserveModel,
+                reserveUnit,
+                reserveNumber,
+                reserveBalance,
+                reserveNotes,
+                confessionName,
+                confessionModel,
+                confessionUnit,
+                confessionNumber,
+                confessionDifference,
+                confessionNotes,
+                changeName,
+                changeModel,
+                changeUnit,
+                changeNumber,
+                changeDifference,
+                changeNotes,
+                actualName,
+                actualModel,
+                actualUnit,
+                actualNumber,
+                actualDifference,
+                actualNotes
+            ) values
+        <foreach collection="list" item="item" index="index" separator=",">
+        (
+            #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.remarks},
+            #{item.delFlag},
+            #{item.reserveProjectName},
+            #{item.tearDown.reservedName},
+            #{item.tearDown.reserveModel},
+            #{item.tearDown.reserveUnit},
+            #{item.tearDown.reserveNumber},
+            #{item.tearDown.reserveBalance},
+            #{item.tearDown.reserveNotes},
+            #{item.tearDown.confessionName},
+            #{item.tearDown.confessionModel},
+            #{item.tearDown.confessionUnit},
+            #{item.tearDown.confessionNumber},
+            #{item.tearDown.confessionDifference},
+            #{item.tearDown.confessionNotes},
+            #{item.tearDown.changeName},
+            #{item.tearDown.changeModel},
+            #{item.tearDown.changeUnit},
+            #{item.tearDown.changeNumber},
+            #{item.tearDown.changeDifference},
+            #{item.tearDown.changeNotes},
+            #{item.tearDown.actualName},
+            #{item.tearDown.actualModel},
+            #{item.tearDown.actualUnit},
+            #{item.tearDown.actualNumber},
+            #{item.tearDown.actualDifference},
+            #{item.tearDown.actualNotes}
+            )
+        </foreach>
+    </insert>
+
+
     <update id="updateBasicList">
         <foreach collection="list" item="item" index="index" separator=";">
             update xm_project_basicinformation
@@ -673,6 +783,16 @@
         WHERE b.reserveProjectName = #{name}
     </select>
 
+    <select id="findTearByName" resultType="com.jeeplus.modules.sg.managementcenter.project.entity.Project">
+        SELECT
+        <include refid="projectColumns"/>,
+        <include refid="tearColumns"/>
+        from xm_material_project a
+        left join xm_tear_down t
+        on a.reserveProjectName = t.reserveProjectName
+        WHERE t.reserveProjectName = #{name}
+    </select>
+
     <select id="findAssByName" resultType="com.jeeplus.modules.sg.managementcenter.project.entity.Project">
         SELECT
         <include refid="projectColumns"/>,
@@ -1712,6 +1832,43 @@
         from xm_material_data
         where project_name = (select reserveProjectName from md_acquisition_process where proc_ins_id = #{porcInsId})
     </select>
+    <select id="findTearDownList" resultType="com.jeeplus.modules.sg.managementcenter.project.entity.Project">
+        select
+        t.id,
+        a.projectId,
+        a.projectName,
+        a.reserveProjectName,
+        <include refid="tearColumns"/>
+        from xm_tear_down t
+        left join xm_material_project a
+        on t.reserveProjectName = a.reserveProjectName
+        <where>
+            1 = 1
+            <if test="reserveList != null and  reserveList !='' ">
+                and t.reserveProjectName in
+                <foreach collection="reserveList" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            ${dataScope}
+        </where>
+        order by a.reserveProjectName
+    </select>
+    <select id="getTear" resultType="com.jeeplus.modules.sg.managementcenter.project.entity.Project">
+        select
+        t.id,
+        a.projectId,
+        a.projectName,
+        a.reserveProjectName,
+        <include refid="tearColumns"/>
+        from xm_tear_down t
+        left join xm_material_project a
+        on t.reserveProjectName = a.reserveProjectName
+        where t.id = #{id}
+    </select>
+    <select id="isNotByName" resultType="java.lang.Integer">
+        select count(*) from xm_tear_down where reserveProjectName = #{reserveProjectName} and reservedName = #{reservedName}
+    </select>
     <update id="updateJsStatus">
         update xm_material_project
         set settStatus = #{status}
@@ -1722,4 +1879,56 @@
         set acquisitionStatus = #{status}
         where reserveProjectName =#{reserveProjectName};
     </update>
+    <update id="tearEditSave">
+        update xm_tear_down
+        set reserveModel = #{tearDown.reserveModel},
+            reserveUnit = #{tearDown.reserveUnit},
+            reserveNumber = #{tearDown.reserveNumber},
+            reserveNotes = #{tearDown.reserveNotes}
+        where id = #{id}
+    </update>
+    <update id="updateTearList">
+        <foreach collection="list" index="index" item="item" separator=";">
+                update xm_tear_down
+                set reserveModel = #{item.tearDown.reserveModel},
+                    reserveUnit = #{item.tearDown.reserveUnit},
+                    reserveNumber = #{item.tearDown.reserveNumber},
+                    reserveNotes = #{item.tearDown.reserveNotes}
+                where reserveProjectName = #{item.reserveProjectName}
+                      and reservedName = #{item.tearDown.reservedName}
+        </foreach>
+    </update>
+    <update id="updateDesTearList">
+        <foreach collection="list" index="index" item="item" separator=";">
+            update xm_tear_down
+            set changeModel = #{item.tearDown.changeModel},
+            changeUnit = #{item.tearDown.changeUnit},
+            changeNumber = #{item.tearDown.changeNumber},
+            changeNotes = #{item.tearDown.changeNotes}
+            where reserveProjectName = #{item.reserveProjectName}
+            and reservedName = #{item.tearDown.reservedName}
+        </foreach>
+    </update>
+    <update id="updateConTearList">
+        <foreach collection="list" index="index" item="item" separator=";">
+            update xm_tear_down
+            set confessionModel = #{item.tearDown.confessionModel},
+            confessionUnit = #{item.tearDown.confessionUnit},
+            confessionNumber = #{item.tearDown.confessionNumber},
+            confessionNotes = #{item.tearDown.confessionNotes}
+            where reserveProjectName = #{item.reserveProjectName}
+            and reservedName = #{item.tearDown.reservedName}
+        </foreach>
+    </update>
+    <update id="updateFinTearList">
+        <foreach collection="list" index="index" item="item" separator=";">
+            update xm_tear_down
+            set actualModel = #{item.tearDown.actualModel},
+            actualUnit = #{item.tearDown.actualUnit},
+            actualNumber = #{item.tearDown.actualNumber},
+            actualNotes = #{item.tearDown.actualNotes}
+            where reserveProjectName = #{item.reserveProjectName}
+            and reservedName = #{item.tearDown.reservedName}
+        </foreach>
+    </update>
 </mapper>

+ 88 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/project/service/ProjectService.java

@@ -66,6 +66,15 @@ public class ProjectService extends CrudService<ProjectMapper, Project> {
         return page;
     }
 
+    /**
+     * 项目拆旧信息
+     */
+    public Page<Project> findTearDownPage(Page<Project> page, Project project) {
+        dataRuleFilter(project);
+        project.setPage(page);
+        page.setList(mapper.findTearDownList(project));
+        return page;
+    }
 
     /**
      * 修改项目前期基础信息
@@ -88,6 +97,69 @@ public class ProjectService extends CrudService<ProjectMapper, Project> {
     }
 
     /**
+     * 批量插入拆旧表信息 insertTearList
+     * */
+    @Transactional(readOnly = false)
+    public void insertTearList(List<Project> project) {
+        for (Project p : project) {
+            p.preInsert();
+        }
+        projectMapper.insertTearList(project);
+    }
+
+    /**
+     * 批量修改基础拆旧表信息
+     */
+    @Transactional(readOnly = false)
+    public void updateTearList(List<Project> project) {
+        projectMapper.updateTearList(project);
+    }
+
+    /**
+     * 批量修改设计拆旧表信息
+     */
+    @Transactional(readOnly = false)
+    public void updateDesTearList(List<Project> project) {
+        projectMapper.updateDesTearList(project);
+    }
+
+    /**
+     * 批量修改交底拆旧表信息
+     */
+    @Transactional(readOnly = false)
+    public void updateConTearList(List<Project> project) {
+        projectMapper.updateConTearList(project);
+    }
+
+    /**
+     * 批量修改实际拆旧表信息
+     */
+    @Transactional(readOnly = false)
+    public void updateFinTearList(List<Project> project) {
+        projectMapper.updateFinTearList(project);
+    }
+
+    /**
+     * 通过项目储备名称和设备材料名称查询是否已经存在
+     * */
+    public Boolean isNotByName(String reserveProjectName,String reservedName){
+        int notByName = projectMapper.isNotByName(reserveProjectName, reservedName);
+        if (notByName > 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * 批量删除基础拆旧信息
+     */
+    @Transactional(readOnly = false)
+    public void deleteTearAll(String id) {
+        projectMapper.deleteTearAll(id);
+    }
+
+    /**
      * 批量修改导入的项目信息
      */
     @Transactional(readOnly = false)
@@ -218,6 +290,22 @@ public class ProjectService extends CrudService<ProjectMapper, Project> {
     }
 
     /**
+     * 获取选择的基础拆旧表信息
+     */
+    public Project getTear(Project project) {
+        return projectMapper.getTear(project);
+    }
+
+    /**
+     * 基础项目拆旧信息修改
+     */
+    @Transactional(readOnly = false)
+    public void tearEditSave(Project project) {
+        projectMapper.tearEditSave(project);
+    }
+
+
+    /**
      * 获取需求单位
      */
     public String findDemandUnit(String name) {

+ 3 - 2
src/main/java/com/jeeplus/modules/sg/managementcenter/project/util/ProjectImportUtil.java

@@ -374,8 +374,9 @@ public class ProjectImportUtil {
                 if (reserveProjectName != null && reserveProjectName != "" && a.equals(reserveProjectName)) {
                     Project assByName = projectMapper.findAssByName(reserveProjectName);
                     Project basicByName = projectMapper.findProByName(reserveProjectName);
-                    if (assByName == null || basicByName == null) {
-                        flagStr += reserveProjectName + "请先填写对应的项目前期基本信息/施工任务分配信息\n";
+                    Project tearByName = projectMapper.findTearByName(reserveProjectName);
+                    if (assByName == null || basicByName == null || tearByName == null) {
+                        flagStr += reserveProjectName + "请先完善项目的前置信息\n";
                         continue;
                     } else {
                         project.setAssignment(assByName.getAssignment());

+ 476 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/project/web/ProjectController.java

@@ -8,6 +8,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+import javax.persistence.Basic;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
@@ -23,12 +24,14 @@ import com.jeeplus.modules.sg.managementcenter.materialInventory.service.Materia
 import com.jeeplus.modules.sg.managementcenter.project.entity.BasicInformation;
 import com.jeeplus.modules.sg.managementcenter.project.entity.Project1;
 import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+import com.jeeplus.modules.sg.managementcenter.project.entity.TearDown;
 import com.jeeplus.modules.sg.managementcenter.project.service.PickingRequisitionService;
 import com.jeeplus.modules.sg.managementcenter.project.service.ProjectService;
 import com.jeeplus.modules.sg.managementcenter.project.util.ProjectImportUtil;
 import com.jeeplus.modules.sys.service.SystemService;
 import com.jeeplus.modules.sys.utils.UserUtils;
 import org.activiti.engine.repository.ProcessDefinition;
+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;
@@ -130,6 +133,24 @@ public class ProjectController extends BaseController {
     }
 
     /**
+     * 拆旧表信息基础信息查询
+     */
+    @RequestMapping(value = "tearDown")
+    public String tearDown(Project project, Model model) {
+        model.addAttribute("project", project);
+        return "modules/sg/managementcenter/project/tearDown";
+    }
+
+    /**
+     * 拆旧表信息基础信息查询
+     */
+    @RequestMapping(value = "tearFinal")
+    public String tearFinal(Project project, Model model) {
+        model.addAttribute("project", project);
+        return "modules/sg/managementcenter/project/tearFinal";
+    }
+
+    /**
      * 项目前期基本信息 数据列表
      */
     @ResponseBody
@@ -217,6 +238,60 @@ public class ProjectController extends BaseController {
         return getBootstrapData(page);
     }
 
+
+    /**
+     * 项目前期基本信息 数据列表
+     */
+    @ResponseBody
+    @RequiresPermissions("sg:managementcenter:project:list")
+    @RequestMapping(value = "tearDownData")
+    public Map<String, Object> tearDownData(Project project, HttpServletRequest request, HttpServletResponse response, Model model) {
+        String reserveProjectName = project.getReserveProjectName();
+        List<String> reserveList = new ArrayList<>();
+        if (null != reserveProjectName && !"".equals(reserveProjectName)) {
+            String[] split = reserveProjectName.split("\\s+");
+            String reserveName = "";
+            for (int i = 0; i < split.length; i++) {
+                reserveName = split[i];
+                reserveList.add(reserveName);
+            }
+            project.setReserveList(reserveList);
+        }
+        Page<Project> page = projectService.findTearDownPage(new Page<Project>(request, response), project);
+        List<Project> list = page.getList();
+        for (Project p : list
+        ) {
+            String rNum = p.getTearDown().getReserveNumber();
+            String cNum = p.getTearDown().getConfessionNumber();
+            String caNum = p.getTearDown().getChangeNumber();
+            String aNum = p.getTearDown().getActualNumber();
+            if (null == rNum) {
+                rNum = "0";
+            }
+            if (null == cNum) {
+                cNum = "0";
+            }
+            if (null == caNum) {
+                caNum = "0";
+            }
+            if (null == aNum) {
+                aNum = "0";
+            }
+            BigDecimal reserveNumber = new BigDecimal(rNum);
+            BigDecimal actualNumber = new BigDecimal(aNum);
+            BigDecimal confessionNumber = new BigDecimal(cNum);
+            BigDecimal changeNumber = new BigDecimal(caNum);
+            BigDecimal subtract = reserveNumber.subtract(actualNumber);
+            BigDecimal confessionDifference = confessionNumber.subtract(actualNumber);
+            BigDecimal changeDifference = changeNumber.subtract(actualNumber);
+            p.getTearDown().setReserveBalance(subtract.toString());
+            p.getTearDown().setConfessionDifference(confessionDifference.toString());
+            p.getTearDown().setChangeDifference(changeDifference.toString());
+
+        }
+        return getBootstrapData(page);
+    }
+
     /**
      * 表单列表数据
      */
@@ -348,6 +423,10 @@ public class ProjectController extends BaseController {
     @ResponseBody
     @RequestMapping(value = "fundData")
     public Map<String, Object> fundData(Project project, HttpServletRequest request, HttpServletResponse response, Model model) {
+        //配网资本项目
+        BasicInformation basicInformation = new BasicInformation();
+        basicInformation.setProjectNature("资本");
+        project.setBasicInformation(basicInformation);
         Page<Project> page = projectService.findPage(new Page<Project>(request, response), project);
         return getBootstrapData(page);
     }
@@ -363,6 +442,25 @@ public class ProjectController extends BaseController {
     }
 
     /**
+     * 拆旧表基础信息新增页面
+     */
+    @RequestMapping(value = "tearAdd")
+    public String tearAdd(Project project, Model model) {
+        model.addAttribute("project", project);
+        return "modules/sg/managementcenter/project/tearAdd";
+    }
+
+    /**
+     * 拆旧表基础信息修改页面
+     */
+    @RequestMapping(value = "tearEidForm")
+    public String tearEidForm(Project project, Model model) {
+        Project tear = projectService.getTear(project);
+        model.addAttribute("project", tear);
+        return "modules/sg/managementcenter/project/tearEidForm";
+    }
+
+    /**
      * 施工任务分配信息修改
      */
     @RequiresPermissions(value = {"sg:managementcenter:project:view", "sg:managementcenter:project:edit"}, logical = Logical.OR)
@@ -666,6 +764,68 @@ public class ProjectController extends BaseController {
     }
 
     /**
+     * 保存表单
+     */
+    @ResponseBody
+    @RequestMapping(value = "tearAddSave")
+    public AjaxJson tearAddSave(Project project, Model model) throws Exception {
+        AjaxJson j = new AjaxJson();
+        Project projectStatus = projectService.get(project.getReserveProjectName());
+        if (projectStatus != null) {
+            String reserveProjectName = projectStatus.getReserveProjectName();
+            TearDown tearDown = project.getTearDown();
+            String reservedName = tearDown.getReservedName();
+            project.setProjectId(projectStatus.getProjectId());
+            project.setProjectName(projectStatus.getProjectName());
+            project.setReserveProjectName(reserveProjectName);
+            tearDown.setConfessionName(reservedName);
+            tearDown.setConfessionModel(tearDown.getReserveModel());
+            tearDown.setConfessionUnit(tearDown.getReserveUnit());
+            tearDown.setConfessionNumber("0");
+            tearDown.setConfessionNotes("");
+            tearDown.setChangeName(reservedName);
+            tearDown.setChangeModel(tearDown.getReserveModel());
+            tearDown.setChangeUnit(tearDown.getReserveUnit());
+            tearDown.setChangeNumber("0");
+            tearDown.setChangeNotes("");
+            tearDown.setActualName(reservedName);
+            tearDown.setActualModel(tearDown.getReserveModel());
+            tearDown.setActualUnit(tearDown.getReserveUnit());
+            tearDown.setActualNumber("0");
+            tearDown.setActualNotes("");
+            List<Project> insertList = new ArrayList<>();
+            insertList.add(project);
+            //根据储备项目名称和设备材料名称查询项目是否存在,存在提示无法保存
+            Boolean notByName = projectService.isNotByName(reserveProjectName, reservedName);
+            if (notByName) {
+                j.setSuccess(false);
+                j.setMsg("该项目物料信息已存在");
+            } else {
+                projectService.insertTearList(insertList);
+                j.setSuccess(true);
+                j.setMsg("保存成功");
+            }
+        }
+        return j;
+    }
+
+    /**
+     * 基础拆旧信息修改
+     * */
+    /**
+     * 保存表单
+     */
+    @ResponseBody
+    @RequestMapping(value = "tearEditSave")
+    public AjaxJson tearEditSave(Project project, Model model) throws Exception {
+        AjaxJson j = new AjaxJson();
+        projectService.tearEditSave(project);
+        j.setSuccess(true);
+        j.setMsg("修改成功");
+        return j;
+    }
+
+    /**
      * 导出excel文件
      */
     @ResponseBody
@@ -856,4 +1016,320 @@ public class ProjectController extends BaseController {
         }
         return j;
     }
+
+    /**
+     * 导入拆旧表Excel数据
+     */
+    @ResponseBody
+    @RequestMapping(value = "importTear")
+    public AjaxJson importTear(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        List<Project> insertList = new ArrayList<>();
+        List<Project> updateList = new ArrayList<>();
+        try {
+            ImportExcel importExcel = new ImportExcel(file, 1, "拆旧表");
+            int lastDataRowNum = importExcel.getLastDataRowNum();
+            for (int i = 2; i < lastDataRowNum; i++) {
+                Row row = importExcel.getRow(i);
+                TearDown tearDown = new TearDown();
+                Project project = new Project();
+                String reserveProjectName = importExcel.getCellValue(row, 1).toString();
+                Project byName = projectService.findByName(reserveProjectName);
+                if (null == byName) {
+                    continue;
+                }
+                String reservedName = importExcel.getCellValue(row, 2).toString();
+                String reserveModel = importExcel.getCellValue(row, 3).toString();
+                String reserveUnit = importExcel.getCellValue(row, 4).toString();
+                String reserveNumber = importExcel.getCellValue(row, 5).toString();
+                if ("".equals(reserveNumber) || null == reserveNumber) {
+                    reserveNumber = "0";
+                }
+                tearDown.setReservedName(reservedName);
+                tearDown.setReserveModel(reserveModel);
+                tearDown.setReserveUnit(reserveUnit);
+                tearDown.setReserveNumber(reserveNumber);
+                tearDown.setReserveNotes(importExcel.getCellValue(row, 6).toString());
+                tearDown.setConfessionName(reservedName);
+                tearDown.setConfessionModel(reserveModel);
+                tearDown.setConfessionUnit(reserveUnit);
+                tearDown.setConfessionNumber("0");
+                tearDown.setConfessionNotes("");
+                tearDown.setChangeName(reservedName);
+                tearDown.setChangeModel(reserveModel);
+                tearDown.setChangeUnit(reserveUnit);
+                tearDown.setChangeNumber("0");
+                tearDown.setChangeNotes("");
+                tearDown.setActualName(reservedName);
+                tearDown.setActualModel(reserveModel);
+                tearDown.setActualUnit(reserveUnit);
+                tearDown.setActualNumber("0");
+                tearDown.setActualNotes("");
+                project.setReserveProjectName(byName.getReserveProjectName());
+                project.setTearDown(tearDown);
+                Boolean notByName = projectService.isNotByName(reserveProjectName, reservedName);
+                if (notByName) {
+                    updateList.add(project);
+                } else {
+                    insertList.add(project);
+                }
+            }
+            if (updateList.size() > 0) {
+                projectService.updateTearList(updateList);
+            }
+            if (insertList.size() > 0) {
+                projectService.insertTearList(insertList);
+            }
+            j.setSuccess(true);
+            j.setMsg("插入成功");
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入需求基本信息表单失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    /**
+     * 导入设计变更拆旧表Excel数据
+     */
+    @ResponseBody
+    @RequestMapping(value = "importDesTear")
+    public AjaxJson importDesTear(@RequestParam("file") MultipartFile file, String jumpName, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        List<Project> insertList = new ArrayList<>();
+        List<Project> updateList = new ArrayList<>();
+        try {
+            ImportExcel importExcel = new ImportExcel(file, 1, "拆旧表");
+            int lastDataRowNum = importExcel.getLastDataRowNum();
+            for (int i = 2; i < lastDataRowNum; i++) {
+                Row row = importExcel.getRow(i);
+                TearDown tearDown = new TearDown();
+                Project project = new Project();
+                String reserveProjectName = importExcel.getCellValue(row, 1).toString();
+                if (jumpName.equals(reserveProjectName)) {
+                    Project byName = projectService.findByName(reserveProjectName);
+                    if (null == byName) {
+                        continue;
+                    }
+                    String reservedName = importExcel.getCellValue(row, 2).toString();
+                    String reserveModel = importExcel.getCellValue(row, 3).toString();
+                    String reserveUnit = importExcel.getCellValue(row, 4).toString();
+                    String reserveNumber = importExcel.getCellValue(row, 5).toString();
+                    String reserveNotes = importExcel.getCellValue(row, 6).toString();
+                    if ("".equals(reserveNumber) || null == reserveNumber) {
+                        reserveNumber = "0";
+                    }
+                    tearDown.setReservedName(reservedName);
+                    tearDown.setReserveModel(reserveModel);
+                    tearDown.setReserveUnit(reserveUnit);
+                    tearDown.setReserveNumber("0");
+                    tearDown.setReserveNotes("");
+                    tearDown.setConfessionName(reservedName);
+                    tearDown.setConfessionModel(reserveModel);
+                    tearDown.setConfessionUnit(reserveUnit);
+                    tearDown.setConfessionNumber("0");
+                    tearDown.setConfessionNotes("");
+                    tearDown.setChangeName(reservedName);
+                    tearDown.setChangeModel(reserveModel);
+                    tearDown.setChangeUnit(reserveUnit);
+                    tearDown.setChangeNumber(reserveNumber);
+                    tearDown.setChangeNotes(reserveNotes);
+                    tearDown.setActualName(reservedName);
+                    tearDown.setActualModel(reserveModel);
+                    tearDown.setActualUnit(reserveUnit);
+                    tearDown.setActualNumber("0");
+                    tearDown.setActualNotes("");
+                    project.setReserveProjectName(byName.getReserveProjectName());
+                    project.setTearDown(tearDown);
+                    Boolean notByName = projectService.isNotByName(reserveProjectName, reservedName);
+                    if (notByName) {
+                        updateList.add(project);
+                    } else {
+                        insertList.add(project);
+                    }
+                }
+            }
+            if (updateList.size() > 0) {
+                projectService.updateDesTearList(updateList);
+            }
+            if (insertList.size() > 0) {
+                projectService.insertTearList(insertList);
+            }
+            j.setSuccess(true);
+            j.setMsg("插入成功");
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入需求基本信息表单失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    /**
+     * 导入设计变更拆旧表Excel数据
+     */
+    @ResponseBody
+    @RequestMapping(value = "importFinTear")
+    public AjaxJson importFinTear(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        List<Project> insertList = new ArrayList<>();
+        List<Project> updateList = new ArrayList<>();
+        try {
+            ImportExcel importExcel = new ImportExcel(file, 1, "拆旧表");
+            int lastDataRowNum = importExcel.getLastDataRowNum();
+            for (int i = 2; i < lastDataRowNum; i++) {
+                Row row = importExcel.getRow(i);
+                TearDown tearDown = new TearDown();
+                Project project = new Project();
+                String reserveProjectName = importExcel.getCellValue(row, 1).toString();
+                Project byName = projectService.findByName(reserveProjectName);
+                if (null == byName) {
+                    continue;
+                }
+                String reservedName = importExcel.getCellValue(row, 2).toString();
+                String reserveModel = importExcel.getCellValue(row, 3).toString();
+                String reserveUnit = importExcel.getCellValue(row, 4).toString();
+                String reserveNumber = importExcel.getCellValue(row, 5).toString();
+                String reserveNotes = importExcel.getCellValue(row, 6).toString();
+                if ("".equals(reserveNumber) || null == reserveNumber) {
+                    reserveNumber = "0";
+                }
+                tearDown.setReservedName(reservedName);
+                tearDown.setReserveModel(reserveModel);
+                tearDown.setReserveUnit(reserveUnit);
+                tearDown.setReserveNumber("0");
+                tearDown.setReserveNotes("");
+
+                tearDown.setConfessionName(reservedName);
+                tearDown.setConfessionModel(reserveModel);
+                tearDown.setConfessionUnit(reserveUnit);
+                tearDown.setConfessionNumber("0");
+                tearDown.setConfessionNotes("");
+
+                tearDown.setChangeName(reservedName);
+                tearDown.setChangeModel(reserveModel);
+                tearDown.setChangeUnit(reserveUnit);
+                tearDown.setChangeNumber("0");
+                tearDown.setChangeNotes("");
+
+                tearDown.setActualName(reservedName);
+                tearDown.setActualModel(reserveModel);
+                tearDown.setActualUnit(reserveUnit);
+                tearDown.setActualNumber(reserveNumber);
+                tearDown.setActualNotes(reserveNotes);
+                project.setReserveProjectName(byName.getReserveProjectName());
+                project.setTearDown(tearDown);
+                Boolean notByName = projectService.isNotByName(reserveProjectName, reservedName);
+                if (notByName) {
+                    updateList.add(project);
+                } else {
+                    insertList.add(project);
+                }
+            }
+            if (updateList.size() > 0) {
+                projectService.updateFinTearList(updateList);
+            }
+            if (insertList.size() > 0) {
+                projectService.insertTearList(insertList);
+            }
+            j.setSuccess(true);
+            j.setMsg("插入成功");
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入需求基本信息表单失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    /**
+     * 导入施工交底拆旧表Excel数据
+     */
+    @ResponseBody
+    @RequestMapping(value = "importConTear")
+    public AjaxJson importConTear(@RequestParam("file") MultipartFile file, String jumpName, HttpServletResponse response, HttpServletRequest request) {
+        AjaxJson j = new AjaxJson();
+        List<Project> insertList = new ArrayList<>();
+        List<Project> updateList = new ArrayList<>();
+        try {
+            ImportExcel importExcel = new ImportExcel(file, 1, "拆旧表");
+            int lastDataRowNum = importExcel.getLastDataRowNum();
+            for (int i = 2; i < lastDataRowNum; i++) {
+                Row row = importExcel.getRow(i);
+                TearDown tearDown = new TearDown();
+                Project project = new Project();
+                String reserveProjectName = importExcel.getCellValue(row, 1).toString();
+                if (jumpName.equals(reserveProjectName)) {
+                    Project byName = projectService.findByName(reserveProjectName);
+                    if (null == byName) {
+                        continue;
+                    }
+                    String reservedName = importExcel.getCellValue(row, 2).toString();
+                    String reserveModel = importExcel.getCellValue(row, 3).toString();
+                    String reserveUnit = importExcel.getCellValue(row, 4).toString();
+                    String reserveNumber = importExcel.getCellValue(row, 5).toString();
+                    String reserveNotes = importExcel.getCellValue(row, 6).toString();
+                    if ("".equals(reserveNumber) || null == reserveNumber) {
+                        reserveNumber = "0";
+                    }
+                    tearDown.setReservedName(reservedName);
+                    tearDown.setReserveModel(reserveModel);
+                    tearDown.setReserveUnit(reserveUnit);
+                    tearDown.setReserveNumber("0");
+                    tearDown.setReserveNotes("");
+
+                    tearDown.setConfessionName(reservedName);
+                    tearDown.setConfessionModel(reserveModel);
+                    tearDown.setConfessionUnit(reserveUnit);
+                    tearDown.setConfessionNumber(reserveNumber);
+                    tearDown.setConfessionNotes(reserveNotes);
+
+                    tearDown.setChangeName(reservedName);
+                    tearDown.setChangeModel(reserveModel);
+                    tearDown.setChangeUnit(reserveUnit);
+                    tearDown.setChangeNumber("0");
+                    tearDown.setChangeNotes("");
+
+                    tearDown.setActualName(reservedName);
+                    tearDown.setActualModel(reserveModel);
+                    tearDown.setActualUnit(reserveUnit);
+                    tearDown.setActualNumber("0");
+                    tearDown.setActualNotes("");
+                    project.setReserveProjectName(byName.getReserveProjectName());
+                    project.setTearDown(tearDown);
+                    Boolean notByName = projectService.isNotByName(reserveProjectName, reservedName);
+                    if (notByName) {
+                        updateList.add(project);
+                    } else {
+                        insertList.add(project);
+                    }
+                }
+            }
+            if (updateList.size() > 0) {
+                projectService.updateConTearList(updateList);
+            }
+            if (insertList.size() > 0) {
+                projectService.insertTearList(insertList);
+            }
+            j.setSuccess(true);
+            j.setMsg("插入成功");
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入需求基本信息表单失败!失败信息:" + e.getMessage());
+        }
+        return j;
+    }
+
+    /**
+     * 批量删除请假表单
+     */
+    @ResponseBody
+    @RequestMapping(value = "deleteTearAll")
+    public AjaxJson deleteAll(String ids) {
+        AjaxJson j = new AjaxJson();
+        String idArray[] = ids.split(",");
+        for (String id : idArray) {
+            projectService.deleteTearAll(id);
+        }
+        j.setMsg("删除请假表单成功");
+        return j;
+    }
 }

+ 32 - 1
src/main/webapp/webpage/modules/sg/fund/assetForm.js

@@ -16,8 +16,16 @@
 
         $("#agree").click(function () {
             var assetCardNumber = $("#assetCardNumber").val();
+            var wbsNumber = $("#wbsNumber").val();
             if (null == assetCardNumber || "" == assetCardNumber) {
-                jp.error("请先填写资产卡片号")
+                jp.error("请先填写资产卡片号");
+                return;
+            }
+            var strings = assetCardNumber.split(";");
+            var length = strings.length;
+            if (length != wbsNumber) {
+                jp.error("资产卡片号填写数量有误");
+                return;
             }
             jp.prompt(" 审批意见", function (message) {
                 jp.post("${ctx}/fund/assetTask",
@@ -29,6 +37,7 @@
                     "procDefId": "${fund.act.procDefId}",
                     "flag":"yes",
                     "assetCardNumber":assetCardNumber,
+                    "wbsNumber":wbsNumber,
                     "comment": window.encodeURI(message)
                 },
                 function (data) {
@@ -42,6 +51,28 @@
             });
         });
 
+        $("#no").click(function () {
+            jp.prompt(" 审批意见", function (message) {
+                jp.post("${ctx}/fund/assetTask",
+                    {
+                        "taskId": "${fund.act.taskId}",
+                        "taskName": "${fund.act.taskName}",
+                        "taskDefKey": "${fund.act.taskDefKey}",
+                        "procInsId": "${fund.act.procInsId}",
+                        "procDefId": "${fund.act.procDefId}",
+                        "flag":"no",
+                        "comment": window.encodeURI(message)
+                    },
+                    function (data) {
+                        if (data.success) {
+                            jp.success(data.msg);
+                            jp.go("${ctx}/act/task/todo");
+                        } else {
+                            jp.error(data.msg);
+                        }
+                    })
+            });
+        });
 
         $('#startTime').datetimepicker({
             format: "YYYY-MM-DD HH:mm:ss"

+ 10 - 4
src/main/webapp/webpage/modules/sg/fund/assetForm.jsp

@@ -35,18 +35,23 @@
                                 <td class="width-35">
                                         ${fns:unescapeHtml(fund.reserveProjectName)}
                                 </td>
-                            </tr>
-                            <tr>
                                 <td class="width-15 active"><label class="pull-right">wbs编码:</label></td>
                                 <td class="width-35">
                                     <form:input id="wbsEncoding" path="wbsEncoding" readonly="true"
                                                 cssClass="form-control required" placeholder="必填"/>
                                 </td>
-                                <td class="width-15 active"><label class="pull-right">资产卡片号:</label></td>
+                            </tr>
+                            <tr>
+                                <td class="width-15 active"><label class="pull-right">需要填写资产卡片号数量:</label></td>
                                 <td class="width-35">
-                                    <form:input id="assetCardNumber" path="assetCardNumber"
+                                    <form:input id="wbsNumber" path="wbsNumber" readonly="true"
                                                 cssClass="form-control required" placeholder="必填"/>
                                 </td>
+                                <td class="width-15 active"><label class="pull-right">资产卡片号:</label></td>
+                                <td class="width-35">
+                                    <form:textarea id="assetCardNumber" path="assetCardNumber"
+                                                cssClass="form-control required" placeholder="必填,不同资产卡片号用;分割"/>
+                                </td>
                             </tr>
                             <tr>
                                 <td class="width-15 active"><label class="pull-right">项目号:</label></td>
@@ -156,6 +161,7 @@
                         <div class="col-sm-6">
                             <div class="form-group text-center">
                                 <input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="提交"/>&nbsp;
+                                <input id="no" class="btn  btn-primary btn-lg btn-danger" type="submit" value="驳回"/>&nbsp;
                             </div>
                         </div>
                     </div>

+ 7 - 0
src/main/webapp/webpage/modules/sg/fund/wbsForm.js

@@ -16,8 +16,14 @@
 
         $("#agree").click(function () {
             var wbsEncoding = $("#wbsEncoding").val();
+            var wbsNumber = $("#wbsNumber").val();
             if (''==wbsEncoding) {
                 jp.error('请填写项目的wbs编码');
+                return;
+            }
+            if (''==wbsNumber) {
+                jp.error('请填写项目需要填写多少资产卡片号');
+                return;
             }
             jp.prompt(" 审批意见", function (message) {
                 jp.post("${ctx}/fund/wbsTask",
@@ -29,6 +35,7 @@
                         "procDefId": "${fund.act.procDefId}",
                         "flag":"yes",
                         "wbsEncoding":wbsEncoding,
+                        "wbsNumber":wbsNumber,
                         "comment": window.encodeURI(message)
                     },
                     function (data) {

+ 9 - 4
src/main/webapp/webpage/modules/sg/fund/wbsForm.jsp

@@ -35,18 +35,23 @@
                                 <td class="width-35">
                                         ${fns:unescapeHtml(fund.reserveProjectName)}
                                 </td>
-                            </tr>
-                            <tr>
                                 <td class="width-15 active"><label class="pull-right">wbs编码:</label></td>
                                 <td class="width-35">
                                     <form:input id="wbsEncoding" path="wbsEncoding"
                                                 cssClass="form-control required" placeholder="必填"/>
                                 </td>
-                                <td class="width-15 active"><label class="pull-right">资产卡片号:</label></td>
+                            </tr>
+                            <tr>
+                                <td class="width-15 active"><label class="pull-right">需要填写几个资产卡片号:</label></td>
                                 <td class="width-35">
-                                    <form:input id="assetCardNumber" path="assetCardNumber" readonly="true"
+                                    <form:input id="wbsNumber" path="wbsNumber"
                                                 cssClass="form-control required" placeholder="必填"/>
                                 </td>
+                                <td class="width-15 active"><label class="pull-right">资产卡片号:</label></td>
+                                <td class="width-35">
+                                    <form:textarea id="assetCardNumber" path="assetCardNumber" readonly="true"
+                                                cssClass="form-control required" placeholder="必填,不同资产卡片号用;分割"/>
+                                </td>
                             </tr>
                             <tr>
                                 <td class="width-15 active"><label class="pull-right">项目号:</label></td>

+ 186 - 0
src/main/webapp/webpage/modules/sg/managementcenter/activiti/importTable.js

@@ -4,6 +4,160 @@
      * 项目经理组织交底页面
      * */
     $(document).ready(function () {
+        $('#projectTable').bootstrapTable({
+            //请求方法
+            method: 'post',
+            //类型json
+            dataType: "json",
+            contentType: "application/x-www-form-urlencoded",
+            //显示检索按钮
+            showSearch: false,
+            //显示刷新按钮
+            showRefresh: false,
+            //显示切换手机试图按钮
+            showToggle: false,
+            //显示 内容列下拉框
+            showColumns: false,
+            //显示到处按钮
+            showExport: false,
+            //显示切换分页按钮
+            showPaginationSwitch: false,
+            //最低显示2行
+            minimumCountColumns: 2,
+            //是否显示行间隔色
+            striped: true,
+            //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+            cache: false,
+            //是否显示分页(*)
+            pagination: true,
+            //排序方式
+            sortOrder: "asc",
+            //初始化加载第一页,默认第一页
+            pageNumber: 1,
+            //每页的记录行数(*)
+            pageSize: 10,
+            //可供选择的每页的行数(*)
+            pageList: [5, 10, 25, 50, 150],
+            //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+            url: "${ctx}/sg/managementcenter/project/tearDownData?reserveProjectName=${construction.reserveProjectName}",
+            //默认值为 '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',
+            onContextMenuItem: function (row, $el) {
+                if ($el.data("item") == "edit") {
+                    edit(row.id);
+                } else if ($el.data("item") == "view") {
+                    view(row.id);
+                } else if ($el.data("item") == "delete") {
+                    jp.confirm('确认要删除该表单记录吗?', function () {
+                        jp.loading();
+                        jp.get("${ctx}/sg/managementcenter/project/delete?id=" + row.id, function (data) {
+                            if (data.success) {
+                                $('#projectTable').bootstrapTable('refresh');
+                                jp.success(data.msg);
+                            } else {
+                                jp.error(data.msg);
+                            }
+                        })
+                    });
+                }
+            },
+
+            onClickRow: function (row, $el) {
+            },
+            onShowSearch: function () {
+                $("#search-collapse").slideToggle();
+            },
+            columns:
+                [{
+                    field: 'reserveProjectName',
+                    width:160,
+                    title: '储备项目暂定名称',
+                }
+                    , {
+                    field: 'projectId',
+                    width:150,
+                    title: '项目定义',
+                }
+                    , {
+                    field: 'projectName',
+                    width:150,
+                    title: '项目名称',
+                }
+                    , {
+                    field: 'tearDown.reservedName',
+                    width:150,
+                    title: '基础设备材料名称',
+                }
+                    , {
+                    field: 'tearDown.reserveModel',
+                    width:150,
+                    title: '基础-型号',
+                }
+                    , {
+                    field: 'tearDown.reserveUnit',
+                    width:150,
+                    title: '基础-单位',
+                }
+                    , {
+                    field: 'tearDown.reserveNumber',
+                    width:150,
+                    title: '基础-数量',
+                }
+                    , {
+                    field: 'tearDown.reserveBalance',
+                    width:150,
+                    title: '基础-差额',
+                }
+                    , {
+                    field: 'tearDown.reserveNotes',
+                    width:150,
+                    title: '基础-备注',
+                }  , {
+                    field: 'tearDown.confessionNumber',
+                    width:150,
+                    title: '交底变更-数量',
+                }
+                    , {
+                    field: 'tearDown.confessionDifference',
+                    width:150,
+                    title: '交底变更-差额',
+                }
+                    , {
+                    field: 'tearDown.confessionNotes',
+                    width:150,
+                    title: '交底变更-备注',
+                }
+                    , {
+                    field: 'tearDown.changeNumber',
+                    width:150,
+                    title: '设计变更-数量',
+                }
+                    , {
+                    field: 'tearDown.changeDifference',
+                    width:150,
+                    title: '设计变更-差额',
+                }
+                    , {
+                    field: 'tearDown.changeNotes',
+                    width:150,
+                    title: '设计变更-备注',
+                }
+                ]
+        })
+
         jp.ajaxForm("#inputForm", function (data) {
             if (data.success) {
                 jp.success(data.msg);
@@ -59,6 +213,33 @@
             })
         })
 
+        $("#btnInReason").click(function(){
+            jp.open({
+                type: 2,
+                area: [500, 200],
+                auto: true,
+                title:"导入数据",
+                content: "${ctx}/tag/importExcel" ,
+                btn: ['确定', '关闭'],
+                btn1: function(index, layero){
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    iframeWin.contentWindow.importExcel('${ctx}/sg/managementcenter/project/importConTear?jumpName=${construction.reserveProjectName}', function (data) {
+                        if(data.success){
+                            jp.success(data.msg);
+                            refresh2();
+                        }else{
+                            jp.error(data.msg);
+                        }
+                        jp.close(index);
+                    });//调用保存事件
+                    return false;
+                },
+                btn2: function(index){
+                    jp.close(index);
+                }
+            });
+        });
+
         $("#agree").click(function () {
             jp.prompt("审核意见", function (message) {
                 jp.post("${ctx}/act/task/importTable",
@@ -80,4 +261,9 @@
             });
         });
     })
+
+    function refresh2() {
+        $('#projectTable').bootstrapTable('refresh');
+    }
+
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/sg/managementcenter/activiti/importTable.jsp

@@ -6,6 +6,7 @@
 	<meta name="decorator" content="ani"/>
 	<!-- SUMMERNOTE -->
 	<%@include file="/webpage/include/summernote.jsp" %>
+	<%@ include file="/webpage/include/bootstraptable.jsp" %>
 	<%@include file="importTable.js"%>
 </head>
 <body>
@@ -25,6 +26,8 @@
 					<button id="btnInReason" class="btn btn-info">
 						<i class="fa fa-folder-open-o"></i> 导入拆旧表
 					</button>
+
+					<table id="projectTable"  style="table-layout:fixed"  data-toolbar="#toolbar"></table>
 					<form:form id="inputForm" modelAttribute="construction" action="${ctx}/managementcenter/divide/save"
 							   method="post" class="form-horizontal">
 						<form:hidden path="id"/>

+ 155 - 13
src/main/webapp/webpage/modules/sg/managementcenter/activiti/operatorUploadList.js

@@ -1,7 +1,8 @@
 <%@ page contentType="text/html;charset=UTF-8" %>
 <script>
 $(document).ready(function() {
-
+	var procInsId = $("#procInsId").val();
+	// alert(procInsId);
 	$('#testPicTable').bootstrapTable({
 		//请求方法
 		method: 'post',
@@ -37,7 +38,7 @@ $(document).ready(function() {
 		//可供选择的每页的行数(*)
 		pageList: [10, 25, 50, 100],
 		//这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
-		url: "${ctx}/managementcenter/upload/data",
+		url: "${ctx}/managementcenter/activiti/uploadData?procInsId="+procInsId,
 		//默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
 		//queryParamsType:'',
 		////查询参数,每次调用是会带上这个参数,可自定义
@@ -82,7 +83,7 @@ $(document).ready(function() {
 		},
 		columns: [{
 			field: 'path',
-			title: '图片路径',
+			title: '文件路径',
 			sortable: true,
 			sortName: 'path',
 			formatter:function(value, row , index){
@@ -105,13 +106,154 @@ $(document).ready(function() {
 			sortable: true,
 			sortName: 'imgName',
 		},{
-			field: 'uId',
+			field: 'uid',
 			title: '上传人员',
 			sortable: true,
-			sortName: 'uId',
+			sortName: 'uid',
 		}]
 	});
 
+	$('#projectTable').bootstrapTable({
+		//请求方法
+		method: 'post',
+		//类型json
+		dataType: "json",
+		contentType: "application/x-www-form-urlencoded",
+		//显示检索按钮
+		showSearch: false,
+		//显示刷新按钮
+		showRefresh: false,
+		//显示切换手机试图按钮
+		showToggle: false,
+		//显示 内容列下拉框
+		showColumns: false,
+		//显示到处按钮
+		showExport: false,
+		//显示切换分页按钮
+		showPaginationSwitch: false,
+		//最低显示2行
+		minimumCountColumns: 2,
+		//是否显示行间隔色
+		striped: true,
+		//是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+		cache: false,
+		//是否显示分页(*)
+		pagination: true,
+		//排序方式
+		sortOrder: "asc",
+		//初始化加载第一页,默认第一页
+		pageNumber: 1,
+		//每页的记录行数(*)
+		pageSize: 10,
+		//可供选择的每页的行数(*)
+		pageList: [5, 10, 25, 50, 150],
+		//这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+		url: "${ctx}/sg/managementcenter/project/tearDownData?reserveProjectName=${construction.reserveProjectName}",
+		//默认值为 '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',
+		onContextMenuItem: function (row, $el) {
+			if ($el.data("item") == "edit") {
+				edit(row.id);
+			} else if ($el.data("item") == "view") {
+				view(row.id);
+			} else if ($el.data("item") == "delete") {
+				jp.confirm('确认要删除该表单记录吗?', function () {
+					jp.loading();
+					jp.get("${ctx}/sg/managementcenter/project/delete?id=" + row.id, function (data) {
+						if (data.success) {
+							$('#projectTable').bootstrapTable('refresh');
+							jp.success(data.msg);
+						} else {
+							jp.error(data.msg);
+						}
+					})
+				});
+			}
+		},
+
+		onClickRow: function (row, $el) {
+		},
+		onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+		columns:
+			[{
+				field: 'reserveProjectName',
+				width:160,
+				title: '储备项目暂定名称',
+			}
+				, {
+				field: 'projectId',
+				width:150,
+				title: '项目定义',
+			}
+				, {
+				field: 'projectName',
+				width:150,
+				title: '项目名称',
+			}
+				, {
+				field: 'tearDown.reservedName',
+				width:150,
+				title: '基础设备材料名称',
+			}
+				, {
+				field: 'tearDown.reserveModel',
+				width:150,
+				title: '基础-型号',
+			}
+				, {
+				field: 'tearDown.reserveUnit',
+				width:150,
+				title: '基础-单位',
+			}
+				, {
+				field: 'tearDown.reserveNumber',
+				width:150,
+				title: '基础-数量',
+			}
+				, {
+				field: 'tearDown.reserveBalance',
+				width:150,
+				title: '基础-差额',
+			}
+				, {
+				field: 'tearDown.reserveNotes',
+				width:150,
+				title: '基础-备注',
+			}
+				, {
+				field: 'tearDown.changeNumber',
+				width:150,
+				title: '设计变更-数量',
+			}
+				, {
+				field: 'tearDown.changeDifference',
+				width:150,
+				title: '设计变更-差额',
+			}
+				, {
+				field: 'tearDown.changeNotes',
+				width:150,
+				title: '设计变更-备注',
+			}
+			]
+	})
+
+
 
 	if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
 
@@ -132,16 +274,13 @@ $(document).ready(function() {
 			auto: true,
 			title:"导入数据",
 			content: "${ctx}/tag/importExcel" ,
-			btn: ['下载模板','确定', '关闭'],
+			btn: ['确定', '关闭'],
 			btn1: function(index, layero){
-				jp.downloadFile('${ctx}/test/pic/testPic/import/template');
-			},
-			btn2: function(index, layero){
 				var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
-				iframeWin.contentWindow.importExcel('${ctx}/test/pic/testPic/import', function (data) {
+				iframeWin.contentWindow.importExcel('${ctx}/sg/managementcenter/project/importDesTear?jumpName=${construction.reserveProjectName}', function (data) {
 					if(data.success){
 						jp.success(data.msg);
-						refresh();
+						refresh2();
 					}else{
 						jp.error(data.msg);
 					}
@@ -149,8 +288,7 @@ $(document).ready(function() {
 				});//调用保存事件
 				return false;
 			},
-
-			btn3: function(index){
+			btn2: function(index){
 				jp.close(index);
 			}
 		});
@@ -203,6 +341,10 @@ function refresh(){
 	$('#testPicTable').bootstrapTable('refresh');
 }
 
+function refresh2() {
+	$('#projectTable').bootstrapTable('refresh');
+}
+
 function add(){
 	jp.openSaveDialog('新增图片管理', "${ctx}/test/pic/testPic/form",'800px', '500px');
 }

+ 36 - 2
src/main/webapp/webpage/modules/sg/managementcenter/activiti/operatorUploadList.jsp

@@ -6,15 +6,25 @@
     <meta http-equiv="Content-type" content="text/html; charset=utf-8">
     <meta name="decorator" content="ani"/>
     <%@ include file="/webpage/include/bootstraptable.jsp" %>
-    <%@include file="economicsDesignChange.js" %>
+    <%@include file="operatorUploadList.js" %>
     <script type="text/javascript">
         $(document).ready(function () {
             $("#agree").click(function () {
                 var currentFileValues = $("input[name='pic']").val();
+                var budget = $("input[name='budget']").val();
+                var civil = $("input[name='civil']").val();
                 if (currentFileValues == '' || currentFileValues == null) {
                     jp.error("请上传文件");
                     return false;
                 }
+                if (civil == '' || civil == null) {
+                    jp.error("请上传土建工程量表");
+                    return false;
+                }
+                if (budget == '' || budget == null) {
+                    jp.error("请上传预算书");
+                    return false;
+                }
                 jp.prompt("审核意见", function (message) {
                     jp.post("${ctx}/act/task/operatorUpload",
                         {
@@ -25,6 +35,8 @@
                             "procDefId": "${construction.act.procDefId}",
                             "flag": "yes",
                             "path": currentFileValues,
+                            "budget": currentFileValues,
+                            "civil": currentFileValues,
                             "reserveProjectName": "${construction.reserveProjectName}",
                             "comment": window.encodeURI(message)
                         },
@@ -47,8 +59,17 @@
             <h3 class="panel-title">设计单位人员重新设计</h3>
         </div>
         <div class="panel-body">
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="btnImport" class="btn btn-info">
+                    <i class="fa fa-folder-open-o"></i> 导入拆旧表
+                </button>
+            </div>
             <!-- 表格 -->
             <table id="testPicTable" data-toolbar="#toolbar"></table>
+
+            <table id="projectTable"  style="table-layout:fixed"  data-toolbar="#toolbar"></table>
+
             <div class="panel-body">
                 <form:form id="inputForm" modelAttribute="construction" action="${ctx}/managementcenter/divide/save"
                            method="post" class="form-horizontal">
@@ -62,7 +83,7 @@
                             <td class="width-35">
                                     ${fns:unescapeHtml(construction.reserveProjectName)}
                             </td>
-                            <td class="width-15 active"><label class="pull-right">上传文件:</label></td>
+                            <td class="width-15 active"><label class="pull-right">上传图纸:</label></td>
                             <td class="width-35">
                                 <sys:fileUpload path="pic" fileNumLimit="50" fileSizeLimit="50"
                                                 value="${testPic.pic}" type="file"
@@ -70,6 +91,19 @@
                             </td>
                         </tr>
                         <tr>
+                            <td class="width-15 active"><label class="pull-right">土建工程量表:</label></td>
+                            <td class="width-35">
+                                <sys:fileUpload path="civil" fileNumLimit="50" fileSizeLimit="50"
+                                                value="${testPic.pic}" type="file"
+                                                uploadPath="list"></sys:fileUpload>                            </td>
+                            <td class="width-15 active"><label class="pull-right">预算书:</label></td>
+                            <td class="width-35">
+                                <sys:fileUpload path="budget" fileNumLimit="50" fileSizeLimit="50"
+                                                value="${testPic.pic}" type="file"
+                                                uploadPath="list"></sys:fileUpload>
+                            </td>
+                        </tr>
+                        <tr>
                             <td class="width-15 active"><label class="pull-right">项目号:</label></td>
                             <td class="width-35">
                                     ${fns:unescapeHtml(construction.projectId)}

+ 87 - 0
src/main/webapp/webpage/modules/sg/managementcenter/project/tearAdd.jsp

@@ -0,0 +1,87 @@
+<%@ 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() {
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else {
+				var name = $("#reserveProjectNameId").val();
+				if (name == '') {
+					jp.error("请选择项目");
+					return false;
+				}
+				jp.loading();
+				jp.post("${ctx}/sg/managementcenter/project/tearAddSave", $('#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);
+					}
+				})
+			}
+
+        }
+		function noFue(val){
+			document.getElementById('constructionContractRate').value = val >= 0 ? val : 0;
+		}
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="project" class="form-horizontal">
+		<form:hidden path="id"/>	
+		<table class="table table-bordered">
+			<tbody>
+				<tr>
+					<td class="width-15 active"><label class=""><font color="red">*</font>选择项目:</label></td>
+					<td class="width-35">
+						<sys:itemselect url="${ctx}/sg/managementcenter/project/data" id="reserveProjectName" name="reserveProjectName" value="${project.reserveProjectName}" labelName="project.reserveProjectName" labelValue="${project.reserveProjectName}"
+										title="选择项目号" cssClass="form-control " fieldLabels="${fns:urlEncode('项目需求名称|项目定义号|项目名称')}" fieldKeys="reserveProjectName|projectId|projectName" searchLabels="${fns:urlEncode('储备项目名称')}|${fns:urlEncode('项目定义号')}|${fns:urlEncode('项目名称')}" searchKeys="reserveProjectName|projectId|projectName"  isMultiSelected="true"></sys:itemselect>
+					</td>
+					<td class="width-15 active"><label class=""><font color="red">*</font>设备材料名称:</label></td>
+					<td class="width-35">
+						<form:input path="tearDown.reservedName" htmlEscape="false" cssClass="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="">型号 :</label></td>
+					<td class="width-35">
+						<form:input path="tearDown.reserveModel"   htmlEscape="false" class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="">单位:</label></td>
+					<td class="width-35">
+						<form:input path="tearDown.reserveUnit"   htmlEscape="false" class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="">数量:</label></td>
+					<td class="width-35">
+						<form:input path="tearDown.reserveNumber"  htmlEscape="false" class="form-control number required"/>
+					</td>
+					<td class="width-15 active"><label class="">备注:</label></td>
+					<td class="width-35">
+						<form:input path="tearDown.reserveNotes"  htmlEscape="false" class="form-control required"/>
+					</td>
+				</tr>
+
+			</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 237 - 0
src/main/webapp/webpage/modules/sg/managementcenter/project/tearDown.js

@@ -0,0 +1,237 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function () {
+    $('#projectTable').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: [5, 10, 25, 50, 150],
+        //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+        url: "${ctx}/sg/managementcenter/project/tearDownData",
+        //默认值为 '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',
+        onContextMenuItem: function (row, $el) {
+            if ($el.data("item") == "edit") {
+                edit(row.id);
+            } else if ($el.data("item") == "view") {
+                view(row.id);
+            } else if ($el.data("item") == "delete") {
+                jp.confirm('确认要删除该表单记录吗?', function () {
+                    jp.loading();
+                    jp.get("${ctx}/sg/managementcenter/project/delete?id=" + row.id, function (data) {
+                        if (data.success) {
+                            $('#projectTable').bootstrapTable('refresh');
+                            jp.success(data.msg);
+                        } else {
+                            jp.error(data.msg);
+                        }
+                    })
+                });
+            }
+        },
+
+        onClickRow: function (row, $el) {
+        },
+        onShowSearch: function () {
+            $("#search-collapse").slideToggle();
+        },
+        columns:
+            [
+                {
+                    checkbox: true
+                }
+                , {
+                field: 'reserveProjectName',
+                width:160,
+                title: '储备项目暂定名称',
+            }
+                , {
+                field: 'projectId',
+                width:150,
+                title: '项目定义',
+            }
+                , {
+                field: 'projectName',
+                width:150,
+                title: '项目名称',
+            }
+                , {
+                field: 'tearDown.reservedName',
+                width:150,
+                title: '基础设备材料名称',
+            }
+                , {
+                field: 'tearDown.reserveModel',
+                width:150,
+                title: '基础-型号',
+            }
+                , {
+                field: 'tearDown.reserveUnit',
+                width:150,
+                title: '基础-单位',
+            }
+                , {
+                field: 'tearDown.reserveNumber',
+                width:150,
+                title: '基础-数量',
+            }
+                , {
+                field: 'tearDown.reserveBalance',
+                width:150,
+                title: '基础-差额',
+            }
+                , {
+                field: 'tearDown.reserveNotes',
+                width:150,
+                title: '基础-备注',
+            }
+            ]
+    });
+
+
+    if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端
+        $('#projectTable').bootstrapTable("toggleView");
+    }
+
+    $('#projectTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+        'check-all.bs.table uncheck-all.bs.table', function () {
+        $('#remove').prop('disabled', !$('#projectTable').bootstrapTable('getSelections').length);
+        $('#view,#edit').prop('disabled', $('#projectTable').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) {
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                iframeWin.contentWindow.importExcel('${ctx}/sg/managementcenter/project/importTear', function (data) {
+                    if (data.success) {
+                        jp.success(data.msg);
+                        refresh();
+                    } else {
+                        jp.error(data.msg);
+                    }
+                    jp.close(index);
+                });//调用保存事件
+                return false;
+            },
+
+            btn2: function (index) {
+                //  jp.close(index);
+            }
+        });
+    });
+
+    $("#export").click(function () {//导出Excel文件
+        jp.downloadFile('${ctx}/sg/managementcenter/project/export');
+    });
+
+    $("#search").click("click", function () {// 绑定查询按扭
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $("#reset").click("click", function () {// 绑定查询按扭
+        $("#searchForm  input").val("");
+        $("#searchForm  select").val("");
+        $("#searchForm  .select-item").html("");
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $('#beginBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+});
+
+function getIdSelections() {
+    return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+
+//刷新列表
+function refresh() {
+    $('#projectTable').bootstrapTable('refresh');
+}
+
+function add() {
+    jp.openSaveDialog('新增基础拆旧信息', "${ctx}/sg/managementcenter/project/tearAdd", '800px', '500px');
+}
+
+
+function edit(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑拆旧信息', "${ctx}/sg/managementcenter/project/tearEidForm?id=" + id, '800px', '500px');
+}
+
+function deleteAll(){
+    jp.confirm('确认要删除该请假表单记录吗?', function(){
+        jp.loading();
+        jp.get("${ctx}/sg/managementcenter/project/deleteTearAll?ids=" + getIdSelections(), function(data){
+            if(data.success){
+                $('#projectTable').bootstrapTable('refresh');
+                jp.success(data.msg);
+            }else{
+                jp.error(data.msg);
+            }
+        })
+
+    })
+}
+
+</script>

+ 65 - 0
src/main/webapp/webpage/modules/sg/managementcenter/project/tearDown.jsp

@@ -0,0 +1,65 @@
+<%@ 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="tearDown.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 id="search-collapse" class="collapse">
+			<div class="accordion-inner">
+				<form:form id="searchForm" modelAttribute="project" class="form form-horizontal well clearfix">
+					<div class="col-xs-12 col-sm-6 col-md-4">
+						<label class="label-item single-overflow pull-left" title="储备项目暂定名称:">储备项目暂定名称:</label>
+						<form:input path="projectId" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</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">
+				<button id="add" class="btn btn-primary" onclick="add()">
+					<i class="glyphicon glyphicon-plus"></i> 新增
+				</button>
+				<button id="edit" class="btn btn-primary" onclick="edit()">
+					<i class="glyphicon glyphicon-edit"></i> 修改
+				</button>
+				<button id="btnImport" class="btn btn-info">
+					<i class="fa fa-folder-open-o"></i> 导入
+				</button>
+				<button id="remove" class="btn btn-danger" onclick="deleteAll()">
+					<i class="glyphicon glyphicon-remove"></i> 删除
+				</button>
+<%--			<shiro:hasPermission name="sg:managementcenter:project:export">
+	        		<button id="export" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出
+				</button>
+			</shiro:hasPermission>--%>
+	</div>
+		
+	<!-- 表格 -->
+	<table id="projectTable"  style="table-layout:fixed"  data-toolbar="#toolbar"></table>
+
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 96 - 0
src/main/webapp/webpage/modules/sg/managementcenter/project/tearEidForm.jsp

@@ -0,0 +1,96 @@
+<%@ 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() {
+	        $('#beginDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+	        $('#endDate').datetimepicker({
+				 format: "YYYY-MM-DD HH:mm:ss"
+		    });
+		});
+		function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else {
+				var name = $("#reserveProjectNameId").val();
+				if (name == '') {
+					jp.error("请选择项目");
+					return false;
+				}
+				jp.loading();
+				jp.post("${ctx}/sg/managementcenter/project/tearEditSave", $('#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);
+					}
+				})
+			}
+
+        }
+		function noFue(val){
+			document.getElementById('constructionContractRate').value = val >= 0 ? val : 0;
+		}
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="project" class="form-horizontal">
+		<form:hidden path="id"/>	
+		<table class="table table-bordered">
+			<tbody>
+				<tr>
+					<td class="width-15 active"><label class=""><font color="red">*</font>储备项目名称:</label></td>
+					<td class="width-35">
+						<form:input path="reserveProjectName" readonly="true" htmlEscape="false" cssClass="form-control "/>
+					</td>
+					<td class="width-15 active"><label class=""><font color="red">*</font>项目名称:</label></td>
+					<td class="width-35">
+						<form:input path="projectName" readonly="true" htmlEscape="false" cssClass="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class=""><font color="red">*</font>项目定义号:</label></td>
+					<td class="width-35">
+						<form:input path="projectId" readonly="true" htmlEscape="false" cssClass="form-control "/>
+					</td>
+					<td class="width-15 active"><label class=""><font color="red">*</font>设备材料名称:</label></td>
+					<td class="width-35">
+						<form:input path="tearDown.reservedName" readonly="true" htmlEscape="false" cssClass="form-control "/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="">型号 :</label></td>
+					<td class="width-35">
+						<form:input path="tearDown.reserveModel"   htmlEscape="false" class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="">单位:</label></td>
+					<td class="width-35">
+						<form:input path="tearDown.reserveUnit"   htmlEscape="false" class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="">数量:</label></td>
+					<td class="width-35">
+						<form:input path="tearDown.reserveNumber"  htmlEscape="false" class="form-control number required"/>
+					</td>
+					<td class="width-15 active"><label class="">备注:</label></td>
+					<td class="width-35">
+						<form:input path="tearDown.reserveNotes"  htmlEscape="false" class="form-control required"/>
+					</td>
+				</tr>
+
+			</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 275 - 0
src/main/webapp/webpage/modules/sg/managementcenter/project/tearFinal.js

@@ -0,0 +1,275 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function () {
+    $('#projectTable').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: [5, 10, 25, 50, 150],
+        //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+        url: "${ctx}/sg/managementcenter/project/tearDownData",
+        //默认值为 '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',
+        onContextMenuItem: function (row, $el) {
+            if ($el.data("item") == "edit") {
+                edit(row.id);
+            } else if ($el.data("item") == "view") {
+                view(row.id);
+            } else if ($el.data("item") == "delete") {
+                jp.confirm('确认要删除该表单记录吗?', function () {
+                    jp.loading();
+                    jp.get("${ctx}/sg/managementcenter/project/delete?id=" + row.id, function (data) {
+                        if (data.success) {
+                            $('#projectTable').bootstrapTable('refresh');
+                            jp.success(data.msg);
+                        } else {
+                            jp.error(data.msg);
+                        }
+                    })
+                });
+            }
+        },
+
+        onClickRow: function (row, $el) {
+        },
+        onShowSearch: function () {
+            $("#search-collapse").slideToggle();
+        },
+        columns:
+            [
+                {
+                    checkbox: true
+                }
+                ,{
+                field: 'reserveProjectName',
+                width:160,
+                title: '储备项目暂定名称',
+            }
+                , {
+                field: 'projectId',
+                width:150,
+                title: '项目定义',
+            }
+                , {
+                field: 'projectName',
+                width:150,
+                title: '项目名称',
+            }
+                , {
+                field: 'tearDown.reservedName',
+                width:150,
+                title: '基础设备材料名称',
+            }
+                , {
+                field: 'tearDown.reserveModel',
+                width:150,
+                title: '基础-型号',
+            }
+                , {
+                field: 'tearDown.reserveUnit',
+                width:150,
+                title: '基础-单位',
+            }
+                , {
+                field: 'tearDown.reserveNumber',
+                width:150,
+                title: '基础-数量',
+            }
+                , {
+                field: 'tearDown.reserveBalance',
+                width:150,
+                title: '基础-差额',
+            }
+                , {
+                field: 'tearDown.reserveNotes',
+                width:150,
+                title: '基础-备注',
+            }  , {
+                field: 'tearDown.confessionNumber',
+                width:150,
+                title: '交底变更-数量',
+            }
+                , {
+                field: 'tearDown.confessionDifference',
+                width:150,
+                title: '交底变更-差额',
+            }
+                , {
+                field: 'tearDown.confessionNotes',
+                width:150,
+                title: '交底变更-备注',
+            }
+                , {
+                field: 'tearDown.changeNumber',
+                width:150,
+                title: '设计变更-数量',
+            }
+                , {
+                field: 'tearDown.changeDifference',
+                width:150,
+                title: '设计变更-差额',
+            }
+                , {
+                field: 'tearDown.changeNotes',
+                width:150,
+                title: '设计变更-备注',
+            }, {
+                field: 'tearDown.actualNumber',
+                width:150,
+                title: '实际-数量',
+            }
+                , {
+                field: 'tearDown.actualNotes',
+                width:150,
+                title: '实际-备注',
+            }
+            ]
+    });
+
+
+    if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端
+        $('#projectTable').bootstrapTable("toggleView");
+    }
+
+    $('#projectTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+        'check-all.bs.table uncheck-all.bs.table', function () {
+        $('#remove').prop('disabled', !$('#projectTable').bootstrapTable('getSelections').length);
+        $('#view,#edit').prop('disabled', $('#projectTable').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) {
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                iframeWin.contentWindow.importExcel('${ctx}/sg/managementcenter/project/importFinTear', function (data) {
+                    if (data.success) {
+                        jp.success(data.msg);
+                        refresh();
+                    } else {
+                        jp.error(data.msg);
+                    }
+                    jp.close(index);
+                });//调用保存事件
+                return false;
+            },
+
+            btn2: function (index) {
+                //  jp.close(index);
+            }
+        });
+    });
+
+    $("#export").click(function () {//导出Excel文件
+        jp.downloadFile('${ctx}/sg/managementcenter/project/export');
+    });
+
+    $("#search").click("click", function () {// 绑定查询按扭
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $("#reset").click("click", function () {// 绑定查询按扭
+        $("#searchForm  input").val("");
+        $("#searchForm  select").val("");
+        $("#searchForm  .select-item").html("");
+        $('#projectTable').bootstrapTable('refresh');
+    });
+
+    $('#beginBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endBeginDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+    $('#endDate').datetimepicker({
+        format: "YYYY-MM-DD HH:mm:ss"
+    });
+});
+
+function getIdSelections() {
+    return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+
+//刷新列表
+function refresh() {
+    $('#projectTable').bootstrapTable('refresh');
+}
+
+function add() {
+    jp.openSaveDialog('新增基础拆旧信息', "${ctx}/sg/managementcenter/project/tearAdd", '800px', '500px');
+}
+
+
+function edit(id) {//没有权限时,不显示确定按钮
+    if (id == undefined) {
+        id = getIdSelections();
+    }
+    jp.openSaveDialog('编辑拆旧信息', "${ctx}/sg/managementcenter/project/tearEidForm?id=" + id, '800px', '500px');
+}
+
+function deleteAll(){
+    jp.confirm('确认要删除该请假表单记录吗?', function(){
+        jp.loading();
+        jp.get("${ctx}/sg/managementcenter/project/deleteTearAll?ids=" + getIdSelections(), function(data){
+            if(data.success){
+                $('#projectTable').bootstrapTable('refresh');
+                jp.success(data.msg);
+            }else{
+                jp.error(data.msg);
+            }
+        })
+
+    })
+}
+
+</script>

+ 65 - 0
src/main/webapp/webpage/modules/sg/managementcenter/project/tearFinal.jsp

@@ -0,0 +1,65 @@
+<%@ 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="tearFinal.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 id="search-collapse" class="collapse">
+			<div class="accordion-inner">
+				<form:form id="searchForm" modelAttribute="project" class="form form-horizontal well clearfix">
+					<div class="col-xs-12 col-sm-6 col-md-4">
+						<label class="label-item single-overflow pull-left" title="储备项目暂定名称:">储备项目暂定名称:</label>
+						<form:input path="projectId" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</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">
+<%--				<button id="add" class="btn btn-primary" onclick="add()">
+					<i class="glyphicon glyphicon-plus"></i> 新增
+				</button>
+				<button id="edit" class="btn btn-primary" onclick="edit()">
+					<i class="glyphicon glyphicon-edit"></i> 修改
+				</button>--%>
+				<button id="btnImport" class="btn btn-info">
+					<i class="fa fa-folder-open-o"></i> 导入实际拆旧物资信息
+				</button>
+				<button id="remove" class="btn btn-danger" onclick="deleteAll()">
+					<i class="glyphicon glyphicon-remove"></i> 删除
+				</button>
+<%--			<shiro:hasPermission name="sg:managementcenter:project:export">
+	        		<button id="export" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出
+				</button>
+			</shiro:hasPermission>--%>
+	</div>
+		
+	<!-- 表格 -->
+	<table id="projectTable"  style="table-layout:fixed"  data-toolbar="#toolbar"></table>
+
+	</div>
+	</div>
+	</div>
+</body>
+</html>