user5 hace 4 años
padre
commit
b20bf9d88c
Se han modificado 24 ficheros con 2840 adiciones y 13 borrados
  1. 13 0
      pom.xml
  2. 8 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageDao.java
  3. 14 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectRecordsReportedDao.java
  4. 74 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/ReportedConsultant.java
  5. 65 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java
  6. 557 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecordsReported.java
  7. 43 4
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java
  8. 28 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectRecordsService.java
  9. 41 7
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java
  10. 6 0
      src/main/java/com/jeeplus/modules/sys/dao/UserDao.java
  11. 19 0
      src/main/java/com/jeeplus/modules/sys/service/SystemService.java
  12. 17 0
      src/main/java/com/jeeplus/modules/sys/web/TagController.java
  13. 55 0
      src/main/java/com/jeeplus/modules/sys/web/UserController.java
  14. 180 0
      src/main/java/com/jeeplus/modules/utils/GetDataFromConfigurationCenterUtil.java
  15. 9 0
      src/main/java/com/jeeplus/modules/workstaff/service/WorkStaffBasicInfoService.java
  16. 21 0
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageDao.xml
  17. 131 0
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsReported.xml
  18. 27 0
      src/main/resources/mappings/modules/sys/UserDao.xml
  19. 1 0
      src/main/resources/mappings/modules/workcontractinfo/WorkContractInfoDao.xml
  20. 0 1
      src/main/resources/mappings/modules/workstaff/WorkStaffBasicInfoDao.xml
  21. 104 0
      src/main/webapp/WEB-INF/tags/sys/reportedtreeselectUser.tag
  22. 1206 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/reportedForm.jsp
  23. 2 1
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/ruralProjectMessageList.jsp
  24. 219 0
      src/main/webapp/webpage/modules/sys/tagTreeselectReported.jsp

+ 13 - 0
pom.xml

@@ -982,6 +982,19 @@
             <artifactId>commons-codec</artifactId>
             <version>1.9</version>
         </dependency>
+
+
+        <dependency>
+            <groupId>com.mashape.unirest</groupId>
+            <artifactId>unirest-java</artifactId>
+            <version>1.4.9</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>25.1-jre</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 8 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageDao.java

@@ -11,6 +11,7 @@ import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectReportData;
+import com.jeeplus.modules.sys.entity.Area;
 
 import java.util.List;
 
@@ -113,4 +114,11 @@ public interface RuralProjectMessageDao extends CrudDao<RuralProjectRecords> {
      * @return
      */
     RuralProjectRecords getRecordsInfo(RuralProjectRecords projectRecords);
+
+    /**
+     * 根据父id查询上报地址信息
+     * @param parentId
+     * @return
+     */
+    List<Area> getProjectReportedAreaByParentId(String parentId);
 }

+ 14 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectRecordsReportedDao.java

@@ -0,0 +1,14 @@
+package com.jeeplus.modules.ruralprojectrecords.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecordsReported;
+
+/**
+ * @author: 大猫
+ * @create: 2020-12-14 17:20
+ **/
+@MyBatisDao
+public interface RuralProjectRecordsReportedDao extends CrudDao<RuralProjectRecordsReported>  {
+
+}

+ 74 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/ReportedConsultant.java

@@ -0,0 +1,74 @@
+package com.jeeplus.modules.ruralprojectrecords.entity;
+
+import com.jeeplus.common.persistence.DataEntity;
+
+/**
+ * @author: 大猫
+ * @create: 2020-12-14 10:08
+ **/
+public class ReportedConsultant extends DataEntity<ReportedConsultant> {
+
+    private Integer zixunyuan_id;   //咨询员序号   自增长
+    private String zixunyuan;       //咨询员
+    private String zixunyuanName;       //咨询员(录入)
+    private String zhucezigezh_ID;  //注册/资格证号
+    private String Wordnr;          //本人复制内容
+    private Double wcyysrbl;        //完成营业收入比例( %)
+    private Double wcyysr;          //完成营业收入(元)
+
+    public Integer getZixunyuan_id() {
+        return zixunyuan_id;
+    }
+
+    public void setZixunyuan_id(Integer zixunyuan_id) {
+        this.zixunyuan_id = zixunyuan_id;
+    }
+
+    public String getZixunyuan() {
+        return zixunyuan;
+    }
+
+    public void setZixunyuan(String zixunyuan) {
+        this.zixunyuan = zixunyuan;
+    }
+
+    public String getZixunyuanName() {
+        return zixunyuanName;
+    }
+
+    public void setZixunyuanName(String zixunyuanName) {
+        this.zixunyuanName = zixunyuanName;
+    }
+
+    public String getZhucezigezh_ID() {
+        return zhucezigezh_ID;
+    }
+
+    public void setZhucezigezh_ID(String zhucezigezh_ID) {
+        this.zhucezigezh_ID = zhucezigezh_ID;
+    }
+
+    public String getWordnr() {
+        return Wordnr;
+    }
+
+    public void setWordnr(String wordnr) {
+        Wordnr = wordnr;
+    }
+
+    public Double getWcyysrbl() {
+        return wcyysrbl;
+    }
+
+    public void setWcyysrbl(Double wcyysrbl) {
+        this.wcyysrbl = wcyysrbl;
+    }
+
+    public Double getWcyysr() {
+        return wcyysr;
+    }
+
+    public void setWcyysr(Double wcyysr) {
+        this.wcyysr = wcyysr;
+    }
+}

+ 65 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java

@@ -80,6 +80,7 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private String reportedState;   //上报状态
 	private String view;
 	private List<ProjectPlanInfo> projectPlanList= Lists.newArrayList();;//项目计划信息
+	private List<ReportedConsultant> reportedConsultantList= Lists.newArrayList();;//咨询员列表
 
 	public String getPrrId() {
 		return prrId;
@@ -178,6 +179,14 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private String adventDate;   //超期时间
 	private String reportedType;   //超期状态(0:未超期;1:已超期)
 	private Date auditPassDate;   //报告审批日期
+
+	private String TouZiXZ;    //投资性质
+	private String HeTongLeiXing;   //合同类型
+	private Date BaoGaoShuQianFaDate;  //出具报告日期
+	private String ZiXunShouRu;   //咨询收入
+	private String zaoJiaShiZhengHao;   //造价师注册证号
+
+	private List<String> civilProjectList = Lists.newArrayList();
 	private List<WorkClientAttachment> workAttachments = Lists.newArrayList();
 
 	private List<ProjectReportData> projectReportData = Lists.newArrayList();
@@ -783,4 +792,60 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	public void setAuditPassDate(Date auditPassDate) {
 		this.auditPassDate = auditPassDate;
 	}
+
+	public String getTouZiXZ() {
+		return TouZiXZ;
+	}
+
+	public void setTouZiXZ(String touZiXZ) {
+		TouZiXZ = touZiXZ;
+	}
+
+	public String getHeTongLeiXing() {
+		return HeTongLeiXing;
+	}
+
+	public void setHeTongLeiXing(String heTongLeiXing) {
+		HeTongLeiXing = heTongLeiXing;
+	}
+
+	public Date getBaoGaoShuQianFaDate() {
+		return BaoGaoShuQianFaDate;
+	}
+
+	public void setBaoGaoShuQianFaDate(Date baoGaoShuQianFaDate) {
+		BaoGaoShuQianFaDate = baoGaoShuQianFaDate;
+	}
+
+	public String getZiXunShouRu() {
+		return ZiXunShouRu;
+	}
+
+	public void setZiXunShouRu(String ziXunShouRu) {
+		ZiXunShouRu = ziXunShouRu;
+	}
+
+	public String getZaoJiaShiZhengHao() {
+		return zaoJiaShiZhengHao;
+	}
+
+	public void setZaoJiaShiZhengHao(String zaoJiaShiZhengHao) {
+		this.zaoJiaShiZhengHao = zaoJiaShiZhengHao;
+	}
+
+	public List<String> getCivilProjectList() {
+		return civilProjectList;
+	}
+
+	public void setCivilProjectList(List<String> civilProjectList) {
+		this.civilProjectList = civilProjectList;
+	}
+
+	public List<ReportedConsultant> getReportedConsultantList() {
+		return reportedConsultantList;
+	}
+
+	public void setReportedConsultantList(List<ReportedConsultant> reportedConsultantList) {
+		this.reportedConsultantList = reportedConsultantList;
+	}
 }

+ 557 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecordsReported.java

@@ -0,0 +1,557 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.ruralprojectrecords.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.google.common.collect.Lists;
+import com.jeeplus.common.persistence.DataEntity;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+
+/**
+ * 项目登记Entity
+ * @author ppt
+ * @version 2018-05-02
+ */
+public class RuralProjectRecordsReported extends DataEntity<RuralProjectRecordsReported> {
+
+	public static final String SERIAL_BIZCODE ="1";
+	private WorkContractInfo workContractInfo;		// 合同信息
+	private String projectId;		// 项目id
+	private List<User> projectLeaders; //项目负责人
+	private String ProjectName;		// 项目名称
+	private String xmFZR;		//项目负责人
+	private String leaderNameStr;   //项目负责人
+	private String WeiTuoDW;		//委托单位
+	private String LianXiDH;		//委托单位电话
+	private String TouZiXZ;    //投资性质
+	private String ProjectType;    //咨询项目类型
+	private String HeTongLeiXing;   //合同类型
+	private String ZiXunHTBH;      //合同编号
+	private String DangABH;   //出具报告号
+	private String BaoGaoShuQianFaDate;  //出具报告日期
+	private String ZiXunShouRu;   //咨询收入
+	private String zaoJiaShiZhengHao;   //造价师注册证号
+	private List<ReportedConsultant> reportedConsultantList= Lists.newArrayList();;//咨询员列表
+
+
+	//项目信息
+	private String s1;				//工程所在省份
+	private String s2;				//工程所在地级市
+	private String s3;				//工程所在区县
+	private String PorjectStruct;	//工程结构
+	private Integer FloorUp;		//地上层数
+	private Integer FloorDown;		//地下层数
+	private Double GCGM_Value;		//建筑面积或规模
+	private String GCGM_Unit;		//计量单位
+	private String PorjectUse;		//工程用途
+	private Double ZiXunBDE;		//咨询标的额(万元)
+	private Double ZiXunBDE_TJ;		//其中土建造价(万元)
+	private Double ZiXunBDE_AZ;		//其中安装造价(万元)
+	private Double Cal_TJ_Percent;	//其中土建百分比(%)
+	private Double Cal_AZ_Percent;	//其中安装百分比(%)
+	private Double Cal_ZZJ_Unit;	//单位造价(元)
+
+	private Double Cal_ZZJ_TJ_Unit;	//其中土建单位造价(元)
+	private Double Cal_ZZJ_AZ_Unit;	//其中安装单位造价(元)
+	private Double HeTongJia;		//合同价(万元)
+	private Double SongShenJia;		//送审价(万元)
+	private Double ShenDingJia;		//审定价(万元)
+	private Double JingHeJianE;		//审核增减额(万元)
+	private Double JingHeJianLv;	//审核增减率(%)
+
+
+	//主要材料和人工消耗量指标
+	private Double GCYL;			//钢材用量(t)
+	private Double SNYL;			//水泥用量(t)
+	private Double YBTYL;			//预拌砼用量(m³)
+	private Double RGGRYL;			//人工工日用量(工日)
+	private Double GCYL_PerUnit;	//钢材消耗指标(kg)
+	private Double SNYL_PerUnit;	//水泥消耗指标(kg)
+	private Double YBTYL_PerUnit;	//预拌砼消耗指标(m³)
+	private Double RGGRYL_PerUnit;	//人工工日消耗指标(工日)
+
+	private List<String> TJ_ProjectList;		//土建工程
+	private List<String> ZS_ProjectList;	//装饰工程
+	private List<String> AZ_ProjectList;	//安装工程
+	private List<String> SZ_ProjectList;	//市政工程
+	private List<String> FGYL_ProjectList;		//仿古园林工程
+
+	private String TJ_Project;//土建工程
+	private String ZS_Project;//装饰工程
+	private String AZ_Project;//安装工程
+	private String SZ_Project;//市政工程
+	private String FGYL_Project;//仿古园林工程
+	private String QT_Projec;	//其他专业工程咨询项目造价包含内容说明
+
+	public WorkContractInfo getWorkContractInfo() {
+		return workContractInfo;
+	}
+
+	public void setWorkContractInfo(WorkContractInfo workContractInfo) {
+		this.workContractInfo = workContractInfo;
+	}
+
+	public String getProjectId() {
+		return projectId;
+	}
+
+	public void setProjectId(String projectId) {
+		this.projectId = projectId;
+	}
+
+	public List<User> getProjectLeaders() {
+		return projectLeaders;
+	}
+
+	public void setProjectLeaders(List<User> projectLeaders) {
+		this.projectLeaders = projectLeaders;
+	}
+
+	public String getProjectName() {
+		return ProjectName;
+	}
+
+	public void setProjectName(String projectName) {
+		ProjectName = projectName;
+	}
+
+	public String getXmFZR() {
+		return xmFZR;
+	}
+
+	public void setXmFZR(String xmFZR) {
+		this.xmFZR = xmFZR;
+	}
+
+	public String getLeaderNameStr() {
+		return leaderNameStr;
+	}
+
+	public void setLeaderNameStr(String leaderNameStr) {
+		this.leaderNameStr = leaderNameStr;
+	}
+
+	public String getWeiTuoDW() {
+		return WeiTuoDW;
+	}
+
+	public void setWeiTuoDW(String weiTuoDW) {
+		WeiTuoDW = weiTuoDW;
+	}
+
+	public String getLianXiDH() {
+		return LianXiDH;
+	}
+
+	public void setLianXiDH(String lianXiDH) {
+		LianXiDH = lianXiDH;
+	}
+
+	public String getTouZiXZ() {
+		return TouZiXZ;
+	}
+
+	public void setTouZiXZ(String touZiXZ) {
+		TouZiXZ = touZiXZ;
+	}
+
+	public String getProjectType() {
+		return ProjectType;
+	}
+
+	public void setProjectType(String projectType) {
+		ProjectType = projectType;
+	}
+
+	public String getHeTongLeiXing() {
+		return HeTongLeiXing;
+	}
+
+	public void setHeTongLeiXing(String heTongLeiXing) {
+		HeTongLeiXing = heTongLeiXing;
+	}
+
+	public String getZiXunHTBH() {
+		return ZiXunHTBH;
+	}
+
+	public void setZiXunHTBH(String ziXunHTBH) {
+		ZiXunHTBH = ziXunHTBH;
+	}
+
+	public String getDangABH() {
+		return DangABH;
+	}
+
+	public void setDangABH(String dangABH) {
+		DangABH = dangABH;
+	}
+
+	public String getBaoGaoShuQianFaDate() {
+		return BaoGaoShuQianFaDate;
+	}
+
+	public void setBaoGaoShuQianFaDate(String baoGaoShuQianFaDate) {
+		BaoGaoShuQianFaDate = baoGaoShuQianFaDate;
+	}
+
+	public String getZiXunShouRu() {
+		return ZiXunShouRu;
+	}
+
+	public void setZiXunShouRu(String ziXunShouRu) {
+		ZiXunShouRu = ziXunShouRu;
+	}
+
+	public String getZaoJiaShiZhengHao() {
+		return zaoJiaShiZhengHao;
+	}
+
+	public void setZaoJiaShiZhengHao(String zaoJiaShiZhengHao) {
+		this.zaoJiaShiZhengHao = zaoJiaShiZhengHao;
+	}
+
+	public List<ReportedConsultant> getReportedConsultantList() {
+		return reportedConsultantList;
+	}
+
+	public void setReportedConsultantList(List<ReportedConsultant> reportedConsultantList) {
+		this.reportedConsultantList = reportedConsultantList;
+	}
+
+	public String getS1() {
+		return s1;
+	}
+
+	public void setS1(String s1) {
+		this.s1 = s1;
+	}
+
+	public String getS2() {
+		return s2;
+	}
+
+	public void setS2(String s2) {
+		this.s2 = s2;
+	}
+
+	public String getS3() {
+		return s3;
+	}
+
+	public void setS3(String s3) {
+		this.s3 = s3;
+	}
+
+	public String getPorjectStruct() {
+		return PorjectStruct;
+	}
+
+	public void setPorjectStruct(String porjectStruct) {
+		PorjectStruct = porjectStruct;
+	}
+
+	public Integer getFloorUp() {
+		return FloorUp;
+	}
+
+	public void setFloorUp(Integer floorUp) {
+		FloorUp = floorUp;
+	}
+
+	public Integer getFloorDown() {
+		return FloorDown;
+	}
+
+	public void setFloorDown(Integer floorDown) {
+		FloorDown = floorDown;
+	}
+
+	public Double getGCGM_Value() {
+		return GCGM_Value;
+	}
+
+	public void setGCGM_Value(Double GCGM_Value) {
+		this.GCGM_Value = GCGM_Value;
+	}
+
+	public String getGCGM_Unit() {
+		return GCGM_Unit;
+	}
+
+	public void setGCGM_Unit(String GCGM_Unit) {
+		this.GCGM_Unit = GCGM_Unit;
+	}
+
+	public String getPorjectUse() {
+		return PorjectUse;
+	}
+
+	public void setPorjectUse(String porjectUse) {
+		PorjectUse = porjectUse;
+	}
+
+	public Double getZiXunBDE() {
+		return ZiXunBDE;
+	}
+
+	public void setZiXunBDE(Double ziXunBDE) {
+		ZiXunBDE = ziXunBDE;
+	}
+
+	public Double getZiXunBDE_TJ() {
+		return ZiXunBDE_TJ;
+	}
+
+	public void setZiXunBDE_TJ(Double ziXunBDE_TJ) {
+		ZiXunBDE_TJ = ziXunBDE_TJ;
+	}
+
+	public Double getZiXunBDE_AZ() {
+		return ZiXunBDE_AZ;
+	}
+
+	public void setZiXunBDE_AZ(Double ziXunBDE_AZ) {
+		ZiXunBDE_AZ = ziXunBDE_AZ;
+	}
+
+	public Double getCal_TJ_Percent() {
+		return Cal_TJ_Percent;
+	}
+
+	public void setCal_TJ_Percent(Double cal_TJ_Percent) {
+		Cal_TJ_Percent = cal_TJ_Percent;
+	}
+
+	public Double getCal_AZ_Percent() {
+		return Cal_AZ_Percent;
+	}
+
+	public void setCal_AZ_Percent(Double cal_AZ_Percent) {
+		Cal_AZ_Percent = cal_AZ_Percent;
+	}
+
+	public Double getCal_ZZJ_Unit() {
+		return Cal_ZZJ_Unit;
+	}
+
+	public void setCal_ZZJ_Unit(Double cal_ZZJ_Unit) {
+		Cal_ZZJ_Unit = cal_ZZJ_Unit;
+	}
+
+	public Double getCal_ZZJ_TJ_Unit() {
+		return Cal_ZZJ_TJ_Unit;
+	}
+
+	public void setCal_ZZJ_TJ_Unit(Double cal_ZZJ_TJ_Unit) {
+		Cal_ZZJ_TJ_Unit = cal_ZZJ_TJ_Unit;
+	}
+
+	public Double getCal_ZZJ_AZ_Unit() {
+		return Cal_ZZJ_AZ_Unit;
+	}
+
+	public void setCal_ZZJ_AZ_Unit(Double cal_ZZJ_AZ_Unit) {
+		Cal_ZZJ_AZ_Unit = cal_ZZJ_AZ_Unit;
+	}
+
+	public Double getHeTongJia() {
+		return HeTongJia;
+	}
+
+	public void setHeTongJia(Double heTongJia) {
+		HeTongJia = heTongJia;
+	}
+
+	public Double getSongShenJia() {
+		return SongShenJia;
+	}
+
+	public void setSongShenJia(Double songShenJia) {
+		SongShenJia = songShenJia;
+	}
+
+	public Double getShenDingJia() {
+		return ShenDingJia;
+	}
+
+	public void setShenDingJia(Double shenDingJia) {
+		ShenDingJia = shenDingJia;
+	}
+
+	public Double getJingHeJianE() {
+		return JingHeJianE;
+	}
+
+	public void setJingHeJianE(Double jingHeJianE) {
+		JingHeJianE = jingHeJianE;
+	}
+
+	public Double getJingHeJianLv() {
+		return JingHeJianLv;
+	}
+
+	public void setJingHeJianLv(Double jingHeJianLv) {
+		JingHeJianLv = jingHeJianLv;
+	}
+
+	public Double getGCYL() {
+		return GCYL;
+	}
+
+	public void setGCYL(Double GCYL) {
+		this.GCYL = GCYL;
+	}
+
+	public Double getSNYL() {
+		return SNYL;
+	}
+
+	public void setSNYL(Double SNYL) {
+		this.SNYL = SNYL;
+	}
+
+	public Double getYBTYL() {
+		return YBTYL;
+	}
+
+	public void setYBTYL(Double YBTYL) {
+		this.YBTYL = YBTYL;
+	}
+
+	public Double getRGGRYL() {
+		return RGGRYL;
+	}
+
+	public void setRGGRYL(Double RGGRYL) {
+		this.RGGRYL = RGGRYL;
+	}
+
+	public Double getGCYL_PerUnit() {
+		return GCYL_PerUnit;
+	}
+
+	public void setGCYL_PerUnit(Double GCYL_PerUnit) {
+		this.GCYL_PerUnit = GCYL_PerUnit;
+	}
+
+	public Double getSNYL_PerUnit() {
+		return SNYL_PerUnit;
+	}
+
+	public void setSNYL_PerUnit(Double SNYL_PerUnit) {
+		this.SNYL_PerUnit = SNYL_PerUnit;
+	}
+
+	public Double getYBTYL_PerUnit() {
+		return YBTYL_PerUnit;
+	}
+
+	public void setYBTYL_PerUnit(Double YBTYL_PerUnit) {
+		this.YBTYL_PerUnit = YBTYL_PerUnit;
+	}
+
+	public Double getRGGRYL_PerUnit() {
+		return RGGRYL_PerUnit;
+	}
+
+	public void setRGGRYL_PerUnit(Double RGGRYL_PerUnit) {
+		this.RGGRYL_PerUnit = RGGRYL_PerUnit;
+	}
+
+	public List<String> getTJ_ProjectList() {
+		return TJ_ProjectList;
+	}
+
+	public void setTJ_ProjectList(List<String> TJ_ProjectList) {
+		this.TJ_ProjectList = TJ_ProjectList;
+	}
+
+	public List<String> getZS_ProjectList() {
+		return ZS_ProjectList;
+	}
+
+	public void setZS_ProjectList(List<String> ZS_ProjectList) {
+		this.ZS_ProjectList = ZS_ProjectList;
+	}
+
+	public List<String> getAZ_ProjectList() {
+		return AZ_ProjectList;
+	}
+
+	public void setAZ_ProjectList(List<String> AZ_ProjectList) {
+		this.AZ_ProjectList = AZ_ProjectList;
+	}
+
+	public List<String> getSZ_ProjectList() {
+		return SZ_ProjectList;
+	}
+
+	public void setSZ_ProjectList(List<String> SZ_ProjectList) {
+		this.SZ_ProjectList = SZ_ProjectList;
+	}
+
+	public List<String> getFGYL_ProjectList() {
+		return FGYL_ProjectList;
+	}
+
+	public void setFGYL_ProjectList(List<String> FGYL_ProjectList) {
+		this.FGYL_ProjectList = FGYL_ProjectList;
+	}
+
+	public String getTJ_Project() {
+		return TJ_Project;
+	}
+
+	public void setTJ_Project(String TJ_Project) {
+		this.TJ_Project = TJ_Project;
+	}
+
+	public String getZS_Project() {
+		return ZS_Project;
+	}
+
+	public void setZS_Project(String ZS_Project) {
+		this.ZS_Project = ZS_Project;
+	}
+
+	public String getAZ_Project() {
+		return AZ_Project;
+	}
+
+	public void setAZ_Project(String AZ_Project) {
+		this.AZ_Project = AZ_Project;
+	}
+
+	public String getSZ_Project() {
+		return SZ_Project;
+	}
+
+	public void setSZ_Project(String SZ_Project) {
+		this.SZ_Project = SZ_Project;
+	}
+
+	public String getFGYL_Project() {
+		return FGYL_Project;
+	}
+
+	public void setFGYL_Project(String FGYL_Project) {
+		this.FGYL_Project = FGYL_Project;
+	}
+
+	public String getQT_Projec() {
+		return QT_Projec;
+	}
+
+	public void setQT_Projec(String QT_Projec) {
+		this.QT_Projec = QT_Projec;
+	}
+}

+ 43 - 4
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java

@@ -18,14 +18,13 @@ import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
 import com.jeeplus.modules.projectreportnum.service.ProjectReportNumService;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectMessageDao;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectRecordsReportedDao;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralWorkProjectUserDao;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecordsReported;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectReportData;
 import com.jeeplus.modules.sys.dao.WorkattachmentDao;
-import com.jeeplus.modules.sys.entity.MainDictDetail;
-import com.jeeplus.modules.sys.entity.Office;
-import com.jeeplus.modules.sys.entity.User;
-import com.jeeplus.modules.sys.entity.Workattachment;
+import com.jeeplus.modules.sys.entity.*;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.sys.utils.UserUtils;
@@ -118,6 +117,8 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
     private WorkActivityProcessDao workActivityProcessDao;
     @Autowired
     private WorkContractInfoService workContractInfoService;
+    @Autowired
+    private RuralProjectRecordsReportedDao ruralProjectRecordsReportedDao;
 
     private static byte[] SYN_BYTE = new byte[0];
 
@@ -1485,4 +1486,42 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
         return dao.updateReported(projectRecords);
     }
 
+    /**
+     * 根据父id查询上报地址信息
+     * @param parentId
+     * @return
+     */
+    public List<Area> getProjectReportedAreaByParentId(String parentId){
+        return dao.getProjectReportedAreaByParentId(parentId);
+    }
+
+    /**
+     * 保存上报数据
+     * @param reported
+     */
+    @Transactional(readOnly = false)
+    public void saveReportedInfo(RuralProjectRecordsReported reported) {
+        //处理多选框选项
+        if(null != reported.getTJ_ProjectList() && reported.getTJ_ProjectList().size()>0){
+            reported.setTJ_Project(String.join(";", reported.getTJ_ProjectList()));
+        }
+        if(null != reported.getZS_ProjectList() && reported.getZS_ProjectList().size()>0){
+            reported.setZS_Project(String.join(";", reported.getZS_ProjectList()));
+        }
+        if(null != reported.getAZ_ProjectList() && reported.getAZ_ProjectList().size()>0){
+            reported.setAZ_Project(String.join(";", reported.getAZ_ProjectList()));
+        }
+        if(null != reported.getSZ_ProjectList() && reported.getSZ_ProjectList().size()>0){
+            reported.setSZ_Project(String.join(";", reported.getSZ_ProjectList()));
+        }
+        if(null != reported.getFGYL_ProjectList() && reported.getFGYL_ProjectList().size()>0){
+            reported.setFGYL_Project(String.join(";", reported.getFGYL_ProjectList()));
+        }
+
+        
+        reported.preInsert();
+        //将项目id设置为id
+        reported.setId(reported.getProjectId());
+        ruralProjectRecordsReportedDao.insert(reported);
+    }
 }

+ 28 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectRecordsService.java

@@ -23,6 +23,7 @@ import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectClientLinkmanDao;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectRecordsDao;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralWorkProjectUserDao;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecordsReported;
 import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
 import com.jeeplus.modules.serialnum.service.SerialNumTplService;
 import com.jeeplus.modules.sys.entity.MainDictDetail;
@@ -63,6 +64,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -1379,4 +1381,30 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 			dao.updateProjectReportedState(idList);
 		}
 	}
+
+	public RuralProjectRecordsReported disposeData(RuralProjectRecords records){
+		RuralProjectRecordsReported reported = new RuralProjectRecordsReported();
+		reported.setWorkContractInfo(records.getWorkContractInfo());
+		reported.setProjectId(records.getId());
+		reported.setProjectLeaders(records.getProjectLeaders());
+		reported.setProjectName(records.getProjectName());
+		reported.setXmFZR(records.getLeaderIds());
+		reported.setLeaderNameStr(records.getLeaderNameStr());
+		reported.setZiXunHTBH(records.getWorkContractInfo().getContractNum());
+		reported.setWeiTuoDW(records.getWorkContractInfo().getClient().getName());
+		reported.setLianXiDH(records.getWorkContractInfo().getClient().getTelephone());
+		reported.setDangABH(records.getReportData().getNumber());
+
+		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+		reported.setBaoGaoShuQianFaDate(formatter.format(records.getReportData().getReportDate()));
+		reported.setHeTongJia(records.getReportData().getContractFee());
+		reported.setSongShenJia(records.getReportData().getReviewFee());
+		reported.setShenDingJia(records.getReportData().getApprovalFee());
+		reported.setJingHeJianE(records.getReportData().getVerifyFee());
+		reported.setJingHeJianLv(records.getReportData().getVerifyRate());
+		reported.setPorjectStruct("11");
+		reported.setGCGM_Unit("7");
+		reported.setPorjectUse("17");
+		return reported;
+	}
 }

+ 41 - 7
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java

@@ -1,6 +1,7 @@
 package com.jeeplus.modules.ruralprojectrecords.web;
 
 import com.jeeplus.common.config.Global;
+import com.jeeplus.common.json.AjaxJson;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.utils.MyBeanUtils;
 import com.jeeplus.common.utils.StringUtils;
@@ -21,9 +22,11 @@ import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.projectrecord.service.ProjectPlanService;
 import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecordsReported;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectcontentinfo;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
+import com.jeeplus.modules.sys.entity.Area;
 import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.utils.DictUtils;
@@ -42,6 +45,7 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
@@ -968,14 +972,44 @@ public class RuralProjectMessageController extends BaseController {
      * @return
      */
     @RequestMapping(value = "updateReported")
-    public String updateReported(RuralProjectRecords projectRecords,RedirectAttributes redirectAttributes) {
-        Integer reported = ruralProjectMessageService.updateReported(projectRecords);
-        if(1 == reported){
-            addMessage(redirectAttributes, "上报成功");
-        }else{
-            addMessage(redirectAttributes, "上报失败");
+    public String updateReported(RuralProjectRecords projectRecords, Model model) {
+        RuralProjectRecords records = projectRecordsService.getQueryProjectUsers(projectRecords.getId());
+        projectRecordsService.queryProjectDetail(records);
+        Projectcontentinfo projectcontentinfo1 = projectcontentinfoService.getByProjectId(projectRecords.getId());
+        ProjectReportData projectReportData = projectReportDataService.getOnRural(projectcontentinfo1.getInfoId());
+        records.setReportData(projectReportData);
+        RuralProjectRecordsReported reported = projectRecordsService.disposeData(records);
+        model.addAttribute("ruralProjectRecordsReported", reported);
+        return "modules/ruralprojectrecords/ruralporjectmessage/reportedForm";
+    }
+
+
+    @RequestMapping("getArea")
+    @ResponseBody
+    public Map getArea(String id){
+        Map map = new HashMap();
+        try {
+            if (StringUtils.isNotBlank(id)) {
+                List<Area> areaList = ruralProjectMessageService.getProjectReportedAreaByParentId(id);
+                map.put("data", areaList);
+                map.put("success",true);
+            }
+        }catch (Exception e){
+            logger.error("获取数据出错",e);
+            map.put("data", "");
+            map.put("success",false);
         }
+        return  map;
+    }
 
-        return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralProjectMessage/?repage";
+
+    /**
+     * 保存报告归档
+     */
+    @RequestMapping(value = "saveReported")
+    public String saveReported(RuralProjectRecordsReported reported,  RedirectAttributes redirectAttributes) {
+        ruralProjectMessageService.saveReportedInfo(reported);
+
+        return "";
     }
 }

+ 6 - 0
src/main/java/com/jeeplus/modules/sys/dao/UserDao.java

@@ -49,6 +49,12 @@ public interface UserDao extends CrudDao<User> {
 	 */
 	public List<User> findUserByOfficeIdAndName(User user);
 	/**
+	 * 通过OfficeId获取用户列表,仅返回用户id和name(树查询用户时用)
+	 * @param user
+	 * @return
+	 */
+	public List<User> findUserByOfficeIdAndNameOnReported(User user);
+	/**
 	 * 通过Offices获取用户列表,仅返回用户id和name(树查询用户时用)
 	 * @param user
 	 * @return

+ 19 - 0
src/main/java/com/jeeplus/modules/sys/service/SystemService.java

@@ -300,6 +300,25 @@ public class SystemService extends BaseService implements InitializingBean {
                 UserUtils.USER_CACHE_LIST_BY_OFFICE_ID_ + officeId, list);
         return list;
     }
+
+    /**
+     * 通过部门ID获取用户列表,仅返回用户id和name(树查询用户时用  上报使用)
+     *
+     * @return
+     */
+    public List<User> treeDataByNameOnReported(String officeId,String selectName) {
+
+        User user = new User();
+        user.setOffice(new Office(officeId));
+        user.setName(selectName);
+        if(!UserUtils.getSelectCompany().getId().equals("1")) {
+            user.setCompany(UserUtils.getSelectCompany());
+        }
+        List<User> list = userDao.findUserByOfficeIdAndNameOnReported(user);
+        CacheUtils.put(UserUtils.USER_CACHE,
+                UserUtils.USER_CACHE_LIST_BY_OFFICE_ID_ + officeId, list);
+        return list;
+    }
     /**
      * 通过部门ID获取用户列表,仅返回用户id和name(树查询用户时用)
      *

+ 17 - 0
src/main/java/com/jeeplus/modules/sys/web/TagController.java

@@ -57,6 +57,23 @@ public class TagController extends BaseController {
 	 * 树结构选择标签(treeselect.tag)
 	 */
 	@RequiresPermissions("user")
+	@RequestMapping(value = "treeselectReported")
+	public String treeselectReported(HttpServletRequest request, Model model) {
+		model.addAttribute("url", request.getParameter("url")); 	// 树结构数据URL
+		model.addAttribute("extId", request.getParameter("extId")); // 排除的编号ID
+		model.addAttribute("checked", request.getParameter("checked")); // 是否可复选
+		model.addAttribute("selectIds", request.getParameter("selectIds")); // 指定默认选中的ID
+		model.addAttribute("isAll", request.getParameter("isAll")); 	// 是否读取全部数据,不进行权限过滤
+		model.addAttribute("module", request.getParameter("module"));	// 过滤栏目模型(仅针对CMS的Category树)
+		model.addAttribute("branchOffice", request.getParameter("branchOffice"));	// 过滤栏目模型(仅针对CMS的Category树)
+		model.addAttribute("selectName", request.getParameter("selectName"));	// 查询名称
+		return "modules/sys/tagTreeselectReported";
+	}
+
+	/**
+	 * 树结构选择标签(treeselect.tag)
+	 */
+	@RequiresPermissions("user")
 	@RequestMapping(value = "treeselectDict")
 	public String treeselectDict(HttpServletRequest request, Model model) {
 		model.addAttribute("url", request.getParameter("url")); 	// 树结构数据URL

+ 55 - 0
src/main/java/com/jeeplus/modules/sys/web/UserController.java

@@ -31,6 +31,7 @@ import com.jeeplus.modules.sys.utils.UserUtils;
 import com.jeeplus.modules.sysimportinfo.entity.SysImportInfo;
 import com.jeeplus.modules.sysimportinfo.service.SysImportInfoService;
 import com.jeeplus.modules.workstaff.entity.WorkStaffBasicInfo;
+import com.jeeplus.modules.workstaff.entity.WorkStaffCertificate;
 import com.jeeplus.modules.workstaff.service.WorkStaffBasicInfoService;
 import io.swagger.client.model.NewPassword;
 import org.apache.commons.lang3.StringEscapeUtils;
@@ -1010,6 +1011,60 @@ public class UserController extends BaseController {
 
     @RequiresPermissions("user")
     @ResponseBody
+    @RequestMapping(value = "treeDataByNameOnReported")
+    public List<Map<String, Object>> treeDataByNameOnReported(@RequestParam(required=false) String projectId,@RequestParam(required=false) String officeId,@RequestParam(required = false) String selectName, HttpServletResponse response) {
+        List<Map<String, Object>> mapList = Lists.newArrayList();
+        if(StringUtils.isBlank(projectId)){
+            List<User> list = systemService.treeDataByNameOnReported(officeId,selectName);
+            for (int i=0; i<list.size(); i++){
+                Map<String, Object> map = Maps.newHashMap();
+                User e = list.get(i);
+                map.put("id", "u_"+e.getId());
+                map.put("pId", officeId);
+                String name = StringUtils.replace(e.getName(), " ", "");
+                name = StringEscapeUtils.unescapeHtml4(name);
+                map.put("name", name);
+                WorkStaffBasicInfo info = workStaffBasicInfoService.getWorkStaffBasicInfoByUserId(e.getId());
+                workStaffBasicInfoService.queryDetails(info);
+                List<WorkStaffCertificate> certificateList = info.getCertificateList();
+                for (WorkStaffCertificate certificate:certificateList) {
+                    if("注册/资格证".equals(certificate.getName())){
+                        map.put("officeId", certificate.getNum());
+                        break;
+                    }
+                }
+                mapList.add(map);
+            }
+        }else{
+            List<User> list = systemService.findUserByOfficeId(officeId);
+            //查询项目组成员信息
+            List<User> members = workProjectUserDao.isDelFalg(projectId, "");
+            Set<String> setUser = new HashSet();
+            for (User user: members) {
+                setUser.add(user.getId());
+            }
+            List<String> userIdList = new ArrayList<>(setUser);
+            for (int i=0; i<list.size(); i++){
+                User e = list.get(i);
+                if(userIdList.contains(e.getId())){
+                    Map<String, Object> map = Maps.newHashMap();
+                    map.put("id", "u_"+e.getId());
+                    map.put("pId", officeId);
+                    String name = StringUtils.replace(e.getName(), " ", "");
+                    name = StringEscapeUtils.unescapeHtml4(name);
+                    map.put("name", name);
+                    String officeName = StringUtils.replace(e.getOffice().getName(), " ", "");
+                    officeName = StringEscapeUtils.unescapeHtml4(officeName);
+                    map.put("officeId", officeName);
+                    mapList.add(map);
+                }
+            }
+        }
+        return mapList;
+    }
+
+    @RequiresPermissions("user")
+    @ResponseBody
     @RequestMapping(value = "treeDataReimbur")
     public List<Map<String, Object>> treeDataReimbur(@RequestParam(required=false) String projectId,@RequestParam(required=false) String officeId, HttpServletResponse response) {
         List<Map<String, Object>> mapList = Lists.newArrayList();

+ 180 - 0
src/main/java/com/jeeplus/modules/utils/GetDataFromConfigurationCenterUtil.java

@@ -0,0 +1,180 @@
+package com.jeeplus.modules.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.mashape.unirest.http.HttpResponse;
+import com.mashape.unirest.http.Unirest;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+/**
+ * @Title: <p>GetDataFromConfigurationCenterUtil</p>
+ * @Description: <p>调用外部接口工具类</p>
+ * @author: 徐滕
+ * @Date: 2020-12-10 15:29
+ * @version: 1.0
+ * @Copyright: . All rights reserved.
+ */
+public class GetDataFromConfigurationCenterUtil {
+
+    private static final Logger logger = LoggerFactory.getLogger(GetDataFromConfigurationCenterUtil.class);
+
+    /**
+     * 成功返回代码
+     */
+    private static final String SUCCESS_CODE = "0";
+    /**
+     * 成功返回消息
+     */
+    private static final String SUCCESS_MSG = "success";
+    /**
+     * @Title: <p>getObjectBySendPostReqs</p>
+     * @Description: <p>向外部接口发送POST请求,返回的数据为单个数据</p>
+     * @param url 请求的url
+     * @param reqObj 请求参数对象
+     * @param valueType 返回值映射类型
+     * @param outSideInterfaceName    外部接口中文名称
+     * @return: T
+     * @author:
+     * @Date: 2019/8/13 15:52
+     * @throws
+     * @version: 1.0
+     * @Copyright: . All rights reserved.
+     */
+    public static <T> T getObjectBySendPostReqs(String url, Object reqObj, Class<T> valueType,String outSideInterfaceName) {
+        /**
+         * 1.入参日志
+         */
+        logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]入参:url=" + url + ",reqObj:" + reqObj
+                + ",valueType=" + valueType + ",outSideInterfaceName" + outSideInterfaceName);
+        /**
+         * 2.校验
+         */
+        if (StringUtils.isBlank(url)) {
+            logger.error("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]入参URL为空!参数异常!直接返回null");
+            return null;
+        }
+        /**
+         * 4.开始请求
+         */
+        try {
+            HttpResponse<String> response = Unirest.post(url)
+                    .header("accept", "application/json;charset=UTF-8")
+                    .field("param", JSON.toJSONString(reqObj))
+                    .asString();
+            /**
+             * 5.返回值校验
+             */
+            if (null == response) {
+                logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqObj);
+                return null;
+            }
+            JSONObject result = JSONObject.parseObject(response.getBody());
+            if (null == result) {
+                logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqObj);
+                return null;
+            }
+            logger.info("从【" + outSideInterfaceName + "】获取到的数据为:" + result);
+            /**
+             * 6.返回值解析
+             */
+            String code = result.getString("code");
+            String msg = result.getString("msg");
+            String data = result.getString("data");
+            if (Objects.equals(code, SUCCESS_CODE) && Objects.equals(msg, SUCCESS_MSG)) {
+                T object = JSONObject.parseObject(result.toString(), valueType);
+                /**
+                 * 7.出参日志
+                 */
+                logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]出参:=" + object + "数据data=" + data);
+                /**
+                 * 8.数据返回
+                 */
+                return object;
+            }
+        } catch (Exception e) {
+            /**
+             * 8.异常捕捉
+             */
+            logger.error("从【" + outSideInterfaceName + "】获取数据错误:", e);
+        }
+        return null;
+    }
+    /**
+     * @Title: <p>getListBySendPostReqs</p>
+     * @Description: <p>向外部接口发送POST请求,返回的数据为多条数据list</p>
+     * @param url 请求的url
+     * @param reqMap 请求参数集合
+     * @param valueType 返回值映射类型
+     * @param outSideInterfaceName    外部接口中文名称
+     * @return: java.util.List<T>
+     * @author:
+     * @Date: 2019/8/13 15:53
+     * @throws
+     * @version: 1.0
+     * @Copyright: . All rights reserved.
+     */
+    public static <T> List<T> getListBySendPostReqs(String url, Map<String, Object> reqMap, Class<T> valueType,String outSideInterfaceName) {
+        /**
+         * 1.入参日志
+         */
+        logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为多条数据]入参:url=" + url + ",reqMap:" + reqMap.entrySet().toString()
+                + ",valueType=" + valueType + ",outSideInterfaceName" + outSideInterfaceName);
+        /**
+         * 2.校验
+         */
+        if (StringUtils.isBlank(url)) {
+            logger.error("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为多条数据]入参URL为空!参数异常!直接返回null");
+            return null;
+        }
+        /**
+         * 4.开始请求
+         */
+        try {
+            HttpResponse<String> response = Unirest.post(url)
+                    .header("accept", "application/json")
+                    .fields(reqMap)
+                    .asString();
+            /**
+             * 5.返回值校验
+             */
+            if (null == response) {
+                logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqMap);
+                return null;
+            }
+            JSONObject result = JSONObject.parseObject(response.getBody()).getJSONObject("reply").getJSONObject("result");
+            if (null == result) {
+                logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqMap);
+                return null;
+            }
+            logger.info("从【" + outSideInterfaceName + "】获取到的数据为:" + result);
+            /**
+             * 6.返回值解析
+             */
+            Integer code = result.getInteger("code");
+            Boolean res = result.getBooleanValue("res");
+            String r = result.getString("r");
+            if (Objects.equals(code, 0) && res && null != r) {
+                List<T> list = JSONObject.parseArray(r, valueType);
+                /**
+                 * 7.出参日志
+                 */
+                logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]出参:=" + list);
+                /**
+                 * 8.数据返回
+                 */
+                return list;
+            }
+        } catch (Exception e) {
+            /**
+             * 9.异常捕捉
+             */
+            logger.error("从【" + outSideInterfaceName + "】获取数据错误:", e);
+        }
+        return null;
+    }
+}

+ 9 - 0
src/main/java/com/jeeplus/modules/workstaff/service/WorkStaffBasicInfoService.java

@@ -142,6 +142,15 @@ public class WorkStaffBasicInfoService extends CrudService<WorkStaffBasicInfoDao
     public WorkStaffBasicInfo get(String id) {
 		return super.get(id);
 	}
+
+    /**
+     * 根据用户id,多表查询获取用户入职信息
+     * @param userId
+     * @return
+     */
+    public WorkStaffBasicInfo getWorkStaffBasicInfoByUserId(String userId) {
+		return dao.getWorkStaffBasicInfoByUserId(userId);
+	}
 	public Integer getByCompany(WorkStaffBasicInfo workStaffBasicInfo) {
 	  return workStaffAchivesDao.getByCompany(workStaffBasicInfo);
 	}

+ 21 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageDao.xml

@@ -1010,4 +1010,25 @@
 			a.id = #{id}
 		</where>
 	</select>
+
+	<select id="getProjectReportedAreaByParentId" resultType="com.jeeplus.modules.sys.entity.Area">
+		select
+		  id,
+		  parent_id,
+		  parent_ids,
+		  name,
+		  sort,
+		  code,
+		  type,
+		  create_by,
+		  create_date,
+		  update_by,
+		  update_date,
+		  remarks,
+		  del_flag
+		from
+		  project_reported_area
+		where
+			del_flag = 0 and parent_id = #{parentId}
+	</select>
 </mapper>

+ 131 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsReported.xml

@@ -0,0 +1,131 @@
+<?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.ruralprojectrecords.dao.RuralProjectRecordsReportedDao">
+
+	<sql id="projectRecordsColumns">
+	</sql>
+
+	
+    
+	<!--<select id="get" resultType="RuralProjectRecordsReported" >
+
+	</select>-->
+
+	<insert id="insert">
+		insert into rural_project_records_reported (
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			ProjectName,
+			xmFZR,
+			WeiTuoDW,
+			LianXiDH,
+			TouZiXZ,
+			ProjectType,
+			HeTongLeiXing,
+			ZiXunHTBH,
+			BaoGaoShuQianFaDate,
+			ZiXunShouRu,
+			zaoJiaShiZhengHao,
+			s1,
+			s2,
+			s3,
+			PorjectStruct,
+			FloorUp,
+			FloorDown,
+			GCGM_Value,
+			GCGM_Unit,
+			PorjectUse,
+			ZiXunBDE,
+			ZiXunBDE_TJ,
+			ZiXunBDE_AZ,
+			Cal_TJ_Percent,
+			Cal_AZ_Percent,
+			Cal_ZZJ_Unit,
+			Cal_ZZJ_TJ_Unit,
+			Cal_ZZJ_AZ_Unit,
+			HeTongJia,
+			SongShenJia,
+			ShenDingJia,
+			JingHeJianE,
+			JingHeJianLv,
+			GCYL,
+			SNYL,
+			YBTYL,
+			RGGRYL,
+			GCYL_PerUnit,
+			SNYL_PerUnit,
+			YBTYL_PerUnit,
+			RGGRYL_PerUnit,
+			TJ_Project,
+			ZS_Project,
+			AZ_Project,
+			SZ_Project,
+			FGYL_Project,
+			QT_Projec
+		)
+		values
+		  (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{ProjectName},
+			#{xmFZR},
+			#{WeiTuoDW},
+			#{LianXiDH},
+			#{TouZiXZ},
+			#{ProjectType},
+			#{HeTongLeiXing},
+			#{ZiXunHTBH},
+			#{BaoGaoShuQianFaDate},
+			#{ZiXunShouRu},
+			#{zaoJiaShiZhengHao},
+			#{s1},
+			#{s2},
+			#{s3},
+			#{PorjectStruct},
+			#{FloorUp},
+			#{FloorDown},
+			#{GCGM_Value},
+			#{GCGM_Unit},
+			#{PorjectUse},
+			#{ZiXunBDE},
+			#{ZiXunBDE_TJ},
+			#{ZiXunBDE_AZ},
+			#{Cal_TJ_Percent},
+			#{Cal_AZ_Percent},
+			#{Cal_ZZJ_Unit},
+			#{Cal_ZZJ_TJ_Unit},
+			#{Cal_ZZJ_AZ_Unit},
+			#{HeTongJia},
+			#{SongShenJia},
+			#{ShenDingJia},
+			#{JingHeJianE},
+			#{JingHeJianLv},
+			#{GCYL},
+			#{SNYL},
+			#{YBTYL},
+			#{RGGRYL},
+			#{GCYL_PerUnit},
+			#{SNYL_PerUnit},
+			#{YBTYL_PerUnit},
+			#{RGGRYL_PerUnit},
+			#{TJ_Project},
+			#{ZS_Project},
+			#{AZ_Project},
+			#{SZ_Project},
+			#{FGYL_Project},
+			#{QT_Projec}
+		  )
+	</insert>
+
+
+</mapper>

+ 27 - 0
src/main/resources/mappings/modules/sys/UserDao.xml

@@ -464,6 +464,33 @@
 		AND uo.status IN ('试用','正式','劳务')
 		ORDER BY a.name
 	</select>
+
+	<!-- 根据OfficeId获取用户(树查询用户时用) -->
+	<select id="findUserByOfficeIdAndNameOnReported" resultType="User" useCache="true">
+		SELECT
+		a.id, a.name, a.login_name,a.photo
+		,so.name as "office.name"
+		FROM sys_user a
+		left join sys_office so on so.id = a.office_id
+		LEFT JOIN work_staff_achives uo ON uo.user_id = a.id
+		left join work_staff_certificate wsc on wsc.staff_id = uo.id
+		LEFT JOIN sys_office o ON o.id = uo.office_id
+		WHERE a.del_flag = #{DEL_FLAG_NORMAL}
+		and wsc.name ='注册/资格证'
+		AND o.del_flag = #{DEL_FLAG_NORMAL}
+		<if test="office != null and office.id != null and office.id !='' ">
+			AND uo.office_id = #{office.id}
+		</if>
+		<if test="name != null and name !='' ">
+			AND a.name like concat ('%',#{name},'%')
+		</if>
+		<if test="company != null and company.id != null and company.id !='' ">
+			AND uo.company_id = #{company.id}
+		</if>
+		AND uo.status IN ('试用','正式','劳务')
+		ORDER BY a.name
+	</select>
+
 	<!-- 根据OfficeId获取用户(树查询用户时用) -->
 	<select id="findUserByOffices" resultType="User" useCache="true">
 		SELECT

+ 1 - 0
src/main/resources/mappings/modules/workcontractinfo/WorkContractInfoDao.xml

@@ -111,6 +111,7 @@
 		a.contractTypeDoc AS "contractTypeDoc",
 		a.another_contract_num AS "anotherContractNum",
 		client.name AS "client.name",
+		client.telephone AS "client.telephone",
 		a.is_total AS "isTotal",
 		a.total_contract_id AS "totalContractId",
 		a.status AS "status",

+ 0 - 1
src/main/resources/mappings/modules/workstaff/WorkStaffBasicInfoDao.xml

@@ -455,7 +455,6 @@
 		LEFT JOIN sys_office o on o.id=a.office_id
 		LEFT JOIN work_job_grade jg ON jg.id = a.job_grade
 		where a.user_id=#{userId,jdbcType=VARCHAR}
-		and a.status = "试用"
 	</select>
 
     <select id="queryMaxNoWithCompany" resultType="String">

+ 104 - 0
src/main/webapp/WEB-INF/tags/sys/reportedtreeselectUser.tag

@@ -0,0 +1,104 @@
+<%@ tag language="java" pageEncoding="UTF-8"%>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%@ attribute name="id" type="java.lang.String" required="true" description="编号"%>
+<%@ attribute name="name" type="java.lang.String" required="true" description="隐藏域名称(ID)"%>
+<%@ attribute name="value" type="java.lang.String" required="true" description="隐藏域值(ID)"%>
+<%@ attribute name="labelName" type="java.lang.String" required="true" description="输入框名称(Name)"%>
+<%@ attribute name="labelValue" type="java.lang.String" required="true" description="输入框值(Name)"%>
+<%@ attribute name="title" type="java.lang.String" required="true" description="选择框标题"%>
+<%@ attribute name="url" type="java.lang.String" required="true" description="树结构数据地址"%>
+<%@ attribute name="checked" type="java.lang.Boolean" required="false" description="是否显示复选框,如果不需要返回父节点,请设置notAllowSelectParent为true"%>
+<%@ attribute name="extId" type="java.lang.String" required="false" description="排除掉的编号(不能选择的编号)"%>
+<%@ attribute name="isAll" type="java.lang.Boolean" required="false" description="是否列出全部数据,设置true则不进行数据权限过滤(目前仅对Office有效)"%>
+<%@ attribute name="notAllowSelectRoot" type="java.lang.Boolean" required="false" description="不允许选择根节点"%>
+<%@ attribute name="notAllowSelectParent" type="java.lang.Boolean" required="false" description="不允许选择父节点"%>
+<%@ attribute name="module" type="java.lang.String" required="false" description="过滤栏目模型(只显示指定模型,仅针对CMS的Category树)"%>
+<%@ attribute name="selectScopeModule" type="java.lang.Boolean" required="false" description="选择范围内的模型(控制不能选择公共模型,不能选择本栏目外的模型)(仅针对CMS的Category树)"%>
+<%@ attribute name="allowClear" type="java.lang.Boolean" required="false" description="是否允许清除"%>
+<%@ attribute name="allowInput" type="java.lang.Boolean" required="false" description="文本框可填写"%>
+<%@ attribute name="cssClass" type="java.lang.String" required="false" description="css样式"%>
+<%@ attribute name="cssStyle" type="java.lang.String" required="false" description="css样式"%>
+<%@ attribute name="smallBtn" type="java.lang.Boolean" required="false" description="缩小按钮显示"%>
+<%@ attribute name="hideBtn" type="java.lang.Boolean" required="false" description="是否显示按钮"%>
+<%@ attribute name="disabled" type="java.lang.String" required="false" description="是否限制选择,如果限制,设置为disabled"%>
+<%@ attribute name="dataMsgRequired" type="java.lang.String" required="false" description=""%>
+	<input id="${id}Id" name="${name}" class="${cssClass}" type="hidden" value="${value}"/>
+	<div class="input-group">
+		<input id="${id}Name" name="${labelName}" ${allowInput?'':'readonly="readonly"'}  type="text" value="${labelValue}" data-msg-required="${dataMsgRequired}"
+		class="${cssClass}" style="background-color: #ffffff; ${cssStyle} "/>
+       		
+    </div>
+	 <label id="${id}Name-error" class="error" for="${id}Name" style="display:none"></label>
+<script type="text/javascript">
+	$("#${id}Button, #${id}Name").click(function(){
+		// 是否限制选择,如果限制,设置为disabled
+		if ($("#${id}Button").hasClass("disabled")){
+			return true;
+		}
+		// 正常打开	
+		top.layer.open({
+		    type: 2, 
+		    area: ['300px', '420px'],
+		    title:"选择${title}",
+		    ajaxData:{selectIds: $("#${id}Id").val()},
+		    content: "${ctx}/tag/treeselectReported?url="+encodeURIComponent("${url}")+"&module=${module}&checked=${checked}&extId=${extId}&isAll=${isAll}" ,
+		    btn: ['确定', '关闭']
+    	       ,yes: function(index, layero){ //或者使用btn1
+						var tree = layero.find("iframe")[0].contentWindow.tree;//h.find("iframe").contents();
+						var ids = [], names = [],officeIds = [], nodes = [];
+						if ("${checked}" == "true"){
+							nodes = tree.getCheckedNodes(true);
+						}else{
+							nodes = tree.getSelectedNodes();
+						}
+						for(var i=0; i<nodes.length; i++) {//<c:if test="${checked && notAllowSelectParent}">
+							if (nodes[i].isParent){
+								continue; // 如果为复选框选择,则过滤掉父节点
+							}//</c:if><c:if test="${notAllowSelectRoot}">
+							if (nodes[i].level == 0){
+								//top.$.jBox.tip("不能选择根节点("+nodes[i].name+")请重新选择。");
+								top.layer.msg("不能选择根节点("+nodes[i].name+")请重新选择。", {icon: 0});
+								return false;
+							}//</c:if><c:if test="${notAllowSelectParent}">
+							if (nodes[i].isParent){
+								//top.$.jBox.tip("不能选择父节点("+nodes[i].name+")请重新选择。");
+								//layer.msg('有表情地提示');
+								top.layer.msg("不能选择父节点("+nodes[i].name+")请重新选择。", {icon: 0});
+								return false;
+							}//</c:if><c:if test="${not empty module && selectScopeModule}">
+							if (nodes[i].module == ""){
+								//top.$.jBox.tip("不能选择公共模型("+nodes[i].name+")请重新选择。");
+								top.layer.msg("不能选择公共模型("+nodes[i].name+")请重新选择。", {icon: 0});
+								return false;
+							}else if (nodes[i].module != "${module}"){
+								//top.$.jBox.tip("不能选择当前栏目以外的栏目模型,请重新选择。");
+								top.layer.msg("不能选择当前栏目以外的栏目模型,请重新选择。", {icon: 0});
+								return false;
+							}//</c:if>
+							ids.push(nodes[i].id);
+							names.push(nodes[i].name);
+							officeIds.push(nodes[i].officeId);
+							//<c:if test="${!checked}">
+							break; // 如果为非复选框选择,则返回第一个选择  </c:if>
+						}
+						if(ids.length>1){
+							top.layer.msg("不能进行多选,请重新选择。", {icon: 0});
+							return false;
+						}
+						$("#${id}Id").val(ids.join(",").replace(/u_/ig,""));
+						$("#${id}Name").val(names.join(","));
+						var id = '${id}';
+						var w=id.indexOf("_"); // v 的下标为 2
+						var str = id.substring(0,w+1);
+						$("#"+str+"zhucezigezh_ID").val(officeIds.join(","));
+						console.log(officeIds)
+						$("#${id}Name").focus();
+						top.layer.close(index);
+				    	       },
+    	cancel: function(index){ //或者使用btn2
+    	           //按钮【按钮二】的回调
+    	       }
+		}); 
+	
+	});
+</script>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1206 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/reportedForm.jsp


+ 2 - 1
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/ruralProjectMessageList.jsp

@@ -394,7 +394,8 @@
 						/*上报相关按钮*/
 						if(d.projectReportRecordStatus == 5 || d.projectReportStatus == 5){
 							if(d.reportedState == 0 || d.reportedState == 6){
-								xml+="<a href=\"${ctx}/ruralProject/ruralProjectMessage/updateReported?id=" + d.id + "\" style='background-color: #5FB878' onclick=\"return confirmx('确认要上报吗?', this.href)\" class=\"op-btn op-btn-delete\" ><i class=\"fa fa-plus\"></i> 上报</a>";
+								xml+="<a href=\"#\" onclick=\"openDialogre('上报管理', '${ctx}/ruralProject/ruralProjectMessage/updateReported?id=" +  d.id + " ','95%', '95%','','上报,关闭')\" style='background-color: #5FB878' class=\"op-btn op-btn-delete\" ><i class=\"fa fa-plus\"></i> 上报</a>";
+								/*xml+="<a href=\"${ctx}/ruralProject/ruralProjectMessage/updateReported?id=" + d.id + "\" style='background-color: #5FB878' onclick=\"return confirmx('确认要上报吗?', this.href)\" class=\"op-btn op-btn-delete\" ><i class=\"fa fa-plus\"></i> 上报</a>";*/
 							}
 						}
 						if(d.deleteAdmin != undefined && d.deleteAdmin =="1")

+ 219 - 0
src/main/webapp/webpage/modules/sys/tagTreeselectReported.jsp

@@ -0,0 +1,219 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>数据选择</title>
+	<meta name="decorator" content="blank"/>
+	<%@include file="/webpage/include/treeview.jsp" %>
+	<script type="text/javascript">
+		var key, lastValue = "", nodeList = [], type = getQueryString("type", "${url}");
+		var tree, setting = {view:{selectedMulti:false,dblClickExpand:false},check:{enable:"${checked}",nocheckInherit:true},
+				async:{enable:(type==3),url:"${ctx}/sys/user/treeDataByNameOnReported",autoParam:["id=officeId","projectId=projectId","selectName=selectName"]},
+				data:{simpleData:{enable:true}},callback:{<%--
+					beforeClick: function(treeId, treeNode){
+						if("${checked}" == "true"){
+							//tree.checkNode(treeNode, !node.checked, true, true);
+							tree.expandNode(treeNode, true, false, false);
+						}
+					}, --%>
+					onClick:function(event, treeId, treeNode){
+						tree.expandNode(treeNode);
+					},onCheck: function(e, treeId, treeNode){
+						var nodes = tree.getCheckedNodes(true);
+						for (var i=0, l=nodes.length; i<l; i++) {
+							tree.expandNode(nodes[i], true, false, false);
+						}
+						return false;
+					},onAsyncSuccess: function(event, treeId, treeNode, msg){
+						var nodes = tree.getNodesByParam("pId", treeNode.id, null);
+						for (var i=0, l=nodes.length; i<l; i++) {
+							try{tree.checkNode(nodes[i], treeNode.checked, true);}catch(e){}
+							//tree.selectNode(nodes[i], false);
+						}
+						selectCheckNode();
+					},onDblClick: function(){//<c:if test="${!checked}">
+						top.$.jBox.getBox().find("button[value='ok']").trigger("click");
+						//$("input[type='text']", top.mainFrame.document).focus();//</c:if>
+					}
+				}
+			};
+		function expandNodes(nodes) {
+			if (!nodes) return;
+			for (var i=0, l=nodes.length; i<l; i++) {
+				tree.expandNode(nodes[i], true, false, false);
+				if (nodes[i].isParent && nodes[i].zAsync) {
+					expandNodes(nodes[i].children);
+				}
+			}
+		}
+		$(document).ready(function(){
+			$.get("${ctx}${url}${fn:indexOf(url,'?')==-1?'?':'&'}&extId=${extId}&isAll=${isAll}&module=${module}&t="
+					+ new Date().getTime()+"&branchOffice=${branchOffice}", function(zNodes){
+				// 初始化树结构
+				tree = $.fn.zTree.init($("#tree"), setting, zNodes);
+				
+				// 默认展开一级节点
+				var nodes = tree.getNodesByParam("level", 0);
+				for(var i=0; i<nodes.length; i++) {
+					tree.expandNode(nodes[i], true, false, false);
+				}
+				//异步加载子节点(加载用户)
+				var nodesOne = tree.getNodesByParam("isParent", true);
+				for(var j=0; j<nodesOne.length; j++) {
+					tree.reAsyncChildNodes(nodesOne[j],"!refresh",false);
+				}
+				selectCheckNode();
+			});
+			key = $("#key");
+			key.bind("focus", focusKey).bind("blur", blurKey).bind("change cut input propertychange", searchNode);
+			key.bind('keydown', function (e){if(e.which == 13){searchNode();}});
+			setTimeout("search();", "300");
+		});
+		
+		// 默认选择节点
+		function selectCheckNode(){
+			var ids = "${selectIds}".split(",");
+			for(var i=0; i<ids.length; i++) {
+				var node = tree.getNodeByParam("id", (type==3?"u_":"")+ids[i]);
+				if("${checked}" == "true"){
+					try{tree.checkNode(node, true, true);}catch(e){}
+					tree.selectNode(node, false);
+				}else{
+					tree.selectNode(node, true);
+				}
+			}
+		}
+	  	function focusKey(e) {
+			if (key.hasClass("empty")) {
+				key.removeClass("empty");
+			}
+		}
+		function blurKey(e) {
+			if (key.get(0).value === "") {
+				key.addClass("empty");
+			}
+			searchNode(e);
+		}
+		
+		//搜索节点
+		function searchNode() {
+			// 取得输入的关键字的值
+			var value = $.trim(key.get(0).value);
+			
+			// 按名字查询
+			var keyType = "name";<%--
+			if (key.hasClass("empty")) {
+				value = "";
+			}--%>
+			
+			// 如果和上次一次,就退出不查了。
+			if (lastValue === value) {
+				return;
+			}
+			
+			// 保存最后一次
+			lastValue = value;
+			
+			var nodes = tree.getNodes();
+			// 如果要查空字串,就退出不查了。
+			if (value == "") {
+				showAllNode(nodes);
+				return;
+			}
+			hideAllNode(nodes);
+			nodeList = tree.getNodesByParamFuzzy(keyType, value);
+			updateNodes(nodeList);
+		}
+		
+		//隐藏所有节点
+		function hideAllNode(nodes){			
+			nodes = tree.transformToArray(nodes);
+			for(var i=nodes.length-1; i>=0; i--) {
+				tree.hideNode(nodes[i]);
+			}
+		}
+		
+		//显示所有节点
+		function showAllNode(nodes){			
+			nodes = tree.transformToArray(nodes);
+			for(var i=nodes.length-1; i>=0; i--) {
+				/* if(!nodes[i].isParent){
+					tree.showNode(nodes[i]);
+				}else{ */
+					if(nodes[i].getParentNode()!=null){
+						tree.expandNode(nodes[i],false,false,false,false);
+					}else{
+						tree.expandNode(nodes[i],true,true,false,false);
+					}
+					tree.showNode(nodes[i]);
+					showAllNode(nodes[i].children);
+				/* } */
+			}
+		}
+		
+		//更新节点状态
+		function updateNodes(nodeList) {
+			tree.showNodes(nodeList);
+			for(var i=0, l=nodeList.length; i<l; i++) {
+				
+				//展开当前节点的父节点
+				tree.showNode(nodeList[i].getParentNode()); 
+				//tree.expandNode(nodeList[i].getParentNode(), true, false, false);
+				//显示展开符合条件节点的父节点
+				while(nodeList[i].getParentNode()!=null){
+					tree.expandNode(nodeList[i].getParentNode(), true, false, false);
+					nodeList[i] = nodeList[i].getParentNode();
+					tree.showNode(nodeList[i].getParentNode());
+				}
+				//显示根节点
+				tree.showNode(nodeList[i].getParentNode());
+				//展开根节点
+				tree.expandNode(nodeList[i].getParentNode(), true, false, false);
+			}
+		}
+
+		function copyText() {
+			var selectName = $("#selectName").val();
+			$.ajax({
+				url:"${ctx}/sys/user/treeDataByNameOnReported",
+				async:false,
+				type:"post",
+				success:function (result) {
+					$.get("${ctx}${url}${fn:indexOf(url,'?')==-1?'?':'&'}&extId=${extId}&isAll=${isAll}&module=${module}&t="
+							+ new Date().getTime()+"&branchOffice=${branchOffice}"+"&selectName="+selectName, function(zNodes){
+						// 初始化树结构
+						tree = $.fn.zTree.init($("#tree"), setting, zNodes);
+
+						// 默认展开一级节点
+						var nodes = tree.getNodesByParam("level", 0);
+						for(var i=0; i<nodes.length; i++) {
+							tree.expandNode(nodes[i], true, false, false);
+						}
+						//异步加载子节点(加载用户)
+						var nodesOne = tree.getNodesByParam("isParent", true);
+						for(var j=0; j<nodesOne.length; j++) {
+							tree.reAsyncChildNodes(nodesOne[j],"!refresh",false);
+						}
+						selectCheckNode();
+					});
+					key = $("#key");
+					key.bind("focus", focusKey).bind("blur", blurKey).bind("change cut input propertychange", searchNode);
+					key.bind('keydown', function (e){if(e.which == 13){searchNode();}});
+					setTimeout("search();", "300");
+				}
+			})
+		}
+		
+		
+	</script>
+</head>
+<body>
+	<div class="input-group">
+		<input htmlEscape="false"  class="form-control layui-input" id="selectName" name="selectName" value="" placeholder="人员搜索">
+		<span class="input-group-btn">
+				 <button type="button"  id="Button" onclick="copyText()" style="height: 40px;" class="layui-btn layui-btn-sm"><i class="fa fa-search"> 查询</i>
+				 </button>
+			</span>
+	</div>
+	<div id="tree" class="ztree" style="padding:15px 20px;"></div>
+</body>