Enford 5 rokov pred
rodič
commit
7216ffcdab
23 zmenil súbory, kde vykonal 2971 pridanie a 686 odobranie
  1. 138 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/entity/ConstructionProjectTemporary.java
  2. 8 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/mapper/ConstructionProjectMapper.java
  3. 26 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/mapper/ConstructionProjectTemporaryMapper.java
  4. 113 1
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/mapper/xml/ConstructionProjectMapper.xml
  5. 223 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/mapper/xml/ConstructionProjectTemporaryMapper.xml
  6. 86 1
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/service/ConstructionProjectService.java
  7. 332 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/service/ConstructionProjectTemporaryService.java
  8. 309 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/util/RecursiveUtil.java
  9. 9 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/util/Result.java
  10. 91 112
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/util/TreeTableUtil.java
  11. 88 129
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/web/ConstructionProjectController.java
  12. 311 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/web/ConstructionProjectTemporaryController.java
  13. 9 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/entity/Project.java
  14. 56 0
      src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionDateForm.jsp
  15. 227 0
      src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionDateList.js
  16. 34 0
      src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionDateList.jsp
  17. 272 0
      src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionForm.js
  18. 37 56
      src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionForm.jsp
  19. 270 195
      src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionList.js
  20. 44 77
      src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionList.jsp
  21. 0 115
      src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionPlanForm.jsp
  22. 255 0
      src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionPowerList.js
  23. 33 0
      src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionPowerList.jsp

+ 138 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/entity/ConstructionProjectTemporary.java

@@ -0,0 +1,138 @@
+package com.jeeplus.modules.sg.managementcenter.constructionProject.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+public class ConstructionProjectTemporary extends DataEntity<ConstructionProjectTemporary> {
+    private String lineName;//线路名称
+    private String projectName;//项目名称
+    private String projectNumber;//项目定义号
+    private String powerLine;//停电线路
+    private String powerScope;//停电范围
+    private String powerFlagPackage;//是否为停电打包项目
+    private String parentId;//
+    private String parentIds;//
+    private Date arrangeTime;//安排月分
+    private Date planTime;//供货计划到日
+    private String flagPower;//是否带点
+    private String status;//是否安排计划(0-未安排,1-待安排)
+
+    private String htmlStatus;
+
+    public String getHtmlStatus() {
+        return htmlStatus;
+    }
+
+    public void setHtmlStatus(String htmlStatus) {
+        this.htmlStatus = htmlStatus;
+    }
+
+    public String getFlagPower() {
+        return flagPower;
+    }
+
+    public void setFlagPower(String flagPower) {
+        this.flagPower = flagPower;
+    }
+
+    private String lineStatus;//0-是线路 1-不是线路
+    @JsonFormat(pattern = "YYYY-MM")
+    public Date getArrangeTime() {
+        return arrangeTime;
+    }
+
+    public void setArrangeTime(Date arrangeTime) {
+        this.arrangeTime = arrangeTime;
+    }
+
+    @JsonFormat(pattern = "YYYY-MM-DD")
+    public Date getPlanTime() {
+        return planTime;
+    }
+
+    public void setPlanTime(Date planTime) {
+        this.planTime = planTime;
+    }
+
+    public String getLineStatus() {
+        return lineStatus;
+    }
+
+    public void setLineStatus(String lineStatus) {
+        this.lineStatus = lineStatus;
+    }
+
+    public String getLineName() {
+        return lineName;
+    }
+
+    public void setLineName(String lineName) {
+        this.lineName = lineName;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getProjectNumber() {
+        return projectNumber;
+    }
+
+    public void setProjectNumber(String projectNumber) {
+        this.projectNumber = projectNumber;
+    }
+
+    public String getPowerLine() {
+        return powerLine;
+    }
+
+    public void setPowerLine(String powerLine) {
+        this.powerLine = powerLine;
+    }
+
+    public String getPowerScope() {
+        return powerScope;
+    }
+
+    public void setPowerScope(String powerScope) {
+        this.powerScope = powerScope;
+    }
+
+    public String getPowerFlagPackage() {
+        return powerFlagPackage;
+    }
+
+    public void setPowerFlagPackage(String powerFlagPackage) {
+        this.powerFlagPackage = powerFlagPackage;
+    }
+
+    public String getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(String parentId) {
+        this.parentId = parentId;
+    }
+
+    public String getParentIds() {
+        return parentIds;
+    }
+
+    public void setParentIds(String parentIds) {
+        this.parentIds = parentIds;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+}

+ 8 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/mapper/ConstructionProjectMapper.java

@@ -3,6 +3,8 @@ package com.jeeplus.modules.sg.managementcenter.constructionProject.mapper;
 import com.jeeplus.core.persistence.BaseMapper;
 import com.jeeplus.core.persistence.annotation.MyBatisMapper;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+import io.swagger.models.auth.In;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -17,4 +19,10 @@ public interface ConstructionProjectMapper extends BaseMapper<ConstructionProjec
     Integer updateSpecificLine(@Param(value = "list") List<ConstructionProject> list);
 
     Integer updateArrangeTimeLine(@Param(value = "list") List<ConstructionProject> list);
+
+    List<Project> findListProject(@Param(value = "list") List<String> strings);
+
+    List<Project> findAllListProject(Project project);
+
+    Integer updateListProject(@Param(value = "list")List<Project> list);
 }

+ 26 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/mapper/ConstructionProjectTemporaryMapper.java

@@ -0,0 +1,26 @@
+package com.jeeplus.modules.sg.managementcenter.constructionProject.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@MyBatisMapper
+public interface ConstructionProjectTemporaryMapper extends BaseMapper<ConstructionProjectTemporary> {
+    Integer insertList(@Param("list") List<ConstructionProjectTemporary> list);
+
+    List<ConstructionProjectTemporary> findListTemporary(@Param(value = "list") List<String> strings);
+    Integer updateStatus(ConstructionProjectTemporary constructionProjectTemporary);
+    List<ConstructionProjectTemporary> findTreeList(ConstructionProjectTemporary constructionProjectTemporary);
+    void updateTime(ConstructionProjectTemporary constructionProjectTemporary);
+
+    //情况表中所有数据
+    Integer deleteAll();
+    //修改停电 带电
+    Integer updatePower(ConstructionProjectTemporary constructionProjectTemporary);
+
+}

+ 113 - 1
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/mapper/xml/ConstructionProjectMapper.xml

@@ -32,7 +32,111 @@
 		specificTime AS "specificTime",
 		projectStatus AS "projectStatus"
 	</sql>
-    
+
+	<sql id="projectColumns">
+		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.pro_type As "type",
+		a.demand_unit AS "demandUnit",
+		a.bdz_name As "bdzName",
+	  	a.line_name As "lineName",
+	  	a.require_name AS "requireName",
+	  	a.project_id AS "projectId",
+	  	a.project_name AS "projectName",
+	  	a.project_number AS "projectNumber",
+		a.project_manage_role AS "projectManageRole",
+		a.distribution_engineering AS "distributionEngineering",
+		a.distribution_materials AS "distributionMaterials",
+		a.distribution_system AS "distributionSystem",
+		a.distribution_policy AS "distributionPolicy",
+		a.management_leader AS "managementLeader",
+		a.run_unit AS "runUnit",
+		a.run_unit_role AS "runUnitRole",
+		a.through_research_role AS "throughResearchRole",
+		a.construction_unit AS "constructionUnit",
+		a.construction_unit_role AS "constructionUnitRole",
+		a.construction_unit_manage AS "constructionUnitManage",
+		a.construction_unit_leader AS "constructionUnitLeader",
+    	a.design_unit AS "design_unit",
+		a.design_unit_manage AS "designUnitManage",
+		a.design_unit_leader AS "designUnitLeader",
+		a.clarificaiton_type AS "clarificaitonType",
+		a.build_classification_resons As "bulidClassificationResons",
+		a.bulbid_resons As "bulbidResons",
+		a.asic_equipment AS "asicEquipment",
+		a.run_the_class As "runTheClass",
+		a.project_team AS "projectTeam",
+		a.cost_estimate As "costEstimate",
+		a.whether_rhe_upwind AS "whetherRheUpwind",
+		a.sure_da_date AS "sureDaDate",
+		a.text_remark AS "textRemark",
+		a.power_line AS "powerLine",
+    	a.power_scope AS "powerScope",
+    	a.project_type AS "projectType",
+        a.power_flag_package AS "powerFlagPackage",
+     	a.preliminary_judgment AS "preliminaryJudgment",
+    	a.flag_civil_engineering AS "flagCivilEngineering",
+    	a.steel_tube_pole AS "steelTubePole",
+    	a.flag_approval_planning AS "flagApprovalPlanning",
+    	a.equ_create_type AS "equCreateType",
+    	a.equ_create_size AS "equCreateSize",
+    	a.flag_new_equ_name AS "flagNewEquName",
+    	a.include_bdz_news AS "includeBdzNews",
+    	a.flag_no_electrical AS "flagNoElectrical",
+		a.drawings_work AS "drawingsWork",
+    	a.flag_automation AS "flagAutomation",
+    	a.two_and_three_remote AS "twoAndThreeRemote",
+    	a.phone_style AS "phoneStyle",
+    	a.stay_open_area AS "stayOpenArea",
+    	a.ring_network_cabinet AS "ringNetworkCabinet",
+    	a.station_dtu AS "stationDtu",
+    	a.reserve_number AS "reserveNumber",
+    	a.run_unit_inspection_role AS "runUnitInspectionRole",
+    	a.construction_contract_unit AS "constructionContractUnit",
+    	a.construction_contract_rate AS "constructionContractRate",
+    	a.construction_contract_sub AS "constructionContractSub",
+    	a.construction_skill_by_full AS "constructionSkillByFull",
+    	a.automated_remarks AS "automatedRemarks",
+    	a.skill_by_full AS "skillByFull",
+		a.status As "status",
+		a.acquisition_status AS "acquisitionStatus",
+		a.construction_status AS "constructionStatus",
+		a.whether_close_status AS "whetherCloseStatus",
+		a.earlyMaterial AS "earlyMaterial",
+		a.preConstruction AS "preConstruction"
+	</sql>
+
+	<select id="findListProject" parameterType="java.util.List" resultType="com.jeeplus.modules.sg.managementcenter.project.entity.Project" >
+		SELECT
+		<include refid="projectColumns"/>
+		FROM xm_project_details a
+		<where>
+			a.del_flag = '0'
+			and a.project_number in
+			<if test="list!= null">
+				<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
+					#{item}
+				</foreach>
+			</if>
+		</where>
+	</select>
+
+	<select id="findAllListProject" resultType="com.jeeplus.modules.sg.managementcenter.project.entity.Project" >
+		SELECT
+		<include refid="projectColumns"/>
+		FROM xm_project_details a
+		<where>
+			a.del_flag = '0'
+			<if test="rezkey != null and  rezkey != ''">
+				AND a.rezkey = #{rezkey}
+			</if>
+		</where>
+	</select>
 	<select id="get" resultType="com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject" >
 		SELECT 
 			<include refid="constructionColumns"/>
@@ -268,6 +372,14 @@
 		</foreach>
 	</update>
 
+	<update id="updateListProject">
+		<foreach collection="list" item="item" index="index" open="" close="" separator=",">
+			UPDATE xm_project_details SET
+			rezkey = #{item.rezkey}
+			WHERE project_number = #{item.projectNumber}
+		</foreach>
+	</update>
+
 	<!--安排计划项目具体时间,根据项目进行分类-->
 	<update id="updateArrangeTimeLine">
 		<foreach collection="list" item="item" index="index" open="" close="" separator=",">

+ 223 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/mapper/xml/ConstructionProjectTemporaryMapper.xml

@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.sg.managementcenter.constructionProject.mapper.ConstructionProjectTemporaryMapper">
+    
+	<sql id="constructionColumns">
+		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.line_name AS "lineName",
+		a.project_name AS "projectName",
+		a.project_number AS "projectNumber",
+		a.power_line AS "powerLine",
+		a.power_scope AS "powerScope",
+		a.power_flag_package AS "powerFlagPackage",
+		a.parent_id AS "parentId",
+		a.parent_ids AS "parentIds",
+	  	a.arrange_time AS "arrangeTime",
+		a.plan_time AS "planTime",
+		a.flagPower AS "flagPower",
+		a.htmlStatus AS "htmlStatus",
+		a.status AS "status"
+	</sql>
+
+	<select id="get" resultType="com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary" >
+		SELECT 
+			<include refid="constructionColumns"/>
+		FROM ms_construction_project_temporary a
+		WHERE a.id = #{id}
+	</select>
+
+	<select id="findListTemporary" parameterType="java.util.List" resultType="com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary" >
+		SELECT
+		<include refid="constructionColumns"/>
+		FROM ms_construction_project_temporary a
+		<where>
+			a.del_flag = '0'
+			<if test="projectNumbers != null">
+				and a.project_number
+				<foreach collection="projectNumbers" index="index" item="item" open="(" separator="," close=")">
+					#{item}
+				</foreach>
+			</if>
+		</where>
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary" >
+		SELECT
+			<include refid="constructionColumns"/>
+		FROM ms_construction_project_temporary a
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+			<if test="status != null and status != ''">
+				AND a.status = #{status}
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.htmlStatus DESC
+			</otherwise>
+		</choose>
+	</select>
+
+	<select id="findTreeList" resultType="com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary" >
+		SELECT
+		<include refid="constructionColumns"/>
+		FROM ms_construction_project_temporary a
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+			<if test="status != null and status != ''">
+				AND a.status = '2' or a.status = '1'
+			</if>
+		</where>
+	</select>
+
+	<select id="findAllList" resultType="com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary" >
+		SELECT
+		<include refid="constructionColumns"/>
+		FROM ms_construction_project_temporary a
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+			<if test="status != null and status != ''">
+				AND a.status = '2' or a.status = '0'
+			</if>
+			<if test="parentId != null and parentId != ''">
+				AND a.parent_id = #{parentId}
+			</if>
+		</where>
+	</select>
+	
+	<insert id="insert">
+		  INSERT INTO ms_construction_project_temporary(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			line_name,
+			project_name,
+			project_number,
+			power_line,
+			power_scope,
+			power_flag_package,
+			parent_id,
+			parent_ids,
+			status
+		) VALUES
+		(
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{lineName},
+			#{projectName},
+			#{projectNumber},
+			#{powerLine},
+			#{powerScope},
+			#{powerFlagPackage},
+			#{parentId},
+			#{parentIds},
+			#{status}
+	</insert>
+
+	<insert id="insertList">
+		replace INTO ms_construction_project_temporary(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			line_name,
+			project_name,
+			project_number,
+			power_line,
+			power_scope,
+			power_flag_package,
+			parent_id,
+			parent_ids,
+			arrange_time,
+			flagPower,
+			htmlStatus,
+			plan_time,
+			status
+		) VALUES
+		<foreach collection="list" item="item" index="index" separator="," >
+			(
+			#{item.id},
+			#{item.createBy.id},
+			#{item.createDate},
+			#{item.updateBy.id},
+			#{item.updateDate},
+			#{item.remarks},
+			#{item.delFlag},
+			#{item.lineName},
+			#{item.projectName},
+			#{item.projectNumber},
+			#{item.powerLine},
+			#{item.powerScope},
+			#{item.powerFlagPackage},
+			#{item.parentId},
+			#{item.parentIds},
+			#{item.arrangeTime},
+			#{item.flagPower},
+			#{item.htmlStatus},
+			#{item.planTime},
+			#{item.status}
+			)
+		</foreach>
+	</insert>
+	<delete id="deleteAll">
+		DELETE FROM ms_construction_project_temporary
+	</delete>
+	<!--安排计划项目-->
+	<update id="updateStatus">
+		UPDATE ms_construction_project_temporary SET
+			status = #{status}
+		WHERE id = #{id}
+	</update>
+
+	<update id="updatePower">
+		UPDATE ms_construction_project_temporary SET
+			status = #{status},
+			htmlStatus = #{htmlStatus},
+			flagPower = #{flagPower}
+		WHERE id = #{id}
+	</update>
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM ms_construction_project_temporary
+		WHERE id = #{id}
+	</update>
+
+
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE ms_construction_project_temporary SET
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+
+	<update id="updateTime">
+		UPDATE ms_construction_project_temporary SET
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			plan_time =#{planTime}
+		WHERE id = #{id}
+	</update>
+</mapper>

+ 86 - 1
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/service/ConstructionProjectService.java

@@ -7,11 +7,14 @@ import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.mapper.ConstructionProjectMapper;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.util.RecursiveUtil;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.util.TreeTableUtil;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -27,10 +30,92 @@ public class ConstructionProjectService extends CrudService<ConstructionProjectM
 		return super.get(id);
 	}
 	
-	public List<ConstructionProject> findList(ConstructionProject constructionProject) {
+	public List<ConstructionProject> findList(List<Project> allListProject,ConstructionProject constructionProject) {
 		return super.findList(constructionProject);
 	}
 
+	//修改项目
+	@Transactional(readOnly = false)
+	public void updateListProject(List<Project> projects){
+		constructionProjectMapper.updateListProject(projects);
+	}
+
+    //查询安排计划项目
+    public List<Project> findListAllProject(List<Project> allListProject,ConstructionProject constructionProject){
+        String ids = "";
+        List<Project> projects = null;
+        if (null!=constructionProject && null!=constructionProject.getProjectNumber()){
+            ids = constructionProject.getProjectNumber();
+        }
+        if (!"".equals(ids)){
+            List<String> stringList = new ArrayList<String>();
+            String[] split = ids.split(",");
+            for (String str : split){
+                stringList.add(str);
+            }
+            projects = RecursiveUtil.getAllProjectRecursive(allListProject, stringList);
+        }
+        return projects;
+    }
+
+    public List<String> getProjectNumber(ConstructionProject constructionProject){
+		String ids = "";
+		List<String> stringList = null;
+		if (null!=constructionProject && null!=constructionProject.getProjectNumber()){
+			ids = constructionProject.getProjectNumber();
+		}
+		if (!"".equals(ids)){
+			stringList = new ArrayList<String>();
+			String[] split = ids.split(",");
+			for (String str : split){
+				stringList.add(str);
+			}
+		}
+		return stringList;
+	}
+	//查询安排计划项目getAllProjectNo
+	public List<Project> getAllProjectNo(List<Project> allListProject,ConstructionProject constructionProject){
+		String ids = "";
+		List<Project> projects = null;
+		if (null!=constructionProject && null!=constructionProject.getProjectNumber()){
+			ids = constructionProject.getProjectNumber();
+		}
+		if (!"".equals(ids)){
+			List<String> stringList = new ArrayList<String>();
+			String[] split = ids.split(",");
+			for (String str : split){
+				stringList.add(str);
+			}
+			projects = RecursiveUtil.getAllProjectNo(allListProject, stringList);
+		}
+		return projects;
+	}
+
+	public List<Project> allListProject(ConstructionProject constructionProject){
+		Project project = new Project();
+		project.setRezkey("0");
+		List<Project> allListProject = constructionProjectMapper.findAllListProject(project);
+		return allListProject;
+	}
+
+	//查询安排计划项目
+	public List<Project> findListProject(ConstructionProject constructionProject){
+        List<String> stringList = new ArrayList<String>();
+		String ids = "";
+		List<Project> projects = null;
+		if (null!=constructionProject && null!=constructionProject.getProjectNumber()){
+			ids = constructionProject.getProjectNumber();
+		}
+		if (!"".equals(ids)){
+			String[] split = ids.split(",");
+			for (String str : split){
+				stringList.add(str);
+			}
+			projects = constructionProjectMapper.findListProject(stringList);
+		}
+		return projects;
+	}
+
 	public Page<ConstructionProject> findPage(Page<ConstructionProject> page, ConstructionProject constructionProject) {
 		return super.findPage(page, constructionProject);
 	}

+ 332 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/service/ConstructionProjectTemporaryService.java

@@ -0,0 +1,332 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.managementcenter.constructionProject.service;
+
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.mapper.ConstructionProjectMapper;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.mapper.ConstructionProjectTemporaryMapper;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.util.RecursiveUtil;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.util.TreeTableUtil;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+
+@Service
+@Transactional(readOnly = true)
+public class ConstructionProjectTemporaryService extends CrudService<ConstructionProjectTemporaryMapper, ConstructionProjectTemporary> {
+
+	@Autowired
+	private ConstructionProjectTemporaryMapper constructionProjectTemporaryMapper;
+
+	@Transactional
+	public void insertList(List<ConstructionProjectTemporary> constructionProjectTemporaries,List<String> projectNumbers){
+		for (int i = 0; i < constructionProjectTemporaries.size(); i++) {
+			for (String s:projectNumbers){
+				if (constructionProjectTemporaries.get(i).getProjectNumber().equals(s)){
+					constructionProjectTemporaries.get(i).setHtmlStatus("2");
+					break;
+				}
+			}
+		}
+		constructionProjectTemporaryMapper.insertList(constructionProjectTemporaries);
+	}
+
+	@Transactional
+	public void insertNoList(List<ConstructionProjectTemporary> constructionProjectTemporaries){
+		constructionProjectTemporaryMapper.insertList(constructionProjectTemporaries);
+	}
+	/*
+		安排计划时间:修改状态
+	 */
+	@Transactional(readOnly = false)
+	public void updateStatus(ConstructionProjectTemporary constructionProjectTemporary){
+		constructionProjectTemporaryMapper.updateStatus(constructionProjectTemporary);
+	}
+	@Transactional(readOnly = false)
+	public void updatePower(ConstructionProjectTemporary constructionProjectTemporary){
+		constructionProjectTemporaryMapper.updatePower(constructionProjectTemporary);
+	}
+	@Transactional
+	public void updateConstruction(List<ConstructionProjectTemporary> constructionProjectTemporaries){
+		for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+			constructionProjectTemporary.preUpdate();
+			constructionProjectTemporaryMapper.updateStatus(constructionProjectTemporary);
+		}
+	}
+
+	@Transactional(readOnly = false)
+	public void updateTime(ConstructionProjectTemporary constructionProjectTemporary){
+		constructionProjectTemporary.preUpdate();
+		constructionProjectTemporaryMapper.updateTime(constructionProjectTemporary);
+	}
+
+	//清空表中所有数据
+	@Transactional(readOnly = false)
+	public void deleteAll(){
+		constructionProjectTemporaryMapper.deleteAll();
+	}
+
+
+	public List<ConstructionProjectTemporary> findTreeList(ConstructionProjectTemporary constructionProjectTemporary){
+		return constructionProjectTemporaryMapper.findTreeList(constructionProjectTemporary);
+	}
+
+	//新增加操作
+	public List<ConstructionProjectTemporary> getAddTreeTable(List<ConstructionProjectTemporary> constructionProjectTemporaries,String ids[]){
+		//获取  目前用户当前操作工程的id
+		List<ConstructionProjectTemporary> constructionProjectTemporaryList = new ArrayList<ConstructionProjectTemporary>();
+		for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+			if (!"0".equals(constructionProjectTemporary.getParentId())){
+				for (String str:ids){
+					if (str.equals(constructionProjectTemporary.getId())){
+						constructionProjectTemporaryList.add(constructionProjectTemporary);
+						break;
+					}
+				}
+			}
+		}
+		List<ConstructionProjectTemporary> newCon = new ArrayList<ConstructionProjectTemporary>();
+		List<String> powerLineList = getPowerLineList(constructionProjectTemporaryList);//获取停电范围集合
+		boolean flag = false;
+		for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+			flag = false;
+			if (!"0".equals(constructionProjectTemporary.getParentId())){
+				for (String s:powerLineList){
+					if (s.equals(constructionProjectTemporary.getPowerScope())){
+						flag = true;
+					}
+				}
+				if (flag){
+					newCon.add(constructionProjectTemporary);
+				}
+			}
+		}
+		for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+			for (ConstructionProjectTemporary construction:newCon){
+				if ("0".equals(constructionProjectTemporary.getParentId())){
+					if (constructionProjectTemporary.getId().equals(construction.getParentId())){
+						newCon.add(constructionProjectTemporary);
+						break;
+					}
+				}
+			}
+		}
+		return newCon;
+	}
+	//得到目前线路集合
+	public List<String> getPowerLineList(List<ConstructionProjectTemporary> constructionProjectTemporaryList){
+		List<String> powerLines = new ArrayList<String>();//得到目前存在的线路集合
+		String powerLine = "";//停电线路
+		String[] powerStr = null;
+		boolean flag = false;
+		for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaryList){
+			if (null!=constructionProjectTemporary.getPowerScope()){
+				flag = true;
+				if (constructionProjectTemporary.getPowerScope().contains(",")){
+					powerStr = constructionProjectTemporary.getPowerScope().split(",");
+					for (String str : powerStr){
+						flag = true;
+						for (String strList:powerLines){//如果已经存在
+							if (str.equals(strList)){
+								flag = false;
+							}
+						}
+						if (flag){
+							powerLines.add(str);
+						}
+					}
+				}else {
+					flag = true;
+					for (String strList1:powerLines){
+						if (strList1.equals(constructionProjectTemporary.getPowerScope())){
+							flag = false;
+						}
+					}
+					if (flag){
+						powerLines.add(constructionProjectTemporary.getPowerScope());
+					}
+				}
+			}
+		}
+		return powerLines;
+	}
+	//新增加操作
+
+	//根据项目定义号查询
+	public List<ConstructionProjectTemporary> findListTemporary(ConstructionProjectTemporary constructionProjectTemporary){
+		List<ConstructionProjectTemporary> list = constructionProjectTemporaryMapper.findAllList(constructionProjectTemporary);
+//		String ids = "";
+//		List<ConstructionProjectTemporary> constructionProjectTemporaries = null;
+//		if (null!=constructionProject && null!=constructionProject.getProjectNumber()){
+//			ids = constructionProject.getProjectNumber();
+//		}
+//		if (!"".equals(ids)){
+//			List<String> stringList = new ArrayList<String>();
+//			String[] split = ids.split(",");
+//			for (String str : split){
+//				stringList.add(str);
+//			}
+//			constructionProjectTemporaries = constructionProjectTemporaryMapper.findListTemporary(stringList);
+//		}
+		return list;
+	}
+
+	//获取临时表存储对象
+	public List<ConstructionProjectTemporary> getConstructionProjectPowerLine(List<Project> projects,Date date,String parentStatus,String childStatus){
+		List<Project> projectList = new ArrayList<Project>();
+		for (Project project:projects){
+			projectList.add(project);
+		}
+		List<ConstructionProjectTemporary> stringPowerList = new ArrayList<ConstructionProjectTemporary>();
+		HashSet<String> hashSet = new HashSet<String>();//开关集合
+		String[] splite = null;
+		for (Project project:projects){
+			if (null!=project.getPowerScope()&&!"".equals(project.getPowerScope())) {
+				if (project.getPowerScope().contains(";")) {
+					splite = project.getPowerScope().split(";");
+					for (String s : splite) {
+						hashSet.add(s);
+					}
+				}else if (project.getPowerScope().contains(";")){
+					splite = project.getPowerScope().split(";");
+					for (String s1 : splite) {
+						hashSet.add(s1);
+					}
+				}else if (project.getPowerScope().contains(",")){
+					splite = project.getPowerScope().split(",");
+					for (String s1 : splite) {
+						hashSet.add(s1);
+					}
+				}else if (project.getPowerScope().contains(",")){
+					splite = project.getPowerScope().split(",");
+					for (String s1 : splite) {
+						hashSet.add(s1);
+					}
+				}else {
+					hashSet.add(project.getPowerScope());
+				}
+			}
+		}
+		ConstructionProjectTemporary constructionProjectTemporary = new ConstructionProjectTemporary();
+		//循环hashset
+		for (String set:hashSet){
+			//添加父级
+			constructionProjectTemporary = new ConstructionProjectTemporary();
+			constructionProjectTemporary.setProjectName(set);
+			constructionProjectTemporary.setLineName(set);
+			constructionProjectTemporary.setProjectNumber(set+"ProjectNumber");
+			constructionProjectTemporary.setParentId("0");
+			constructionProjectTemporary.setParentIds("0,");
+			constructionProjectTemporary.setStatus(parentStatus);
+			constructionProjectTemporary.setLineStatus("0");
+			stringPowerList.add(constructionProjectTemporary);
+			//添加子集
+			for (int i = 0; i < projectList.size(); i++) {
+				if (null!= projectList.get(i).getPowerScope()){
+					if (projectList.get(i).getPowerScope().contains(set)){
+						constructionProjectTemporary = new ConstructionProjectTemporary();
+						constructionProjectTemporary.setProjectName(projectList.get(i).getProjectName());
+						constructionProjectTemporary.setLineName(projectList.get(i).getLineName());
+						constructionProjectTemporary.setProjectNumber(projectList.get(i).getProjectNumber());
+						constructionProjectTemporary.setPowerFlagPackage(projectList.get(i).getPowerFlagPackage());
+						constructionProjectTemporary.setPowerLine(projectList.get(i).getPowerLine());
+						constructionProjectTemporary.setPowerScope(projectList.get(i).getPowerScope());
+						constructionProjectTemporary.setArrangeTime(date);
+						constructionProjectTemporary.setPlanTime(date);
+						constructionProjectTemporary.setStatus(childStatus);
+						constructionProjectTemporary.setParentId("1");
+						constructionProjectTemporary.setLineStatus("1");
+						constructionProjectTemporary.setHtmlStatus("0");
+						stringPowerList.add(constructionProjectTemporary);
+						projectList.remove(i);
+						i--;
+					}
+				}
+			}
+		}
+		//获取id
+		for (ConstructionProjectTemporary projectTemporary:stringPowerList){
+			projectTemporary.preInsert();
+		}
+		//获取父级线路集合
+		List<ConstructionProject> constructionProjectList = new ArrayList<ConstructionProject>();
+		ConstructionProject constructionProject = null;
+		//获取项目
+		for (ConstructionProjectTemporary projectTemporary:stringPowerList){
+			if ("0".equals(projectTemporary.getLineStatus())){
+				constructionProject = new ConstructionProject();
+				constructionProject.setId(projectTemporary.getId());
+				constructionProject.setProjectName(projectTemporary.getProjectName());
+				constructionProjectList.add(constructionProject);
+			}
+		}
+		List<ConstructionProjectTemporary> constructionProjectPowerLineChild = getConstructionProjectPowerLineChild(constructionProjectList, stringPowerList);
+		List<ConstructionProjectTemporary> qcConstruction = RecursiveUtil.getQcConstruction(constructionProjectPowerLineChild);
+		return qcConstruction;
+	}
+
+	//补充方法子集
+	public List<ConstructionProjectTemporary> getConstructionProjectPowerLineChild(List<ConstructionProject> constructionProjects,List<ConstructionProjectTemporary> constructionProjectTemporaries){
+		//线路循环
+		String judge = "";
+		String conLineName="";
+		String proLineName = "";
+		for (ConstructionProject construction:constructionProjects){
+			conLineName= construction.getProjectName();//获取名字
+			for (ConstructionProjectTemporary temporary:constructionProjectTemporaries){//
+				proLineName = temporary.getPowerScope();//获取线路
+				if ("1".equals(temporary.getLineStatus())){//如果不是线路
+					if (proLineName.contains(conLineName)){
+						judge = temporary.getParentId();
+						if ("1".equals(judge)){
+							temporary.setParentId(construction.getId());
+							temporary.setParentIds("0,"+construction.getId()+',');
+						}else {
+							temporary.setParentId(construction.getId()+","+judge);
+						}
+					}
+				}
+			}
+		}
+		return constructionProjectTemporaries;
+	}
+	public Page<ConstructionProjectTemporary> findPageList(Page<ConstructionProjectTemporary> page, ConstructionProjectTemporary entity) {
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		List<ConstructionProjectTemporary> list = constructionProjectTemporaryMapper.findList(entity);
+//		List<ConstructionProjectTemporary> qcList = getQCList(list);
+		page.setList(list);
+		return page;
+	}
+	//去重
+	public List<ConstructionProjectTemporary> getQCList(List<ConstructionProjectTemporary> constructionProjectTemporaries){
+		List<ConstructionProjectTemporary> projectTemporaries = new ArrayList<ConstructionProjectTemporary>();
+		boolean flag = false;
+		String id = "";
+		String idParent = "";
+		for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+			idParent = constructionProjectTemporary.getId();
+			flag = true;
+			for (ConstructionProjectTemporary projectTemporary:projectTemporaries){
+				if (constructionProjectTemporary.getProjectNumber().equals(projectTemporary.getProjectNumber())){
+					id = projectTemporary.getId();
+					projectTemporary.setId(id+","+idParent);
+					flag = false;
+				}
+			}
+			if (flag){
+				projectTemporaries.add(constructionProjectTemporary);
+			}
+		}
+		return projectTemporaries;
+	}
+}

+ 309 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/util/RecursiveUtil.java

@@ -0,0 +1,309 @@
+package com.jeeplus.modules.sg.managementcenter.constructionProject.util;
+
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+/*8
+    递归类
+ */
+public class RecursiveUtil {
+
+    //获取级联的工程------------增加入库操作
+    public static List<Project> getAllProjectRecursive(List<Project> projects,List<String> projectNumbers){
+        List<Project> sureProject = getDuplicateRemoval(projects);//确定的project集合
+        List<Project> duplicateRemoval = getDuplicateRemoval(projects);//备用集合
+        List<Project> areProject = getThereAreProject(sureProject, projectNumbers);//查找项目定义号的工程
+        HashSet<String> hashSetAll = getProjectScopeList(areProject);//获取去重的停电线路
+        getRecursive(duplicateRemoval,hashSetAll);//递归
+        List<Project> returnProject = getReturnProject(sureProject, hashSetAll);
+        return returnProject;
+    }
+    //其他
+    public static List<Project> getAllProjectNo(List<Project> projects,List<String> projectNumbers){
+        List<Project> projectList = getDuplicateRemoval(projects);//确定集合
+        List<Project> duplicateRemoval = getDuplicateRemoval(projects);
+        List<Project> noNoProject = getNoNoProject(projectList, projectNumbers);//主用
+        List<Project> noNoProject1 = getNoNoProject(duplicateRemoval, projectNumbers);//备用
+        HashSet<String> projectScopeList = getProjectScopeList(noNoProject1);
+        getRecursive(noNoProject1,projectScopeList);
+        List<Project> returnProject = getReturnProject(noNoProject, projectScopeList);
+        return returnProject;
+    }
+
+    public static List<Project> getNoNoProject(List<Project> projects,List<String> projectNumbers){
+        for (int i = 0; i < projects.size(); i++) {
+            for (String string:projectNumbers){
+                if (projects.get(i).getProjectNumber().equals(string)){
+                    projects.remove(i);
+                    i--;
+                    break;
+                }
+            }
+        }
+        return projects;
+    }
+    //获取确定的list<project>集合
+    public static List<Project> getReturnProject(List<Project> projects,HashSet<String> hashSetAll){
+        List<Project> projectList = new ArrayList<Project>();
+        for (Project project:projects){
+            for (String string:hashSetAll){
+                if (project.getPowerScope().contains(string)){
+                    projectList.add(project);
+                    break;
+                }
+            }
+        }
+        return projectList;
+    }
+
+    //递归
+    public static void getRecursive(List<Project> projects,HashSet<String> hashSetAll){
+        HashSet<String> hashSet = new HashSet<String>();
+        for (String string:hashSetAll){
+            for (int i = 0; i < projects.size(); i++) {
+                if (projects.get(i).getPowerScope().contains(string)){
+                    getSplice(projects.get(i).getPowerScope(),hashSet);
+                    projects.remove(i);
+                    i--;
+                }
+            }
+        }
+        if (!hashSet.isEmpty()){
+            for (String has:hashSet){
+                hashSetAll.add(has);
+            }
+            getRecursive(projects,hashSetAll);
+        }
+    }
+    public static void getSplice(String powerScope,HashSet<String> strings){
+        String[] splice = null;
+        if (powerScope.contains(";")){
+            splice = powerScope.split(";");
+            for (String str:splice){
+                strings.add(str);
+            }
+        }else if(powerScope.contains(";")){
+            splice = powerScope.split(";");
+            for (String str:splice){
+                strings.add(str);
+            }
+        }else if (powerScope.contains(",")){
+            splice = powerScope.split(",");
+            for (String str:splice){
+                strings.add(str);
+            }
+        }else if (powerScope.contains(",")){
+            splice = powerScope.split(",");
+            for (String str:splice){
+                strings.add(str);
+            }
+        }else {
+            strings.add(powerScope);
+        }
+    }
+
+    //获取当前搜索项目定义号的停电范围
+    public static HashSet<String> getProjectScopeList(List<Project> areProject){
+        HashSet<String> setProject = new HashSet<String>();
+        String[] arrayProject = null;
+        String projectScope = "";
+        for (Project project:areProject){
+            if (null!=project.getPowerScope()){
+                projectScope = project.getPowerScope();
+                if (projectScope.contains(";")){
+                    arrayProject = projectScope.split(";");
+                    for (String str:arrayProject){
+                        setProject.add(str);
+                    }
+                }else if (projectScope.contains(";")){
+                    arrayProject = projectScope.split(";");
+                    for (String str:arrayProject){
+                        setProject.add(str);
+                    }
+                }else if (projectScope.contains(",")){
+                    arrayProject = projectScope.split(",");
+                    for (String str:arrayProject){
+                        setProject.add(str);
+                    }
+                }else if (projectScope.contains(",")){
+                    arrayProject = projectScope.split(",");
+                    for (String str:arrayProject){
+                        setProject.add(str);
+                    }
+                }else {
+                    setProject.add(projectScope);
+                }
+            }
+        }
+        return setProject;
+    }
+    //获取查找的集合
+    public static List<Project> getThereAreProject(List<Project> projects,List<String> projectNumbers){
+        List<Project> projectList = new ArrayList<Project>();
+        for (String string:projectNumbers){
+            for (Project project:projects){
+                if (string.equals(project.getProjectNumber())){
+                    projectList.add(project);
+                    break;
+                }
+            }
+        }
+        return projectList;
+    }
+    //list project去重
+    public static List<Project> getDuplicateRemoval(List<Project> projects){
+        List<Project> projectList = new ArrayList<Project>();
+        boolean flag = false;
+        String projectNumber = "";
+        String newProjectNumber = "";
+        for(Project project:projects){
+            if (null!=project.getProjectNumber()&&!"".equals(project.getProjectNumber())){
+                flag = true;
+                projectNumber = project.getProjectNumber();
+                for (Project newProject:projectList){
+                    if (null!=newProject.getProjectNumber()&&!"".equals(newProject.getProjectNumber())){
+                        newProjectNumber = newProject.getProjectNumber();
+                        if (projectNumber.equals(newProjectNumber)){
+                            flag = false;
+                            break;
+                        }
+                    }
+                }
+                if (flag){
+                    projectList.add(project);
+                }
+            }
+        }
+        return projectList;
+    }
+    //获取级联的工程------------
+    //添加操作项目--------!
+        public static List<ConstructionProjectTemporary> getAddPlanList(List<ConstructionProjectTemporary> constructionProjectTemporaries,String ids[]){
+            //获取移动操作的数据--父级
+            List<ConstructionProjectTemporary> constructionProjectParent = new ArrayList<ConstructionProjectTemporary>();
+            //获取移动操作的数据--子集
+            List<ConstructionProjectTemporary> constructionProjectChild = new ArrayList<ConstructionProjectTemporary>();
+            for (String id:ids){
+                for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+                    if (id.equals(constructionProjectTemporary.getId())){
+                        if ("0".equals(constructionProjectTemporary.getParentId())){
+                            constructionProjectParent.add(constructionProjectTemporary);
+                        }else {
+                            constructionProjectChild.add(constructionProjectTemporary);
+                        }
+                        break;
+                    }
+                }
+            }
+            if (null!=constructionProjectParent && constructionProjectParent.size()>0){
+                for (ConstructionProjectTemporary projectTemporary:constructionProjectParent){
+                    for (ConstructionProjectTemporary temporary:constructionProjectTemporaries){
+                        if (temporary.getParentId().contains(projectTemporary.getId())){
+                            constructionProjectChild.add(temporary);
+                        }
+                    }
+                }
+            }
+            //去重
+            List<ConstructionProjectTemporary> qcConstruction = getQcConstruction(constructionProjectChild);//主
+            List<ConstructionProjectTemporary> qcConstructionCopy = getQcConstruction(constructionProjectChild);//备用
+            HashSet<String> hashSet = getHashSet(qcConstruction);//获取奴前存在的开关
+            getConstructionRecurse(qcConstructionCopy,hashSet);
+            //获取最终的集合
+            List<ConstructionProjectTemporary> returnConstructionProjectTemporary = getReturnConstructionProjectTemporary(constructionProjectTemporaries, hashSet);
+            //父类添加进入
+            for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectParent){
+                returnConstructionProjectTemporary.add(constructionProjectTemporary);
+            }
+            return returnConstructionProjectTemporary;
+        }
+        //获取确定的list<project>集合
+        public static List<ConstructionProjectTemporary> getReturnConstructionProjectTemporary(List<ConstructionProjectTemporary> constructionProjectTemporaries,HashSet<String> hashSetAll){
+            List<ConstructionProjectTemporary> constructionProjectTemporaryList = new ArrayList<ConstructionProjectTemporary>();
+            for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+               if (!"0".equals(constructionProjectTemporary.getParentId())){
+                   for (String string:hashSetAll){
+                       if (constructionProjectTemporary.getPowerScope().contains(string)){
+                           constructionProjectTemporaryList.add(constructionProjectTemporary);
+                           break;
+                       }
+                   }
+               }
+            }
+            return constructionProjectTemporaryList;
+        }
+        //递归
+        public static void getConstructionRecurse(List<ConstructionProjectTemporary> constructionProjectTemporaries,HashSet<String> hashSet){
+            HashSet<String> stringHashSet = new HashSet<String>();
+            for (String s:stringHashSet){
+                for (int i = 0; i < constructionProjectTemporaries.size(); i++) {
+                    if (constructionProjectTemporaries.get(i).getPowerScope().contains(s)){
+                        getSplice(constructionProjectTemporaries.get(i).getPowerScope(),stringHashSet);
+                        constructionProjectTemporaries.remove(i);
+                        i--;
+                    }
+                }
+            }
+            if (!stringHashSet.isEmpty()){
+                for (String string:stringHashSet){
+                    hashSet.add(string);
+                }
+                getConstructionRecurse(constructionProjectTemporaries,hashSet);
+            }
+        }
+
+        //获取目前的开关
+        public static HashSet<String> getHashSet(List<ConstructionProjectTemporary> constructionProjectTemporaries){
+            HashSet<String> stringHashSet = new HashSet<String>();
+            String[] powerScopes = null;
+            for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+                if (null!=constructionProjectTemporary.getPowerScope()){
+                    if (constructionProjectTemporary.getPowerScope().equals(";")){
+                        powerScopes = constructionProjectTemporary.getPowerScope().split(";");
+                        for (String power:powerScopes){
+                            stringHashSet.add(power);
+                        }
+                    }else if (constructionProjectTemporary.getPowerScope().equals(";")){
+                        powerScopes = constructionProjectTemporary.getPowerScope().split(";");
+                        for (String power:powerScopes){
+                            stringHashSet.add(power);
+                        }
+                    }else if (constructionProjectTemporary.getPowerScope().equals(",")){
+                        powerScopes = constructionProjectTemporary.getPowerScope().split(",");
+                        for (String power:powerScopes){
+                            stringHashSet.add(power);
+                        }
+                    }else if (constructionProjectTemporary.getPowerScope().equals(",")){
+                        powerScopes = constructionProjectTemporary.getPowerScope().split(",");
+                        for (String power:powerScopes){
+                            stringHashSet.add(power);
+                        }
+                    }else {
+                        stringHashSet.add(constructionProjectTemporary.getPowerScope());
+                    }
+                }
+            }
+            return stringHashSet;
+        }
+        //去重
+        public static List<ConstructionProjectTemporary> getQcConstruction(List<ConstructionProjectTemporary> constructionProjectTemporaries){
+            List<ConstructionProjectTemporary> constructionProjectTemporaryList = new ArrayList<ConstructionProjectTemporary>();
+            boolean flag = false;
+            for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+                flag = true;
+                for (ConstructionProjectTemporary projectTemporary:constructionProjectTemporaryList){
+                    if (constructionProjectTemporary.getId().equals(projectTemporary.getId())){
+                        flag = false;
+                    }
+                }
+                if (flag){
+                    constructionProjectTemporaryList.add(constructionProjectTemporary);
+                }
+            }
+            return constructionProjectTemporaryList;
+        }
+    //添加操作项目--------!
+}

+ 9 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/util/Result.java

@@ -7,6 +7,15 @@ public class Result {
     private boolean success;
     private String  message;
     private List<Map<String,Object>> mapList;
+    private List<Map<String,Object>> mapListTree;
+
+    public List<Map<String, Object>> getMapListTree() {
+        return mapListTree;
+    }
+
+    public void setMapListTree(List<Map<String, Object>> mapListTree) {
+        this.mapListTree = mapListTree;
+    }
 
     public boolean isSuccess() {
         return success;

+ 91 - 112
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/util/TreeTableUtil.java

@@ -3,6 +3,8 @@ package com.jeeplus.modules.sg.managementcenter.constructionProject.util;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
 import org.hibernate.validator.constraints.EAN;
 
 import java.text.SimpleDateFormat;
@@ -10,45 +12,69 @@ import java.util.*;
 
 public class TreeTableUtil {
     //树生成
-    public static List<Map<String,Object>> getBootstrapTreeTable(List<Map<String,Object>> objects,List<ConstructionProject> constructionProjects){
-        List<ConstructionProject> lineNames = new ArrayList<ConstructionProject>();
+    public static List<Map<String,Object>> getBootstrapTreeTable(List<Map<String,Object>> objects,List<ConstructionProjectTemporary> listTemporary){
         Map<String,Object> maps = Maps.newHashMap();
-        boolean flag = false;
-        for (ConstructionProject constructionProject:constructionProjects){
-            flag = true;
-            for (ConstructionProject project:lineNames){
-                if (project.getLineName().equals(constructionProject.getLineName())){
-                    flag = false;
-                    break;
-                }
-            }
-            if (flag){
-                lineNames.add(constructionProject);
+        boolean treeChild = false;
+        for (ConstructionProjectTemporary constructionProjectTemporary:listTemporary){
+            if ("0".equals(constructionProjectTemporary.getParentId())){
                 maps = Maps.newHashMap();
-                maps.put("id",constructionProject.getId()+"line");
-                maps.put("name",constructionProject.getLineName());
-                getTreeChild(maps,constructionProjects,constructionProject.getLineName());
-                objects.add(maps);
+                treeChild = getTreeChild(maps, listTemporary, constructionProjectTemporary.getId());
+                if (treeChild){
+                    maps.put("id",constructionProjectTemporary.getId());
+                    maps.put("name",constructionProjectTemporary.getProjectName());
+                    objects.add(maps);
+                }
             }
         }
         return objects;
     }
-
-    public static void getTreeChild(Map<String,Object> mapList,List<ConstructionProject> constructionProjects,String lineName){
+    //子集
+    public static boolean  getTreeChild(Map<String,Object> maps,List<ConstructionProjectTemporary> constructionProjectTemporaries,String id){
+        boolean flag = false;
         List<Map<String,Object>> lists = Lists.newArrayList();
-        Map<String,Object> maps =Maps.newHashMap();
-        for (ConstructionProject constructionProject:constructionProjects){
-            if (lineName.equals(constructionProject.getLineName())){
-                maps = Maps.newHashMap();
-                maps.put("id",constructionProject.getId());
-                maps.put("name",constructionProject.getProjectName());
-                lists.add(maps);
+        Map<String,Object> mapList = null;
+        String[] split = null;//截取多个父类的集合
+        for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+            if (constructionProjectTemporary.getParentId().contains(",")){
+                split = constructionProjectTemporary.getParentId().split(",");
+                for (String string:split){
+                    if (string.equals(id)){
+                        mapList = Maps.newHashMap();
+                        mapList.put("id",constructionProjectTemporary.getId());
+                        mapList.put("name",constructionProjectTemporary.getProjectName());
+                        lists.add(mapList);
+                    }
+                }
+            }else {
+                if (constructionProjectTemporary.getParentId().equals(id)){
+                    mapList = Maps.newHashMap();
+                    mapList.put("id",constructionProjectTemporary.getId());
+                    mapList.put("name",constructionProjectTemporary.getProjectName());
+                    lists.add(mapList);
+                }
             }
         }
         if (lists.size()>0){
-            mapList.put("children",lists);
+            flag = true;
+            maps.put("children",lists);
         }
+        return flag;
     }
+//    public static void getTreeChild(Map<String,Object> mapList,List<ConstructionProject> constructionProjects,String lineName){
+//        List<Map<String,Object>> lists = Lists.newArrayList();
+//        Map<String,Object> maps =Maps.newHashMap();
+//        for (ConstructionProject constructionProject:constructionProjects){
+//            if (lineName.equals(constructionProject.getLineName())){
+//                maps = Maps.newHashMap();
+//                maps.put("id",constructionProject.getId());
+//                maps.put("name",constructionProject.getProjectName());
+//                lists.add(maps);
+//            }
+//        }
+//        if (lists.size()>0){
+//            mapList.put("children",lists);
+//        }
+//    }
     //获取月份
     public static List<ConstructionProject> getMonths(List<ConstructionProject> constructionProjects,String time){
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
@@ -64,91 +90,6 @@ public class TreeTableUtil {
         }
         return constructionProjectList;
     }
-    //右侧树
-
-
-//    //右边树形表格
-//    public static List<Map<String,Object>> getParentConstructionMap(List<Map<String, Object>> mapList,List<ConstructionProject> constructionProjects){
-//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-//        Map<String,Object> map = new HashMap<String, Object>();
-//        List<ConstructionProject> constructionProjectList = new ArrayList<ConstructionProject>();
-//        boolean flag = false;
-//        for (ConstructionProject constructionProject:constructionProjects){
-//            flag = true;
-//            for (ConstructionProject constructionProject1:constructionProjectList){
-//                int i = constructionProject1.getArrangeTime().compareTo(constructionProject.getArrangeTime());
-//                if (i==0){
-//                    flag = false;
-//                    break;
-//                }
-//            }
-//            if (flag){
-//                constructionProjectList.add(constructionProject);
-//                map = Maps.newHashMap();
-//                String format = sdf.format(constructionProject.getArrangeTime());
-//                map.put("id",constructionProject.getId()+"time");
-//                map.put("name",format);
-//                getRightChildTable(map,constructionProjects,constructionProject.getArrangeTime());
-//                mapList.add(map);
-//            }
-//        }
-//        return mapList;
-//    }
-//    public static void getRightChildTable(Map<String,Object> mapList, List<ConstructionProject> constructionProjects, Date date){
-//        List<Map<String,Object>> lists = Lists.newArrayList();
-//        Map<String,Object> maps =Maps.newHashMap();
-//        List<ConstructionProject> constructionProjects1 = new ArrayList<ConstructionProject>();
-//        boolean flag = false;
-//        for (ConstructionProject constructionProject:constructionProjects){
-//            int i = date.compareTo(constructionProject.getArrangeTime());
-//            if (i==0){
-//                flag = true;
-//                for (ConstructionProject constructionProject1:constructionProjects1){
-//                    if (constructionProject.getLineName().equals(constructionProject1.getLineName())){
-//                        flag = false;
-//                        break;
-//                    }
-//                }
-//                if (flag){
-//                    constructionProjects1.add(constructionProject);
-//                    maps = Maps.newHashMap();
-//                    maps.put("id",constructionProject.getId()+"line");
-//                    maps.put("name",constructionProject.getLineName());
-//                    getRightChildTable2(maps,constructionProjects,constructionProject.getLineName(),date);
-//                    lists.add(maps);
-//                }
-//            }
-//        }
-//        if (lists.size()>0){
-//            mapList.put("children",lists);
-//        }
-//    }
-//    //获取项目名称
-//    public static void getRightChildTable2(Map<String,Object> mapList, List<ConstructionProject> constructionProjects, String lineName,Date date){
-//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
-//        List<Map<String,Object>> lists = Lists.newArrayList();
-//        Map<String,Object> maps =Maps.newHashMap();
-//        String str = "";
-//        for (ConstructionProject constructionProject:constructionProjects){
-//            if (lineName.equals(constructionProject.getLineName())){
-//                int i = date.compareTo(constructionProject.getArrangeTime());
-//                if (i==0){
-//                    maps = Maps.newHashMap();
-//                    maps.put("id",constructionProject.getId());
-//                    if (null!=constructionProject.getSpecificTime()){
-//                       str =  constructionProject.getProjectName()+"(具体时间安排为:"+sdf.format(constructionProject.getSpecificTime())+")";
-//                    }else {
-//                        str =  constructionProject.getProjectName()+"(暂无时间安排)";
-//                    }
-//                    maps.put("name",str);
-//                    lists.add(maps);
-//                }
-//            }
-//        }
-//        if (lists.size()>0){
-//            mapList.put("children",lists);
-//        }
-//    }
 
     //获取id类型
     public static String getConstructionId(ConstructionProject constructionProject){
@@ -172,4 +113,42 @@ public class TreeTableUtil {
         }
         return status;
     }
+
+
+    //获取修改的值:
+    public static List<ConstructionProjectTemporary> getUpdateConstruction(List<ConstructionProjectTemporary> constructionProjectTemporaries){
+        for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+            //线路修改的状态
+            if ("0".equals(constructionProjectTemporary.getParentId())){
+                    constructionProjectTemporary.setStatus("2");
+//                getUpdateConstructionChild1(constructionProjectTemporaries,constructionProjectTemporary.getId());
+            }else {
+                if ("0".equals(constructionProjectTemporary.getStatus())){
+                    constructionProjectTemporary.setStatus("1");
+//                    getUpdateConstructionChild2(constructionProjectTemporaries,constructionProjectTemporary);
+                }
+            }
+        }
+        return constructionProjectTemporaries;
+    }
+    //线路修改的状态-----01
+    public static void getUpdateConstructionChild1(List<ConstructionProjectTemporary> constructionProjectTemporaries,String id){
+        for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+            if (!"0".equals(constructionProjectTemporary.getParentId())){
+                if (constructionProjectTemporary.getParentId().equals(id)){
+                    constructionProjectTemporary.setStatus("1");
+                }
+            }
+        }
+    }
+    //项目修改的状态----02
+    public static void getUpdateConstructionChild2(List<ConstructionProjectTemporary> constructionProjectTemporaries,ConstructionProjectTemporary constructionProjectTemporary){
+        String parentId = constructionProjectTemporary.getParentId();
+        for (ConstructionProjectTemporary project : constructionProjectTemporaries){
+            if (parentId.equals(project.getId())){
+                project.setStatus("2");
+                break;
+            }
+        }
+    }
 }

+ 88 - 129
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/web/ConstructionProjectController.java

@@ -4,20 +4,16 @@
 package com.jeeplus.modules.sg.managementcenter.constructionProject.web;
 
 import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
 import com.jeeplus.common.json.AjaxJson;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.service.ConstructionProjectService;
-import com.jeeplus.modules.sg.managementcenter.constructionProject.util.ImportProUtil;
-import com.jeeplus.modules.sg.managementcenter.constructionProject.util.ImportUtil;
-import com.jeeplus.modules.sg.managementcenter.constructionProject.util.Result;
-import com.jeeplus.modules.sg.managementcenter.constructionProject.util.TreeTableUtil;
-import com.jeeplus.modules.test.tree.dialog.entity.TestTree1;
-import com.jeeplus.modules.test.treetable.dialog.entity.CarKind1;
-import com.jeeplus.modules.test.treetable.dialog.service.CarKind1Service;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.service.ConstructionProjectTemporaryService;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.util.*;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -45,7 +41,7 @@ public class ConstructionProjectController extends BaseController {
 	@Autowired
 	private ConstructionProjectService constructionProjectService;
 	@Autowired
-	private CarKind1Service carKind1Service;
+	private ConstructionProjectTemporaryService constructionProjectTemporaryService;
 	
 	@ModelAttribute
 	public ConstructionProject get(@RequestParam(required=false) String id) {
@@ -68,36 +64,13 @@ public class ConstructionProjectController extends BaseController {
 		model.addAttribute("constructionProject", constructionProject);
 		return "modules/sg/managementcenter/constructionProject/constructionList";
 	}
-	//树形列表页面
+	//树形列表页面--首页
 	@ResponseBody
 	@RequestMapping(value = "bootstrapTreeTable")
-	public List<Map<String,Object>> getBootstrapTreeTable(ConstructionProject constructionProject){
+	public List<Map<String,Object>> getBootstrapTreeTable(ConstructionProjectTemporary constructionProjectTemporary){
 		List<Map<String,Object>> objects = Lists.newArrayList();
-		constructionProject.setProjectStatus("0");
-		List<ConstructionProject> constructionProjects = constructionProjectService.findList(constructionProject);
-		List<Map<String, Object>> bootstrapTreeTables = TreeTableUtil.getBootstrapTreeTable(objects, constructionProjects);
-		return bootstrapTreeTables;
-	}
-	//右侧列表
-	@ResponseBody
-	@RequestMapping(value = "treeData")
-	public List<Map<String, Object>> treeData(ConstructionProject constructionProject) {
-		constructionProject.setProjectStatus("1");
-		List<Map<String, Object>> parentConstructionMap = getMapListRight(constructionProject);
-		return parentConstructionMap;
-	}
-
-	@ResponseBody
-	@RequestMapping(value = "treeDataAjax")
-	public Result treeDataAjax(ConstructionProject constructionProject) {
-		Result result = new Result();
-		List<Map<String,Object>> mapList = Lists.newArrayList();
-		constructionProject.setProjectStatus("1");
-		List<Map<String, Object>> parentConstructionMap = getMapListRight(constructionProject);
-		result.setMapList(parentConstructionMap);
-		result.setSuccess(true);
-		result.setMessage("成功");
-		return result;
+        List<ConstructionProjectTemporary> listTemporary = constructionProjectTemporaryService.findListTemporary(constructionProjectTemporary);
+        return TreeTableUtil.getBootstrapTreeTable(objects,listTemporary);
 	}
 
 		/**
@@ -118,9 +91,37 @@ public class ConstructionProjectController extends BaseController {
 	@RequestMapping(value = "form")
 	public String form(ConstructionProject constructionProject, Model model) {
 		model.addAttribute("constructionProject", constructionProject);
+        List<String> projectNumber = constructionProjectService.getProjectNumber(constructionProject);
+        List<Project> projectList = constructionProjectService.allListProject(constructionProject);
+        //1
+        List<Project> listProject = constructionProjectService.findListAllProject(projectList,constructionProject);
+        //2
+        List<Project> allProjectNo = constructionProjectService.getAllProjectNo(projectList,constructionProject);
+        constructionProjectTemporaryService.deleteAll();
+        if (null!=listProject&&listProject.size()>0) {
+            //1
+            List<ConstructionProjectTemporary> constructionProjectTemporary = constructionProjectTemporaryService.getConstructionProjectPowerLine(listProject,constructionProject.getArrangeTime(),"2","1");
+            //2
+            List<ConstructionProjectTemporary> constructionProjectPowerLine = constructionProjectTemporaryService.getConstructionProjectPowerLine(allProjectNo, constructionProject.getArrangeTime(), "0", "0");
+            //1
+            constructionProjectTemporaryService.insertList(constructionProjectTemporary,projectNumber);
+            //2
+            constructionProjectTemporaryService.insertNoList(constructionProjectPowerLine);
+        }
+		return "modules/sg/managementcenter/constructionProject/constructionForm";
+	}
+
+	//设计时间页面
+	@RequestMapping(value = "formDate")
+	public String formDate(ConstructionProject constructionProject, Model model) {
 		return "modules/sg/managementcenter/constructionProject/constructionForm";
 	}
 
+	//选择月分页面
+	@RequestMapping(value = "formDateMonth")
+	public String formDateMonth(ConstructionProjectTemporary constructionProject,Model model){
+		return "modules/sg/managementcenter/constructionProject/constructionDateForm";
+	}
 	/**
 	 * 保存
 	 */
@@ -129,19 +130,45 @@ public class ConstructionProjectController extends BaseController {
 	@RequestMapping(value = "save")
 	public AjaxJson save(ConstructionProject constructionProject, Model model) throws Exception{
 		AjaxJson j = new AjaxJson();
+		ConstructionProjectTemporary constructionProjectTemporary = new ConstructionProjectTemporary();
+		constructionProjectTemporary.setStatus("1");
+		List<ConstructionProjectTemporary> list = constructionProjectTemporaryService.findList(constructionProjectTemporary);
+		List<ConstructionProject> constructionProjectList = new ArrayList<ConstructionProject>();
+		for (ConstructionProjectTemporary projectTemporary:list){
+			constructionProject = new ConstructionProject();
+			constructionProject.setProjectNumber(projectTemporary.getProjectNumber());
+			constructionProject.setLineName(projectTemporary.getLineName());
+			constructionProject.setArrangeTime(projectTemporary.getArrangeTime());
+			constructionProject.setSpecificTime(projectTemporary.getPlanTime());
+			constructionProject.setProjectName(projectTemporary.getProjectName());
+			constructionProject.setProjectNote(projectTemporary.getPowerScope());
+			constructionProject.setInstructions(projectTemporary.getFlagPower());
+			constructionProject.setRemarks(projectTemporary.getHtmlStatus());
+			constructionProjectList.add(constructionProject);
+		}
+		Project project = null;
+		List<Project> projectList = new ArrayList<Project>();
+		for (ConstructionProject constructionProject1:constructionProjectList){
+		    project = new Project();
+		    project.setProjectNumber(constructionProject1.getProjectNumber());
+		    project.setRezkey("1");
+		    projectList.add(project);
+        }
 		/**
 		 * 后台hibernate-validation插件校验
 		 */
-		String errMsg = beanValidator(constructionProject);
-		if (StringUtils.isNotBlank(errMsg)){
+		//新增或编辑表单保存
+//		constructionProjectService.save(constructionProject);//保存
+		if (null!=constructionProjectList&&constructionProjectList.size()>0){
+			j.setSuccess(true);
+			j.setMsg("保存项目成功");
+			constructionProjectService.savaList(constructionProjectList);
+			constructionProjectTemporaryService.deleteAll();
+//			constructionProjectService.updateListProject(projectList);
+		}else {
 			j.setSuccess(false);
-			j.setMsg(errMsg);
-			return j;
+			j.setMsg("无项目");
 		}
-		//新增或编辑表单保存
-		constructionProjectService.save(constructionProject);//保存
-		j.setSuccess(true);
-		j.setMsg("保存项目成功");
 		return j;
 	}
 	
@@ -203,27 +230,26 @@ public class ConstructionProjectController extends BaseController {
 	 */
 	@ResponseBody
 	@RequestMapping(value = "unplanned")
-	public Result getUnplanned(String ids, ConstructionProject constructionProject,String time){
+	public Result getUnplanned(String ids,ConstructionProjectTemporary constructionProjectTemporary,String time){
 		Result result = new Result();
 		try{
-			String idArray[] =ids.split(",");
-			String str ="";
-			SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM");
-			Date date = formatter.parse(time);
-			constructionProject.setArrangeTime(date);
-			for(String id : idArray){
-				str = id.substring(id.length()-4);
-				if (!str.equals("line")){
-					constructionProject.setId(id);
-					constructionProject.setProjectStatus("1");
-					constructionProjectService.updateStatus(constructionProject);
-				}
-			}
-			constructionProject.setProjectStatus("1");
-			constructionProject.setId("");
-			List<Map<String, Object>> parentConstructionMap = getMapListRight(constructionProject);
+			String idArray[] = ids.split(",");//获取传过来的id
+			constructionProjectTemporary = new ConstructionProjectTemporary();
+			//获取未安排的计划
+			List<ConstructionProjectTemporary> list = constructionProjectTemporaryService.findAllList(constructionProjectTemporary);
+//			//修改状态的数据集合
+//			List<ConstructionProjectTemporary> addTreeTable = constructionProjectTemporaryService.getAddTreeTable(list, idArray);
+			List<ConstructionProjectTemporary> addPlanList = RecursiveUtil.getAddPlanList(list, idArray);
+			//获取需要修改的状态
+			List<ConstructionProjectTemporary> updateConstruction = TreeTableUtil.getUpdateConstruction(addPlanList);
+			constructionProjectTemporaryService.updateConstruction(updateConstruction);
+
+			//得到左边树集合 -- 修改过后
+			constructionProjectTemporary.setStatus("0");
+			List<ConstructionProjectTemporary> allList = constructionProjectTemporaryService.findAllList(constructionProjectTemporary);
+			List<Map<String,Object>> objectsTree = Lists.newArrayList();
 			result.setSuccess(true);
-			result.setMapList(parentConstructionMap);
+			result.setMapListTree(TreeTableUtil.getBootstrapTreeTable(objectsTree,allList));
 			result.setMessage("安排计划成功");
 		}catch (Exception e){
 			result.setSuccess(false);
@@ -231,58 +257,6 @@ public class ConstructionProjectController extends BaseController {
 		}
 		return result;
 	}
-	/**
-	 * 安排计划
-	 * @return ajax
-	 */
-	@ResponseBody
-	@RequestMapping(value = "unplannedMinus")
-	public Result getUnplannedMinus(String ids,ConstructionProject constructionProject,String time){
-		Result result = new Result();
-		try {
-			String idArray[] =ids.split(",");
-			String str ="";
-			for(String id : idArray){
-				str = id.substring(id.length()-4);
-				if (!str.equals("line")){
-					constructionProject.setId(id);
-					constructionProject.setProjectStatus("0");
-					constructionProjectService.updateStatus(constructionProject);
-				}
-			}
-			constructionProject.setProjectStatus("1");
-			constructionProject.setId("");
-			SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM");
-			Date date = formatter.parse(time);
-			constructionProject.setArrangeTime(date);
-			List<Map<String, Object>> parentConstructionMap = getMapListRight(constructionProject);
-			result.setSuccess(true);
-			result.setMapList(parentConstructionMap);
-			result.setMessage("取消计划成功");
-		}catch (Exception e){
-			result.setSuccess(false);
-			result.setMessage("取消计划失败");
-		}
-		return result;
-	}
-
-	//	@RequiresPermissions(value={"managementcenter:materialproject:view","managementcenter:materialproject:add","managementcenter:materialproject:edit"},logical=Logical.OR)
-	@RequestMapping(value = "formPlan")
-	public String formPlan(ConstructionProject constructionProject, Model model) {
-		String originalId = constructionProject.getId();
-		constructionProject.setProjectStatus("2");
-		String constructionId = TreeTableUtil.getConstructionId(constructionProject);
-		if ("".equals(constructionId)){
-			model.addAttribute("constructionId","0");//项目
-		}
-		if ("line".equals(constructionId)){
-			model.addAttribute("constructionId","1");
-		}
-		constructionProject = get(constructionProject.getId());
-		constructionProject.setId(originalId);
-		model.addAttribute("constructionProject", constructionProject);
-		return "modules/sg/managementcenter/constructionProject/constructionPlanForm";
-	}
 
 	/**
 	 * 计划安排时间修改
@@ -298,19 +272,4 @@ public class ConstructionProjectController extends BaseController {
 		j.setMsg("设置时间成功");
 		return j;
 	}
-
-	public List<Map<String,Object>> getMapListRight(ConstructionProject constructionProject){
-		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
-		String time = "";
-		if (null!=constructionProject.getArrangeTime()){
-			time = sdf.format(constructionProject.getArrangeTime());
-			constructionProject.setArrangeTime(null);
-		}else {
-			time = sdf.format(new Date());
-		}
-		List<Map<String,Object>> mapList = Lists.newArrayList();
-		List<ConstructionProject> constructionProjects = constructionProjectService.findList(constructionProject);
-		List<ConstructionProject> constructionProjectList = TreeTableUtil.getMonths(constructionProjects, time);
-		return TreeTableUtil.getBootstrapTreeTable(mapList, constructionProjectList);
-	}
 }

+ 311 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/web/ConstructionProjectTemporaryController.java

@@ -0,0 +1,311 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.managementcenter.constructionProject.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProjectTemporary;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.service.ConstructionProjectService;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.service.ConstructionProjectTemporaryService;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.util.ImportProUtil;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.util.ImportUtil;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.util.Result;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.util.TreeTableUtil;
+import com.jeeplus.modules.sg.managementcenter.materialplan.entity.MaterialPlan;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
+
+@Controller
+@RequestMapping(value = "${adminPath}/sg/managementCenter/constructionProjectTemporaryController")
+public class ConstructionProjectTemporaryController extends BaseController {
+
+	@Autowired
+	private ConstructionProjectService constructionProjectService;
+	@Autowired
+	private ConstructionProjectTemporaryService constructionProjectTemporaryService;
+	
+	@ModelAttribute
+	public ConstructionProjectTemporary get(@RequestParam(required=false) String id) {
+		ConstructionProjectTemporary entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = constructionProjectTemporaryService.get(id);
+		}
+		if (entity == null){
+			entity = new ConstructionProjectTemporary();
+		}
+		return entity;
+	}
+	
+	/**
+	 * 项目列表页面
+	 */
+//	@RequiresPermissions("managementcenter:materialproject:list")
+	@RequestMapping(value = {"list", ""})
+	public String list(ConstructionProject constructionProject, Model model) {
+		model.addAttribute("constructionProject", constructionProject);
+		return "modules/sg/managementcenter/constructionProject/constructionDateList";
+	}
+
+	@RequestMapping(value = {"listPower", ""})
+	public String listPower(ConstructionProject constructionProject, Model model) {
+		model.addAttribute("constructionProject", constructionProject);
+		return "modules/sg/managementcenter/constructionProject/constructionPowerList";
+	}
+
+	/**
+	 * 列表数据
+	 */
+	@ResponseBody
+//	@RequiresPermissions("managementcenter:materialproject:list")
+	@RequestMapping(value = "data")
+	public Map<String, Object> data(ConstructionProjectTemporary constructionProjectTemporary, HttpServletRequest request, HttpServletResponse response, Model model) {
+		constructionProjectTemporary.setStatus("1");
+		Page<ConstructionProjectTemporary> page = constructionProjectTemporaryService.findPageList(new Page<ConstructionProjectTemporary>(request, response), constructionProjectTemporary);
+		return getBootstrapData(page);
+	}
+	//选择树形列表数据
+	@ResponseBody
+	@RequestMapping(value = "dataPower")
+	public Map<String, Object> dataPower(ConstructionProjectTemporary constructionProjectTemporary, HttpServletRequest request, HttpServletResponse response, Model model) {
+		constructionProjectTemporary.setStatus("1");
+		Page<ConstructionProjectTemporary> page = constructionProjectTemporaryService.findPageList(new Page<ConstructionProjectTemporary>(request, response), constructionProjectTemporary);
+		return getBootstrapData(page);
+	}
+
+	@ResponseBody
+//	@RequiresPermissions("managementcenter:materialproject:list")
+	@RequestMapping(value = "dataPlan")
+	public Map<String, Object> dataPlan(ConstructionProjectTemporary constructionProjectTemporary, HttpServletRequest request, HttpServletResponse response, Model model) {
+		constructionProjectTemporary.setStatus("1");
+		Page<ConstructionProjectTemporary> page = constructionProjectTemporaryService.findPageList(new Page<ConstructionProjectTemporary>(request, response), constructionProjectTemporary);
+		return getBootstrapData(page);
+	}
+
+	@ResponseBody
+	@RequestMapping(value = "addtime")
+	public AjaxJson addTime(ConstructionProjectTemporary constructionProjectTemporary){
+		AjaxJson j = new AjaxJson();
+		try {
+			String ids = constructionProjectTemporary.getId();
+			if (ids.contains(",")){
+				String[] split = ids.split(",");
+				ConstructionProjectTemporary cons = new ConstructionProjectTemporary();
+				for (String str:split){
+					cons = new ConstructionProjectTemporary();
+					cons.setId(str);
+					cons.setPlanTime(constructionProjectTemporary.getPlanTime());
+					constructionProjectTemporaryService.updateStatus(cons);
+				}
+			}else {
+				constructionProjectTemporaryService.updateTime(constructionProjectTemporary);
+			}
+			j.setSuccess(true);
+			j.setMsg("更新成功");
+			return j;
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+		j.setSuccess(false);
+		j.setMsg("时间不符合规范");
+		return j;
+	}
+
+	@ResponseBody
+	@RequestMapping(value = "deleteProject")
+	public AjaxJson deleteProject(ConstructionProjectTemporary constructionProjectTemporary){
+		AjaxJson j = new AjaxJson();
+		try {
+			j.setSuccess(true);
+			constructionProjectTemporaryService.deleteAll();
+			return j;
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+		return j;
+	}
+
+	/**
+	 * 批量删除
+	 */
+	@ResponseBody
+	@RequestMapping(value = "deleteAll")
+	public Result deleteAll(String ids) {
+		String idArray[] = ids.split(",");
+		Result j = new Result();
+		try {
+			ConstructionProjectTemporary constructionProjectTemporary = new ConstructionProjectTemporary();
+			for (String str : idArray){
+				constructionProjectTemporary = new ConstructionProjectTemporary();
+				constructionProjectTemporary.setId(str);
+				constructionProjectTemporary.setStatus("0");
+				constructionProjectTemporaryService.updateStatus(constructionProjectTemporary);
+			}
+			constructionProjectTemporary = new ConstructionProjectTemporary();
+			constructionProjectTemporary.setStatus("0");
+			List<ConstructionProjectTemporary> allList = constructionProjectTemporaryService.findAllList(constructionProjectTemporary);
+			List<Map<String,Object>> objectsTree = Lists.newArrayList();
+			j.setSuccess(true);
+//			result.setMapList(TreeTableUtil.getBootstrapTreeTable(objects,list1));
+			j.setMapListTree(TreeTableUtil.getBootstrapTreeTable(objectsTree,allList));
+			j.setSuccess(true);
+			j.setMessage("退回成功!");
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+		return j;
+	}
+	//获取停电线路
+	@ResponseBody
+//	@RequiresPermissions(value={"managementcenter:materialproject:add","managementcenter:materialproject:edit"},logical=Logical.OR)
+	@RequestMapping(value = "powerSave")
+	public AjaxJson save(String ids,ConstructionProjectTemporary constructionProjectTemporary, Model model) throws Exception{
+		AjaxJson ajaxJson = new AjaxJson();
+		getJugde(ids,constructionProjectTemporary,model);
+		ajaxJson.setSuccess(true);
+		return ajaxJson;
+	}
+	//获取停电线路
+	@ResponseBody
+//	@RequiresPermissions(value={"managementcenter:materialproject:add","managementcenter:materialproject:edit"},logical=Logical.OR)
+	@RequestMapping(value = "powerSaveSure")
+	public AjaxJson powerSaveSure(String ids,ConstructionProjectTemporary constructionProjectTemporary, Model model) throws Exception{
+		AjaxJson ajaxJson = new AjaxJson();
+		getJugde(ids,constructionProjectTemporary,model);
+		ajaxJson.setSuccess(true);
+		ConstructionProjectTemporary constructionProjectTemporary1 = new ConstructionProjectTemporary();
+		constructionProjectTemporary1.setStatus("1");
+		List<ConstructionProjectTemporary> list = constructionProjectTemporaryService.findList(constructionProjectTemporary1);
+		boolean flag = false;
+		for (ConstructionProjectTemporary projectTemporary:list){
+			if ("1".equals(projectTemporary.getHtmlStatus())){
+				flag = true;
+				break;
+			}
+		}
+		if (flag){
+			ajaxJson.setSuccess(true);
+			ajaxJson.setMsg("1");
+		}else {
+			ajaxJson.setSuccess(false);
+			ajaxJson.setMsg("1");
+		}
+		return ajaxJson;
+	}
+
+	//baocun
+	public void getJugde(String ids,ConstructionProjectTemporary constructionProjectTemporary, Model model){
+		List<ConstructionProjectTemporary> constructionProjectTemporaryList = new ArrayList<ConstructionProjectTemporary>();
+		String[] idsSplite = null;
+		String[] idsSpliteChild = null;
+		String id="";
+		String powerFlag = "";
+		ConstructionProjectTemporary constructionProject = new ConstructionProjectTemporary();
+		if (null!=ids){
+			idsSplite = ids.split(";");
+			for (String str : idsSplite){
+				id="";
+				powerFlag="";
+				idsSpliteChild = str.split(",");
+				for (String strChild:idsSpliteChild){
+					if (strChild.equals("停电")||strChild.equals("带电")){
+						powerFlag = strChild;
+					}else {
+						id = strChild;
+					}
+				}
+				if (!"".equals(id)){
+					constructionProject=new ConstructionProjectTemporary();
+					constructionProject.setId(id);
+					constructionProject.setFlagPower(powerFlag);
+					constructionProjectTemporaryList.add(constructionProject);
+				}
+			}
+			ConstructionProjectTemporary projectTemporary = new ConstructionProjectTemporary();
+			projectTemporary.setStatus("1");
+			List<ConstructionProjectTemporary> list = constructionProjectTemporaryService.findList(projectTemporary);
+			//得到集合
+			for (ConstructionProjectTemporary cons1:list){
+				for (ConstructionProjectTemporary cons2:constructionProjectTemporaryList){
+					if (cons1.getId().equals(cons2.getId())){
+						cons1.setFlagPower(cons2.getFlagPower());
+						break;
+					}
+				}
+			}
+			//停电
+			List<ConstructionProjectTemporary> constructionYes = new ArrayList<ConstructionProjectTemporary>();
+			//带电
+			List<ConstructionProjectTemporary> constructionNo = new ArrayList<ConstructionProjectTemporary>();
+			for (ConstructionProjectTemporary project:list){
+				if (project.getFlagPower().equals("停电")){
+					constructionYes.add(project);//停电
+				}else {
+					constructionNo.add(project);//带电
+				}
+				project.setHtmlStatus("0");
+				constructionProjectTemporaryService.updatePower(project);
+			}
+			HashSet<String> powerString = getPowerString(constructionYes);//停电范围
+			List<ConstructionProjectTemporary> powerStringList = getPowerStringList(constructionNo, powerString);
+//			for (ConstructionProjectTemporary cons:powerStringList){
+//				constructionYes.add(cons);
+//			}
+
+		}
+	}
+	//得到停电范围
+	public HashSet<String>  getPowerString(List<ConstructionProjectTemporary> constructionProjectTemporaries){
+		HashSet<String> hashSet = new HashSet<String>();//开关集合
+		String[] splite = null;
+		for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+			if (null != constructionProjectTemporary.getPowerScope()){
+				if (null!=constructionProjectTemporary.getPowerScope()&&!"".equals(constructionProjectTemporary.getPowerScope())) {
+					if (constructionProjectTemporary.getPowerScope().contains(";")) {
+						splite = constructionProjectTemporary.getPowerScope().split(";");
+						for (String s : splite) {
+							hashSet.add(s);
+						}
+					}else if (constructionProjectTemporary.getPowerScope().contains(";")){
+						splite = constructionProjectTemporary.getPowerScope().split(";");
+						for (String s1 : splite) {
+							hashSet.add(s1);
+						}
+					}else {
+						hashSet.add(constructionProjectTemporary.getPowerScope());
+					}
+				}
+			}
+		}
+		return hashSet;
+	}
+	//得到带电集合状态
+	public List<ConstructionProjectTemporary> getPowerStringList(List<ConstructionProjectTemporary> constructionProjectTemporaries,HashSet<String> strings){
+		for (String power:strings){
+			for (ConstructionProjectTemporary constructionProjectTemporary:constructionProjectTemporaries){
+				if (constructionProjectTemporary.getPowerScope().contains(power)){
+					constructionProjectTemporary.setHtmlStatus("1");
+					constructionProjectTemporaryService.updatePower(constructionProjectTemporary);
+				}
+			}
+		}
+		return constructionProjectTemporaries;
+	}
+}

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

@@ -65,6 +65,15 @@ public class Project extends DataEntity<Project> {
     private String powerLine;//停电线路
     private String powerScope;//停电范围
     private List<String> powerScopeList;//停电范围拆分list
+    private String rezkey;
+
+    public String getRezkey() {
+        return rezkey;
+    }
+
+    public void setRezkey(String rezkey) {
+        this.rezkey = rezkey;
+    }
 
     public List<String> getPowerScopeList() {
         return powerScopeList;

+ 56 - 0
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionDateForm.jsp

@@ -0,0 +1,56 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>需求基本信息</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+	        $('#arrangeTime').datetimepicker({
+                format: "YYYY-MM",
+                minDate:new Date()-1
+		    });
+		});
+		function save() {
+		    var projectNumber = $("#projectNumber").val();
+		    var arrangeTime = $("#arrange").val();
+		    if (null==projectNumber ||"" == projectNumber){
+		        jp.error("请输入项目定义号!");
+		        return false;
+			}
+			if (null == arrangeTime || "" == arrangeTime){
+			    jp.error("请选择时间!")
+				return false;
+            }
+            jp.getParent().addList(projectNumber,arrangeTime);
+            var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+            parent.layer.close(dialogIndex);
+        }
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="constructionProjectTemporary" class="form-horizontal">
+		<form:hidden path="id"/>	
+		<table class="table table-bordered">
+			<tbody>
+			<tr>
+				<td class="width-15 active"><label class="">项目定义号:</label></td>
+				<td class="width-35">
+					<form:input path="projectNumber" htmlEscape="false"  id="projectNumber"  class="form-control"/>
+				</td>
+				<td class="width-15 active"><label class="">选择月份:</label></td>
+				<td class="width-35">
+					<div class='input-group form_datetime' id='arrangeTime'>
+						<input type='text'  name="arrangeTime" class="form-control required" id="arrange"  value="<fmt:formatDate value="${constructionProjectTemporary.arrangeTime}" pattern="yyyy-MM"/>"/>
+						<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			            </span>
+					</div>
+				</td>
+			</tr>
+			</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 227 - 0
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionDateList.js

@@ -0,0 +1,227 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#projectTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+                height:'400',
+               // //显示检索按钮
+	           // showSearch: true,
+               // //显示刷新按钮
+               // showRefresh: true,
+               // //显示切换手机试图按钮
+               // showToggle: true,
+               // //显示 内容列下拉框
+    	       // showColumns: true,
+    	       // //显示到处按钮
+    	       // showExport: true,
+    	       // //显示切换分页按钮
+    	       // showPaginationSwitch: true,
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               // pagination: true,
+               //  //排序方式
+               // sortOrder: "asc",
+               // //初始化加载第一页,默认第一页
+               // pageNumber:1,
+               // //每页的记录行数(*)
+               // pageSize: 5000,
+               // //可供选择的每页的行数(*)
+               // pageList: [5,10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/sg/managementCenter/constructionProjectTemporaryController/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该表单记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/sg/managementcenter/project/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#projectTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+        onLoadSuccess:function(data) {
+            var split = data.rows;
+            for (var i = 0; i < split.length; i++) {
+                var arrangeTime = split[i].arrangeTime;
+                var date = new Date(arrangeTime);
+                var date1 = new Date(arrangeTime);
+                date1.setDate(date1.getMonth()+1);
+                $('#' + split[i].id).datetimepicker({
+                    format: "YYYY-MM-DD",
+                    minDate:date,
+                    maxDate:date1,
+                }).on('dp.change', function (i) {
+                    return function (ev) {
+                        var newDateTime = ev.date ? ev.date.format('YYYY-MM-DD') : "";
+                        var oldDateTime = ev.oldDate ? ev.oldDate.format('YYYY-MM-DD') : "";
+                        if (newDateTime != oldDateTime) {
+                            if ("" != oldDateTime) {
+                                jp.confirm('确认要更新时间吗?', function () {
+                                    jp.get("${ctx}/sg/managementCenter/constructionProjectTemporaryController/addtime?id=" + split[i].id + "&planTime=" + newDateTime, function (data) {
+                                        if (data.success) {
+                                            jp.success(data.msg);
+                                        } else {
+                                            jp.error(data.msg);
+                                        }
+                                    })
+                                })
+                            } else {
+                                jp.get("${ctx}/sg/managementCenter/constructionProjectTemporaryController/addtime?id=" + split[i].id + "&planTime=" + newDateTime, function (data) {
+                                    if (data.success) {
+                                        // jp.success(data.msg);
+                                    } else {
+                                        jp.error(data.msg);
+                                    }
+                                })
+                            }
+
+                        }
+                    }
+                }(i));
+            }
+        },
+               onClickRow: function(row, $el){
+               },
+
+            onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [
+                   {
+		        field: 'projectNumber',
+		        title: '项目定义号',
+                width:160
+
+            }
+                   ,{
+                       field: 'lineName',
+                       title: '线路名称',
+                       width:120
+
+                   }
+                   ,{
+                       field: 'powerScope',
+                       title: '停电范围',
+                       width:110
+
+                   }
+                   ,{
+                       field: 'planTime',
+                       title: '安排计划时间',
+                       width:160,
+                       formatter: getTime
+                   }
+		     ]
+		
+		});
+
+    function getTime(value, row, index) {
+        return [
+            "<div class='input-group form_datetime' id="+row.id+"> <input type='text' id="+row.id+"input"+"   name='deliverySchedule' class='form-control required'  value="+row.planTime+"/> <span class='input-group-addon'> <span class='glyphicon glyphicon-calendar'></span> </span></div>" ,
+        ].join('');
+    }
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#projectTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#projectTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#projectTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#projectTable').bootstrapTable('getSelections').length!=1);
+        });
+		    
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#projectTable').bootstrapTable('refresh');
+		});
+	 
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		  $("#searchForm  .select-item").html("");
+		  $('#projectTable').bootstrapTable('refresh');
+		});
+		
+		$('#beginBeginDate').datetimepicker({
+			 format: "YYYY-MM-DD HH:mm:ss"
+		});
+		$('#endBeginDate').datetimepicker({
+			 format: "YYYY-MM-DD HH:mm:ss"
+		});
+		$('#endDate').datetimepicker({
+			 format: "YYYY-MM-DD HH:mm:ss"
+		});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+    function getDate() {
+        return $.map($("#projectTable").bootstrapTable('getData'), function (row) {
+            return row
+        });
+    }
+    //刷新列表
+  function refresh(){
+  	$('#projectTable').bootstrapTable('refresh');
+  }
+    function save() {
+        var date = getDate();
+        var idPower = "";
+        var id = ""
+        var flag = false;
+        for (var i = 0; i < date.length; i++){
+            id = date[i].id;
+            idPower = $("#"+id+"input").val();
+            if (null == idPower||"" == idPower){
+                flag = true;
+            }
+        }
+        if (flag){
+            jp.error("请选择具体时间!")
+            return false;
+        } else {
+            return true;
+        }
+
+    }
+</script>

+ 34 - 0
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionDateList.jsp

@@ -0,0 +1,34 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目计划安排</title>
+	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@include file="/webpage/include/treeview.jsp" %>
+	<%@include file="constructionDateList.js" %>
+</head>
+<script>
+    function save() {
+        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+        parent.layer.close(dialogIndex);
+    }
+</script>
+<body>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<%--<div class="panel-heading">--%>
+		<%--<h3 class="panel-title">安排计划时间</h3>--%>
+	<%--</div>--%>
+	<div class="panel-body">
+	<!-- 工具栏 -->
+
+	<!-- 表格 -->
+	<table id="projectTable" data-toolbar="#toolbar"></table>
+
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 272 - 0
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionForm.js

@@ -0,0 +1,272 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script type="text/javascript">
+		$(document).ready(function() {
+		//zTree初始化
+			$.getJSON("${ctx}/sg/managementCenter/constructionProject/bootstrapTreeTable",function(data){
+                jstree(data);
+                dateTimeValue('1');
+			});
+            $('#selectId').click(function () {
+                var object = $('#jstree').treeview('getChecked');
+                if (object.length<1){
+                    jp.error("请选择项目!")
+                    return false;
+                }
+                var str = "";
+                for (var  i = 0; i < object.length; i++) {
+                    str+=object[i].id+",";
+                }
+                var sureStr  = str.substring(0,str.length-1);
+                $("#parentIds").val(sureStr);
+                add(sureStr);
+            });
+            //搜索
+            var findSearchableNodes = function() {
+                return $('#jstree').treeview('search', [ $.trim($('#input-search').val()), { ignoreCase: false, exactMatch: false } ]);
+            };
+            var search = function(e) {
+                var pattern = $.trim($('#input-search').val());
+                var options = {
+                    ignoreCase: $('#chk-ignore-case').is(':checked'),
+                    exactMatch: $('#chk-exact-match').is(':checked'),
+                    revealResults: $('#chk-reveal-results').is(':checked')
+                };
+                $('#jstree').treeview('search', [ $.trim($('#input-search').val()), { ignoreCase: false, exactMatch: false } ]);
+                var results = $('#jstree').treeview('search', [ pattern, options ]);
+            }
+            $('#btn-search').on('click', search);
+            $('#btn-clear-search').on('click', function (e) {
+                $('#jstree').treeview('clearSearch');
+                $('#input-search').val('');
+                $('#jstree').treeview('collapseAll', {
+                    silent : false//设置初始化节点关闭
+                });
+            });
+            $.getJSON("${ctx}/sg/managementCenter/constructionProject/treeData",function(data){
+                jstreeTime(data)
+            });
+            //搜索
+            var search1 = function(e) {
+                var pattern = $.trim($('#input-search1').val());
+                var options = {
+                    ignoreCase: $('#chk-ignore-case').is(':checked'),
+                    exactMatch: $('#chk-exact-match').is(':checked'),
+                    revealResults: $('#chk-reveal-results').is(':checked')
+                };
+                $('#jstreeTime').treeview('search', [ $.trim($('#input-search1').val()), { ignoreCase: false, exactMatch: false } ]);
+                var results = $('#jstreeTime').treeview('search', [ pattern, options ]);
+            }
+            $('#btn-search1').on('click', search1);
+            $('#btn-clear-search1').on('click', function (e) {
+                $('#jstreeTime').treeview('clearSearch');
+                $('#input-search1').val('');
+                $('#jstreeTime').treeview('collapseAll', {
+                    silent : false//设置初始化节点关闭
+                });
+            });
+            $('#selectId1').click(function () {
+                var object = $('#jstreeTime').treeview('getChecked');
+                if (object.length<1){
+                    jp.error("请选择项目!");
+                    return false;
+                }
+                var str = "";
+                for (var  i = 0; i < object.length; i++) {
+                    str+=object[i].id+",";
+                }
+                var sureStr  = str.substring(0,str.length-1);
+                minus(sureStr);
+            })
+            //表格初始化
+            $('#table').bootstrapTable({
+                //请求方法
+                method: 'post',
+                //类型json
+                dataType: "json",
+                contentType: "application/x-www-form-urlencoded",
+                //是否显示行间隔色
+                //显示刷新按钮
+                showRefresh: true,
+                //是否显示分页(*)
+                pagination: true,
+                //排序方式
+                sortOrder: "asc",
+                //初始化加载第一页,默认第一页
+                pageNumber:1,
+                //每页的记录行数(*)
+                pageSize: 5,
+                //可供选择的每页的行数(*)
+                pageList: [5,10, 25, 50, 100],
+                //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+                url: "${ctx}/sg/managementCenter/constructionProjectTemporaryController/dataPlan",
+                //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+                //queryParamsType:'',
+                ////查询参数,每次调用是会带上这个参数,可自定义
+                queryParams : function(params) {
+                    var searchParam = $("#searchForm").serializeJSON();
+                    searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+                    searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+                    searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                    return searchParam;
+                },
+                //分页方式:client客户端分页,server服务端分页(*)
+                sidePagination: "server",
+                contextMenuTrigger:"right",//pc端 按右键弹出菜单
+                contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+                contextMenu: '#context-menu',
+                onContextMenuItem: function(row, $el){
+                    if($el.data("item") == "edit"){
+                        edit(row.id);
+                    } else if($el.data("item") == "delete"){
+                        deleteAll(row.id);
+                    }
+                },
+                onClickRow: function(row, $el){
+                },
+                onLoadSuccess:function(data) {
+                    var split = data.rows;
+                    var tb = document.getElementById('table');    // table 的 id
+                    var rows = tb.rows;                           // 获取表格所有行
+                    for (var i =0;i<split.length;i++){
+                        if (split[i].htmlStatus=="2"){
+                            // this.data.rows[i].setAttribute("style","color: red;");
+                            rows[i+1].style.backgroundColor = "#999999"
+                        }
+                    }
+                },
+                onShowSearch: function () {
+                    $("#search-collapse").slideToggle();
+                },
+                columns: [{
+                    checkbox: true
+
+                }, {
+                    field: 'projectNumber',
+                    title: '项目定义号'
+
+                }, {
+                    field: 'projectName',
+                    title: '项目名称'
+                }, {
+                    field: 'powerLine',
+                    title: '停电线路'
+                }, {
+                    field: 'powerScope',
+                    title: '停电范围'
+                }
+                ]
+
+            });
+
+        })
+
+        if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+            $('#table').bootstrapTable("toggleView");
+        }
+
+        $('#table').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+            'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#table').bootstrapTable('getSelections').length);
+            $('#edit').prop('disabled', $('#table').bootstrapTable('getSelections').length!=1);
+        });
+    //安排计划时间
+    function add(ids){
+        jp.post("${ctx}/sg/managementCenter/constructionProject/unplanned",{'ids':ids},function(data){
+            if(data.success){
+                refresh();
+                // jstreeTime(data.mapList);
+                jstree(data.mapListTree);
+            }else{
+                jp.error(data.message);
+            }
+        })
+    }
+    function getIds() {
+        return $("#parentIds").val();
+    }
+    function jstree(date) {
+        $('#jstree').treeview({
+            data: date,
+            levels: 1,
+            highlightSelected:false,
+            showCheckbox:true,
+        });
+    }
+    function jstreeTime(date) {
+        $('#jstreeTime').treeview({
+            data: date,
+            levels: 1,
+            highlightSelected:false,
+            showCheckbox:true,
+            onNodeSelected: function(event, treeNode) {
+                var id = treeNode.id;
+                jp.openSaveDialog('编辑安排计划项目', "${ctx}/sg/managementCenter/constructionProject/formPlan?id=" + id, '800px', '500px');
+            },
+
+        });
+    }
+    function dateTimeValue(value) {
+        if (value != '1'){
+            $("#dateTimeId").val(value);
+        }else {
+            var date = new Date();
+            var str = date.toISOString();
+            $("#dateTimeId").val( str.substring(0,7));
+        }
+    }
+
+    function selected(data){
+        if(data.nodeId == undefined){
+            for (var i = 0; i < data.nodes.length; i++) {
+                $("#jstree").treeview('checkNode', [ data.nodes[i], {silent: true}]);
+            }
+        }else{
+            var parentNode = $('#jstree').treeview('getParent', data.nodeId);
+            $("#jstree").treeview('checkNode', [ parentNode, {silent: true}]);
+        }
+    }
+    function unSelected(node){
+        if(node.id == undefined){
+            for (var i = 0; i < node.nodes.length; i++) {
+                $("#jstree").treeview('uncheckNode', [ node.nodes[i], {silent: true}]);
+            }
+        }else{
+            var parentNode = $('#jstree').treeview('getParent', node.nodeId);
+            var num;
+            for (var i = 0; i < parentNode.nodes.length; i++) {
+                if(parentNode.nodes[i].state.checked == true){
+                    num=1;
+                }
+            }
+            if(num!=1){
+                $("#jstree").treeview('uncheckNode', [ parentNode, {silent: true}]);
+            }
+            console.log(parentNode);
+        }
+    }
+    function refresh() {
+        $('#table').bootstrapTable('refresh');
+    }
+    function deleteAll(ids){
+        if(!ids){
+            ids =  getIdSelections();
+        }
+        jp.confirm('确认要退回项目吗?', function(){
+            jp.loading();
+            $.get("${ctx}/sg/managementCenter/constructionProjectTemporaryController/deleteAll?ids=" +ids, function(data){
+                if(data.success){
+                    jstree(data.mapListTree);
+                    refresh();
+                    jp.success(data.message);
+                }else{
+                    jp.error(data.message);
+                }
+            })
+        })
+    }
+    function getIdSelections() {
+        return $.map($("#table").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+</script>

+ 37 - 56
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionForm.jsp

@@ -2,63 +2,44 @@
 <%@ include file="/webpage/include/taglib.jsp"%>
 <html>
 <head>
-	<title>物料计划管理</title>
-	<meta name="decorator" content="ani"/>
-	<script type="text/javascript">
-
-		$(document).ready(function() {
-            $("#ids").val(jp.getParent().getIds());
-	        $('#deliverySchedule').datetimepicker({
-                format: "YYYY-MM"
-            });
-		});
-		function save() {
-		    var dateTimeId = $("#dateTimeId").val();
-            var isValidate = jp.validateForm('#inputForm');//校验表单
-            if(!isValidate){
-                return false;
-			}else{
-                jp.loading();
-                jp.post("${ctx}/sg/managementCenter/constructionProject/unplanned",$('#inputForm').serialize(),function(data){
-                    if(data.success){
-                        jp.getParent().refreshjstree();
-                        jp.getParent().jstreeTime(data.mapList);//渲染
-						jp.getParent().dateTimeValue(dateTimeId);
-                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
-                        parent.layer.close(dialogIndex);
-                        jp.success(data.message);
-                        jp.getParent().jstreeTime(data.mapList);//渲染
-                    }else{
-                        jp.error(data.Message);
-                    }
-                })
-			}
-
+    <title>用户管理</title>
+    <meta name="decorator" content="ani"/>
+    <%@ include file="/webpage/include/bootstraptable.jsp"%>
+    <link href="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.css" rel="stylesheet" type="text/css"/>
+    <script src="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.js" type="text/javascript"></script>
+    <%@include file="/webpage/include/treeview.jsp" %>
+    <%@ include file="constructionForm.js"%>
+    <script>
+        function save() {
+            var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+            parent.layer.close(dialogIndex);
+            jp.getParent().addDate();
         }
-	</script>
+    </script>
 </head>
-<body class="bg-white">
-		<form:form id="inputForm" modelAttribute="constructionProject" class="form-horizontal">
-		<form:hidden path="id"/>	
-		<table class="table table-bordered">
-			<tbody>
-				<tr>
-					<td class="width-15 active"><label class="">id:</label></td>
-					<td class="width-35">
-						<input class="form-control" id="ids" name="ids" value=""/>
-					</td>
-					<td class="width-15 active"><label class="">选择计划时间:</label></td>
-					<td class="width-35">
-						<div class='input-group form_datetime' id='deliverySchedule'>
-							<input type='text'  name="arrangeTime" class="form-control required" id="dateTimeId" value="<fmt:formatDate value="${constructionProject.arrangeTime}" pattern="yyyy-MM"/>"/>
-								<span class="input-group-addon">
-			                        <span class="glyphicon glyphicon-calendar"></span>
-			                    </span>
-						</div>
-					</td>
-				</tr>
-			</tbody>
-		</table>
-	</form:form>
+<style>
+</style>
+<body style="background: white">
+<div class="wrapper wrapper-content">
+    <div class="row">
+        <%--未安排计划的树形--%>
+        <div class="col-sm-3 col-md-2">
+            <div id="jstree" style="height:400px;overflow:auto;"></div>
+        </div>
+        <div  class="col-sm-9 col-md-10 animated fadeInRight">
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="selectId" class="btn btn-warning">
+                     安排选择计划
+                </button>
+                <button id="remove" class="btn btn-danger"  onclick="deleteAll()">
+                    <i class="glyphicon glyphicon-remove"></i> 退回
+                </button>
+            </div><!-- 工具栏结束 -->
+            <table id="table" data-toolbar="#toolbar">
+            </table>
+        </div>
+    </div>
+</div>
 </body>
 </html>

+ 270 - 195
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionList.js

@@ -1,206 +1,281 @@
 <%@ page contentType="text/html;charset=UTF-8" %>
-<script type="text/javascript">
-		$(document).ready(function() {
-		//zTree初始化
-			$.getJSON("${ctx}/sg/managementCenter/constructionProject/bootstrapTreeTable",function(data){
-                jstree(data);
-                dateTimeValue('1');
-			});
-            $('#selectId').click(function () {
-                var object = $('#jstree').treeview('getChecked');
-                if (object.length<1){
-                    jp.error("请选择项目!")
-                    return false;
-                }
-                var str = "";
-                for (var  i = 0; i < object.length; i++) {
-                    str+=object[i].id+",";
-                }
-                var sureStr  = str.substring(0,str.length-1);
-                $("#parentIds").val(sureStr);
-                add(sureStr);
-            });
-            //搜索
-            var findSearchableNodes = function() {
-                return $('#jstree').treeview('search', [ $.trim($('#input-search').val()), { ignoreCase: false, exactMatch: false } ]);
-            };
-            var search = function(e) {
-                var pattern = $.trim($('#input-search').val());
-                var options = {
-                    ignoreCase: $('#chk-ignore-case').is(':checked'),
-                    exactMatch: $('#chk-exact-match').is(':checked'),
-                    revealResults: $('#chk-reveal-results').is(':checked')
-                };
-                $('#jstree').treeview('search', [ $.trim($('#input-search').val()), { ignoreCase: false, exactMatch: false } ]);
-                var results = $('#jstree').treeview('search', [ pattern, options ]);
-            }
-            $('#btn-search').on('click', search);
-            $('#btn-clear-search').on('click', function (e) {
-                $('#jstree').treeview('clearSearch');
-                $('#input-search').val('');
-                $('#jstree').treeview('collapseAll', {
-                    silent : false//设置初始化节点关闭
-                });
-            });
-            $.getJSON("${ctx}/sg/managementCenter/constructionProject/treeData",function(data){
-                jstreeTime(data)
-            });
-            //搜索
-            var search1 = function(e) {
-                var pattern = $.trim($('#input-search1').val());
-                var options = {
-                    ignoreCase: $('#chk-ignore-case').is(':checked'),
-                    exactMatch: $('#chk-exact-match').is(':checked'),
-                    revealResults: $('#chk-reveal-results').is(':checked')
-                };
-                $('#jstreeTime').treeview('search', [ $.trim($('#input-search1').val()), { ignoreCase: false, exactMatch: false } ]);
-                var results = $('#jstreeTime').treeview('search', [ pattern, options ]);
+<script>
+$(document).ready(function() {
+	$('#projectTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	           showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)     
+               cache: false,    
+               //是否显示分页(*)  
+               pagination: false,
+                //排序方式 
+               sortOrder: "asc",  
+               //初始化加载第一页,默认第一页
+               pageNumber:1,   
+               //每页的记录行数(*)   
+               pageSize: 5,
+               //可供选择的每页的行数(*)    
+               pageList: [5,10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据  
+               url: "${ctx}/sg/managementCenter/constructionProject/data",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',   
+               ////查询参数,每次调用是会带上这个参数,可自定义                         
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该表单记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/sg/managementcenter/project/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#projectTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+                   	   
+                   	});
+                      
+                   } 
+               },
+              
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [{
+		        checkbox: true
+		       
+		    }
+			,{
+		        field: 'projectNumber',
+		        title: '项目定义号',
+                width:160
+
             }
-            $('#btn-search1').on('click', search1);
-            $('#btn-clear-search1').on('click', function (e) {
-                $('#jstreeTime').treeview('clearSearch');
-                $('#input-search1').val('');
-                $('#jstreeTime').treeview('collapseAll', {
-                    silent : false//设置初始化节点关闭
-                });
-            });
-            $('#selectId1').click(function () {
-                var object = $('#jstreeTime').treeview('getChecked');
-                if (object.length<1){
-                    jp.error("请选择项目!");
-                    return false;
-                }
-                var str = "";
-                for (var  i = 0; i < object.length; i++) {
-                    str+=object[i].id+",";
-                }
-                var sureStr  = str.substring(0,str.length-1);
-                minus(sureStr);
-            })
-        })
-    //安排计划时间
-    function add(ids){
-        var dateTimeId = $("#dateTimeId").val();
-        if (null!=dateTimeId && dateTimeId !=""){
-            jp.post("${ctx}/sg/managementCenter/constructionProject/unplanned",{'ids':ids,'time':dateTimeId},function(data){
-                if(data.success){
-                    jstreeTime(data.mapList);
-                    refreshjstree();
-                }else{
-                    jp.error(data.message);
-                }
-            })
-        }
-    }
-    //取消计划时间
-    function minus(ids) {
-        var dateTimeId = $("#dateTimeId").val();
-        if (null!=dateTimeId && dateTimeId !=""){
-            jp.post("${ctx}/sg/managementCenter/constructionProject/unplannedMinus",{'ids':ids,'time':dateTimeId},function(data){
-                if(data.success){
-                    refreshjstree();
-                    jstreeTime(data.mapList);
-                }else{
-                    jp.error(data.message);
-                }
-            })
-        }
-    }
-    function getIds() {
-        return $("#parentIds").val();
-    }
-    function refreshjstreeTime() {
-        $.getJSON("${ctx}/sg/managementCenter/constructionProject/treeData",function(data){
-            $('#jstreeTime').treeview({
-                data: data,
-                levels: 1,
-                highlightSelected:false,
-                // multiSelect:true,
-                // showCheckbox:true,
-                color:'blue',
-                onNodeSelected: function(event, treeNode) {
-                    var id = treeNode.id;
-                    jp.openSaveDialog('编辑安排计划项目', "${ctx}/sg/managementCenter/constructionProject/formPlan?id=" + id, '800px', '500px');
-                },
-            });
+                   ,{
+                       field: 'projectName',
+                       title: '项目名称',
+                       width:110
+
+                   }
+                   ,{
+                       field: 'projectNote',
+                       title: '停电范围',
+                       width:110
+
+                   }
+                   ,{
+                       field: 'instructions',
+                       title: '是否停电/带电',
+                       width:110
+
+                   }
+                   ,{
+                       field: 'arrangeTime',
+                       title: '月份',
+                       width:110
+
+                   }
+                   ,{
+                       field: 'specificTime',
+                       title: '具体时间',
+                       width:110
+
+                   }
+		     ]
+		
+		});
+
+
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#projectTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#projectTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#projectTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#projectTable').bootstrapTable('getSelections').length!=1);
         });
-    }
-    function refreshjstree() {
-        $.getJSON("${ctx}/sg/managementCenter/constructionProject/bootstrapTreeTable",function(data){
-            $('#jstree').treeview({
-                data: data,
-                levels: 1,
-                highlightSelected:false,
-                // multiSelect:true,
-                showCheckbox:true
-            });
+		    
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#projectTable').bootstrapTable('refresh');
+		});
+	 
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		  $("#searchForm  .select-item").html("");
+		  $('#projectTable').bootstrapTable('refresh');
+		});
+		
+		$('#beginBeginDate').datetimepicker({
+			 format: "YYYY-MM-DD"
+		});
+		$('#endBeginDate').datetimepicker({
+			 format: "YYYY-MM-DD"
+		});
+		$('#endDate').datetimepicker({
+			 format: "YYYY-MM-DD"
+		});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
         });
     }
-    function jstree(date) {
-        $('#jstree').treeview({
-            data: date,
-            levels: 1,
-            highlightSelected:false,
-            // multiSelect:true,
-            showCheckbox:true,
-            // onNodeChecked : function(event, data) {
-            //     selected(data);
-            // },
-            // onNodeUnchecked : function(event, node){
-            //     unSelected(node);
-            // },
+    //刷新列表
+  function refresh(){
+  	$('#projectTable').bootstrapTable('refresh');
+  }
+  
+   function add(){
+	  jp.openSaveDialog('新增项目计划安排', "${ctx}/sg/managementCenter/constructionProject/formDateMonth",'800px', '500px');
+  }
+
+  function addDate() {
+      top.layer.open({
+          type: 2,
+          area: ['900px', '500px'],
+          title: '设计项目时间',
+          maxmin: true, //开启最大化最小化按钮
+          content: "${ctx}/sg/managementCenter/constructionProjectTemporaryController/list" ,
+          btn: ['确定', '关闭'],
+          yes: function(index, layero){
+              var iframeWin = layero.find('iframe')[0]; //得到弹出的窗口对象,执行窗口内iframe页的方法:iframeWin.method();
+              var flag = iframeWin.contentWindow.save();
+              if (flag){
+                  jp.post("${ctx}/sg/managementCenter/constructionProject/save",function(data){
+                      if(data.success){
+                          // jp.success("安排计划成功");
+                      }else{
+                          jp.error(data.msg);
+                      }
+                  })
+                  top.layer.close(index);
+                  refresh();
+              }
+          },
+          btn2: function(index){
+              jp.post("${ctx}/sg/managementCenter/constructionProjectTemporaryController/deleteProject",function(data){
+              })
+              top.layer.close(index);
+          },
+          cancel:function (index) {
+              jp.post("${ctx}/sg/managementCenter/constructionProjectTemporaryController/deleteProject",function(data){
+              })
+              top.layer.close(index);
+          }
+      });
+  }
+    function addPowerFlag() {
+        top.layer.open({
+            type: 2,
+            area: ['900px', '500px'],
+            title: '人工选择是否带电',
+            maxmin: true, //开启最大化最小化按钮
+            content: "${ctx}/sg/managementCenter/constructionProjectTemporaryController/listPower",
+            btn: ['检验','确定','关闭'],
+            btn1:function(index,layero){
+                // alert("1");
+                var iframeWin = layero.find('iframe')[0]; //得到弹出的窗口对象,执行窗口内iframe页的方法:iframeWin.method();
+                iframeWin.contentWindow.save();//调用保存事件,在 弹出页内,需要定义save方法。处理保存事件。s
+            },
+            btn2: function(index,layero){
+                var iframeWin = layero.find('iframe')[0]; //得到弹出的窗口对象,执行窗口内iframe页的方法:iframeWin.method();
+                var flag = iframeWin.contentWindow.saveSure();
+                return false;
+            },
+            btn3: function(index){
+                jp.post("${ctx}/sg/managementCenter/constructionProjectTemporaryController/deleteProject",function(data){
+                })
+                top.layer.close(index);
+            },
+            cancel:function (index) {
+                jp.post("${ctx}/sg/managementCenter/constructionProjectTemporaryController/deleteProject",function(data){
+                })
+                top.layer.close(index);
+            }
         });
     }
-    function jstreeTime(date) {
-        $('#jstreeTime').treeview({
-            data: date,
-            levels: 1,
-            highlightSelected:false,
-            showCheckbox:true,
-            onNodeSelected: function(event, treeNode) {
-                var id = treeNode.id;
-                jp.openSaveDialog('编辑安排计划项目', "${ctx}/sg/managementCenter/constructionProject/formPlan?id=" + id, '800px', '500px');
+    function addList(projectNumber,arrangeTime) {
+        top.layer.open({
+            type: 2,
+            area: ['900px', '500px'],
+            title: '项目计划安排',
+            maxmin: true, //开启最大化最小化按钮
+            content: "${ctx}/sg/managementCenter/constructionProject/form?projectNumber="+projectNumber+"&arrangeTime="+arrangeTime,
+            btn: ['确定', '关闭'],
+            yes: function(index, layero){
+                top.layer.close(index);
+                addPowerFlag();
             },
-
+            btn2: function(index){
+                jp.post("${ctx}/sg/managementCenter/constructionProjectTemporaryController/deleteProject",function(data){
+                })
+                top.layer.close(index);
+            },
+            cancel:function (index) {
+                jp.post("${ctx}/sg/managementCenter/constructionProjectTemporaryController/deleteProject",function(data){
+                })
+                top.layer.close(index);
+            }
         });
     }
-    function dateTimeValue(value) {
-        if (value != '1'){
-            $("#dateTimeId").val(value);
-        }else {
-            var date = new Date();
-            var str = date.toISOString();
-            $("#dateTimeId").val( str.substring(0,7));
-        }
-    }
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑项目管理表单', "${ctx}/sg/managementcenter/project/form?id=" + id, '800px', '500px');
+  }
 
-    function selected(data){
-        if(data.nodeId == undefined){
-            for (var i = 0; i < data.nodes.length; i++) {
-                $("#jstree").treeview('checkNode', [ data.nodes[i], {silent: true}]);
-            }
-        }else{
-            var parentNode = $('#jstree').treeview('getParent', data.nodeId);
-            $("#jstree").treeview('checkNode', [ parentNode, {silent: true}]);
-        }
-    }
-    function unSelected(node){
-        if(node.id == undefined){
-            for (var i = 0; i < node.nodes.length; i++) {
-                $("#jstree").treeview('uncheckNode', [ node.nodes[i], {silent: true}]);
-            }
-        }else{
-            var parentNode = $('#jstree').treeview('getParent', node.nodeId);
-            var num;
-            for (var i = 0; i < parentNode.nodes.length; i++) {
-                if(parentNode.nodes[i].state.checked == true){
-                    num=1;
-                }
-            }
-            if(num!=1){
-                $("#jstree").treeview('uncheckNode', [ parentNode, {silent: true}]);
-            }
-            console.log(parentNode);
-        }
-    }
-</script>
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看项目管理表单', "${ctx}/sg/managementcenter/project/form?id=" + id, '800px', '500px');
+ }
+
+
+
+</script>

+ 44 - 77
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionList.jsp

@@ -2,97 +2,64 @@
 <%@ include file="/webpage/include/taglib.jsp"%>
 <html>
 <head>
-	<title>用户管理</title>
+	<title>项目计划安排</title>
+	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
 	<meta name="decorator" content="ani"/>
 	<%@ include file="/webpage/include/bootstraptable.jsp"%>
-	<link href="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.css" rel="stylesheet" type="text/css"/>
-	<script src="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.js" type="text/javascript"></script>
 	<%@include file="/webpage/include/treeview.jsp" %>
-	<%@ include file="constructionList.js"%>
-	<script>
-        $(document).ready(function() {
-            $('#deliverySchedule').datetimepicker({
-                format: "YYYY-MM",
-            }).on('dp.change',function(ev) {
-                var dateTimeId = $("#dateTimeId").val();
-                var newDateTime = ev.date ? ev.date.format('YYYY-MM') : "";
-                var oldDateTime = ev.oldDate ? ev.oldDate.format('YYYY-MM') : "";
-                if (dateTimeId!=oldDateTime){
-                    if (newDateTime != oldDateTime) {
-                        jp.get("${ctx}/sg/managementCenter/constructionProject/treeDataAjax?arrangeTime="+newDateTime, function (data) {
-                            if (data.success) {
-                                jstreeTime(data.mapList);
-                            } else {
-                                jp.error(data.message);
-                            }
-                        })
-                    }
-				}
-            });
-        });
-	</script>
+	<%@include file="constructionList.js" %>
 </head>
-<style>
-	.icon_left{
-		background-image:;
-	}
-</style>
 <body>
 	<div class="wrapper wrapper-content">
 	<div class="panel panel-primary">
 	<div class="panel-heading">
-		<h3 class="panel-title">项目明细列表</h3>
+		<h3 class="panel-title">项目计划安排</h3>
 	</div>
 	<div class="panel-body">
-		<input type="hidden" value="" id="parentIds"/>
-	<div class="row">
-		<div class='input-group form_datetime'  id='deliverySchedule' style="width: 200px;margin-left: 5px">
-			<input type='text' id="dateTimeId"  name="" class="form-control required"  value=""/>
-			<span class="input-group-addon">
-					<span class="glyphicon glyphicon-calendar"></span>
-				</span>
-		</div>
-		<div class="col-sm-3 col-md-4">
-			<div class="input-group" style="margin-top: 20px">
-				<div style="float: left">
-					<input type="text" class="form-control" id="input-search" placeholder="" value="" style="width: 200px">
-				</div>
-				<div style="float: left;margin-left: 5px">
-					<button type="button" class="btn btn-primary btn-rounded  btn-bordered btn-sm" id="btn-search">搜索</button>
-					<button type="button" class="btn btn-primary btn-rounded  btn-bordered btn-sm" id="btn-clear-search">清除</button>
-				</div>
+		<!-- 搜索 -->
+		<div id="search-collapse" class="collapse">
+			<div class="accordion-inner">
+				<form:form id="searchForm" modelAttribute="constructionProject" class="form form-horizontal well clearfix">
+					<div class="col-xs-12 col-sm-6 col-md-4">
+						<label class="label-item single-overflow pull-left" title="项目定义号:">项目需求名称:</label>
+						<form:input path="projectNumber" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-4">
+						<div style="margin-top:26px">
+							<a  id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i class="fa fa-search"></i> 查询</a>
+							<a  id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm" ><i class="fa fa-refresh"></i> 重置</a>
+						</div>
+					</div>
+				</form:form>
 			</div>
-			<div style="height: 10px"></div>
-			<div id="jstree" style="height:400px;overflow:auto;background:#EEEEEE;"></div>
 		</div>
+	
+	<!-- 工具栏 -->
+	<div id="toolbar">
+			<shiro:hasPermission name="sg:managementcenter:project:add">
+				<button id="add" class="btn btn-primary" onclick="add()">
+					<i class="glyphicon glyphicon-plus"></i> 安排项目计划
+				</button>
+			</shiro:hasPermission>
 
-		<div class="col-sm-3 col-md-2" style="height: 400px;text-align: center;margin-top: 70px">
-			<button id="selectId" class="btn btn-success">
-				<i class="glyphicon glyphicon-edit"></i> 安排计划时间
-			</button>
-            <div style="height: 30px"></div>
-			<button id="selectId1" class="btn btn-success">
-				<i class="glyphicon glyphicon-edit"></i> 取消计划时间
-			</button>
-		</div>
+		    </div>
+		
+	<!-- 表格 -->
+	<table id="projectTable"  style="table-layout:fixed"  data-toolbar="#toolbar"></table>
 
-		<div class="col-sm-3 col-md-5" >
-			<%--<div class='input-group' style="height: 30px">--%>
-			<%--</div>--%>
-			<div class="input-group" style="margin-top: 20px">
-				<div style="float: left">
-					<input type="text" class="form-control" id="input-search1" placeholder="" value="" style="width: 200px">
-				</div>
-				<div style="float: left;margin-left: 5px">
-					<button type="button" class="btn btn-primary btn-rounded  btn-bordered btn-sm" id="btn-search1">搜索</button>
-					<button type="button" class="btn btn-primary btn-rounded  btn-bordered btn-sm" id="btn-clear-search1">清除</button>
-				</div>
-			</div>
-			<div style="height: 10px"></div>
-			<div id="jstreeTime" style="height:400px;overflow:auto;background:#EEEEEE;"></div>
-		</div>
-	</div>
-	</div>
+    <!-- context menu -->
+    <ul id="context-menu" class="dropdown-menu">
+    	<%--<shiro:hasPermission name="sg:managementcenter:project:view">--%>
+        <li data-item="view"><a>查看</a></li>
+        <%--</shiro:hasPermission>--%>
+    	<%--<shiro:hasPermission name="sg:managementcenter:project:edit">--%>
+        <li data-item="edit"><a>编辑</a></li>
+        <%--</shiro:hasPermission>--%>
+        <%--<shiro:hasPermission name="sg:managementcenter:project:del">--%>
+        <li data-item="delete"><a>删除</a></li>
+        <%--</shiro:hasPermission>--%>
+        <li data-item="action1"><a>取消</a></li>
+    </ul>  
 	</div>
 	</div>
 	</div>

+ 0 - 115
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionPlanForm.jsp

@@ -1,115 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/webpage/include/taglib.jsp"%>
-<html>
-<head>
-	<title>物料计划管理</title>
-	<meta name="decorator" content="ani"/>
-	<script type="text/javascript">
-		$(document).ready(function() {
-	        $('.deliverySchedule').datetimepicker({
-                format: "YYYY-MM"
-            });
-            $('.deliverySchedule1').datetimepicker({
-                format: "YYYY-MM-DD"
-            });
-		});
-		function save() {
-            var isValidate = jp.validateForm('#inputForm');//校验表单
-            if(!isValidate){
-                return false;
-			}else{
-                jp.loading();
-                jp.post("${ctx}/sg/managementCenter/constructionProject/unplannedPlan",$('#inputForm').serialize(),function(data){
-                    if(data.success){
-                        jp.getParent().refreshjstreeTime();
-                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
-                        parent.layer.close(dialogIndex);
-                        jp.success(data.msg)
-                    }else{
-                        jp.error(data.msg);
-                    }
-                })
-			}
-
-        }
-	</script>
-</head>
-<body class="bg-white">
-		<form:form id="inputForm" modelAttribute="constructionProject" class="form-horizontal">
-		<form:hidden path="id"/>	
-		<table class="table table-bordered">
-			<tbody>
-				<%--项目显示--%>
-				<c:if test="${constructionId eq '0'}">
-				<%--<form:input path="id" htmlEscape="false" class="form-control"/>--%>
-					<tr>
-
-						<td class="width-15 active"><label class="">线路名称:</label></td>
-						<td class="width-35">
-							<form:input path="lineName" readonly="readonly" htmlEscape="false" class="form-control"/>
-						</td>
-						<td class="width-15 active"><label class="">项目名称:</label></td>
-						<td class="width-35">
-							<form:input path="projectName" readonly="readonly" htmlEscape="false" class="form-control"/>
-						</td>
-					</tr>
-					<tr>
-						<td class="width-15 active"><label class="">当前时间(日):</label></td>
-						<td class="width-35">
-							<div class='input-group form_datetime deliverySchedule'>
-								<input type='text' readonly="readonly"  name="arrangeTime" class="form-control required"  value="<fmt:formatDate value="${constructionProject.arrangeTime}" pattern="yyyy-MM"/>"/>
-								<span class="input-group-addon">
-										<span class="glyphicon glyphicon-calendar"></span>
-									</span>
-							</div>
-						</td>
-						<td class="width-15 active"><label class="">选择具体时间:</label></td>
-						<td class="width-35">
-							<div class='input-group form_datetime deliverySchedule1'>
-								<input type='text'  name="specificTime" class="form-control required"  value="<fmt:formatDate value="${constructionProject.specificTime}" pattern="yyyy-MM-dd"/>"/>
-								<span class="input-group-addon">
-										<span class="glyphicon glyphicon-calendar"></span>
-									</span>
-							</div>
-						</td>
-					</tr>
-				</c:if>
-				<%--线路显示--%>
-				<c:if test="${constructionId eq '1'}">
-					<%--<form:input path="id" htmlEscape="false" class="form-control"/>--%>
-					<tr>
-						<td class="width-15 active"><label class="">线路名称:</label></td>
-						<td class="width-35">
-							<form:input path="lineName" htmlEscape="false" class="form-control" readonly="readonly"/>
-						</td>
-						<td class="width-15 active"><label class="">当前时间:</label></td>
-						<td class="width-35">
-							<div class='input-group form_datetime deliverySchedule' id='deliverySchedule'>
-								<input type='text' readonly="readonly"  name="arrangeTime" class="form-control required"  value="<fmt:formatDate value="${constructionProject.arrangeTime}" pattern="yyyy-MM-dd"/>"/>
-								<span class="input-group-addon">
-			                        <span class="glyphicon glyphicon-calendar"></span>
-			                    </span>
-							</div>
-						</td>
-					</tr>
-					<tr>
-						<td class="width-15 active"><label class="">选择具体时间:</label></td>
-						<td class="width-35">
-							<div class='input-group form_datetime deliverySchedule1' id='deliverySchedule1'>
-								<input type='text'  name="specificTime" class="form-control required"  value="<fmt:formatDate value="${constructionProject.specificTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
-								<span class="input-group-addon">
-			                        <span class="glyphicon glyphicon-calendar"></span>
-			                    </span>
-							</div>
-						</td>
-						<td class="width-15 active"><label class=""></label></td>
-						<td class="width-35">
-
-						</td>
-					</tr>
-				</c:if>
-			</tbody>
-		</table>
-	</form:form>
-</body>
-</html>

+ 255 - 0
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionPowerList.js

@@ -0,0 +1,255 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#projectTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               // //显示检索按钮
+	           // showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               // //显示切换手机试图按钮
+               // showToggle: true,
+               // //显示 内容列下拉框
+    	       // showColumns: true,
+    	       // //显示到处按钮
+    	       // showExport: true,
+    	       // //显示切换分页按钮
+    	       // showPaginationSwitch: true,
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: false,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+                pageNumber:1,
+                // useCurrentPage:true,
+               //每页的记录行数(*)
+               // pageSize: 3000,
+               //可供选择的每页的行数(*)
+               // pageList: [5,10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/sg/managementCenter/constructionProjectTemporaryController/dataPower",
+               //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+               //queryParamsType:'',
+               ////查询参数,每次调用是会带上这个参数,可自定义
+               queryParams : function(params) {
+               	var searchParam = $("#searchForm").serializeJSON();
+               	searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+               	searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+               	searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+                   return searchParam;
+               },
+               //分页方式:client客户端分页,server服务端分页(*)
+               sidePagination: "server",
+               contextMenuTrigger:"right",//pc端 按右键弹出菜单
+               contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+               contextMenu: '#context-menu',
+               onContextMenuItem: function(row, $el){
+                   if($el.data("item") == "edit"){
+                   		edit(row.id);
+                   }else if($el.data("item") == "view"){
+                       view(row.id);
+                   } else if($el.data("item") == "delete"){
+                        jp.confirm('确认要删除该表单记录吗?', function(){
+                       	jp.loading();
+                       	jp.get("${ctx}/sg/managementcenter/project/delete?id="+row.id, function(data){
+                   	  		if(data.success){
+                   	  			$('#projectTable').bootstrapTable('refresh');
+                   	  			jp.success(data.msg);
+                   	  		}else{
+                   	  			jp.error(data.msg);
+                   	  		}
+                   	  	})
+
+                   	});
+
+                   }
+               },
+                onLoadSuccess:function(data) {
+                    var split = data.rows;
+                    var tb = document.getElementById('projectTable');    // table 的 id
+                    var rows = tb.rows;                           // 获取表格所有行
+                    for (var i =0;i<split.length;i++){
+                        if (split[i].htmlStatus=="1"){
+                            // this.data.rows[i].setAttribute("style","color: red;");
+                            rows[i+1].style.backgroundColor = "red"
+                        }
+                    }
+                },
+                onClickRow: function(row, $el){
+               },
+
+            onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [
+                   {
+		        field: 'projectNumber',
+		        title: '项目定义号',
+                width:160
+
+            }
+                   ,{
+                       field: 'lineName',
+                       title: '线路名称',
+                       width:120
+
+                   }
+                   ,{
+                       field: 'powerScope',
+                       title: '停电范围',
+                       width:110
+
+                   }
+                   ,{
+                       field: 'flagPower',
+                       title: '是否带电',
+                       width:160,
+                       formatter: getTime
+                   }
+		     ]
+		});
+    function getTime(value, row, index) {
+        if(row.flagPower == "带电") {
+            return [
+                "<select class='form-control' id=" + row.id + "><option value='停电'>停电</option><option value='带电'  selected>带电</option><select>",
+            ].join('');
+        }else {
+            return [
+                "<select class='form-control' id=" + row.id + "><option value='停电'  selected>停电</option><option value='带电' >带电</option><select>",
+            ].join('');
+        }
+    }
+    // onclick='submit("+row.id+")'
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+
+		 
+		  $('#projectTable').bootstrapTable("toggleView");
+		}
+	  
+	  $('#projectTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+                'check-all.bs.table uncheck-all.bs.table', function () {
+            $('#remove').prop('disabled', ! $('#projectTable').bootstrapTable('getSelections').length);
+            $('#view,#edit').prop('disabled', $('#projectTable').bootstrapTable('getSelections').length!=1);
+        });
+		    
+	  $("#search").click("click", function() {// 绑定查询按扭
+		  $('#projectTable').bootstrapTable('refresh');
+		});
+	 
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		  $("#searchForm  .select-item").html("");
+		  $('#projectTable').bootstrapTable('refresh');
+		});
+		
+		$('#beginBeginDate').datetimepicker({
+			 format: "YYYY-MM-DD HH:mm:ss"
+		});
+		$('#endBeginDate').datetimepicker({
+			 format: "YYYY-MM-DD HH:mm:ss"
+		});
+		$('#endDate').datetimepicker({
+			 format: "YYYY-MM-DD HH:mm:ss"
+		});
+		
+	});
+		
+  function getIdSelections() {
+        return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+    function getDate() {
+        return $.map($("#projectTable").bootstrapTable('getData'), function (row) {
+            return row
+        });
+    }
+    // function f() {
+    //
+    // }
+    //刷新列表
+  function refresh(){
+  	$('#projectTable').bootstrapTable('refresh');
+  }
+  
+   function add(){
+	  jp.openSaveDialog('新增项目计划安排', "${ctx}/sg/managementCenter/constructionProject/form",'800px', '500px');
+  }
+  // function submit(data) {
+  //     alert("1");
+  //     alert(data);
+  // }
+
+  
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑项目管理表单', "${ctx}/sg/managementcenter/project/form?id=" + id, '800px', '500px');
+  }
+  
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看项目管理表单', "${ctx}/sg/managementcenter/project/form?id=" + id, '800px', '500px');
+ }
+
+function save() {
+    var date = getDate();
+    var idPower = "";
+    var id = "";
+    for (var i = 0; i < date.length; i++){
+        id = date[i].id;
+        idPower += date[i].id + "," + $("#"+id).val() + ";";
+    }
+    idPower = idPower.substring(0,idPower.length-1);
+    $("#idPower").val(idPower);
+    jp.post("${ctx}/sg/managementCenter/constructionProjectTemporaryController/powerSave",$('#inputForm').serialize(),function(data){
+        if(data.success){
+            refresh();
+        }else{
+            jp.error(data.msg);
+        }
+    })
+}
+
+function saveSure(){
+    var date = getDate();
+    var idPower = "";
+    var id = "";
+    for (var i = 0; i < date.length; i++){
+        id = date[i].id;
+        idPower += date[i].id + "," + $("#"+id).val() + ";";
+    }
+    idPower = idPower.substring(0,idPower.length-1);
+    $("#idPower").val(idPower);
+    jp.post("${ctx}/sg/managementCenter/constructionProjectTemporaryController/powerSaveSure",$('#inputForm').serialize(),function(data){
+        if(data.success){
+            refresh();
+            jp.confirm('带电项目在停电开关集合,是否通过?', function () {
+                refresh();
+                var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                parent.layer.close(dialogIndex);
+                jp.getParent().addDate();
+            })
+        }else{
+            var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+            parent.layer.close(dialogIndex);
+            jp.getParent().addDate();
+        }
+    })
+    return false;
+}
+</script>

+ 33 - 0
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionPowerList.jsp

@@ -0,0 +1,33 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目计划安排</title>
+	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@include file="/webpage/include/treeview.jsp" %>
+	<%@include file="constructionPowerList.js" %>
+</head>
+<script>
+
+</script>
+<body>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<%--<div class="panel-heading">--%>
+		<%--<h3 class="panel-title">安排计划时间</h3>--%>
+	<%--</div>--%>
+	<div class="panel-body">
+	<!-- 工具栏 -->
+
+	<!-- 表格 -->
+		<form id="inputForm">
+			<input value="" name="ids" id="idPower" type="hidden">
+		</form>
+		<table id="projectTable"  style="table-layout:fixed"  data-toolbar="#toolbar"></table>
+	</div>
+	</div>
+	</div>
+</body>
+</html>