Quellcode durchsuchen

Merge branch 'master' of http://8.137.121.180:10880/longping/subject_gxj

Wayne vor 4 Monaten
Ursprung
Commit
69da71e85c
32 geänderte Dateien mit 3107 neuen und 1065 gelöschten Zeilen
  1. 7 7
      projects-service/src/main/java/com/rtrh/projects/modules/msglog/service/impl/PhoneMsgLogServiceImpl.java
  2. 11 9
      projects-service/src/main/java/com/rtrh/projects/modules/problem/service/impl/SubquestioninfoserviceImpl.java
  3. 5 3
      projects-service/src/main/java/com/rtrh/projects/modules/projects/dao/SubInfoDao.java
  4. 4 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/enums/ProjectStatusEnum.java
  5. 13 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.java
  6. 100 6
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.xml
  7. 14 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubInfoService.java
  8. 22 11
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoQueryServiceImpl.java
  9. 184 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java
  10. 1 15
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubPreNewServiceImpl.java
  11. 1 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubRptContServiceImpl.java
  12. 4 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/StatisticsVO.java
  13. 9 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/WorkBenchVO.java
  14. 5 5
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoTcVO.java
  15. 1 1
      projects/src/main/java/com/rtrh/projects/web/controller/passport/api/SwitchApiController.java
  16. 7 2
      projects/src/main/java/com/rtrh/projects/web/controller/problemreport/ProblemtrackController.java
  17. 23 22
      projects/src/main/java/com/rtrh/projects/web/controller/problemreport/api/ProblemInfoApiController.java
  18. 99 3
      projects/src/main/java/com/rtrh/projects/web/controller/problemreport/api/ProblemPreInfoApiController.java
  19. 2 2
      projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoController.java
  20. 3 2
      projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoExportController.java
  21. 1 1
      projects/src/main/resources/config.properties
  22. 163 181
      projects/src/main/webapp/vmodules/annualPlan/list.jsp
  23. 8 8
      projects/src/main/webapp/vmodules/leftMenu.jsp
  24. 198 0
      projects/src/main/webapp/vmodules/msgLog/sendMsg.jsp
  25. 408 536
      projects/src/main/webapp/vmodules/problem/info/preInfo.jsp
  26. 58 23
      projects/src/main/webapp/vmodules/problem/track/list.jsp
  27. 75 129
      projects/src/main/webapp/vmodules/project/monthReport.jsp
  28. 66 82
      projects/src/main/webapp/vmodules/project/weekReport.jsp
  29. 1597 0
      projects/src/main/webapp/vmodules/statics/SubInfoDao.java
  30. 8 9
      projects/src/main/webapp/vmodules/subject/subInfo/tz/cb.jsp
  31. 9 4
      projects/src/main/webapp/vmodules/subject/subInfo/tz/cb_sum.jsp
  32. 1 1
      projects/src/main/webapp/vmodules/top.jsp

+ 7 - 7
projects-service/src/main/java/com/rtrh/projects/modules/msglog/service/impl/PhoneMsgLogServiceImpl.java

@@ -37,19 +37,19 @@ public class PhoneMsgLogServiceImpl implements IPhoneMsgLogService {
 	@Override
 	public Page pageQueryLog(Page page, String tel, String subName, String userName) {
 		StringBuffer sql = new StringBuffer();
-		sql.append(" SELECT a.id,sub_id, a.content,a.success, a.tel, a.user_name userName, b.sub_name subName, ");
+		sql.append(" SELECT a.id, a.sub_id,a.content,a.success, a.tel, a.user_name userName, b.sub_name subName, ");
 		sql.append(" DATE_FORMAT(a.create_time,'%Y-%m-%d %H:%i:%s') createTime,DATE_FORMAT(b.begin_date,'%Y-%m-%d') beginDate, DATE_FORMAT(b.end_date,'%Y-%m-%d') endDate, ");
 		sql.append(" b.amt_total amtTotal ");
 		sql.append(" FROM phone_msg_log a LEFT JOIN sub_info b ON a.sub_id = b.id ");
 		sql.append(" WHERE a.logic_delete_flag = 0 ");
-		if(StringUtil.isNotEmpty(tel)) {
-			sql.append(" AND a.tel LIKE '%" + tel+"%' ");
+		if (StringUtil.isNotEmpty(tel)) {
+			sql.append(" AND a.tel LIKE '%" + tel + "%' ");
 		}
-		if(StringUtil.isNotEmpty(subName)) {
-			sql.append(" AND a.user_name LIKE '%"+ userName+"%' ");
+		if (StringUtil.isNotEmpty(subName)) {
+			sql.append(" AND a.user_name LIKE '%" + userName + "%' ");
 		}
-		if(StringUtil.isNotEmpty(subName)) {
-			sql.append(" AND b.sub_name LIKE '%"+subName+"%' ");
+		if (StringUtil.isNotEmpty(subName)) {
+			sql.append(" AND b.sub_name LIKE '%" + subName + "%' ");
 		}
 		sql.append(" ORDER BY a.create_time desc ");
 		return phoneMsgLogDao.queryForListBySql(sql.toString(), page);

+ 11 - 9
projects-service/src/main/java/com/rtrh/projects/modules/problem/service/impl/SubquestioninfoserviceImpl.java

@@ -647,15 +647,17 @@ public class SubquestioninfoserviceImpl implements Subquestioninfoservice {
 			sql.append(" AND ( " + sqlCheck + " )");
 		}
 		if (StringUtil.isNotEmpty(queryVO.getIndusKind())) {
-			sql.append(" AND b.indus_kind IN (");
-			String[] split = queryVO.getIndusKind().split(",");
-			for (int i = 0; i < split.length; i++) {
-				sql.append("'").append(split[i]).append("'");
-				if (i != (split.length - 1)) {
-					sql.append(",");
-				}
-			}
-			sql.append(")");
+			sql.append(" AND b.indus_kind like '"+queryVO.getIndusKind()+"%'");
+
+			// sql.append(" AND b.indus_kind IN (");
+			// String[] split = queryVO.getIndusKind().split(",");
+			// for (int i = 0; i < split.length; i++) {
+			// 	sql.append("'").append(split[i]).append("'");
+			// 	if (i != (split.length - 1)) {
+			// 		sql.append(",");
+			// 	}
+			// }
+			// sql.append(")");
 		}
 		if (StringUtil.isNotEmpty(queryVO.getPropKind())) {
 			sql.append(" AND b.prop_kind IN (");

+ 5 - 3
projects-service/src/main/java/com/rtrh/projects/modules/projects/dao/SubInfoDao.java

@@ -565,6 +565,8 @@ public class SubInfoDao extends EntityServiceImpl<SubInfo> {
 		return (List<Map<String, Object>>) this.queryForObjListBySql(sql.toString());
 	}
 
+
+
 	public Page pageTZ(Page page, LoginUserVO vo, SubInfoQueryTzVO queryVO) {
 		StringBuffer sql = new StringBuffer();
 		if(StringUtil.isEmpty(queryVO.getYear())) {
@@ -612,10 +614,10 @@ public class SubInfoDao extends EntityServiceImpl<SubInfo> {
 
 
 		//20230816  增加联系人,负责人信息。  用于导出。
-		sql.append(" select if(us.id is NULL,0,1) as usersub,sum(sa.amt) yearAmt,sum(src.amt) yearAmtSj,sum(src.amt_rt) yearAmtRt,a.id,a.status_fgw, a.date_fgw,a.indus_kind indusKind,a.name_lead,a.tel_lead,a.name_zrr,a.tel,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal, a.reason, a.unit_id as unitId, ");
-		sql.append(" a.reason_no_rk as reasonNoRk,a.reason_no_amt as reasonNoAmt,a.reason_no_kg as reasonNoKg,a.reason_q as reasonq,a.reason_jd as reasonJd, a.is_rk as isRk, a.kind_nature,a.subject_id, a.content,");
+		sql.append(" select if(us.id is NULL,0,1) as usersub,sum(sa.amt) yearAmt,sum(src.amt) yearAmtSj,sum(src.amt_rt) yearAmtRt,a.id,a.status_fgw, a.date_fgw,a.indus_kind indusKind,a.subject_id,a.name_lead,a.tel_lead,a.name_zrr,a.tel,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal, a.reason, a.unit_id as unitId, ");
+		sql.append(" a.reason_no_rk as reasonNoRk,a.reason_no_amt as reasonNoAmt,a.reason_no_kg as reasonNoKg,a.reason_q as reasonq,a.reason_jd as reasonJd, a.is_rk as isRk, a.kind_nature, a.content,");
 		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
-		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as mainName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh,a.status_sp statusSp");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as mainName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh,a.status_sp statusSp,a.status_tg statusTg ");
 		if(StringUtil.isNotEmpty(queryVO.getZjly())) {
 			sql.append(", g.amt amtSource, t.title amtSourceName ");
 

+ 4 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/enums/ProjectStatusEnum.java

@@ -9,7 +9,6 @@ public enum ProjectStatusEnum {
 	HZBA("4", "核准备案中"),//去除
 	JHBZ("5", "计划编制"),//去除
 */	DKG("2", "新建中"),
-
 	YKG("3", "在建中"),
 	STOP("8","暂时停工"),
 	//用于其他地方的使用
@@ -34,6 +33,10 @@ public enum ProjectStatusEnum {
 	}
 
 	public static ProjectStatusEnum getEnumByKey(String key) {
+		// 如果 key 是 "7",则将其重新赋值为 "3"
+		if ("7".equals(key)) {
+			key = "3";
+		}
 		for(ProjectStatusEnum sys : ProjectStatusEnum.values()) {
 			if(sys.key.equals(key)) {
 				return sys;

+ 13 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.java

@@ -89,5 +89,18 @@ public interface SubInfoMapper {
 
     Long queryExceedOutside();
 
+    List<WorkBenchVO> queryExceedCbToXj();
+
     List<WorkBenchVO> queryWarningStatistics();
+
+    List<WorkBenchVO> queryExceedXjToZj();
+
+    List<WorkBenchVO> queryExceedZjTotc();
+
+    List<WorkBenchVO> queryExceedTcToRg();
+
+    List<WorkBenchVO> preProcedureExceed();
+
+    List<WorkBenchVO> queryExceedMonthly(@Param("lastMonth") String lastMonth);
+
 }

+ 100 - 6
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.xml

@@ -262,9 +262,6 @@
             <if test="vo.subjectId!=null and vo.subjectId!=''">
                 and subject_id = #{vo.subjectId}
             </if>
-            <if test="vo.indusKind!=null and vo.indusKind!=''">
-                and indus_kind = #{vo.indusKind}
-            </if>
             <if test="vo.startAmt!=null and vo.startAmt!=''">
                 and amt_total >= #{vo.startAmt}
             </if>
@@ -278,7 +275,24 @@
                 and status = #{vo.status}
             </if>
             <if test="vo.abc!=null and vo.abc!=''">
-                and abc = #{vo.abc}
+                <choose>
+                    <when test='vo.abc.toString() =="UNKNOWN_CATEGORY"'>
+                        and abc is null
+                    </when>
+                    <otherwise>
+                        and abc = #{vo.abc}
+                    </otherwise>
+                </choose>
+            </if>
+            <if test="vo.indusKind!=null and vo.indusKind!=''">
+                <choose>
+                    <when test='vo.indusKind.toString() == "UNKNOWN_INDUS_KIND"'>
+                        AND ISNULL(indus_kind)
+                    </when>
+                    <otherwise>
+                        and indus_kind like CONCAT(#{vo.indusKind}, '%')
+                    </otherwise>
+                </choose>
             </if>
         </where>
     </select>
@@ -640,6 +654,7 @@
         WHERE rt_date > NOW()
         AND rt_date &lt; DATE_ADD(NOW(), INTERVAL 3 DAY)
         AND `status` = 9
+        AND is_rg = 0
         ) AS combined_counts;
     </select>
     <!-- 超期 -->
@@ -677,6 +692,7 @@
                  SELECT COUNT(*) AS counts
                  FROM sub_info
                  WHERE rt_date  &lt;  NOW()
+                   AND is_rg = 0
                    AND `status` = 9
              ) AS combined_counts;
     </select>
@@ -717,10 +733,11 @@
         FROM sub_info
         WHERE
             rt_date > NOW()
+        AND is_rg = 0
         AND `status` = 9
         ) AS combined_counts;
     </select>
-    <!-- 黄灯 -->
+    <!-- 黄灯超期3天内 -->
     <select id="queryExceedWithin" resultType="java.lang.Long">
         SELECT SUM(counts) AS total_count
         FROM (
@@ -761,10 +778,11 @@
                  WHERE
                        rt_date > DATE_SUB(NOW(), INTERVAL 3 DAY)
                    AND rt_date &lt; NOW()
+                   AND is_rg = 0
                    AND `status` = 9
              ) AS combined_counts;
     </select>
-    <!-- 红灯 -->
+    <!-- 红灯超期3天 -->
     <select id="queryExceedOutside" resultType="java.lang.Long">
         SELECT SUM(counts) AS total_count
         FROM (
@@ -799,9 +817,21 @@
                  SELECT COUNT(*) AS counts
                  FROM sub_info
                  WHERE rt_date &lt; DATE_SUB(NOW(), INTERVAL 3 DAY)
+                   AND is_rg = 0
                    AND `status` = 9
              ) AS combined_counts;
     </select>
+    <!-- 储备转新建超期统计 -->
+    <select id="queryExceedCbToXj" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
+         SELECT subject_id subjectId,
+                indus_kind indusKind,
+                amt_total amtTotal
+         FROM sub_info
+         WHERE cb_status = 3
+           AND qy_date IS NOT NULL
+           AND DATE_ADD(qy_date, INTERVAL cb_num DAY) &lt;= NOW()
+           AND `status` = 1
+    </select>
     <select id="queryWarningStatistics" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
         SELECT
             id,
@@ -816,4 +846,68 @@
         WHERE
             logic_delete_flag = 0
     </select>
+    <select id="queryExceedXjToZj" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
+        SELECT subject_id subjectId,
+               indus_kind indusKind,
+               amt_total amtTotal
+        FROM sub_info
+        WHERE
+          begin_date &lt;= NOW()
+          AND `status` = 2
+    </select>
+    <select id="queryExceedZjTotc" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
+        SELECT subject_id subjectId,
+               indus_kind indusKind,
+               amt_total amtTotal
+        FROM sub_info
+        WHERE
+            end_date &lt;= NOW()
+          AND `status` = 3
+    </select>
+    <select id="queryExceedTcToRg" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
+        SELECT subject_id subjectId,
+               indus_kind indusKind,
+               amt_total amtTotal
+        FROM sub_info
+        WHERE
+            rt_date &lt;= NOW()
+          AND is_rg = 0
+          AND `status` = 9
+    </select>
+    <select id="preProcedureExceed" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
+        SELECT
+            c.subject_id subjectId,
+            c.indus_kind indusKind,
+            c.amt_total amtTotal
+        FROM
+            sub_pre_new a
+            LEFT JOIN sub_info c ON a.sub_id = c.id
+        WHERE
+            c.logic_delete_flag = 0
+            AND a.logic_delete_flag = 0
+            AND a.`status` = 1
+            AND (
+            ( status_conf = '1' AND DATE_ADD( a.date_plan, INTERVAL a.num2 DAY ) &lt; NOW() )
+            OR ( status_conf = '2' AND DATE_ADD( a.date_plan, INTERVAL a.num2 DAY ) &lt; a.date_confirm )
+            )
+        GROUP BY
+            a.id
+    </select>
+    <select id="queryExceedMonthly" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
+        SELECT
+            a.subject_id subjectId,
+            a.indus_kind indusKind,
+            a.amt_total amtTotal
+        FROM
+            sub_info a
+                LEFT JOIN sub_rpt_cont src ON src.sub_id = a.id
+                AND src.kind = '1'
+                AND src.kj_month LIKE #{lastMonth}
+        WHERE
+            a.logic_delete_flag = 0
+          AND a.`status` = '3'
+          AND src.id IS NULL
+        GROUP BY
+            a.id
+    </select>
 </mapper>

+ 14 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubInfoService.java

@@ -419,4 +419,18 @@ public interface SubInfoService {
 	List<SubInfoFixZjDetail> exportFixZjDetailExcel(SubInfoQueryTzVO vo);
 
 	List<SubInfoFixTcDetail> exportFixTcDetailExcel(SubInfoQueryTzVO vo);
+
+	Map<String, Object> queryExceedCbToXj(LoginUserVO loginUser, PreWarnDataQueryVO queryVO);
+
+	Map<String, Object> queryExceedXjToZj(LoginUserVO loginUser, PreWarnDataQueryVO queryVO);
+
+	Map<String, Object> queryExceedZjTotc(LoginUserVO loginUser, PreWarnDataQueryVO queryVO);
+
+	Map<String, Object> queryExceedTcToRg(LoginUserVO loginUser, PreWarnDataQueryVO queryVO);
+
+	Map<String, Object> queryExceedNum();
+
+	Map<String, Object> preProcedureExceed(LoginUserVO loginUser, PreWarnDataQueryVO queryVO);
+
+	Map<String, Object> queryExceedMonthly(LoginUserVO loginUser, PreWarnDataQueryVO queryVO);
 }

+ 22 - 11
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoQueryServiceImpl.java

@@ -283,6 +283,15 @@ public class SubInfoQueryServiceImpl implements SubInfoQueryService {
 
     @Override
     public StatisticsVO queryStatistics(SubInfoQueryTzVO queryVO, LoginUserVO loginUser) {
+        if (StringUtils.isNotBlank(queryVO.getSubjects())){
+            queryVO.setSubjectId(queryVO.getSubjects());
+        }
+        if (StringUtils.isNotBlank(queryVO.getAbcs())){
+            queryVO.setAbc(queryVO.getAbcs());
+        }
+        if (StringUtils.isNotBlank(queryVO.getIndusKinds())){
+            queryVO.setIndusKind(queryVO.getIndusKinds());
+        }
         List<SubInfoGxj> list = subInfoMapper.queryStatistics(queryVO);
         long num = 0;
         if (StringUtils.isNotBlank(queryVO.getStatus())) {
@@ -325,6 +334,7 @@ public class SubInfoQueryServiceImpl implements SubInfoQueryService {
                 .setANum(abc.getOrDefault("A", 0L))
                 .setBNum(abc.getOrDefault("B", 0L))
                 .setCNum(abc.getOrDefault("C", 0L) + abc.getOrDefault("c", 0L))
+                .setDNum(abc.getOrDefault("D", 0L))
                 .setNNum(abc.getOrDefault(NullValueEnum.UNKNOWN_CATEGORY.getCode(), 0L))
                 .setJsddData(jsddList)
                 .setHyflData(hyflList);
@@ -336,21 +346,22 @@ public class SubInfoQueryServiceImpl implements SubInfoQueryService {
         Long zjNum1 = collect1.getOrDefault(SubInfoStatusEnum.ZJ.getCode(), 0L);
         Long tcNum1 = collect1.getOrDefault(SubInfoStatusEnum.TC.getCode(), 0L);
         Long xjNum1 = collect1.getOrDefault(SubInfoStatusEnum.XJ.getCode(), 0L);
-        // 开工数、开复工率、投产率
-        Long kgNum = zjNum1 + tcNum1;
+        // 开工数、开复工率、投产率 -- 已入规、未入规、入规率
+        long kgNum = zjNum1 + tcNum1;
         vo.setYkgNum(kgNum);
-        BigDecimal total = BigDecimal.valueOf(zjNum1 + tcNum1 + xjNum1);
-        BigDecimal kfgRate = BigDecimal.ZERO;
-        if (total.compareTo(BigDecimal.ZERO) != 0) {
-            kfgRate = BigDecimal.valueOf(zjNum1 + tcNum1).multiply(BigDecimal.valueOf(100)).divide(total, 2, RoundingMode.HALF_UP);
-        }
-        vo.setKfgRate(kfgRate);
-        vo.setTcRate(BigDecimal.valueOf(tcNum1).divide(BigDecimal.valueOf(zjNum1 + tcNum1 + xjNum1), 2, RoundingMode.HALF_UP));
-        // 已入规、未入规、入规率
         long rgNum = listTotal.stream().filter(SubInfoGxj::getBoolRg).count();
         vo.setYrgNum(rgNum);
         vo.setWrgNum(listTotal.size() - rgNum);
-        vo.setRgRate(listTotal.size() == 0 ? new BigDecimal("0") : BigDecimal.valueOf(rgNum).divide(BigDecimal.valueOf(xjNum1 + zjNum1 + tcNum1), 2, RoundingMode.HALF_UP));
+        BigDecimal total = BigDecimal.valueOf(zjNum1 + tcNum1 + xjNum1);
+        if (total.compareTo(BigDecimal.ZERO) != 0) {
+            vo.setKfgRate(BigDecimal.valueOf(kgNum).multiply(BigDecimal.valueOf(100)).divide(total, 2, RoundingMode.HALF_UP));
+            vo.setTcRate(BigDecimal.valueOf(tcNum1).multiply(BigDecimal.valueOf(100)).divide(total, 2, RoundingMode.HALF_UP));
+            vo.setRgRate(BigDecimal.valueOf(rgNum).multiply(BigDecimal.valueOf(100)).divide(total, 2, RoundingMode.HALF_UP));
+        }else {
+            vo.setKfgRate(BigDecimal.ZERO);
+            vo.setTcRate(BigDecimal.ZERO);
+            vo.setRgRate(BigDecimal.ZERO);
+        }
         return vo;
     }
 

+ 184 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java

@@ -50,7 +50,6 @@ import com.rtrh.projects.modules.problem.po.SubquestionConsum;
 import com.rtrh.projects.modules.problem.po.SubquestionInfo;
 import com.rtrh.projects.modules.problem.service.Subquestioninfoservice;
 import com.rtrh.projects.modules.projects.enums.ApprovalStatusEnum;
-import com.rtrh.projects.modules.projects.enums.Is3KgStatusEnum;
 import com.rtrh.projects.modules.projects.enums.ProjectStatusEnum;
 import com.rtrh.projects.modules.projects.enums.RptContKindEnum;
 import com.rtrh.projects.modules.projects.enums.StatusEnum;
@@ -5036,6 +5035,190 @@ public class SubInfoServiceImpl implements SubInfoService {
         return dataList;
     }
 
+    /**
+     * 储备转新建超期
+     */
+    @Override
+    public Map<String, Object> queryExceedCbToXj(LoginUserVO loginUser, PreWarnDataQueryVO queryVO) {
+        List<WorkBenchVO> list = subInfoMapper.queryExceedCbToXj();
+        return getStringObjectMap(list);
+    }
+
+    /**
+     * 新建转在建超期
+     */
+    @Override
+    public Map<String, Object> queryExceedXjToZj(LoginUserVO loginUser, PreWarnDataQueryVO queryVO) {
+        List<WorkBenchVO> list = subInfoMapper.queryExceedXjToZj();
+        return getStringObjectMap(list);
+    }
+
+    @Override
+    public Map<String, Object> queryExceedZjTotc(LoginUserVO loginUser, PreWarnDataQueryVO queryVO) {
+        List<WorkBenchVO> list = subInfoMapper.queryExceedZjTotc();
+        return getStringObjectMap(list);
+    }
+
+    @Override
+    public Map<String, Object> queryExceedTcToRg(LoginUserVO loginUser, PreWarnDataQueryVO queryVO) {
+        List<WorkBenchVO> list = subInfoMapper.queryExceedTcToRg();
+        return getStringObjectMap(list);
+    }
+
+    @Override
+    public Map<String, Object> queryExceedNum() {
+        Map<String, Object> map = new HashMap<>();
+        map.put("cbToXjNum",subInfoMapper.queryExceedCbToXj().size());
+        map.put("preNum",subInfoMapper.preProcedureExceed().size());
+        map.put("xjToZjNum",subInfoMapper.queryExceedXjToZj().size());
+        map.put("zjToTcNum",subInfoMapper.queryExceedZjTotc().size());
+        map.put("tcToRgNum",subInfoMapper.queryExceedTcToRg().size());
+        // 上个月
+        String lastMonth = DateUtil.format(DateUtil.offsetMonth(DateUtil.date(), -1), "yyyyMM");
+        int dayOfMonth = DateUtil.dayOfMonth(DateUtil.date());
+        map.put("monthlyNum", dayOfMonth <= 5 ? 0 : subInfoMapper.queryExceedMonthly(lastMonth).size());
+        return map;
+    }
+
+    @Override
+    public Map<String, Object> preProcedureExceed(LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        List<WorkBenchVO> list = subInfoMapper.preProcedureExceed();
+        return getStringObjectMap(list);
+        //  /api/problemInfo/preData/getdata
+    }
+
+    /**
+     * 月报超期
+     */
+    @Override
+    public Map<String, Object> queryExceedMonthly(LoginUserVO loginUser, PreWarnDataQueryVO queryVO) {
+        String lastMonth = DateUtil.format(DateUtil.offsetMonth(DateUtil.date(), -1), "yyyyMM");
+        int dayOfMonth = DateUtil.dayOfMonth(new Date());
+        List<WorkBenchVO> list;
+        if (dayOfMonth < 5) {
+            return new HashMap<String, Object>(){{
+                put("listSubject", new ArrayList<>());
+                put("listScale", new ArrayList<>());
+                put("listIndusKind", new ArrayList<>());
+            }};
+        }else {
+            list = subInfoMapper.queryExceedMonthly(lastMonth);
+            return getStringObjectMap(list);
+        }
+    }
+
+    private Map<String, Object> getStringObjectMap(List<WorkBenchVO> list) {
+        Map<String, Object> resultMap = new HashMap<>();
+        if (CollectionUtil.isNotEmpty(list)){
+            List<TSystable> jsddDict = tSysTableService.getByKind(SysTableKind.JSDD);
+            Map<String, String> jsddMap = jsddDict.stream().collect(Collectors.toMap(TSystable::getCode, TSystable::getTitle));
+            Map<String, String> hyflMap = subInduService.queryParentAll().stream().collect(Collectors.toMap(SubIndu::getCode, SubIndu::getTitle));
+            // 1.按属地分-------------
+            List<String> subjectCodes = new ArrayList<>();
+            List<Map<String, Object>> subjectList = list.stream()
+                    .collect(Collectors.groupingBy(WorkBenchVO::getSubjectId))
+                    .entrySet().stream()
+                    .map(e -> {
+                        subjectCodes.add(e.getKey());
+                        return new HashMap<String, Object>() {{
+                            put("code",e.getKey());
+                            put("title", jsddMap.getOrDefault(e.getKey(), e.getKey()));
+                            put("number", e.getValue().size());
+                        }};
+                    }).collect(Collectors.toList());
+            jsddMap.forEach((k, v) -> {
+                if (!subjectCodes.contains(k)){
+                    subjectList.add(new HashMap<String, Object>() {{
+                        put("code", k);
+                        put("title", v);
+                        put("number", 0);
+                    }});
+                }
+            });
+            resultMap.put("listSubject", subjectList);
+            // 2.按金额分----------- 定义分组边界
+            Map<String, BigDecimal> groupBoundaries = new LinkedHashMap<>();
+            groupBoundaries.put("10亿元以下", new BigDecimal("100000"));
+            groupBoundaries.put("10-50亿元", new BigDecimal("500000"));
+            groupBoundaries.put("50-100亿元", new BigDecimal("1000000"));
+            groupBoundaries.put("100亿元以上", new BigDecimal("100000000000"));
+
+            List<Map<String, Object>> defaultScaleList = groupBoundaries.keySet().stream()
+                    .map(entry -> new HashMap<String, Object>() {{
+                        put("code", entry);
+                        put("title", entry);
+                        put("number", 0);
+                    }})
+                    .collect(Collectors.toList());
+
+            List<Map<String, Object>> scaleList = list.stream()
+                    .collect(Collectors.groupingBy(transaction -> {
+                        for (Map.Entry<String, BigDecimal> entry : groupBoundaries.entrySet()) {
+                            if (transaction.getAmtTotal()!=null && transaction.getAmtTotal().compareTo(entry.getValue()) < 0) {
+                                return entry.getKey();
+                            }
+                        }
+                        return "未知分组"; // 超过最高范围的默认分组
+                    }))
+                    .entrySet().stream()
+                    .map(entry -> {
+                        return new HashMap<String, Object>() {{
+                            put("code", entry.getKey());
+                            put("title", entry.getKey());
+                            put("number", entry.getValue().size());
+                        }};
+                    })
+                    .collect(Collectors.toList());
+
+            for (Map<String, Object> defaultScale : defaultScaleList) {
+                String code = (String) defaultScale.get("code");
+                Optional<Map<String, Object>> found = scaleList.stream()
+                        .filter(scale -> scale.get("code").equals(code))
+                        .findFirst();
+
+                if (found.isPresent()) {
+                    // 如果找到了对应的组,使用实际的数量
+                    Map<String, Object> actualScale = found.get();
+                    defaultScale.put("number", actualScale.get("number"));
+                }
+            }
+            resultMap.put("listScale", defaultScaleList);
+            // 3.按行业分---------------
+            List<String> indusCodes = new ArrayList<>();
+            List<HashMap<String, Object>> indusKindList = list.stream()
+                    .collect(Collectors.groupingBy(transaction -> {
+                        String code = transaction.getIndusKind();
+                        // 确保code不为空且长度至少为2
+                        if (code == null || code.length() < 2) {
+                            return "未知行业";  // 默认未知行业
+                        }
+                        return code.substring(0, 2);
+                    }))
+                    .entrySet().stream()
+                    .map(entry ->{
+                                indusCodes.add(entry.getKey());
+                                return new HashMap<String, Object>() {{
+                                    put("code", entry.getKey());
+                                    put("title", hyflMap.getOrDefault(entry.getKey(), entry.getKey()));
+                                    put("number", entry.getValue().size());
+                                }};
+                            }
+                    )
+                    .collect(Collectors.toList());
+            hyflMap.forEach((k, v) -> {
+                if (!indusCodes.contains(k)){
+                    indusKindList.add(new HashMap<String, Object>() {{
+                        put("code", k);
+                        put("title", v);
+                        put("number", 0);
+                    }});
+                }
+            });
+            resultMap.put("listIndusKind", indusKindList);
+        }
+        return resultMap;
+    }
+
     @Override
     public List<SubInfoTotalExcel> exportTotalExcelByStatus(SubInfoQueryTzVO vo) {
         return subInfoMapper.exportTotalExcelByStatus(vo.getStatus());

+ 1 - 15
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubPreNewServiceImpl.java

@@ -1106,6 +1106,7 @@ public class SubPreNewServiceImpl implements SubPreNewService {
         sql.append(" select  t.subject_id,count(*) number, t.subjectName title,t.subId    ");
         sql.append(" from (    ");
 
+
         sql.append(" SELECT ts.title subjectName,c.subject_id,c.id subId,c.sub_name subName, d.title unitName,a.unit_desc  unitDesc,a.id, ");
         sql.append(" IFNULL(jd.name_lead,ju.name_zrr) nameLead,IFNULL(jd.tel,ju.tel) tel , DATE_FORMAT(a.date_plan,'%Y-%m-%d') as datePlan,a.num1,a.num2,a.num3,a.`status`,a.status_conf statusConf, ");
         sql.append(" b.title preName ");
@@ -1116,18 +1117,12 @@ public class SubPreNewServiceImpl implements SubPreNewService {
         sql.append(" LEFT JOIN j_unit  ju ON ju.id=a.sub_unit_id ");
         sql.append(" LEFT JOIN sub_manage e ON c.id = e.sub_id AND e.logic_delete_flag=0 ");
         sql.append(" LEFT JOIN sub_verify f ON f.sub_id = c.id AND f.logic_delete_flag = 0 ");
-
         sql.append(" LEFT JOIN t_systable  ts ON ts.code=c.subject_id  and ts.kind = 'JSDD'  ");
-
-
         sql.append(" WHERE c.logic_delete_flag = 0 AND a.logic_delete_flag = 0  ");
         sql.append(" AND a.`status` = 1  ");
-
-
         if (Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
             // 项目单位
             sql.append(" AND c.unit_id = '" + vo.getUnitId() + "' ");
-
             if (Boolean.TRUE.equals(vo.getIsUnit())) {
                 // 单位用户,看单位全部的
             } else {
@@ -1147,26 +1142,17 @@ public class SubPreNewServiceImpl implements SubPreNewService {
                 // 看所有的
             }
         }
-
-
         //判断月份
-
         if (StringUtil.isNotEmpty(queryVO.getSubjectId())) {
             sql.append(" and c.subject_id =  '" + queryVO.getSubjectId() + "' ");
         }
-
-
         //1、办理中   办理超期
         sql.append(" AND  ( ( status_conf = '1'  AND DATE_ADD(a.date_plan,INTERVAL a.num2 DAY) < '" + DateUtil.formatDate(calendar.getTime()) + "' ) ");
-
         //2、办理完成   办理超期
         sql.append(" OR ( status_conf = '2' AND DATE_ADD(a.date_plan,INTERVAL a.num2 DAY) < a.date_confirm ) ) ");
-
         sql.append(" group by a.id ");
 
         sql.append(" ) t  group by t.subject_id   ");
-
-
         sql.append(" ) h  ON s.code=h.subject_id ");
         sql.append(" WHERE s.logic_delete_flag=0 AND s.kind='JSDD'  ");
         sql.append(" ORDER BY number desc  ");

+ 1 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubRptContServiceImpl.java

@@ -870,7 +870,7 @@ public class SubRptContServiceImpl implements SubRptContService {
 		sql.append(" LEFT JOIN sub_manage e ON a.id = e.sub_id AND e.logic_delete_flag=0 ");
 		sql.append(" LEFT JOIN sub_verify f ON f.sub_id = a.id AND f.logic_delete_flag = 0 ");
 		sql.append(" WHERE  ");
-		sql.append(" a.logic_delete_flag=0  AND a.`status`='7' ");
+		sql.append(" a.logic_delete_flag=0  AND a.`status`='3' ");
 
 
 		if (Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {

+ 4 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/StatisticsVO.java

@@ -33,6 +33,10 @@ public class StatisticsVO {
      * C类数量
      */
     private Long cNum;
+    /**
+     * D类数量
+     */
+    private Long dNum;
     /**
      * abc 类为空
      */

+ 9 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/WorkBenchVO.java

@@ -5,6 +5,7 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.experimental.Accessors;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 @Setter
@@ -13,8 +14,16 @@ import java.util.Date;
 public class WorkBenchVO {
     private String id;
 
+    // 项目状态
     private String status;
+    // 储备项目状态
     private String cbStatus;
+    // 区域
+    private String subjectId;
+    // 行业
+    private String indusKind;
+    // 金额
+    private BigDecimal amtTotal;
 
     // 签约日期
     @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")

+ 5 - 5
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoTcVO.java

@@ -20,15 +20,15 @@ public class SubInfoTcVO {
     @Excel(name = "项目基本情况", orderNum = "3", width = 70.0)
     private String content;
 
-    @Excel(name = "计划总投资(亿元)", orderNum = "4", width = 20.0)
-    private BigDecimal amtTotal;
+    // @Excel(name = "计划总投资(亿元)", orderNum = "4", width = 20.0)
+    // private BigDecimal amtTotal;
 
-    @Excel(name = "升规入统时间",format = "yyyy年MM月",orderNum = "5",width = 15.0)
+    @Excel(name = "升规入统时间",format = "yyyy年MM月",orderNum = "4",width = 15.0)
     private Date rtDate;
 
-    @Excel(name = "进展情况", orderNum = "6", width = 30.0)
+    @Excel(name = "进展情况", orderNum = "5", width = 30.0)
     private String progress;
 
-    @Excel(name = "备注", orderNum = "7", width = 30.0)
+    @Excel(name = "备注", orderNum = "6", width = 30.0)
     private String remark;
 }

+ 1 - 1
projects/src/main/java/com/rtrh/projects/web/controller/passport/api/SwitchApiController.java

@@ -41,7 +41,7 @@ public class SwitchApiController extends BaseController {
         String url = resourceBundle.getString("app.fgw.url");
         // 拼接 B 系统的 URL
         // 获取B系统的登录token
-        String targetUrl = url+"/projects/outApi/auth/fgwLogin?token=" + token;
+        String targetUrl = url+"/outApi/auth/fgwLogin?token=" + token;
 
         // 创建一个HttpClient实例
         // 创建一个HttpClient实例

+ 7 - 2
projects/src/main/java/com/rtrh/projects/web/controller/problemreport/ProblemtrackController.java

@@ -15,6 +15,7 @@ import com.rtrh.projects.modules.problem.service.Subquestioninfoservice;
 import com.rtrh.projects.modules.projects.enums.ProjectStatusEnum;
 import com.rtrh.projects.modules.projects.enums.SubqestionStatus;
 import com.rtrh.projects.modules.projects.vo.SubInfoQueryTzVO;
+import com.rtrh.projects.modules.system.service.ISubInduService;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -50,6 +51,8 @@ public class ProblemtrackController extends BaseController {
 
     @Autowired
     private Subquestioninfoservice subquestioninfoservice;
+    @Autowired
+    private ISubInduService subInduService;
 
     /**
      * 问题填报
@@ -58,9 +61,11 @@ public class ProblemtrackController extends BaseController {
      */
     @GetMapping("index")
     public ModelAndView report(ModelMap model) {
-        model.put("HYFL", sysTableService.getByKind(SysTableKind.HYFL));
+        // model.put("HYFL", sysTableService.getByKind(SysTableKind.HYFL));
+        model.put("HYFL", subInduService.queryTreeALl());
         model.put("XMLX", sysTableService.getByKind(SysTableKind.XMLX));
-		model.put("JSXZ", sysTableService.getByKind(SysTableKind.JSXZ));
+		// model.put("JSXZ", sysTableService.getByKind(SysTableKind.JSXZ));
+		model.put("JSDD", sysTableService.getByKind(SysTableKind.JSDD));
        /* int year = DateUtil.getYear();
         model.put("beginDate", year + "-01-01");
         model.put("endDate", year + "-12-31");*/

+ 23 - 22
projects/src/main/java/com/rtrh/projects/web/controller/problemreport/api/ProblemInfoApiController.java

@@ -58,28 +58,29 @@ public class ProblemInfoApiController extends BaseController {
     public Message queryWarnData(@RequestBody Page page, @RequestBody PreWarnDataQueryVO queryVO) {
         Message message = new Message();
         try {
-            Page preData = subPreNewService.pageDueTime(new Page(), getCurUser().getLoginUser(), queryVO);
-            Page monthData = subRptContService.pageMonthWarnData(new Page(), getCurUser().getLoginUser(), queryVO);
-            queryVO.setOpenAndEndStatus("1");
-            Page openData = subInfoService.pageWarnData(new Page(), getCurUser().getLoginUser(), queryVO);
-            queryVO.setOpenAndEndStatus("2");
-            Page endData = subInfoService.pageWarnData(new Page(), getCurUser().getLoginUser(), queryVO);
-
-            SubInfoQueryTzVO queryTzVO=new SubInfoQueryTzVO();
-            queryTzVO.setQueryType("3");
-            queryTzVO.setOffsetMax(new BigDecimal(-10));
-            Page pldData = subInfoQueryService.pageCb(new Page(), getCurUser().getLoginUser(), queryTzVO);
-
-            Page problemData = subquestioninfoservice.pageQueryQuestionList(new Page(), getCurUser().getLoginUser(), new QuestionQueryVO());
-
-            Map<String,Object> map=new HashMap<>();
-
-            map.put("preWarnNum",preData.getTotalCount());
-            map.put("monthWarnNum",monthData.getTotalCount());
-            map.put("openWarnNum",openData.getTotalCount());
-            map.put("endWarnNum",endData.getTotalCount());
-            map.put("pldWarnNum",pldData.getTotalCount());
-            map.put("problemWarnNum",problemData.getTotalCount());
+            Map<String, Object> map = subInfoService.queryExceedNum();
+            // Page preData = subPreNewService.pageDueTime(new Page(), getCurUser().getLoginUser(), queryVO);
+            // Page monthData = subRptContService.pageMonthWarnData(new Page(), getCurUser().getLoginUser(), queryVO);
+            // queryVO.setOpenAndEndStatus("1");
+            // Page openData = subInfoService.pageWarnData(new Page(), getCurUser().getLoginUser(), queryVO);
+            // queryVO.setOpenAndEndStatus("2");
+            // Page endData = subInfoService.pageWarnData(new Page(), getCurUser().getLoginUser(), queryVO);
+            //
+            // SubInfoQueryTzVO queryTzVO=new SubInfoQueryTzVO();
+            // queryTzVO.setQueryType("3");
+            // queryTzVO.setOffsetMax(new BigDecimal(-10));
+            // Page pldData = subInfoQueryService.pageCb(new Page(), getCurUser().getLoginUser(), queryTzVO);
+            //
+            // Page problemData = subquestioninfoservice.pageQueryQuestionList(new Page(), getCurUser().getLoginUser(), new QuestionQueryVO());
+            //
+            // Map<String,Object> map=new HashMap<>();
+            //
+            // map.put("preWarnNum",preData.getTotalCount());
+            // map.put("monthWarnNum",monthData.getTotalCount());
+            // map.put("openWarnNum",openData.getTotalCount());
+            // map.put("endWarnNum",endData.getTotalCount());
+            // map.put("pldWarnNum",pldData.getTotalCount());
+            // map.put("problemWarnNum",problemData.getTotalCount());
 
             message.setData(map);
         } catch (Exception e) {

+ 99 - 3
projects/src/main/java/com/rtrh/projects/web/controller/problemreport/api/ProblemPreInfoApiController.java

@@ -12,6 +12,7 @@ import com.rtrh.projects.modules.projects.service.SubPreNewService;
 import com.rtrh.projects.modules.projects.service.SubRptContService;
 import com.rtrh.projects.modules.projects.vo.PreWarnDataQueryVO;
 import com.rtrh.projects.modules.projects.vo.SubInfoQueryTzVO;
+import com.rtrh.projects.modules.projects.vo.WorkBenchVO;
 import com.rtrh.projects.web.controller.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -45,17 +46,112 @@ public class ProblemPreInfoApiController extends BaseController {
     @Autowired
     private Subquestioninfoservice subquestioninfoservice;
 
+    /**
+     * 储备转新建超期
+     */
+    @PostMapping(value = "/cbToXjExceed")
+    public Message cbToXjExceed(@RequestBody PreWarnDataQueryVO queryVO) {
+        Message message = new Message();
+        try {
+            Map<String, Object> map = subInfoService.queryExceedCbToXj(getCurUser().getLoginUser(), queryVO);
+            message.setData(map);
+        } catch (Exception e) {
+            logger.error("",e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+    /**
+     * 前期手续超期
+     */
+    @PostMapping(value = "/preProcedureExceed")
+    public Message preProcedureExceed(@RequestBody PreWarnDataQueryVO queryVO) {
+        Message message = new Message();
+        try {
+            Map<String, Object> map = subInfoService.preProcedureExceed(getCurUser().getLoginUser(), queryVO);
+            message.setData(map);
+        } catch (Exception e) {
+            logger.error("",e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+    /**
+     * 新建转在建超期
+     */
+    @PostMapping(value = "/xjToZjExceed")
+    public Message xjToZjOverTime(@RequestBody PreWarnDataQueryVO queryVO){
+        Message message = new Message();
+        try {
+            Map<String, Object> map = subInfoService.queryExceedXjToZj(getCurUser().getLoginUser(), queryVO);
+            message.setData(map);
+        } catch (Exception e) {
+            logger.error("",e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+    /**
+     * 在建转投产超期
+     */
+    @PostMapping(value = "/zjTotcExceed")
+    public Message zjTotcExceed(@RequestBody PreWarnDataQueryVO queryVO){
+        Message message = new Message();
+        try {
+            Map<String, Object> map = subInfoService.queryExceedZjTotc(getCurUser().getLoginUser(), queryVO);
+            message.setData(map);
+        } catch (Exception e) {
+            logger.error("",e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+    /**
+     * 投产转入规超期
+     */
+    @PostMapping(value = "/tcToRgExceed")
+    public Message tcToRgExceed(@RequestBody PreWarnDataQueryVO queryVO){
+        Message message = new Message();
+        try {
+            Map<String, Object> map = subInfoService.queryExceedTcToRg(getCurUser().getLoginUser(), queryVO);
+            message.setData(map);
+        } catch (Exception e) {
+            logger.error("",e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+    /**
+     * 月报超期
+     */
+    @PostMapping(value = "/monthlyExceed")
+    public Message monthlyExceed(@RequestBody PreWarnDataQueryVO queryVO){
+        Message message = new Message();
+        try {
+            Map<String, Object> map = subInfoService.queryExceedMonthly(getCurUser().getLoginUser(), queryVO);
+            message.setData(map);
+        } catch (Exception e) {
+            logger.error("",e);
+            message.add("获取失败");
+        }
+        return message;
+    }
 
     /**
      * 查询项目前期预期信息
-     * @param page
-     * @return
      */
     @PostMapping(value = "/getData")
     public Message preDataBySubject(@RequestBody PreWarnDataQueryVO queryVO) {
         Message message = new Message();
         try {
-           queryVO.setCheckDepart("1");
+
+
+            queryVO.setCheckDepart("1");
             List<Map<String,Object>> listDepart = subPreNewService.dueDataByDepart(getCurUser().getLoginUser(), queryVO);
             queryVO.setSubjectId("");
 

+ 2 - 2
projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoController.java

@@ -1344,8 +1344,8 @@ public class SubInfoController extends BaseController {
 
         //总完成投资
         BigDecimal allEndAmt = BigDecimal.ZERO;
-//        BigDecimal totalAmt = (BigDecimal) (subInfo.get("amt_total"));    这个原始用法出现问题,类型错误报错
-        BigDecimal totalAmt = new BigDecimal(((Float) subInfo.get("amt_total")).toString());
+        BigDecimal totalAmt = (BigDecimal) (subInfo.get("amt_total"));    //这个原始用法出现问题,类型错误报错
+//        BigDecimal totalAmt = new BigDecimal(((Float) subInfo.get("amt_total")).toString());
         List<RptCont> allRpt = subRptContService.getListBySub(subId, null, RptContKindEnum.MONTH);
         if (CollectionUtil.isNotEmpty(allRpt)) {
             double sum = allRpt.stream().mapToDouble(new ToDoubleFunction<RptCont>() {

+ 3 - 2
projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoExportController.java

@@ -917,8 +917,8 @@ public class SubInfoExportController extends BaseController {
                     SubInfoGxj subInfoGxj = value.get(i);
                     SubInfoTcVO vo = new SubInfoTcVO();
                     BeanUtils.copyProperties(subInfoGxj,vo);
-                    BigDecimal divide = subInfoGxj.getAmtTotal() != null ? subInfoGxj.getAmtTotal().divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP) : BigDecimal.ZERO;
-                    vo.setAmtTotal(divide);
+                    // BigDecimal divide = subInfoGxj.getAmtTotal() != null ? subInfoGxj.getAmtTotal().divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP) : BigDecimal.ZERO;
+                    // vo.setAmtTotal(divide);
                     vo.setIndex(i + 1 + "");
                     hyList.add(vo);
                 }
@@ -965,6 +965,7 @@ public class SubInfoExportController extends BaseController {
             }
             ExportParams exportParams = new ExportParams("“四个一批”工业项目表(项目总库)", "项目总库", ExcelType.XSSF);
             exportParams.setStyle(ExcelStyleUtil.class);
+            // exportParams.setHeight((short)-1);
             workbook = ExcelExportUtil.exportExcel(exportParams, SubInfoZkVO.class, exportList);
             // workbook = ExcelExportUtil.exportBigExcel(exportParams, SubInfoZkVO.class, new IExcelExportServer() {
             //     /**

+ 1 - 1
projects/src/main/resources/config.properties

@@ -1,4 +1,4 @@
 flow_vedio_path=/home/data/file/flew_hami.mp4
 flow_img_path=/home/data/file/flow.svg
 
-app.fgw.url=http://localhost:8089
+app.fgw.url=http://localhost:8089/projects

+ 163 - 181
projects/src/main/webapp/vmodules/annualPlan/list.jsp

@@ -29,11 +29,11 @@
 
             <div class="layui-collapse">
                 <div class="layui-colla-item">
-<%--                    <h2 class="layui-colla-title">筛选</h2>--%>
+                    <%--                    <h2 class="layui-colla-title">筛选</h2>--%>
                     <div class="layui-colla-content layui-show">
                         <form class="layui-form" lay-filter="searchForm">
-<%--                            <input name="neTemp" type="hidden" value="${neTemp }"/>--%>
-<%--                            <input name="isZj" type="hidden" value="${isZj }"/>--%>
+                            <%--                            <input name="neTemp" type="hidden" value="${neTemp }"/>--%>
+                            <%--                            <input name="isZj" type="hidden" value="${isZj }"/>--%>
                             <div class="layui-row">
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                     <div class="layui-form-item">
@@ -53,22 +53,25 @@
                                 </div>
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                     <div class="layui-form-item">
-                                        <label class="layui-form-label">建设性质</label>
+                                        <label class="layui-form-label ">项目属地</label>
                                         <div class="layui-input-block">
-                                            <select name="xmxz">
+                                            <select name="jsdd">
                                                 <option value="">请选择</option>
-                                                <c:forEach items="${JSXZ}" var="js">
-                                                    <option value="${js.code }">${js.title }</option>
+                                                <c:forEach items="${JSDD }" var="hy">
+                                                    <c:if test="${subjectId == hy.code}">
+                                                        <option value="${hy.code }" selected="selected">${hy.title }</option>
+                                                    </c:if>
+                                                    <c:if test="${indusKind != hy.title}">
+                                                        <option value="${hy.code }">${hy.title }</option>
+                                                    </c:if>
                                                 </c:forEach>
                                             </select>
                                         </div>
                                     </div>
                                 </div>
-                            </div>
-                            <div class="layui-row">
-                             	<div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                             		<div class="layui-form-item">
-                                        <label class="layui-form-label ">所属行业</label>
+                                <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
+                                    <div class="layui-form-item">
+                                        <label class="layui-form-label ">行业类别</label>
                                         <div class="layui-input-block">
                                             <select name="hyfl" lay-search="">
                                                 <option value="">请选择</option>
@@ -84,24 +87,17 @@
                                         </div>
                                     </div>
                                 </div>
+                            </div>
+                            <div class="layui-row">
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                     <div class="layui-form-item">
-                                        <label class="layui-form-label ">建设地点</label>
-                                        <div class="layui-input-block">
-                                            <select name="jsdd">
-                                                <option value="">请选择</option>
-                                                <c:forEach items="${JSDD }" var="hy">
-                                                    <c:if test="${subjectId == hy.code}">
-                                                        <option value="${hy.code }" selected="selected">${hy.title }</option>
-                                                    </c:if>
-                                                    <c:if test="${indusKind != hy.title}">
-                                                        <option value="${hy.code }">${hy.title }</option>
-                                                    </c:if>
-                                                </c:forEach>
-                                            </select>
+                                        <label class="layui-form-label">年度</label>
+                                        <div class="layui-input-block time_box">
+                                            <input type="text" id="year" name="year" class="layui-input">
                                         </div>
                                     </div>
                                 </div>
+
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                     <div class="layui-form-item">
                                         <label class="layui-form-label">项目状态</label>
@@ -115,88 +111,45 @@
                                     </div>
                                 </div>
                             </div>
+
                             <div class="layui-row">
-                              <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                    <div class="layui-form-item">
-                                        <label class="layui-form-label">是否锁定</label>
-                                        <div class="layui-input-block">
-                                            <select name="isLock">
-                                                <option value="">所有</option>
-                                                <option value="1">锁定</option>
-                                                <option value="0">正常</option>
-                                            </select>
-                                        </div>
-                                    </div>
-                                </div>
-                              <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                    <div class="layui-form-item">
-                                        <label class="layui-form-label">金额范围(万元)</label>
-                                        <div class="layui-input-block">
-                                            <input name="minMoney" class="layui-input" style="display: inline;width: 92px" value="${minMoney }">
-                                            <span>--</span>
-                                            <input name="maxMoney" class="layui-input" style="display: inline;width: 92px" value="${maxMoney }">
-                                        </div>
-                                    </div>
-                                </div>
-                              <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                    <div class="layui-form-item">
-                                        <label class="layui-form-label">项目单位名称</label>
-                                        <div class="layui-input-block">
-                                            <input name="unitName" class="layui-input" style="width:90%" value="${unitName }">
-                                        </div>
-                                    </div>
-                                </div>
-                            </div>
 
-                              <div class="layui-row">
-                               <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                    <div class="layui-form-item">
-                                        <label class="layui-form-label">年份</label>
-                                        <div class="layui-input-block time_box">
-                                            <input type="text" id="year" name="year" class="layui-input">
-                                        </div>
-                                    </div>
-                                </div>
 
                                 <div>
-                                 <button type="button" class="layui-btn layui-btn-normal" @click="search">查询</button>
-                                 <button type="button" class="layui-btn layui-btn-export" @click="exportExcel">导出</button>
+                                    <button type="button" class="layui-btn layui-btn-normal" @click="search">查询</button>
+                                    <button type="button" class="layui-btn layui-btn-export" @click="exportExcel">导出</button>
 
-                                 <c:if test="${checkEdit==true}">
-                                 	<button type="button" class="layui-btn" @click="toLock">批量锁定</button>
-                                    <button type="button" class="layui-btn" @click="toBackLockAll">批量解锁</button>
-                                 </c:if>
                                 </div>
-                              </div>
-<%--                            <div class="layui-row">--%>
-<%--                                <c:if test="${currUser.statusProj == 1 }" >--%>
-<%--                                    <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">--%>
-<%--                                        <div class="layui-form-item">--%>
-<%--                                            <label class="layui-form-label " >行业单位:</label>--%>
-<%--                                            <div class="layui-input-block">--%>
-<%--                                                <select name="hydw" lay-search>--%>
-<%--                                                    <option value="">--请选择--</option>--%>
-<%--                                                    <c:forEach items="${HYDW }" var="hy">--%>
-<%--                                                        <option value="${ hy.id}">${hy.title }</option>--%>
-<%--                                                    </c:forEach>--%>
-<%--                                                </select>--%>
-<%--                                            </div>--%>
-<%--                                        </div>--%>
-<%--                                    </div>--%>
-<%--                                </c:if>--%>
-
-<%--                                <div class="layui-col-xs6 layui-col-sm6 layui-col-md6">--%>
-<%--                                    <div class="layui-form-item">--%>
-<%--                                        <label class="layui-form-label ">年份</label>--%>
-<%--                                        <div class="layui-input-block time_box">--%>
-<%--                                            <input type="text" id="year" name="year" class="layui-input">--%>
-<%--                                            <button type="button" class="layui-btn layui-btn-normal" @click="search"><i class="layui-icon layui-icon-search"></i>查询</button>--%>
-<%--                                            <button type="button" class="layui-btn" @click="exportExcel"><i class="layui-icon layui-icon-add-circle"></i> 导出</button>--%>
-<%--                                        </div>--%>
-<%--                                    </div>--%>
-<%--                                </div>--%>
-<%--                                <span style="color: red;float: right;">带*号的条件可在导出时使用,其中年份仅限导出使用,年份不选择默认为当前年份</span>--%>
-<%--                            </div>--%>
+                            </div>
+                            <%--                            <div class="layui-row">--%>
+                            <%--                                <c:if test="${currUser.statusProj == 1 }" >--%>
+                            <%--                                    <div class="layui-col-xs3 layui-col-sm3 layui-col-md3">--%>
+                            <%--                                        <div class="layui-form-item">--%>
+                            <%--                                            <label class="layui-form-label " >行业单位:</label>--%>
+                            <%--                                            <div class="layui-input-block">--%>
+                            <%--                                                <select name="hydw" lay-search>--%>
+                            <%--                                                    <option value="">--请选择--</option>--%>
+                            <%--                                                    <c:forEach items="${HYDW }" var="hy">--%>
+                            <%--                                                        <option value="${ hy.id}">${hy.title }</option>--%>
+                            <%--                                                    </c:forEach>--%>
+                            <%--                                                </select>--%>
+                            <%--                                            </div>--%>
+                            <%--                                        </div>--%>
+                            <%--                                    </div>--%>
+                            <%--                                </c:if>--%>
+
+                            <%--                                <div class="layui-col-xs6 layui-col-sm6 layui-col-md6">--%>
+                            <%--                                    <div class="layui-form-item">--%>
+                            <%--                                        <label class="layui-form-label ">年份</label>--%>
+                            <%--                                        <div class="layui-input-block time_box">--%>
+                            <%--                                            <input type="text" id="year" name="year" class="layui-input">--%>
+                            <%--                                            <button type="button" class="layui-btn layui-btn-normal" @click="search"><i class="layui-icon layui-icon-search"></i>查询</button>--%>
+                            <%--                                            <button type="button" class="layui-btn" @click="exportExcel"><i class="layui-icon layui-icon-add-circle"></i> 导出</button>--%>
+                            <%--                                        </div>--%>
+                            <%--                                    </div>--%>
+                            <%--                                </div>--%>
+                            <%--                                <span style="color: red;float: right;">带*号的条件可在导出时使用,其中年份仅限导出使用,年份不选择默认为当前年份</span>--%>
+                            <%--                            </div>--%>
                         </form>
                     </div>
                 </div>
@@ -243,16 +196,15 @@
     <div class="toolBar">
         <span lay-event="toDetail">项目信息</span>
         {{# if(d.unit_id == "${currUnitId}"|| "${checkEdit}"=="true") { }}
-        <span lay-event="yearPlan">年度计划录入</span>
+
         {{#}}}
 
         {{# if("${checkEdit}"=="true") { }}
 
         {{# if(d.is_lock == "1") { }}
-        <span lay-event="toBackLock">解除锁定</span>
+
 
         {{#} else { }}
-        <span lay-event="toSetLock">锁定</span>
         {{#} }}
         {{#}}}
     </div>
@@ -308,7 +260,7 @@
                 <%--}else{--%>
                 <%--    this.loadTable();--%>
                 <%--}--%>
-                 this.getData();
+                this.getData();
                 window.showImage = this.showImage;
             },
             getData : function(){
@@ -345,7 +297,7 @@
             amtYear: function(obj) {
                 var self = this;
                 if (obj.data.amt_year==undefined){
-                	obj.data.amt_year="";
+                    obj.data.amt_year="";
                 }
                 // obj.data.status_reason="";
                 layui.form.val("amtYearForm", obj.data);
@@ -415,12 +367,12 @@
             toDetail : function(obj){
                 //详情
                 var index = layer.open({
-					type: 2,
-					title: "",
-					area: ['1000px', '800px'],
-					content: App.getUrl("//subject/subInfo/detailView?layer=true&subId="+ obj.data.sub_id),
-				});
-				layui.layer.full(index);
+                    type: 2,
+                    title: "",
+                    area: ['1000px', '800px'],
+                    content: App.getUrl("//subject/subInfo/detailView?layer=true&subId="+ obj.data.sub_id),
+                });
+                layui.layer.full(index);
             },
 
             exportExcel:function (){
@@ -442,7 +394,57 @@
 
                 console.log(subId);
                 param.xmlx = this.kind.getValue("value").sort().join(",");
-                window.location.href=App.getUrl("/annualPlan/exportExcel?subId="+subId+"&year="+param.year+"&status="+param.status+"&xmlx="+param.xmlx+"&xmxz="+param.xmxz+"&hyfl="+param.hyfl+"&unitName="+param.unitName+"&subName="+param.subName+"&jsdd="+param.jsdd+"&minMoney="+param.minMoney+"&maxMoney="+param.maxMoney);
+                if (param.year=="" || param.year==undefined){
+                    year=""
+                }else {
+                    year=param.year
+                }
+                if (param.status=="" || param.status==undefined){
+                    status=""
+                }else {
+                    year=param.status
+                }
+                if (param.xmlx=="" || param.xmlx==undefined){
+                    xmlx=""
+                }else {
+                    xmlx=param.xmlx
+                }
+                if (param.xmxz=="" || param.xmxz==undefined){
+                    xmxz=""
+                }else {
+                    xmxz=param.xmxz
+                }
+                if (param.hyfl=="" || param.hyfl==undefined){
+                    hyfl=""
+                }else {
+                    hyfl=param.hyfl
+                }
+                if (param.unitName=="" || param.unitName==undefined){
+                    unitName=""
+                }else {
+                    unitName=param.unitName
+                }
+                if (param.subName=="" || param.subName==undefined){
+                    subName=""
+                }else {
+                    subName=param.subName
+                }
+                if (param.minMoney=="" || param.minMoney==undefined){
+                    minMoney=""
+                }else {
+                    minMoney=param.minMoney
+                }
+                if (param.jsdd=="" || param.jsdd==undefined){
+                    jsdd=""
+                }else {
+                    jsdd=param.jsdd
+                }
+                if (param.maxMoney=="" || param.maxMoney==undefined){
+                    maxMoney=""
+                }else {
+                    maxMoney=param.maxMoney
+                }
+                window.location.href=App.getUrl("/annualPlan/exportExcel?subId="+subId+"&year="+param.year+"&status="+param.status+"&xmlx="+xmlx+"&xmxz="+xmxz+"&hyfl="+hyfl+"&unitName="+unitName+"&subName="+subName+"&jsdd="+jsdd+"&minMoney="+minMoney+"&maxMoney="+maxMoney);
             },
             loadTable : function(){
                 var self = this;
@@ -451,75 +453,55 @@
                     even: true,
                     autoSort: false,
                     cols: [[ // 设置表头
-                        {checkbox:true ,fixed: 'left', width:40, align: 'center'},
-                        {type: 'numbers', fixed: 'left',title:'序号', align: 'center',width:50,templet: function(row) {
+                        {checkbox:true ,fixed: 'left', width:50, align: 'center'},
+                        {type: 'numbers', fixed: 'left',title:'序号', align: 'center',width:200,templet: function(row) {
                                 if(row.numbers != null) {
                                     return '<span title="' + row.numbers + '">' + row.numbers + '</span>';
                                 }
                                 return "";
                             }},
-                        {field: 'title', title: '项目名称', fixed: 'left', width:300,fixed: 'left',templet: function(row) {
+                        {field: 'title', title: '项目名称', fixed: 'left', width:280,fixed: 'left',templet: function(row) {
                                 if(row.title != null) {
                                     return '<span title="' + row.title + '">' + row.title + '</span>';
                                 }
                                 return "";
                             }},
-                        {field: 'year', title: '年', width:60,templet: function(row) {
-                        	if(row.year != null) {
-            					return '<span title="' + row.year + '">' + row.year + '</span>';
-                        	}
-                        	return "";
-            			}},
-                        {field: 'begin_date', title: '开始日期', width: 100,templet: function(row) {
-                        	if(row.begin_date != null) {
-            					return '<span title="' + row.begin_date + '">' + row.begin_date + '</span>';
-                        	}
-                        	return "";
-            			}},
-                        {field: 'end_date', title: '结束日期', width: 100,templet: function(row) {
-                        	if(row.end_date != null) {
-            					return '<span title="' + row.end_date + '">' + row.end_date + '</span>';
-                        	}
-                        	return "";
-            			}},
-                        {field: 'main_desc', title: '监管单位', width: 150,templet: function(row) {
-                        	if(row.main_desc != null) {
-            					return '<span title="' + row.main_desc + '">' + row.main_desc + '</span>';
-                        	}
-                        	return "";
-            			}},
-                        {field: 'unit_name', title: '项目单位',width: 160,templet: function(row) {
-                        	if(row.unit_name != null) {
-            					return '<span title="' + row.unit_name + '">' + row.unit_name + '</span>';
-                        	}
-                        	return "";
-            			}},
-                        {field: 'amt', title: '项目总金额(万元)', width: 150,templet: function(row) {
-                        	if(row.amt != null) {
-            					return '<span title="' + row.amt + '">' + row.amt + '</span>';
-                        	}
-                        	return "";
-            			}},
+                        {field: 'amt', title: '总投资(万元)', width: 150,templet: function(row) {
+                                if(row.amt != null) {
+                                    return '<span title="' + row.amt + '">' + row.amt + '</span>';
+                                }
+                                return "";
+                            }},
+                        {field: 'begin_date', title: '计划开工日期', width: 200,templet: function(row) {
+                                if(row.begin_date != null) {
+                                    return '<span title="' + row.begin_date + '">' + row.begin_date + '</span>';
+                                }
+                                return "";
+                            }},
+                        {field: 'end_date', title: '计划投产日期', width: 200,templet: function(row) {
+                                if(row.end_date != null) {
+                                    return '<span title="' + row.end_date + '">' + row.end_date + '</span>';
+                                }
+                                return "";
+                            }},
+                        {field: 'unit_name', title: '项目单位',width: 200,templet: function(row) {
+                                if(row.unit_name != null) {
+                                    return '<span title="' + row.unit_name + '">' + row.unit_name + '</span>';
+                                }
+                                return "";
+                            }},
                         {field: 'amt_jh', sort: true, title: '年度计划月累计金额(万元)', width: 200,templet: function(row) {
-                        	if(row.amt_jh != null) {
-            					return '<span title="' + row.amt_jh + '">' + row.amt_jh + '</span>';
-                        	}
-                        	return "";
-            			}},
-        /*                {field: 'amt_year', title: '年度计划金额(万元)', width:140,templet: function(row) {
-                        	if(row.amt_year != null) {
-            					return '<span title="' + row.amt_year + '">' + row.amt_year + '</span>';
-                        	}
-                        	return "";
-            			}},*/
-                        {field: 'is_lock', title: '是否锁定', width: 70,templet: function(row) {
-                                if(row.is_lock == "1") {
-                                    return '<span>锁定</span>';
-                                }else{
-                                    return '<span>正常</span>';
+                                if(row.amt_jh != null) {
+                                    return '<span title="' + row.amt_jh + '">' + row.amt_jh + '</span>';
                                 }
                                 return "";
                             }},
+                        /*                {field: 'amt_year', title: '年度计划金额(万元)', width:140,templet: function(row) {
+                                            if(row.amt_year != null) {
+                                                return '<span title="' + row.amt_year + '">' + row.amt_year + '</span>';
+                                            }
+                                            return "";
+                                        }},*/
                         {title: '操作', width: 200, toolbar: '#toolBar', fixed:'right'}
                     ]],
                     fixed:true,
@@ -531,22 +513,22 @@
                             $($(".layui-table-fixed-l .layui-table-body tbody tr")[index]).height($(val).height());
                             $($(".layui-table-fixed-r .layui-table-body tbody tr")[index]).height($(val).height());
                         })
-                       }
-                    });
+                    }
+                });
                 layui.table.on('tool('+this.tableName+')', function(obj){
                     var event = obj.event;
                     self[event].call(this, obj);
                 });
                 layui.table.reload("table1",{
-					initSort: {
-						field: 'amt_jh',
-						type: self.orderType
-					}
-				})
-				layui.table.on("sort(test)", function(obj) {
-					self.orderType = obj.type;
-					self.getData();
-				});
+                    initSort: {
+                        field: 'amt_jh',
+                        type: self.orderType
+                    }
+                })
+                layui.table.on("sort(test)", function(obj) {
+                    self.orderType = obj.type;
+                    self.getData();
+                });
             },
             loadPage : function(totalCount){
                 var self = this;
@@ -639,8 +621,8 @@
                 });
             },
             search : function(){
-               this.pageNo = 1;
-               this.getData();
+                this.pageNo = 1;
+                this.getData();
             },
             closeWin : function(){
                 window.history.back(-1);

+ 8 - 8
projects/src/main/webapp/vmodules/leftMenu.jsp

@@ -323,15 +323,15 @@
                         {
                             txt: '问题统计分析',
                             code: '602',
-                            //icon: 'icon_question_gz',
-                            // url: 'problem/info/index'
-                            url: 'register/underConstruction'
+                            icon: 'icon_question_gz',
+                            url: 'problem/info/index'
+                            // url: 'register/underConstruction'
                         },
                         {
                             txt: '问题推送处理',
                             code: '603',
-                            // url: "problemtrack/index"
-                            url: 'register/underConstruction'
+                            url: "problemtrack/index"
+                            // url: 'register/underConstruction'
 
                         }
                     ]
@@ -572,19 +572,19 @@
                             code: '917',
                             txt: 'A项目年度计划',
                             // url: 'annualPlan/index'
-                            url: 'register/underConstruction'
+                            url: 'annualPlan/index'
                         },
                         {
                             txt: 'B项目周报',
                             code: '406',
                             // url: 'weekReport/view'
-                            url: 'register/underConstruction'
+                            url: 'weekReport/view'
                         },
                         {
                             txt: 'C项目月报',
                             code: '407',
                             // url: 'monthReport/view'
-                            url: 'register/underConstruction'
+                            url: 'monthReport/view'
                         },
                         {
                             txt: 'D每个月项目转换情况',

+ 198 - 0
projects/src/main/webapp/vmodules/msgLog/sendMsg.jsp

@@ -0,0 +1,198 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+         pageEncoding="UTF-8" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>编辑重大事件记录</title>
+    <jsp:include page="../common/common-meta-include.jsp"></jsp:include>
+    <jsp:include page="../common/common-css-include.jsp"></jsp:include>
+</head>
+<style>
+    body {
+        background-color: #ffffff;
+    }
+
+    .layuimini-main {
+        padding: 0;
+    }
+
+    .layui-form-item {
+        display: flex;
+    }
+
+    .layui-input-block {
+        flex: 1;
+    }
+</style>
+<body>
+<div id="app">
+</div>
+<template id="template">
+    <div class="layuimini-container">
+        <div class="layuimini-main">
+            <div class="layui-form " lay-filter="formData">
+                <div class="layui-form-item">
+                    <input type="hidden" id="id" name="id" value="${subId}">
+                </div>
+                <div class="layui-row">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">短信内容</label>
+                        <div class="layui-input-block">
+                            <textarea rows="5" name="joinPerson" disabled="disabled" readonly="readonly"
+                                      v-model="obj.content" class="layui-textarea"
+                                      placeholder="请填入短信内容"></textarea>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-row">
+                    <div class="layui-form-item">
+                        <label class="layui-form-label">用户选择</label>
+                        <div class="layui-input-block">
+                            <select name="phone" lay-verify="required" lay-search lay-filter="phone">
+                                <option value="">--请选择--</option>
+                                <c:forEach items="${Users}" var="user">
+                                    <option value="${user.id}">${user.title}</option>
+                                </c:forEach>
+                            </select>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <%--            <div class="layui-row">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label required">会议主题</label>
+                                <div class="layui-input-block">
+                                    <input type="text" name="title" v-model="obj.meetingTitle" lay-verify="required"
+                                           lay-reqtext="请输入会议主题" autocomplete="off" placeholder="请输入会议主题"
+                                           class="layui-input">
+                                </div>
+                            </div>
+                        </div>--%>
+            <%--            <div class="layui-row">
+                            <div class="layui-form-item">
+                                <label class="layui-form-label">备注</label>
+                                <div class="layui-input-block">
+                                    <input type="text" name="remark" v-model="obj.remark" autocomplete="off"
+                                           placeholder="请输入备注" class="layui-input">
+                                </div>
+                            </div>
+                        </div>--%>
+            <%--       <div class="layui-form-item">
+                       <label class="layui-form-label"></label>
+                       <div class="layui-input-block">
+                           <button type="button" class="layui-btn-submit" style="margin-top: 40px" lay-submit
+                                   lay-filter="save">发送
+                           </button>
+                           <input type="button" value="取消" class="layui-btn" @click="closePane"/>
+                       </div>
+                   </div>--%>
+
+            <div class="layui-row">
+                <div class="layui-form-item" style="text-align: right; padding: 0 67px 10px;justify-content: flex-end;">
+                    <%--           <button type="button" class="layui-btn-submit" style="margin-top: 40px" lay-submit
+                                       lay-filter="save">发送
+                               </button>
+                               <button type="button" class="layui-btn-submit" style="margin-top: 40px"
+                                       @click="closePane">取消
+                               </button>--%>
+                    <input type="button" value="取消" class="layui-btn btn btn1" @click="closePane"/>
+                    <input type="button" value="发送" class="layui-btn btn btn1" lay-submit lay-filter="save"/>
+                </div>
+            </div>
+
+            <div style="width:100%;height:20px"></div>
+        </div>
+    </div>
+    </div>
+</template>
+<jsp:include page="../common/common-js-include.jsp"></jsp:include>
+<script type="text/html" id="rowRoolBar">
+    <span style="width: 30px;" lay-event="delPlans">删除</span>
+</script>
+<script type="text/html" id="subRoolBar">
+    <span style="width: 30px;" lay-event="delSub">删除</span>
+</script>
+<script type="text/html" id="subTableToolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="addSubInfo"> 添加关联项目
+        </button>
+    </div>
+</script>
+<script type="text/javascript">
+    new Vue({
+        el: "#app",
+        template: "#template",
+        data: {
+            obj: {
+                kind: "",
+                content: "${content}",
+            },
+            userList: [
+                <c:forEach items="${Users}" var="li" varStatus="lis">
+                {
+                    id: '${li.id}',
+                    phone: '${li.simCode}',
+                    Title: '${li.title}'
+                },
+                </c:forEach>
+            ],
+            phone: "",
+        },
+        mounted: function () {
+            this.init();
+        },
+        methods: {
+            init: function () {
+                var self = this;
+                layui.form.on("submit(save)", function () {
+                    self.save();
+                });
+                layui.form.on("select(phone)", function (data) {
+                    var obj = self.userList.find(item => {
+                        return item.id === data.value;
+                    });
+                    if (obj) {
+                        self.phone = obj.phone;
+                    } else {
+                        self.phone = "";
+                    }
+                })
+                top.window.addSubInfo = this.addSub;
+            },
+            save: function () {
+                //发送短信
+                var self = this;
+                if(!self.phone){
+                    App.msg.info("人员未选择或者选择的人员没有设置电话号码!");
+                    return;
+                }
+                App.msg.confirm("确认发送逾期短信到该联系人?", function () {
+                    App.postJson("/api/msgLog/sendDueMsg", {
+                        subId: "${subId}",
+                        kind: "${kind}",
+                        item: "${item}",
+                        phone: self.phone,
+                    }, function (res) {
+                        App.msg.success("发送成功");
+                        var index = top.layer.getFrameIndex(window.name);
+                        top.layer.close(index);
+                    })
+                })
+            },
+            closePane: function () {
+                var index = top.layer.getFrameIndex(window.name);
+                top.layer.close(index);
+            },
+            addSub: function (data) {
+
+            },
+            addSubInfo: function () {
+
+            },
+        }
+    })
+</script>
+</body>
+</html>

Datei-Diff unterdrückt, da er zu groß ist
+ 408 - 536
projects/src/main/webapp/vmodules/problem/info/preInfo.jsp


+ 58 - 23
projects/src/main/webapp/vmodules/problem/track/list.jsp

@@ -87,19 +87,43 @@
                                         </div>
                                     </div>
                                 </div>
+<%--                                <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">--%>
+<%--                                    <div class="layui-form-item" style="height:28px;">--%>
+<%--                                        <label class="layui-form-label">建设性质</label>--%>
+<%--                                        <div class="layui-input-block">--%>
+<%--                                            <div id="propKind" name="propKind"></div>--%>
+<%--                                        </div>--%>
+<%--                                    </div>--%>
+<%--                                </div>--%>
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
                                     <div class="layui-form-item" style="height:28px;">
-                                        <label class="layui-form-label">建设性质</label>
+                                        <label class="layui-form-label">项目属地</label>
                                         <div class="layui-input-block">
-                                            <div id="propKind" name="propKind"></div>
+<%--                                            <div id="propKind" name="propKind"></div>--%>
+                                            <select name="subjectId">
+                                                <option value="">请选择</option>
+                                                <c:forEach items="${JSDD }" var="hy">
+                                                    <option value="${hy.code }">${hy.title }</option>
+                                                </c:forEach>
+                                            </select>
                                         </div>
                                     </div>
                                 </div>
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
                                     <div class="layui-form-item" style="height:28px;">
-                                        <label class="layui-form-label">所属行业</label>
+                                        <label class="layui-form-label">行业类别</label>
                                         <div class="layui-input-block">
-                                            <div id="indusKind" name="indusKind"></div>
+<%--                                                 <div id="indusKind" name="indusKind"></div>--%>
+                                                <select name="indusKind" v-model="indusKind" id="indusKind">
+                                                    <option value="">请选择</option>
+                                                    <c:forEach items="${HYFL }" var="hy">
+                                                        <option value="${hy.code }">${hy.title}
+                                                        <c:forEach items="${hy.children }" var="hy2">
+                                                            <option value="${hy2.code }">&ensp;&ensp;${hy2.title}
+                                                        </c:forEach>
+                                                        </option>
+                                                    </c:forEach>
+                                                </select>
                                         </div>
                                     </div>
                                 </div>
@@ -338,23 +362,34 @@
                     value: formatwdate
                 });
 
-                var seleDatas = [], jsxz = [], xmlx = [];
-    			<c:forEach items="${HYFL }" var="hy">
-    			seleDatas.push({value:'${hy.id}',name:'${hy.title}'});
-    			</c:forEach>
-    			this.indusKind = layui.xmSelect.render({
-    				el:'#indusKind',
-    				language:'zn',
-    				data: seleDatas
-    			});
-    			<c:forEach items="${JSXZ}" var="js">
-    			jsxz.push({value: '${js.code}', name:'${js.title}'});
-    			</c:forEach>
-    			this.propKind = layui.xmSelect.render({
-    				el:'#propKind',
-    				language:'zn',
-    				data: jsxz
-    			});
+                var seleDatas = [], jsxz = [], xmlx = [], jsdd = [];
+<%--    			<c:forEach items="${HYFL }" var="hy">--%>
+<%--    			seleDatas.push({value:'${hy.id}',name:'${hy.title}'});--%>
+<%--    			</c:forEach>--%>
+<%--    			this.indusKind = layui.xmSelect.render({--%>
+<%--    				el:'#indusKind',--%>
+<%--    				language:'zn',--%>
+<%--    				data: seleDatas--%>
+<%--    			});--%>
+
+<%--    			<c:forEach items="${JSXZ}" var="js">--%>
+<%--    			jsxz.push({value: '${js.code}', name:'${js.title}'});--%>
+<%--    			</c:forEach>--%>
+<%--    			this.propKind = layui.xmSelect.render({--%>
+<%--    				el:'#propKind',--%>
+<%--    				language:'zn',--%>
+<%--    				data: jsxz--%>
+<%--    			});--%>
+
+<%--                <c:forEach items="${JSDD}" var="js">--%>
+<%--                    jsdd.push({value: '${js.code}', name:'${js.title}'});--%>
+<%--    			</c:forEach>--%>
+<%--    			this.propKind = layui.xmSelect.render({--%>
+<%--    				el:'#propKind',--%>
+<%--    				language:'zn',--%>
+<%--    				data: jsdd--%>
+<%--    			});--%>
+
     			<c:forEach items="${XMLX}" var="xm">
     			xmlx.push({value: '${xm.code}', name: '${xm.title}'});
     			</c:forEach>
@@ -699,8 +734,8 @@
             },
             search : function(){
                 var param = layui.form.getValue("searchForm");
-                param.indusKind = this.indusKind.getValue("valueStr");
-                param.propKind = this.propKind.getValue("valueStr");
+                // param.indusKind = this.indusKind.getValue("valueStr");
+                // param.propKind = this.propKind.getValue("valueStr");
                 param.kind = this.kind.getValue("valueStr");
                 param.status =$("input[name='status']:checked").val();
                 this.pageNo = 1;

+ 75 - 129
projects/src/main/webapp/vmodules/project/monthReport.jsp

@@ -167,47 +167,6 @@
                         <%--                    <h2 class="layui-colla-title">筛选</h2>--%>
                         <div class="layui-colla-content layui-show">
                             <form class="layui-form">
-                                <div class="layui-row">
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label">项目状态</label>
-                                            <div class="layui-input-block">
-                                                <select name="projStatus" lay-verify="required">
-                                                    <option value="0">请选择</option>
-                                                    <option value="1">未开工</option>
-                                                    <option value="2">已开工</option>
-                                                    <!-- <option value="4">年度计划完成</option> -->
-                                                    <option value="3">项目竣工</option>
-                                                </select>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label  ">月报期间</label>
-                                            <div class="layui-input-block time_box">
-                                                <input type="text" id="startTime" name="title" placeholder="请选择时间"
-                                                       autocomplete="off" class="layui-input">
-                                                <span class="split_txt">至</span>
-                                                <input type="text" id="endTime" name="title"
-                                                       placeholder="请选择结束时间"
-                                                       autocomplete="off" class="layui-input">
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label  ">月报状态</label>
-                                            <div class="layui-input-block">
-                                                <select name="isDo">
-                                                    <option value="0">全部</option>
-                                                    <option value="1">已做</option>
-                                                    <option value="2">未做</option>
-                                                </select>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </div>
                                 <div class="layui-row">
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
@@ -220,26 +179,22 @@
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label  ">金额(万元)</label>
-                                            <div class="layui-input-block time_box">
-                                                <input type="text" id="startAmt" style="width: 150px;" name="startAmt"
-                                                       placeholder="请输入最小金额" autocomplete="off"
-                                                       class="layui-input"
-                                                       value="${minAmt}">
-                                                <span class="split_txt">至</span>
-                                                <input type="text" id="endAmt" name="endAmt" style="width: 150px;"
-                                                       placeholder="请输入最大金额" autocomplete="off"
-                                                       class="layui-input"
-                                                       value="${maxAmt}">
-                                                <!-- <button class="layui-btn" @click="exportExcel"><i class="layui-icon layui-icon-add-circle"></i> 导出</button> -->
+                                            <label class="layui-form-label   ">项目属地</label>
+                                            <div class="layui-input-block">
+                                                <select name="jsdd">
+                                                    <option value="">请选择</option>
+                                                    <c:forEach items="${JSDD }" var="js">
+                                                        <option value="${js.code }">${js.title }</option>
+                                                    </c:forEach>
+                                                </select>
                                             </div>
                                         </div>
                                     </div>
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label   ">所属行业</label>
+                                            <label class="layui-form-label   ">行业类别</label>
                                             <div class="layui-input-block">
                                                 <select name="hyfl" lay-search="">
                                                     <option value="">请选择</option>
@@ -256,46 +211,46 @@
                                             </div>
                                         </div>
                                     </div>
-                                </div>
-                                <div class="layui-row">
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
+
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label   ">建设地点</label>
-                                            <div class="layui-input-block">
-                                                <select name="jsdd">
-                                                    <option value="">请选择</option>
-                                                    <c:forEach items="${JSDD }" var="js">
-                                                        <option value="${js.code }">${js.title }</option>
-                                                    </c:forEach>
-                                                </select>
+                                            <label class="layui-form-label  ">月报期间</label>
+                                            <div class="layui-input-block time_box">
+                                                <input type="text" id="startTime" name="title" placeholder="请选择时间"
+                                                       autocomplete="off" class="layui-input">
+                                                <span class="split_txt">至</span>
+                                                <input type="text" id="endTime" name="title"
+                                                       placeholder="请选择结束时间"
+                                                       autocomplete="off" class="layui-input">
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label  ">实际投资</label>
+                                            <label class="layui-form-label  ">月报状态</label>
                                             <div class="layui-input-block">
-                                                <select name="amtSj">
-                                                    <option value="">所有</option>
+                                                <select name="isDo">
+                                                    <option value="0">所有</option>
                                                     <option value="1">已做</option>
                                                     <option value="2">未做</option>
                                                 </select>
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label  ">预测投资</label>
+                                            <label class="layui-form-label">项目状态</label>
                                             <div class="layui-input-block">
-                                                <select name="amtYc">
-                                                    <option value="">所有</option>
-                                                    <option value="1">已</option>
-                                                    <option value="2">未做</option>
+                                                <select name="projStatus" lay-verify="required">
+                                                    <option value="0">所有</option>
+                                                    <option value="1">已开工</option>
+                                                    <option value="2">已停工</option>
                                                 </select>
                                             </div>
                                         </div>
                                     </div>
                                 </div>
+
                                 <div class="layui-row">
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md12">
                                         <div class="layui-form-item">
@@ -369,7 +324,7 @@
                         <label class="layui-form-label label-longer required">本月实际投资(万元)</label>
                         <div class="layui-input-block">
                             <input type="number" id="amt" name="amt" placeholder="请输入金额" class="layui-input">
-                            <span style="color: red">注:本月实际投资严格按照统金额填写</span>
+                            <span style="color: red">注:本月实际投资严格按照统金额填写</span>
                         </div>
                     </div>
                     <div class="layui-form-item">
@@ -791,17 +746,37 @@
                     layui.layer.msg("必须选择月报期间");
                     return;
                 }
+                if (this.endAmt=="" || this.endAmt==undefined){
+                    endAmt=""
+                }else {
+                    endAmt=this.endAmt
+                }
+                if (this.startAmt=="" || this.startAmt==undefined){
+                    startAmt=""
+                }else {
+                    startAmt=this.startAmt
+                }
+                if (this.amtSj=="" || this.amtSj==undefined){
+                    amtSj=""
+                }else {
+                    amtSj=this.amtSj
+                }
+                if (this.amtYc=="" || this.amtYc==undefined){
+                    amtYc=""
+                }else {
+                    amtYc=this.amtYc
+                }
                 var param = {
                     startMonth: this.startMonth + "-01",
                     endMonth: this.endMonth + "-01",
                     status: $("[name='projStatus']").val(),
                     subName: $("[name='proName']").val(),
                     isDo: $("[name='isDo']").val(),
-                    startAmt: $("[name='startAmt']").val(),
-                    endAmt: $("[name='endAmt']").val(),
+                    startAmt: startAmt,
+                    endAmt: endAmt,
                     hyfl: $("[name='hyfl']").val(),
-                    amtSj: $("[name='amtSj']").val(),
-                    amtYc: $("[name='amtYc']").val(),
+                    amtSj: amtSj,
+                    amtYc: amtYc,
                     jsdd: $("[name='jsdd']").val()
                 };
                 App.common.utils.downFile(App.getUrl("/monthReport/exportExcel"), "GET", param, "项目月报.xlsx", "项目月报导出失败");
@@ -828,51 +803,20 @@
                                 return "<a title=" + row.sub_name + ">" + row.sub_name + "</a>";
                             }
                         },
-                        {field: 'indus_kind', title: '行业分类', width: 120},
-                        {field: 'subject_id', title: '建设地点', width: 100},
-                        {field: 'year', title: '年度', width: 60},
-                        {field: 'kj_month', title: '月报期间', minWidth: 80},
-                        {
-                            field: 'amt', sort: true, title: '本月实际投资', minWidth: 150, templet: function (row) {
-                                if (row.amt != null && row.amt + '' != '') {
-                                    return '<span>' + row.amt + '万元</span>';
-                                } else {
-                                    return "";
-                                }
-                            }
-                        },
-                        // {field: 'amt_last', title: '下月预测投资', minWidth: 150, templet : function(row){
-                        // 		if(row.amt_last != null && row.amt_last+'' != ''){
-                        // 			return '<span>'+row.amt_last+'万元</span>';
-                        // 		}else{
-                        // 			return "";
-                        // 		}
-                        // 	}},
-                        <c:if test="${isAdmin}">
-                        {
-                            field: 'amt_rt', title: '入统金额', width: 80, templet: function (row) {
-                                if (row.amt_rt != null && row.amt_rt + '' != '') {
-                                    return '<span>' + row.amt_rt + '万元</span>';
-                                } else {
+                        {field: 'amt', title: '总投资', minWidth: 100, templet : function(row){
+                                if(row.amt){
+                                    return '<span>'+row.amt+'万元</span>';
+                                }else{
                                     return "";
                                 }
-                            }
-                        },
-                        {
-                            field: 'amt_rt', title: '差额', width: 80, templet: function (row) {
-                                if (row.amt_rt != null && row.amt_rt + '' != '') {
-                                    return '<span>' + (parseInt(row.amt || 0) - parseInt(row.amt_rt)) + '万元</span>';
-                                } else {
-                                    if (row.amt != null && row.amt + '' != '') {
-                                        return '<span>' + (row.amt || 0) + '万元</span>';
-                                    } else {
-                                        return "";
-                                    }
+                            }},
+                        {field: 'kj_month', title: '月报期间', minWidth: 80},
+                        {field: 'unit_name', title: '项目单位',width: 200,templet: function(row) {
+                                if(row.unit_name != null) {
+                                    return '<span title="' + row.unit_name + '">' + row.unit_name + '</span>';
                                 }
-                            }
-                        },
-                        </c:if>
-                        /* {field: 'sub_plan_content', title: '阶段内容', minWidth: 100}, */
+                                return "";
+                            }},
                         {
                             field: 'content', title: '项目进展情况', minWidth: 200, templet: function (row) {
                                 if (row.content != null) {
@@ -898,18 +842,20 @@
                                 return "";
                             }
                         },
+
+                        /* {field: 'sub_plan_content', title: '阶段内容', minWidth: 100}, */
+
+
+
                         {
                             title: '操作', fixed: 'right', width: 113, align: 'center', templet: function (row) {
                                 var temp = "";
                                 if (row.unit_id === '${unitId}' || '${checkEdit}' == "true") {
-                                    temp = '<div class="toolBar"><span onClick=\'onEdit(' + JSON.stringify(row) + ')\'>编辑</span></div>';
+                                    temp = '<div class="toolBar"><span onClick=\'onEdit(' + JSON.stringify(row) + ')\'>项目信息</span></div>';
 
-                                    if ('${isAdmin}' == "true") {
-                                        temp = temp + '<div class="toolBar"><span onClick=\'onEditRt(' + JSON.stringify(row) + ')\'>固投金额设置</span></div>';
-                                    }
 
                                 } else {
-                                    temp = '<div class="toolBar"><span onClick=\'detail(' + JSON.stringify(row) + ')\'>查看</span></div>';
+                                    temp = '<div class="toolBar"><span onClick=\'detail(' + JSON.stringify(row) + ')\'>项目信息</span></div>';
                                 }
                                 return temp;
                             }
@@ -1307,7 +1253,7 @@
                         self.yuebaoInfo.content = $("[name='ybContent']").val();
                         self.yuebaoInfo.reason = $("[name='ybReason']").val();
                         self.yuebaoInfo.amt = $("[name='amt']").val();
-                         self.yuebaoInfo.amtLast = $("[name='amtLast']").val();
+                        self.yuebaoInfo.amtLast = $("[name='amtLast']").val();
                         // self.yuebaoInfo.amtRt = $("[name='amtRt']").val();
                         self.yuebaoInfo.numBl = $("[name='numBl']").val();
                         // self.yuebaoInfo.subPlanId = $("[name='subPlanId']").val();

+ 66 - 82
projects/src/main/webapp/vmodules/project/weekReport.jsp

@@ -81,44 +81,6 @@
                         <div class="layui-colla-content layui-show">
                             <form class="layui-form">
                                 <div class="layui-row">
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label">项目状态</label>
-                                            <div class="layui-input-block">
-                                                <select name="projStatus" lay-verify="required">
-                                                    <option value="0">请选择</option>
-                                                    <option value="1">未开工</option>
-                                                    <option value="2">已开工</option>
-                                                    <!-- <option value="4">年度计划完成</option> -->
-                                                    <option value="3">项目竣工</option>
-                                                </select>
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label">周报期间</label>
-                                            <div class="layui-input-block time_box">
-                                                <input type="text" id="startTime" name="title" placeholder="请选择开始时间"
-                                                       autocomplete="off" class="layui-input" style="width: 200px;">
-                                                <span class="split_txt">至</span>
-                                                <input type="text" id="endTime" name="title" placeholder="请选择结束时间"
-                                                       autocomplete="off" class="layui-input" style="width: 200px;">
-                                            </div>
-                                        </div>
-                                    </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
-                                        <div class="layui-form-item">
-                                            <label class="layui-form-label">周报状态</label>
-                                            <div class="layui-input-block">
-                                                <select name="isDo">
-                                                    <option value="0">全部</option>
-                                                    <option value="1">已做</option>
-                                                    <option value="2">未做</option>
-                                                </select>
-                                            </div>
-                                        </div>
-                                    </div>
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
                                             <label class="layui-form-label">项目名称</label>
@@ -128,24 +90,22 @@
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label">金额(万元)</label>
-                                            <div class="layui-input-block time_box">
-                                                <input type="text" id="startAmt" style="width: 150px;" name="startAmt"
-                                                       placeholder="请输入最小金额" autocomplete="off" class="layui-input"
-                                                       value="${minAmt}">
-                                                <span class="split_txt">至</span>
-                                                <input type="text" id="endAmt" name="endAmt" style="width: 150px;"
-                                                       placeholder="请输入最大金额" autocomplete="off" class="layui-input"
-                                                       value="${maxAmt}">
-                                                <!-- <button class="layui-btn" @click="exportExcel"><i class="layui-icon layui-icon-add-circle"></i> 导出</button> -->
+                                            <label class="layui-form-label ">项目属地</label>
+                                            <div class="layui-input-block">
+                                                <select name="jsdd">
+                                                    <option value="">请选择</option>
+                                                    <c:forEach items="${JSDD }" var="js">
+                                                        <option value="${js.code }">${js.title }</option>
+                                                    </c:forEach>
+                                                </select>
                                             </div>
                                         </div>
                                     </div>
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label ">所属行业</label>
+                                            <label class="layui-form-label ">行业类别</label>
                                             <div class="layui-input-block">
                                                 <select name="hyfl" lay-search="">
                                                     <option value="">请选择</option>
@@ -162,19 +122,45 @@
                                             </div>
                                         </div>
                                     </div>
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label">周报期间</label>
+                                            <div class="layui-input-block time_box">
+                                                <input type="text" id="startTime" name="title" placeholder="请选择开始时间"
+                                                       autocomplete="off" class="layui-input" style="width: 200px;">
+                                                <span class="split_txt">至</span>
+                                                <input type="text" id="endTime" name="title" placeholder="请选择结束时间"
+                                                       autocomplete="off" class="layui-input" style="width: 200px;">
+                                            </div>
+                                        </div>
+                                    </div>
+
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md4">
                                         <div class="layui-form-item">
-                                            <label class="layui-form-label ">建设地点</label>
+                                            <label class="layui-form-label">项目状态</label>
                                             <div class="layui-input-block">
-                                                <select name="jsdd">
-                                                    <option value="">请选择</option>
-                                                    <c:forEach items="${JSDD }" var="js">
-                                                        <option value="${js.code }">${js.title }</option>
-                                                    </c:forEach>
+                                                <select name="projStatus" lay-verify="required">
+                                                    <option value="0">所有</option>
+                                                    <option value="1">已开工</option>
+                                                    <option value="2">已停工</option>
                                                 </select>
                                             </div>
                                         </div>
                                     </div>
+
+                                    <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label">周报状态</label>
+                                            <div class="layui-input-block">
+                                                <select name="isDo">
+                                                    <option value="0">所有</option>
+                                                    <option value="1">已做</option>
+                                                    <option value="2">未做</option>
+                                                </select>
+                                            </div>
+                                        </div>
+                                    </div>
+
                                     <div class="layui-col-xs6 layui-col-sm6 layui-col-md5">
                                         <div class="layui-form-item">
                                             <button type="button" class="layui-btn layui-btn-normal" @click="onSearch">
@@ -581,16 +567,13 @@
                                 return "";
                             }
                         },
-                        {field: 'indus_kind', title: '行业分类', width: 120},
-                        {field: 'subject_id', title: '建设地点', width: 100},
-                        {
-                            field: 'year', title: '年度', minWidth: 50, templet: function (row) {
-                                if (row.year != null) {
-                                    return '<span title="' + row.year + '">' + row.year + '</span>';
+                        {field: 'amt', title: '总投资', minWidth: 100, templet : function(row){
+                                if(row.amt){
+                                    return '<span>'+row.amt+'万元</span>';
+                                }else{
+                                    return "";
                                 }
-                                return "";
-                            }
-                        },
+                            }},
                         {
                             field: 'kj_month', title: '周报期间', minWidth: 200, templet: function (row) {
                                 if (row.kj_month != null) {
@@ -599,21 +582,12 @@
                                 return "";
                             }
                         },
-                        /* {field: 'amt', title: '本周实际投资', minWidth: 100, templet : function(row){
-                            if(row.amt){
-                                return '<span>'+row.amt+'万元</span>';
-                            }else{
-                                return "";
-                            }
-                        }}, */
-                        {
-                            field: 'sub_plan_content', title: '阶段内容', minWidth: 100, templet: function (row) {
-                                if (row.sub_plan_content != null) {
-                                    return '<span title="' + row.sub_plan_content + '">' + row.sub_plan_content + '</span>';
+                        {field: 'unit_name', title: '项目单位',width: 200,templet: function(row) {
+                                if(row.unit_name != null) {
+                                    return '<span title="' + row.unit_name + '">' + row.unit_name + '</span>';
                                 }
                                 return "";
-                            }
-                        },
+                            }},
                         {
                             field: 'content', title: '项目进展情况', minWidth: 320, templet: function (row) {
                                 if (row.content != null) {
@@ -644,9 +618,9 @@
                         {
                             title: '操作', width: 130,type:'string', align: 'center', fixed: 'right', templet: function (row) {
                                 if (row.unit_id === '${unitId}') {
-                                    return '<div class="toolBar"><span onClick=\'onEdit(' + JSON.stringify(row) + ')\'>编辑</span></div>';
+                                    return '<div class="toolBar"><span onClick=\'onEdit(' + JSON.stringify(row) + ')\'>项目信息</span></div>';
                                 } else {
-                                    return '<div class="toolBar"><span onClick=\'detail(' + JSON.stringify(row) + ')\'>查看</span></div>';
+                                    return '<div class="toolBar"><span onClick=\'detail(' + JSON.stringify(row) + ')\'>项目信息</span></div>';
                                 }
                             }
                         }
@@ -751,6 +725,16 @@
                     layui.layer.msg("必须选择周报期间");
                     return;
                 }
+                if (this.startAmt=="" || this.startAmt==undefined){
+                    startAmt=""
+                }else {
+                    startAmt=this.startAmt
+                }
+                if (this.endAmt=="" || this.endAmt==undefined){
+                    endAmt=""
+                }else {
+                    endAmt=this.endAmt
+                }
                 /* var sm = this.startMonth.replace(/\-/g, "");
                 var em = this.endMonth.replace(/\-/g, ""); */
                 var param = {
@@ -759,8 +743,8 @@
                     status: $("[name='projStatus']").val(),
                     subName: $("[name='proName']").val(),
                     isDo: $("[name='isDo']").val(),
-                    startAmt: $("[name='startAmt']").val(),
-                    endAmt: $("[name='endAmt']").val(),
+                    startAmt: startAmt,
+                    endAmt: endAmt,
                     hyfl: $("[name='hyfl']").val(),
                     jsdd: $("[name='jsdd']").val()
                 };

+ 1597 - 0
projects/src/main/webapp/vmodules/statics/SubInfoDao.java

@@ -0,0 +1,1597 @@
+package com.rtrh.projects.modules.projects.dao;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.RoundingMode;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.rtrh.projects.modules.projects.mapper.SubInfoMapper;
+import com.rtrh.projects.modules.system.vo.PersonInfoVO;
+import org.hibernate.criterion.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.google.common.base.CaseFormat;
+import com.rtrh.common.util.DateUtil;
+import com.rtrh.common.util.StringUtil;
+import com.rtrh.core.repository.Page;
+import com.rtrh.core.repository.hibernate.EntityServiceImpl;
+import com.rtrh.projects.modules.projects.enums.ProjectStatusEnum;
+import com.rtrh.projects.modules.projects.mapper.StaticsMapper;
+import com.rtrh.projects.modules.projects.po.SubInfo;
+import com.rtrh.projects.modules.projects.vo.HistoryVO;
+import com.rtrh.projects.modules.projects.vo.SubInfoQueryTzVO;
+import com.rtrh.projects.modules.system.dao.TSystableDao;
+import com.rtrh.projects.modules.system.enums.JUnitKind;
+import com.rtrh.projects.modules.system.enums.SysTableKind;
+import com.rtrh.projects.modules.system.enums.UserKindUnitEnum;
+import com.rtrh.projects.modules.system.po.TSystable;
+import com.rtrh.projects.modules.system.vo.LoginUserVO;
+
+import cn.hutool.core.collection.CollectionUtil;
+
+import javax.annotation.Resource;
+
+
+@Service
+public class SubInfoDao extends EntityServiceImpl<SubInfo> {
+
+	@Autowired
+	private TSystableDao tSystableDao;
+	@Autowired
+	private StaticsMapper staicsMapper;
+	@Resource
+	private SubInfoMapper subInfoMapper;
+
+	public Page pageYqInfo(Page page, LoginUserVO vo, String projName, String startTime, String endTime, String overStatus, String year, String beginMonth, String endMonth, Boolean onlySub, String hyfl, String subjectId, String zjly, Boolean containHide, Boolean blSub){
+		StringBuffer sql = new StringBuffer();
+		List<TSystable> list = tSystableDao.getSysDataByKind(SysTableKind.YQTS);
+		//延期天数
+		Integer yqts = 0;
+		if(CollectionUtil.isNotEmpty(list) && list.size() > 0) {
+			yqts = Integer.valueOf(list.get(0).getCode());
+		}
+		String yearBeginDate = null;
+		String yearEndDate = null;
+		if(StringUtil.isNotEmpty(year)) {
+			Calendar yCalendar = Calendar.getInstance();
+			yCalendar.set(Calendar.YEAR, Integer.valueOf(year));
+			yCalendar.set(Calendar.DAY_OF_MONTH, 1);
+			if(StringUtil.isNotEmpty(beginMonth)) {
+				yCalendar.set(Calendar.MONTH, Integer.valueOf(beginMonth) -1);
+			} else {
+				yCalendar.set(Calendar.MONTH, 0);
+			}
+			yearBeginDate = DateUtil.getDateStr(yCalendar.getTime(), DateUtil.FORMAT_DATE);
+			if(StringUtil.isNotEmpty(endMonth)) {
+				yCalendar.set(Calendar.MONTH, Integer.valueOf(endMonth) -1);
+				yCalendar.set(Calendar.DAY_OF_MONTH, 31);
+			} else {
+				yCalendar.set(Calendar.MONTH, 11);
+				yCalendar.set(Calendar.DAY_OF_MONTH, 31);
+			}
+			yearEndDate = DateUtil.getDateStr(yCalendar.getTime(), DateUtil.FORMAT_DATE);
+		}
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(new Date());
+		calendar.add(Calendar.DAY_OF_MONTH, yqts);
+		String ybDayStr = DateUtil.getDateStr(calendar.getTime(), DateUtil.FORMAT_DATE);
+		sql.append("select if(us.id is NULL,0,1) as usersub,tem.* FROM ( ");
+			/*if(!Boolean.TRUE.equals(onlySub)) {
+				sql.append(" SELECT a.id, c.title zgdw, d.title as sbdw,b.sub_name as subName,a.kind, e.title, DATE_FORMAT(a.date_plan,'%Y-%m-%d') as `endDate`,DATEDIFF(CURDATE(),a.date_plan) overDays, b.id as subId, b.name_zrr as nameZrr, b.tel, b.name_lead nameLead, b.tel_Lead telLead ");
+				sql.append(" FROM sub_pre_new a LEFT JOIN sub_info b ON a.sub_id = b.id ");
+				sql.append(" LEFT JOIN j_unit c ON b.main_id = c.id ");
+				sql.append(" LEFT JOIN j_unit d ON b.unit_id = d.id ");
+				sql.append(" LEFT JOIN sub_pre_flow e ON a.pre_flow_id = e.id  ");
+				sql.append(" LEFT JOIN sub_manage f ON f.sub_id = a.sub_id ");
+				sql.append(" LEFT JOIN sub_verify h ON h.sub_id = a.sub_id AND h.logic_delete_flag = 0 ");
+				sql.append(" WHERE a.logic_delete_flag = 0 AND (b.`status` = 1) AND b.logic_delete_flag = 0 AND NOT ISNULL(a.date_plan) AND ISNULL(a.date_confirm) ");
+				if(yearBeginDate != null) {
+					sql.append(" and (");
+					sql.append(" (b.begin_date <= '").append(yearBeginDate).append("' and b.end_date >= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.begin_date <= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.end_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+					sql.append(" ) ");
+				}
+				if(StringUtil.isNotEmpty(projName)) {
+					sql.append(" AND b.sub_name LIKE '%" + projName + "%' ");
+				}
+				if(StringUtil.isNotEmpty(startTime)) {
+					sql.append(" and a.date_plan >= '" + startTime + "' ");
+				}
+				if(StringUtil.isNotEmpty(endTime)) {
+					sql.append(" and a.date_plan <= '" + endTime + "' ");
+				}
+				if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+					//项目单位
+					sql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+					if(Boolean.TRUE.equals(vo.getIsUnit())) {
+						//单位用户,看单位全部的
+					} else {
+						//个人用户,看自己申报的
+						sql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+					}
+				} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+					//政府单位
+					if(Objects.equals("0", vo.getStatusProj())) {
+						//看自己部门监管的或者监管单位或审批的
+						//sql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.depart_id = '"+vo.getDepartId()+"' or h.depart_id = '"+vo.getDepartId()+"') ");
+						sql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' or a.sub_unit = '"+ vo.getUnitId()+"' ) ");
+					} else {
+						//看所有的
+					}
+				}
+				if(Objects.equals("0", overStatus)) {
+					//还未过期,但快过期了
+					sql.append("AND a.date_plan > CURDATE() AND a.date_plan <= '" + ybDayStr+"' ");
+				} else if(Objects.equals("1", overStatus)) {
+					//已过期的
+					sql.append(" AND DATE_ADD(a.date_plan, INTERVAL a.num2 DAY) <= CURDATE() ");
+				} else if(Objects.equals("2", overStatus)) {
+					//已过期和快过期的
+					sql.append(" AND (").append("( a.date_plan > CURDATE() AND a.date_plan <= '" + ybDayStr+"') ");
+					sql.append(" OR DATE_ADD(a.date_plan, INTERVAL a.num2 DAY) <= CURDATE())");
+				}
+				sql.append(" GROUP BY a.id ");
+				sql.append( "UNION ");
+			}*/
+		sql.append(" SELECT b.id, c.title zgdw,d.title as sbdw, b.sub_name as subName, '4' as kind, '项目进度整体延期' as content, b.end_date as `endDate`,DATEDIFF(CURDATE(),b.end_date) overDays,b.id as subId, b.name_zrr as nameZrr, b.tel, b.name_lead nameLead, b.tel_Lead telLead ");
+		sql.append(" FROM sub_info b ");
+		sql.append(" LEFT JOIN j_unit c ON b.main_id = c.id ");
+		sql.append(" LEFT JOIN j_unit d ON b.unit_id = d.id ");
+		sql.append(" LEFT JOIN sub_manage f ON f.sub_id = b.id ");
+		sql.append(" LEFT JOIN sub_verify h ON h.sub_id = b.id AND h.logic_delete_flag = 0 ");
+
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" LEFT JOIN sub_source g ON g.sub_id = a.id  and g.logic_delete_flag=0");
+		}
+
+		sql.append(" WHERE (b.`status` >= '1' and b.`status` <= '7' ) AND b.logic_delete_flag = 0 ");
+		if(yearBeginDate != null) {
+			sql.append(" and (");
+			sql.append(" (b.begin_date <= '").append(yearBeginDate).append("' and b.end_date >= '").append(yearEndDate).append("') ");
+			sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+			sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.begin_date <= '").append(yearEndDate).append("') ");
+			sql.append(" or (b.end_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+			sql.append(" ) ");
+		}
+		if(StringUtil.isNotEmpty(projName)) {
+			sql.append(" AND b.sub_name LIKE '%" + projName + "%' ");
+		}
+		if(StringUtil.isNotEmpty(startTime)) {
+			sql.append(" and b.end_date >= '" + startTime + "' ");
+		}
+		if(StringUtil.isNotEmpty(endTime)) {
+			sql.append(" and b.end_date <= '" + endTime + "' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" and g.source_id = '" + zjly+ "' ");
+		}
+
+/*		if (Objects.equals(Boolean.TRUE,containHide)){
+			sql.append(" and b.is_hide =  '1' ");
+		}*/
+
+		if(StringUtil.isNotEmpty(subjectId)) {
+			sql.append(" and a.subject_id = '"+ subjectId+"' ");
+		}
+
+		if(StringUtil.isNotEmpty(hyfl)) {
+			sql.append(" and a.indus_kind = '" + hyfl + "' ");
+		}
+
+
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+			}
+		} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.depart_id = '"+vo.getDepartId()+"' or h.depart_id = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+		if(Objects.equals("0", overStatus)) {
+			//还未过期,但快过期了
+			sql.append("AND b.end_date > CURDATE() AND b.end_date <= '" + ybDayStr+"' ");
+		} else if(Objects.equals("1", overStatus)) {
+			//已过期的
+			sql.append(" AND b.end_date <= CURDATE() ");
+		} else if(Objects.equals("2", overStatus)) {
+			//已过期和快过期的
+			sql.append(" AND (").append("( b.end_date > CURDATE() AND b.end_date <= '" + ybDayStr+"') ");
+			sql.append(" OR b.end_date <= CURDATE())");
+		}
+		sql.append(" GROUP BY b.id ");
+			/*if(!Boolean.TRUE.equals(onlySub)) {
+				sql.append(" UNION ");
+				sql.append(" SELECT a.id, c.title zgdw,d.title as sbdw, b.sub_name as subName, '5' as kind, a.title as content, a.date_conf as `endDate`,DATEDIFF(CURDATE(),a.date_conf) overDays,b.id as subId, b.name_zrr as nameZrr, b.tel, b.name_lead nameLead, b.tel_Lead telLead ");
+				sql.append(" FROM sub_q_info a LEFT JOIN sub_info b ON a.sub_id = b.id ");
+				sql.append(" LEFT JOIN j_unit c ON b.main_id = c.id ");
+				sql.append(" LEFT JOIN j_unit d ON b.unit_id = d.id ");
+				sql.append(" LEFT JOIN sub_manage f ON f.sub_id = a.sub_id ");
+				sql.append(" LEFT JOIN sub_verify h ON h.sub_id = a.sub_id AND h.logic_delete_flag = 0 ");
+				sql.append(" WHERE a.`status` = 0 AND b.logic_delete_flag = 0 and a.logic_delete_flag = 0 ");
+				if(yearBeginDate != null) {
+					sql.append(" and (");
+					sql.append(" (b.begin_date <= '").append(yearBeginDate).append("' and b.end_date >= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.begin_date >= '").append(yearBeginDate).append("' and b.begin_date <= '").append(yearEndDate).append("') ");
+					sql.append(" or (b.end_date >= '").append(yearBeginDate).append("' and b.end_date <= '").append(yearEndDate).append("') ");
+					sql.append(" ) ");
+				}
+				if(StringUtil.isNotEmpty(projName)) {
+					sql.append(" AND b.sub_name LIKE '%" + projName + "%' ");
+				}
+				if(StringUtil.isNotEmpty(startTime)) {
+					sql.append(" and a.date_conf >= '" + startTime + "' ");
+				}
+				if(StringUtil.isNotEmpty(endTime)) {
+					sql.append(" and a.date_conf <= '" + endTime + "' ");
+				}
+				if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+					//项目单位
+					sql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+					if(Boolean.TRUE.equals(vo.getIsUnit())) {
+						//单位用户,看单位全部的
+					} else {
+						//个人用户,看自己申报的
+						sql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+					}
+				} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+					//政府单位
+					if(Objects.equals("0", vo.getStatusProj())) {
+						//看自己部门监管的或者监管单位或审批的
+						sql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' or a.unit_id = '"+vo.getUnitId()+"') ");
+					} else {
+						//看所有的
+					}
+				}
+				if(Objects.equals("0", overStatus)) {
+					//还未过期,但快过期了
+					sql.append("AND a.date_conf > CURDATE() AND a.date_conf <= '" + ybDayStr+"' ");
+				} else if(Objects.equals("1", overStatus)) {
+					//已过期的
+					sql.append(" AND a.date_conf <= CURDATE() ");
+				} else if(Objects.equals("2", overStatus)) {
+					//已过期和快过期的
+					sql.append(" AND (").append("( a.date_conf > CURDATE() AND a.date_conf <= '" + ybDayStr+"') ");
+					sql.append(" OR a.date_conf <= CURDATE())");
+				}
+				sql.append(" GROUP BY a.id ");
+			}*/
+		sql.append(" ) as tem ");
+
+		if (Objects.equals(Boolean.TRUE,blSub)){
+			sql.append(" inner JOIN sec_user_sub us ON tem.subId = us.sub_id AND us.logic_delete_flag =0  ");
+		}else{
+			sql.append(" LEFT JOIN sec_user_sub us ON tem.subId = us.sub_id AND us.logic_delete_flag =0  AND us.user_id='"+vo.getId()+"' ");
+		}
+
+		sql.append(" ORDER BY usersub desc,tem.endDate, subId ASC ");
+		return this.queryForListBySql(sql.toString(), page);
+	}
+
+	@SuppressWarnings("unchecked")
+	public Map<String,Object> getSubAmountForWorkBentch(LoginUserVO vo){
+		/*StringBuffer preBaseSql = new StringBuffer();
+		preBaseSql.append(" SELECT count(1) as num ");
+		preBaseSql.append(" FROM sub_pre_new a LEFT JOIN sub_info b ON a.sub_id = b.id ");
+		preBaseSql.append(" LEFT JOIN sub_manage f ON f.sub_id = a.sub_id ");
+		preBaseSql.append(" LEFT JOIN sub_verify h ON h.sub_id = a.sub_id AND h.logic_delete_flag = 0 ");
+		preBaseSql.append(" WHERE a.logic_delete_flag = 0 AND (b.`status` = 1) AND b.logic_delete_flag = 0 AND NOT ISNULL(a.date_plan) AND ISNULL(a.date_confirm) ");*/
+
+		StringBuffer planBaseSql = new StringBuffer();
+		planBaseSql.append(" SELECT count(1) as num ");
+		planBaseSql.append(" FROM sub_info b ");
+		planBaseSql.append(" LEFT JOIN sub_manage f ON f.sub_id = b.id ");
+		planBaseSql.append(" LEFT JOIN sub_verify h ON h.sub_id = b.id AND h.logic_delete_flag = 0 ");
+		planBaseSql.append(" WHERE b.logic_delete_flag = 0 AND (b.`status` >= '1' and b.`status` <= '7') ");
+
+		/*StringBuffer questionBaseSql = new StringBuffer();
+		questionBaseSql.append(" SELECT count(1) as num ");
+		questionBaseSql.append(" FROM sub_q_info a LEFT JOIN sub_info b ON a.sub_id = b.id ");
+		questionBaseSql.append(" LEFT JOIN j_unit c ON b.main_id = c.id ");
+		questionBaseSql.append(" LEFT JOIN j_unit d ON b.unit_id = d.id ");
+		questionBaseSql.append(" LEFT JOIN sub_manage f ON f.sub_id = a.sub_id ");
+		questionBaseSql.append(" LEFT JOIN sub_verify h ON h.sub_id = a.sub_id AND h.logic_delete_flag = 0 ");
+		questionBaseSql.append(" WHERE a.`status` = 0 AND b.logic_delete_flag = 0 ");*/
+
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			//preBaseSql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+			planBaseSql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+			//questionBaseSql.append(" AND b.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				//preBaseSql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+				planBaseSql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+				//questionBaseSql.append(" AND b.create_user_id = '"+ vo.getId() +"' ");
+			}
+		} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//preBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.depart_id = '"+vo.getDepartId()+"' or h.depart_id = '"+vo.getDepartId()+"' ) ");
+				//planBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.depart_id = '"+vo.getDepartId()+"' or h.depart_id = '"+vo.getDepartId()+"' ) ");
+				//questionBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.depart_id = '"+vo.getDepartId()+"' or h.depart_id = '"+vo.getDepartId()+"' or a.unit_id = '"+vo.getUnitId()+"') ");
+				//preBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' or a.sub_unit = '"+ vo.getUnitId()+"' ) ");
+				planBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' ) ");
+				//questionBaseSql.append(" AND ( b.unit_id = '"+ vo.getUnitId()+"' or b.main_id = '"+vo.getUnitId()+"' or f.manage_id = '"+vo.getUnitId()+"' or h.unit_id = '"+vo.getUnitId()+"' or a.unit_id = '"+vo.getUnitId()+"') ");
+			} else {
+				//看所有的
+			}
+		}
+
+		List<TSystable> list = tSystableDao.getSysDataByKind(SysTableKind.YQTS);
+		//延期天数
+		Integer yqts = 0;
+		if(CollectionUtil.isNotEmpty(list) && list.size() > 0) {
+			yqts = Integer.valueOf(list.get(0).getCode());
+		}
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(new Date());
+		calendar.add(Calendar.DAY_OF_MONTH, yqts);
+		String ybDayStr = DateUtil.getDateStr(calendar.getTime(), DateUtil.FORMAT_DATE);
+
+
+		//sub_pre已过期
+		//String subPreOver = preBaseSql.toString()+ " AND a.date_plan <= CURDATE() ";
+		//sub_pre待过期
+		//String subPreWillOver = preBaseSql.toString() + " AND a.date_plan > CURDATE() AND a.date_plan <= '"+ybDayStr+"' ";
+		//sub_plan已过期
+		String subPlanOver = planBaseSql.toString()+ " AND b.end_date <= CURDATE() ";
+		//sub_plan待过期
+		String subPlanWillOver = planBaseSql.toString() + " AND b.end_date > CURDATE() AND b.end_date <= '"+ybDayStr+"' ";
+		//sub_q_info已过期
+		//String questionOver = questionBaseSql.toString()+ " AND a.date_conf <= CURDATE() ";
+		//sub_q_info待过期
+		//String questionWillOver = questionBaseSql.toString() + " AND a.date_conf > CURDATE() AND a.date_conf <= '"+ybDayStr+"' ";
+
+		//Map<String, BigInteger> subPreOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+subPreOver+" GROUP BY a.id) as tem ");
+		//Map<String, BigInteger> subPreWillOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+subPreWillOver+" GROUP BY a.id) as tem ");
+		Map<String, BigInteger> subPlanOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+subPlanOver+" GROUP BY b.id) as tem ");
+		Map<String, BigInteger> subPlanWillOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+subPlanWillOver+" GROUP BY b.id) as tem ");
+		//Map<String, BigInteger> questionOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+questionOver+" GROUP BY a.id) as tem ");
+		//Map<String, BigInteger> questionWillOverNum = (Map<String, BigInteger>)this.queryForObjectBySql("SELECT COUNT(*) as num FROM ("+questionWillOver+" GROUP BY a.id) as tem ");
+		Map<String, Object> result= new HashMap<>();
+		//result.put("isOver", subPreOverNum.getOrDefault("num", BigInteger.ZERO).add(subPlanOverNum.getOrDefault("num", BigInteger.ZERO))/*.add(questionOverNum.getOrDefault("num", BigInteger.ZERO))*/);
+		//result.put("willOver", subPreWillOverNum.getOrDefault("num", BigInteger.ZERO).add(subPlanWillOverNum.getOrDefault("num", BigInteger.ZERO))/*.add(questionWillOverNum.getOrDefault("num", BigInteger.ZERO))*/);
+		result.put("isOver", subPlanOverNum.getOrDefault("num", BigInteger.ZERO));
+		result.put("willOver", subPlanWillOverNum.getOrDefault("num", BigInteger.ZERO));
+		return result;
+	}
+
+	public Map<String,Object> getSubInfoById(String id, String queryYear){
+		StringBuffer sql = new StringBuffer();
+
+
+		String subInfoTableName = "sub_info";
+/*
+		if(StringUtil.isNotEmpty(queryYear)&&(!queryYear.equals("undefined"))) {
+			HistoryVO historyVO = new HistoryVO();
+			historyVO.setYear(queryYear);
+			staicsMapper.historyLib(historyVO);
+			subInfoTableName = historyVO.getResult();
+		}
+*/
+
+		//20231205  增加项目 今年  年度计划投资,年度实际投资
+		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyyMM");
+		Date date=new Date();
+		String  yearMonth= simpleDateFormat.format(date);
+		String year=yearMonth.substring(0,4);
+		Integer numBeginMonth=Integer.parseInt(year+"01");
+		Integer numEndMonth=Integer.parseInt(yearMonth);
+		Calendar calendar_1=Calendar.getInstance();
+		calendar_1.set(Calendar.DAY_OF_MONTH,5);
+		calendar_1.set(Calendar.HOUR_OF_DAY,23);
+		String month=yearMonth.substring(2,yearMonth.length());
+		if (calendar_1.getTime().getTime()>date.getTime()){
+			numEndMonth=numEndMonth-2;
+		}else{
+			numEndMonth=numEndMonth-1;
+		}
+
+
+		//每年1月份, 投资为0  2月5号之前 投资为0
+		if ("01".equals(month)||("02".equals(month)&&calendar_1.getTime().getTime()>date.getTime())){
+			sql.append(" select sa.yearAmt,src.yearAmtSj,src.yearAmtRt,'0' AS `offset`,sqi.title problemReason,IF (us.id IS NULL, 0, 1) AS isBl,a.*,b.title as unitName,f.title as mainName, c.title as indusName, d.title as manageName, e.title subjectId ");
+
+		}else {
+			sql.append(" select sa.yearAmt,src.yearAmtSj,src.yearAmtRt,IF (sa.yearAmt != 0,ROUND((src.yearAmtSj - sa.yearAmt) * 100 / sa.yearAmt,2),NULL) AS `offset`,sqi.title problemReason,IF (us.id IS NULL, 0, 1) AS isBl,a.*,b.title as unitName,f.title as mainName, c.title as indusName, d.title as manageName, e.title subjectId ");
+		}
+		sql.append(" from "+subInfoTableName+" a ");
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit d ON a.manage_id = d.id ");
+		sql.append(" LEFT JOIN j_unit f ON a.main_id = f.id ");
+		sql.append(" left join t_systable c on a.indus_kind = c.id ");
+		sql.append(" left join t_systable e on a.subject_id = e.id ");
+		sql.append(" LEFT JOIN sec_user_sub us ON a.id = us.sub_id  AND us.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sub_q_info sqi ON sqi.sub_id=a.id AND sqi.logic_delete_flag=0 AND sqi.`status`='0' AND sqi.kind = "+ JUnitKind.ZFDW.getCode()+" ");
+
+
+		//20231219  增加项目 今年  年度计划投资,年度实际投资
+//		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy");
+//		Date date=new Date();
+//		String  year= simpleDateFormat.format(date);
+
+		sql.append(" LEFT JOIN ( SELECT sum(amt) yearAmt, sa.sub_id FROM sub_amtplan sa WHERE sa.logic_delete_flag = 0 AND sa.y_month >='"+numBeginMonth+"' AND sa.y_month <= '"+numEndMonth+"'  GROUP BY sa.sub_id ) sa ON sa.sub_id=a.id   ");
+		sql.append(" LEFT JOIN ( SELECT sum(amt) yearAmtSj,sum( amt_rt) yearAmtRt,src.sub_id FROM sub_rpt_cont src WHERE src.logic_delete_flag = 0 AND src.kj_month >= '"+numBeginMonth+"' AND src.kj_month <= '"+numEndMonth+"'   GROUP BY src.sub_id ) src ON src.sub_id=a.id    ");
+
+		sql.append(" where a.id = ?");
+		sql.append(" GROUP BY a.id ");
+
+		return (Map<String,Object>)this.queryForObjectBySql(sql.toString(), id);
+	}
+
+	/**
+	 * 查询过程管理列表
+	 * @param page
+	 * @param vo
+	 * @param subName
+	 * @param kind
+	 * @param propKind
+	 * @param indusKind
+	 * @param status
+	 * @param beginDateStart
+	 * @param beginDateEnd
+	 * @return
+	 */
+	public Page pageGc(Page page, LoginUserVO vo,String subName, String kind,
+					   String propKind, String indusKind, String status, String beginDate, String endDate) {
+		StringBuffer sql = new StringBuffer();
+
+		sql.append(" select if(us.id is NULL,0,1) as usersub,a.id,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal,a.amt_year as amtYear, a.reason, ");
+		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as manageName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh,a.status_tg statusTg ");
+		sql.append(" ,(select src.num_bl FROM sub_rpt_cont as src where src.sub_id =a.id and src.logic_delete_flag = 0 and src.kind = '1' and not isnull(src.num_bl) order by kj_month desc limit 1) as numBl ");
+		sql.append(" from sub_info a ");
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit c ON a.manage_id = c.id ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sec_user_sub us ON a.id = us.sub_id AND us.logic_delete_flag = 0 AND us.user_id = '"+vo.getId()+"' ");
+		sql.append(" where a.logic_delete_flag = 0 ");
+		sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+		if(!Boolean.TRUE.equals(vo.getIsUnit())) {
+			sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+		}
+		if(StringUtil.isNotEmpty(status)) {
+			sql.append(" and a.`status` = '" + status + "' ");
+		} else {
+			sql.append(" AND (a.`status` = '6' or a.`status` = 7 or a.`status` = '8' )");
+		}
+		if(StringUtil.isNotEmpty(subName)) {
+			sql.append(" and a.sub_name like '" + subName + "' ");
+		}
+		if(StringUtil.isNotEmpty(kind)) {
+			//遍历
+			String [] kinds=kind.split(",");
+			String sqlTemp="";
+			for (String temp:kinds){
+
+				sqlTemp=sqlTemp+ " INSTR (a.kind,'"+temp+"')>0  OR ";
+			}
+			//去掉最后的 OR
+			String sqlCheck=sqlTemp.substring(0,sqlTemp.length()-3);
+
+			sql.append(" AND ( "+sqlCheck+" )");
+		}
+		if(StringUtil.isNotEmpty(propKind)) {
+			sql.append(" and a.prop_kind = '" + propKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" and a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(beginDate) && StringUtil.isNotEmpty(endDate)) {
+			sql.append(" and (");
+			sql.append(" (a.begin_date <= '").append(beginDate).append("' and a.end_date >= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.begin_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.end_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" ) ");
+		}
+		sql.append(" GROUP BY a.id ");
+		sql.append(" order by usersub desc,a.begin_date,a.create_time desc");
+		return this.queryForListBySql(sql.toString(), page);
+	}
+
+
+	public List<Map<String,Object>> queryProcessProjects(LoginUserVO vo,String subName, String kind,
+														 String propKind, String indusKind, String status, String beginDate, String endDate, Boolean containHide) {
+		StringBuffer sql = new StringBuffer();
+
+		sql.append(" select a.id,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal,a.amt_year as amtYear, a.reason, ");
+		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as manageName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh ");
+
+		//关联问题数量
+		sql.append(" ,(select count(*) FROM sub_q_info as sqi WHERE sqi.sub_id=a.id AND sqi.logic_delete_flag=0  and sqi.status = 0) as problemNum ");
+
+
+		sql.append(" from sub_info a ");
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit c ON a.manage_id = c.id ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" where a.logic_delete_flag = 0  ");
+		sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+		if(!Boolean.TRUE.equals(vo.getIsUnit())) {
+			sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+		}
+	/*	if(Boolean.FALSE.equals(containHide)) {
+			sql.append(" AND (isnull(a.is_hide) or a.is_hide = '0') ");
+		}*/
+		if(StringUtil.isNotEmpty(status)) {
+			sql.append(" and a.`status` = '" + status + "' ");
+		} else {
+			sql.append(" AND (a.`status` = 'A' or a.`status`= '1' or a.`status` = '6' or a.`status` = 7 or a.`status` = '8' )");
+		}
+		if(StringUtil.isNotEmpty(subName)) {
+			sql.append(" and a.sub_name like '" + subName + "' ");
+		}
+		if(StringUtil.isNotEmpty(kind)) {
+			sql.append(" and a.kind = '" + kind + "' ");
+		}
+		if(StringUtil.isNotEmpty(propKind)) {
+			sql.append(" and a.prop_kind = '" + propKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" and a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(beginDate) && StringUtil.isNotEmpty(endDate)) {
+			sql.append(" and (");
+			sql.append(" (a.begin_date <= '").append(beginDate).append("' and a.end_date >= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.begin_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.end_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" ) ");
+		}
+		sql.append(" GROUP BY a.id ");
+		sql.append(" order by a.begin_date,a.create_time desc");
+		return (List<Map<String, Object>>) this.queryForObjListBySql(sql.toString());
+	}
+
+	public Page pageQueryNew(Page page, LoginUserVO vo, SubInfoQueryTzVO queryVO) {
+		List<Map<String, String>> maps = null;
+		if(StringUtil.isEmpty(queryVO.getYear())) {
+			queryVO.setYear(String.valueOf(cn.hutool.core.date.DateUtil.thisYear()));
+		}
+
+		if (queryVO.getBeginDate() == null) {
+			queryVO.setBeginDate("1900-01-01 00:00:00");
+		}
+		if (StringUtil.isNotEmpty(queryVO.getIsFix())){
+			queryVO.setQueryTimeType("4");
+		}
+
+		String yearStr = queryVO.getBeginDate().substring(0, 4);
+		HistoryVO historyVO = new HistoryVO();
+		historyVO.setYear(yearStr);
+
+
+		String beginYearMonth=yearStr+"01";
+		String endYearMonth=yearStr+"12";
+
+		//拼接月份
+		if (StringUtil.isNotEmpty(queryVO.getBeginDate())){
+			beginYearMonth=queryVO.getBeginDate().substring(0, 4)+queryVO.getBeginDate().substring(5,7);
+		}
+
+		if (StringUtil.isNotEmpty(queryVO.getEndDate())){
+			endYearMonth=queryVO.getEndDate().substring(0, 4)+queryVO.getEndDate().substring(5,7);
+		}
+		PageHelper.startPage(page.getPageNo(), page.getPageSize());
+		if("2".equals(queryVO.getType())){
+			maps = subInfoMapper.pageQueryNew(beginYearMonth,endYearMonth,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId(), queryVO.getType());
+		}else if("JSDD".equals(queryVO.getType())){
+			maps = subInfoMapper.pageQueryJSDD(beginYearMonth,endYearMonth,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId(), queryVO.getType());
+		}else if("HYFL".equals(queryVO.getType())){
+			maps = subInfoMapper.pageQueryHYFL(beginYearMonth,endYearMonth,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId(), queryVO.getType());
+		}else if("PLD".equals(queryVO.getType())){
+			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+			String lastMonth= "";
+			if (StringUtil.isNotEmpty(queryVO.getEndDate())){
+				LocalDate currentDate = LocalDate.parse(queryVO.getEndDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+				LocalDate lastMonthDate = currentDate.minusMonths(1);
+				lastMonth = lastMonthDate.format(formatter);
+			}else{
+				LocalDate currentDate = LocalDate.now();
+				LocalDate lastMonthDate = currentDate.minusMonths(1);
+				lastMonth = lastMonthDate.format(formatter);
+			}
+			endYearMonth=lastMonth.substring(0, 4)+lastMonth.substring(5,7);
+			maps = subInfoMapper.pageQueryPLD(beginYearMonth,endYearMonth,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId());
+
+		}else if("ZB".equals(queryVO.getType())){
+			LocalDate today = LocalDate.now();
+			DayOfWeek dayOfWeek = today.getDayOfWeek();
+
+			LocalDate startOfWeek;
+			LocalDate endOfWeek;
+
+			if (dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY) {
+				// 获取本周周一
+				startOfWeek = today.with(DayOfWeek.MONDAY);
+				// 获取本周周日
+				endOfWeek = today.with(DayOfWeek.SUNDAY);
+			} else {
+				// 获取上周周一
+				startOfWeek = today.minusWeeks(1).with(DayOfWeek.MONDAY);
+				// 获取上周周日
+				endOfWeek = today.minusWeeks(1).with(DayOfWeek.SUNDAY);
+			}
+			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+			String startDate = startOfWeek.format(formatter);
+			String endDate = endOfWeek.format(formatter);
+			if ("2".equals(queryVO.getFixCat()) && (dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY || dayOfWeek == DayOfWeek.MONDAY)){
+				maps = subInfoMapper.pageQueryZB(beginYearMonth,endYearMonth,startDate,endDate,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId());
+			}else{
+				maps = subInfoMapper.pageQueryZB(beginYearMonth,endYearMonth,startDate,endDate,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId());
+			}
+		}else if("YB".equals(queryVO.getType())){
+			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
+			String lastMonth= "";
+			if (StringUtil.isNotEmpty(queryVO.getEndDate())){
+				LocalDate currentDate = LocalDate.parse(queryVO.getEndDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+				LocalDate lastMonthDate = currentDate.minusMonths(1);
+				lastMonth = lastMonthDate.format(formatter);
+			}else{
+				LocalDate currentDate = LocalDate.now();
+				LocalDate lastMonthDate = currentDate.minusMonths(1);
+				lastMonth = lastMonthDate.format(formatter);
+			}
+			endYearMonth=lastMonth.substring(0, 4)+lastMonth.substring(5,7);
+			// 获取当前日期
+			LocalDate currentDate = LocalDate.now();
+			// 获取当前月份
+			int currentMonth = currentDate.getMonthValue();
+			if(currentMonth == 1){
+				LocalDate lastMonthDate = currentDate.minusMonths(1);
+				lastMonth = lastMonthDate.format(formatter);
+				queryVO.setYear(String.valueOf(currentDate.getYear()-1));
+				beginYearMonth=lastMonth.substring(0, 4)+"01";
+				endYearMonth=lastMonth.substring(0, 4)+"12";
+			}
+
+			maps = subInfoMapper.pageQueryYB(beginYearMonth,endYearMonth,queryVO.getYear(), queryVO.getFixCat(), queryVO.getSubjectId());
+		}
+		PageInfo<Map<String, String>> pageInfo = new PageInfo<>(maps);
+		page.setList(maps);
+		page.setTotalCount(pageInfo.getTotal());
+		return page;
+	}
+
+	public Page pageTZ(Page page, LoginUserVO vo, SubInfoQueryTzVO queryVO) {
+		StringBuffer sql = new StringBuffer();
+		if(StringUtil.isEmpty(queryVO.getYear())) {
+			queryVO.setYear(String.valueOf(cn.hutool.core.date.DateUtil.thisYear()));
+		}
+
+		if (queryVO.getBeginDate() == null) {
+			queryVO.setBeginDate("1900-01-01 00:00:00");
+		}
+		if (StringUtil.isNotEmpty(queryVO.getIsFix())){
+			queryVO.setQueryTimeType("4");
+		}
+
+		String yearStr = queryVO.getBeginDate().substring(0, 4);
+		HistoryVO historyVO = new HistoryVO();
+		historyVO.setYear(yearStr);
+/*		staicsMapper.historyLib(historyVO);*/
+		String subInfoTableName = "";
+
+		 subInfoTableName = "sub_info";
+
+
+		String beginYearMonth=yearStr+"01";
+		String endYearMonth=yearStr+"12";
+
+		//拼接月份
+		if (StringUtil.isNotEmpty(queryVO.getBeginDate())){
+			beginYearMonth=queryVO.getBeginDate().substring(0, 4)+queryVO.getBeginDate().substring(5,7);
+		}
+
+		if (StringUtil.isNotEmpty(queryVO.getEndDate())){
+			endYearMonth=queryVO.getEndDate().substring(0, 4)+queryVO.getEndDate().substring(5,7);
+		}
+
+
+
+
+		//3为计划投资  去掉 计划投资为0的    4为实际投资,去掉实际投资为 0的
+		if ("3".equals(queryVO.getAmtType())||"4".equals(queryVO.getAmtType())||"5".equals(queryVO.getAmtType())){
+
+			queryVO.setBeginDate(yearStr+"-01-01");
+			queryVO.setEndDate(yearStr+"-12-31");
+			sql.append(" select *  from ( ");
+		}
+
+
+		//20230816  增加联系人,负责人信息。  用于导出。
+		sql.append(" select if(us.id is NULL,0,1) as usersub,sum(sa.amt) yearAmt,sum(src.amt) yearAmtSj,sum(src.amt_rt) yearAmtRt,a.id,a.status_fgw, a.date_fgw,a.indus_kind indusKind,a.subject_id,a.name_lead,a.tel_lead,a.name_zrr,a.tel,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal, a.reason, a.unit_id as unitId, ");
+		sql.append(" a.reason_no_rk as reasonNoRk,a.reason_no_amt as reasonNoAmt,a.reason_no_kg as reasonNoKg,a.reason_q as reasonq,a.reason_jd as reasonJd, a.is_rk as isRk, a.kind_nature, ");
+		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as mainName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh,a.status_sp statusSp,a.status_tg statusTg ");
+		if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+			sql.append(", g.amt amtSource, t.title amtSourceName ");
+
+		}
+		if(Boolean.TRUE.equals(queryVO.getApp())) {
+			sql.append(", NOT ISNULL(sc.id) as isAttention ");
+		} else {
+			//sql.append(", (select sp.end_date FROM sub_plan as sp where sp.sub_id =a.id and sp.logic_delete_flag = 0 and sp.status_sp = '1' ) as planDate, ");
+			sql.append(" ,IFNULL((select sum(amt) from sub_amtplan sa where sa.sub_id = a.id and sa.y_month >= '"+beginYearMonth+"'  and sa.y_month <= '"+endYearMonth+"'    and not isnull(sa.amt) group by sa.sub_id) , 0) as yearPlanAmt, ");
+			sql.append(" IFNULL((select sum(amt) from sub_rpt_cont src where src.sub_id = a.id and src.kj_month >= '"+beginYearMonth+"'  and src.kj_month <= '"+endYearMonth+"'     and not isnull(src.amt) group by src.sub_id), 0) as yearEndAmt, ");
+			sql.append(" IFNULL((select sum(amt_rt) from sub_rpt_cont src5 where src5.sub_id = a.id and src5.kj_month >= '"+beginYearMonth+"' and src.kj_month <= '"+endYearMonth+"'    and not isnull(src5.amt_rt) group by src5.sub_id), 0) as yearRtAmt ");
+			//sql.append(" (select count(1) from sub_start ss where  ss.sub_id = a.id and ss.logic_delete_flag = 0 ) as hasStart, ");
+			//sql.append(" (select count(1) from sub_completed sc where sc.sub_id = a.id and sc.logic_delete_flag = 0) as hasEnd ");
+
+		}
+		sql.append(" from "+subInfoTableName+" a ");
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit c ON a.main_id = c.id ");
+		if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+			sql.append(" LEFT JOIN sub_source g ON g.sub_id = a.id  and g.logic_delete_flag=0");
+			sql.append(" LEFT JOIN t_systable t ON t.id = g.source_id  and t.logic_delete_flag=0");
+		}
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			sql.append(" LEFT JOIN sub_verify e ON a.id = e.sub_id AND e.logic_delete_flag = 0 ");
+			sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		}
+		sql.append(" LEFT JOIN sec_user_sub us ON a.id = us.sub_id AND us.logic_delete_flag =0  AND us.user_id='"+vo.getId()+"' ");
+		if(Boolean.TRUE.equals(queryVO.getBlSub())) {
+			//是否分管先项目
+			sql.append(" INNER JOIN sec_user_sub sus ON a.id = sus.sub_id AND sus.logic_delete_flag = 0 ");
+		}
+		if(Boolean.TRUE.equals(queryVO.getApp())) {
+			//是app查询则加上关注条件
+			sql.append(" LEFT JOIN sub_concern sc ON a.id = sc.sub_id and sc.user_id = '"+ vo.getId()+"' ");
+		}
+
+//		//判断项目状态如果  查询在建已开工数    关联开工表
+//		if(ProjectStatusEnum.YKG.getKey().equals(queryVO.getStatus())){
+//			sql.append(" LEFT JOIN sub_start ss on ss.sub_id = a.id  and ss.logic_delete_flag = 0  ");
+//		}
+//
+//		//判断项目状态如果  查询在建已开工数    关联开工表
+//		if(ProjectStatusEnum.END.getKey().equals(queryVO.getStatus())){
+//			sql.append(" LEFT JOIN sub_completed scd on scd.sub_id = a.id  and scd.logic_delete_flag = 0  ");
+//		}
+
+
+
+		//20231205  增加项目 今年  年度计划投资,年度实际投资
+		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy");
+		Date date=new Date();
+		String  year= simpleDateFormat.format(date);
+
+		sql.append(" LEFT JOIN sub_amtplan sa ON sa.sub_id=a.id  and   sa.y_month like '"+year+"%' ");
+		sql.append(" LEFT JOIN sub_rpt_cont src ON src.sub_id=a.id  and  src.kj_month like '"+year+"%'  ");
+
+
+		sql.append(" where a.logic_delete_flag = 0 ");
+		//2024-01-05修改该查询为大屏穿透专用,强制限定只能查询is_hide = 1的项目
+
+		//2024-05-08 添加参数用于查询储备项目。
+/*		if (queryVO.getIsCb()!=null){
+			if (queryVO.getIsCb()){
+				sql.append(" and ( a.is_hide = '0' or a.is_hide  is null )  ");
+			}else{
+				sql.append(" and a.is_hide = '1' ");
+			}
+		}
+		else{
+			sql.append(" and a.is_hide = '1' ");
+		}*/
+
+
+
+		sql.append(" AND a.status != '" + ProjectStatusEnum.TEMPSAVE.getKey()+"' ");
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+			}
+		}
+		else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.depart_id = '"+vo.getDepartId()+"' or e.depart_id = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.manage_id = '"+vo.getUnitId()+"' or e.unit_id = '"+vo.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+				if(StringUtil.isNotEmpty(queryVO.getHydw())) {
+					sql.append(" AND ( a.unit_id = '"+ queryVO.getHydw()+"' or a.main_id = '"+queryVO.getHydw()+"' or d.manage_id = '"+queryVO.getHydw()+"' or e.unit_id = '"+queryVO.getHydw()+"' ) ");
+				}
+			}
+		}
+		if(StringUtil.isNotEmpty(queryVO.getKindNature())) {
+			sql.append(" AND a.kind_nature  = '"+ queryVO.getKindNature()+"' ");
+		}
+		//是否在建
+		if(Objects.equals("1", queryVO.getIsZj())) {
+			//2024/6/3 在建包含 停工项目
+//			sql.append(" and a.`status` <> '" + ProjectStatusEnum.STOP.getKey()+"' ");
+			sql.append(" and a.`status` <> '"+ ProjectStatusEnum.END.getKey()+"' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getOtherStatus())) {
+
+
+
+			//判断项目状态如果  查询在建已开工数
+
+//			if(ProjectStatusEnum.YKG.getKey().equals(queryVO.getOtherStatus())){
+//
+////				sql.append(" and ss.status = 9 " );
+////				if (StringUtil.isNotEmpty(queryVO.getBeginDate())&&StringUtil.isNotEmpty(queryVO.getEndDate())){
+////					sql.append(" and  ss.date_sq >= "+queryVO.getBeginDate()+ " and ss.date_sq <=" + queryVO.getEndDate() );
+////				}
+//
+////				sql.append(" and a.prop_kind = '1'  ");  //查询在建
+//				sql.append(" AND (a.`status`='7' OR a.`status` = '8' OR a.`status` ='A')  ");
+//			}
+//			else{
+
+				String[] split = queryVO.getOtherStatus().split(",");
+				sql.append("and (");
+				for(String st : split) {
+					sql.append(" a.`status` = '"+ st +"' or ");
+				}
+				sql.delete(sql.length()-3, sql.length());
+				sql.append(")");
+//			}
+
+		}
+		else if(StringUtil.isNotEmpty(queryVO.getStatus())) {
+
+//			//判断项目状态如果  查询在建已开工数    关联开工表
+//			if(ProjectStatusEnum.YKG.getKey().equals(queryVO.getStatus())){
+//
+//				sql.append(" and a.prop_kind = '1'  ");  //查询在建
+//				sql.append(" AND (a.`status`='7' OR a.`status` = '8' OR a.`status` ='A')  ");
+////				sql.append(" and ss.status = 9 " );
+////				if (StringUtil.isNotEmpty(queryVO.getBeginDate())&&StringUtil.isNotEmpty(queryVO.getEndDate())){
+////					sql.append(" and  ss.date_sq >= "+queryVO.getBeginDate()+ " and ss.date_sq <=" + queryVO.getEndDate() );
+////				}
+//			} else{
+
+				sql.append(" and a.`status` = '" + queryVO.getStatus() + "' ");
+
+//			}
+
+		} else {
+			sql.append(" AND a.status != '" + ProjectStatusEnum.TEMPSAVE.getKey()+"' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getSubName())) {
+			sql.append(" and a.sub_name like '" + queryVO.getSubName() + "' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getKind())) {
+			//遍历
+			String [] kinds=queryVO.getKind().split(",");
+			String sqlTemp="";
+			for (String temp:kinds){
+
+				sqlTemp=sqlTemp+ " INSTR (a.kind,'"+temp+"')>0  OR ";
+			}
+			//去掉最后的 OR
+			String sqlCheck=sqlTemp.substring(0,sqlTemp.length()-3);
+
+			sql.append(" AND ( "+sqlCheck+" )");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getPropKind())) {
+			if(queryVO.getPropKind().indexOf(",") > 0) {
+				sql.append(" and a.prop_kind IN (");
+				for(String propKind : queryVO.getPropKind().split(",")) {
+					sql.append("'").append(propKind).append("',");
+				}
+				sql.delete(sql.length()-1, sql.length());
+				sql.append(") ");
+			}else {
+				sql.append(" and a.prop_kind = '" + queryVO.getPropKind() + "' ");
+			}
+
+		}
+		if(StringUtil.isNotEmpty(queryVO.getIndusKind())) {
+			sql.append(" and a.indus_kind = '" + queryVO.getIndusKind() + "' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getLight())) {
+			sql.append(" AND ( a.status_fgw IN (" + queryVO.getLight()+" ) ");
+			if(queryVO.getLight().contains("0")) {
+				sql.append(" or isnull(a.status_fgw) ");
+			}
+			sql.append(" ) ");
+		}
+
+		if(StringUtil.isNotEmpty(queryVO.getAbc())) {
+			sql.append(" and a.abc = '" + queryVO.getAbc() + "' ");
+		}
+
+		//20240307 判断是否逾期
+		if (StringUtil.isNotEmpty(queryVO.getIsYq())){
+
+			if ("1".equals(queryVO.getIsYq())){
+				sql.append(" and (a.`status` = '7' or a.`status` = '8' ) ");
+				sql.append(" AND a.end_date <= CURDATE() ");
+			}
+
+		}
+
+		//查询年固定资产投资项目
+		if (StringUtil.isNotEmpty(queryVO.getIsFix())) {
+			if (queryVO.getIsFix().equals("1")) {
+				if (queryVO.getFixCat().contains(",")) {
+					sql.append(" and  exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "' and  (");
+					String[] ary = queryVO.getFixCat().split(",");
+					sql.append(" f.cat='" + ary[0] + "'");
+					for (int i = 1; i < ary.length; i++) {
+						sql.append(" or f.cat='" + ary[i] + "'");
+					}
+					sql.append(") )");
+				} else {
+					sql.append(" and  exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "' and  f.cat='" + queryVO.getFixCat() + "') ");
+				}
+			}
+			if (queryVO.getIsFix().equals("0")) {
+				sql.append(" and not exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "') ");
+			}
+			if (queryVO.getIsFix().equals("2")) {
+				if (StringUtil.isNotEmpty(queryVO.getFixCat())) {
+					if (queryVO.getFixCat().contains(",")) {
+						sql.append(" and  exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "' and  (");
+						String[] ary = queryVO.getFixCat().split(",");
+						sql.append(" f.cat='" + ary[0] + "'");
+						for (int i = 1; i < ary.length; i++) {
+							sql.append(" or f.cat='" + ary[i] + "'");
+						}
+						sql.append(") )");
+					} else {
+						sql.append(" and  exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "' and  f.cat='" + queryVO.getFixCat() + "') ");
+					}
+				} else {
+					sql.append(" and  exists(select 1 from sub_fix f where a.id=f.sub_id and f.year='" + queryVO.getYear() + "') ");
+				}
+			}
+		}
+
+		//20230530 增加资金来源
+		if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+			sql.append(" and g.source_id = '" + queryVO.getZjly() + "' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getSubjectId())) {
+			sql.append(" and a.subject_id = '"+ queryVO.getSubjectId()+"' ");
+		}
+		if(StringUtil.isEmpty(queryVO.getQueryTimeType())) {
+			if(StringUtil.isNotEmpty(queryVO.getBeginDate()) && StringUtil.isNotEmpty(queryVO.getEndDate())) {
+				sql.append(" and (");
+				sql.append(" (a.begin_date <= '").append(queryVO.getBeginDate()).append("' and a.end_date >= '").append(queryVO.getEndDate()).append("') ");
+				sql.append(" or (a.begin_date >= '").append(queryVO.getBeginDate()).append("' and a.end_date <= '").append(queryVO.getEndDate()).append("') ");
+				sql.append(" or (a.begin_date >= '").append(queryVO.getBeginDate()).append("' and a.begin_date <= '").append(queryVO.getEndDate()).append("') ");
+				sql.append(" or (a.end_date >= '").append(queryVO.getBeginDate()).append("' and a.end_date <= '").append(queryVO.getEndDate()).append("') ");
+				sql.append(" ) ");
+			}
+		}
+		else {
+			switch (queryVO.getQueryTimeType()) {
+				case "1":
+					//计划开工日期
+					if(StringUtil.isNotEmpty(queryVO.getBeginDate())) {
+						sql.append("AND a.begin_date >= '"+ queryVO.getBeginDate()+"' ");
+					}
+					if(StringUtil.isNotEmpty(queryVO.getEndDate())) {
+						sql.append(" AND a.begin_date <= '" + queryVO.getEndDate()+"' ");
+					}
+					break;
+				case "2":
+					//计划结束日期
+					if(StringUtil.isNotEmpty(queryVO.getBeginDate())) {
+						sql.append("AND a.end_date >= '"+ queryVO.getBeginDate()+"' ");
+					}
+					if(StringUtil.isNotEmpty(queryVO.getEndDate())) {
+						sql.append(" AND a.end_date <= '" + queryVO.getEndDate()+"' ");
+					}
+					break;
+				case "3":
+					//创建时间
+					if(StringUtil.isNotEmpty(queryVO.getBeginDate())) {
+						sql.append("AND a.create_time >= '"+ queryVO.getBeginDate()+"' ");
+					}
+					if(StringUtil.isNotEmpty(queryVO.getEndDate())) {
+						sql.append(" AND a.create_time <= '" + queryVO.getEndDate()+"' ");
+					}
+					break;
+				default:
+					break;
+			}
+		}
+		if(StringUtil.isNotEmpty(queryVO.getStartAmt())) {
+			sql.append(" and a.amt_total >= '" + queryVO.getStartAmt() + "' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getEndAmt())) {
+			sql.append(" and a.amt_total < '" + queryVO.getEndAmt() + "' ");
+		}
+		if(StringUtil.isNotEmpty(queryVO.getSbdw())) {
+			sql.append(" AND b.title like '%" + queryVO.getSbdw()+"%' ");
+		}
+		if(queryVO.getEndBl() != null|| queryVO.getEndBlPlus() !=null) {
+			//先查询存在计划投资金额的项目
+			StringBuffer planAmtSubIdQuery = new StringBuffer();
+			planAmtSubIdQuery.append(" SELECT sub_id,SUM(amt) as planAmt from sub_amtplan WHERE y_month RLIKE '"+queryVO.getYear()+"' and not isnull(amt) GROUP BY sub_id ");
+			List<Map<String, Object>> planAmtData = (List<Map<String, Object>>)this.queryForObjListBySql(planAmtSubIdQuery.toString());
+			Map<String, Object> bigSubMap = new HashMap<>();
+			if(CollectionUtil.isNotEmpty(planAmtData)) {
+				//筛选金额不为0的项目
+				bigSubMap.putAll(planAmtData.stream().filter(item->{
+					return BigDecimal.ZERO.compareTo(new BigDecimal(String.valueOf(item.get("planAmt")))) != 0;
+				}).collect(Collectors.toMap(i->String.valueOf(i.get("sub_id")), i->i.get("planAmt"), (a,b)->b)));
+			}
+			if(CollectionUtil.isNotEmpty(bigSubMap)) {
+				//再查询实际投资金额的项目
+				StringBuffer endAmtSubIdQuery = new StringBuffer();
+				endAmtSubIdQuery.append(" SELECT sub_id, SUM(amt) as endAmt from sub_rpt_cont where kj_month RLIKE '"+queryVO.getYear()+"' and not isnull(amt) GROUP BY sub_id ");
+				List<Map<String, Object>> endAmtData = (List<Map<String, Object>>)this.queryForObjListBySql(endAmtSubIdQuery.toString());
+				if(CollectionUtil.isNotEmpty(endAmtData)) {
+					List<String> moreThanSubId = endAmtData.stream().filter(item->{
+						//先筛选同时存在计划金额和实际金额的项目,并排除实际金额为0的数据
+						return bigSubMap.containsKey(String.valueOf(item.get("sub_id"))) && !Objects.equals(0, item.get("endAmt"));
+					}).filter(item->{
+						//筛选完成率大于查询条件的项目
+						BigDecimal planAmt = new BigDecimal(String.valueOf(bigSubMap.get(String.valueOf(item.get("sub_id")))));
+						BigDecimal endAmtValue = new BigDecimal(String.valueOf(item.get("endAmt")));
+
+						//判断两个比例都存在
+						if (queryVO.getEndBl() != null && queryVO.getEndBlPlus() !=null){
+							Boolean filter = endAmtValue.divide(planAmt, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).compareTo(queryVO.getEndBl()) >= 0  && endAmtValue.divide(planAmt, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).compareTo(queryVO.getEndBlPlus()) <= 0;
+							return filter;
+						}else if (queryVO.getEndBl()!=null){
+							Boolean filter = endAmtValue.divide(planAmt, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).compareTo(queryVO.getEndBl()) >= 0 ;
+							return filter;
+						}else if (queryVO.getEndBlPlus() !=null){
+							Boolean filter = endAmtValue.divide(planAmt, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).compareTo(queryVO.getEndBlPlus()) <= 0 ;
+							return filter;
+						}else{
+							return false;
+						}
+					}).map(item->{return String.valueOf(item.get("sub_id"));}).collect(Collectors.toList());
+					if(CollectionUtil.isNotEmpty(moreThanSubId)) {
+						//满足条件的项目id加入查询
+						sql.append(" AND a.id IN (");
+						for(String inId : moreThanSubId) {
+							sql.append("'").append(inId).append("',");
+						}
+						sql.delete(sql.length()-1, sql.length());
+						sql.append(" ) ");
+					} else {
+						sql.append(" AND a.id = '不存在' ");
+					}
+				} else {
+					sql.append(" AND a.id = '不存在' ");
+				}
+			} else {
+				//不存在
+				sql.append(" AND a.id = '不存在' ");
+			}
+		}
+
+		sql.append(" GROUP BY a.id ");
+		if(page != null) {
+			if(StringUtil.isNotEmpty(page.getOrderBy()) && page.getOrderType() != null) {
+
+//				if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+//					sql.append("order by  g.amt desc ");
+//
+//				}else{
+					sql.append(" order by usersub desc ,").append(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, page.getOrderBy())).append(" ").append(page.getOrderType().name());
+//				}
+			} else {
+				if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+					sql.append("order by  g.amt desc ");
+
+				}else{
+					sql.append(" order by usersub desc ,a.begin_date,a.create_time desc");
+				}
+			}
+			//3为计划投资  去掉 计划投资为0的    4为实际投资,去掉实际投资为 0的  5为入统金额
+			if ("3".equals(queryVO.getAmtType())||"4".equals(queryVO.getAmtType())||"5".equals(queryVO.getAmtType())){
+
+				sql.append(" ) t ");
+
+//				if ("3".equals(queryVO.getAmtType())){
+//					sql.append(" where t.yearAmt > 0  ");
+//				}else if ("4".equals(queryVO.getAmtType())){
+//					sql.append(" where t.yearAmtSj > 0  ");
+//				}else{
+//					sql.append(" where t.yearAmtRt > 0  ");
+//				}
+			}
+			return this.queryForListBySql(sql.toString(), page);
+		} else {
+			page = new Page();
+
+			if(StringUtil.isNotEmpty(queryVO.getZjly())) {
+				sql.append("order by  g.amt desc ");
+
+			}else{
+				sql.append(" order by usersub desc ,a.begin_date,a.create_time desc");
+			}
+
+
+		}
+
+
+
+		//3为计划投资  去掉 计划投资为0的    4为实际投资,去掉实际投资为 0的
+		if ("3".equals(queryVO.getAmtType())||"4".equals(queryVO.getAmtType())||"5".equals(queryVO.getAmtType())){
+
+			sql.append(" ) t ");
+
+//			if ("3".equals(queryVO.getAmtType())){
+//				sql.append(" where t.yearAmt > 0  ");
+//			}else if ("4".equals(queryVO.getAmtType())){
+//				sql.append(" where t.yearAmtSj > 0  ");
+//			}else{
+//				sql.append(" where t.yearAmtRt > 0  ");
+//			}
+		}
+
+
+		page.setList(this.queryForObjListBySql(sql.toString()));
+		return page;
+	}
+
+
+	public  Page pageDel(Page page,String subName){
+		StringBuffer sql = new StringBuffer();
+		sql.append(" select a.id,a.status_fgw, a.date_fgw,a.indus_kind indusKind,a.subject_id,a.name_lead,a.tel_lead,a.name_zrr,a.tel,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal, a.reason, a.unit_id as unitId, ");
+		sql.append(" a.reason_no_rk as reasonNoRk,a.reason_no_amt as reasonNoAmt,a.reason_no_kg as reasonNoKg,a.reason_q as reasonq,a.reason_jd as reasonJd, a.is_rk as isRk, a.kind_nature, ");
+		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as mainName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh,a.status_sp statusSp,a.status_tg statusTg ");
+
+		//20231205  增加项目 今年  年度计划投资,年度实际投资
+		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy");
+		Date date=new Date();
+		String  year= simpleDateFormat.format(date);
+
+		sql.append(" ,IFNULL((select sum(amt) from sub_amtplan sa where sa.sub_id = a.id and sa.y_month rlike '"+year+"' and not isnull(sa.amt) group by sa.sub_id) , 0) as yearPlanAmt, ");
+		sql.append(" IFNULL((select sum(amt) from sub_rpt_cont src where src.sub_id = a.id and src.kj_month rlike '"+year+"' and not isnull(src.amt) group by src.sub_id), 0) as yearEndAmt ");
+
+		sql.append(" from sub_info a ");
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit c ON a.main_id = c.id ");
+
+
+		sql.append(" where a.logic_delete_flag=0  ");
+
+		if (StringUtil.isNotEmpty(subName)){
+			sql.append(" and a.sub_name like '%"+subName+"%' ");
+
+		}
+		return this.queryForListBySql(sql.toString(), page);
+	}
+
+	/**
+	 * 资金计划统计分析
+	 * @param vo
+	 * @param subName
+	 * @param kind
+	 * @param propKind
+	 * @param indusKind
+	 * @param status
+	 * @param beginDateStart
+	 * @param beginDateEnd
+	 * @return
+	 */
+	public List<Map<String,Object>> queryProjectsAmt(LoginUserVO vo,String subName, String kind,
+													 String propKind, String indusKind, String subjectId, String status, String beginDate, String endDate, Boolean containHide, String zjly){
+		StringBuffer sql = new StringBuffer();
+
+		sql.append(" select if(us.id is NULL,0,1) as usersub,a.id,a.sub_name as subName,a.kind,a.prop_kind as propKind,a.amt_total as amtTotal,a.amt_year as amtYear, a.reason, ");
+		sql.append(" IFNULL(a.amt_comp,0) as amtComp, IFNULL(num_total,0) as numTotal, IFNULL(a.num_comp,0) as numComp, ");
+		sql.append(" DATE_FORMAT(a.end_date,'%Y-%m-%d') as endDate,b.title as unitName, c.title as manageName,DATE_FORMAT(a.begin_date,'%Y-%m-%d') as beginDate,a.status,a.status_jh statusJh ");
+		sql.append(" ,(select sp.end_date FROM sub_plan as sp where sp.sub_id =a.id and sp.logic_delete_flag = 0 and sp.status_sp = '1' ) as planDate ");
+
+		sql.append(" from sub_info a ");
+
+		sql.append(" left join j_unit b on a.unit_id = b.id ");
+		sql.append(" LEFT JOIN j_unit c ON a.manage_id = c.id ");
+		sql.append(" LEFT JOIN sub_verify e ON e.sub_id = a.id AND e.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sub_source ss ON ss.sub_id = a.id AND ss.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sec_user_sub us ON a.id = us.sub_id AND us.logic_delete_flag =0  AND us.user_id='"+vo.getId()+"' ");
+		sql.append(" where a.logic_delete_flag = 0 and a.status <> '0' ");
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+			}
+		} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.depart_id = '"+vo.getDepartId()+"' or e.depart_id = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.manage_id = '"+vo.getUnitId()+"' or e.unit_id = '"+vo.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+		//是否包含隐藏
+/*		if(Boolean.FALSE.equals(containHide)) {
+			sql.append(" and (isnull(a.is_hide) or a.is_hide = '0') ");
+		}*/
+		if(StringUtil.isNotEmpty(status)) {
+			sql.append(" and a.`status` = '" + status + "' ");
+		}
+		if(StringUtil.isNotEmpty(subName)) {
+			sql.append(" and a.sub_name like '%" + subName + "%' ");
+		}
+		if(StringUtil.isNotEmpty(kind)) {
+			//遍历
+			String [] kinds=kind.split(",");
+			String sqlTemp="";
+			for (String temp:kinds){
+
+				sqlTemp=sqlTemp+ " INSTR (a.kind,'"+temp+"')>0  OR ";
+			}
+			//去掉最后的 OR
+			String sqlCheck=sqlTemp.substring(0,sqlTemp.length()-3);
+
+			sql.append(" AND ( "+sqlCheck+" )");
+		}
+		if(StringUtil.isNotEmpty(propKind)) {
+			sql.append(" and a.prop_kind = '" + propKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" and a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(subjectId)) {
+			sql.append(" and a.subject_id = '" + subjectId +"' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" AND ss.source_id = '" + zjly+"' ");
+		}
+		if(StringUtil.isNotEmpty(beginDate) && StringUtil.isNotEmpty(endDate)) {
+			sql.append(" and (");
+			sql.append(" (a.begin_date <= '").append(beginDate).append("' and a.end_date >= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.begin_date <= '").append(endDate).append("') ");
+			sql.append(" or (a.end_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+			sql.append(" ) ");
+		}
+		//sql.append(" and (a.`status` in('2','7','9') or (a.`status`='1' and a.status_sp='9' )  or a.`status` = '0') ");
+		sql.append(" GROUP BY a.id ");
+		sql.append(" order by usersub desc, a.begin_date,a.create_time desc");
+		return (List<Map<String,Object>>)this.queryForObjListBySql(sql.toString());
+	}
+
+
+	public List<Map<String,Object>> queryProjectsIndusKind(LoginUserVO vo,String subName, String kind,
+														   String propKind, String indusKind, String status, String beginDateStart, String beginDateEnd, Boolean containHide, String zjly){
+		StringBuffer sql = new StringBuffer();
+		sql.append(" SELECT  COUNT(*) num,title  FROM ( ");
+		sql.append(" SELECT a.id, b.title,a.indus_kind ");
+		sql.append(" FROM sub_info a ");
+		sql.append(" LEFT JOIN sub_verify e ON e.sub_id = a.id AND e.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sub_source ss ON ss.sub_id = a.id AND ss.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN t_systable b on a.indus_kind=b.id ");
+		sql.append(" where a.logic_delete_flag = 0 and a.status <> '0' ");
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+			}
+		} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.depart_id = '"+vo.getDepartId()+"' or a.approve_departid = '"+vo.getDepartId()+"' or a.approve_departid2 = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.manage_id = '"+vo.getUnitId()+"' or a.approve_departid = '"+vo.getDepartId()+"' or a.approve_departid2 = '"+vo.getDepartId() +"' or e.unit_id = '"+vo.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+/*		if(Boolean.FALSE.equals(containHide)) {
+			sql.append(" and (isnull(a.is_hide) or a.is_hide = '0') ");
+		}*/
+		if(StringUtil.isNotEmpty(status)) {
+			sql.append(" and a.`status` = '" + status + "' ");
+		}
+		if(StringUtil.isNotEmpty(subName)) {
+			sql.append(" and a.sub_name like '" + subName + "' ");
+		}
+		if(StringUtil.isNotEmpty(kind)) {
+			sql.append(" and a.kind = '" + kind + "' ");
+		}
+		if(StringUtil.isNotEmpty(propKind)) {
+			sql.append(" and a.prop_kind = '" + propKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" and a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(beginDateStart)) {
+			sql.append(" and a.end_date >= '" + beginDateStart + "' ");
+		}
+		if(StringUtil.isNotEmpty(beginDateEnd)) {
+			sql.append(" and a.end_date <= '" + beginDateEnd + "' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" AND ss.source_id = '"+ zjly+"' ");
+		}
+		sql.append(" GROUP BY a.id ) tem ");
+		sql.append(" GROUP BY indus_kind ");
+		return (List<Map<String,Object>>)this.queryForObjListBySql(sql.toString());
+	}
+
+
+	public List<Map<String,Object>> queryProjectsBuildAddreee(LoginUserVO vo, String indusKind, String year, String zjly){
+		StringBuffer sql = new StringBuffer();
+		sql.append(" SELECT sum(amt) amtTotal,title,subject_id subjectId ");
+		sql.append(" FROM ( ");
+		sql.append(" SELECT src.id, src.amt, b.title, a.subject_id ");
+		sql.append(" FROM sub_rpt_cont src LEFT JOIN sub_info a ON src.sub_id = a.id ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sub_verify e ON a.id = e.sub_id AND e.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN t_systable b on a.subject_id=b.code AND b.kind = 'JSDD' ");
+		sql.append(" LEFT JOIN sub_source ss ON ss.sub_id = a.id ");
+		sql.append(" where src.logic_delete_flag = 0 AND a.logic_delete_flag = 0 AND src.kind = '1' ");
+		if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ vo.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(vo.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ vo.getId() +"' ");
+			}
+		} else if(Objects.equals(vo.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", vo.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.depart_id = '"+vo.getDepartId()+"' or a.approve_departid = '"+vo.getDepartId()+"' or a.approve_departid2 = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.manage_id = '"+vo.getUnitId()+"' or a.approve_departid = '"+vo.getDepartId()+"' or a.approve_departid2 = '"+vo.getDepartId()+"' or e.unit_id = '"+vo.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" and a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(year)) {
+			sql.append(" and src.kj_month LIKE '" + year + "%' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" ANd ss.source_id = '"+ zjly+"' ");
+		}
+		sql.append(" GROUP BY src.id ) tem ");
+		sql.append(" WHERE not ISNULL(amt) ");
+		sql.append(" GROUP BY subject_id ");
+		return (List<Map<String,Object>>)this.queryForObjListBySql(sql.toString());
+	}
+
+
+	/**
+	 1.状态不等与0,7,8,9 状态不管
+	 2.政府 个人 查自己的项目
+	 3.单位查整个单位项目
+	 4.1-政府机构用户 2-申请单位用户
+	 */
+	public Page querysubInfo(Page page, LoginUserVO loginUser,String subName,String status) {
+
+		DetachedCriteria detachedCriteria=DetachedCriteria.forClass(SubInfo.class);
+		Criterion criterion = Restrictions.eq("logicDeleteFlag", 0);
+		criterion = Restrictions.and(criterion,
+				Restrictions.or(Restrictions.eq("createUserId", loginUser.getId()), Restrictions.eq("unitId", loginUser.getUnitId())));
+
+		if(StringUtil.isNotEmpty(subName)) {
+			criterion = Restrictions.and(criterion, Restrictions.like("subName", subName, MatchMode.ANYWHERE));
+		}
+
+		if(StringUtil.isNotEmpty(status)) {
+			criterion = Restrictions.and(criterion, Restrictions.eq("status",status));
+		}
+		detachedCriteria.add(criterion);
+		detachedCriteria.addOrder( Order.desc("createTime"));
+		return this.pagedQuery(page,detachedCriteria);
+	}
+
+
+
+	public Page queryInfo(Page page, String subjectId,String subName,String status) {
+
+		DetachedCriteria detachedCriteria=DetachedCriteria.forClass(SubInfo.class);
+		Criterion criterion = Restrictions.eq("logicDeleteFlag", 0);
+		if(StringUtil.isNotEmpty(subjectId)) {
+			criterion = Restrictions.and(criterion, Restrictions.eq("subjectId", subjectId));
+		}
+		if(StringUtil.isNotEmpty(subName)) {
+			criterion = Restrictions.and(criterion, Restrictions.like("subName", subName, MatchMode.ANYWHERE));
+		}
+		if(StringUtil.isNotEmpty(status)) {
+			criterion = Restrictions.and(criterion, Restrictions.eq("status",status));
+		}
+		detachedCriteria.add(criterion);
+		detachedCriteria.addOrder( Order.desc("createTime"));
+		return this.pagedQuery(page,detachedCriteria);
+	}
+
+
+
+	public Map<String, Object> amtStatics(LoginUserVO loginUser, String year, String indusKind, String subjectId, String zjly) {
+		StringBuffer sql = new StringBuffer();
+		sql.append(" SELECT ");
+		sql.append(" ifnull(sum(if(amt_total < 10000,1,0)),0) numAmt1, ");
+		sql.append(" ifnull(sum(if(amt_total >= 10000 AND amt_total < 50000, 1,0 )),0) numAmt2, ");
+		sql.append(" ifnull(sum(if(amt_total >= 50000 AND amt_total < 100000, 1,0)),0) numAmt3, ");
+		sql.append(" ifnull(sum(if(amt_total >= 100000, 1,0)),0) numAmt4 ");
+		sql.append(" FROM ");
+		sql.append(" ( select a.id, a.amt_total from sub_info a ");
+		sql.append(" LEFT JOIN sub_manage d ON a.id = d.sub_id AND d.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sub_verify e ON a.id = e.sub_id AND e.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sub_source ss ON ss.sub_id = a.id AND ss.logic_delete_flag = 0 ");
+		sql.append(" WHERE a.logic_delete_flag = 0 and a.status <> '"+ProjectStatusEnum.TEMPSAVE.getKey()+"' ");
+		if(Objects.equals(loginUser.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ loginUser.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(loginUser.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ loginUser.getId() +"' ");
+			}
+		} else if(Objects.equals(loginUser.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", loginUser.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				//sql.append(" AND ( a.unit_id = '"+ vo.getUnitId()+"' or a.main_id = '"+vo.getUnitId()+"' or d.depart_id = '"+vo.getDepartId()+"' or a.approve_departid = '"+vo.getDepartId()+"' or a.approve_departid2 = '"+vo.getDepartId()+"' ) ");
+				sql.append(" AND ( a.unit_id = '"+ loginUser.getUnitId()+"' or a.main_id = '"+loginUser.getUnitId()+"' or d.manage_id = '"+loginUser.getUnitId()+"' or a.approve_departid = '"+loginUser.getDepartId()+"' or a.approve_departid2 = '"+loginUser.getDepartId()+"' or e.unit_id = '"+loginUser.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+		String beginDate = year + "-01-01";
+		String endDate = year + "-12-31";
+		sql.append(" and (");
+		sql.append(" (a.begin_date <= '").append(beginDate).append("' and a.end_date >= '").append(endDate).append("') ");
+		sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+		sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.begin_date <= '").append(endDate).append("') ");
+		sql.append(" or (a.end_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+		sql.append(" ) ");
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" AND a.indus_kind = '" + indusKind + "' ");
+		}
+		if(StringUtil.isNotEmpty(subjectId)){
+			sql.append(" AND a.subject_id = '" + subjectId +"' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" AND ss.source_id = '"+ zjly+"' ");
+		}
+		sql.append(" GROUP BY a.id ");
+		sql.append(" ) as tem ");
+		List<Map<String, Object>> list = (List<Map<String, Object>>)this.queryForObjListBySql(sql.toString());
+		return CollectionUtil.isNotEmpty(list) ? list.get(0) : new HashMap<>();
+	}
+
+	/**
+	 * 查询在建项目,为统计app首页在建
+	 * @param userVO
+	 * @return
+	 */
+	public Map<String, BigDecimal> findBuilding(String year, String indusKind, String subjectId, LoginUserVO userVO, String zjly) {
+		StringBuffer sql = new StringBuffer();
+		sql.append(" SELECT IFNULL(SUM(1),0) total, SUM(if(`status` = '7', 1, 0)) as doing, SUM(if(`status` = '8',1,0)) as stop, SUM(if(`status` = 'A', 1,0)) as end ");
+		sql.append(" FROM ( ");
+		sql.append(" SELECT a.id, a.`status` ");
+		sql.append(" FROM sub_info a ");
+		sql.append(" LEFT JOIN sub_manage b ON a.id = b.sub_id AND b.logic_delete_flag =0 ");
+		sql.append(" LEFT JOIN sub_verify c ON a.id = c.sub_id AND c.logic_delete_flag = 0 ");
+		sql.append(" LEFT JOIN sub_source ss ON ss.sub_id = a.id AND ss.logic_delete_flag = 0 ");
+		sql.append(" WHERE a.logic_delete_flag = 0");
+		String beginDate = year + "-01-01";
+		String endDate = year + "-12-31";
+		sql.append(" and (");
+		sql.append(" (a.begin_date <= '").append(beginDate).append("' and a.end_date >= '").append(endDate).append("') ");
+		sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+		sql.append(" or (a.begin_date >= '").append(beginDate).append("' and a.begin_date <= '").append(endDate).append("') ");
+		sql.append(" or (a.end_date >= '").append(beginDate).append("' and a.end_date <= '").append(endDate).append("') ");
+		sql.append(" ) ");
+		if(Objects.equals(userVO.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
+			//项目单位
+			sql.append(" AND a.unit_id = '"+ userVO.getUnitId()+"' ");
+			if(Boolean.TRUE.equals(userVO.getIsUnit())) {
+				//单位用户,看单位全部的
+			} else {
+				//个人用户,看自己申报的
+				sql.append(" AND a.create_user_id = '"+ userVO.getId() +"' ");
+			}
+		} else if(Objects.equals(userVO.getKindUnit(), UserKindUnitEnum.ZFDW.getCode())) {
+			//政府单位
+			if(Objects.equals("0", userVO.getStatusProj())) {
+				//看自己部门监管的或者监管单位或审批的
+				sql.append(" AND ( a.unit_id = '"+ userVO.getUnitId()+"' or a.main_id = '"+userVO.getUnitId()+"' or b.manage_id = '"+userVO.getUnitId()+"' or a.approve_departid = '"+userVO.getDepartId()+"' or a.approve_departid2 = '"+userVO.getDepartId()+"' or c.unit_id = '"+userVO.getUnitId()+"' ) ");
+			} else {
+				//看所有的
+			}
+		}
+		if(StringUtil.isNotEmpty(indusKind)) {
+			sql.append(" AND a.indus_kind = '"+ indusKind+"' ");
+		}
+		if(StringUtil.isNotEmpty(subjectId)) {
+			sql.append(" AND a.subject_id = '" + subjectId+ "' ");
+		}
+		if(StringUtil.isNotEmpty(zjly)) {
+			sql.append(" AND ss.source_id = '"+ zjly+"' ");
+		}
+		sql.append(" AND a.prop_kind = '1' and (a.`status` = '7' or a.`status` = '8' or a.`status` = 'A') ");//新建项目
+		sql.append(" GROUP BY a.id ");
+		sql.append(" ) as tmp ");
+		List<?> list = queryForObjListBySql(sql.toString());
+		return CollectionUtil.isNotEmpty(list) ? (Map<String, BigDecimal>)list.get(0) : Collections.emptyMap();
+	}
+
+	public SubInfo getBySubName(String subName) {
+		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SubInfo.class);
+		Criterion criterion = Restrictions.and(Restrictions.eq("logicDeleteFlag", 0),
+				Restrictions.eq("subName", subName));
+		detachedCriteria.add(criterion);
+		List<SubInfo> list = find(detachedCriteria);
+		return CollectionUtil.isNotEmpty(list) ? list.get(0) : null;
+
+	}
+
+	public List<SubInfo> findFixList(SubInfoQueryTzVO queryTzVO){
+		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SubInfo.class);
+		Criterion criterion = Restrictions.and(
+				Restrictions.eq("logicDeleteFlag", 0),
+				Restrictions.eq("isHide", "1"),
+				Restrictions.eq("isFix", "1"),
+				Restrictions.eq("stateFix", queryTzVO.getStateFix())
+		);
+		detachedCriteria.add(criterion);
+
+		List<SubInfo> list = find(detachedCriteria);
+		return list;
+	}
+
+	public Map<String,Object> beginCount(SubInfoQueryTzVO queryTzVO){
+		return  subInfoMapper.beginCount(queryTzVO.getSubjectId(),queryTzVO.getStatus());
+	}
+}

+ 8 - 9
projects/src/main/webapp/vmodules/subject/subInfo/tz/cb.jsp

@@ -222,9 +222,14 @@
                         <span class="info-icon" title="C类项目:意向类项目,还处于谋划论证阶段项目">?</span>
                         <span class="lanse-first">{{beginRate.cnum}}</span>
                     </label>
-                    <label class="juli" onclick="levelList('abcs','D类','UNKNOWN_CATEGORY')">
-                        未知分类
-                        <span class="info-icon" title="ABC类未设置">?</span>
+                    <label class="juli" onclick="levelList('abcs','D类','D')">
+                        D类项目数
+                        <span class="info-icon" title="D类项目">?</span>
+                        <span class="lanse-first">{{beginRate.dnum}}</span>
+                    </label>
+                    <label class="juli" onclick="levelList('abcs','其它类','UNKNOWN_CATEGORY')">
+                        其它项目数
+                        <span class="info-icon" title="其它类项目">?</span>
                         <span class="lanse-first">{{beginRate.nnum}}</span>
                     </label>
                 </div>
@@ -587,12 +592,6 @@
                     self.moveDbParam.status = data.value;
                 });
 
-                // App.postJson("/api/dict/query/index", {}, function (res) {
-                //     self.JSDD = res.data.JSDD;
-                //     self.HYFL = res.data.HYFL;
-                //
-                // })
-
                 this.winH = document.body.clientHeight;
                 var nowdate = new Date();
                 nowdate.setMonth(nowdate.getMonth() + 1);

+ 9 - 4
projects/src/main/webapp/vmodules/subject/subInfo/tz/cb_sum.jsp

@@ -413,8 +413,13 @@
                             </div>
                         </div>
                     </label>
-                    <label class="juli" onclick="levelList('abcs','D类','UNKNOWN_CATEGORY')">
-                        未知分类
+                    <label class="juli" onclick="levelList('abcs','D类','D')">
+                        D类项目数
+                        <span class="info-icon" title="D类项目">?</span>
+                        <span class="lanse-first">{{beginRate.dnum}}</span>
+                    </label>
+                    <label class="juli" onclick="levelList('abcs','其它类','UNKNOWN_CATEGORY')">
+                        其它项目数
                         <span class="info-icon" title="ABC类未设置">?</span>
                         <span class="lanse-first">{{beginRate.nnum}}</span>
                     </label>
@@ -1054,9 +1059,9 @@
                 param.pageSize = this.pageSize;
                 param.orderBy = this.sort.field;
                 param.orderType = this.sort.type || "asc";
-                param = Object.assign(param, ${sumParams});
-
                 param.status = 1;
+                param = Object.assign(param, ${sumParams});
+                console.log(param,"===]]]===");
                 App.postJson("/api/subInfo/query/queryPage", param, function (res) {
                     self.dataList = res.rows;
                     self.loadPage(res.total);

+ 1 - 1
projects/src/main/webapp/vmodules/top.jsp

@@ -131,7 +131,7 @@
                 App.postJson("/app/switch/toFgw", {}, function (res) {
                     console.log(res);
                     if(res.code ===200){
-                        var targetUrl = res.msg+"/projects/index";
+                        var targetUrl = res.msg+"/index";
                         var cookiesToSend = "rememberMe="+res.data.token;
                         // 将需要携带的cookie通过URL参数的形式附加到目标URL上
                         targetUrl += "?cookies=" + encodeURIComponent(cookiesToSend);

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.