Browse Source

Merge remote-tracking branch 'origin/master'

lem 5 years atrás
parent
commit
9a6b9d5a26
44 changed files with 5214 additions and 573 deletions
  1. 14 0
      src/main/java/com/jeeplus/modules/oa/service/OaNotifyService.java
  2. 7 0
      src/main/java/com/jeeplus/modules/oa/web/OaNotifyController.java
  3. 1 1
      src/main/java/com/jeeplus/modules/sg/managementcenter/materialInventory/web/MaterialInventoryController.java
  4. 19 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/materialproject/entity/MaterialProject.java
  5. 47 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/entity/ProjectActProclnsAss.java
  6. 143 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/entity/ProjectDailyPlan.java
  7. 38 1
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/entity/ProjectPlanArrage.java
  8. 39 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/ProjectDailyPlanMapper.java
  9. 4 1
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/ProjectPlanActMapper.java
  10. 3 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/ProjectPlanArrageMapper.java
  11. 303 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/xml/ProjectDailyPlanMapper.xml
  12. 36 3
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/xml/ProjectPlanActMapper.xml
  13. 24 6
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/xml/ProjectPlanArrageMapper.xml
  14. 267 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/service/ProjectDailyPlanService.java
  15. 124 26
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/service/ProjectPlanActService.java
  16. 337 21
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/service/ProjectPlanArrageService.java
  17. 29 1
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/util/BookStrapTreeUtil.java
  18. 29 1
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/util/PackagingUtil.java
  19. 409 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/web/ProjectDailyPlanController.java
  20. 740 337
      src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/web/ProjectPlanArrageController.java
  21. 22 13
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/constructionDateList.js
  22. 60 10
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/constructionManageAct.js
  23. 3 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/constructionManageAct.jsp
  24. 286 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/netActPowerList2.js
  25. 33 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/netActPowerList2.jsp
  26. 215 75
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/netWorkManageAct.js
  27. 85 11
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/netWorkManageAct.jsp
  28. 26 17
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/newDateList.js
  29. 1 1
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/runListManageAct.jsp
  30. 292 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/dailyDateList.js
  31. 37 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/dailyDateList.jsp
  32. 401 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyArrageForm.js
  33. 58 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyArrageForm.jsp
  34. 64 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyDateForm.jsp
  35. 88 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyPlanForm.jsp
  36. 308 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyPlanList.js
  37. 95 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyPlanList.jsp
  38. 185 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/oaNotify/planOaNotityForm.js
  39. 140 0
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/oaNotify/planOaNotityForm.jsp
  40. 86 3
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanArrageForm.js
  41. 12 2
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanArrageForm.jsp
  42. 46 6
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanArrageList.js
  43. 7 1
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanArrageList.jsp
  44. 51 36
      src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanPowerList.js

+ 14 - 0
src/main/java/com/jeeplus/modules/oa/service/OaNotifyService.java

@@ -8,6 +8,7 @@ import java.util.List;
 
 import com.jeeplus.modules.oa.entity.OaNotifyMaterial;
 import com.jeeplus.modules.oa.mapper.OaNotifyMaterialMapper;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectActProclnsAss;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -88,6 +89,19 @@ public class OaNotifyService extends CrudService<OaNotifyMapper, OaNotify> {
 			oaNotifyRecordMapper.insertAll(oaNotify.getOaNotifyRecordList());
 		}
 	}
+	//项目计划安排模块
+	@Transactional(readOnly = false)
+	public void saveListProjectArrage(OaNotify oaNotify, List<ProjectActProclnsAss> netList) {
+		super.save(oaNotify);
+		for (ProjectActProclnsAss proclnsAss:netList){
+			proclnsAss.setOanotityId(oaNotify.getId());
+		}
+		// 更新发送接受人记录
+		oaNotifyRecordMapper.deleteByOaNotifyId(oaNotify.getId());
+		if (oaNotify.getOaNotifyRecordList().size() > 0){
+			oaNotifyRecordMapper.insertAll(oaNotify.getOaNotifyRecordList());
+		}
+	}
 	
 	/**
 	 * 更新阅读状态

+ 7 - 0
src/main/java/com/jeeplus/modules/oa/web/OaNotifyController.java

@@ -16,6 +16,7 @@ import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.modules.oa.entity.OaNotifyMaterial;
 import com.jeeplus.modules.oa.service.OaNotifyMaterialService;
 import com.jeeplus.modules.sg.managementcenter.materialplan.entity.MaterialPlan;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectActProclnsAss;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -130,6 +131,12 @@ public class OaNotifyController extends BaseController {
 				model.addAttribute("oaNotifyMaterialList",oaNotifyMaterialList);
 				return "modules/oa/notify/oaNotifyFormDesign";
 			}
+			if (oaNotify.getType().equals("9")){
+				ProjectActProclnsAss projectActProclnsAss = new ProjectActProclnsAss();
+				projectActProclnsAss.setOanotityId(oaNotify.getId());
+				model.addAttribute("oaNotify",oaNotify);
+				return "modules/sg/managementcenter/projectPlanArrage/oaNotify/planOaNotityForm";
+			}
 		}
 
 		return "modules/oa/notify/oaNotifyForm";

+ 1 - 1
src/main/java/com/jeeplus/modules/sg/managementcenter/materialInventory/web/MaterialInventoryController.java

@@ -299,7 +299,7 @@ public class MaterialInventoryController extends BaseController {
 							int count = 0;
 							List<String> listUserId = PickingInfo.getListUserId(PickingInfo.ALL_USER_ID);
 							List<String> userId = pickingRequisitionService.findUserId(listUserId);
-							String stringJoiningTogether = PickingInfo.getStringJoiningTogether(userId);//获取通知人
+//							String stringJoiningTogether = PickingInfo.getStringJoiningTogether(userId);//获取通知人
 							OaNotify oaNotify = new OaNotify();
 							oaNotify.setType("5");
 							oaNotify.setTitle("非缺货信息");//非缺货信息

+ 19 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/materialproject/entity/MaterialProject.java

@@ -29,12 +29,31 @@ public class MaterialProject extends DataEntity<MaterialProject>{
     private String projectName;
 
     private String arrageProject;//项目计划安排
+    private String arrageProject1;//项目计划安排
 
     private String projectStatus;
 
     private String[] reserveCodes;//储备编码(多条)
     private String[] projectCodes;//项目编码(多条)
 
+    private String secondPower;//是否二次设电 1-未二次涉电 1-二次涉电
+
+    public String getSecondPower() {
+        return secondPower;
+    }
+
+    public void setSecondPower(String secondPower) {
+        this.secondPower = secondPower;
+    }
+
+    public String getArrageProject1() {
+        return arrageProject1;
+    }
+
+    public void setArrageProject1(String arrageProject1) {
+        this.arrageProject1 = arrageProject1;
+    }
+
     public String getArrageProject() {
         return arrageProject;
     }

+ 47 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/entity/ProjectActProclnsAss.java

@@ -26,6 +26,53 @@ public class ProjectActProclnsAss extends DataEntity<ProjectActProclnsAss> {
     private String backToText;//退回备注
     private Act act;
 
+    private String associatedBag;//关联包
+    private String powerPackage;//停电包
+    private Integer associatedSort;//关联包排序字段
+    private Integer powerPackageSort;//停电包排序字段
+    private String oanotityId; //通知id
+
+    public String getOanotityId() {
+        return oanotityId;
+    }
+
+    public void setOanotityId(String oanotityId) {
+        this.oanotityId = oanotityId;
+    }
+
+    @ExcelField(title="关联项目包", align=2, sort=8)
+    public String getAssociatedBag() {
+        return associatedBag;
+    }
+
+    public void setAssociatedBag(String associatedBag) {
+        this.associatedBag = associatedBag;
+    }
+    @ExcelField(title="停电包", align=2, sort=9)
+    public String getPowerPackage() {
+        return powerPackage;
+    }
+
+    public void setPowerPackage(String powerPackage) {
+        this.powerPackage = powerPackage;
+    }
+
+    public Integer getAssociatedSort() {
+        return associatedSort;
+    }
+
+    public void setAssociatedSort(Integer associatedSort) {
+        this.associatedSort = associatedSort;
+    }
+
+    public Integer getPowerPackageSort() {
+        return powerPackageSort;
+    }
+
+    public void setPowerPackageSort(Integer powerPackageSort) {
+        this.powerPackageSort = powerPackageSort;
+    }
+
     public Act getAct() {
         return act;
     }

+ 143 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/entity/ProjectDailyPlan.java

@@ -0,0 +1,143 @@
+package com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.DataEntity;
+
+import java.util.Date;
+
+public class ProjectDailyPlan extends DataEntity<ProjectDailyPlan> {
+    private String projectName; //项目名称
+    private String projectNumber; //项目定义号
+    private String projectLine; //线路
+    private String projectPowerRange; //停电范围
+    private String projectSwitch; //停电开关
+    private Date projectMonthDate; //停电月份
+    private Date projectDate; //停电日
+    private String projectPowerOut; //是否停电
+    private String status; //状态
+
+
+    private String distributionNetwork;//配网项目经理
+    private String constructionUnit;//施工单位项目经理
+    private String operationUnit;//运行单位项目经理
+
+    private String flagYesElectricity;//是否二次涉电 0-未涉电 1-二次涉电
+
+    private String arrangeDailyPlan;//安排日计划的状态(0-未安排 1-已安排)
+
+
+    public String getArrangeDailyPlan() {
+        return arrangeDailyPlan;
+    }
+
+    public void setArrangeDailyPlan(String arrangeDailyPlan) {
+        this.arrangeDailyPlan = arrangeDailyPlan;
+    }
+
+    @ExcelField(title="项目名称", align=2, sort=1)
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+    @ExcelField(title="项目定义号", align=2, sort=2)
+    public String getProjectNumber() {
+        return projectNumber;
+    }
+
+    public void setProjectNumber(String projectNumber) {
+        this.projectNumber = projectNumber;
+    }
+
+    public String getProjectLine() {
+        return projectLine;
+    }
+
+    public void setProjectLine(String projectLine) {
+        this.projectLine = projectLine;
+    }
+    @ExcelField(title="停电范围", align=2, sort=3)
+    public String getProjectPowerRange() {
+        return projectPowerRange;
+    }
+
+    public void setProjectPowerRange(String projectPowerRange) {
+        this.projectPowerRange = projectPowerRange;
+    }
+
+    public String getProjectSwitch() {
+        return projectSwitch;
+    }
+
+    public void setProjectSwitch(String projectSwitch) {
+        this.projectSwitch = projectSwitch;
+    }
+    @JsonFormat(pattern = "YYYY-MM")
+    public Date getProjectMonthDate() {
+        return projectMonthDate;
+    }
+
+    public void setProjectMonthDate(Date projectMonthDate) {
+        this.projectMonthDate = projectMonthDate;
+    }
+    @ExcelField(title="日计划", align=2, sort=4)
+    @JsonFormat(pattern = "YYYY-MM-dd")
+    public Date getProjectDate() {
+        return projectDate;
+    }
+
+    public void setProjectDate(Date projectDate) {
+        this.projectDate = projectDate;
+    }
+    @ExcelField(title="是否停电", align=2, sort=5)
+    public String getProjectPowerOut() {
+        return projectPowerOut;
+    }
+
+    public void setProjectPowerOut(String projectPowerOut) {
+        this.projectPowerOut = projectPowerOut;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+    @ExcelField(title="配网项目经理", align=2, sort=6)
+    public String getDistributionNetwork() {
+        return distributionNetwork;
+    }
+
+    public void setDistributionNetwork(String distributionNetwork) {
+        this.distributionNetwork = distributionNetwork;
+    }
+    @ExcelField(title="施工单位项目经理", align=2, sort=7)
+    public String getConstructionUnit() {
+        return constructionUnit;
+    }
+
+    public void setConstructionUnit(String constructionUnit) {
+        this.constructionUnit = constructionUnit;
+    }
+    @ExcelField(title="运行单位人员", align=2, sort=8)
+    public String getOperationUnit() {
+        return operationUnit;
+    }
+
+    public void setOperationUnit(String operationUnit) {
+        this.operationUnit = operationUnit;
+    }
+
+    public String getFlagYesElectricity() {
+        return flagYesElectricity;
+    }
+
+    public void setFlagYesElectricity(String flagYesElectricity) {
+        this.flagYesElectricity = flagYesElectricity;
+    }
+}

+ 38 - 1
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/entity/ProjectPlanArrage.java

@@ -5,7 +5,7 @@ import com.jeeplus.core.persistence.DataEntity;
 
 import java.util.Date;
 
-public class ProjectPlanArrage extends DataEntity<ProjectPlanArrage> {
+public class ProjectPlanArrage extends DataEntity<ProjectPlanArrage>{
     private String projectName; //项目名称
     private String projectNumber; //项目定义号
     private String projectLine; //线路
@@ -31,6 +31,43 @@ public class ProjectPlanArrage extends DataEntity<ProjectPlanArrage> {
     private String backToText;//退回备注
     private String operationStatus;//是否允许操作 0- 允许操作 1-不允许
 
+    private String associatedBag;//关联包
+    private String powerPackage;//停电包
+    private Integer associatedSort;//关联包排序字段
+    private Integer powerPackageSort;//停电包排序字段
+
+    public Integer getAssociatedSort() {
+        return associatedSort;
+    }
+
+    public void setAssociatedSort(Integer associatedSort) {
+        this.associatedSort = associatedSort;
+    }
+
+    public Integer getPowerPackageSort() {
+        return powerPackageSort;
+    }
+
+    public void setPowerPackageSort(Integer powerPackageSort) {
+        this.powerPackageSort = powerPackageSort;
+    }
+
+    public String getAssociatedBag() {
+        return associatedBag;
+    }
+
+    public void setAssociatedBag(String associatedBag) {
+        this.associatedBag = associatedBag;
+    }
+
+    public String getPowerPackage() {
+        return powerPackage;
+    }
+
+    public void setPowerPackage(String powerPackage) {
+        this.powerPackage = powerPackage;
+    }
+
     public String getOperationStatus() {
         return operationStatus;
     }

+ 39 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/ProjectDailyPlanMapper.java

@@ -0,0 +1,39 @@
+package com.jeeplus.modules.sg.managementcenter.projectPlanArrage.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.managementcenter.materialproject.entity.MaterialProject;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectAssignment;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectDailyPlan;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectPlanArrage;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectQuantity;
+import io.swagger.models.auth.In;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@MyBatisMapper
+public interface ProjectDailyPlanMapper extends BaseMapper<ProjectDailyPlan> {
+    //循环增加项目
+    Integer insertList(@Param("list") List<ProjectDailyPlan> projectDailyPlans);
+
+    //查找项目表中状态为安排日计划的项目(arrangePlan = 3,可包含月计划)
+    List<MaterialProject> findListMaterialProject(MaterialProject materialProject);
+
+    //获取停电范围
+    List<ProjectQuantity> findListQuantity(@Param("list") List<ProjectDailyPlan> list);
+
+    //根据项目名称查找人员表
+    List<ProjectAssignment> findListAssignment(@Param("list") List<ProjectDailyPlan> list);
+
+    //删除月计划项目
+    Integer deleteMonthPlan(@Param("list")List<ProjectDailyPlan> list);
+
+    //修改项目
+    Integer updateMartailDaily(@Param("list")List<ProjectDailyPlan> list);
+
+    //修改项目
+    Integer updateNoMartailDaily(@Param("list")List<String> list);
+
+
+}

+ 4 - 1
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/ProjectPlanActMapper.java

@@ -34,6 +34,9 @@ public interface ProjectPlanActMapper extends BaseMapper<ProjectActProclnsAss> {
     //配网项目经理
     Integer deleteNetAss(ProjectActProclnsAss projectActProclnsAss);
 
-    //修改项目状态
+    //修改项目状态--完成后
     Integer updateMaterialProject(@Param("list")List<String> strings);
+
+    //修改项目状态--配网项目经理
+    Integer updateMaterialNetProject(@Param("list")List<String> strings);
 }

+ 3 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/ProjectPlanArrageMapper.java

@@ -23,4 +23,7 @@ public interface ProjectPlanArrageMapper extends BaseMapper<ProjectPlanArrage> {
 
     //根据项目名称查找项目
     List<ProjectQuantity> findListQuantity(@Param("list") List<ProjectPlanArrage> list);
+
+    //主页面删除项目
+    Integer deleteMainAll(@Param("list")List<String> list);
 }

+ 303 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/xml/ProjectDailyPlanMapper.xml

@@ -0,0 +1,303 @@
+<?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.projectPlanArrage.mapper.ProjectDailyPlanMapper">
+	<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.projectName AS "projectName",
+		a.projectNumber AS "projectNumber",
+		a.projectLine AS "projectLine",
+		a.projectPowerRange AS "projectPowerRange",
+		a.projectSwitch AS "projectSwitch",
+		a.projectMonthDate AS "projectMonthDate",
+		a.projectDate AS "projectDate",
+		a.projectPowerOut AS "projectPowerOut",
+		a.status AS "status",
+  		a.flagYesElectricity AS "flagYesElectricity"
+	</sql>
+	<select id="get" resultType="com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectDailyPlan" >
+		SELECT
+		<include refid="constructionColumns"/>
+		FROM xm_project_plan_daily a
+		WHERE a.id = #{id}
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectDailyPlan" >
+		SELECT
+		<include refid="constructionColumns"/>
+		FROM xm_project_plan_daily a
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+			<if test="projectName != null and projectName != ''">
+				AND a.projectName = #{projectName}
+			</if>
+			<if test="projectNumber != null and projectNumber != ''">
+				AND a.projectNumber = #{projectNumber}
+			</if>
+			<if test="projectDate != null and projectDate != ''">
+				AND a.projectDate = #{projectDate}
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+
+	<insert id="insert">
+		  INSERT INTO xm_project_plan_daily(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag,
+			projectName,
+			projectNumber,
+			projectLine,
+			projectPowerRange,
+			projectSwitch,
+			projectMonthDate,
+			projectDate,
+			projectPowerOut,
+			status,
+		  	flagYesElectricity
+		) VALUES
+		(
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{projectName},
+			#{projectNumber},
+			#{projectLine},
+			#{projectPowerRange},
+			#{projectSwitch},
+			#{projectMonthDate},
+			#{projectDate},
+			#{projectPowerOut},
+			#{status},
+			#{associatedBag},
+			#{powerPackage},
+			#{flagYesElectricity}
+		)
+	</insert>
+
+	<insert id="insertList">
+		replace INTO xm_project_plan_daily(
+		id,
+		create_by,
+		create_date,
+		update_by,
+		update_date,
+		remarks,
+		del_flag,
+		projectName,
+		projectNumber,
+		projectLine,
+		projectPowerRange,
+		projectSwitch,
+		projectMonthDate,
+		projectDate,
+		projectPowerOut	,
+		status,
+		flagYesElectricity
+		) 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.projectName},
+			#{item.projectNumber},
+			#{item.projectLine},
+			#{item.projectPowerRange},
+			#{item.projectSwitch},
+			#{item.projectMonthDate},
+			#{item.projectDate},
+			#{item.projectPowerOut},
+			#{item.status},
+			#{item.flagYesElectricity}
+			)
+		</foreach>
+	</insert>
+
+	<update id="update">
+		UPDATE xm_project_plan_daily SET
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			projectName = #{projectName},
+			projectNumber = #{projectNumber},
+			projectPowerRange = #{projectPowerRange},
+			projectDate = #{projectDate},
+			projectPowerOut = #{projectPowerOut}
+		WHERE id = #{id}
+	</update>
+
+	<delete id="delete">
+		delete from xm_project_plan_daily
+		where id = #{id}
+	</delete>
+
+	<sql id="infoColumns">
+        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.reserveProjectName,
+		a.reserveCode,
+		a.projectType,
+		a.batchPlan,
+		a.issuePlan,
+		a.monthPlan,
+		a.hasPlan,
+		a.halfPlan,
+		a.projectName,
+		a.projectId,
+		a.secondPower
+    </sql>
+	<!--查询日计划-->
+	<select id="findListMaterialProject" resultType="com.jeeplus.modules.sg.managementcenter.materialproject.entity.MaterialProject">
+		SELECT
+		<include refid="infoColumns"/>
+		FROM xm_material_project a
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+			<if test="arrageProject != null and arrageProject != ''">
+				AND a.arrageProject = '1' or a.arrageProject = '2' or a.arrageProject = '0'
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+
+	<sql id="quantityColumns">
+		 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.reserveProjectName AS "reserveProjectName",
+		a.includeAutomation AS "includeAutomation",
+		a.wayOf AS "wayOf",
+		a.assignmentStyle AS "assignmentStyle",
+		a.operationSubstation AS "operationSubstation",
+		a.namingNumber AS "namingNumber",
+		a.engineeringAcceptance AS "engineeringAcceptance",
+		a.electricalAcceptance AS "electricalAcceptance",
+		a.blackoutLine AS "blackoutLine",
+		a.outageRange AS "outageRange",
+		a.policyIssues AS "policyIssues",
+		a.processingType AS "processingType",
+		a.processingDescription AS "processingDescription"
+	</sql>
+	<select id="findListQuantity" resultType="com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectQuantity">
+		SELECT
+		<include refid="quantityColumns"/>
+		FROM xm_project_quantity a
+		where a.reserveProjectName in
+		<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
+			#{item.projectName}
+		</foreach>
+	</select>
+
+	<sql id="assignmentColumns">
+		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.reserveProjectName AS "reserveProjectName",
+		a.disclosureType AS "disclosureType",
+		a.projectReleaseBatch AS "projectReleaseBatch",
+		a.deliveryDate AS "deliveryDate",
+		a.packageNo AS "packageNo",
+		a.rate AS "rate",
+		a.assignedUnit AS "assignedUnit",
+		a.constructionUnit AS "constructionUnit",
+		a.constructionSubcontractor AS "constructionSubcontractor",
+		a.behalf AS "behalf",
+		a.constructionFullTime AS "constructionFullTime",
+		a.constructionTechnical AS "constructionTechnical",
+		a.constructionManage AS "constructionManage",
+		a.constructionLeader AS "constructionLeader",
+		a.subcontractingContact AS "subcontractingContact",
+		a.designer AS "designer",
+		a.designLeader AS "designLeader",
+		a.ownerManager AS "ownerManager",
+		a.distribution AS "distribution",
+		a.distributionFullTime AS "distributionFullTime",
+		a.distributionSystem AS "distributionSystem",
+		a.distributionPolicy AS "distributionPolicy",
+		a.centerLeader AS "centerLeader",
+		a.centerTechnical AS "centerTechnical",
+		a.instituteRole AS "instituteRole",
+		a.repUnit AS "repUnit",
+		a.inspectionUnit AS "inspectionUnit"
+	</sql>
+
+	<select id="findListAssignment" resultType="com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectAssignment">
+		SELECT
+		<include refid="assignmentColumns"/>
+		FROM xm_project_assignment a
+		where a.reserveProjectName in
+		<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
+			#{item.projectName}
+		</foreach>
+	</select>
+
+	<delete id="deleteMonthPlan">
+		delete from xm_project_plan_arrange
+		where projectName in
+		<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
+			#{item.projectName}
+		</foreach>
+	</delete>
+
+	<update id="updateMartailDaily">
+		update xm_material_project set arrageProject = '4'
+		where reserveProjectName in
+		<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
+			#{item.projectName}
+		</foreach>
+	</update>
+
+	<update id="updateNoMartailDaily">
+		update xm_material_project set arrageProject = '0'
+		where reserveProjectName in
+		<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
+			#{item}
+		</foreach>
+	</update>
+</mapper>

+ 36 - 3
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/xml/ProjectPlanActMapper.xml

@@ -34,7 +34,12 @@
 		a.constructionUnit AS "constructionUnit",
 		a.operationUnit AS "operationUnit",
 		a.backToStauts AS "backToStauts",
-		a.backToText AS "backToText"
+		a.backToText AS "backToText",
+		a.associatedBag AS "associatedBag",
+		a.powerPackage AS "powerPackage",
+		a.associatedSort AS "associatedSort",
+		a.powerPackageSort AS "powerPackageSort",
+		a.oanotityId AS "oanotityId"
 	</sql>
 
 	<!--<select id="findListAssList">-->
@@ -54,12 +59,21 @@
 		<where>
 			a.del_flag = #{DEL_FLAG_NORMAL}
 			${dataScope}
+			<if test="projectName != null and projectName != ''">
+				AND a.projectName = #{projectName}
+			</if>
+			<if test="projectNumber != null and projectNumber != ''">
+				AND a.projectNumber = #{projectNumber}
+			</if>
 			<if test="procInsId != null and procInsId != ''">
 				AND a.proc_ins_id = #{procInsId}
 			</if>
 			<if test="operationUnit!=null and operationUnit != ''">
 				AND a.operationUnit = #{operationUnit}
 			</if>
+			<if test="oanotityId!=null and oanotityId != ''">
+				AND a.oanotityId = #{oanotityId}
+			</if>
 		</where>
 		<choose>
 			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
@@ -150,7 +164,12 @@
 		constructionUnit,
 		operationUnit,
 		backToStauts,
-		backToText
+		backToText,
+		associatedBag,
+		powerPackage,
+		associatedSort,
+		powerPackageSort,
+		oanotityId
 		) VALUES
 		<foreach collection="list" item="item" index="index" separator="," >
 			(
@@ -176,7 +195,12 @@
 			#{item.constructionUnit},
 			#{item.operationUnit},
 			#{item.backToStauts},
-			#{item.backToText}
+			#{item.backToText},
+			#{item.associatedBag},
+			#{item.powerPackage},
+			#{item.associatedSort},
+			#{item.powerPackageSort},
+			#{item.oanotityId}
 			)
 		</foreach>
 	</insert>
@@ -199,6 +223,15 @@
 
 	<update id="updateMaterialProject">
 		UPDATE xm_material_project SET
+		arrageProject = '2'
+		WHERE reserveProjectName in
+		<foreach collection="list" open="(" close=")" item="item" separator=",">
+			#{item}
+		</foreach>
+	</update>
+
+	<update id="updateMaterialNetProject">
+		UPDATE xm_material_project SET
 		arrageProject = '1'
 		WHERE reserveProjectName in
 		<foreach collection="list" open="(" close=")" item="item" separator=",">

+ 24 - 6
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/mapper/xml/ProjectPlanArrageMapper.xml

@@ -17,7 +17,9 @@
 		a.projectMonthDate AS "projectMonthDate",
 		a.projectDate AS "projectDate",
 		a.projectPowerOut AS "projectPowerOut",
-		a.status AS "status"
+		a.status AS "status",
+		a.associatedBag AS "associatedBag",
+		a.powerPackage AS "powerPackage"
 	</sql>
 
 	<sql id="infoColumns">
@@ -71,7 +73,7 @@
 			a.del_flag = #{DEL_FLAG_NORMAL}
 			${dataScope}
 			<if test="arrageProject != null and arrageProject != ''">
-				AND a.arrageProject = #{arrageProject}
+				AND a.arrageProject = #{arrageProject} or a.arrageProject = #{arrageProject1}
 			</if>
 		</where>
 		<choose>
@@ -136,7 +138,9 @@
 			projectMonthDate,
 			projectDate,
 			projectPowerOut,
-			status
+			status,
+			associatedBag,
+			powerPackage
 		) VALUES
 		(
 			#{id},
@@ -154,7 +158,9 @@
 			#{projectMonthDate},
 			#{projectDate},
 			#{projectPowerOut},
-			#{status}
+			#{status},
+			#{associatedBag},
+			#{powerPackage}
 		)
 	</insert>
 
@@ -175,7 +181,9 @@
 			projectMonthDate,
 			projectDate,
 			projectPowerOut	,
-			status
+			status,
+			associatedBag,
+			powerPackage
 		) VALUES
 		<foreach collection="list" item="item" index="index" separator="," >
 			(
@@ -194,7 +202,9 @@
 			#{item.projectMonthDate},
 			#{item.projectDate},
 			#{item.projectPowerOut},
-			#{item.status}
+			#{item.status},
+			#{item.associatedBag},
+			#{item.powerPackage}
 			)
 		</foreach>
 	</insert>
@@ -256,4 +266,12 @@
 			#{item.projectName}
 		</foreach>
 	</select>
+
+	<delete id="deleteMainAll">
+		delete from xm_project_plan_arrange
+		where id in
+		<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
+			#{item}
+		</foreach>
+	</delete>
 </mapper>

+ 267 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/service/ProjectDailyPlanService.java

@@ -0,0 +1,267 @@
+package com.jeeplus.modules.sg.managementcenter.projectPlanArrage.service;
+
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.sg.managementcenter.materialproject.entity.MaterialProject;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectAssignment;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectDailyPlan;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectPlanArrage;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectQuantity;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.mapper.ProjectDailyPlanMapper;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.mapper.ProjectPlanArrageMapper;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.util.ImportUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Row;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+@Service
+@Transactional(readOnly = true)
+public class ProjectDailyPlanService extends CrudService<ProjectDailyPlanMapper, ProjectDailyPlan> {
+    @Autowired
+    private ProjectDailyPlanMapper projectDailyPlanMapper;
+
+    @Transactional(readOnly = false)
+    public void updateNoMartailDaily(List<String> ids){
+        projectDailyPlanMapper.updateNoMartailDaily(ids);
+    }
+
+    @Transactional(readOnly = false)
+    public void insertList(List<ProjectDailyPlan> projectDailyPlans){
+        for (ProjectDailyPlan projectDailyPlan:projectDailyPlans){
+            projectDailyPlan.preInsert();
+        }
+        projectDailyPlanMapper.insertList(projectDailyPlans);
+    }
+
+    @Transactional(readOnly = false)
+    public void update(ProjectDailyPlan projectDailyPlan){
+        projectDailyPlan.preUpdate();
+        projectDailyPlanMapper.update(projectDailyPlan);
+    }
+
+    //得到可以安排计划数据 统一存放在List<ProjectDailyPlan>集合当中
+    //数据库中根据字段匹配 arrageProject 3 -为已经安排过的日计划 0-1-2为月计划
+    public List<ProjectDailyPlan> getProjectDailyPlan(){
+        //初始化
+        List<ProjectDailyPlan> projectDailyPlans = new ArrayList<ProjectDailyPlan>();
+        MaterialProject materialProject = new MaterialProject();
+        materialProject.setArrageProject("1");
+        //查询项目
+        List<MaterialProject> listMaterialProject = projectDailyPlanMapper.findListMaterialProject(materialProject);
+        //得到立项信息
+        if (!listMaterialProject.isEmpty()){
+            ProjectDailyPlan projectDailyPlan =  null;
+            for (MaterialProject m:listMaterialProject){
+                //判断是否存在项目定义号以及项目名称
+                if (null!=m.getReserveProjectName()&& null!=m.getProjectId() &&!"".equals(m.getReserveProjectName())&&!"".equals(m.getProjectId())){
+                    projectDailyPlan = new ProjectDailyPlan();
+                    projectDailyPlan.setProjectName(m.getReserveProjectName());
+                    projectDailyPlan.setProjectNumber(m.getProjectId());
+                    projectDailyPlan.setFlagYesElectricity(m.getSecondPower());
+                    projectDailyPlans.add(projectDailyPlan);
+                }
+            }
+        }
+        //查找开关信息
+        //得到停电范围和信息数据
+        List<ProjectQuantity> listQuantity = new ArrayList<ProjectQuantity>();
+        if (!projectDailyPlans.isEmpty()){
+            listQuantity = projectDailyPlanMapper.findListQuantity(projectDailyPlans);
+        }
+
+
+        //得到人员信息
+        List<ProjectAssignment> projectAssignments = new ArrayList<ProjectAssignment>();
+        if (!projectDailyPlans.isEmpty()){
+            projectAssignments = projectDailyPlanMapper.findListAssignment(projectDailyPlans);
+        }
+
+        //线路 人员整合一起
+        List<ProjectDailyPlan> plans = new ArrayList<ProjectDailyPlan>();
+        ProjectDailyPlan projectDailyPlan= null;
+        if (!listQuantity.isEmpty()&&!projectAssignments.isEmpty()){
+            for (ProjectQuantity projectQuantity:listQuantity){
+                for (ProjectAssignment projectAssignment:projectAssignments){
+                    if (projectQuantity.getReserveProjectName().equals(projectAssignment.getReserveProjectName())){
+                        projectDailyPlan = new ProjectDailyPlan();
+                        projectDailyPlan.setProjectName(projectQuantity.getReserveProjectName());//项目名称
+                        projectDailyPlan.setProjectPowerOut(projectQuantity.getAssignmentStyle());//是否停电
+                        projectDailyPlan.setProjectPowerRange(projectQuantity.getOutageRange());//停电范围
+                        projectDailyPlan.setConstructionUnit(projectAssignment.getConstructionManage());//施工单位项目经理
+                        projectDailyPlan.setDistributionNetwork(projectAssignment.getOwnerManager());//配网项目经理
+                        projectDailyPlan.setOperationUnit(projectAssignment.getRepUnit());//运行单位项目经理
+                        plans.add(projectDailyPlan);//添加到集合
+                        break;
+                    }
+                }
+            }
+        }
+        if (!projectDailyPlans.isEmpty()&&!plans.isEmpty()){
+            for (ProjectDailyPlan projectDailyPlan1:plans){
+                for (ProjectDailyPlan projectDailyPlan2:projectDailyPlans){
+                    if (projectDailyPlan1.getProjectName().equals(projectDailyPlan2.getProjectName())){
+                        projectDailyPlan1.setProjectNumber(projectDailyPlan2.getProjectNumber());
+                        projectDailyPlan1.setFlagYesElectricity(projectDailyPlan2.getFlagYesElectricity());//是否二次设电状态
+                        break;
+                    }
+                }
+            }
+        }
+        return plans;
+    }
+
+    //筛选条件 -- 操作者输入的项目名称 或者项目id
+    public List<ProjectDailyPlan> getSxDailyPlan(List<ProjectDailyPlan> projectDailyPlans,ProjectDailyPlan projectDailyPlan){
+        getIdNameHash(projectDailyPlan,projectDailyPlans);
+        return projectDailyPlans;
+    }
+
+    public void getIdNameHash(ProjectDailyPlan projectDailyPlan,List<ProjectDailyPlan> projectDailyPlans){
+        String[] splitNames = null;
+        String[] splitIds = null;
+        if (null!=projectDailyPlan.getProjectName()&&!"".equals(projectDailyPlan.getProjectName())){
+            splitNames = projectDailyPlan.getProjectName().split(",");
+        }
+        if (null!=projectDailyPlan.getProjectNumber()&&!"".equals(projectDailyPlan.getProjectNumber())){
+            splitIds = projectDailyPlan.getProjectNumber().split(",");
+        }
+        for (ProjectDailyPlan plans:projectDailyPlans){
+            plans.setArrangeDailyPlan("0");
+            if (null!=splitNames){
+                for (String s:splitNames){
+                    if (s.equals(plans.getProjectName())){
+                        plans.setArrangeDailyPlan("1");
+                        break;
+                    }
+                }
+            }
+            if (null!=splitIds){
+                for (String id:splitIds){
+                    if (id.equals(plans.getProjectNumber())){
+                        plans.setArrangeDailyPlan("1");
+                        break;
+                    }
+                }
+            }
+        }
+    }
+
+    //安排日计划
+    public void addPlanDaily(List<ProjectDailyPlan> projectPlans,List<String> strings){
+        for (ProjectDailyPlan plan:projectPlans){
+            for (String str:strings){
+                if (str.equals(plan.getId())){
+                    plan.setArrangeDailyPlan("1");
+                    break;
+                }
+            }
+        }
+    }
+    //取消日计划
+    public void cancelPlanDaily(List<ProjectDailyPlan> projectPlans,List<String> strings){
+        for (ProjectDailyPlan plan:projectPlans){
+            for (String str:strings){
+                if (str.equals(plan.getId())){
+                    plan.setArrangeDailyPlan("0");
+                    break;
+                }
+            }
+        }
+    }
+
+    //检验开关是否为同一停电包--获取用户传入的数据功能
+    public List<ProjectDailyPlan> getInspectionFunction(String ids){
+        //创建list
+        List<ProjectDailyPlan> planArrages = new ArrayList<ProjectDailyPlan>();
+        String[] idsSplite = null;
+        String[] idsSpliteChild = null;
+        String id="";
+        String powerFlag = "";
+        ProjectDailyPlan projectDailyPlan = new ProjectDailyPlan();
+        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)){
+                    projectDailyPlan = new ProjectDailyPlan();
+                    projectDailyPlan.setId(id);
+                    projectDailyPlan.setProjectPowerOut(powerFlag);
+                    planArrages.add(projectDailyPlan);
+                }
+            }
+        }
+        return planArrages;
+    }
+    //保存
+    @Transactional(readOnly = false)
+    public void getPlanDaily(List<ProjectDailyPlan> projectPlans,List<ProjectDailyPlan> idsList){
+        List<ProjectDailyPlan> surePlan = new ArrayList<ProjectDailyPlan>();
+        //得到停电集合
+        for (ProjectDailyPlan plan:projectPlans){
+           if (plan.getArrangeDailyPlan().equals("1")){
+               for (ProjectDailyPlan ids:idsList){
+                   if (plan.getId().equals(ids.getId())){
+                       plan.setProjectPowerOut(ids.getProjectPowerOut());
+                       surePlan.add(plan);
+                       break;
+                   }
+               }
+           }
+        }
+        //保存日计划项目
+        insertList(surePlan);
+//        //去除月计划项目
+        projectDailyPlanMapper.deleteMonthPlan(surePlan);
+//        //修改项目状态
+        projectDailyPlanMapper.updateMartailDaily(surePlan);
+    }
+
+
+    //导入数据
+    /**
+     * 获取表格数据
+     * @param importUtil
+     * @return List<ErpAccount> 导入表格数据
+     */
+    public List<ProjectDailyPlan> getMaterProUtil(ImportUtil importUtil) throws Exception {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        int lastRow = importUtil.getLastDataRowNum();
+        List<ProjectDailyPlan> list = new ArrayList<ProjectDailyPlan>();
+        ProjectDailyPlan projectDailyPlan = null;
+        String projectName="";//物料编码
+        for(int i=2; i<lastRow;i++){
+            projectDailyPlan = new ProjectDailyPlan();
+            Row row = importUtil.getRow(i);
+            projectName = (String)importUtil.getCellValue(row,0);
+            if (StringUtils.isNotBlank(projectName)){
+                projectDailyPlan.setProjectName(projectName);
+                projectDailyPlan.setProjectNumber((String)importUtil.getCellValue(row,1));
+                projectDailyPlan.setProjectPowerRange((String)importUtil.getCellValue(row,2));
+                if (null!=(String)importUtil.getCellValue(row,3)&&!"".equals((String)importUtil.getCellValue(row,3))){
+                    projectDailyPlan.setProjectDate(format.parse((String)importUtil.getCellValue(row,3)));
+                }
+                projectDailyPlan.setProjectPowerOut((String)importUtil.getCellValue(row,4));
+                projectDailyPlan.setDistributionNetwork((String)importUtil.getCellValue(row,5));
+                projectDailyPlan.setConstructionUnit((String)importUtil.getCellValue(row,6));
+                projectDailyPlan.setOperationUnit((String)importUtil.getCellValue(row,7));
+                list.add(projectDailyPlan);
+            }
+        }
+        return list;
+    }
+}

+ 124 - 26
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/service/ProjectPlanActService.java

@@ -2,12 +2,20 @@ package com.jeeplus.modules.sg.managementcenter.projectPlanArrage.service;
 
 import com.google.common.collect.Maps;
 import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.SpringContextHolder;
 import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.websocket.service.system.SystemInfoSocketHandler;
 import com.jeeplus.core.service.CrudService;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.mapper.ActMapper;
 import com.jeeplus.modules.act.service.ActProcessService;
 import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.oa.entity.OaNotify;
+import com.jeeplus.modules.oa.entity.OaNotifyMaterial;
+import com.jeeplus.modules.oa.entity.OaNotifyRecord;
+import com.jeeplus.modules.oa.mapper.OaNotifyMapper;
+import com.jeeplus.modules.oa.mapper.OaNotifyRecordMapper;
+import com.jeeplus.modules.oa.service.OaNotifyService;
 import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectActProcIns;
 import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectActProclnsAss;
 import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectPlanArrage;
@@ -23,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.ServletContext;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -43,6 +52,12 @@ public class ProjectPlanActService{
     private ActProcessService actProcessService;
     @Autowired
     private ActTaskService actTaskService;
+    @Autowired
+    private OaNotifyService oaNotifyService;
+    @Autowired
+    private OaNotifyRecordMapper oaNotifyRecordMapper;
+    @Autowired
+    private OaNotifyMapper oaNotifyMapper;
 
     //查询配网项目经理当前安排的计划
     public List<ProjectActProclnsAss> findListAss(ProjectActProclnsAss projectActProclnsAss){
@@ -71,6 +86,13 @@ public class ProjectPlanActService{
         List<String> personName = getPersonName(projectPlanArrages, "1");//获取施工单位项目经理集合
         getConsMaps(vars,personName);
         startProcessConsProject(procDefKey,businessTable,businessId,title,vars,projectActProcIns,projectPlanArrages);
+        List<String> strings = new ArrayList<String>();
+        for (ProjectPlanArrage planArrage:projectPlanArrages){
+            if (null!=planArrage.getProjectName()&&!"".equals(planArrage.getProjectName())){
+                strings.add(planArrage.getProjectName());
+            }
+        }
+        projectPlanActMapper.updateMaterialNetProject(strings);
     }
     public void getConsMaps(Map<String, Object> vars,List<String> personName){
         int len = personName.size();
@@ -165,6 +187,7 @@ public class ProjectPlanActService{
             projectActProclnsAss.preInsert();
             projectActProclnsAss.setProcInsId(procInsId);
             projectActProclnsAss.setCustomId("0");
+            projectActProclnsAss.setRemarks(planArrage.getRemarks());//发起人备注
             projectActProclnsAss.setProjectName(planArrage.getProjectName());
             projectActProclnsAss.setProjectNumber(planArrage.getProjectNumber());
             projectActProclnsAss.setProjectLine(planArrage.getProjectLine());
@@ -178,6 +201,10 @@ public class ProjectPlanActService{
             projectActProclnsAss.setConstructionUnit(planArrage.getConstructionUnit());
             projectActProclnsAss.setOperationUnit(planArrage.getOperationUnit());
             projectActProclnsAss.setBackToStauts("0");
+            projectActProclnsAss.setAssociatedBag(planArrage.getAssociatedBag());
+            projectActProclnsAss.setAssociatedSort(planArrage.getAssociatedSort());
+            projectActProclnsAss.setPowerPackage(planArrage.getPowerPackage());
+            projectActProclnsAss.setPowerPackageSort(planArrage.getPowerPackageSort());
             projectActProclnsAsses.add(projectActProclnsAss);
         }
         return projectActProclnsAsses;
@@ -256,6 +283,11 @@ public class ProjectPlanActService{
                     planArrage.setBackToText(proclnsAss.getBackToText());
                     planArrage.setConstructionUnit(proclnsAss.getConstructionUnit());
                     planArrage.setProjectPowerOut(proclnsAss.getProjectPowerOut());
+                    planArrage.setAssociatedBag(proclnsAss.getAssociatedBag());
+                    planArrage.setAssociatedSort(proclnsAss.getAssociatedSort());
+                    planArrage.setPowerPackage(proclnsAss.getPowerPackage());
+                    planArrage.setPowerPackageSort(proclnsAss.getPowerPackageSort());
+                    planArrage.setRemarks(proclnsAss.getRemarks());
                     if (proclnsAss.getConstructionUnit().equals(name)){
                         planArrage.setOperationStatus("0");//允许操作
                     }else {
@@ -279,6 +311,11 @@ public class ProjectPlanActService{
                     planArrage.setBackToText(proclnsAss.getBackToText());
                     planArrage.setConstructionUnit(proclnsAss.getConstructionUnit());
                     planArrage.setProjectPowerOut(proclnsAss.getProjectPowerOut());
+                    planArrage.setAssociatedBag(proclnsAss.getAssociatedBag());
+                    planArrage.setAssociatedSort(proclnsAss.getAssociatedSort());
+                    planArrage.setPowerPackage(proclnsAss.getPowerPackage());
+                    planArrage.setPowerPackageSort(proclnsAss.getPowerPackageSort());
+                    planArrage.setRemarks(proclnsAss.getRemarks());
                     break;
                 }
             }
@@ -311,35 +348,63 @@ public class ProjectPlanActService{
         boolean flag = false;
         List<ProjectPlanArrage> projectPlanArrageList = new ArrayList<ProjectPlanArrage>();
         for (ProjectPlanArrage plan:projectPlanArrages){
-            projectPlanArrageList.add(plan);
+            if (plan.getArrageFlag().equals("1")){
+                if (null!=plan.getPowerPackage()&&!"".equals(plan.getPowerPackage())){
+                    projectPlanArrageList.add(plan);
+                }
+            }
         }
-        HashSet<String> stringHashSet = new HashSet<String>();
-        for (ProjectPlanArrage planArrage:projectPlanArrages){
-            flag = false;
-            //如果时间不为空
-            if (null!=planArrage.getProjectDate()){
-                stringHashSet = new HashSet<String>();
-                PackagingUtil.getSplice(planArrage.getProjectPowerRange(),stringHashSet);
-                for (ProjectPlanArrage planArrage1:projectPlanArrageList){
-                    if (null!=planArrage1.getProjectDate()){
-                        for (String s:stringHashSet){
-                            if (planArrage1.getProjectPowerRange().contains(s)){
-                                if (!sdf.format(planArrage.getProjectDate()).equals(sdf.format(planArrage1.getProjectDate()))){
-                                    flag = true;
-                                    break;
-                                }
-                            }
-                        }
-                    }
-                    if (flag){
-                        break;
+        //存放停电包 hashSet
+        HashSet<String> hashSets = new HashSet<String>();
+        for (ProjectPlanArrage projectPack:projectPlanArrageList){
+            hashSets.add(projectPack.getPowerPackage());//添加至停电包集合
+        }
+        //循环判断hashSet
+        HashSet<String> packHashSet = new HashSet<String>();
+        for (String str:hashSets){
+            packHashSet = new HashSet<String>();
+            for (ProjectPlanArrage pa:projectPlanArrageList){
+                if (str.equals(pa.getPowerPackage())){
+                    if (null!=pa.getProjectDate()){
+                        packHashSet.add(sdf.format(pa.getProjectDate()));
                     }
                 }
             }
-            if (flag){
-                break;
+            if (packHashSet.size()>1){
+                flag = true;
+                return flag;
             }
         }
+
+
+
+//        HashSet<String> stringHashSet = new HashSet<String>();
+//        for (ProjectPlanArrage planArrage:projectPlanArrages){
+//            flag = false;
+//            //如果时间不为空
+//            if (null!=planArrage.getProjectDate()){
+//                stringHashSet = new HashSet<String>();
+//                PackagingUtil.getSplice(planArrage.getProjectPowerRange(),stringHashSet);
+//                for (ProjectPlanArrage planArrage1:projectPlanArrageList){
+//                    if (null!=planArrage1.getProjectDate()){
+//                        for (String s:stringHashSet){
+//                            if (planArrage1.getProjectPowerRange().contains(s)){
+//                                if (!sdf.format(planArrage.getProjectDate()).equals(sdf.format(planArrage1.getProjectDate()))){
+//                                    flag = true;
+//                                    break;
+//                                }
+//                            }
+//                        }
+//                    }
+//                    if (flag){
+//                        break;
+//                    }
+//                }
+//            }
+//            if (flag){
+//                break;
+//            }
+//        }
         return  flag;
     }
 
@@ -379,10 +444,18 @@ public class ProjectPlanActService{
         // 对不同环节的业务逻辑进行操作
         String taskDefKey = act.getTaskDefKey();
         //获取人
-        List<String> personName = getPersonName(projectPlans, "3");//获取施工单位项目经理集合
+        List<String> personName = getPersonName(projectPlans, "3");//获取运行单位人员
+        //获取运行单位集合
+        String ids = "";
+        for (String s:personName){
+            ids+=UserUtils.getByUserName(s).getId()+",";
+        }
+        if (ids.contains(",")){
+            ids = ids.substring(0,ids.length()-1);
+        }
         // 提交流程任务
         Map<String, Object> vars = Maps.newHashMap();
-        getRunsMaps(vars,personName);
+//        getRunsMaps(vars,personName);
         actTaskService.complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
         //业务 处理保存 流程表
         //获取流程id
@@ -392,8 +465,33 @@ public class ProjectPlanActService{
         //删除
         projectPlanActMapper.deleteNetAss(procNet);
         List<ProjectActProclnsAss> netList = PackagingUtil.getNetList(projectPlans, procInsId);
-        projectPlanActMapper.insertProcInsAssList(netList);
+        OaNotify oaNotify = new OaNotify();
+        int count = 0;
+        oaNotify.setType("9");
+        oaNotify.setTitle("项目计划安排通知");
+        oaNotify.setContent("请在详情中查看...");
+        oaNotify.setStatus("1");
+        oaNotify.setOaNotifyRecordIds(ids);
+        oaNotifyService.saveListProjectArrage(oaNotify,netList);
+        projectPlanActMapper.insertProcInsAssList(netList);//保存流程表
+
+        List<String> strings = new ArrayList<String>();
+        for (ProjectActProclnsAss proclnsAss:netList){
+            if (null!=proclnsAss.getProjectName()&&!"".equals(proclnsAss.getProjectName())){
+                strings.add(proclnsAss.getProjectName());
+            }
+        }
+        projectPlanActMapper.updateMaterialProject(strings);
+        List<OaNotifyRecord> list = oaNotify.getOaNotifyRecordList();
+        for(OaNotifyRecord o : list){
+            count++;
+            //发送通知到客户端
+            ServletContext context = SpringContextHolder
+                    .getBean(ServletContext.class);
+            new SystemInfoSocketHandler().sendMessageToUser(UserUtils.get(o.getUser().getId()).getLoginName(), "收到一条新通知,请到我的通知查看!");
+        }
     }
+
     public void getRunsMaps(Map<String, Object> vars,List<String> personName){
         int len = personName.size();
         String cons = "";

+ 337 - 21
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/service/ProjectPlanArrageService.java

@@ -18,10 +18,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
+import java.util.*;
 
 @Service
 @Transactional(readOnly = true)
@@ -53,6 +50,12 @@ public class ProjectPlanArrageService extends CrudService<ProjectPlanArrageMappe
         return projectPlanArrageMapper.findListAssignment(projectPlanArrages);
     }
 
+    //主页面删除
+    @Transactional(readOnly = false)
+    public void deleteMainAll(List<String> list){
+        projectPlanArrageMapper.deleteMainAll(list);
+    }
+
     //获取两张表相同的数据
     public List<ProjectPlanArrage> getPlanArrageList(List<ProjectPlanArrage> projectPlanArrageList, List<ProjectAssignment> listAssignment) {
         List<ProjectPlanArrage> planArrages = new ArrayList<ProjectPlanArrage>();
@@ -71,12 +74,9 @@ public class ProjectPlanArrageService extends CrudService<ProjectPlanArrageMappe
     }
 
     //获取最终待安排的项目list  --树形
-    public List<ProjectPlanArrage> getProjectPlanArrageList(){
+    public List<ProjectPlanArrage> getProjectPlanArrageList(MaterialProject materialProject){
         //初始list
         List<ProjectPlanArrage> projectPlanArrages = new ArrayList<ProjectPlanArrage>();
-        //获取项目计划安排的初始项目
-        MaterialProject materialProject = new MaterialProject();
-        materialProject.setArrageProject("0");
         //得到所有未安排的计划
         List<MaterialProject> listMaterialProject = findListMaterialProject(materialProject);
         //得到所有立项信息的项目--有项目定义号:项目名称
@@ -150,7 +150,96 @@ public class ProjectPlanArrageService extends CrudService<ProjectPlanArrageMappe
 
     //安排项目计划 -- 按钮功能 获取相同id相同以及包含开关的方法--配网项目经理初始安排计划
     public void getUnplannedService(List<ProjectPlanArrage> projectPlanArrages,List<String> idList){
+        List<Integer> integerList = new ArrayList<Integer>();
+        for (ProjectPlanArrage planArrage:projectPlanArrages){
+            if (null!=planArrage.getAssociatedSort()){
+                integerList.add(planArrage.getAssociatedSort());//添加进入集合
+            }
+        }
+        Integer assInter = 1;
+        if (null!=integerList&&!integerList.isEmpty()){
+            Collections.sort(integerList);
+            assInter = integerList.get(integerList.size()-1)+1;
+        }
+        //复制所有数据集合,以供使用
+        List<ProjectPlanArrage> copyProjectPlanArrage = PackagingUtil.getCopyProjectPlanArrage(projectPlanArrages);
+        //获取用户选择安排计划项目定义号的项目
+        List<ProjectPlanArrage> planArragesChild = new ArrayList<ProjectPlanArrage>();//子类集合
 
+        HashSet<String> hashSet = new HashSet<String>();
+        //得到集合
+        for (String id:idList){
+            for (ProjectPlanArrage projectPlanArrage:copyProjectPlanArrage){
+                if (id.equals(projectPlanArrage.getId())){
+                    if (projectPlanArrage.getWhetherStatus().equals("0")){
+                        planArragesChild.add(projectPlanArrage);
+                        PackagingUtil.getSplice(projectPlanArrage.getProjectPowerRange(),hashSet);
+                        break;
+                    }
+                }
+            }
+        }
+        PackagingUtil.getRecursive(copyProjectPlanArrage,hashSet);
+        String assPackName = "";
+        Integer assPackSort = null;
+        if (!planArragesChild.isEmpty()){
+            for (ProjectPlanArrage pa:projectPlanArrages){
+                if (!pa.getWhetherStatus().equals("1")){
+                    for (String s:hashSet){
+                        if (pa.getProjectPowerRange().contains(s)){
+                            if (pa.getArrageFlag().equals("1")){
+                                assPackName = pa.getAssociatedBag();
+                                assPackSort = pa.getAssociatedSort();
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        //处理子类集合 -- 如果子类集合不为空
+        if (!planArragesChild.isEmpty()){
+            for (ProjectPlanArrage pa:projectPlanArrages){
+                if (!pa.getWhetherStatus().equals("1")){
+                    for (String s:hashSet){
+                        if (pa.getProjectPowerRange().contains(s)){
+                            if (!"".equals(assPackName)){
+                                pa.setArrageFlag("1");
+                                pa.setAssociatedBag(assPackName);
+                                pa.setAssociatedSort(assPackSort);
+                            }else {
+                                pa.setArrageFlag("1");
+                                pa.setAssociatedBag("关联包项目"+assInter.toString());
+                                pa.setAssociatedSort(assInter);
+                            }
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    //安排项目计划 -- 按钮功能 获取相同id相同以及包含开关的方法--配网项目经理初始安排计划
+    public void getNetWorkUnplannedService(List<ProjectPlanArrage> projectPlanArrages,List<String> idList){
+        Date mouth = null;
+        for (ProjectPlanArrage planArrage:projectPlanArrages){
+            if (null!=planArrage.getProjectMonthDate()){
+                mouth = planArrage.getProjectMonthDate();
+                break;
+            }
+        }
+        List<Integer> integerList = new ArrayList<Integer>();
+        for (ProjectPlanArrage planArrage:projectPlanArrages){
+            if (null!=planArrage.getAssociatedSort()){
+                integerList.add(planArrage.getAssociatedSort());//添加进入集合
+            }
+        }
+        Integer assInter = 1;
+        if (null!=integerList&&!integerList.isEmpty()){
+            Collections.sort(integerList);
+            assInter = integerList.get(integerList.size()-1)+1;
+        }
         //复制所有数据集合,以供使用
         List<ProjectPlanArrage> copyProjectPlanArrage = PackagingUtil.getCopyProjectPlanArrage(projectPlanArrages);
         //获取用户选择安排计划项目定义号的项目
@@ -170,13 +259,46 @@ public class ProjectPlanArrageService extends CrudService<ProjectPlanArrageMappe
             }
         }
         PackagingUtil.getRecursive(copyProjectPlanArrage,hashSet);
+        String assPackName = "";
+        Integer assPackSort = null;
+        if (!planArragesChild.isEmpty()){
+            for (ProjectPlanArrage pa:projectPlanArrages){
+                if (!pa.getWhetherStatus().equals("1")){
+                    for (String s:hashSet){
+                        if (pa.getProjectPowerRange().contains(s)){
+                            if (pa.getArrageFlag().equals("1")){
+                                assPackName = pa.getAssociatedBag();
+                                assPackSort = pa.getAssociatedSort();
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+        }
         //处理子类集合 -- 如果子类集合不为空
         if (!planArragesChild.isEmpty()){
             for (ProjectPlanArrage pa:projectPlanArrages){
                 if (!pa.getWhetherStatus().equals("1")){
                     for (String s:hashSet){
                         if (pa.getProjectPowerRange().contains(s)){
-                            pa.setArrageFlag("1");
+                            if (!pa.getArrageFlag().equals("1")){
+                                pa.setBackToStauts("2");
+                                pa.setArrageFlag("1");
+                                pa.setProjectMonthDate(mouth);
+                                if (null!=pa.getProjectPowerOut()&&!"".equals(pa.getProjectPowerOut())){
+                                    pa.setProjectPowerOut(pa.getProjectPowerOut());
+                                }else {
+                                    pa.setProjectPowerOut("停电");
+                                }
+                                if (!"".equals(assPackName)){
+                                    pa.setAssociatedBag(assPackName);
+                                    pa.setAssociatedSort(assPackSort);
+                                }else {
+                                    pa.setAssociatedBag("关联包项目"+assInter.toString());
+                                    pa.setAssociatedSort(assInter);
+                                }
+                            }
                             break;
                         }
                     }
@@ -184,19 +306,86 @@ public class ProjectPlanArrageService extends CrudService<ProjectPlanArrageMappe
             }
         }
     }
+    //取消项目计划 -- 按钮功能 获取相同id相同以及包含开关的方法--配网项目经理初始安排计划
+    public void getCancelPowerPackage(List<ProjectPlanArrage> projectPlanArrages,List<String> idList){
+        for(String id:idList){
+            for (ProjectPlanArrage planArrage:projectPlanArrages){
+                if (id.equals(planArrage.getId())){
+                    planArrage.setPowerPackageSort(null);
+                    planArrage.setPowerPackage(null);
+                    break;
+                }
+            }
+        }
+    }
+    //安排项目计划 -- 按钮功能 获取相同id相同以及包含开关的方法--配网项目经理初始安排计划
+    public void getUnplannedPowerPackage(List<ProjectPlanArrage> projectPlanArrages,List<String> idList){
+        //得到包的数量
+        List<Integer> integerList = new ArrayList<Integer>();
+        for (ProjectPlanArrage planArrage:projectPlanArrages){
+            if (null!=planArrage.getPowerPackageSort()){
+                integerList.add(planArrage.getPowerPackageSort());//添加进入集合
+            }
+        }
+        Integer powerInter = 1;
+        if (null!=integerList&&!integerList.isEmpty()){
+            Collections.sort(integerList);
+            powerInter = integerList.get(integerList.size()-1)+1;
+        }
+        //打停电包
+        boolean flag = true;//定义开关
+        for (ProjectPlanArrage planArrage:projectPlanArrages){
+            flag = false;
+            for (String id:idList){
+                if (id.equals(planArrage.getId())){
+                    flag = true;
+                    break;
+                }
+            }
+            if (flag){
+                planArrage.setPowerPackage("停电包"+powerInter);
+                planArrage.setPowerPackageSort(powerInter);
+            }
+        }
+    }
+
     //退回操作--第二次配网项目经理
     public void getNetWorkSecond(List<ProjectPlanArrage> projectPlanArrages,List<String> idList){
         for (String id:idList){
             for (ProjectPlanArrage planArrage:projectPlanArrages){
                 if (planArrage.getId().equals(id)){
+                    planArrage.setAssociatedSort(null);
                     planArrage.setArrageFlag("0");
                     break;
                 }
             }
         }
     }
-
-
+    //发起人备注
+    public void getRemarksBack(List<ProjectPlanArrage> projectPlanArrages,List<String> idList,ProjectPlanArrage projectPlanArrage){
+        for (ProjectPlanArrage planArrage:projectPlanArrages){
+            for (String id:idList){
+                if (planArrage.getId().equals(id)){
+                    planArrage.setRemarks(projectPlanArrage.getRemarks());
+                    break;
+                }
+            }
+        }
+    }
+    //退回项目计划 -- 单个项目 -- 按钮功能 获取相同id相同以及包含开关的方法
+    public void getTheRoBackOneService(List<ProjectPlanArrage> projectPlanArrages,List<String> idList){
+       for (String id:idList){
+           for (ProjectPlanArrage planArrage:projectPlanArrages){
+               if (id.equals(planArrage.getId())){
+                   planArrage.setArrageFlag("0");
+                   planArrage.setAssociatedSort(null);
+                   planArrage.setPowerPackage("");
+                   planArrage.setPowerPackageSort(null);
+                   break;
+               }
+           }
+       }
+    }
     //退回项目计划 -- 按钮功能 获取相同id相同以及包含开关的方法
     public void getTheRoBackService(List<ProjectPlanArrage> projectPlanArrages,List<String> idList){
         //复制所有数据集合,以供使用
@@ -254,7 +443,7 @@ public class ProjectPlanArrageService extends CrudService<ProjectPlanArrageMappe
         for (ProjectPlanArrage planArrage:projectPlans){
             //安排的计划
             if (planArrage.getArrageFlag().equals("1")&&planArrage.getWhetherStatus().equals("0")){
-                if (planArrage.getProjectPowerOut().equals("停电")){
+                if (null!=planArrage.getProjectPowerOut()&&planArrage.getProjectPowerOut().equals("停电")){
                     planNoArrageList.add(planArrage);
                 }else {
                     planYesArrageList.add(planArrage);
@@ -353,6 +542,18 @@ public class ProjectPlanArrageService extends CrudService<ProjectPlanArrageMappe
 
     //安排项目计划 -- 按钮功能 获取相同id相同以及包含开关的方法--施工项目经理初始安排计划
     public void getConsPlanArranageService(List<ProjectPlanArrage> projectPlanArrages, List<String> idList, Date mouthDate){
+        List<Integer> integerList = new ArrayList<Integer>();
+        for (ProjectPlanArrage planArrage:projectPlanArrages){
+            if (null!=planArrage.getAssociatedSort()){
+                integerList.add(planArrage.getAssociatedSort());//添加进入集合
+            }
+        }
+        Integer assInter = 1;
+        if (null!=integerList&&!integerList.isEmpty()){
+            Collections.sort(integerList);
+            assInter = integerList.get(integerList.size()-1)+1;
+        }
+
         //复制所有数据集合,以供使用
         List<ProjectPlanArrage> copyProjectPlanArrage = PackagingUtil.getCopyProjectPlanArrage(projectPlanArrages);
         //获取用户选择安排计划项目定义号的项目
@@ -372,23 +573,58 @@ public class ProjectPlanArrageService extends CrudService<ProjectPlanArrageMappe
             }
         }
         PackagingUtil.getRecursive(copyProjectPlanArrage,hashSet);
-        //处理子类集合 -- 如果子类集合不为空
+        //获取存在的关联包
+        String assPackName = "";
+        Integer assPackSort = null;
         if (!planArragesChild.isEmpty()){
             for (ProjectPlanArrage pa:projectPlanArrages){
                 if (!pa.getWhetherStatus().equals("1")){
                     for (String s:hashSet){
                         if (pa.getProjectPowerRange().contains(s)){
-                            pa.setArrageFlag("1");
-                            pa.setBackToStauts("2");//说明这是施工单位项目经理新增的状态
-                            pa.setOperationStatus("0");//循序操作
-                            pa.setProjectMonthDate(mouthDate);//自动配置月份
-                            pa.setProjectPowerOut("停电");
-                            break;
+                            if (pa.getArrageFlag().equals("1")){
+                                assPackName = pa.getAssociatedBag();
+                                assPackSort = pa.getAssociatedSort();
+                                break;
+                            }
                         }
                     }
                 }
             }
         }
+        String name = UserUtils.getUser().getName();
+        //处理子类集合 -- 如果子类集合不为空
+        if (!planArragesChild.isEmpty()){
+            for (ProjectPlanArrage pa:projectPlanArrages){
+                if (!pa.getWhetherStatus().equals("1")){
+                    for (String s:hashSet){
+                       if (pa.getConstructionUnit().equals(name)){
+                           if (pa.getProjectPowerRange().contains(s)){
+                               if (!pa.getArrageFlag().equals("1")){
+                                   pa.setArrageFlag("1");
+                                   pa.setBackToStauts("2");//说明这是施工单位项目经理新增的状态
+                                   pa.setOperationStatus("0");//循序操作
+                                   pa.setProjectMonthDate(mouthDate);//自动配置月份
+                                   if (null!=pa.getProjectPowerRange()&&pa.getProjectPowerRange().contains("非涉电")){
+                                       pa.setProjectPowerOut("带电");
+                                   }else {
+                                       pa.setProjectPowerOut("停电");
+                                   }
+                                   //分配关联包
+                                   if (!"".equals(assPackName)){
+                                       pa.setAssociatedBag("关联包项目"+assPackSort);
+                                       pa.setAssociatedSort(assPackSort);
+                                   }else {
+                                       pa.setAssociatedBag("关联包项目"+assInter);
+                                       pa.setAssociatedSort(assInter);
+                                   }
+                               }
+                               break;
+                           }
+                       }
+                    }
+                }
+            }
+        }
     }
 
     //删除已经安排的项目-----施工单位项目经理 --添加备注
@@ -409,6 +645,39 @@ public class ProjectPlanArrageService extends CrudService<ProjectPlanArrageMappe
         }
     }
 
+    //删除已经安排的项目-----施工单位项目经理 --添加备注 --直接删除
+    public boolean deletePlanArrangeAll(List<ProjectPlanArrage> projectPlans,List<String> strings){
+        boolean flag = true;
+        for (String id:strings){
+            for (ProjectPlanArrage planArrage:projectPlans){
+                if (id.equals(planArrage.getId())){
+                    if (null!=planArrage.getBackToStauts()&&planArrage.getBackToStauts().equals("2")){
+                    }else {
+                        flag = false;
+                        break;
+                    }
+                }
+            }
+            if (!flag){
+                break;
+            }
+        }
+        if (flag){
+            for (String id:strings){
+                for (ProjectPlanArrage planArrage:projectPlans){
+                    if (id.equals(planArrage.getId())){
+                        if (null!=planArrage.getBackToStauts()&&planArrage.getBackToStauts().equals("2")){
+                            planArrage.setBackToStauts("0");
+                            planArrage.setArrageFlag("0");
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+        return flag;
+    }
+
     //删除已经安排的项目-----施工单位项目经理 --添加备注
     public boolean deleteJudgePlanArrange(List<ProjectPlanArrage> projectPlans,List<String> strings){
         String name = UserUtils.getUser().getName();
@@ -451,12 +720,59 @@ public class ProjectPlanArrageService extends CrudService<ProjectPlanArrageMappe
                 projectPlanArrage.setProjectNumber(projectId);
                 projectPlanArrage.setProjectName((String)importUtil.getCellValue(row,1));
                 projectPlanArrage.setProjectPowerRange((String)importUtil.getCellValue(row,2));
-                projectPlanArrage.setProjectDate(format.parse((String)importUtil.getCellValue(row,3)));
-                projectPlanArrage.setProjectMonthDate(format.parse((String)importUtil.getCellValue(row,4)));
+                if (null!=(String)importUtil.getCellValue(row,3)&&!"".equals((String)importUtil.getCellValue(row,3))){
+                    projectPlanArrage.setProjectDate(format.parse((String)importUtil.getCellValue(row,3)));
+                }
+                if (null!=(String)importUtil.getCellValue(row,4)&&!"".equals((String)importUtil.getCellValue(row,4))){
+                    projectPlanArrage.setProjectMonthDate(format.parse((String)importUtil.getCellValue(row,4)));
+                }
                 projectPlanArrage.setProjectPowerOut((String)importUtil.getCellValue(row,5));
+                projectPlanArrage.setAssociatedBag((String)importUtil.getCellValue(row,6));
+                projectPlanArrage.setPowerPackage((String)importUtil.getCellValue(row,7));
                 list.add(projectPlanArrage);
             }
         }
         return list;
     }
+
+
+    //初始安排的计划项目--右侧表格数据 展示计划安排的项目--根据管理包进行排序
+    public void getSortAssPackage(List<ProjectPlanArrage> projectPlanArrages){
+        Collections.sort(projectPlanArrages, new Comparator<ProjectPlanArrage>() {
+            @Override
+            public int compare(ProjectPlanArrage o1, ProjectPlanArrage o2) {
+                if (o1.getAssociatedSort()<o2.getAssociatedSort()){
+                    return 1;
+                }
+                if (o1.getAssociatedSort()==o2.getAssociatedSort()){
+                    return 0;
+                }
+                return -1;
+            }
+        });
+    }
+    //初始安排的计划项目--右侧表格数据 打停电包验证是否是统一关联包 true 验证通过
+    public Boolean getPowerOutagesInspection(List<String> strings,List<ProjectPlanArrage> projectPlanArrages){
+        boolean flag = true;
+        String assPackage = "";
+        for (ProjectPlanArrage planArrage:projectPlanArrages){
+            //计划安排的项目
+            if (planArrage.getArrageFlag().equals("1")){
+                //循环id集合
+                for (String s:strings){
+                    if (s.equals(planArrage.getId())){ //如果id相等
+                        if (!"".equals(assPackage)){
+                            if (!assPackage.equals(planArrage.getAssociatedBag())){
+                                flag = false;
+                                return flag;
+                            }
+                        }else {
+                            assPackage = planArrage.getAssociatedBag();//赋初始值
+                        }
+                    }
+                }
+            }
+        }
+        return flag;
+    }
 }

+ 29 - 1
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/util/BookStrapTreeUtil.java

@@ -2,15 +2,17 @@ package com.jeeplus.modules.sg.managementcenter.projectPlanArrage.util;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectDailyPlan;
 import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectPlanArrage;
 import com.jeeplus.modules.sys.utils.UserUtils;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 public class BookStrapTreeUtil {
-
+    //月计划安排树
     public static List<Map<String,Object>> getAllBookStrapTree(List<Map<String,Object>> objects, List<ProjectPlanArrage> projectPlanArrages,String bs){
         List<Map<String, Object>> bookStrapTree = getBookStrapTree(objects, projectPlanArrages,bs);
         List<Map<String,Object>> allBookStrapTree = Lists.newArrayList();
@@ -76,4 +78,30 @@ public class BookStrapTreeUtil {
         }
         return flag;
     }
+
+    //日计划安排树
+    //获取树
+    public static List<Map<String,Object>> getDailyBookStrapTree(List<Map<String,Object>> objects, List<ProjectDailyPlan> projectDailyPlans){
+        List<Map<String, Object>> dailyChildTree = getDailyChildTree(projectDailyPlans);
+        Map<String,Object> map = Maps.newHashMap();
+        map.put("id","-1");
+        map.put("name","未安排的日计划项目");
+        map.put("children",dailyChildTree);
+        objects.add(map);
+        return objects;
+    }
+    //获取子类树
+    public static List<Map<String,Object>>  getDailyChildTree(List<ProjectDailyPlan> projectDailyPlans){
+        List<Map<String,Object>> objects = Lists.newArrayList();
+        Map<String,Object> maps = null;
+        for (ProjectDailyPlan plan:projectDailyPlans){
+            if (!plan.getArrangeDailyPlan().equals("1")){
+                maps = Maps.newHashMap();
+                maps.put("id",plan.getId());
+                maps.put("name",plan.getProjectName());
+                objects.add(maps);
+            }
+        }
+        return objects;
+    }
 }

+ 29 - 1
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/util/PackagingUtil.java

@@ -13,7 +13,27 @@ import java.util.List;
  * 打包工具类
  */
 public class PackagingUtil {
-    //列表展示数据
+    //不是初始节点的展示 -- 施工单位项目经理 配网项目经理2展示列表
+    public static List<ProjectPlanArrage> getProjectPlanArrageList(ProjectPlanArrage projectPlanArrage,List<ProjectPlanArrage> projectPlanArrages){
+        //获取已经安排的id
+        List<String> ids = getSplitProjectNumber(projectPlanArrage);
+        for (ProjectPlanArrage planArrage:projectPlanArrages){
+            if (!planArrage.getWhetherStatus().equals("1")){
+                for (String s:ids){
+                    if (planArrage.getProjectNumber().equals(s)){
+                        planArrage.setArrageFlag("1");
+                        break;
+                    }
+                }
+            }
+        }
+
+        return projectPlanArrages;
+    }
+
+
+
+    //列表展示数据 --
     public static List<ProjectPlanArrage> getProjectPlanList(ProjectPlanArrage projectPlanArrage,List<ProjectPlanArrage> projectPlanArrages){
         //关联停电包信息
         HashSet<String> currentSwitch = getCurrentSwitch(projectPlanArrage, projectPlanArrages);
@@ -213,6 +233,10 @@ public class PackagingUtil {
                     proclnsAss.setBackToStauts(planArrage.getBackToStauts());//状态
                     proclnsAss.setBackToText(planArrage.getBackToText());//备注
                     proclnsAss.setProjectPowerOut(planArrage.getProjectPowerOut());
+                    proclnsAss.setAssociatedBag(planArrage.getAssociatedBag());
+                    proclnsAss.setAssociatedSort(planArrage.getAssociatedSort());
+                    proclnsAss.setPowerPackage(planArrage.getPowerPackage());
+                    proclnsAss.setPowerPackageSort(planArrage.getPowerPackageSort());
                     proclnsAss.setStatus("0");
                     projectActProclnsAsses.add(proclnsAss);
                 }
@@ -245,6 +269,10 @@ public class PackagingUtil {
                 proclnsAss.setBackToText(planArrage.getBackToText());//备注
                 proclnsAss.setProjectPowerOut(planArrage.getProjectPowerOut());
                 proclnsAss.setStatus("0");
+                proclnsAss.setAssociatedBag(planArrage.getAssociatedBag());
+                proclnsAss.setAssociatedSort(planArrage.getAssociatedSort());
+                proclnsAss.setPowerPackage(planArrage.getPowerPackage());
+                proclnsAss.setPowerPackageSort(planArrage.getPowerPackageSort());
                 projectActProclnsAsses.add(proclnsAss);
 //                if (planArrage.getConstructionUnit().equals(name)){
 //

+ 409 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/web/ProjectDailyPlanController.java

@@ -0,0 +1,409 @@
+package com.jeeplus.modules.sg.managementcenter.projectPlanArrage.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectActProclnsAss;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectDailyPlan;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.entity.ProjectPlanArrage;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.service.ProjectDailyPlanService;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.service.ProjectPlanArrageService;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.util.BookStrapTreeUtil;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.util.ImportUtil;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.util.PackagingUtil;
+import com.jeeplus.modules.sg.managementcenter.projectPlanArrage.util.Result;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+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.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static com.jeeplus.core.service.BaseService.dataRuleFilter;
+
+/**
+ * 日计划
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/sg/managementCenter/projectDailyPlan")
+public class ProjectDailyPlanController extends BaseController {
+
+    @Autowired
+    private ProjectPlanArrageService projectPlanArrageService;
+
+    @Autowired
+    private ProjectDailyPlanService projectDailyPlanService;
+    //主页面 list
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectDailyPlan projectDailyPlan, Model model) {
+        model.addAttribute("projectDailyPlan", projectDailyPlan);
+        return "modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyPlanList";
+    }
+
+    //新增页面
+    @RequestMapping(value = "formProject")
+    public String List(ProjectDailyPlan projectDailyPlan,Model model){
+        return "modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyDateForm";
+    }
+
+    @ResponseBody
+//	@RequiresPermissions("managementcenter:materialproject:list")
+    @RequestMapping(value = "data")
+    public Map<String, Object> data(ProjectDailyPlan projectDailyPlan, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<ProjectDailyPlan> page = projectDailyPlanService.findPage(new Page<ProjectDailyPlan>(request, response), projectDailyPlan);
+        return getBootstrapData(page);
+    }
+
+    //删除操作
+    @ResponseBody
+    @RequestMapping(value = "deleteAll")
+    public AjaxJson deleteAll(ProjectDailyPlan projectDailyPlan,String ids,String projectNames,HttpServletRequest request){
+        AjaxJson ajaxJson = new AjaxJson();
+        ProjectDailyPlan dailyPlan = null;
+        try {
+            String comment = URLDecoder.decode(projectNames, "UTF-8");
+            List<String> list = new ArrayList<>();
+            if (ids.contains(",")){
+                String[] split = ids.split(",");
+                String[] names = comment.split(",");
+                for (String name:names){
+                    list.add(name);
+                }
+                projectDailyPlanService.updateNoMartailDaily(list);
+                for (String str : split){
+                    dailyPlan = new ProjectDailyPlan();
+                    dailyPlan.setId(str);
+                    projectDailyPlanService.delete(dailyPlan);
+                }
+            }else {
+                dailyPlan = new ProjectDailyPlan();
+                dailyPlan.setId(ids);
+                list.add(comment);
+                projectDailyPlanService.updateNoMartailDaily(list);
+                projectDailyPlanService.delete(dailyPlan);
+            }
+            ajaxJson.setSuccess(true);
+            ajaxJson.setMsg("删除成功");
+            return ajaxJson;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        ajaxJson.setSuccess(false);
+        ajaxJson.setMsg("删除失败");
+        return ajaxJson;
+    }
+
+    @ResponseBody
+    @RequestMapping(value = "export")
+    public AjaxJson exportFile(ProjectDailyPlan projectDailyPlan, HttpServletRequest request, HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "日计划安排表"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<ProjectDailyPlan> page = projectDailyPlanService.findPage(new Page<ProjectDailyPlan>(request, response, -1), projectDailyPlan);
+            new ExportExcel("日计划安排表", ProjectDailyPlan.class).setDataList(page.getList()).write(response, fileName).dispose();
+            j.setSuccess(true);
+            j.setMsg("导出成功!");
+            return j;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导出日计划安排记录失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+    //下载导入模板
+    @ResponseBody
+    @RequestMapping(value = "exportTim")
+    public AjaxJson exportTim(ProjectDailyPlan projectDailyPlan, HttpServletRequest request, HttpServletResponse response) {
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "日计划安排表模板.xlsx";
+            List<ProjectDailyPlan> projectDailyPlans = new ArrayList<ProjectDailyPlan>();
+            new ExportExcel("日计划安排表", ProjectDailyPlan.class).setDataList(projectDailyPlans).write(response, fileName).dispose();
+            j.setSuccess(true);
+            j.setMsg("导出成功!");
+            return j;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导出日计划安排记录失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+    //新增日计划选择项目定义号,或者项目名称后走的方法(可不选)
+    @RequestMapping(value = "initAddDailyPlan")
+    public String getInitAddDailyPlan(ProjectDailyPlan projectDailyPlan,Model model,HttpServletRequest request){
+        try {
+            String comment1 = URLDecoder.decode(projectDailyPlan.getProjectName(), "UTF-8");
+            projectDailyPlan.setProjectName(comment1);
+            //获取所有未安排的日计划
+            List<ProjectDailyPlan> projectDailyPlans = projectDailyPlanService.getProjectDailyPlan();
+            List<ProjectDailyPlan> sxDailyPlan = projectDailyPlanService.getSxDailyPlan(projectDailyPlans, projectDailyPlan);
+            for (ProjectDailyPlan plan:sxDailyPlan){
+                plan.preInsert();
+            }
+            request.getSession().setAttribute("sxDailyPlan",sxDailyPlan);
+        }catch (Exception e){
+           e.printStackTrace();
+        }
+        return "modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyArrageForm";
+    }
+    //初始安排的计划项目--操作列表
+    @ResponseBody
+    @RequestMapping(value = "dailyPlanProject")
+    public Map<String, Object> initArragePlanProject(ProjectDailyPlan projectDailyPlan,Model model,HttpServletRequest request,HttpServletResponse response){
+        projectDailyPlan.setArrangeDailyPlan("1");
+        List<ProjectDailyPlan> projectPlans = (List<ProjectDailyPlan>)request.getSession().getAttribute("sxDailyPlan");
+        Page<ProjectDailyPlan> page = findPageList(new Page<ProjectDailyPlan>(request, response),projectDailyPlan,projectPlans);
+        return getBootstrapData(page);
+    }
+    public Page<ProjectDailyPlan> findPageList(Page<ProjectDailyPlan> page, ProjectDailyPlan entity,List<ProjectDailyPlan> list) {
+        dataRuleFilter(entity);
+        entity.setPage(page);
+        List<ProjectDailyPlan> planArrages = new ArrayList<ProjectDailyPlan>();
+        if (null!=list){
+            for (ProjectDailyPlan projectDailyPlan:list){
+                if (entity.getArrangeDailyPlan().equals(projectDailyPlan.getArrangeDailyPlan())){
+                    planArrages.add(projectDailyPlan);
+                }
+            }
+        }
+        page.setList(planArrages);
+        return page;
+    }
+
+    //所有未安排的计划-树形表格展示
+    @ResponseBody
+    @RequestMapping(value = "bootstrapTreeTable")
+    public List<Map<String,Object>> getArrageNoPlan(ProjectDailyPlan projectDailyPlan,HttpServletRequest request){
+        //创建树形表格
+        List<Map<String,Object>> objects = Lists.newArrayList();
+        List<ProjectDailyPlan> projectPlans = (List<ProjectDailyPlan>)request.getSession().getAttribute("sxDailyPlan");
+        List<Map<String, Object>> dailyBookStrapTree = BookStrapTreeUtil.getDailyBookStrapTree(objects, projectPlans);
+        return dailyBookStrapTree;
+    }
+
+    //安排日计划
+    @ResponseBody
+    @RequestMapping(value = "unDailyPlanned")
+    public Result getUnplanned(ProjectDailyPlan projectDailyPlan, String ids, HttpServletRequest request){
+        Result j = new Result();
+        List<String> strings = PackagingUtil.getString(ids);
+        try {
+            //获取项目信息
+            List<ProjectDailyPlan> projectPlans = (List<ProjectDailyPlan>)request.getSession().getAttribute("sxDailyPlan");
+            if (!projectPlans.isEmpty()&&!strings.isEmpty()){
+                projectDailyPlanService.addPlanDaily(projectPlans,strings);
+            }
+            //判断书否二次涉电
+            boolean flag = false;
+            for (ProjectDailyPlan plans:projectPlans){
+                for (String s:strings){
+                    if (plans.getId().equals(s)){
+                        if (plans.getFlagYesElectricity().equals("1")){
+                            flag = true;
+                            break;
+                        }
+                        break;
+                    }
+                }
+                if (flag){
+                    break;
+                }
+            }
+            List<Map<String,Object>> objects = Lists.newArrayList();
+            List<Map<String, Object>> bookStrapTree = BookStrapTreeUtil.getDailyBookStrapTree(objects, projectPlans);
+            j.setMapListTree(bookStrapTree);
+            j.setSuccess(true);
+            if (flag){
+                j.setMessage("安排日计划成功:您所安排的项目中有二次涉电项目,列表已标红");
+            }else {
+                j.setMessage("安排日计划成功");
+            }
+            return j;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        j.setSuccess(false);
+        j.setMessage("安排日计划失败");
+        return j;
+    }
+
+    //取消日计划
+    @ResponseBody
+    @RequestMapping(value = "cancelPackage")
+    public Result getCancelPackage(ProjectDailyPlan projectDailyPlan,String ids,HttpServletRequest request){
+        Result j = new Result();
+        List<String> strings = PackagingUtil.getString(ids);
+        try {
+            //获取项目信息
+            List<ProjectDailyPlan> projectPlans = (List<ProjectDailyPlan>)request.getSession().getAttribute("sxDailyPlan");
+            if (!projectPlans.isEmpty()&&!strings.isEmpty()){
+                projectDailyPlanService.cancelPlanDaily(projectPlans,strings);
+            }
+            List<Map<String,Object>> objects = Lists.newArrayList();
+            List<Map<String, Object>> bookStrapTree = BookStrapTreeUtil.getDailyBookStrapTree(objects, projectPlans);
+            j.setMapListTree(bookStrapTree);
+            j.setSuccess(true);
+            j.setMessage("取消计划成功");
+            return j;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        j.setSuccess(false);
+        j.setMessage("取消计划失败");
+        return j;
+    }
+
+    //安排停电开关和具体时间页面
+    @RequestMapping(value = "planDateAndOut")
+    public String planDateAndOut(ProjectDailyPlan projectDailyPlan){
+        return "modules/sg/managementcenter/projectPlanArrage/dailyPlan/dailyDateList";
+    }
+
+    //安排停电开关和具体时间列表页面
+    //初始安排的计划项目--操作列表
+    @ResponseBody
+    @RequestMapping(value = "initdailyPlanProject")
+    public Map<String, Object> initdailyPlanProject(ProjectDailyPlan projectDailyPlan,Model model,HttpServletRequest request,HttpServletResponse response){
+        projectDailyPlan.setArrangeDailyPlan("1");
+        List<ProjectDailyPlan> projectPlans = (List<ProjectDailyPlan>)request.getSession().getAttribute("sxDailyPlan");
+        Page<ProjectDailyPlan> page = findPageList(new Page<ProjectDailyPlan>(request, response),projectDailyPlan,projectPlans);
+        return getBootstrapData(page);
+    }
+
+    //安排停电开关和具体时间列表页面
+    //安排时间
+    @ResponseBody
+    @RequestMapping(value = "addtimeNet")
+    public AjaxJson getAddtimeNet(ProjectDailyPlan projectDailyPlan,HttpServletRequest request){
+        AjaxJson ajaxJson = new AjaxJson();
+        List<ProjectDailyPlan> projectPlans = (List<ProjectDailyPlan>)request.getSession().getAttribute("sxDailyPlan");
+        try {
+            for (ProjectDailyPlan plan:projectPlans){
+                if (plan.getId().equals(projectDailyPlan.getId())){
+                    plan.setProjectDate(projectDailyPlan.getProjectDate());
+                    break;
+                }
+            }
+            ajaxJson.setSuccess(true);
+            ajaxJson.setMsg("安排时间成功");
+            return ajaxJson;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        ajaxJson.setSuccess(false);
+        ajaxJson.setMsg("安排时间失败");
+        return ajaxJson;
+    }
+
+    //新增日计划备注按钮
+    @ResponseBody
+    @RequestMapping(value = "remarksBack")
+    public Result remarksBack(String ids,String remarks,HttpServletRequest request){
+        Result j = new Result();
+        List<String> strings = PackagingUtil.getString(ids);
+        try {
+            String comment = URLDecoder.decode(remarks, "UTF-8");
+            List<ProjectDailyPlan> projectPlans = (List<ProjectDailyPlan>)request.getSession().getAttribute("sxDailyPlan");
+            for (ProjectDailyPlan plan:projectPlans){
+                for (String s:strings){
+                    if (plan.getId().equals(s)){
+                        plan.setRemarks(comment);
+                    }
+                }
+            }
+            List<Map<String,Object>> objects = Lists.newArrayList();
+            List<Map<String, Object>> bookStrapTree = BookStrapTreeUtil.getDailyBookStrapTree(objects, projectPlans);
+            j.setMapListTree(bookStrapTree);
+            j.setSuccess(true);
+            j.setMessage("取消计划成功");
+            j.setSuccess(true);
+            j.setMessage("备注成功");
+            return j;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        j.setSuccess(false);
+        j.setMessage("备注失败");
+        return j;
+    }
+
+    @ResponseBody
+    @RequestMapping(value = "sureInspection")
+    public AjaxJson sureInspection(String ids,ProjectDailyPlan projectDailyPlan,Model model,HttpServletRequest request,HttpServletResponse response){
+        AjaxJson j = new AjaxJson();
+        try {
+            List<ProjectDailyPlan> projectPlans = (List<ProjectDailyPlan>)request.getSession().getAttribute("sxDailyPlan");
+            List<ProjectDailyPlan> idsList = projectDailyPlanService.getInspectionFunction(ids);
+            projectDailyPlanService.getPlanDaily(projectPlans,idsList);
+            j.setSuccess(true);
+            j.setMsg("安排日计划成功");
+            request.getSession().setAttribute("sxDailyPlan","");
+            return j;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        j.setSuccess(false);
+        j.setMsg("安排日计划失败");
+        return j;
+    }
+
+    @ResponseBody
+    @RequestMapping(value = "import")
+    public AjaxJson importFile(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request){
+        AjaxJson j = new AjaxJson();
+        try {
+            StringBuilder failureMsg = new StringBuilder();
+            ImportUtil importUtil = new ImportUtil(file,0,0);
+            List<ProjectDailyPlan> materProUtil = projectDailyPlanService.getMaterProUtil(importUtil);
+            projectDailyPlanService.insertList(materProUtil);
+            j.setMsg( "已成功导入项目"+materProUtil.size()+"条计划安排记录记录");
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导入失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+    //修改查看功能
+    @RequestMapping(value = "updateAndView")
+    public String updateAndView(ProjectDailyPlan projectDailyPlan,Model model){
+        ProjectDailyPlan projectDaily = null;
+        if (null!=projectDailyPlan.getId()&&!projectDailyPlan.getId().equals("")){
+           projectDaily = projectDailyPlanService.get(projectDailyPlan.getId());
+        }
+        model.addAttribute("projectDailyPlan",projectDaily);
+        return "modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyPlanForm";
+    }
+
+    //保存
+    @ResponseBody
+    @RequestMapping(value = "update")
+    public AjaxJson update(ProjectDailyPlan projectDailyPlan){
+        AjaxJson j = new AjaxJson();
+        try {
+            projectDailyPlanService.update(projectDailyPlan);
+            j.setSuccess(true);
+            j.setMsg("修改成功");
+            return j;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        j.setSuccess(false);
+        j.setMsg("修改失败");
+        return j;
+    }
+}

File diff suppressed because it is too large
+ 740 - 337
src/main/java/com/jeeplus/modules/sg/managementcenter/projectPlanArrage/web/ProjectPlanArrageController.java


+ 22 - 13
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/constructionDateList.js

@@ -7,11 +7,10 @@ $(document).ready(function() {
                //类型json
                dataType: "json",
                contentType: "application/x-www-form-urlencoded",
-                height:'400',
                // //显示检索按钮
 	           // showSearch: true,
-               // //显示刷新按钮
-               // showRefresh: true,
+               //显示刷新按钮
+               showRefresh: true,
                // //显示切换手机试图按钮
                // showToggle: true,
                // //显示 内容列下拉框
@@ -124,37 +123,47 @@ $(document).ready(function() {
                columns: [
                    {
 		        field: 'projectNumber',
+                width:160,
 		        title: '项目定义号',
-                width:160
 
             }
                    ,{
                        field: 'projectName',
+                       width:160,
                        title: '项目名称',
-                       width:120
 
                    }
                    ,{
                        field: 'projectPowerRange',
+                       width:200,
                        title: '停电范围',
-                       width:110
 
                    }
                    ,{
                        field: 'projectMonthDate',
+                       width:160,
                        title: '计划月份',
-                       width:160
+                   }
+                   ,{
+                       field: 'projectDate',
+                       title: '安排计划时间',
+                       width:300,
+                       formatter: getTime
                    }
                    ,{
                        field: 'constructionUnit',
-                       title: '施工单位项目经理',
-                       width:160
+                       width:200,
+                       title: '当前操作经理',
                    }
                    ,{
-                       field: 'projectDate',
-                       title: '安排计划时间',
+                       field: 'associatedBag',
                        width:160,
-                       formatter: getTime
+                       title: '关联包',
+                   }
+                   ,{
+                       field: 'powerPackage',
+                       width:160,
+                       title: '停电包'
                    }
 		     ]
 		
@@ -167,7 +176,7 @@ $(document).ready(function() {
             ].join('');
         }else {
             return [
-                "<div class='input-group' id="+row.id+"> <input readonly='readonly' type='text' id="+row.id+"input1234"+" class='form-control required'  value="+row.projectDate+"/></div>" ,
+                "<div class='input-group' style='width: 100%' id="+row.id+"> <input readonly='readonly' type='text' id="+row.id+"input1234"+" class='form-control required'  value="+row.projectDate+"/></div>" ,
             ].join('');
         }
 

+ 60 - 10
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/constructionManageAct.js

@@ -109,7 +109,7 @@
                 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 = "#BDD2AE"
+                        rows[i+1].style.color = "green"
                     }
                 }
             },
@@ -118,33 +118,56 @@
             },
             columns: [{
                 checkbox: true
-
             }, {
                 field: 'projectNumber',
-                title: '项目定义号'
+                title: '项目定义号',
+                width:120
 
             }, {
                 field: 'projectName',
+                width:120,
                 title: '项目名称'
             }, {
                 field: 'projectPowerRange',
+                width:200,
                 title: '停电范围'
             }, {
                 field: 'projectMonthDate',
+                width:120,
                 title: '停电月份'
             }, {
                 field: 'projectDate',
+                width:200,
                 title: '停电日'
             }, {
                 field: 'projectPowerOut',
+                width:100,
                 title: '是否停电'
             }, {
                 field: 'constructionUnit',
+                width:140,
                 title: '当前操作经理'
-            }, {
+            }
+                ,{
+                    field: 'associatedBag',
+                    width:300,
+                    title: '关联包',
+                }
+                ,{
+                    field: 'powerPackage',
+                    width:300,
+                    title: '停电包'
+                }
+            , {
                 field: 'backToText',
+                width:300,
                 title: '备注'
             }
+                , {
+                    field: 'remarks',
+                    width:300,
+                    title: '发起人备注'
+                }
 
 
             ]
@@ -258,11 +281,10 @@ function deleteAll(ids){
         return false;
     }
     $("#ids").val(ids);
-    jp.prompt("填写备注", function (message) {
-        jp.post("${ctx}/sg/managementCenter/projectPlanArrage/deletePlanArrange",
+    // jp.prompt("填写备注", function (message) {
+        jp.post("${ctx}/sg/managementCenter/projectPlanArrage/deletePlanArrangeAll",
             {
-                "ids": $("#ids").val(),
-                "backToText": window.encodeURI(message)
+                "ids": $("#ids").val()
             },
             function (data) {
                 if(data.success){
@@ -272,7 +294,35 @@ function deleteAll(ids){
                 }else{
                     jp.error(data.message);
                 }
-            })
+            }
+        )
+    // });
+}
+function deleteAllExit(ids){
+    if(!ids){
+        ids =  getIdSelections();
+    }
+        if ("" == ids || ids==null){
+            jp.error("请选择项目");
+            return false;
+        }
+        $("#ids").val(ids);
+        jp.prompt("填写备注", function (message) {
+            jp.post("${ctx}/sg/managementCenter/projectPlanArrage/deletePlanArrange",
+            {
+                "ids": $("#ids").val(),
+                "backToText": window.encodeURI(message)
+            },
+            function (data) {
+                if(data.success){
+                jstree(data.mapListTree);
+                refresh();
+                jp.success(data.message);
+            }else{
+                jp.error(data.message);
+            }
+        }
+        )
     });
 }
 function getIdSelections() {
@@ -301,7 +351,7 @@ function surePlan() {
                     }else if (data.msg == "1"){
                         jp.error("您还要项目具体安排时间未填!");
                     }else{
-                        jp.confirm('您安排的同一开关的项目时间不相同,是否继续?', function(){
+                        jp.confirm('您安排的同一停电包的项目时间不相同,是否继续?', function(){
                             withTheProcess();
                             top.layer.close(index);
                         })

+ 3 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/constructionManageAct.jsp

@@ -40,6 +40,9 @@
                         <button id="remove" class="btn btn-danger"  onclick="deleteAll()">
                             <i class="glyphicon glyphicon-remove"></i> 删除
                         </button>
+                        <button id="remove1" class="btn btn-default"  onclick="deleteAllExit()">
+                            <i class="glyphicon glyphicon-edit"></i> 退回备注
+                        </button>
                     </div><!-- 工具栏结束 -->
                     <div style="height:370px;overflow:auto">
                         <table id="table" data-toolbar="#toolbar">

+ 286 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/netActPowerList2.js

@@ -0,0 +1,286 @@
+<%@ 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/projectPlanArrage/dataPower2",
+               //默认值为 '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.color = "red"
+                        }
+                    }
+                },
+                onClickRow: function(row, $el){
+               },
+
+            onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+               columns: [
+                   {
+		        field: 'projectNumber',
+		        title: '项目定义号'
+
+            }
+                   ,{
+                       field: 'projectName',
+                       title: '项目名称'
+
+                   }
+                   ,{
+                       field: 'projectMonthDate',
+                       title: '停电月份'
+
+                   }
+                   ,{
+                       field: 'projectPowerRange',
+                       title: '停电范围',
+                       width:300
+
+                   }
+                   ,{
+                       field: 'projectPowerOut',
+                       title: '是否带电',
+                       width:120,
+                       formatter: getTime
+                   },{
+                       field: 'constructionUnit',
+                       title: '施工单位项目经理'
+
+                   }
+                   ,{
+                       field: 'associatedBag',
+                       title: '关联包'
+                   }
+                   ,{
+                       field: 'powerPackage',
+                       title: '停电包'
+                   }
+		     ]
+		});
+    function getTime(value, row, index) {
+        if(row.projectPowerOut == "带电") {
+            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.loading();
+    jp.post("${ctx}/sg/managementCenter/projectPlanArrage/inspectionNetWork",$('#inputForm').serialize(),function(data){
+        if(data.success){
+            refresh();
+            // $('#projectTable').bootstrapTable('refresh');
+            jp.success(data.msg);
+        }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);
+    return idPower;
+    // $("#idPower").val(idPower);
+    // jp.loading();
+    // jp.post("${ctx}/sg/managementCenter/projectPlanArrage/sureInspection",$('#inputForm').serialize(),function(data){
+    //     if(data.success){
+    //         jp.confirm('带电项目在停电开关集合,是否通过?', function () {
+    //             var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+    //             // parent.layer.close(dialogIndex);
+    //             addDatePlan();
+    //             jp.success("项目计划流程发起");
+    //             jp.go("${ctx}/act/task/todo");
+    //         })
+    //     }else{
+    //         var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+    //         parent.layer.close(dialogIndex);
+    //         addDatePlan();
+    //     }
+    // })
+}
+
+
+// function addDatePlan() {
+//     jp.post("${ctx}/sg/managementCenter/projectPlanArrage/save",function(data){
+//         if(data.success){
+//             jp.success("项目计划流程发起");
+//             jp.go("${ctx}/act/task/todo")
+//         }else {
+//             jp.error("流程发起失败,请重新发起!");
+//         }
+//     })
+// }
+</script>

+ 33 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/netActPowerList2.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="netActPowerList2.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>

+ 215 - 75
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/netWorkManageAct.js

@@ -1,12 +1,12 @@
 <%@ page contentType="text/html;charset=UTF-8" %>
-<script type="text/javascript">
+    <script type="text/javascript">
     $(document).ready(function() {
         var projectId = $('#projectId').val();
-        //zTree初始化
-        // $.getJSON("${ctx}/sg/managementCenter/projectPlanArrage/bootstrapNetWorkTreeTable?projectId="+projectId,function(data){
-        //     jstree(data);
-        //     dateTimeValue('1');
-        // });
+        // zTree初始化
+        $.getJSON("${ctx}/sg/managementCenter/projectPlanArrage/bootstrapNetWorkTreeTable?projectId="+projectId,function(data){
+            jstree(data);
+            dateTimeValue('1');
+        });
         $('#selectId').click(function () {
             var object = $('#jstree').treeview('getChecked');
             if (object.length<1){
@@ -43,38 +43,6 @@
                 silent : false//设置初始化节点关闭
             });
         });
-        //搜索
-        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({
             //请求方法
@@ -126,13 +94,9 @@
                 var tb = document.getElementById('table');    // 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 = "#d25138"
-                    // }
                     if (split[i].htmlStatus=="2"){
                         // this.data.rows[i].setAttribute("style","color: red;");
-                        rows[i+1].style.backgroundColor = "#BDD2AE"
+                        rows[i+1].style.color = "green"
                     }
                 }
             },
@@ -163,11 +127,24 @@
                 title: '是否停电'
             }, {
                 field: 'constructionUnit',
-                title: '施工单位项目经理'
-            }, {
-                field: 'backToText',
-                title: '备注'
+                title: '当前操作经理'
             }
+                ,{
+                    field: 'associatedBag',
+                    title: '关联包',
+                }
+                ,{
+                    field: 'powerPackage',
+                    title: '停电包'
+                }
+                , {
+                    field: 'backToText',
+                    title: '配网项目经理备注'
+                }
+                , {
+                    field: 'remarks',
+                    title: '备注'
+                }
 
 
             ]
@@ -187,7 +164,6 @@ $('#table').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
 });
 //安排计划时间
 function add(ids){
-    jp.loading();
     jp.post("${ctx}/sg/managementCenter/projectPlanArrage/unNetWorkplanned",{'ids':ids},function(data){
         if(data.success){
             refresh();
@@ -208,19 +184,26 @@ function jstree(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');
+        onNodeChecked: function (event, node) { //选中节点
+            var selectNodes = getChildNodeIdArr(node); //获取所有子节点
+            if (selectNodes) { //子节点不为空,则选中所有子节点
+                $('#jstree').treeview('checkNode', [selectNodes, { silent: true }]);
+            }
+            // var parentNode = $("#jstree").treeview("getNode", node.parentId);
+            // setParentNodeCheck(node);
         },
-
+        onNodeUnchecked: function (event, node) { //取消选中节点
+            // 取消父节点 子节点取消
+            var selectNodes = setChildNodeUncheck(node); //获取未被选中的子节点
+            var childNodes = getChildNodeIdArr(node);    //获取所有子节点
+            if (selectNodes && selectNodes.length == 0) { //有子节点且未被选中的子节点数目为0,则取消选中所有子节点
+                $('#tree').treeview('uncheckNode', [childNodes, { silent: true }]);
+            }
+            // 取消节点 父节点取消
+            var parentNode = $("#jstree").treeview("getNode", node.parentId);  //获取父节点
+            var selectNodes = getChildNodeIdArr(node);
+            setParentNodeCheck(node);
+        }
     });
 }
 function dateTimeValue(value) {
@@ -286,6 +269,51 @@ function getIdSelections() {
         return row.id
     });
 }
+
+function addPowerFlag() {
+    top.layer.open({
+        type: 2,
+        area: ['900px', '500px'],
+        title: '人工选择是否带电',
+        maxmin: true, //开启最大化最小化按钮
+        content: "${ctx}/sg/managementCenter/projectPlanArrage/netWorkElectrified",
+        btn: ['检验','确定','关闭'],
+        btn1:function(index,layero){
+            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 power = iframeWin.contentWindow.saveSure();
+            $("#idPower").val(power)
+            jp.post("${ctx}/sg/managementCenter/projectPlanArrage/sureNetWorkInspection",$('#inputFormIds').serialize(),function(data){
+                if(data.success){
+                    jp.confirm('带电项目在停电开关集合,是否通过?', function () {
+                        newWorkSubmit();
+                        // addDatePlan();
+                        // jp.success("项目计划流程发起");
+                        top.layer.close(index);
+                        // jp.go("${ctx}/act/task/todo");
+                    })
+                }else{
+                    top.layer.close(index);
+                    newWorkSubmit();
+                    // addDatePlan();
+                    // jp.success("检验失败");
+                    // jp.go("${ctx}/act/task/todo");
+                }
+            })
+            return false;
+        },
+        btn3: function(index){
+            top.layer.close(index);
+        },
+        cancel:function (index) {
+            top.layer.close(index);
+        }
+    });
+}
+
 function newWorkSubmit() {
     top.layer.open({
         type: 2,
@@ -322,21 +350,6 @@ function newWorkSubmit() {
             top.layer.close(index);
         }
     });
-    // jp.prompt("审核通过", function (message) {
-    //     jp.post("${ctx}/sg/managementCenter/projectPlanArrage/newWorkRunProInsId",
-    //         {
-    //             "flag": "yes",
-    //             "comment": window.encodeURI(message)
-    //         },
-    //         function (data) {
-    //             if(data.success){
-    //                 jp.success(data.msg);
-    //                 jp.go("${ctx}/act/task/todo")
-    //             }else {
-    //                 jp.error(data.msg);
-    //             }
-    //         })
-    // });
 }
 function planSuccess() {
     jp.prompt("审核通过", function (message) {
@@ -355,4 +368,131 @@ function planSuccess() {
             })
     });
 }
+
+function planPowerPacker(ids){
+    if(!ids){
+        ids =  getIdSelections();
+    }
+    if (null!=ids&&""!=ids){
+        $.post("${ctx}/sg/managementCenter/projectPlanArrage/unNetplannedPackage?ids=" +ids, function(data){
+            if(data.success){
+                jstree(data.mapListTree);
+                refresh();
+                jp.success(data.message);
+            }else{
+                jp.error(data.message);
+            }
+        })
+    } else {
+        jp.error("请选择项目!");
+    }
+}
+//取消停电包
+function cancelPowerPacker(ids){
+    if(!ids){
+        ids =  getIdSelections();
+    }
+    if (null!=ids&&""!=ids){
+        $.post("${ctx}/sg/managementCenter/projectPlanArrage/cancelNetPackage?ids=" +ids, function(data){
+            if(data.success){
+                jstree(data.mapListTree);
+                refresh();
+                jp.success(data.message);
+            }else{
+                jp.error(data.message);
+            }
+        })
+    } else {
+        jp.error("请选择项目!");
+    }
+
+}
+//备注
+function getNetRemarksBack(ids) {
+    if (!ids) {
+        ids = getIdSelections();
+    }
+    $("#idsRemark").val(ids);
+    if (null != ids && "" != ids) {
+        jp.prompt("填写备注", function (message) {
+            jp.post("${ctx}/sg/managementCenter/projectPlanArrage/netRemarksBack",
+                {
+                    "ids": $("#idsRemark").val(),
+                    "remarks": window.encodeURI(message)
+                },
+                function (data) {
+                    if (data.success) {
+                        jstree(data.mapListTree);
+                        refresh();
+                        jp.success(data.message);
+                    } else {
+                        jp.error(data.message);
+                    }
+                })
+        });
+    } else {
+        jp.error("请选择项目!");
+    }
+}
+function getChildNodeIdArr(node) {
+    var ts = [];
+    if (node.children) {
+        for (x in node.children) {
+            ts.push(node.children[x].nodeId);
+            if (node.children[x].children) {
+                var getNodeDieDai = getChildNodeIdArr(node.children[x]);
+                for (j in getNodeDieDai) {
+                    ts.push(getNodeDieDai[j]);
+                }
+            }
+        }
+    } else {
+        ts.push(node.nodeId);
+    }
+    return ts;
+}
+
+// 选中所有子节点时,选中父节点 取消子节点时取消父节点
+function setParentNodeCheck(node) {
+    var parentNode = $("#jstree").treeview("getNode", node.parentId);
+    if (parentNode.children) {
+        var checkedCount = 0;
+        for (x in parentNode.children) {
+            if (parentNode.children[x].state.checked) {
+                checkedCount++;
+            } else {
+                break;
+            }
+        }
+        if (checkedCount == parentNode.children.length) {  //如果子节点全部被选 父全选
+            $("#jstree").treeview("checkNode", parentNode.nodeId);
+            setParentNodeCheck(parentNode);
+        } else {   //如果子节点未全部被选 父未全选
+            $('#jstree').treeview('uncheckNode', parentNode.nodeId);
+            setParentNodeCheck(parentNode);
+        }
+    }
+}
+
+// 取消父节点时 取消所有子节点
+function setChildNodeUncheck(node) {
+    if (node.children) {
+        var ts = [];    //当前节点子集中未被选中的集合
+        for (x in node.children) {
+            if (!node.children[x].state.checked) {
+                ts.push(node.children[x].nodeId);
+            }
+            if (node.children[x].nodes) {
+                var getNodeDieDai = node.children[x];
+                console.log(getNodeDieDai);
+                for (j in getNodeDieDai) {
+                    if (!getNodeDieDai.state.checked) {
+                        ts.push(getNodeDieDai[j]);
+                    }
+                }
+            }
+        }
+    }
+    return ts;
+}
 </script>

+ 85 - 11
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/netWorkManageAct.jsp

@@ -19,32 +19,49 @@
         <div class="panel-body">
             <div class="wrapper wrapper-content">
                 <input type="text" value="${projectId}" id="projectId" hidden="hidden"/>
+                <input type="text" value="" id="ids" hidden="hidden">
                 <div class="row">
                     <%--未安排计划的树形--%>
-                    <%--<div class="col-sm-3 col-md-3">--%>
-                        <%--<div id="jstree" style="height:400px;overflow:auto;"></div>--%>
-                    <%--</div>--%>
-                    <%--<div  class="col-sm-9 col-md-9 animated fadeInRight">--%>
+                    <div class="col-sm-3 col-md-3">
+                        <input type="text" hidden="hidden" value="" id="idsRemark">
+                        <div style="margin-top: 11px">
+                            <label>
+                                <input type="input" class="form-control" id="input-search" style="width: 200px;float: left">
+                                <button type="button" class="btn btn-success select-node" id="btn-search" style="float: left" >搜索</button>
+                            </label>
+                        </div>
+                        <div id="jstree" style="height:370px;overflow:auto;"></div>
+                    </div>
+                    <div  class="col-sm-9 col-md-9 animated fadeInRight">
                         <!-- 工具栏 -->
                         <div id="toolbar">
-                            <%--<button id="selectId" class="btn btn-warning">--%>
-                                <%--安排选择计划--%>
-                            <%--</button>--%>
+                            <button id="selectId" class="btn btn-primary">
+                                <i class="glyphicon glyphicon-plus"></i>安排选择计划
+                            </button>
                             <button id="remove" class="btn btn-danger"  onclick="deleteAll()">
                                 <i class="glyphicon glyphicon-remove"></i> 删除
                             </button>
+                            <button id="selectPowerPack" class="btn btn-success" onclick="planPowerPacker()">
+                                <i class="glyphicon glyphicon-plus"></i>安排停电包
+                            </button>
+                            <button id="cancelPowerPack" class="btn btn-warning" onclick="cancelPowerPacker()">
+                                <i class="glyphicon glyphicon-remove"></i>取消停电包
+                            </button>
+                            <button id="" class="btn btn-default" onclick="getNetRemarksBack()">
+                                <i class="glyphicon glyphicon-edit"></i> 备注
+                            </button>
                         </div><!-- 工具栏结束 -->
-                        <div style="height:400px;overflow:auto">
+                        <div style="height:370px;overflow:auto">
                             <table id="table" data-toolbar="#toolbar">
                             </table>
                         </div>
-                    <%--</div>--%>
+                    </div>
                 </div>
-                <div class="row" style="margin-top: 20px">
+                <div class="row">
                     <div class="col-sm-3"></div>
                     <div class="col-sm-6">
                         <div class="form-group text-center">
-                            <input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="button" value="确认提交" onclick="newWorkSubmit()" />&nbsp;
+                            <input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="button" value="确认安排此计划" onclick="addPowerFlag()" />&nbsp;
                         </div>
                     </div>
                 </div>
@@ -56,6 +73,63 @@
         </div>
     </div>
 </div>
+<%--<div class="wrapper wrapper-content">--%>
+    <%--<div class="panel panel-primary">--%>
+        <%--<div class="panel-heading">--%>
+            <%--<h3 class="panel-title">项目计划审核操作</h3>--%>
+        <%--</div>--%>
+        <%--<div class="panel-body">--%>
+            <%--<div class="wrapper wrapper-content">--%>
+                <%--<input type="text" value="${projectId}" id="projectId" hidden="hidden"/>--%>
+                <%--<div class="row">--%>
+                    <%--&lt;%&ndash;未安排计划的树形&ndash;%&gt;--%>
+                    <%--<div class="col-sm-3 col-md-3">--%>
+                        <%--<div style="margin-top: 11px">--%>
+                            <%--<label>--%>
+                                <%--<input type="input" class="form-control" id="input-search" style="width: 200px;float: left">--%>
+                                <%--<button type="button" class="btn btn-success select-node" id="btn-search" style="float: left" >搜索</button>--%>
+                            <%--</label>--%>
+                        <%--</div>--%>
+                        <%--<div id="jstree" style="height:370px;overflow:auto;"></div>--%>
+                    <%--</div>--%>
+                    <%--<div  class="col-sm-9 col-md-9 animated fadeInRight">--%>
+                        <%--<!-- 工具栏 -->--%>
+                        <%--<div id="toolbar">--%>
+                            <%--<button id="selectId" class="btn btn-primary">--%>
+                                <%--<i class="glyphicon glyphicon-plus"></i>安排选择计划--%>
+                            <%--</button>--%>
+                            <%--<button id="remove" class="btn btn-danger"  onclick="deleteAll()">--%>
+                                <%--<i class="glyphicon glyphicon-remove"></i> 退回--%>
+                            <%--</button>--%>
+                            <%--<button id="selectPowerPack" class="btn btn-primary" onclick="planPowerPacker()">--%>
+                                <%--<i class="glyphicon glyphicon-plus"></i>安排停电包--%>
+                            <%--</button>--%>
+                            <%--<button id="cancelPowerPack" class="btn btn-danger" onclick="cancelPowerPacker()">--%>
+                                <%--<i class="glyphicon glyphicon-remove"></i>取消停电包--%>
+                            <%--</button>--%>
+                            <%--<div style="height:370px;overflow:auto">--%>
+                                <%--<table id="table" data-toolbar="#toolbar">--%>
+                                <%--</table>--%>
+                            <%--</div>--%>
+                        <%--</div>--%>
+                    <%--</div>--%>
+                <%--</div>--%>
+                <%--<div class="row" style="margin-top: 20px">--%>
+                    <%--<div class="col-sm-3"></div>--%>
+                    <%--<div class="col-sm-6">--%>
+                        <%--<div class="form-group text-center">--%>
+                            <%--<input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="button" value="确认提交" onclick="newWorkSubmit()" />&nbsp;--%>
+                        <%--</div>--%>
+                    <%--</div>--%>
+                <%--</div>--%>
+                <%--<c:if test="${not empty act.id}">--%>
+                    <%--<act:flowChart procInsId="${act.procInsId}"/>--%>
+                    <%--<act:histoicFlow procInsId="${act.procInsId}" />--%>
+                <%--</c:if>--%>
+            <%--</div>--%>
+        <%--</div>--%>
+    <%--</div>--%>
+<%--</div>--%>
 <%--<span style="background-color: #0e90d2"></span>--%>
 </body>
 </html>

+ 26 - 17
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/newDateList.js

@@ -7,11 +7,10 @@ $(document).ready(function() {
                //类型json
                dataType: "json",
                contentType: "application/x-www-form-urlencoded",
-                height:'400',
                // //显示检索按钮
 	           // showSearch: true,
-               // //显示刷新按钮
-               // showRefresh: true,
+               //显示刷新按钮
+               showRefresh: true,
                // //显示切换手机试图按钮
                // showToggle: true,
                // //显示 内容列下拉框
@@ -26,10 +25,10 @@ $(document).ready(function() {
                striped: true,
                //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
                cache: false,
-               //是否显示分页(*)
-               // pagination: true,
+               // 是否显示分页(*)
+               pagination: false,
                //  //排序方式
-               // sortOrder: "asc",
+               sortOrder: "asc",
                // //初始化加载第一页,默认第一页
                // pageNumber:1,
                // //每页的记录行数(*)
@@ -124,31 +123,41 @@ $(document).ready(function() {
                columns: [
                    {
 		        field: 'projectNumber',
-		        title: '项目定义号',
-                width:160
+                width:160,
+		        title: '项目定义号'
 
             }
                    ,{
                        field: 'projectName',
-                       title: '项目名称',
-                       width:120
+                       width:160,
+                       title: '项目名称'
 
                    }
                    ,{
                        field: 'projectPowerRange',
-                       title: '停电范围',
-                       width:110
+                       width:180,
+                       title: '停电范围'
 
                    }
                    ,{
                        field: 'projectMonthDate',
-                       title: '计划月份',
-                       width:160
+                       width:160,
+                       title: '计划月份'
                    }
                    ,{
                        field: 'constructionUnit',
-                       title: '施工单位项目经理',
-                       width:160
+                       width:160,
+                       title: '施工单位项目经理'
+                   }
+                   ,{
+                       field: 'associatedBag',
+                       width:160,
+                       title: '关联包'
+                   }
+                   ,{
+                       field: 'powerPackage',
+                       width:160,
+                       title: '停电包'
                    }
                    ,{
                        field: 'projectDate',
@@ -162,7 +171,7 @@ $(document).ready(function() {
 
     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.projectDate+"/> <span class='input-group-addon'> <span class='glyphicon glyphicon-calendar'></span> </span></div>" ,
+            "<div class='input-group form_datetime' style='width: 100%' id="+row.id+"> <input type='text' id="+row.id+"input"+"   name='deliverySchedule' class='form-control required'  value="+row.projectDate+"/> <span class='input-group-addon'> <span class='glyphicon glyphicon-calendar'></span> </span></div>" ,
         ].join('');
 
     }

+ 1 - 1
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/act/runListManageAct.jsp

@@ -55,7 +55,7 @@
 
 	<!-- 表格 -->
 	<table id="projectTable"  style="table-layout:fixed"  data-toolbar="#toolbar"></table>
-		<div class="row">
+		<div class="row" style="margin-top: 5px">
 			<div class="col-sm-3"></div>
 			<div class="col-sm-6">
 				<div class="form-group text-center">

+ 292 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/dailyDateList.js

@@ -0,0 +1,292 @@
+<%@ 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,
+               // //每页的记录行数(*)
+               // pageSize: 5000,
+               // //可供选择的每页的行数(*)
+               // pageList: [5,10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/sg/managementCenter/projectDailyPlan/initdailyPlanProject",
+               //默认值为 '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].flagYesElectricity=="1"){
+                    // this.data.rows[i].setAttribute("style","color: red;");
+                    rows[i+1].style.color = "red"
+                }
+            }
+            var split = data.rows;
+            for (var i = 0; i < split.length; i++) {
+                var arrangeTime = split[i].projectDate;
+                var date = new Date(arrangeTime);
+                var date1 = new Date(arrangeTime);
+                date1.setMonth(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/projectDailyPlan/addtimeNet?id=" + split[i].id + "&projectDate=" + newDateTime, function (data) {
+                                        if (data.success) {
+                                            jp.success(data.msg);
+                                        } else {
+                                            jp.error(data.msg);
+                                        }
+                                    })
+                                })
+                            } else {
+                                jp.get("${ctx}/sg/managementCenter/projectDailyPlan/addtimeNet?id=" + split[i].id + "&projectDate=" + 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',
+                width:160,
+		        title: '项目定义号'
+
+            }
+                   ,{
+                       field: 'projectName',
+                       width:160,
+                       title: '项目名称'
+
+                   }
+                   ,{
+                       field: 'projectPowerRange',
+                       width:180,
+                       title: '停电范围'
+
+                   }
+                   ,{
+                       field: 'constructionUnit',
+                       width:160,
+                       title: '施工单位项目经理'
+                   }
+                   ,{
+                       field: 'projectPowerOut',
+                       title: '是否带电',
+                       width:160,
+                       formatter: getPowerOut
+                   }
+                   ,{
+                       field: 'projectDate',
+                       title: '安排计划时间',
+                       width:160,
+                       formatter: getTime
+                   }
+                   ,{
+                       field: 'remarks',
+                       title: '备注'
+                   }
+		     ]
+		
+		});
+    function getPowerOut(value, row, index) {
+      if(row.projectPowerOut == "带电") {
+          return [
+          "<select class='form-control' id="+row.id+"power"+"><option value='带电'>带电</option><option value='停电'  selected>停电</option><select>",
+          ].join('');
+      }else {
+          return [
+          "<select class='form-control' id="+row.id+"power"+"><option value='停电'  selected>停电</option><option value='带电' >带电</option><select>",
+          ].join('');
+      }
+    }
+    function getTime(value, row, index) {
+        return [
+            "<div class='input-group form_datetime' style='width: 100%' id="+row.id+"> <input type='text' id="+row.id+"input"+"   name='deliverySchedule' class='form-control required'  value="+row.projectDate+"/> <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;
+        }
+        return true;
+    }
+
+    function saveSure(){
+        var flag = false;
+        var date = getDate();
+        var idPower = "";
+        var id = "";
+        for (var i = 0; i < date.length; i++){
+          id = date[i].id;
+          idPower += date[i].id + "," + $("#"+id+"power").val() + ";";
+        }
+        idPower = idPower.substring(0,idPower.length-1);
+        return idPower;
+    // $("#idPower").val(idPower);
+    // jp.loading();
+    // jp.post("${ctx}/sg/managementCenter/projectPlanArrage/sureInspection",$('#inputForm').serialize(),function(data){
+    //     if(data.success){
+    //         jp.confirm('带电项目在停电开关集合,是否通过?', function () {
+    //             var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+    //             // parent.layer.close(dialogIndex);
+    //             addDatePlan();
+    //             jp.success("项目计划流程发起");
+    //             jp.go("${ctx}/act/task/todo");
+    //         })
+    //     }else{
+    //         var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+    //         parent.layer.close(dialogIndex);
+    //         addDatePlan();
+    //     }
+    // })
+}
+</script>

+ 37 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/dailyDateList.jsp

@@ -0,0 +1,37 @@
+<%@ 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="dailyDateList.js" %>
+</head>
+<script>
+    // function save() {
+    //     var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+    //     parent.layer.close(dialogIndex);
+    // }
+</script>
+<body>
+	<form id="inputForm">
+		<input value="" name="ids" id="idPower" type="hidden">
+	</form>
+	<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>

+ 401 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyArrageForm.js

@@ -0,0 +1,401 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script type="text/javascript">
+		$(document).ready(function() {
+		//zTree初始化
+			$.getJSON("${ctx}/sg/managementCenter/projectDailyPlan/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);
+                // alert(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//设置初始化节点关闭
+                });
+            });
+            //表格初始化
+            $('#table').bootstrapTable({
+                //请求方法
+                method: 'post',
+                //类型json
+                dataType: "json",
+                contentType: "application/x-www-form-urlencoded",
+                //是否显示行间隔色
+                //显示刷新按钮
+                showRefresh: true,
+                //是否显示分页(*)
+                // pagination: true,
+                //排序方式
+                sortOrder: "asc",
+                //初始化加载第一页,默认第一页
+                pageNumber:1,
+                //每页的记录行数(*)
+                pageSize: 100,
+                //可供选择的每页的行数(*)
+                pageList: [5,10, 25, 50, 100],
+                //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+                url: "${ctx}/sg/managementCenter/projectDailyPlan/dailyPlanProject",
+                //默认值为 '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].flagYesElectricity=="1"){
+                            // this.data.rows[i].setAttribute("style","color: red;");
+                            rows[i+1].style.color = "red"
+                        }
+                    }
+                },
+                onShowSearch: function () {
+                    $("#search-collapse").slideToggle();
+                },
+                columns: [{
+                    checkbox: true
+
+                }, {
+                    field: 'projectNumber',
+                    title: '项目定义号',
+
+                }, {
+                    field: 'projectName',
+                    title: '项目名称'
+                }, {
+                    field: 'projectPowerRange',
+                    title: '停电范围',
+                }
+                    ,{
+                        field: 'constructionUnit',
+                        title: '施工单位项目经理',
+
+                    }
+                    ,{
+    field: 'remarks',
+    title: '备注',
+    width:120
+}
+                ]
+
+            });
+
+        })
+
+        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){
+        if(null==ids||ids==""){
+            jp.error("请选择日计划安排的项目");
+        }else{
+            jp.post("${ctx}/sg/managementCenter/projectDailyPlan/unDailyPlanned",{'ids':ids},function(data){
+                if(data.success){
+                    refresh();
+                    // jstreeTime(data.mapList);
+                    jstree(data.mapListTree);
+                    jp.success(data.message)
+                }else{
+                    jp.error(data.message);
+                }
+            })
+        }
+    }
+    function getIds() {
+        return $("#parentIds").val();
+    }
+    function jstree(date) {
+        $('#jstree').treeview({
+            data: date,
+            levels: 1,
+            highlightSelected:false,
+            showCheckbox:true,
+            onNodeChecked: function (event, node) { //选中节点
+                var selectNodes = getChildNodeIdArr(node); //获取所有子节点
+                if (selectNodes) { //子节点不为空,则选中所有子节点
+                    $('#jstree').treeview('checkNode', [selectNodes, { silent: true }]);
+                }
+                // var parentNode = $("#jstree").treeview("getNode", node.parentId);
+                // setParentNodeCheck(node);
+            },
+            onNodeUnchecked: function (event, node) { //取消选中节点
+                // 取消父节点 子节点取消
+                var selectNodes = setChildNodeUncheck(node); //获取未被选中的子节点
+                var childNodes = getChildNodeIdArr(node);    //获取所有子节点
+                if (selectNodes && selectNodes.length == 0) { //有子节点且未被选中的子节点数目为0,则取消选中所有子节点
+                    $('#tree').treeview('uncheckNode', [childNodes, { silent: true }]);
+                }
+                // 取消节点 父节点取消
+                var parentNode = $("#jstree").treeview("getNode", node.parentId);  //获取父节点
+                var selectNodes = getChildNodeIdArr(node);
+                setParentNodeCheck(node);
+            }
+        });
+    }
+    // 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();
+        }
+        if(null!=ids&&ids!=""){
+            jp.confirm('确认要取消吗?', function(){
+                jp.loading();
+                $.get("${ctx}/sg/managementCenter/projectDailyPlan/cancelPackage?ids=" +ids, function(data){
+                if(data.success){
+                    jstree(data.mapListTree);
+                    refresh();
+                    jp.success(data.message);
+                }else{
+                    jp.error(data.message);
+                }
+                 })
+                })
+        }else{
+            jp.error("请选择取消的项目");
+        }
+
+    }
+function planPowerPacker(ids){
+    if(!ids){
+        ids =  getIdSelections();
+    }
+    if (null!=ids&&""!=ids){
+        $.post("${ctx}/sg/managementCenter/projectPlanArrage/unplannedPackage?ids=" +ids, function(data){
+            if(data.success){
+                jstree(data.mapListTree);
+                refresh();
+                jp.success(data.message);
+            }else{
+                jp.error(data.message);
+            }
+        })
+    } else {
+        jp.error("请选择项目!");
+    }
+
+}
+function cancelPowerPacker(ids){
+    if(!ids){
+        ids =  getIdSelections();
+    }
+    if (null!=ids&&""!=ids){
+        $.post("${ctx}/sg/managementCenter/projectDailyPlan/cancelPackage?ids=" +ids, function(data){
+            if(data.success){
+                jstree(data.mapListTree);
+                refresh();
+                jp.success(data.message);
+            }else{
+                jp.error(data.message);
+            }
+        })
+    } else {
+        jp.error("请选择项目!");
+    }
+
+}
+function getRemarksBack(ids){
+    if(!ids){
+        ids =  getIdSelections();
+    }
+    $("#idsRemark").val(ids);
+    if (null!=ids&&""!=ids){
+        jp.prompt("填写备注", function (message) {
+            jp.post("${ctx}/sg/managementCenter/projectDailyPlan/remarksBack",
+                {
+                    "ids": $("#idsRemark").val(),
+                    "remarks": window.encodeURI(message)
+                },
+                function (data) {
+                    if(data.success){
+                        jstree(data.mapListTree);
+                        refresh();
+                        jp.success(data.message);
+                    }else{
+                        jp.error(data.message);
+                    }
+                })
+        });
+    } else {
+        jp.error("请选择项目!");
+    }
+
+}
+    function getIdSelections() {
+        return $.map($("#table").bootstrapTable('getSelections'), function (row) {
+            return row.id
+        });
+    }
+function getChildNodeIdArr(node) {
+    var ts = [];
+    if (node.children) {
+        for (x in node.children) {
+            ts.push(node.children[x].nodeId);
+            if (node.children[x].children) {
+                var getNodeDieDai = getChildNodeIdArr(node.children[x]);
+                for (j in getNodeDieDai) {
+                    ts.push(getNodeDieDai[j]);
+                }
+            }
+        }
+    } else {
+        ts.push(node.nodeId);
+    }
+    return ts;
+}
+
+// 选中所有子节点时,选中父节点 取消子节点时取消父节点
+function setParentNodeCheck(node) {
+    var parentNode = $("#jstree").treeview("getNode", node.parentId);
+    if (parentNode.children) {
+        var checkedCount = 0;
+        for (x in parentNode.children) {
+            if (parentNode.children[x].state.checked) {
+                checkedCount++;
+            } else {
+                break;
+            }
+        }
+        if (checkedCount == parentNode.children.length) {  //如果子节点全部被选 父全选
+            $("#jstree").treeview("checkNode", parentNode.nodeId);
+            setParentNodeCheck(parentNode);
+        } else {   //如果子节点未全部被选 父未全选
+            $('#jstree').treeview('uncheckNode', parentNode.nodeId);
+            setParentNodeCheck(parentNode);
+        }
+    }
+}
+
+// 取消父节点时 取消所有子节点
+function setChildNodeUncheck(node) {
+    if (node.children) {
+        var ts = [];    //当前节点子集中未被选中的集合
+        for (x in node.children) {
+            if (!node.children[x].state.checked) {
+                ts.push(node.children[x].nodeId);
+            }
+            if (node.children[x].nodes) {
+                var getNodeDieDai = node.children[x];
+                console.log(getNodeDieDai);
+                for (j in getNodeDieDai) {
+                    if (!getNodeDieDai.state.checked) {
+                        ts.push(getNodeDieDai[j]);
+                    }
+                }
+            }
+        }
+    }
+    return ts;
+}
+</script>

+ 58 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyArrageForm.jsp

@@ -0,0 +1,58 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <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="projectDailyArrageForm.js"%>
+    <script>
+        function save() {
+            var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+            parent.layer.close(dialogIndex);
+            jp.getParent().addDate();
+        }
+    </script>
+</head>
+<style>
+</style>
+<body style="background: white">
+<div class="wrapper wrapper-content">
+    <div class="row">
+        <%--未安排计划的树形--%>
+        <div class="col-sm-3 col-md-2">
+            <input type="text" hidden="hidden" value="" id="idsRemark">
+            <%--<input type="text" id="input-search" class="">--%>
+            <div style="margin-top: 11px">
+                <label>
+                <input type="input" class="form-control" id="input-search" style="width: 70%;float: left">
+                <button type="button" class="btn btn-success select-node" id="btn-search" style="float: left" >搜索</button>
+                </label>
+            </div>
+            <div id="jstree" style="height:370px;overflow:auto;margin-top: 10px;margin-top: 1px"></div>
+        </div>
+        <div  class="col-sm-9 col-md-10 animated fadeInRight">
+            <!-- 工具栏 -->
+            <div id="toolbar">
+                <button id="selectId" class="btn btn-primary">
+                    <i class="glyphicon glyphicon-plus"></i>安排日计划
+                </button>
+                <button id="remove" class="btn btn-danger"  onclick="deleteAll()">
+                    <i class="glyphicon glyphicon-remove"></i> 取消安排日计划
+                </button>
+                <button id="export" class="btn btn-warning" onclick="getRemarksBack()">
+                    <i class="fa fa-file-excel-o"></i> 备注
+                </button>
+            </div><!-- 工具栏结束 -->
+            <div style="height:370px;overflow:auto">
+                <table id="table" data-toolbar="#toolbar">
+                </table>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 64 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyDateForm.jsp

@@ -0,0 +1,64 @@
+<%@ 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 projectName= $("#projectName").val();
+		    var projectNumber = $("#projectNumber").val();
+            jp.getParent().addList(projectNumber,projectName);
+            var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+            parent.layer.close(dialogIndex);
+            <%--jp.get("${ctx}/sg/managementCenter/projectPlanArrage/isArranging?arrangeTime="+arrangeTime,function(data){--%>
+                <%--if (data.success){--%>
+                    <%--jp.getParent().addList(projectNumber,arrangeTime);--%>
+                    <%--var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引--%>
+                    <%--parent.layer.close(dialogIndex);--%>
+				<%--}else {--%>
+				    <%--jp.error(data.msg);--%>
+				<%--}--%>
+            <%--})--%>
+
+        }
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="projectDailyPlan" 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="projectName" htmlEscape="false"  id="projectName"  class="form-control"/>
+				</td>
+				<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>
+			</tr>
+			<%--<tr>--%>
+				<%--<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="projectMonthDate" 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>

+ 88 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyPlanForm.jsp

@@ -0,0 +1,88 @@
+<%@ 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-DD"
+		    });
+		});
+		function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else{
+                jp.loading();
+                jp.post("${ctx}/sg/managementCenter/projectDailyPlan/update",$('#inputForm').serialize(),function(data){
+                    if(data.success){
+                        jp.getParent().refresh();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+
+                    }else{
+                        jp.error(data.msg);
+                    }
+                })
+			}
+
+        }
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="projectDailyPlan" class="form-horizontal">
+		<form:hidden path="id"/>
+		<table class="table table-bordered">
+			<tbody>
+				<tr>
+					<td class="width-15 active"><label class="pull-right" style="float: left">项目名称:</label></td>
+					<td class="width-35">
+						<form:input path="projectName" htmlEscape="false" readonly="true" class="form-control required"/>
+					</td>
+					<td class="width-15 active"><label class="pull-right">项目定义号:</label></td>
+					<td class="width-35">
+						<form:input path="projectNumber" htmlEscape="false" readonly="true"  class="form-control required"/>
+					</td>
+				</tr>
+				<tr>
+					<td class="width-15 active"><label class="">停电范围:</label></td>
+					<td class="width-35">
+						<form:input path="projectPowerRange" htmlEscape="false" readonly="true"   class="form-control"/>
+					</td>
+					<td class="width-15 active"><label class="">是否停电:</label></td>
+					<td class="width-35">
+						<form:select path="projectPowerOut" class='form-control'>
+							<form:option value='带电'/>
+							<form:option value='停电'/>
+						</form:select>
+						<%--<select class='form-control' id=''>--%>
+							<%----%>
+						<%--<select>--%>
+							<%--<form:input path="projectPowerOut" htmlEscape="false" readonly="true"   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' id='deliverySchedule'>
+							<input type='text'  name="projectDate" class="form-control required"  value="<fmt:formatDate value="${projectDailyPlan.projectDate}" pattern="yyyy-MM-dd"/>"/>
+								<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+					<td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+					<td class="width-35">
+						<form:textarea path="remarks" htmlEscape="false" rows="4"    class="form-control "/>
+					</td>
+				</tr>
+			</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 308 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyPlanList.js

@@ -0,0 +1,308 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	$('#projectTable').bootstrapTable({
+		  //请求方法
+               method: 'post',
+               //类型json
+               dataType: "json",
+               contentType: "application/x-www-form-urlencoded",
+               //显示检索按钮
+	           showSearch: true,
+               //显示刷新按钮
+               showRefresh: true,
+               //显示切换手机试图按钮
+               showToggle: true,
+               //显示 内容列下拉框
+    	       showColumns: true,
+    	       //显示到处按钮
+    	       showExport: true,
+    	       //显示切换分页按钮
+    	       showPaginationSwitch: true,
+    	       //最低显示2行
+    	       minimumCountColumns: 2,
+               //是否显示行间隔色
+               striped: true,
+               //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+               cache: false,
+               //是否显示分页(*)
+               pagination: true,
+                //排序方式
+               sortOrder: "asc",
+               //初始化加载第一页,默认第一页
+               pageNumber:1,
+               //每页的记录行数(*)
+               pageSize: 5,
+               //可供选择的每页的行数(*)
+               pageList: [5,10, 25, 50, 100],
+               //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+               url: "${ctx}/sg/managementCenter/projectDailyPlan/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){
+               },
+
+               onClickRow: function(row, $el){
+               },
+               	onShowSearch: function () {
+			        $("#search-collapse").slideToggle();
+		        },
+               columns: [{
+                   checkbox: true
+               }
+                   ,{
+                       field: 'projectName',
+                       title: '项目名称',
+                       width:110,
+                        formatter:function(value, row , index){
+
+                        if(value == null || value ==""){
+                            value = "-";
+                        }
+                        return "<a href='javascript:edit(\""+row.id+"\")'>"+value+"</a>";
+
+                        }
+
+                   },
+                   {
+                       field: 'projectNumber',
+                       title: '项目定义号',
+                       width:160
+
+                   }
+                   ,{
+                       field: 'projectPowerRange',
+                       title: '停电范围',
+                       width:200
+
+                   }
+                   ,{
+                       field: 'projectPowerOut',
+                       title: '是否停电/带电',
+                       width:110
+
+                   }
+                   ,{
+                       field: 'projectDate',
+                       title: '具体时间',
+                       width:120,
+                       sortName: 'endDate'
+
+                   }
+                   ,{
+                       field: 'remarks',
+                       title: '备注'
+                   }
+                   // ,{
+                   //     field: 'distributionNetwork',
+                   //     title: '配网项目经理',
+                   //     width:110
+                   //
+                   // },{
+                   //     field: 'constructionUnit',
+                   //     title: '施工单位项目经理',
+                   //     width:110
+                   //
+                   // }
+                   // ,{
+                   //     field: 'operationUnit',
+                   //     title: '施工单位项目经理',
+                   //     width:110
+                   //
+                   // }
+
+		     ]
+
+		});
+    $("#btnImport").click(function(){
+        jp.open({
+            type: 2,
+            area: [500, 200],
+            auto: true,
+            title:"导入数据",
+            content: "${ctx}/tag/importExcel" ,
+            btn: ['确定', '关闭'],
+            btn1: function(index, layero){
+                var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                iframeWin.contentWindow.importExcel('${ctx}/sg/managementCenter/projectDailyPlan/import', function (data) {
+                    if(data.success){
+                        jp.success(data.msg);
+                        refresh();
+                    }else{
+                        jp.error(data.msg);
+                    }
+                    jp.close(index);
+                });//调用保存事件
+                return false;
+            },
+
+            btn2: function(index){
+                //  jp.close(index);
+            }
+        });
+    });
+	  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');
+		});
+    $("#export").click(function(){//导出Excel文件
+        jp.downloadFile('${ctx}/sg/managementCenter/projectDailyPlan/export');
+    });
+    $("#exportTim").click(function(){//导出Excel文件
+        jp.downloadFile('${ctx}/sg/managementCenter/projectDailyPlan/exportTim');
+    });
+	 $("#reset").click("click", function() {// 绑定查询按扭
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		  $("#searchForm  .select-item").html("");
+		  $('#projectTable').bootstrapTable('refresh');
+		});
+		
+		$('#beginBeginDate').datetimepicker({
+			 format: "YYYY-MM"
+		});
+		$('#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 refresh(){
+  	$('#projectTable').bootstrapTable('refresh');
+  }
+   function add(){
+	  jp.openSaveDialog('新增日计划安排', "${ctx}/sg/managementCenter/projectDailyPlan/formProject",'800px', '500px');
+  }
+    function addList(projectNumber,projectName) {
+    top.layer.open({
+        type: 2,
+        area: ['900px', '500px'],
+        title: '项目计划安排',
+        maxmin: true, //开启最大化最小化按钮
+        content: "${ctx}/sg/managementCenter/projectDailyPlan/initAddDailyPlan?projectNumber="+projectNumber+"&projectName="+encodeURI(encodeURI(projectName)),
+        btn: ['确定', '关闭'],
+        yes: function(index, layero){
+            top.layer.close(index);
+            newWorkSubmit();
+            // addPowerFlag();
+        },
+        btn2: function(index){
+            top.layer.close(index);
+        },
+        cancel:function (index) {
+            top.layer.close(index);
+        }
+    });
+}
+function newWorkSubmit() {
+    top.layer.open({
+        type: 2,
+        area: ['900px', '500px'],
+        title: '日计划安排',
+        maxmin: true, //开启最大化最小化按钮
+        content: "${ctx}/sg/managementCenter/projectDailyPlan/planDateAndOut" ,
+        btn: ['确定', '关闭'],
+        yes: function(index, layero){
+            var iframeWin = layero.find('iframe')[0]; //得到弹出的窗口对象,执行窗口内iframe页的方法:iframeWin.method();
+            var power = iframeWin.contentWindow.saveSure();
+            var flag = iframeWin.contentWindow.save();
+            if (flag){
+                $("#idPower").val(power)
+                jp.loading();
+                jp.post("${ctx}/sg/managementCenter/projectDailyPlan/sureInspection",$('#inputFormIds').serialize(),function(data){
+                    if(data.success){
+                        jp.success(data.msg);
+                        top.layer.close(index);
+                        refresh();
+                    }else{
+                        jp.error(data.msg);
+                        // top.layer.close(index);
+                    }
+                })
+            }
+            return false;
+        },
+        btn2: function(index){
+
+            top.layer.close(index);
+        },
+        cancel:function (index) {
+            top.layer.close(index);
+        }
+    });
+}
+
+  function addDate() {
+      jp.post("${ctx}/sg/managementCenter/projectPlanArrage/save",function(data){
+          if(data.success){
+              jp.success("安排计划成功");
+          }else{
+              jp.error("安排计划失败");
+          }
+      })
+  }
+   function edit(id){//没有权限时,不显示确定按钮
+       if(id == undefined){
+	      id = getIdSelections();
+	}
+	jp.openSaveDialog('编辑项目管理表单', "${ctx}/sg/managementCenter/projectDailyPlan/updateAndView?id=" + id, '800px', '500px');
+  }
+
+ function view(id){//没有权限时,不显示确定按钮
+      if(id == undefined){
+             id = getIdSelections();
+      }
+        jp.openViewDialog('查看项目管理表单', "${ctx}/sg/managementcenter/project/form?id=" + id, '800px', '500px');
+ }
+
+function deleteAll(){
+    jp.confirm('确认要删除计划表单记录吗?', function(){
+        jp.loading();
+        jp.get("${ctx}/sg/managementCenter/projectDailyPlan/deleteAll?ids=" + getIdSelections()+"&projectNames="+encodeURI(encodeURI(getNameSelections())), function(data){
+            if(data.success){
+                jp.success(data.msg);
+                refresh();
+            }else{
+                jp.error(data.msg);
+            }
+        })
+    })
+}
+function getNameSelections() {
+    return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+    return row.projectName
+    });
+}
+</script>

+ 95 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/dailyPlan/projectDailyPlanList.jsp

@@ -0,0 +1,95 @@
+<%@ 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="projectDailyPlanList.js" %>
+</head>
+<body>
+<form id="inputFormIds">
+	<input value="" name="ids" id="idPower" type="hidden">
+</form>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<div class="panel-heading">
+		<h3 class="panel-title">项目计划安排</h3>
+	</div>
+	<div class="panel-body">
+		<!-- 搜索 -->
+		<div id="search-collapse" class="collapse">
+			<div class="accordion-inner">
+				<form:form id="searchForm" modelAttribute="projectDailyPlan" 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">
+						<label class="label-item single-overflow pull-left" title="项目名称:">项目名称:</label>
+						<form:input path="projectName" htmlEscape="false" maxlength="100"  class=" form-control"/>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-4">
+						<div class="form-group">
+							<label class="label-item single-overflow pull-left" title="具体时间:">&nbsp;具体时间:</label>
+							<div class="col-xs-12">
+								<div class='input-group date' id='endDate' >
+									<input type='text'  name="projectDate" class="form-control"  />
+									<span class="input-group-addon">
+			                       <span class="glyphicon glyphicon-calendar"></span>
+			                   </span>
+								</div>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-12 col-sm-6 col-md-4">
+						<div style="margin-top:26px">
+							<a  id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i class="fa fa-search"></i> 查询</a>
+							<a  id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm" ><i class="fa fa-refresh"></i> 重置</a>
+						</div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+	
+	<!-- 工具栏 -->
+	<div id="toolbar">
+			<%--<shiro:hasPermission name="sg:managementCenter:constructionProject:add">--%>
+				<button id="add" class="btn btn-primary" onclick="add()">
+					<i class="glyphicon glyphicon-plus"></i> 新建
+				</button>
+				<button id="remove" class="btn btn-danger" disabled onclick="deleteAll()">
+					<i class="glyphicon glyphicon-remove"></i> 删除
+				</button>
+				<button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
+				<button id="export" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出
+				</button>
+				<%--<button id="exportTim" class="btn btn-primary">--%>
+					<%--<i class="glyphicon glyphicon-plus"></i> 下载导入模板--%>
+				<%--</button>--%>
+	 </div>
+		
+	<!-- 表格 -->
+	<table id="projectTable"  style="table-layout:fixed"  data-toolbar="#toolbar"></table>
+
+    <!-- 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>
+        <%--&lt;%&ndash;</shiro:hasPermission>&ndash;%&gt;--%>
+        <%--&lt;%&ndash;<shiro:hasPermission name="sg:managementcenter:project:del">&ndash;%&gt;--%>
+        <li data-item="delete"><a>删除</a></li>
+        <%--&lt;%&ndash;</shiro:hasPermission>&ndash;%&gt;--%>
+        <li data-item="action1"><a>取消</a></li>
+    </ul>  
+	</div>
+	</div>
+	</div>
+</body>
+</html>

+ 185 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/oaNotify/planOaNotityForm.js

@@ -0,0 +1,185 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+    <script>
+    $(document).ready(function() {
+        var parentId = $("#parentId").val();
+        $('#projectTable').bootstrapTable({
+            //请求方法
+            method: 'post',
+            //类型json
+            dataType: "json",
+            contentType: "application/x-www-form-urlencoded",
+            // //显示检索按钮
+            // showSearch: true,
+            //显示刷新按钮
+            showRefresh: true,
+            //显示切换手机试图按钮
+            showToggle: true,
+            //显示 内容列下拉框
+            showColumns: true,
+            //显示到处按钮
+            showExport: true,
+            //显示切换分页按钮
+            showPaginationSwitch: true,
+            //最低显示2行
+            minimumCountColumns: 2,
+            //是否显示行间隔色
+            striped: true,
+            //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+            cache: false,
+            //是否显示分页(*)
+            pagination: true,
+            //排序方式
+            sortOrder: "asc",
+            //初始化加载第一页,默认第一页
+            pageNumber:1,
+            //每页的记录行数(*)
+            pageSize: 5,
+            //可供选择的每页的行数(*)
+            pageList: [5,10, 25, 50, 100],
+            //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+            url: "${ctx}/sg/managementCenter/projectPlanArrage/runListArragePlanProject?oanotityId="+parentId,
+            //默认值为 '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){
+            },
+
+            onClickRow: function(row, $el){
+            },
+            onShowSearch: function () {
+                $("#search-collapse").slideToggle();
+            },
+            columns: [{
+                checkbox: true
+            },
+                {
+                    field: 'projectNumber',
+                    title: '项目定义号',
+                    width:160
+
+                }
+                ,{
+                    field: 'projectName',
+                    title: '项目名称',
+                    width:110
+
+                }
+                ,{
+                    field: 'projectPowerRange',
+                    title: '停电范围',
+                    width:200
+
+                }
+                ,{
+                    field: 'projectPowerOut',
+                    title: '是否停电/带电',
+                    width:110
+
+                }
+                ,{
+                    field: 'projectMonthDate',
+                    title: '月份',
+                    width:110,
+                    sortName: 'beginBeginDate'
+
+                }
+                ,{
+                    field: 'projectDate',
+                    title: '具体时间',
+                    width:120,
+                    sortName: 'endDate'
+                },{
+                    field: 'associatedBag',
+                    title: '关联包',
+                    width:120
+                }
+                ,{
+                    field: 'powerPackage',
+                    title: '停电包',
+                    width:120
+                }
+            ]
+
+        });
+
+
+        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');
+        });
+        $("#export").click(function(){//导出Excel文件
+            var procInsId1 = $("#procInsId").val();
+            jp.downloadFile('${ctx}/sg/managementCenter/projectPlanArrage/export?oanotityId='+parentId);
+        });
+        $('#beginBeginDate').datetimepicker({
+            format: "YYYY-MM"
+        });
+        $('#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 refresh(){
+    $('#projectTable').bootstrapTable('refresh');
+}
+function addList(projectNumber,arrangeTime,projectName) {
+        top.layer.open({
+            type: 2,
+            area: ['900px', '500px'],
+            title: '日计划安排',
+            maxmin: true, //开启最大化最小化按钮
+            content: "${ctx}/sg/managementCenter/projectPlanArrage/isArranging?projectNumber="+projectNumber+"&projectMonthDate="+arrangeTime+"&projectName="+encodeURI(encodeURI(projectName)),
+            btn: ['确定', '关闭'],
+            yes: function(index, layero){
+                top.layer.close(index);
+                // addPowerFlag();
+            },
+            btn2: function(index){
+                top.layer.close(index);
+            },
+            cancel:function (index) {
+                top.layer.close(index);
+            }
+        });
+}
+</script>

+ 140 - 0
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/oaNotify/planOaNotityForm.jsp

@@ -0,0 +1,140 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%@ include file="/webpage/include/bootstraptable.jsp"%>
+<%@include file="/webpage/include/treeview.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" %>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			jp.ajaxForm("#inputForm",function(data){
+				if(data.success){
+					jp.success(data.msg);
+                    // window.location.reload();
+					<%--jp.go("${ctx}/oa/oaNotify");--%>
+				}else{
+					jp.error(data.msg);
+				}
+			})
+
+		});
+	</script>
+</head>
+<body>
+<div class="wrapper wrapper-content">				
+<div class="row">
+	<div class="col-md-12">
+	<div class="panel panel-primary">
+		<div class="panel-heading">
+			<h3 class="panel-title"> 
+				<a class="panelButton" href="${ctx}/oa/oaNotify${isSelf?'/self':'' }"><i class="ti-angle-left"></i> 返回</a>
+			</h3>
+		</div>
+		<div class="panel-body">
+		<form:form id="inputForm" modelAttribute="oaNotify" action="${ctx}/oa/oaNotify/save" method="post" class="form-horizontal">
+		<form:hidden path="id"/>
+			<input  type="hidden" id="parentId"  readonly="readonly" value="${oaNotify.id}">
+				<div class="form-group">
+					<label class="col-sm-2 control-label"><font color="red">*</font>类型:</label>
+					<div class="col-sm-10">
+						<form:select path="type" class="form-control required">
+						<form:option value="" label=""/>
+						<form:options items="${fns:getDictList('oa_notify_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+						</form:select>
+					</div>
+				</div>
+				
+				<div class="form-group">
+					<label class="col-sm-2 control-label"><font color="red">*</font>标题:</label>
+					<div class="col-sm-10">
+						<form:input path="title" htmlEscape="false" maxlength="200" class="form-control required"/>
+					</div>
+				</div>
+				<c:if test="${oaNotify.status ne '1'}">
+				<div class="form-group">
+					<label class="col-sm-2 control-label"><font color="red">*</font>状态:</label>
+					<div class="col-sm-10">
+					<form:radiobuttons path="status" items="${fns:getDictList('oa_notify_status')}" itemLabel="label" itemValue="value" htmlEscape="false" class="i-checks required"/>
+					</div>
+				</div>
+				<%--<div class="form-group">--%>
+					<%--<label class="col-sm-2 control-label"><font color="red">*</font>接受人:</label>--%>
+					<%--<div class="col-sm-10">--%>
+						<%--<sys:userselect roleName="配网工程专职;配网系统专职" id="user" name="userId" value="${construction.tuser.id}" loginName="loginName" loginValue="系统专职"--%>
+										<%--labelName="user.name" labelValue="${construction.tuser.name}"--%>
+										<%--cssClass="form-control required"/>--%>
+					<%--</div>--%>
+				<%--</div>--%>
+				</c:if>
+				
+				
+			  <c:if test="${oaNotify.status eq '1'}">
+				<div class="form-group">
+				<table>
+					  <tr>
+				         <td  class="width-15 active">	<label class="pull-right">接受人:</label></td>
+				         <td class="width-35" colspan="3"><table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+								<thead>
+									<tr>
+										<th>接受人</th>
+										<th>接受部门</th>
+										<th>阅读状态</th>
+										<th>阅读时间</th>
+									</tr>
+								</thead>
+								<tbody>
+								<c:forEach items="${oaNotify.oaNotifyRecordList}" var="oaNotifyRecord">
+									<tr>
+										<td>
+											${oaNotifyRecord.user.name}
+										</td>
+										<td>
+											${oaNotifyRecord.user.office.name}
+										</td>
+										<td>
+											${fns:getDictLabel(oaNotifyRecord.readFlag, 'oa_notify_read', '')}
+										</td>
+										<td>
+											<fmt:formatDate value="${oaNotifyRecord.readDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+										</td>
+									</tr>
+								</c:forEach>
+								</tbody>
+							</table>
+							已查阅:${oaNotify.readNum} &nbsp; 未查阅:${oaNotify.unReadNum} &nbsp; 总共:${oaNotify.readNum + oaNotify.unReadNum}</td>
+				      </tr>
+				  </table>
+				  </div>
+				</c:if>
+				<c:if test="${oaNotify.status ne '1'}">
+				<shiro:hasPermission name="oa:oaNotify:edit">
+						<div class="col-lg-3"></div>
+				        <div class="col-lg-6">
+				             <div class="form-group text-center">
+				                 <div>
+				                     <button class="btn btn-primary btn-block btn-lg btn-parsley" data-loading-text="正在提交...">提 交</button>
+				                 </div>
+				             </div>
+				        </div>
+				</shiro:hasPermission>
+				</c:if>
+		</form:form>
+			<%@ include file="planOaNotityForm.js"%>
+			<div id="toolbar">
+				<button id="export" class="btn btn-warning">
+					<i class="fa fa-file-excel-o"></i> 导出
+				</button>
+			</div>
+			<table id="projectTable"  style="table-layout:fixed"  data-toolbar="#toolbar"></table>
+		</div>
+
+	</div>
+	</div>
+</div>
+</div>
+</body>
+</html>

+ 86 - 3
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanArrageForm.js

@@ -60,7 +60,7 @@
                 //初始化加载第一页,默认第一页
                 pageNumber:1,
                 //每页的记录行数(*)
-                pageSize: 5,
+                pageSize: 100,
                 //可供选择的每页的行数(*)
                 pageList: [5,10, 25, 50, 100],
                 //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
@@ -108,18 +108,36 @@
 
                 }, {
                     field: 'projectNumber',
-                    title: '项目定义号'
+                    title: '项目定义号',
 
                 }, {
                     field: 'projectName',
                     title: '项目名称'
                 }, {
                     field: 'projectPowerRange',
-                    title: '停电范围'
+                    title: '停电范围',
                 },{
                     field:'projectMonthDate',
                     title:'停电月份'
                 }
+                    ,{
+                        field: 'constructionUnit',
+                        title: '施工单位项目经理',
+
+                    }
+                    ,{
+                        field: 'associatedBag',
+                        title: '关联包',
+                    }
+                    ,{
+                        field: 'powerPackage',
+                        title: '停电包'
+                    }
+                    ,{
+                        field: 'remarks',
+                        title: '备注',
+                        width:120
+                    }
                 ]
 
             });
@@ -251,6 +269,71 @@
             })
         })
     }
+function planPowerPacker(ids){
+    if(!ids){
+        ids =  getIdSelections();
+    }
+    if (null!=ids&&""!=ids){
+        $.post("${ctx}/sg/managementCenter/projectPlanArrage/unplannedPackage?ids=" +ids, function(data){
+            if(data.success){
+                jstree(data.mapListTree);
+                refresh();
+                jp.success(data.message);
+            }else{
+                jp.error(data.message);
+            }
+        })
+    } else {
+        jp.error("请选择项目!");
+    }
+
+}
+function cancelPowerPacker(ids){
+    if(!ids){
+        ids =  getIdSelections();
+    }
+    if (null!=ids&&""!=ids){
+        $.post("${ctx}/sg/managementCenter/projectPlanArrage/cancelPackage?ids=" +ids, function(data){
+            if(data.success){
+                jstree(data.mapListTree);
+                refresh();
+                jp.success(data.message);
+            }else{
+                jp.error(data.message);
+            }
+        })
+    } else {
+        jp.error("请选择项目!");
+    }
+
+}
+function getRemarksBack(ids){
+    if(!ids){
+        ids =  getIdSelections();
+    }
+    $("#idsRemark").val(ids);
+    if (null!=ids&&""!=ids){
+        jp.prompt("填写备注", function (message) {
+            jp.post("${ctx}/sg/managementCenter/projectPlanArrage/remarksBack",
+                {
+                    "ids": $("#idsRemark").val(),
+                    "remarks": window.encodeURI(message)
+                },
+                function (data) {
+                    if(data.success){
+                        jstree(data.mapListTree);
+                        refresh();
+                        jp.success(data.message);
+                    }else{
+                        jp.error(data.message);
+                    }
+                })
+        });
+    } else {
+        jp.error("请选择项目!");
+    }
+
+}
     function getIdSelections() {
         return $.map($("#table").bootstrapTable('getSelections'), function (row) {
             return row.id

+ 12 - 2
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanArrageForm.jsp

@@ -24,6 +24,7 @@
     <div class="row">
         <%--未安排计划的树形--%>
         <div class="col-sm-3 col-md-2">
+            <input type="text" hidden="hidden" value="" id="idsRemark">
             <%--<input type="text" id="input-search" class="">--%>
             <div style="margin-top: 11px">
                 <label>
@@ -31,7 +32,7 @@
                 <button type="button" class="btn btn-success select-node" id="btn-search" style="float: left" >搜索</button>
                 </label>
             </div>
-            <div id="jstree" style="height:370px;overflow:auto;margin-top: 10px;margin-top: 1px"></div>
+            <div id="jstree" style="height:500px;overflow:auto;margin-top: 10px;margin-top: 1px"></div>
         </div>
         <div  class="col-sm-9 col-md-10 animated fadeInRight">
             <!-- 工具栏 -->
@@ -42,8 +43,17 @@
                 <button id="remove" class="btn btn-danger"  onclick="deleteAll()">
                     <i class="glyphicon glyphicon-remove"></i> 退回
                 </button>
+                <button id="selectPowerPack" class="btn btn-success" onclick="planPowerPacker()">
+                    <i class="glyphicon glyphicon-plus"></i>安排停电包
+                </button>
+                <button id="cancelPowerPack" class="btn btn-warning" onclick="cancelPowerPacker()">
+                    <i class="glyphicon glyphicon-remove"></i>取消停电包
+                </button>
+                <button id="export" class="btn btn-default" onclick="getRemarksBack()">
+                    <i class="glyphicon glyphicon-edit"></i> 备注
+                </button>
             </div><!-- 工具栏结束 -->
-            <div style="height:370px;overflow:auto">
+            <div style="height:500px;overflow:auto">
                 <table id="table" data-toolbar="#toolbar">
                 </table>
             </div>

+ 46 - 6
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanArrageList.js

@@ -78,7 +78,7 @@ $(document).ready(function() {
                    ,{
                        field: 'projectPowerRange',
                        title: '停电范围',
-                       width:110
+                       width:360
 
                    }
                    ,{
@@ -100,6 +100,15 @@ $(document).ready(function() {
                        width:120,
                        sortName: 'endDate'
 
+                   },{
+                       field: 'associatedBag',
+                       title: '关联包',
+                       width:120
+                   }
+                   ,{
+                       field: 'powerPackage',
+                       title: '停电包',
+                       width:120
                    }
 		     ]
 		
@@ -204,9 +213,24 @@ $(document).ready(function() {
             },
             btn2: function(index,layero){
                 var iframeWin = layero.find('iframe')[0]; //得到弹出的窗口对象,执行窗口内iframe页的方法:iframeWin.method();
-                var flag = iframeWin.contentWindow.saveSure();
-                jp.success("项目计划流程发起");
-                // jp.go("${ctx}/act/task/todo");
+                var power = iframeWin.contentWindow.saveSure();
+                $("#idPower").val(power)
+                jp.loading();
+                jp.post("${ctx}/sg/managementCenter/projectPlanArrage/sureInspection",$('#inputFormIds').serialize(),function(data){
+                    if(data.success){
+                        jp.confirm('带电项目在停电开关集合,是否通过?', function () {
+                            addDatePlan();
+                            jp.success("项目计划流程发起");
+                            top.layer.close(index);
+                            jp.go("${ctx}/act/task/todo");
+                        })
+                    }else{
+                        addDatePlan();
+                        jp.success("项目计划流程发起");
+                        top.layer.close(index);
+                        jp.go("${ctx}/act/task/todo");
+                    }
+                })
                 return false;
             },
             btn3: function(index){
@@ -223,7 +247,7 @@ $(document).ready(function() {
             area: ['900px', '500px'],
             title: '项目计划安排',
             maxmin: true, //开启最大化最小化按钮
-            content: "${ctx}/sg/managementCenter/projectPlanArrage/isArranging?projectNumber="+projectNumber+"&projectMonthDate="+arrangeTime+"&projectName="+window.encodeURI(projectName),
+            content: "${ctx}/sg/managementCenter/projectPlanArrage/isArranging?projectNumber="+projectNumber+"&projectMonthDate="+arrangeTime+"&projectName="+encodeURI(encodeURI(projectName)),
             btn: ['确定', '关闭'],
             yes: function(index, layero){
                 top.layer.close(index);
@@ -254,7 +278,7 @@ $(document).ready(function() {
 function deleteAll(){
     jp.confirm('确认要删除计划表单记录吗?', function(){
         jp.loading();
-        jp.get("${ctx}/sg/managementCenter/constructionProject/deleteAll?ids=" + getIdSelections(), function(data){
+        jp.get("${ctx}/sg/managementCenter/projectPlanArrage/getDeleteMainAll?ids=" + getIdSelections()+"&projectNames="+encodeURI(encodeURI(getNameSelections())), function(data){
             if(data.success){
                 $('#projectTable').bootstrapTable('refresh');
                 jp.success(data.msg);
@@ -265,4 +289,20 @@ function deleteAll(){
     })
 }
 
+function addDatePlan() {
+    jp.post("${ctx}/sg/managementCenter/projectPlanArrage/save",function(data){
+        if(data.success){
+            jp.success("项目计划流程发起");
+            jp.go("${ctx}/act/task/todo")
+        }else {
+            jp.error("流程发起失败,请重新发起!");
+        }
+    })
+}
+
+function getNameSelections() {
+    return $.map($("#projectTable").bootstrapTable('getSelections'), function (row) {
+    return row.projectName
+});
+}
 </script>

+ 7 - 1
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanArrageList.jsp

@@ -10,6 +10,9 @@
 	<%@include file="projectPlanArrageList.js" %>
 </head>
 <body>
+<form id="inputFormIds">
+	<input value="" name="ids" id="idPower" type="hidden">
+</form>
 	<div class="wrapper wrapper-content">
 	<div class="panel panel-primary">
 	<div class="panel-heading">
@@ -71,7 +74,10 @@
 					<i class="glyphicon glyphicon-plus"></i> 安排项目计划
 				</button>
 				<button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
-			<%--</shiro:hasPermission>--%>
+				<button id="remove" class="btn btn-danger" disabled onclick="deleteAll()">
+					<i class="glyphicon glyphicon-remove"></i> 删除
+				</button>
+				<%--</shiro:hasPermission>--%>
 			<%--<shiro:hasPermission name="sg:managementCenter:constructionProject:del">--%>
 				<%--<button id="remove" class="btn btn-danger" disabled onclick="deleteAll()">--%>
 					<%--<i class="glyphicon glyphicon-remove"></i> 删除--%>

+ 51 - 36
src/main/webapp/webpage/modules/sg/managementcenter/projectPlanArrage/projectPlanPowerList.js

@@ -94,40 +94,54 @@ $(document).ready(function() {
                columns: [
                    {
 		        field: 'projectNumber',
-		        title: '项目定义号',
-                width:160
+                width:160,
+		        title: '项目定义号'
 
             }
                    ,{
                        field: 'projectName',
-                       title: '项目名称',
-                       width:120
+                       width:160,
+                       title: '项目名称'
 
                    }
                    ,{
                        field: 'projectMonthDate',
-                       title: '停电月份',
-                       width:110
+                       width:160,
+                       title: '停电月份'
 
                    }
                    ,{
                        field: 'projectPowerRange',
                        title: '停电范围',
-                       width:110
-
+                       width:200
                    }
                    ,{
                        field: 'projectPowerOut',
                        title: '是否带电',
                        width:160,
                        formatter: getTime
+                   },{
+                       field: 'constructionUnit',
+                       width:160,
+                       title: '施工单位项目经理'
+
+                   }
+                   ,{
+                       field: 'associatedBag',
+                       width:160,
+                       title: '关联包'
+                   }
+                   ,{
+                       field: 'powerPackage',
+                       width:160,
+                       title: '停电包'
                    }
 		     ]
 		});
     function getTime(value, row, index) {
         if(row.projectPowerOut == "带电") {
             return [
-                "<select class='form-control' id=" + row.id + "><option value='停电'>停电</option><option value='带电'  selected>带电</option><select>",
+                "<select class='form-control' id=" + row.id + "><option value='带电' selected>带电</option><option value='停电'>停电</option><select>",
             ].join('');
         }else {
             return [
@@ -243,34 +257,35 @@ function saveSure(){
         idPower += date[i].id + "," + $("#"+id).val() + ";";
     }
     idPower = idPower.substring(0,idPower.length-1);
-    $("#idPower").val(idPower);
-    jp.loading();
-    jp.post("${ctx}/sg/managementCenter/projectPlanArrage/sureInspection",$('#inputForm').serialize(),function(data){
-        if(data.success){
-            jp.confirm('带电项目在停电开关集合,是否通过?', function () {
-                var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
-                parent.layer.close(dialogIndex);
-                addDatePlan();
-            })
-        }else{
-            var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
-            parent.layer.close(dialogIndex);
-            addDatePlan();
-        }
-    })
-    return false;
+    return idPower;
+    // $("#idPower").val(idPower);
+    // jp.loading();
+    // jp.post("${ctx}/sg/managementCenter/projectPlanArrage/sureInspection",$('#inputForm').serialize(),function(data){
+    //     if(data.success){
+    //         jp.confirm('带电项目在停电开关集合,是否通过?', function () {
+    //             var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+    //             // parent.layer.close(dialogIndex);
+    //             addDatePlan();
+    //             jp.success("项目计划流程发起");
+    //             jp.go("${ctx}/act/task/todo");
+    //         })
+    //     }else{
+    //         var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+    //         parent.layer.close(dialogIndex);
+    //         addDatePlan();
+    //     }
+    // })
 }
 
 
-function addDatePlan() {
-    jp.post("${ctx}/sg/managementCenter/projectPlanArrage/save",function(data){
-        alert(data.success);
-        if(data.success){
-            jp.success("项目计划流程发起");
-            jp.go("${ctx}/act/task/todo")
-        }else {
-            jp.error("流程发起失败,请重新发起!");
-        }
-    })
-}
+// function addDatePlan() {
+//     jp.post("${ctx}/sg/managementCenter/projectPlanArrage/save",function(data){
+//         if(data.success){
+//             jp.success("项目计划流程发起");
+//             jp.go("${ctx}/act/task/todo")
+//         }else {
+//             jp.error("流程发起失败,请重新发起!");
+//         }
+//     })
+// }
 </script>