Procházet zdrojové kódy

工作内容-实施阶段-隐蔽工程量管理和甲供物资五方确认表管理增删改查

user5 před 4 roky
rodič
revize
552ab806f4
34 změnil soubory, kde provedl 2142 přidání a 15 odebrání
  1. 1 1
      pom.xml
  2. 8 0
      src/main/java/com/jeeplus/modules/workcontent/common/WorkContentDetailFactory.java
  3. 37 0
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkConcealProjectDao.java
  4. 37 0
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkFiveDirectionsAffirmDao.java
  5. 74 0
      src/main/java/com/jeeplus/modules/workcontent/entity/WorkConcealProject.java
  6. 231 0
      src/main/java/com/jeeplus/modules/workcontent/entity/WorkFiveDirectionsAffirm.java
  7. 76 0
      src/main/java/com/jeeplus/modules/workcontent/service/WorkConcealProjectService.java
  8. 77 0
      src/main/java/com/jeeplus/modules/workcontent/service/WorkFiveDirectionsAffirmService.java
  9. 138 0
      src/main/java/com/jeeplus/modules/workcontent/web/WorkConcealProjectController.java
  10. 139 0
      src/main/java/com/jeeplus/modules/workcontent/web/WorkFiveDirectionsAffirmController.java
  11. 181 0
      src/main/resources/mappings/modules/workcontent/WorkConcealProjectDao.xml
  12. 277 0
      src/main/resources/mappings/modules/workcontent/WorkFiveDirectionsAffirmDao.xml
  13. 39 11
      src/main/webapp/webpage/modules/projectcontentinfo/workContentForm.jsp
  14. 29 3
      src/main/webapp/webpage/modules/projectcontentinfo/workContentView.jsp
  15. 305 0
      src/main/webapp/webpage/modules/workcontent/workConcealProjectList.jsp
  16. 87 0
      src/main/webapp/webpage/modules/workcontent/workConcealProjectListView.jsp
  17. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentAltermanage.jsp
  18. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentBiddingplan.jsp
  19. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentBudgetList.jsp
  20. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentClaimForm.jsp
  21. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentContprogram.jsp
  22. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentContractSumFormView.jsp
  23. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentContractinfoForm.jsp
  24. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentCtrlpriceList.jsp
  25. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentDocument.jsp
  26. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentFundplan.jsp
  27. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentInvestmentCostList.jsp
  28. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentPriceadjustForm.jsp
  29. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentPricemanageForm.jsp
  30. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentProjectpriceForm.jsp
  31. 3 0
      src/main/webapp/webpage/modules/workcontent/workContentVisamanage.jsp
  32. 239 0
      src/main/webapp/webpage/modules/workcontent/workFiveDirectionsAffirmList.jsp
  33. 118 0
      src/main/webapp/webpage/modules/workcontent/workFiveDirectionsAffirmListView.jsp
  34. 4 0
      src/main/webapp/webpage/modules/workcontent/workPreliminaryDesignEstimateList.jsp

+ 1 - 1
pom.xml

@@ -919,7 +919,7 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
-            <version>1.2.27</version>
+            <version>1.2.62</version>
         </dependency>
         <dependency>
             <groupId>org.codehaus.woodstox</groupId>

+ 8 - 0
src/main/java/com/jeeplus/modules/workcontent/common/WorkContentDetailFactory.java

@@ -10,6 +10,10 @@ public class WorkContentDetailFactory {
     private static WorkContentInvestmentCostService investmentCostService = SpringContextHolder.getBean(WorkContentInvestmentCostService.class);
     //设计概算编制审核调整Service
     private static WorkPreliminaryDesignEstimateService preliminaryDesignEstimateService = SpringContextHolder.getBean(WorkPreliminaryDesignEstimateService.class);
+    //甲供物资五方确认表Service
+    private static WorkFiveDirectionsAffirmService workFiveDirectionsAffirmService = SpringContextHolder.getBean(WorkFiveDirectionsAffirmService.class);
+    //隐蔽工程量Service
+    private static WorkConcealProjectService workConcealProjectService = SpringContextHolder.getBean(WorkConcealProjectService.class);
     //认价管理Service
     private static WorkContentPricemanageService pricemanageService = SpringContextHolder.getBean(WorkContentPricemanageService.class);
     //资金计划Service
@@ -74,6 +78,10 @@ public class WorkContentDetailFactory {
                 return contentDocumentService;
             case "400":
                 return contractsumService;
+            case "410":
+                return workConcealProjectService;
+            case "411":
+                return workFiveDirectionsAffirmService;
             default:
                 return null;
         }

+ 37 - 0
src/main/java/com/jeeplus/modules/workcontent/dao/WorkConcealProjectDao.java

@@ -0,0 +1,37 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.workcontent.entity.WorkConcealProject;
+import com.jeeplus.modules.workcontent.entity.WorkPreliminaryDesignEstimate;
+
+import java.util.List;
+
+
+/**
+ * 设计概算编制审核调整DAO接口
+ * @author ssrh
+ * @version 2018-06-05
+ */
+@MyBatisDao
+public interface WorkConcealProjectDao extends CrudDao<WorkConcealProject> {
+
+
+    void batchInsert(List<WorkConcealProject> wlist);
+
+    /**
+     * 根据contentId删除数据
+     * @param contentId
+     * @return
+     */
+    int deleteByContentId(String contentId);
+
+    /**
+     * 查询数据表中的所有数据类型
+     * @return
+     */
+    List<String> getTableType(String contentId);
+}

+ 37 - 0
src/main/java/com/jeeplus/modules/workcontent/dao/WorkFiveDirectionsAffirmDao.java

@@ -0,0 +1,37 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.workcontent.entity.WorkFiveDirectionsAffirm;
+import com.jeeplus.modules.workcontent.entity.WorkPreliminaryDesignEstimate;
+
+import java.util.List;
+
+
+/**
+ * 设计概算编制审核调整DAO接口
+ * @author ssrh
+ * @version 2018-06-05
+ */
+@MyBatisDao
+public interface WorkFiveDirectionsAffirmDao extends CrudDao<WorkFiveDirectionsAffirm> {
+
+
+    void batchInsert(List<WorkPreliminaryDesignEstimate> wlist);
+
+    /**
+     * 根据contentId删除数据
+     * @param contentId
+     * @return
+     */
+    int deleteByContentId(String contentId);
+
+    /**
+     * 查询数据表中的所有数据类型
+     * @return
+     */
+    List<String> getTableType(String contentId);
+}

+ 74 - 0
src/main/java/com/jeeplus/modules/workcontent/entity/WorkConcealProject.java

@@ -0,0 +1,74 @@
+package com.jeeplus.modules.workcontent.entity;
+
+import com.jeeplus.common.persistence.DataEntity;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+
+public class WorkConcealProject extends DataEntity<WorkConcealProject> {
+    private static final long serialVersionUID = 1L;
+    private String projectId;		// 项目id
+    private String contentId;		// 工作内容ID
+
+    private String costPart;		// 工程部位
+    private String workAmount;		// 工程量
+    private String workConcealProjectSerialNum;		// 隐蔽工程验收记录编号
+    private String type;  //类别
+
+    public WorkConcealProject() {
+        super();
+    }
+
+    public WorkConcealProject(String id){
+        super(id);
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public String getContentId() {
+        return contentId;
+    }
+
+    public void setContentId(String contentId) {
+        this.contentId = contentId;
+    }
+
+    @ExcelField(title="工程部位", align=2, sort=10)
+    public String getCostPart() {
+        return costPart;
+    }
+
+    public void setCostPart(String costPart) {
+        this.costPart = costPart;
+    }
+
+    @ExcelField(title="工程量", align=2, sort=11)
+    public String getWorkAmount() {
+        return workAmount;
+    }
+
+    public void setWorkAmount(String workAmount) {
+        this.workAmount = workAmount;
+    }
+
+    @ExcelField(title="隐蔽工程验收记录编号", align=2, sort=12)
+    public String getWorkConcealProjectSerialNum() {
+        return workConcealProjectSerialNum;
+    }
+
+    public void setWorkConcealProjectSerialNum(String workConcealProjectSerialNum) {
+        this.workConcealProjectSerialNum = workConcealProjectSerialNum;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+}

+ 231 - 0
src/main/java/com/jeeplus/modules/workcontent/entity/WorkFiveDirectionsAffirm.java

@@ -0,0 +1,231 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.entity;
+
+
+import com.jeeplus.common.persistence.DataEntity;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import org.springframework.format.annotation.NumberFormat;
+
+import java.util.Date;
+
+/**
+ * 甲供物资五方确认表Entity
+ * @author ssrh
+ * @version 2018-06-05
+ */
+public class WorkFiveDirectionsAffirm extends DataEntity<WorkFiveDirectionsAffirm> {
+
+	private static final long serialVersionUID = 1L;
+	private String projectId;		// 项目id
+	private String contentId;		// 工作内容ID
+
+	private String ownerPurchasingRequisitionNum;  //采购申请号
+	private String ownerMaterialCode;  //物料编码
+	private String ownerMaterialDescription;  //物料描述
+	private String ownerUnits;  //单位
+	private String ownerTenderNum;  //招标量
+
+	private String designMaterialName;  //施工图物料名称及规格型号
+	private String designDrawingAmount;  //图纸净量
+	private String designAttritionRate;  //损耗率
+	private String designAffirmTotal;  //确认合计量
+	private String designRemarks;  //备注
+
+	private String roadworkDrawingAmount;  //图纸净量
+	private String roadworkAttritionRate;  //损耗率
+	private String roadworkDemandDosage;  //需求用量
+	private Date roadworkDemandDate;  //需求日期
+	private String roadworkRemarks;  //备注
+
+	private String consultDrawingAmount;  //图纸净量
+	private String consultAttritionRate;  //损耗率
+	private String consultAuditTotal;  //审核合计量
+	private String consultRemarks;  //备注
+	private String type;          //数据状态
+
+	public WorkFiveDirectionsAffirm() {
+		super();
+	}
+
+	public WorkFiveDirectionsAffirm(String id){
+		super(id);
+	}
+
+	public String getProjectId() {
+		return projectId;
+	}
+
+	public void setProjectId(String projectId) {
+		this.projectId = projectId;
+	}
+	
+	public String getContentId() {
+		return contentId;
+	}
+
+	public void setContentId(String contentId) {
+		this.contentId = contentId;
+	}
+
+	public String getOwnerPurchasingRequisitionNum() {
+		return ownerPurchasingRequisitionNum;
+	}
+
+	public void setOwnerPurchasingRequisitionNum(String ownerPurchasingRequisitionNum) {
+		this.ownerPurchasingRequisitionNum = ownerPurchasingRequisitionNum;
+	}
+
+	public String getOwnerMaterialCode() {
+		return ownerMaterialCode;
+	}
+
+	public void setOwnerMaterialCode(String ownerMaterialCode) {
+		this.ownerMaterialCode = ownerMaterialCode;
+	}
+
+	public String getOwnerMaterialDescription() {
+		return ownerMaterialDescription;
+	}
+
+	public void setOwnerMaterialDescription(String ownerMaterialDescription) {
+		this.ownerMaterialDescription = ownerMaterialDescription;
+	}
+
+	public String getOwnerUnits() {
+		return ownerUnits;
+	}
+
+	public void setOwnerUnits(String ownerUnits) {
+		this.ownerUnits = ownerUnits;
+	}
+
+	public String getOwnerTenderNum() {
+		return ownerTenderNum;
+	}
+
+	public void setOwnerTenderNum(String ownerTenderNum) {
+		this.ownerTenderNum = ownerTenderNum;
+	}
+
+	public String getDesignMaterialName() {
+		return designMaterialName;
+	}
+
+	public void setDesignMaterialName(String designMaterialName) {
+		this.designMaterialName = designMaterialName;
+	}
+
+	public String getDesignDrawingAmount() {
+		return designDrawingAmount;
+	}
+
+	public void setDesignDrawingAmount(String designDrawingAmount) {
+		this.designDrawingAmount = designDrawingAmount;
+	}
+
+	public String getDesignAttritionRate() {
+		return designAttritionRate;
+	}
+
+	public void setDesignAttritionRate(String designAttritionRate) {
+		this.designAttritionRate = designAttritionRate;
+	}
+
+	public String getDesignAffirmTotal() {
+		return designAffirmTotal;
+	}
+
+	public void setDesignAffirmTotal(String designAffirmTotal) {
+		this.designAffirmTotal = designAffirmTotal;
+	}
+
+	public String getDesignRemarks() {
+		return designRemarks;
+	}
+
+	public void setDesignRemarks(String designRemarks) {
+		this.designRemarks = designRemarks;
+	}
+
+	public String getRoadworkDrawingAmount() {
+		return roadworkDrawingAmount;
+	}
+
+	public void setRoadworkDrawingAmount(String roadworkDrawingAmount) {
+		this.roadworkDrawingAmount = roadworkDrawingAmount;
+	}
+
+	public String getRoadworkAttritionRate() {
+		return roadworkAttritionRate;
+	}
+
+	public void setRoadworkAttritionRate(String roadworkAttritionRate) {
+		this.roadworkAttritionRate = roadworkAttritionRate;
+	}
+
+	public String getRoadworkDemandDosage() {
+		return roadworkDemandDosage;
+	}
+
+	public void setRoadworkDemandDosage(String roadworkDemandDosage) {
+		this.roadworkDemandDosage = roadworkDemandDosage;
+	}
+
+	public Date getRoadworkDemandDate() {
+		return roadworkDemandDate;
+	}
+
+	public void setRoadworkDemandDate(Date roadworkDemandDate) {
+		this.roadworkDemandDate = roadworkDemandDate;
+	}
+
+	public String getRoadworkRemarks() {
+		return roadworkRemarks;
+	}
+
+	public void setRoadworkRemarks(String roadworkRemarks) {
+		this.roadworkRemarks = roadworkRemarks;
+	}
+
+	public String getConsultDrawingAmount() {
+		return consultDrawingAmount;
+	}
+
+	public void setConsultDrawingAmount(String consultDrawingAmount) {
+		this.consultDrawingAmount = consultDrawingAmount;
+	}
+
+	public String getConsultAttritionRate() {
+		return consultAttritionRate;
+	}
+
+	public void setConsultAttritionRate(String consultAttritionRate) {
+		this.consultAttritionRate = consultAttritionRate;
+	}
+
+	public String getConsultAuditTotal() {
+		return consultAuditTotal;
+	}
+
+	public void setConsultAuditTotal(String consultAuditTotal) {
+		this.consultAuditTotal = consultAuditTotal;
+	}
+
+	public String getConsultRemarks() {
+		return consultRemarks;
+	}
+
+	public void setConsultRemarks(String consultRemarks) {
+		this.consultRemarks = consultRemarks;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+}

+ 76 - 0
src/main/java/com/jeeplus/modules/workcontent/service/WorkConcealProjectService.java

@@ -0,0 +1,76 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.service;
+
+import com.alibaba.fastjson.JSON;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.workcontent.dao.WorkConcealProjectDao;
+import com.jeeplus.modules.workcontent.entity.WorkConcealProject;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 设计概算编制审核调整Service
+ * @author ssrh
+ * @version 2018-06-05
+ */
+@Service
+@Transactional(readOnly = true)
+public class WorkConcealProjectService extends CrudService<WorkConcealProjectDao, WorkConcealProject> implements WorkContentDetailBaseService{
+
+	public WorkConcealProject get(String id) {
+		return super.get(id);
+	}
+	
+	public List<WorkConcealProject> findList(WorkConcealProject workConcealProject) {
+		return super.findList(workConcealProject);
+	}
+	
+	public Page<WorkConcealProject> findPage(Page<WorkConcealProject> page, WorkConcealProject workConcealProject) {
+		return super.findPage(page, workConcealProject);
+	}
+	
+	@Transactional(readOnly = false)
+	public void save(WorkConcealProject workConcealProject) {
+		super.save(workConcealProject);
+	}
+	
+	@Transactional(readOnly = false)
+	public void delete(WorkConcealProject workConcealProject) {
+		super.delete(workConcealProject);
+	}
+	
+    @Override
+    @Transactional(readOnly = false)
+    public void saveDetails(String detailStr, String projectId, String contentId) {
+	    if(StringUtils.isBlank(detailStr)){
+	        return;
+        }
+		detailStr = detailStr.replace("][",",");
+        List<WorkConcealProject> workConcealProjectList = JSON.parseArray(detailStr, WorkConcealProject.class);
+        for (WorkConcealProject workConcealProject : workConcealProjectList) {
+            if(WorkConcealProject.DEL_FLAG_DELETE.equals(workConcealProject.getDelFlag())){
+                dao.delete(workConcealProject);
+                continue;
+            }
+			workConcealProject.setContentId(contentId);
+			workConcealProject.setProjectId(projectId);
+            this.save(workConcealProject);
+        }
+    }
+
+	/**
+	 * 查询数据表中的所有数据类型
+	 * @return
+	 */
+    public List<String> getTableType(String contentId){
+		List<String> tableType = dao.getTableType(contentId);
+		return tableType;
+	}
+
+}

+ 77 - 0
src/main/java/com/jeeplus/modules/workcontent/service/WorkFiveDirectionsAffirmService.java

@@ -0,0 +1,77 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.service;
+
+import com.alibaba.fastjson.JSON;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.workcontent.dao.WorkFiveDirectionsAffirmDao;
+import com.jeeplus.modules.workcontent.entity.WorkFiveDirectionsAffirm;
+import com.jeeplus.modules.workcontent.entity.WorkPreliminaryDesignEstimate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 甲供物资五方确认表Service
+ * @author ssrh
+ * @version 2018-06-05
+ */
+@Service
+@Transactional(readOnly = true)
+public class WorkFiveDirectionsAffirmService extends CrudService<WorkFiveDirectionsAffirmDao, WorkFiveDirectionsAffirm> implements WorkContentDetailBaseService{
+
+	public WorkFiveDirectionsAffirm get(String id) {
+		return super.get(id);
+	}
+	
+	public List<WorkFiveDirectionsAffirm> findList(WorkFiveDirectionsAffirm workFiveDirectionsAffirm) {
+		return super.findList(workFiveDirectionsAffirm);
+	}
+	
+	public Page<WorkFiveDirectionsAffirm> findPage(Page<WorkFiveDirectionsAffirm> page, WorkFiveDirectionsAffirm workFiveDirectionsAffirm) {
+		return super.findPage(page, workFiveDirectionsAffirm);
+	}
+	
+	@Transactional(readOnly = false)
+	public void save(WorkFiveDirectionsAffirm workFiveDirectionsAffirm) {
+		super.save(workFiveDirectionsAffirm);
+	}
+	
+	@Transactional(readOnly = false)
+	public void delete(WorkFiveDirectionsAffirm workFiveDirectionsAffirm) {
+		super.delete(workFiveDirectionsAffirm);
+	}
+	
+    @Override
+    @Transactional(readOnly = false)
+    public void saveDetails(String detailStr, String projectId, String contentId) {
+	    if(StringUtils.isBlank(detailStr)){
+	        return;
+        }
+		/*detailStr = detailStr.replace("][",",");*/
+        List<WorkFiveDirectionsAffirm> workFiveDirectionsAffirmList = JSON.parseArray(detailStr, WorkFiveDirectionsAffirm.class);
+        for (WorkFiveDirectionsAffirm workFiveDirectionsAffirm : workFiveDirectionsAffirmList) {
+            if(WorkPreliminaryDesignEstimate.DEL_FLAG_DELETE.equals(workFiveDirectionsAffirm.getDelFlag())){
+                dao.delete(workFiveDirectionsAffirm);
+                continue;
+            }
+			workFiveDirectionsAffirm.setContentId(contentId);
+			workFiveDirectionsAffirm.setProjectId(projectId);
+            this.save(workFiveDirectionsAffirm);
+        }
+    }
+
+	/**
+	 * 查询数据表中的所有数据类型
+	 * @return
+	 */
+    public List<String> getTableType(String contentId){
+		List<String> tableType = dao.getTableType(contentId);
+		return tableType;
+	}
+
+}

+ 138 - 0
src/main/java/com/jeeplus/modules/workcontent/web/WorkConcealProjectController.java

@@ -0,0 +1,138 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import com.jeeplus.modules.workcontent.entity.WorkConcealProject;
+import com.jeeplus.modules.workcontent.entity.WorkConcealProject;
+import com.jeeplus.modules.workcontent.service.WorkConcealProjectService;
+import com.jeeplus.modules.workreceiptsregister.entity.ResponseEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 工程费用Controller
+ * @author ssrh
+ * @version 2018-06-05
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/workConcealProject/workConcealProject")
+public class WorkConcealProjectController extends BaseController {
+
+	@Autowired
+	private WorkConcealProjectService workConcealProjectService;
+
+	@ModelAttribute
+	public WorkConcealProject get(@RequestParam(required=false) String id) {
+		WorkConcealProject entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = workConcealProjectService.get(id);
+		}
+		if (entity == null){
+			entity = new WorkConcealProject();
+		}
+		return entity;
+	}
+
+	/**
+	 * 工程费用列表页面
+	 */
+	/*@RequiresPermissions("workcontentinvestmentcost:workContentInvestmentCost:list")*/
+	@RequestMapping(value = {"list", ""})
+	public String list(WorkConcealProject workConcealProject,String view, HttpServletRequest request, Model model) {
+		String sign = request.getParameter("sign");
+		List<String> signList = new ArrayList();
+		if (StringUtils.isNotBlank(sign)){
+			signList = Arrays.asList(sign.split(","));
+		}
+		List<WorkConcealProject> list = new ArrayList<>();
+        if(StringUtils.isNotBlank(workConcealProject.getContentId())){
+            list = workConcealProjectService.findList(workConcealProject);
+        }
+        model.addAttribute("signList", signList);
+        model.addAttribute("workConcealProject", list);
+        String viewPath = "modules/workcontent/workConcealProjectList";
+        if("view".equals(view)){
+            viewPath+="View";
+        }
+		List<MainDictDetail> unitList=DictUtils.getMainDictList("unit_type");
+		model.addAttribute("unitList", unitList);
+		List<MainDictDetail> nodeList=DictUtils.getMainDictList("node_type");
+		model.addAttribute("nodeList", nodeList);
+		List<MainDictDetail> costList=DictUtils.getMainDictList("cost_type");
+		model.addAttribute("costList", costList);
+        return viewPath;
+	}
+
+
+	/**
+	 * 查询数据表中的所有数据类型
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping(value = "getTableType", method=RequestMethod.POST)
+	public List<String> getTableType(String contentId){
+		List<String> tableType = workConcealProjectService.getTableType(contentId);
+		return tableType;
+	}
+
+	/**
+	 * 导入Excel数据
+	 */
+	@ResponseBody
+    @RequestMapping(value = "import", method=RequestMethod.POST)
+    public Object importFile(MultipartFile file, RedirectAttributes redirectAttributes) {
+        ResponseEntity<WorkConcealProject> responseEntity = new ResponseEntity<>();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+            List<WorkConcealProject> list = ei.getDataList(WorkConcealProject.class);
+			List<WorkConcealProject> listAll = new ArrayList<>();
+			for (WorkConcealProject workConcealProject : list) {
+				if(StringUtils.isNotBlank(workConcealProject.getCostPart()) && null != workConcealProject.getWorkAmount() && null != workConcealProject.getWorkConcealProjectSerialNum()){
+					listAll.add(workConcealProject);
+				}
+			}
+            responseEntity.setData(listAll);
+		} catch (Exception e) {
+		    logger.error("导入工程费用失败!",e);
+		    responseEntity.setCode(400);
+		    responseEntity.setMessage("导入工程费用失败!"+e.getMessage());
+		}
+		return responseEntity;
+    }
+
+	/**
+	 * 下载导入设计概算编制审核调整数据模板
+	 */
+    @RequestMapping(value = "import/template")
+    public String importFileTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		try {
+            String fileName = "设计概算编制审核调整数据导入模板.xlsx";
+    		List<WorkConcealProject> list = Lists.newArrayList();
+    		new ExportExcel("设计概算编制审核调整数据", WorkConcealProject.class, 1).setDataList(list).write(response, fileName).dispose();
+    		return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return "redirect:"+Global.getAdminPath()+"/workPreliminary/workConcealProject/?repage";
+    }
+	
+}

+ 139 - 0
src/main/java/com/jeeplus/modules/workcontent/web/WorkFiveDirectionsAffirmController.java

@@ -0,0 +1,139 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import com.jeeplus.modules.workcontent.entity.WorkFiveDirectionsAffirm;
+import com.jeeplus.modules.workcontent.entity.WorkPreliminaryDesignEstimate;
+import com.jeeplus.modules.workcontent.service.WorkFiveDirectionsAffirmService;
+import com.jeeplus.modules.workcontent.service.WorkPreliminaryDesignEstimateService;
+import com.jeeplus.modules.workreceiptsregister.entity.ResponseEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 甲供物资五方确认表Controller
+ * @author ssrh
+ * @version 2018-06-05
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/fiveDirectionsAffirm/workFiveDirectionsAffirm")
+public class WorkFiveDirectionsAffirmController extends BaseController {
+
+	@Autowired
+	private WorkFiveDirectionsAffirmService workFiveDirectionsAffirmService;
+	
+	@ModelAttribute
+	public WorkFiveDirectionsAffirm get(@RequestParam(required=false) String id) {
+		WorkFiveDirectionsAffirm entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = workFiveDirectionsAffirmService.get(id);
+		}
+		if (entity == null){
+			entity = new WorkFiveDirectionsAffirm();
+		}
+		return entity;
+	}
+	
+	/**
+	 * 工程费用列表页面
+	 */
+	/*@RequiresPermissions("workcontentinvestmentcost:workContentInvestmentCost:list")*/
+	@RequestMapping(value = {"list", ""})
+	public String list(WorkFiveDirectionsAffirm workFiveDirectionsAffirm,String view, HttpServletRequest request, Model model) {
+		String sign = request.getParameter("sign");
+		List<String> signList = new ArrayList();
+		if (StringUtils.isNotBlank(sign)){
+			signList = Arrays.asList(sign.split(","));
+		}
+		List<WorkFiveDirectionsAffirm> list = new ArrayList<>();
+        if(StringUtils.isNotBlank(workFiveDirectionsAffirm.getContentId())){
+            list = workFiveDirectionsAffirmService.findList(workFiveDirectionsAffirm);
+        }
+        model.addAttribute("signList", signList);
+        model.addAttribute("fiveDirectionsAffirmList", list);
+        String viewPath = "modules/workcontent/workFiveDirectionsAffirmList";
+        if("view".equals(view)){
+            viewPath+="View";
+        }
+		List<MainDictDetail> unitList=DictUtils.getMainDictList("unit_type");
+		model.addAttribute("unitList", unitList);
+		List<MainDictDetail> nodeList=DictUtils.getMainDictList("node_type");
+		model.addAttribute("nodeList", nodeList);
+		List<MainDictDetail> costList=DictUtils.getMainDictList("cost_type");
+		model.addAttribute("costList", costList);
+        return viewPath;
+	}
+
+
+	/**
+	 * 查询数据表中的所有数据类型
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping(value = "getTableType", method=RequestMethod.POST)
+	public List<String> getTableType(String contentId){
+		List<String> tableType = workFiveDirectionsAffirmService.getTableType(contentId);
+		return tableType;
+	}
+
+	/**
+	 * 导入Excel数据
+	 */
+	@ResponseBody
+    @RequestMapping(value = "import", method=RequestMethod.POST)
+    public Object importFile(MultipartFile file, RedirectAttributes redirectAttributes) {
+        ResponseEntity<WorkFiveDirectionsAffirm> responseEntity = new ResponseEntity<>();
+		try {
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+            List<WorkFiveDirectionsAffirm> list = ei.getDataList(WorkFiveDirectionsAffirm.class);
+			List<WorkFiveDirectionsAffirm> listAll = new ArrayList<>();
+			for (WorkFiveDirectionsAffirm investmentCost : list) {
+				if(StringUtils.isNotBlank(investmentCost.getOwnerPurchasingRequisitionNum()) && null != investmentCost.getOwnerMaterialCode() && null != investmentCost.getOwnerMaterialDescription() && null != investmentCost.getOwnerUnits()){
+					listAll.add(investmentCost);
+				}
+			}
+            responseEntity.setData(listAll);
+		} catch (Exception e) {
+		    logger.error("导入工程费用失败!",e);
+		    responseEntity.setCode(400);
+		    responseEntity.setMessage("导入工程费用失败!"+e.getMessage());
+		}
+		return responseEntity;
+    }
+	
+	/**
+	 * 下载导入设计概算编制审核调整数据模板
+	 */
+    @RequestMapping(value = "import/template")
+    public String importFileTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		try {
+            String fileName = "设计概算编制审核调整数据导入模板.xlsx";
+    		List<WorkFiveDirectionsAffirm> list = Lists.newArrayList();
+    		new ExportExcel("设计概算编制审核调整数据", WorkFiveDirectionsAffirm.class, 1).setDataList(list).write(response, fileName).dispose();
+    		return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return "redirect:"+Global.getAdminPath()+"/fiveDirectionsAffirm/workFiveDirectionsAffirmList/?repage";
+    }
+	
+}

+ 181 - 0
src/main/resources/mappings/modules/workcontent/WorkConcealProjectDao.xml

@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.workcontent.dao.WorkConcealProjectDao">
+    
+	<sql id="workConcealProjectColumns">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.project_id AS "projectId",
+		a.content_id AS "contentId",
+		a.cost_part AS "costPart",
+		a.work_amount as "workAmount",
+		a.work_conceal_project_serial_num as "workConcealProjectSerialNum",
+		a.type as "type"
+	</sql>
+	
+
+	<select id="get" resultType="com.jeeplus.modules.workcontent.entity.WorkConcealProject" >
+		SELECT 
+			<include refid="workConcealProjectColumns"/>
+		FROM work_conceal_project a
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="com.jeeplus.modules.workcontent.entity.WorkConcealProject" >
+		SELECT 
+			<include refid="workConcealProjectColumns"/>
+		FROM work_conceal_project a
+		<where>
+            <if test="projectId!=null and projectId !=''">
+                AND a.project_id = #{projectId}
+            </if>
+            <if test="contentId!=null and contentId !=''">
+                AND a.content_id = #{contentId}
+            </if>
+			AND a.del_flag = #{DEL_FLAG_NORMAL}
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<select id="findAllList" resultType="com.jeeplus.modules.workcontent.entity.WorkConcealProject" >
+		SELECT 
+			<include refid="workConcealProjectColumns"/>
+		FROM work_conceal_project a
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<insert id="insert">
+		INSERT INTO work_conceal_project(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			project_id,
+			content_id,
+			cost_part,
+			work_amount,
+			work_conceal_project_serial_num,
+			type
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{projectId},
+			#{contentId},
+            #{costPart},
+            #{workAmount},
+            #{workConcealProjectSerialNum},
+            #{type}
+		)
+	</insert>
+
+    <insert id="batchInsert" parameterType="java.util.List">
+		INSERT INTO work_conceal_project(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			project_id,
+			content_id,
+			cost_part,
+			work_amount,
+			work_conceal_project_serial_num,
+			type
+		) VALUES
+		<foreach collection="list" item="item" separator=",">
+            ( #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.remarks},
+            #{item.delFlag},
+            #{item.projectId},
+            #{item.contentId},
+			#{item.costPart},
+			#{item.workAmount},
+			#{item.workConcealProjectSerialNum},
+			#{item.type}
+			)
+        </foreach>
+	</insert>
+	
+	<update id="update">
+		UPDATE work_conceal_project SET
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			del_flag = #{delFlag},
+			project_id = #{projectId},
+			content_id = #{contentId},
+			cost_part = #{costPart},
+			work_amount = #{workAmount},
+			work_conceal_project_serial_num = #{workConcealProjectSerialNum},
+			type = #{type}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM work_conceal_project
+		WHERE id = #{id}
+	</update>
+	
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE work_conceal_project SET
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+
+	<delete id="deleteByContentId">
+		DELETE FROM work_conceal_project
+		WHERE content_id = #{id}
+	</delete>
+	
+	
+	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
+	<select id="findUniqueByProperty" resultType="com.jeeplus.modules.workcontent.entity.WorkConcealProject" statementType="STATEMENT">
+		select * FROM work_conceal_project  where ${propertyName} = '${value}'
+	</select>
+
+	<select id="getTableType" resultType="java.lang.String">
+		select a.type from(
+		select DISTINCT(wcp.type) as type from work_conceal_project wcp where wcp.del_flag = 0 and wcp.content_id = #{contentId}
+		) a
+	</select>
+
+</mapper>

+ 277 - 0
src/main/resources/mappings/modules/workcontent/WorkFiveDirectionsAffirmDao.xml

@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.workcontent.dao.WorkFiveDirectionsAffirmDao">
+    
+	<sql id="workFiveDirectionsAffirmColumns">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.project_id AS "projectId",
+		a.content_id AS "contentId",
+		a.owner_purchasing_requisition_num as "ownerPurchasingRequisitionNum",
+		a.owner_material_code as "ownerMaterialCode",
+		a.owner_material_description as "ownerMaterialDescription",
+		a.owner_units as "ownerUnits",
+		a.owner_tender_num as "ownerTenderNum",
+		a.design_material_name as "designMaterialName",
+		a.design_drawing_amount as "designDrawingAmount",
+		a.design_attrition_rate as "designAttritionRate",
+		a.design_affirm_total as "designAffirmTotal",
+		a.design_remarks as "designRemarks",
+		a.roadwork_drawing_amount as "roadworkDrawingAmount",
+		a.roadwork_attrition_rate as "roadworkAttritionRate",
+		a.roadwork_demand_dosage as "roadworkDemandDosage",
+		a.roadwork_demand_date as "roadworkDemandDate",
+		a.roadwork_remarks as "roadworkRemarks",
+		a.consult_drawing_amount as "consultDrawingAmount",
+		a.consult_attrition_rate as "consultAttritionRate",
+		a.consult_audit_total as "consultAuditTotal",
+		a.consult_remarks as "consultRemarks",
+		a.type as "type"
+	</sql>
+	
+
+	<select id="get" resultType="com.jeeplus.modules.workcontent.entity.WorkFiveDirectionsAffirm" >
+		SELECT 
+			<include refid="workFiveDirectionsAffirmColumns"/>
+		FROM work_five_directions_affirm a
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="com.jeeplus.modules.workcontent.entity.WorkFiveDirectionsAffirm" >
+		SELECT 
+			<include refid="workFiveDirectionsAffirmColumns"/>
+		FROM work_five_directions_affirm a
+		<where>
+            <if test="projectId!=null and projectId !=''">
+                AND a.project_id = #{projectId}
+            </if>
+            <if test="contentId!=null and contentId !=''">
+                AND a.content_id = #{contentId}
+            </if>
+			AND a.del_flag = #{DEL_FLAG_NORMAL}
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<select id="findAllList" resultType="com.jeeplus.modules.workcontent.entity.WorkFiveDirectionsAffirm" >
+		SELECT 
+			<include refid="workFiveDirectionsAffirmColumns"/>
+		FROM work_five_directions_affirm a
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<insert id="insert">
+		INSERT INTO work_five_directions_affirm(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			project_id,
+			content_id,
+			owner_purchasing_requisition_num,
+			owner_material_code,
+			owner_material_description,
+			owner_units,
+			owner_tender_num,
+			design_material_name,
+			design_drawing_amount,
+			design_attrition_rate,
+			design_affirm_total,
+			design_remarks,
+			roadwork_drawing_amount,
+			roadwork_attrition_rate,
+			roadwork_demand_dosage,
+			roadwork_demand_date,
+			roadwork_remarks,
+			consult_drawing_amount,
+			consult_attrition_rate,
+			consult_audit_total,
+			consult_remarks,
+			type
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{projectId},
+			#{contentId},
+            #{ownerPurchasingRequisitionNum},
+            #{ownerMaterialCode},
+            #{ownerMaterialDescription},
+            #{ownerUnits},
+            #{ownerTenderNum},
+            #{designMaterialName},
+            #{designDrawingAmount},
+            #{designAttritionRate},
+            #{designAffirmTotal},
+            #{designRemarks},
+            #{roadworkDrawingAmount},
+            #{roadworkAttritionRate},
+            #{roadworkDemandDosage},
+            #{roadworkDemandDate},
+            #{roadworkRemarks},
+            #{consultDrawingAmount},
+            #{consultAttritionRate},
+            #{consultAuditTotal},
+            #{consultRemarks},
+            #{type}
+		)
+	</insert>
+
+    <insert id="batchInsert" parameterType="java.util.List">
+		INSERT INTO work_five_directions_affirm(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			project_id,
+			content_id,
+			owner_purchasing_requisition_num,
+			owner_material_code,
+			owner_material_description,
+			owner_units,
+			owner_tender_num,
+			design_material_name,
+			design_drawing_amount,
+			design_attrition_rate,
+			design_affirm_total,
+			design_remarks,
+			roadwork_drawing_amount,
+			roadwork_attrition_rate,
+			roadwork_demand_dosage,
+			roadwork_demand_date,
+			roadwork_remarks,
+			consult_drawing_amount,
+			consult_attrition_rate,
+			consult_audit_total,
+			consult_remarks,
+			type
+		) VALUES
+		<foreach collection="list" item="item" separator=",">
+            ( #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.remarks},
+            #{item.delFlag},
+            #{item.projectId},
+            #{item.contentId},
+			#{item.ownerPurchasingRequisitionNum},
+			#{item.ownerMaterialCode},
+			#{item.ownerMaterialDescription},
+			#{item.ownerUnits},
+			#{item.ownerTenderNum},
+			#{item.designMaterialName},
+			#{item.designDrawingAmount},
+			#{item.designAttritionRate},
+			#{item.designAffirmTotal},
+			#{item.designRemarks},
+			#{item.roadworkDrawingAmount},
+			#{item.roadworkAttritionRate},
+			#{item.roadworkDemandDosage},
+			#{item.roadworkDemandDate},
+			#{item.roadworkRemarks},
+			#{item.consultDrawingAmount},
+			#{item.consultAttritionRate},
+			#{item.consultAuditTotal},
+			#{item.consultRemarks},
+			#{item.type}
+			)
+        </foreach>
+	</insert>
+	
+	<update id="update">
+		UPDATE work_five_directions_affirm SET
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			del_flag = #{delFlag},
+			project_id = #{projectId},
+			content_id = #{contentId},
+			owner_purchasing_requisition_num = #{ownerPurchasingRequisitionNum},
+			owner_material_code = #{ownerMaterialCode},
+			owner_material_description = #{ownerMaterialDescription},
+			owner_units = #{ownerUnits},
+			owner_tender_num = #{ownerTenderNum},
+			design_material_name = #{designMaterialName},
+			design_drawing_amount = #{designDrawingAmount},
+			design_attrition_rate = #{designAttritionRate},
+			design_affirm_total = #{designAffirmTotal},
+			design_remarks = #{designRemarks},
+			roadwork_drawing_amount = #{roadworkDrawingAmount},
+			roadwork_attrition_rate = #{roadworkAttritionRate},
+			roadwork_demand_dosage = #{roadworkDemandDosage},
+			roadwork_demand_date = #{roadworkDemandDate},
+			roadwork_remarks = #{roadworkRemarks},
+			consult_drawing_amount = #{consultDrawingAmount},
+			consult_attrition_rate = #{consultAttritionRate},
+			consult_audit_total = #{consultAuditTotal},
+			consult_remarks = #{consultRemarks},
+			type = #{type}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM work_five_directions_affirm
+		WHERE id = #{id}
+	</update>
+	
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE work_five_directions_affirm SET
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+
+	<delete id="deleteByContentId">
+		DELETE FROM work_five_directions_affirm
+		WHERE content_id = #{id}
+	</delete>
+	
+	
+	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
+	<select id="findUniqueByProperty" resultType="com.jeeplus.modules.workcontent.entity.WorkFiveDirectionsAffirm" statementType="STATEMENT">
+		select * FROM work_five_directions_affirm  where ${propertyName} = '${value}'
+	</select>
+
+	<select id="getTableType" resultType="java.lang.String">
+		select a.type from(
+		select DISTINCT(wpde.type) as type from work_five_directions_affirm wpde where wpde.del_flag = 0 and wpde.content_id = #{contentId}
+		) a
+	</select>
+
+</mapper>

+ 39 - 11
src/main/webapp/webpage/modules/projectcontentinfo/workContentForm.jsp

@@ -42,26 +42,26 @@
             return false;
         }
 
-        function beforeSubmit() {
+        /*function beforeSubmit() {
             if(detailFlag==1){
                 $("#contentDeta").val(encodeURIComponent(genDetailStr()));
             }
             $(document.getElementById("projectContentDataType")).removeAttr("disabled");
-        }
+        }*/
 
-        /*function beforeSubmit() {
+        function beforeSubmit() {
             var contentDetaStr = '';
             if(null !=encodeURIComponent(genDetailStr()) && '' != encodeURIComponent(genDetailStr())){
                 contentDetaStr += encodeURIComponent(genDetailStr());
             }
-            if(null !=encodeURIComponent(genDetailResultStr()) && '' != encodeURIComponent(genDetailResultStr())){
-                contentDetaStr += encodeURIComponent(genDetailResultStr());
+            if(null !=encodeURIComponent(genSecondDetailStr()) && '' != encodeURIComponent(genSecondDetailStr())){
+                contentDetaStr += encodeURIComponent(genSecondDetailStr());
             }
             if(detailFlag==1){
                 $("#contentDeta").val(contentDetaStr);
             }
             $(document.getElementById("projectContentDataType")).removeAttr("disabled");
-        }*/
+        }
 
         $(function() {
             var editVal = '${projectcontentinfo.edit}';
@@ -187,8 +187,10 @@
             var param2 = {'contentId':"${projectcontentinfo.projectContentData.id}",'projectId':"${projectcontentinfo.project.id}"};
             detailFlag=1;
             switch (val){
-                case '13':
                 case '22':
+                    $("#contentDetail").load("${ctx}/workPreliminary/workPreliminaryDesignEstimate/list",param2);
+                    break;
+                case '13':
                 case '25':
                     $("#contentDetail").load("${ctx}/workcontentinvestmentcost/workContentInvestmentCost/list",param2);
                     break;
@@ -234,6 +236,12 @@
                 case '400':
                     $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
                     break;
+                case '410':
+                    $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/list",param2);
+                    break;
+                case '411':
+                    $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/list",param2);
+                    break;
                 default:
                     detailFlag=0;
                     $("#contentDetail").html("");
@@ -908,8 +916,8 @@
                                 },
                                 success: function (tableTypeList) {
                                     var dataList = data.body.list;
+                                    var holdDataList = data.body.list;
                                     var showList = [];
-                                    var showTypeList = [];
                                     if (0 != dataList.length && 0 !=tableTypeList.length){
                                         for (i in dataList) {
                                             for (j in tableTypeList) {
@@ -920,13 +928,16 @@
                                                         "selected": true
                                                     }
                                                     showList.push(newData);
-                                                    showTypeList.push(dataList[i].value);
-                                                } else {
+                                                    holdDataList.splice(i,1);
+                                                }/* else {
                                                     showList.push(dataList[i]);
-                                                }
+                                                }*/
                                                 modifyGetDetailsNum(tableTypeList);
                                             }
                                         }
+                                        for (i in holdDataList){
+                                            showList.push(holdDataList[i]);
+                                        }
                                         xmSelect.render({
                                             el: '#contentDetailType',
                                             language: 'zn',
@@ -1006,6 +1017,10 @@
                 return "${ctx}/workcontent/workContentDocument/form";
             case '400':
                 return "${ctx}/workcontent/workContentContractSum/form";
+            case '410':
+                return "${ctx}/workConcealProject/workConcealProject/getTableType";
+            case '411':
+                return "${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/getTableType";
             default:
                 return "";
         }
@@ -1074,6 +1089,12 @@
             case '400':
                 $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
                 break;
+            case '410':
+                $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/list",param2);
+                break;
+            case '411':
+                $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/list",param2);
+                break;
             default:
                 detailFlag=0;
                 $("#contentDetail").html("");
@@ -1083,6 +1104,7 @@
     }
 
     function modifyGetDetailsNum(list){
+        $("#contentDetailType").empty();
         console.log(list);
         var val = $("#projectContentDataSign").val();
         var param2 = {'contentId':"${projectcontentinfo.projectContentData.id}",'projectId':"${projectcontentinfo.project.id}",'sign':list.toString(),'achievementParentId':val};
@@ -1137,6 +1159,12 @@
             case '400':
                 $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
                 break;
+            case '410':
+                $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/list",param2);
+                break;
+            case '411':
+                $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/list",param2);
+                break;
             default:
                 detailFlag=0;
                 $("#contentDetail").html("");

+ 29 - 3
src/main/webapp/webpage/modules/projectcontentinfo/workContentView.jsp

@@ -203,6 +203,12 @@
                 case '400':
                     $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
                     break;
+                case '410':
+                    $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/list",param2);
+                    break;
+                case '411':
+                    $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/list",param2);
+                    break;
                 default:
                     detailFlag=0;
                     $("#contentDetail").html("");
@@ -809,6 +815,7 @@
                                 },
                                 success: function (tableTypeList) {
                                     var dataList = data.body.list;
+                                    var holdDataList = data.body.list;
                                     var showList = [];
                                     var showTypeList = [];
                                     if (0 != dataList.length && 0 !=tableTypeList.length){
@@ -821,13 +828,16 @@
                                                         "selected": true
                                                     }
                                                     showList.push(newData);
-                                                    showTypeList.push(dataList[i].value);
-                                                } else {
+                                                    holdDataList.splice(i,1);
+                                                } /*else {
                                                     showList.push(dataList[i]);
-                                                }
+                                                }*/
                                                 modifyGetDetailsNum(tableTypeList);
                                             }
                                         }
+                                        for (i in holdDataList){
+                                            showList.push(holdDataList[i]);
+                                        }
                                         xmSelect.render({
                                             el: '#contentDetailType',
                                             language: 'zn',
@@ -907,6 +917,10 @@
                 return "${ctx}/workcontent/workContentDocument/form";
             case '400':
                 return "${ctx}/workcontent/workContentContractSum/form";
+            case '410':
+                return "${ctx}/workConcealProject/workConcealProject/getTableType";
+            case '411':
+                return "${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/getTableType";
             default:
                 return "";
         }
@@ -975,6 +989,12 @@
             case '400':
                 $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
                 break;
+            case '410':
+                $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/list",param2);
+                break;
+            case '411':
+                $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/list",param2);
+                break;
             default:
                 detailFlag=0;
                 $("#contentDetail").html("");
@@ -1038,6 +1058,12 @@
             case '400':
                 $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
                 break;
+            case '410':
+                $("#contentDetail").load("${ctx}/workConcealProject/workConcealProject/list",param2);
+                break;
+            case '411':
+                $("#contentDetail").load("${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/list",param2);
+                break;
             default:
                 detailFlag=0;
                 $("#contentDetail").html("");

+ 305 - 0
src/main/webapp/webpage/modules/workcontent/workConcealProjectList.jsp

@@ -0,0 +1,305 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <c:forEach items="${signList}" var="sign">
+        <c:if test="${sign =='workConcealProject'}">
+            <div class="layui-item nav-btns" style="padding-left:0px;">
+                <a class="nav-btn nav-btn-add" onclick="addRowCost('#workConcealProject',preliminaryIdx,preliminaryTpl)" title="新增"><i class="fa fa-plus"></i> 新增</a>
+                <%--<table:importExcelCost url="${ctx}/workConcealProject/workConcealProject/import"></table:importExcelCost>--%><!-- 导入按钮 -->
+            </div>
+
+            <table id="contentTable" class="table table-bordered table-condensed can-edit">
+                <thead>
+                    <tr>
+                        <th colspan="6" style="font-size: 20px">屏蔽工程量确认单</th>
+                    </tr>
+                    <tr>
+                        <th>序号</th>
+                        <th>工程部位</th>
+                        <th>工程量</th>
+                        <th>隐蔽工程验收记录编号</th>
+                        <th>备注</th>
+                        <th width="60">操作</th>
+                    </tr>
+                </thead>
+                <tbody id="workConcealProject">
+                </tbody>
+            </table>
+        </c:if>
+        <c:if test="${sign =='workSiteLevel'}">
+            <div class="layui-item nav-btns" style="padding-left:0px;">
+                <a class="nav-btn nav-btn-add" onclick="addWorkSiteLevelRowCost('#workSiteLevel',workSiteLevelIdx,workSiteLevelTpl)" title="新增"><i class="fa fa-plus"></i> 新增</a>
+                <%--<table:importExcelCost url="${ctx}/workConcealProject/workConcealProject/import"></table:importExcelCost>--%> <!-- 导入按钮 -->
+            </div>
+
+            <table id="contentTable" class="table table-bordered table-condensed can-edit">
+                <thead>
+                <tr>
+                    <th colspan="6" style="font-size: 20px">场平工程量确认单</th>
+                </tr>
+                <tr>
+                    <th>序号</th>
+                    <th>工程部位</th>
+                    <th>申报工程量</th>
+                    <th>审定工程量</th>
+                    <th>备注</th>
+                    <th width="60">操作</th>
+                </tr>
+                </thead>
+                <tbody id="workSiteLevel">
+                </tbody>
+            </table>
+        </c:if>
+    </c:forEach>
+    <script type="text/template" id="workSiteLevelTpl">
+            //<!--
+        <tr id="workSiteLevel{{idx}}">
+            <td class="hide">
+                <input id="workSiteLevel{{idx}}_id" subName="id" class="contentDetail" type="hidden" value="{{row.id}}"/>
+                <input id="workSiteLevel{{idx}}_delFlag" subName="delFlag" class="contentDetail" type="hidden" value="0"/>
+                <input id="workSiteLevel{{idx}}_type" subName="type" class="contentDetail"  type="hidden" value="workSiteLevel"/>
+            </td>
+            <td>
+                <input id="workSiteLevel{{idx}}_costNum" subName="costNum" readonly="readonly" style="text-align: center"  value="{{idx}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="workSiteLevel{{idx}}_costPart" subName="costPart" value="{{row.costPart}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="workSiteLevel{{idx}}_workAmount" subName="workAmount" type="text" value="{{row.workAmount}}"  class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="workSiteLevel{{idx}}_workConcealProjectSerialNum" subName="workConcealProjectSerialNum" type="text" value="{{row.workConcealProjectSerialNum}}" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="workSiteLevel{{idx}}_remarks" subName="remarks" type="text"  value="{{row.remarks}}" class="form-control  contentDetail"/>
+            </td>
+            <td class="text-center op-td">
+                        <a href="#" onclick="delWorkSiteLevelRow(this, '#workSiteLevel{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+            </td>
+        </tr>//-->
+    </script>
+    <script type="text/javascript">
+        var workSiteLevelIdx = 0, workSiteLevelTpl = $("#workSiteLevelTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+        var validateForm2;
+        $(function(){
+            validateForm2 = $("#subForm").validate({
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+            var data = ${fns:toJson(workConcealProject)};
+            for (var i=0; i<data.length; i++){
+                if(data[i].type == 'workSiteLevel') {
+                    addWorkSiteLevelRowCost('#workSiteLevel', workSiteLevelIdx, workSiteLevelTpl, data[i]);
+                    $("#workSiteLevel" + i + "_nodeTypes").val(data[i].nodeTypes);
+                    $("#workSiteLevel" + i + "_expenseType").val(data[i].expenseType);
+                    $("#workSiteLevel" + i + "_unit").val(data[i].unit);
+                }
+            }
+            $(":input.money").change();
+        })
+
+        function addWorkSiteLevelRowCost(list, idx, tpl, row){
+            idx = idx+1;
+            bornTempleteWorkSiteLevel(list, idx, tpl, row, idx);
+            workSiteLevelIdx +=1;
+        }
+        function bornTempleteWorkSiteLevel(list, idx, tpl, row, idx1){
+            var idx1 = $("#workSiteLevel tr").length +1;
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1, idx1:idx1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+        function delWorkSiteLevelRow(obj, prefix,idx){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            if(id.val()==null||id.val()==''){
+                $(obj).parent().parent().remove();
+            }else {
+                delFlag.val("1");
+                $(obj).parent().parent().hide();
+            }
+        }
+
+        function genWorkSiteLevelRow(data) {
+            for (var i = 0; i < data.length; i++) {
+                addWorkSiteLevelRowCost('#workSiteLevel',workSiteLevelIdx,workSiteLevelTpl,data[i]);
+            }
+            $(":input.money").change();
+        }
+
+        function genSecondDetailStr(){
+            var costList = $("#workSiteLevel tr");
+            var contentStr = "[";
+            for(var j=0; j<costList.length;j++){
+                contentStr+="{"
+                var idstr = $(costList[j]).attr("id");
+                var detail = $("tr[id="+idstr+"] .contentDetail");
+                for(var i=0; i<detail.length;i++){
+                    contentStr+="'"
+                    contentStr+=$(detail[i]).attr("subName");
+                    contentStr+="'"
+                    contentStr+=":";
+                    contentStr+="'"
+                    contentStr+=$(detail[i]).val();
+                    contentStr+="'"
+                    if(i!=detail.length-1){
+                        contentStr+=","
+                    }
+                }
+                contentStr+="}"
+                if(j!=costList.length-1){
+                    contentStr+=","
+                }
+            }
+            contentStr += "]";
+            return contentStr;
+        }
+    </script>
+	<script type="text/template" id="preliminaryTpl">//<!--
+        <tr id="workConcealProject{{idx}}">
+            <td class="hide">
+                <input id="workConcealProject{{idx}}_id" subName="id" class="contentDetail" type="hidden" value="{{row.id}}"/>
+                <input id="workConcealProject{{idx}}_delFlag" subName="delFlag" class="contentDetail" type="hidden" value="0"/>
+                <input id="workConcealProject{{idx}}_type" subName="type" class="contentDetail"  type="hidden" value="workConcealProject"/>
+            </td>
+            <td>
+                <input id="workConcealProject{{idx}}_costNum" subName="costNum" readonly="readonly" style="text-align: center"  value="{{idx}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="workConcealProject{{idx}}_costPart" subName="costPart" value="{{row.costPart}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="workConcealProject{{idx}}_workAmount" subName="workAmount" type="text" value="{{row.workAmount}}"  class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="workConcealProject{{idx}}_workConcealProjectSerialNum" subName="workConcealProjectSerialNum" type="text" value="{{row.workConcealProjectSerialNum}}" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="workConcealProject{{idx}}_remarks" subName="remarks" type="text"  value="{{row.remarks}}" class="form-control  contentDetail"/>
+            </td>
+            <td class="text-center op-td">
+                        <a href="#" onclick="delRow(this, '#workConcealProject{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+            </td>
+        </tr>//-->
+    </script>
+
+    <script type="text/javascript">
+        var preliminaryIdx = 0, preliminaryTpl = $("#preliminaryTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+        var validateForm2;
+        $(function(){
+            validateForm2 = $("#subForm").validate({
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+            var data = ${fns:toJson(workConcealProject)};
+            for (var i=0; i<data.length; i++){
+                if(data[i].type == 'workConcealProject') {
+                    addRowCost('#workConcealProject', preliminaryIdx, preliminaryTpl, data[i]);
+                    $("#workConcealProject" + i + "_nodeTypes").val(data[i].nodeTypes);
+                    $("#workConcealProject" + i + "_expenseType").val(data[i].expenseType);
+                    $("#workConcealProject" + i + "_unit").val(data[i].unit);
+                }
+            }
+            $(":input.money").change();
+        })
+
+        function addRowCost(list, idx, tpl, row){
+            idx = idx+1;
+            bornTemplete(list, idx, tpl, row, idx);
+            preliminaryIdx +=1;
+        }
+
+        function bornTemplete(list, idx, tpl, row, idx1){
+            var idx1 = $("#workConcealProject tr").length +1;
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1, idx1:idx1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+        function delRow(obj, prefix,idx){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            if(id.val()==null||id.val()==''){
+                $(obj).parent().parent().remove();
+            }else {
+                delFlag.val("1");
+                $(obj).parent().parent().hide();
+            }
+        }
+
+        function genRow(data) {
+            for (var i = 0; i < data.length; i++) {
+                addRowCost('#workConcealProject',preliminaryIdx,preliminaryTpl,data[i]);
+            }
+            $(":input.money").change();
+        }
+
+        function genDetailStr(){
+            var costList = $("#workConcealProject tr");
+            var contentStr = "[";
+            for(var j=0; j<costList.length;j++){
+                contentStr+="{"
+                var idstr = $(costList[j]).attr("id");
+                var detail = $("tr[id="+idstr+"] .contentDetail");
+                for(var i=0; i<detail.length;i++){
+                    contentStr+="'"
+                    contentStr+=$(detail[i]).attr("subName");
+                    contentStr+="'"
+                    contentStr+=":";
+                    contentStr+="'"
+                    contentStr+=$(detail[i]).val();
+                    contentStr+="'"
+                    if(i!=detail.length-1){
+                        contentStr+=","
+                    }
+                }
+                contentStr+="}"
+                if(j!=costList.length-1){
+                    contentStr+=","
+                }
+            }
+            contentStr += "]";
+            return contentStr;
+        }
+    </script>
+</form>

+ 87 - 0
src/main/webapp/webpage/modules/workcontent/workConcealProjectListView.jsp

@@ -0,0 +1,87 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <c:forEach items="${signList}" var="sign">
+        <c:if test="${sign =='workConcealProject'}">
+            <table id="contentTable" class="table table-bordered table-condensed">
+                <thead>
+                <tr>
+                    <th colspan="5" style="font-size: 20px">屏蔽工程量确认单</th>
+                </tr>
+                <tr>
+                    <th>序号</th>
+                    <th>工程部位</th>
+                    <th>工程量</th>
+                    <th>隐蔽工程验收记录编号</th>
+                    <th>备注</th>
+                </tr>
+                </thead>
+                <tbody id="workConcealProject">
+                <c:forEach items="${workConcealProject}" var="row" varStatus="status">
+                    <c:if test="${row.type =='workConcealProject'}">
+                        <tr>
+                            <td style='text-align:center;'>
+                                    ${status.index+1}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${row.costPart}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${row.workAmount}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${row.workConcealProjectSerialNum}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${row.remarks}
+                            </td>
+                        </tr>
+                    </c:if>
+                </c:forEach>
+                </tbody>
+            </table>
+        </c:if>
+    </c:forEach>
+
+    <c:forEach items="${signList}" var="sign">
+        <c:if test="${sign =='workSiteLevel'}">
+            <table id="contentTable" class="table table-bordered table-condensed">
+                <thead>
+                <tr>
+                    <th colspan="5" style="font-size: 20px">屏蔽工程量确认单</th>
+                </tr>
+                <tr>
+                    <th>序号</th>
+                    <th>工程部位</th>
+                    <th>申报工程量</th>
+                    <th>审定工程量</th>
+                    <th>备注</th>
+                </tr>
+                </thead>
+                <tbody id="workSiteLevel">
+                <c:forEach items="${workConcealProject}" var="row" varStatus="status">
+                    <c:if test="${row.type =='workSiteLevel'}">
+                        <tr>
+                            <td style='text-align:center;'>
+                                    ${status.index+1}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${row.costPart}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${row.workAmount}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${row.workConcealProjectSerialNum}
+                            </td>
+                            <td style='text-align:center;'>
+                                    ${row.remarks}
+                            </td>
+                        </tr>
+                    </c:if>
+                </c:forEach>
+                </tbody>
+            </table>
+        </c:if>
+    </c:forEach>
+</form>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentAltermanage.jsp

@@ -128,4 +128,7 @@
         var stringify = JSON.stringify($("#subForm").serializeJson());
         return stringify;
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentBiddingplan.jsp

@@ -62,4 +62,7 @@
     function genDetailStr(){
         return JSON.stringify($("#subForm").serializeJson());
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentBudgetList.jsp

@@ -179,5 +179,8 @@
                     contentStr += "]";
                     return contentStr;
                 }
+                function genSecondDetailStr(){
+                    return '';
+                }
             </script>
 </form>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentClaimForm.jsp

@@ -134,4 +134,7 @@
     function genDetailStr(){
         return JSON.stringify($("#subForm").serializeJson());
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentContprogram.jsp

@@ -93,4 +93,7 @@
         function genDetailStr(){
             return JSON.stringify($("#subForm").serializeJson());
         }
+        function genSecondDetailStr(){
+            return '';
+        }
     </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentContractSumFormView.jsp

@@ -329,4 +329,7 @@
         contentStr += "]";
         return contentStr;
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentContractinfoForm.jsp

@@ -343,4 +343,7 @@
         contentStr += "]";
         return contentStr;
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentCtrlpriceList.jsp

@@ -252,5 +252,8 @@
                 contentStr += "]";
                 return contentStr;
             }
+			function genSecondDetailStr(){
+				return '';
+			}
         </script>
 </form>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentDocument.jsp

@@ -72,4 +72,7 @@
     function genDetailStr(){
         return JSON.stringify($("#subForm").serializeJson());
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentFundplan.jsp

@@ -46,4 +46,7 @@
     function genDetailStr(){
         return JSON.stringify($("#subForm").serializeJson());
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentInvestmentCostList.jsp

@@ -314,5 +314,8 @@
                 contentStr += "]";
                 return contentStr;
             }
+            function genSecondDetailStr(){
+                return '';
+            }
         </script>
 </form>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentPriceadjustForm.jsp

@@ -105,4 +105,7 @@
         var stringify = JSON.stringify($("#subForm").serializeJson());
         return stringify;
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentPricemanageForm.jsp

@@ -125,4 +125,7 @@
         var stringify = JSON.stringify($("#subForm").serializeJson());
         return stringify;
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentProjectpriceForm.jsp

@@ -147,4 +147,7 @@
         var stringify = JSON.stringify($("#subForm").serializeJson());
         return stringify;
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 3 - 0
src/main/webapp/webpage/modules/workcontent/workContentVisamanage.jsp

@@ -122,4 +122,7 @@
         var stringify = JSON.stringify($("#subForm").serializeJson());
         return stringify;
     }
+    function genSecondDetailStr(){
+        return '';
+    }
 </script>

+ 239 - 0
src/main/webapp/webpage/modules/workcontent/workFiveDirectionsAffirmList.jsp

@@ -0,0 +1,239 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <c:forEach items="${signList}" var="sign">
+        <c:if test="${sign =='fiveDirectionsAffirm'}">
+            <div class="layui-item nav-btns" style="padding-left:0px;">
+                <a class="nav-btn nav-btn-add" onclick="addRowCost('#fiveDirectionsAffirmList',preliminaryIdx,preliminaryTpl)" title="新增"><i class="fa fa-plus"></i> 新增</a>
+                <table:importExcelCost url="${ctx}/fiveDirectionsAffirm/workFiveDirectionsAffirm/import"></table:importExcelCost><!-- 导入按钮 -->
+            </div>
+
+            <table id="contentTable" class="table table-bordered table-condensed can-edit">
+                <thead>
+                    <tr>
+                        <th colspan="21" style="font-size: 20px">输变电工程甲供物资五方确认表</th>
+                    </tr>
+                    <tr>
+                        <th rowspan="2" class="hide"></th>
+                        <th rowspan="2" >序号</th>
+                        <th colspan="5" >一、业主项目部填写栏</th>
+                        <th colspan="5" >二、设计单位确认栏</th>
+                        <th colspan="5" >三、施工单位申报需求栏</th>
+                        <th colspan="4" >四、咨询单位审核</th>
+                        <th width="60" rowspan="3">操作</th>
+                    </tr>
+                    <tr>
+                        <th>采购申请号</th>
+                        <th>物料编码</th>
+                        <th>物料描述</th>
+                        <th>单位</th>
+                        <th>招标量</th>
+
+                        <th>施工图物料名称及规格型号</th>
+                        <th>图纸净量</th>
+                        <th>损耗率</th>
+                        <th>确认合计量</th>
+                        <th>备注</th>
+
+                        <th>图纸净量</th>
+                        <th>损耗率</th>
+                        <th>需求用量</th>
+                        <th>需求日期</th>
+                        <th>备注</th>
+
+                        <th>图纸净量</th>
+                        <th>损耗率</th>
+                        <th>审核合计量</th>
+                        <th>备注</th>
+                    </tr>
+                </thead>
+                <tbody id="fiveDirectionsAffirmList">
+                </tbody>
+            </table>
+        </c:if>
+    </c:forEach>
+	<script type="text/template" id="preliminaryTpl">//<!--
+        <tr id="fiveDirectionsAffirmList{{idx}}">
+            <td class="hide">
+                <input id="fiveDirectionsAffirmList{{idx}}_id" subName="id" class="contentDetail" type="hidden" value="{{row.id}}"/>
+                <input id="fiveDirectionsAffirmList{{idx}}_delFlag" subName="delFlag" class="contentDetail" type="hidden" value="0"/>
+                <input id="fiveDirectionsAffirmList{{idx}}_costType" subName="costType" class="contentDetail"  type="hidden" value="{{row.costType}}"/>
+                <input id="fiveDirectionsAffirmList{{idx}}_type" subName="type" class="contentDetail"  type="hidden" value="fiveDirectionsAffirm"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_costNum" subName="costNum" readonly="readonly" style="text-align: center"  value="{{idx}}" type="text" class="form-control contentDetail"/>
+            </td>
+
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_ownerPurchasingRequisitionNum" subName="ownerPurchasingRequisitionNum" value="{{row.ownerPurchasingRequisitionNum}}" type="text" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_ownerMaterialCode" subName="ownerMaterialCode" type="text" value="{{row.ownerMaterialCode}}"  class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_ownerMaterialDescription" subName="ownerMaterialDescription" type="text" value="{{row.ownerMaterialDescription}}"  class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_ownerUnits" subName="ownerUnits" type="text" value="{{row.ownerUnits}}" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_ownerTenderNum" subName="ownerTenderNum" type="text"  value="{{row.ownerTenderNum}}" class="form-control contentDetail"/>
+            </td>
+
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_designMaterialName" subName="designMaterialName" type="text"    value="{{row.designMaterialName}}" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_designDrawingAmount" subName="designDrawingAmount" type="text"  value="{{row.designDrawingAmount}}" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_designAttritionRate" subName="designAttritionRate" type="text"  value="{{row.designAttritionRate}}" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_designAffirmTotal" subName="designAffirmTotal" type="text"  value="{{row.designAffirmTotal}}" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_designRemarks" subName="designRemarks" type="text"  value="{{row.designRemarks}}" class="form-control contentDetail"/>
+            </td>
+
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_roadworkDrawingAmount" subName="roadworkDrawingAmount" type="text"  value="{{row.roadworkDrawingAmount}}" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_roadworkAttritionRate" subName="roadworkAttritionRate" type="text"  value="{{row.roadworkAttritionRate}}" class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_roadworkDemandDosage" subName="roadworkDemandDosage" type="text"  value="{{row.roadworkDemandDosage}}" class="form-control  contentDetail"/>
+            </td>
+            <td>
+                <input lay-verify="date" placeholder="yyyy-MM-dd" id="fiveDirectionsAffirmList{{idx}}_roadworkDemandDate" subName="roadworkDemandDate" type="text" value="{{row.roadworkDemandDate}}"  class="form-control contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_roadworkRemarks" subName="roadworkRemarks" type="text"  value="{{row.roadworkRemarks}}" class="form-control  contentDetail"/>
+            </td>
+
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_consultDrawingAmount" subName="consultDrawingAmount" type="text"  value="{{row.consultDrawingAmount}}" class="form-control  contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_consultAttritionRate" subName="consultAttritionRate" type="text"  value="{{row.consultAttritionRate}}" class="form-control  contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_consultAuditTotal" subName="consultAuditTotal" type="text"  value="{{row.consultAuditTotal}}" class="form-control  contentDetail"/>
+            </td>
+            <td>
+                <input id="fiveDirectionsAffirmList{{idx}}_consultRemarks" subName="consultRemarks" type="text"  value="{{row.consultRemarks}}" class="form-control  contentDetail"/>
+            </td>
+
+            <td class="text-center op-td">
+                        <a href="#" onclick="delRow(this, '#fiveDirectionsAffirmList{{idx}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+            </td>
+        </tr>//-->
+    </script>
+    <script type="text/javascript">
+        var preliminaryIdx = 0, preliminaryTpl = $("#preliminaryTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+        var validateForm2;
+        $(function(){
+            validateForm2 = $("#subForm").validate({
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+            var data = ${fns:toJson(fiveDirectionsAffirmList)};
+            for (var i=0; i<data.length; i++){
+                addRowCost('#fiveDirectionsAffirmList', preliminaryIdx, preliminaryTpl,data[i]);
+                $("#fiveDirectionsAffirmList"+i+"_nodeTypes").val(data[i].nodeTypes);
+                $("#fiveDirectionsAffirmList"+i+"_expenseType").val(data[i].expenseType);
+                $("#fiveDirectionsAffirmList"+i+"_unit").val(data[i].unit);
+            }
+            $(":input.money").change();
+        })
+
+        function addRowCost(list, idx, tpl, row){
+            idx = idx+1;
+            bornTemplete(list, idx, tpl, row, idx);
+            preliminaryIdx +=1;
+
+            laydate.render({
+                elem : (list+idx+"_roadworkDemandDate"),
+                event: 'focus',
+                type : 'date',
+                trigger: 'click'
+            });
+        }
+
+        function bornTemplete(list, idx, tpl, row, idx1){
+            var idx1 = $("#fiveDirectionsAffirmList tr").length +1;
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1, idx1:idx1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+        function delRow(obj, prefix,idx){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            if(id.val()==null||id.val()==''){
+                $(obj).parent().parent().remove();
+            }else {
+                delFlag.val("1");
+                $(obj).parent().parent().hide();
+            }
+        }
+
+        function genRow(data) {
+            for (var i = 0; i < data.length; i++) {
+                addRowCost('#fiveDirectionsAffirmList',preliminaryIdx,preliminaryTpl,data[i]);
+            }
+            $(":input.money").change();
+        }
+
+        function genDetailStr(){
+            var costList = $("#fiveDirectionsAffirmList tr");
+            var contentStr = "[";
+            for(var j=0; j<costList.length;j++){
+                contentStr+="{"
+                var idstr = $(costList[j]).attr("id");
+                var detail = $("tr[id="+idstr+"] .contentDetail");
+                for(var i=0; i<detail.length;i++){
+                    contentStr+="'"
+                    contentStr+=$(detail[i]).attr("subName");
+                    contentStr+="'"
+                    contentStr+=":";
+                    contentStr+="'"
+                    contentStr+=$(detail[i]).val();
+                    contentStr+="'"
+                    if(i!=detail.length-1){
+                        contentStr+=","
+                    }
+                }
+                contentStr+="}"
+                if(j!=costList.length-1){
+                    contentStr+=","
+                }
+            }
+            contentStr += "]";
+            return contentStr;
+        }
+        function genSecondDetailStr(){
+            return '';
+        }
+    </script>
+</form>

+ 118 - 0
src/main/webapp/webpage/modules/workcontent/workFiveDirectionsAffirmListView.jsp

@@ -0,0 +1,118 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form id="subForm"  action="#" onsubmit="return false;" method="post" class="form-horizontal">
+    <c:forEach items="${signList}" var="sign">
+        <c:if test="${sign =='fiveDirectionsAffirm'}">
+            <table id="contentTable" class="table table-bordered table-condensed">
+                <thead>
+                <tr>
+                    <th colspan="20" style="font-size: 20px">输变电工程甲供物资五方确认表</th>
+                </tr>
+                <tr>
+                    <th rowspan="2" class="hide"></th>
+                    <th rowspan="2" >序号</th>
+                    <th colspan="5" >一、业主项目部填写栏</th>
+                    <th colspan="5" >二、设计单位确认栏</th>
+                    <th colspan="5" >三、施工单位申报需求栏</th>
+                    <th colspan="5" >四、咨询单位审核</th>
+                </tr>
+                <tr>
+                    <th>采购申请号</th>
+                    <th>物料编码</th>
+                    <th>物料描述</th>
+                    <th>单位</th>
+                    <th>招标量</th>
+
+                    <th>施工图物料名称及规格型号</th>
+                    <th>图纸净量</th>
+                    <th>损耗率</th>
+                    <th>确认合计量</th>
+                    <th>备注</th>
+
+                    <th>图纸净量</th>
+                    <th>损耗率</th>
+                    <th>需求用量</th>
+                    <th>需求日期</th>
+                    <th>备注</th>
+
+                    <th>图纸净量</th>
+                    <th>损耗率</th>
+                    <th>审核合计量</th>
+                    <th>备注</th>
+                </tr>
+                </thead>
+                <tbody id="preliminaryList">
+                <c:forEach items="${fiveDirectionsAffirmList}" var="row" varStatus="status">
+                    <tr>
+                        <td style='text-align:center;'>
+                                ${status.index+1}
+                        </td>
+
+                        <td style='text-align:center;'>
+                                ${row.ownerPurchasingRequisitionNum}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.ownerMaterialCode}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.ownerMaterialDescription}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.ownerUnits}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.ownerTenderNum}
+                        </td>
+
+                        <td style='text-align:center;'>
+                                ${row.designMaterialName}
+                        </td>
+                        <td style='text-align:center;'>
+                                 ${row.designDrawingAmount}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.designAttritionRate}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.designAffirmTotal}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.designRemarks}
+                        </td>
+
+                        <td style='text-align:center;'>
+                                ${row.roadworkDrawingAmount}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.roadworkAttritionRate}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.roadworkDemandDosage}
+                        </td>
+                        <td style='text-align:center;'>
+                                <fmt:formatDate value="${row.roadworkDemandDate}" pattern="yyyy-MM-dd" />
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.roadworkRemarks}
+                        </td>
+
+                        <td style='text-align:center;'>
+                                ${row.consultDrawingAmount}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.consultAttritionRate}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.consultAuditTotal}
+                        </td>
+                        <td style='text-align:center;'>
+                                ${row.consultRemarks}
+                        </td>
+
+                    </tr>
+                </c:forEach>
+                </tbody>
+            </table>
+        </c:if>
+    </c:forEach>
+</form>

+ 4 - 0
src/main/webapp/webpage/modules/workcontent/workPreliminaryDesignEstimateList.jsp

@@ -235,5 +235,9 @@
             contentStr += "]";
             return contentStr;
         }
+
+        function genSecondDetailStr(){
+            return '';
+        }
     </script>
 </form>