Bläddra i källkod

工信局-问题督办功能重写

Perperon 4 månader sedan
förälder
incheckning
9e1486827b
25 ändrade filer med 2421 tillägg och 185 borttagningar
  1. 17 0
      projects-service/src/main/java/com/rtrh/projects/modules/problem/mapper/SubquestionInfoMapper.java
  2. 72 0
      projects-service/src/main/java/com/rtrh/projects/modules/problem/mapper/SubquestionInfoMapper.xml
  3. 3 0
      projects-service/src/main/java/com/rtrh/projects/modules/problem/service/Subquestioninfoservice.java
  4. 33 4
      projects-service/src/main/java/com/rtrh/projects/modules/problem/service/impl/SubquestioninfoserviceImpl.java
  5. 19 10
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.xml
  6. 26 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubPreNewMapper.java
  7. 361 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubPreNewMapper.xml
  8. 18 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubRptContMapper.java
  9. 74 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubRptContMapper.xml
  10. 4 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubInfoService.java
  11. 29 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubPreNewService.java
  12. 4 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubRptContService.java
  13. 130 7
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java
  14. 232 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubPreNewServiceImpl.java
  15. 94 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubRptContServiceImpl.java
  16. 2 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/PreWarnDataQueryVO.java
  17. 264 37
      projects/src/main/java/com/rtrh/projects/web/controller/problemreport/api/ProblemInfoApiController.java
  18. 1 1
      projects/src/main/java/com/rtrh/projects/web/controller/problemreport/api/ProblemtrackApiController.java
  19. 899 0
      projects/src/main/webapp/vmodules/problem/info/cbToXjWarn.jsp
  20. 33 26
      projects/src/main/webapp/vmodules/problem/info/endWarn.jsp
  21. 30 26
      projects/src/main/webapp/vmodules/problem/info/monthWarn.jsp
  22. 33 27
      projects/src/main/webapp/vmodules/problem/info/openWarn.jsp
  23. 8 15
      projects/src/main/webapp/vmodules/problem/info/pldWarn.jsp
  24. 34 32
      projects/src/main/webapp/vmodules/problem/info/preInfo.jsp
  25. 1 0
      projects/src/main/webapp/vmodules/problem/info/preWarn.jsp

+ 17 - 0
projects-service/src/main/java/com/rtrh/projects/modules/problem/mapper/SubquestionInfoMapper.java

@@ -0,0 +1,17 @@
+package com.rtrh.projects.modules.problem.mapper;
+
+import com.rtrh.core.repository.mybatis.MyBatisRepository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dupengcheng
+ * @date 2025/1/6
+ * @apiNote
+ */
+@MyBatisRepository
+public interface SubquestionInfoMapper {
+
+    List<Map<String,Object>> pageQueryQuestionNewList(Map<String,Object> params);
+}

+ 72 - 0
projects-service/src/main/java/com/rtrh/projects/modules/problem/mapper/SubquestionInfoMapper.xml

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.rtrh.projects.modules.problem.mapper.SubquestionInfoMapper">
+
+    <select id="pageQueryQuestionNewList" parameterType="map" resultType="map">
+
+        SELECT IF
+                   (us.id IS NULL, 0, 1) AS   usersub,
+               IF
+                   (a.status_fgw = '2', 1, 0) redNum,
+               IF
+                   (a.status_fgw = '1', 1, 0) yellowNum,
+               a.close_reason,
+               a.STATUS                  AS   stu,
+               a.file_type               AS   fileType,
+               b.sub_name,
+               b.main_id,
+               a.sub_id,
+               a.date_apply,
+               b.STATUS,
+               a.id,
+               a.title,
+               c.title                   AS   kind_sourceid,
+               d.title                   AS   kind_typeid,
+               a.date_conf,
+               a.file_addre
+        FROM sub_q_info a
+                 LEFT JOIN sub_info b ON a.sub_id = b.id
+                 LEFT JOIN t_systable c ON a.kind_sourceid = c.id
+                 LEFT JOIN t_systable d ON a.kind_typeid = d.id
+                 LEFT JOIN sub_source g ON g.sub_id = b.id
+            AND g.logic_delete_flag = 0
+                 LEFT JOIN sub_manage e ON b.id = e.sub_id
+            AND e.logic_delete_flag = 0
+                 LEFT JOIN sub_verify f ON f.sub_id = a.sub_id
+            AND f.logic_delete_flag = 0
+                 LEFT JOIN sec_user_sub us ON b.id = us.sub_id
+            AND us.logic_delete_flag = 0
+            AND us.user_id = #{userId}
+        <where>
+            a.logic_delete_flag = 0
+            and b.indus_kind in('210','99','2')
+            <if test="subjectName != null and subjectName != ''">
+                AND b.sub_name LIKE CONCAT('%', #{subjectName}, '%')
+            </if>
+            <if test="propKind != null and propKind != ''">
+                AND b.prop_kind IN (${propKind})
+            </if>
+            <if test="startDate != null and startDate != ''">
+                AND  date_format(a.date_conf,'%Y-%m-%d') >= #{startDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND  date_format(a.date_conf,'%Y-%m-%d') &lt;= #{endDate}
+            </if>
+            <if test="status != null and status != ''">
+                AND a.`status` = #{status}
+            </if>
+            <if test="closeReason != null and closeReason != ''">
+                AND a.close_reason = #{closeReason}
+            </if>
+            <if test="subjectId != null and subjectId != ''">
+                AND b.subject_id = #{subjectId}
+            </if>
+            <if test="indusKind != null and indusKind != ''">
+                AND b.indus_kind = #{indusKind}
+            </if>
+        </where>
+        GROUP BY a.id
+        ORDER BY usersub DESC, date_conf DESC
+
+    </select>
+</mapper>

+ 3 - 0
projects-service/src/main/java/com/rtrh/projects/modules/problem/service/Subquestioninfoservice.java

@@ -58,6 +58,9 @@ public interface Subquestioninfoservice {
     Page pageQueryQuestionList(Page page, LoginUserVO vo, QuestionQueryVO queryVO);
 
 
+    Page pageQueryQuestionNewList(Page page, LoginUserVO vo, QuestionQueryVO queryVO);
+
+
 
     /***
      * 通过项目问题,查询项目数量

+ 33 - 4
projects-service/src/main/java/com/rtrh/projects/modules/problem/service/impl/SubquestioninfoserviceImpl.java

@@ -1,19 +1,21 @@
 package com.rtrh.projects.modules.problem.service.impl;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import ch.qos.logback.classic.db.names.ColumnName;
 import cn.hutool.core.lang.generator.Generator;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.rtrh.projects.modules.problem.dao.SubQuestionFileDao;
+import com.rtrh.projects.modules.problem.mapper.SubquestionInfoMapper;
 import com.rtrh.projects.modules.projects.enums.ProjectStatusEnum;
 import com.rtrh.projects.modules.projects.mapper.StaticsMapper;
 import com.rtrh.projects.modules.projects.vo.HistoryVO;
 import com.rtrh.projects.modules.projects.vo.SubInfoQueryTzVO;
 import com.rtrh.projects.modules.system.enums.SubLogEnum;
 import com.rtrh.projects.modules.system.service.SubDataLogService;
+import com.rtrh.projects.util.TargetDataSource;
 import com.rtrh.projects.vo.problemreport.QuestionIdVO;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateFormatUtils;
@@ -53,6 +55,9 @@ public class SubquestioninfoserviceImpl implements Subquestioninfoservice {
 	@Autowired
 	private SubquestionInfoDao subquestionInfoDao;
 
+	@Autowired
+	private SubquestionInfoMapper subquestionInfoMapper;
+
 	@Autowired
 	private StaticsMapper staicsMapper;
 
@@ -687,6 +692,30 @@ public class SubquestioninfoserviceImpl implements Subquestioninfoservice {
 		return subquestionInfoDao.queryForListBySql(sql.toString(), page);
 	}
 
+	@Override
+	@TargetDataSource("secondary")
+	public Page pageQueryQuestionNewList(Page page, LoginUserVO vo, QuestionQueryVO queryVO) {
+		Map<String,Object> params = new HashMap<>();
+		params.put("userId",vo.getId());
+		params.put("subjectName",queryVO.getSubName());
+		params.put("subjectId",queryVO.getSubjectId());
+		params.put("startDate",queryVO.getBeginDate());
+		params.put("endDate",queryVO.getEndDate());
+		params.put("indusKind",queryVO.getIndusKind());
+		params.put("status",queryVO.getStatus());
+		if(StringUtils.isNotEmpty(queryVO.getCloseReason())){
+			params.put("status","1");
+		}
+		params.put("closeReason",queryVO.getCloseReason());
+		params.put("propKind",StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+		PageHelper.startPage(page.getPageNo(), page.getPageSize());
+		List<Map<String, Object>> mapList = subquestionInfoMapper.pageQueryQuestionNewList(params);
+		PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(mapList);
+		page.setList(mapList);
+		page.setTotalCount(pageInfo.getTotal());
+		return page;
+	}
+
 	@Override
 	public List<Map<String,Object>> countSubInfoNumByQuertion(LoginUserVO vo, QuestionQueryVO queryVO) {
 

+ 19 - 10
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.xml

@@ -928,14 +928,17 @@
     </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
+            a.subject_id subjectId,
+            a.indus_kind indusKind,
+            a.amt_total amtTotal
+        FROM
+           sub_info a
+        WHERE
+            a.STATUS = '1'
+            AND ( a.cb_status = '3' OR a.cb_status = '4' OR a.cb_status = '5' )
+            AND DATE_ADD( a.qy_date, INTERVAL ifnull( cb_num, 0 ) DAY ) &lt;= now()
+            AND a.logic_delete_flag = 0
     </select>
     <select id="queryWarningStatistics" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
         SELECT
@@ -959,6 +962,7 @@
         WHERE
           begin_date &lt;= NOW()
           AND `status` = 2
+          AND logic_delete_flag = 0
     </select>
     <select id="queryExceedZjTotc" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
         SELECT subject_id subjectId,
@@ -968,6 +972,7 @@
         WHERE
             end_date &lt;= NOW()
           AND `status` = 3
+          AND logic_delete_flag = 0
     </select>
     <select id="queryExceedTcToRg" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
         SELECT subject_id subjectId,
@@ -976,8 +981,10 @@
         FROM sub_info
         WHERE
             rt_date &lt;= NOW()
-          AND is_rg = 0
+          AND (is_rg = 0 or is_rg is null)
           AND `status` = 9
+          and rt_date is not null
+          and logic_delete_flag=0
     </select>
     <select id="preProcedureExceed" resultType="com.rtrh.projects.modules.projects.vo.WorkBenchVO">
         SELECT
@@ -995,6 +1002,7 @@
             ( 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 )
             )
+           and c.indus_kind in('210','99','2')
         GROUP BY
             a.id
     </select>
@@ -1010,7 +1018,8 @@
                 AND src.kj_month LIKE #{lastMonth}
         WHERE
             a.logic_delete_flag = 0
-          AND a.`status` = '3'
+          AND a.`status` = '7'
+          and a.indus_kind in('210','99','2')
           AND src.id IS NULL
         GROUP BY
             a.id

+ 26 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubPreNewMapper.java

@@ -0,0 +1,26 @@
+package com.rtrh.projects.modules.projects.mapper;
+
+import com.rtrh.core.repository.mybatis.MyBatisRepository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dupengcheng
+ * @date 2025/1/6
+ * @apiNote
+ */
+@MyBatisRepository
+public interface SubPreNewMapper {
+
+    List<Map<String,Object>>  pageQueryCbToXjData(Map<String, Object> params);
+
+    List<Map<String,Object>>  pageQueryXjToZjData(Map<String, Object> params);
+
+    List<Map<String,Object>>  pageQueryZjToTcData(Map<String, Object> params);
+
+    List<Map<String,Object>>  pageQueryTcToRgData(Map<String, Object> params);
+
+    List<Map<String,Object>>  pageQueryPreWarnData(Map<String, Object> params);
+
+}

+ 361 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubPreNewMapper.xml

@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.rtrh.projects.modules.projects.mapper.SubPreNewMapper">
+
+    <select id="pageQueryCbToXjData" resultType="map" parameterType="map">
+        SELECT
+        a.sub_name as subName,
+        a.begin_date as beginDate,
+        a.end_date as endDate,
+        d.title as unitTitle,
+        c.title as mainTitle,
+        a.qy_date as qyDate,
+        a.cb_num as cbNum,
+        concat(a.name_lead,':',a.tel_lead) as datePlan
+        FROM
+        sub_info a
+        LEFT JOIN j_unit d ON a.unit_id = d.id
+        LEFT JOIN j_unit c ON a.main_id = c.id
+        WHERE
+        a.STATUS = '1'
+        AND ( a.cb_status = '3' OR a.cb_status = '4' OR a.cb_status = '5' )
+        AND DATE_ADD( a.qy_date, INTERVAL ifnull( a.cb_num, 0 ) DAY ) &lt;= now()
+        AND a.logic_delete_flag = 0
+        <if test="null != subjectId and '' != subjectId">
+            AND a.subject_id = #{subjectId}
+        </if>
+        <if test="null != subName and '' != subName">
+            AND a.sub_name like concat('%',#{subName},'%')
+        </if>
+        <if test="propKind != null and propKind != ''">
+            AND a.prop_kind IN (${propKind})
+        </if>
+        <if test="hyfl != null and hyfl != ''">
+            <choose>
+                <when test="hyfl == '未知行业'.toString()">
+                    and (a.indus_kind is null or a.indus_kind = '')
+                </when>
+                <otherwise>
+                    and a.indus_kind like concat(#{hyfl},'%')
+                </otherwise>
+            </choose>
+        </if>
+        <if test="code != null and code != ''">
+            <choose>
+                <when test="code == '1'.toString()">
+                    AND a.amt_total &lt; 100000
+                </when>
+                <when test="code == '2'.toString()">
+                    AND a.amt_total between 100000 and 500000
+                </when>
+                <when test="code == '3'.toString()">
+                    AND a.amt_total between 500000 and 1000000
+                </when>
+                <when test="code == '4'.toString()">
+                    AND a.amt_total &gt; 1000000
+                </when>
+            </choose>
+
+        </if>
+        <if test="lightType != null and lightType != ''">
+            <choose>
+                <when test="lightType == '1'.toString()">
+                    and DATEDIFF(now(), DATE_ADD(a.qy_date, INTERVAL ifnull(a.cb_num,0) DAY)) &gt; 3
+                </when>
+                <otherwise>
+                    and DATEDIFF(now(), DATE_ADD(a.qy_date, INTERVAL ifnull(a.cb_num,0) DAY)) &lt;= 3
+                </otherwise>
+            </choose>
+        </if>
+    </select>
+
+    <select id="pageQueryXjToZjData" resultType="map" parameterType="map">
+        SELECT
+        a.sub_name as subName,
+        a.begin_date as beginDate,
+        a.end_date as endDate,
+        d.title as unitTitle,
+        c.title as mainTitle,
+        concat(a.name_lead,':',a.tel_lead) as datePlan
+        FROM
+        sub_info a
+        LEFT JOIN j_unit d ON a.unit_id = d.id
+        LEFT JOIN j_unit c ON a.main_id = c.id
+        WHERE
+        a.begin_date &lt;= NOW()
+        AND a.`status` = 2
+        AND a.logic_delete_flag = 0
+        <if test="null != subjectId and '' != subjectId">
+            AND a.subject_id = #{subjectId}
+        </if>
+        <if test="null != subName and '' != subName">
+            AND a.sub_name like concat('%',#{subName},'%')
+        </if>
+        <if test="propKind != null and propKind != ''">
+            AND a.prop_kind IN (${propKind})
+        </if>
+        <if test="hyfl != null and hyfl != ''">
+            <choose>
+                <when test="hyfl == '未知行业'.toString()">
+                    and (a.indus_kind is null or a.indus_kind = '')
+                </when>
+                <otherwise>
+                    and a.indus_kind like concat(#{hyfl},'%')
+                </otherwise>
+            </choose>
+        </if>
+        <if test="code != null and code != ''">
+            <choose>
+                <when test="code == '1'.toString()">
+                    AND a.amt_total &lt; 100000
+                </when>
+                <when test="code == '2'.toString()">
+                    AND a.amt_total between 100000 and 500000
+                </when>
+                <when test="code == '3'.toString()">
+                    AND a.amt_total between 500000 and 1000000
+                </when>
+                <when test="code == '4'.toString()">
+                    AND a.amt_total &gt; 1000000
+                </when>
+            </choose>
+
+        </if>
+        <if test="lightType != null and lightType != ''">
+            <choose>
+                <when test="lightType == '1'.toString()">
+                    and DATEDIFF(now(), a.begin_date) &gt; 3
+                </when>
+                <otherwise>
+                    and DATEDIFF(now(), a.begin_date) &lt;= 3
+                </otherwise>
+            </choose>
+        </if>
+    </select>
+
+    <select id="pageQueryZjToTcData" resultType="map" parameterType="map">
+        SELECT
+            a.sub_name as subName,
+            a.begin_date as beginDate,
+            a.end_date as endDate,
+            d.title as unitTitle,
+            c.title as mainTitle,
+            concat(a.name_lead,':',a.tel_lead) as datePlan
+        FROM
+        sub_info a
+        LEFT JOIN j_unit d ON a.unit_id = d.id
+        LEFT JOIN j_unit c ON a.main_id = c.id
+        WHERE
+        a.end_date &lt;= NOW()
+        AND a.`status` = 3
+        AND a.logic_delete_flag = 0
+        <if test="null != subjectId and '' != subjectId">
+            AND a.subject_id = #{subjectId}
+        </if>
+        <if test="null != subName and '' != subName">
+            AND a.sub_name like concat('%',#{subName},'%')
+        </if>
+        <if test="propKind != null and propKind != ''">
+            AND a.prop_kind IN (${propKind})
+        </if>
+        <if test="hyfl != null and hyfl != ''">
+            <choose>
+                <when test="hyfl == '未知行业'.toString()">
+                    and (a.indus_kind is null or a.indus_kind = '')
+                </when>
+                <otherwise>
+                    and a.indus_kind like concat(#{hyfl},'%')
+                </otherwise>
+            </choose>
+        </if>
+        <if test="code != null and code != ''">
+            <choose>
+                <when test="code == '1'.toString()">
+                    AND a.amt_total &lt; 100000
+                </when>
+                <when test="code == '2'.toString()">
+                    AND a.amt_total between 100000 and 500000
+                </when>
+                <when test="code == '3'.toString()">
+                    AND a.amt_total between 500000 and 1000000
+                </when>
+                <when test="code == '4'.toString()">
+                    AND a.amt_total &gt; 1000000
+                </when>
+            </choose>
+
+        </if>
+        <if test="lightType != null and lightType != ''">
+            <choose>
+                <when test="lightType == '1'.toString()">
+                    and DATEDIFF(now(), a.end_date) &gt; 3
+                </when>
+                <otherwise>
+                    and DATEDIFF(now(), a.end_date) &lt;= 3
+                </otherwise>
+            </choose>
+        </if>
+    </select>
+
+    <select id="pageQueryTcToRgData" resultType="map" parameterType="map">
+        SELECT
+            a.sub_name as subName,
+            a.begin_date as beginDate,
+            a.end_date as endDate,
+            d.title as unitTitle,
+            c.title as mainTitle,
+            a.rt_date as rtDate,
+            concat(a.name_lead,':',a.tel_lead) as datePlan
+        FROM
+        sub_info a
+        LEFT JOIN j_unit d ON a.unit_id = d.id
+        LEFT JOIN j_unit c ON a.main_id = c.id
+        WHERE
+        a.rt_date &lt;= NOW()
+        AND (a.is_rg = 0 or a.is_rg is null)
+        AND a.`status` = 9
+        and a.rt_date is not null
+        and a.logic_delete_flag=0
+        <if test="null != subjectId and '' != subjectId">
+            AND a.subject_id = #{subjectId}
+        </if>
+        <if test="null != subName and '' != subName">
+            AND a.sub_name like concat('%',#{subName},'%')
+        </if>
+        <if test="propKind != null and propKind != ''">
+            AND a.prop_kind IN (${propKind})
+        </if>
+        <if test="hyfl != null and hyfl != ''">
+            <choose>
+                <when test="hyfl == '未知行业'.toString()">
+                    and (a.indus_kind is null or a.indus_kind = '')
+                </when>
+                <otherwise>
+                    and a.indus_kind like concat(#{hyfl},'%')
+                </otherwise>
+            </choose>
+        </if>
+        <if test="code != null and code != ''">
+            <choose>
+                <when test="code == '1'.toString()">
+                    AND a.amt_total &lt; 100000
+                </when>
+                <when test="code == '2'.toString()">
+                    AND a.amt_total between 100000 and 500000
+                </when>
+                <when test="code == '3'.toString()">
+                    AND a.amt_total between 500000 and 1000000
+                </when>
+                <when test="code == '4'.toString()">
+                    AND a.amt_total &gt; 1000000
+                </when>
+            </choose>
+
+        </if>
+        <if test="code != null and code != ''">
+            <choose>
+                <when test="code == '1'.toString()">
+                    AND a.amt_total &lt; 100000
+                </when>
+                <when test="code == '2'.toString()">
+                    AND a.amt_total between 100000 and 500000
+                </when>
+                <when test="code == '3'.toString()">
+                    AND a.amt_total between 500000 and 1000000
+                </when>
+                <when test="code == '4'.toString()">
+                    AND a.amt_total &gt; 1000000
+                </when>
+            </choose>
+        </if>
+        <if test="lightType != null and lightType != ''">
+            <choose>
+                <when test="lightType == '1'.toString()">
+                    and DATEDIFF(now(), a.rt_date) &gt; 3
+                </when>
+                <otherwise>
+                    and DATEDIFF(now(), a.rt_date) &lt;= 3
+                </otherwise>
+            </choose>
+        </if>
+    </select>
+
+    <select id="pageQueryPreWarnData" resultType="map" parameterType="map">
+        SELECT
+            c.id subId,
+            c.sub_name subName,
+            d.title unitName,
+            a.unit_desc unitDesc,
+            a.id,
+            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,
+            b.title preName
+        FROM
+        sub_pre_new a
+        LEFT JOIN sub_pre_flow b ON a.pre_flow_id = b.id
+        LEFT JOIN sub_info c ON a.sub_id = c.id
+        LEFT JOIN j_unit d ON c.unit_id = d.id
+        LEFT JOIN j_depart jd ON jd.id = a.sub_depart_id
+        LEFT JOIN j_unit ju ON ju.id = a.sub_unit_id
+        LEFT JOIN sub_manage e ON c.id = e.sub_id
+        AND e.logic_delete_flag = 0
+        LEFT JOIN sub_verify f ON f.sub_id = c.id
+        AND f.logic_delete_flag = 0
+        LEFT JOIN sub_source g ON g.sub_id = c.id
+        AND g.logic_delete_flag = 0
+        LEFT JOIN sub_manage sm ON sm.sub_id = c.id
+        AND sm.logic_delete_flag = 0
+        <where>
+            c.logic_delete_flag = 0
+            AND a.logic_delete_flag = 0
+            AND a.`status` = 1
+            and c.indus_kind in('210','99','2')
+            <if test="null != subjectId and '' != subjectId">
+                AND c.subject_id = #{subjectId}
+            </if>
+            <if test="code != null and code != ''">
+                <choose>
+                    <when test="code == '1'.toString()">
+                        AND c.amt_total &lt; 100000
+                    </when>
+                    <when test="code == '2'.toString()">
+                        AND c.amt_total between 100000 and 500000
+                    </when>
+                    <when test="code == '3'.toString()">
+                        AND c.amt_total between 500000 and 1000000
+                    </when>
+                    <when test="code == '4'.toString()">
+                        AND c.amt_total &gt; 1000000
+                    </when>
+                </choose>
+            </if>
+            <if test="lightType != null and lightType != ''">
+                <choose>
+                    <when test="lightType == '3'.toString()">
+                        AND ( status_conf = '2' AND DATE_ADD(a.date_plan,INTERVAL a.num2 DAY) &lt; a.date_confirm )
+                    </when>
+                    <when test="lightType == '2'.toString()">
+                        AND   ( status_conf = '1'  AND DATE_ADD(a.date_plan,INTERVAL a.num2 DAY) &lt; CURDATE()  AND  DATE_ADD(a.date_plan,INTERVAL a.num2 DAY) >= DATE_SUB(CURDATE(), INTERVAL 3 DAY) )
+                    </when>
+                    <when test="lightType == '1'.toString()">
+                        AND   ( status_conf = '1'  AND DATE_ADD(a.date_plan,INTERVAL a.num2 DAY) &lt; DATE_SUB(CURDATE(), INTERVAL 3 DAY) )
+                    </when>
+                </choose>
+            </if>
+            <if test="null == lightType or '' == lightType">
+                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 )
+                )
+            </if>
+        </where>
+        GROUP BY
+        a.id
+    </select>
+</mapper>

+ 18 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubRptContMapper.java

@@ -0,0 +1,18 @@
+package com.rtrh.projects.modules.projects.mapper;
+
+import com.rtrh.core.repository.mybatis.MyBatisRepository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dupengcheng
+ * @date 2025/1/6
+ * @apiNote
+ */
+@MyBatisRepository
+public interface SubRptContMapper {
+
+    List<Map<String,Object>>  pageQueryMonthWarnData(Map<String, Object> params);
+
+}

+ 74 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubRptContMapper.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.rtrh.projects.modules.projects.mapper.SubRptContMapper" >
+
+    <select id="pageQueryMonthWarnData" parameterType="map" resultType="map">
+        SELECT
+            a.id,
+            src.id monthId,
+            src.create_time,
+            a.sub_name subName,
+            ifnull( src.kj_month, #{yearMonth} ) AS kjMonth,
+            src.amt,
+            src.content,
+            src.num_bl numBl,
+            a.name_zrr nameZrr,
+            a.tel
+        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 #{yearMonth}
+                LEFT JOIN sub_source g ON g.sub_id = a.id
+                AND g.logic_delete_flag = 0
+                LEFT JOIN sub_manage e ON a.id = e.sub_id
+                AND e.logic_delete_flag = 0
+                LEFT JOIN sub_verify f ON f.sub_id = a.id
+                AND f.logic_delete_flag = 0
+                LEFT JOIN sub_manage sm ON sm.sub_id = a.id
+                AND sm.logic_delete_flag = 0
+        <where>
+            a.logic_delete_flag = 0
+            AND a.`status` = '7'
+            and a.indus_kind in('210','99','2')
+            <if test="null != subjectId and '' != subjectId">
+                AND a.subject_id = #{subjectId}
+            </if>
+            <if test="code != null and code != ''">
+                <choose>
+                    <when test="code == '1'.toString()">
+                        AND a.amt_total &lt; 100000
+                    </when>
+                    <when test="code == '2'.toString()">
+                        AND a.amt_total between 100000 and 500000
+                    </when>
+                    <when test="code == '3'.toString()">
+                        AND a.amt_total between 500000 and 1000000
+                    </when>
+                    <when test="code == '4'.toString()">
+                        AND a.amt_total &gt; 1000000
+                    </when>
+                </choose>
+            </if>
+            <if test="lightType != null and lightType != ''">
+                <choose>
+                    <when test="lightType == '3'.toString()">
+                        AND  src.create_time > #{date}
+                    </when>
+                    <when test="lightType == '2'.toString()">
+                        AND (src.id is NULL and TIMESTAMPDIFF(DAY,CONCAT(DATE_FORMAT(CURDATE(), '%Y-%m-'), '05'),now()) &lt;= 3)
+                    </when>
+                    <when test="lightType == '1'.toString()">
+                        AND (src.id is NULL and TIMESTAMPDIFF(DAY,CONCAT(DATE_FORMAT(CURDATE(), '%Y-%m-'), '05'),now()) > 3)
+                    </when>
+                </choose>
+            </if>
+            <if test="null == lightType or '' == lightType">
+                AND src.id IS NULL
+            </if>
+
+        </where>
+        GROUP BY
+            a.id
+    </select>
+</mapper>

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

@@ -432,5 +432,9 @@ public interface SubInfoService {
 
 	Map<String, Object> preProcedureExceed(LoginUserVO loginUser, PreWarnDataQueryVO queryVO);
 
+	List<WorkBenchVO> preProcedureExceedSize();
+
+	List<WorkBenchVO> queryExceedMonthlySize(String lastMonth);
+
 	Map<String, Object> queryExceedMonthly(LoginUserVO loginUser, PreWarnDataQueryVO queryVO);
 }

+ 29 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubPreNewService.java

@@ -109,6 +109,35 @@ public interface SubPreNewService {
 	 */
 	Page pageDueTime(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO);
 
+	/**
+	 * 储备转新建超期
+	 * @param page
+	 * @param vo
+	 * @param queryVO
+	 * @return
+	 */
+	Page pageQueryCbToXjData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+	List<Map<String,Object>> pageQueryCbToXjDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+	Page pageQueryXjToZjData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+	List<Map<String,Object>> pageQueryXjToZjDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+
+	Page pageQueryZjToTcData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+	List<Map<String,Object>> pageQueryZjToTcDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+	Page pageQueryTcToRgData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+	List<Map<String,Object>> pageQueryTcToRgDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+	Page pageQueryPreWarnData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+	List<Map<String,Object>> pageQueryPreWarnDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+
 
 	/***
 	 * 逾期项目数

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

@@ -118,6 +118,10 @@ public interface SubRptContService {
 
 	Page pageMonthWarnData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO);
 
+	Page pageQueryMonthWarnData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
+	List<Map<String,Object>> pageQueryMonthWarnDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO);
+
 
 
 	/***

+ 130 - 7
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java

@@ -5166,21 +5166,31 @@ public class SubInfoServiceImpl implements SubInfoService {
     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;
     }
 
+
+    @TargetDataSource("secondary")
+    @Override
+    public List<WorkBenchVO> preProcedureExceedSize(){
+        List<WorkBenchVO> list = subInfoMapper.preProcedureExceed();
+        return list;
+    }
+
+    @TargetDataSource("secondary")
+    @Override
+    public List<WorkBenchVO> queryExceedMonthlySize(String lastMonth) {
+        return subInfoMapper.queryExceedMonthly(lastMonth);
+    }
+
     @Override
+    @TargetDataSource("secondary")
     public Map<String, Object> preProcedureExceed(LoginUserVO vo, PreWarnDataQueryVO queryVO) {
         List<WorkBenchVO> list = subInfoMapper.preProcedureExceed();
-        return getStringObjectMap(list);
+        return getStringObjectMapSecond(list);
         //  /api/problemInfo/preData/getdata
     }
 
@@ -5188,6 +5198,7 @@ public class SubInfoServiceImpl implements SubInfoService {
      * 月报超期
      */
     @Override
+    @TargetDataSource("secondary")
     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());
@@ -5200,7 +5211,7 @@ public class SubInfoServiceImpl implements SubInfoService {
             }};
         }else {
             list = subInfoMapper.queryExceedMonthly(lastMonth);
-            return getStringObjectMap(list);
+            return getStringObjectMapSecond(list);
         }
     }
 
@@ -5316,6 +5327,118 @@ public class SubInfoServiceImpl implements SubInfoService {
         return resultMap;
     }
 
+    private Map<String, Object> getStringObjectMapSecond(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());

+ 232 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubPreNewServiceImpl.java

@@ -3,7 +3,10 @@ package com.rtrh.projects.modules.projects.service.impl;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.rtrh.projects.modules.projects.dao.*;
+import com.rtrh.projects.modules.projects.mapper.SubPreNewMapper;
 import com.rtrh.projects.modules.projects.po.*;
 import com.rtrh.projects.modules.projects.vo.*;
 import com.rtrh.projects.modules.system.enums.UserKindUnitEnum;
@@ -13,7 +16,9 @@ import com.rtrh.projects.modules.system.service.SubDataLogService;
 import com.rtrh.projects.modules.system.vo.LoginUserVO;
 import com.rtrh.projects.modules.utils.ApiStaticUrl;
 import com.rtrh.projects.modules.utils.DateUtils;
+import com.rtrh.projects.util.TargetDataSource;
 import com.rtrh.projects.vo.subject.SubinfoPreQueryVo;
+import org.apache.commons.lang.StringUtils;
 import org.hibernate.criterion.Criterion;
 import org.hibernate.criterion.DetachedCriteria;
 import org.hibernate.criterion.Order;
@@ -46,6 +51,8 @@ public class SubPreNewServiceImpl implements SubPreNewService {
     @Autowired
     private SubPreNewDao subPreNewDao;
     @Autowired
+    private SubPreNewMapper subPreNewMapper;
+    @Autowired
     private SubPreFlowDao subPreFlowDao;
     @Autowired
     private JDepartDao jDepartDao;
@@ -1561,5 +1568,230 @@ public class SubPreNewServiceImpl implements SubPreNewService {
         return subPreNewDao.queryForListBySql(sql.toString(), page);
     }
 
+    @Override
+    public Page pageQueryCbToXjData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subName", queryVO.getSubName());
+        map.put("hyfl", queryVO.getHyfl());
+        map.put("subjectId", queryVO.getSubjectId());
+        map.put("lightType", queryVO.getLightType());
+        map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+        if ("10亿元以下".equals(queryVO.getCode())){
+            map.put("code", "1");
+        }else if ("10-50亿元".equals(queryVO.getCode())){
+            map.put("code", "2");
+        }else if ("50-100亿元".equals(queryVO.getCode())){
+            map.put("code", "3");
+        }else if ("100亿元以上".equals(queryVO.getCode())){
+            map.put("code", "4");
+        }
+        PageHelper.startPage(page.getPageNo(), page.getPageSize());
+        List<Map<String, Object>> mapList = subPreNewMapper.pageQueryCbToXjData(map);
+        PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(mapList);
+        page.setTotalCount(pageInfo.getTotal());
+        page.setList(mapList);
+        return page;
+    }
+
+    @Override
+    public List<Map<String,Object>> pageQueryCbToXjDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subName", queryVO.getSubName());
+        map.put("hyfl", queryVO.getHyfl());
+        map.put("subjectId", queryVO.getSubjectId());
+        map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+        if ("10亿元以下".equals(queryVO.getCode())){
+            map.put("code", "1");
+        }else if ("10-50亿元".equals(queryVO.getCode())){
+            map.put("code", "2");
+        }else if ("50-100亿元".equals(queryVO.getCode())){
+            map.put("code", "3");
+        }else if ("100亿元以上".equals(queryVO.getCode())){
+            map.put("code", "4");
+        }
+        List<Map<String, Object>> mapList = subPreNewMapper.pageQueryCbToXjData(map);
+        return mapList;
+    }
+
+    @Override
+    public Page pageQueryXjToZjData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subName", queryVO.getSubName());
+        map.put("hyfl", queryVO.getHyfl());
+        map.put("subjectId", queryVO.getSubjectId());
+        map.put("lightType", queryVO.getLightType());
+        map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+        if ("10亿元以下".equals(queryVO.getCode())){
+            map.put("code", "1");
+        }else if ("10-50亿元".equals(queryVO.getCode())){
+            map.put("code", "2");
+        }else if ("50-100亿元".equals(queryVO.getCode())){
+            map.put("code", "3");
+        }else if ("100亿元以上".equals(queryVO.getCode())){
+            map.put("code", "4");
+        }
+        PageHelper.startPage(page.getPageNo(), page.getPageSize());
+        List<Map<String, Object>> mapList = subPreNewMapper.pageQueryXjToZjData(map);
+        PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(mapList);
+        page.setTotalCount(pageInfo.getTotal());
+        page.setList(mapList);
+        return page;
+    }
+
+    @Override
+    public List<Map<String,Object>> pageQueryXjToZjDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subName", queryVO.getSubName());
+        map.put("hyfl", queryVO.getHyfl());
+        map.put("subjectId", queryVO.getSubjectId());
+        map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+        if ("10亿元以下".equals(queryVO.getCode())){
+            map.put("code", "1");
+        }else if ("10-50亿元".equals(queryVO.getCode())){
+            map.put("code", "2");
+        }else if ("50-100亿元".equals(queryVO.getCode())){
+            map.put("code", "3");
+        }else if ("100亿元以上".equals(queryVO.getCode())){
+            map.put("code", "4");
+        }
+        List<Map<String, Object>> mapList = subPreNewMapper.pageQueryXjToZjData(map);
+        return mapList;
+    }
+
+    @Override
+    public Page pageQueryZjToTcData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subName", queryVO.getSubName());
+        map.put("hyfl", queryVO.getHyfl());
+        map.put("subjectId", queryVO.getSubjectId());
+        map.put("lightType", queryVO.getLightType());
+        map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+        if ("10亿元以下".equals(queryVO.getCode())){
+            map.put("code", "1");
+        }else if ("10-50亿元".equals(queryVO.getCode())){
+            map.put("code", "2");
+        }else if ("50-100亿元".equals(queryVO.getCode())){
+            map.put("code", "3");
+        }else if ("100亿元以上".equals(queryVO.getCode())){
+            map.put("code", "4");
+        }
+        PageHelper.startPage(page.getPageNo(), page.getPageSize());
+        List<Map<String, Object>> mapList = subPreNewMapper.pageQueryZjToTcData(map);
+        PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(mapList);
+        page.setTotalCount(pageInfo.getTotal());
+        page.setList(mapList);
+        return page;
+    }
 
+    @Override
+    public List<Map<String,Object>> pageQueryZjToTcDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subName", queryVO.getSubName());
+        map.put("hyfl", queryVO.getHyfl());
+        map.put("subjectId", queryVO.getSubjectId());
+        map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+        if ("10亿元以下".equals(queryVO.getCode())){
+            map.put("code", "1");
+        }else if ("10-50亿元".equals(queryVO.getCode())){
+            map.put("code", "2");
+        }else if ("50-100亿元".equals(queryVO.getCode())){
+            map.put("code", "3");
+        }else if ("100亿元以上".equals(queryVO.getCode())){
+            map.put("code", "4");
+        }
+        List<Map<String, Object>> mapList = subPreNewMapper.pageQueryZjToTcData(map);
+        return mapList;
+    }
+
+    @Override
+    public Page pageQueryTcToRgData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subName", queryVO.getSubName());
+        map.put("hyfl", queryVO.getHyfl());
+        map.put("subjectId", queryVO.getSubjectId());
+        map.put("lightType", queryVO.getLightType());
+        map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+        if ("10亿元以下".equals(queryVO.getCode())){
+            map.put("code", "1");
+        }else if ("10-50亿元".equals(queryVO.getCode())){
+            map.put("code", "2");
+        }else if ("50-100亿元".equals(queryVO.getCode())){
+            map.put("code", "3");
+        }else if ("100亿元以上".equals(queryVO.getCode())){
+            map.put("code", "4");
+        }
+        PageHelper.startPage(page.getPageNo(), page.getPageSize());
+        List<Map<String, Object>> mapList = subPreNewMapper.pageQueryTcToRgData(map);
+        PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(mapList);
+        page.setTotalCount(pageInfo.getTotal());
+        page.setList(mapList);
+        return page;
+    }
+
+    @Override
+    public List<Map<String,Object>> pageQueryTcToRgDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subName", queryVO.getSubName());
+        map.put("hyfl", queryVO.getHyfl());
+        map.put("subjectId", queryVO.getSubjectId());
+        map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+        if ("10亿元以下".equals(queryVO.getCode())){
+            map.put("code", "1");
+        }else if ("10-50亿元".equals(queryVO.getCode())){
+            map.put("code", "2");
+        }else if ("50-100亿元".equals(queryVO.getCode())){
+            map.put("code", "3");
+        }else if ("100亿元以上".equals(queryVO.getCode())){
+            map.put("code", "4");
+        }
+        List<Map<String, Object>> mapList = subPreNewMapper.pageQueryTcToRgData(map);
+        return mapList;
+    }
+
+    @Override
+    @TargetDataSource(value = "secondary")
+    public Page pageQueryPreWarnData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subName", queryVO.getSubName());
+        map.put("hyfl", queryVO.getHyfl());
+        map.put("subjectId", queryVO.getSubjectId());
+        map.put("lightType", queryVO.getLightType());
+        map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+        if ("10亿元以下".equals(queryVO.getCode())){
+            map.put("code", "1");
+        }else if ("10-50亿元".equals(queryVO.getCode())){
+            map.put("code", "2");
+        }else if ("50-100亿元".equals(queryVO.getCode())){
+            map.put("code", "3");
+        }else if ("100亿元以上".equals(queryVO.getCode())){
+            map.put("code", "4");
+        }
+        PageHelper.startPage(page.getPageNo(), page.getPageSize());
+        List<Map<String, Object>> mapList = subPreNewMapper.pageQueryPreWarnData(map);
+        PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(mapList);
+        page.setTotalCount(pageInfo.getTotal());
+        page.setList(mapList);
+        return page;
+    }
+
+    @Override
+    @TargetDataSource(value = "secondary")
+    public List<Map<String,Object>> pageQueryPreWarnDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("subName", queryVO.getSubName());
+        map.put("hyfl", queryVO.getHyfl());
+        map.put("subjectId", queryVO.getSubjectId());
+        map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+        if ("10亿元以下".equals(queryVO.getCode())){
+            map.put("code", "1");
+        }else if ("10-50亿元".equals(queryVO.getCode())){
+            map.put("code", "2");
+        }else if ("50-100亿元".equals(queryVO.getCode())){
+            map.put("code", "3");
+        }else if ("100亿元以上".equals(queryVO.getCode())){
+            map.put("code", "4");
+        }
+        List<Map<String, Object>> mapList = subPreNewMapper.pageQueryPreWarnData(map);
+        return mapList;
+    }
 }

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

@@ -8,14 +8,19 @@ import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.google.common.base.CaseFormat;
 import com.rtrh.projects.modules.projects.enums.ProjectStatusEnum;
 import com.rtrh.projects.modules.projects.enums.SubIsHideStatusEnum;
 import com.rtrh.projects.modules.projects.mapper.StaticsMapper;
+import com.rtrh.projects.modules.projects.mapper.SubRptContMapper;
 import com.rtrh.projects.modules.projects.vo.*;
 import com.rtrh.projects.modules.system.po.SecUser;
 import com.rtrh.projects.modules.system.service.SecUserService;
 import com.rtrh.projects.modules.utils.DateUtils;
+import com.rtrh.projects.util.TargetDataSource;
+import org.apache.commons.lang.StringUtils;
 import org.hibernate.criterion.Criterion;
 import org.hibernate.criterion.DetachedCriteria;
 import org.hibernate.criterion.Order;
@@ -50,6 +55,8 @@ public class SubRptContServiceImpl implements SubRptContService {
 	@Autowired
 	private RptContDao rptContDao;
 	@Autowired
+	private SubRptContMapper subRptContMapper;
+	@Autowired
 	private WorkbenchMapper workbenchMapper;
 	@Autowired
 	private SubInfoDao subInfoDao;
@@ -823,6 +830,93 @@ public class SubRptContServiceImpl implements SubRptContService {
 		return pageData;
 	}
 
+	@Override
+	@TargetDataSource(value = "secondary")
+	public Page pageQueryMonthWarnData(Page page, LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+		Map<String, Object> map = new HashMap<>();
+		map.put("subName", queryVO.getSubName());
+		map.put("hyfl", queryVO.getHyfl());
+		map.put("subjectId", queryVO.getSubjectId());
+		map.put("lightType", queryVO.getLightType());
+		map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+		if ("10亿元以下".equals(queryVO.getCode())){
+			map.put("code", "1");
+		}else if ("10-50亿元".equals(queryVO.getCode())){
+			map.put("code", "2");
+		}else if ("50-100亿元".equals(queryVO.getCode())){
+			map.put("code", "3");
+		}else if ("100亿元以上".equals(queryVO.getCode())){
+			map.put("code", "4");
+		}
+		Calendar calendar=Calendar.getInstance();
+		if (StringUtil.isNotEmpty(queryVO.getYear())){
+			calendar.set(Calendar.YEAR,Integer.parseInt(queryVO.getYear()));
+		}else{
+			calendar.set(Calendar.YEAR,Calendar.getInstance().get(Calendar.YEAR));
+		}
+		if(StringUtil.isNotEmpty(queryVO.getMonth())){
+			calendar.set(Calendar.MONTH, Integer.parseInt(queryVO.getMonth()));
+		}else{
+			calendar.set(Calendar.MONTH,Calendar.getInstance().get(Calendar.MONTH));
+		}
+		calendar.set(Calendar.DAY_OF_MONTH,5);
+		SimpleDateFormat yearMonthDay=new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss");
+		String date=yearMonthDay.format(calendar.getTime());
+		//月份减一
+		calendar.add(Calendar.MONTH,-1);
+		SimpleDateFormat yearMonth=new SimpleDateFormat("yyyyMM");
+		String yearMonthString=yearMonth.format(calendar.getTime());
+		map.put("yearMonth", yearMonthString);
+		map.put("date", date);
+		PageHelper.startPage(page.getPageNo(), page.getPageSize());
+		List<Map<String, Object>> mapList = subRptContMapper.pageQueryMonthWarnData(map);
+		PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(mapList);
+		page.setTotalCount(pageInfo.getTotal());
+		page.setList(mapList);
+		return page;
+	}
+
+	@Override
+	@TargetDataSource(value = "secondary")
+	public List<Map<String,Object>> pageQueryMonthWarnDataDetail(LoginUserVO vo, PreWarnDataQueryVO queryVO) {
+		Map<String, Object> map = new HashMap<>();
+		map.put("subName", queryVO.getSubName());
+		map.put("hyfl", queryVO.getHyfl());
+		map.put("subjectId", queryVO.getSubjectId());
+		map.put("propKind", StringUtils.isNotEmpty(queryVO.getPropKind())?Arrays.stream(queryVO.getPropKind().split(",")).map(s -> "'" + s + "'").collect(Collectors.joining(",")):null);
+		if ("10亿元以下".equals(queryVO.getCode())){
+			map.put("code", "1");
+		}else if ("10-50亿元".equals(queryVO.getCode())){
+			map.put("code", "2");
+		}else if ("50-100亿元".equals(queryVO.getCode())){
+			map.put("code", "3");
+		}else if ("100亿元以上".equals(queryVO.getCode())){
+			map.put("code", "4");
+		}
+		Calendar calendar=Calendar.getInstance();
+		if (StringUtil.isNotEmpty(queryVO.getYear())){
+			calendar.set(Calendar.YEAR,Integer.parseInt(queryVO.getYear()));
+		}else{
+			calendar.set(Calendar.YEAR,Calendar.getInstance().get(Calendar.YEAR));
+		}
+		if(StringUtil.isNotEmpty(queryVO.getMonth())){
+			calendar.set(Calendar.MONTH, Integer.parseInt(queryVO.getMonth()));
+		}else{
+			calendar.set(Calendar.MONTH,Calendar.getInstance().get(Calendar.MONTH));
+		}
+		calendar.set(Calendar.DAY_OF_MONTH,5);
+		SimpleDateFormat yearMonthDay=new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss");
+		String date=yearMonthDay.format(calendar.getTime());
+		//月份减一
+		calendar.add(Calendar.MONTH,-1);
+		SimpleDateFormat yearMonth=new SimpleDateFormat("yyyyMM");
+		String yearMonthString=yearMonth.format(calendar.getTime());
+		map.put("yearMonth", yearMonthString);
+		map.put("date", date);
+		List<Map<String, Object>> mapList = subRptContMapper.pageQueryMonthWarnData(map);
+		return mapList;
+	}
+
 	@Override
 	public List<Map<String, Object>> monthWarnDataBySubject(LoginUserVO vo, PreWarnDataQueryVO queryVO) {
 

+ 2 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/PreWarnDataQueryVO.java

@@ -88,4 +88,6 @@ public class PreWarnDataQueryVO {
      */
     private String checkDepart;
 
+    private String code;
+
 }

+ 264 - 37
projects/src/main/java/com/rtrh/projects/web/controller/problemreport/api/ProblemInfoApiController.java

@@ -1,6 +1,7 @@
 package com.rtrh.projects.web.controller.problemreport.api;
 
 
+import cn.hutool.core.date.DateUtil;
 import com.rtrh.common.util.StringUtil;
 import com.rtrh.core.repository.Page;
 import com.rtrh.core.vo.ListMessage;
@@ -23,6 +24,9 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 
 @RestController
@@ -59,6 +63,11 @@ public class ProblemInfoApiController extends BaseController {
         Message message = new Message();
         try {
             Map<String, Object> map = subInfoService.queryExceedNum();
+            map.put("preNum",subInfoService.preProcedureExceedSize().size());
+            // 上个月
+            String lastMonth = DateUtil.format(DateUtil.offsetMonth(DateUtil.date(), -1), "yyyyMM");
+            int dayOfMonth = DateUtil.dayOfMonth(DateUtil.date());
+            map.put("monthlyNum", dayOfMonth <= 5 ? 0 : subInfoService.queryExceedMonthlySize(lastMonth).size());
             // Page preData = subPreNewService.pageDueTime(new Page(), getCurUser().getLoginUser(), queryVO);
             // Page monthData = subRptContService.pageMonthWarnData(new Page(), getCurUser().getLoginUser(), queryVO);
             // queryVO.setOpenAndEndStatus("1");
@@ -90,6 +99,238 @@ public class ProblemInfoApiController extends BaseController {
         return message;
     }
 
+    /**
+     * 查询储备转新建超期信息
+     * @param page
+     * @return
+     */
+    @PostMapping(value = "/pageQueryCbToXjData")
+    public ListMessage pageQueryCbToXjData(@RequestBody Page page, @RequestBody PreWarnDataQueryVO queryVO) {
+        ListMessage message = new ListMessage();
+        try {
+            Page pageData = subPreNewService.pageQueryCbToXjData(page, getCurUser().getLoginUser(), queryVO);
+
+            message.add(pageData.getList(), pageData.getTotalCount());
+        } catch (Exception e) {
+            logger.error("",e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+    /**
+     * 查询储备转新建超期信息 红黄灯数量
+     * @param queryVO
+     * @return
+     */
+    @PostMapping("pageQueryCbToXjDataRedYellow")
+    public Message pageQueryCbToXjDataRedYellow(@RequestBody PreWarnDataQueryVO queryVO) {
+        Message message = new Message();
+        try {
+            List<Map<String,Object>> list = subPreNewService.pageQueryCbToXjDataDetail(getCurUser().getLoginUser(), queryVO);
+            Integer redNum=0;  //未办理红灯
+            Integer yellowNum=0;  //未办理黄灯
+            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+            for (Map<String, Object> map : list) {
+                LocalDate now = LocalDate.now();
+                LocalDate qyDate = LocalDate.parse(map.get("qyDate").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                if (StringUtil.isNotEmpty(map.get("cbNum").toString())){
+                    qyDate.plusDays(Integer.parseInt(map.get("cbNum").toString()));
+                    long daysBetween = ChronoUnit.DAYS.between(qyDate, now);
+                    if(daysBetween>3) {
+                        redNum += 1;
+                    }else{
+                        yellowNum += 1;
+                    }
+
+                }else{
+                    long daysBetween = ChronoUnit.DAYS.between(qyDate, now);
+                    if(daysBetween>3) {
+                        redNum += 1;
+                    }else{
+                        yellowNum += 1;
+                    }
+                }
+            }
+
+            Map<String,Object> map=new HashMap<>();
+            map.put("redNum",redNum);
+            map.put("yellowNum",yellowNum);
+
+            if (list.size()>0){
+                map.put("redRate",new BigDecimal(redNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+                map.put("yellowRate",new BigDecimal(yellowNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+            }else{
+                map.put("redRate",0);
+                map.put("yellowRate",0);
+            }
+            map.put("total",list.size());
+            message.setData(map);
+        } catch (Exception e) {
+            logger.error("", e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+
+    @PostMapping(value = "/pageQueryXjToZjData")
+    public ListMessage pageQueryXjToZjData(@RequestBody Page page, @RequestBody PreWarnDataQueryVO queryVO) {
+        ListMessage message = new ListMessage();
+        try {
+            Page pageData = subPreNewService.pageQueryXjToZjData(page, getCurUser().getLoginUser(), queryVO);
+            message.add(pageData.getList(), pageData.getTotalCount());
+        } catch (Exception e) {
+            logger.error("",e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+    @PostMapping("pageQueryXjToZjDataRedYellow")
+    public Message pageQueryXjToZjDataRedYellow(@RequestBody PreWarnDataQueryVO queryVO) {
+        Message message = new Message();
+        try {
+            List<Map<String,Object>> list = subPreNewService.pageQueryXjToZjDataDetail(getCurUser().getLoginUser(), queryVO);
+            Integer redNum=0;
+            Integer yellowNum=0;
+            //取当前时间判断
+            Calendar calendar=Calendar.getInstance();
+            for (Map<String, Object> map : list) {
+                LocalDate now = LocalDate.now();
+                LocalDate qyDate = LocalDate.parse(map.get("beginDate").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                long daysBetween = ChronoUnit.DAYS.between(qyDate, now);
+                if(daysBetween>3) {
+                    redNum += 1;
+                }else{
+                    yellowNum += 1;
+                }
+            }
+            Map<String,Object> map=new HashMap<>();
+            map.put("redNum",redNum);
+            map.put("yellowNum",yellowNum);
+            if (list.size()>0){
+                map.put("redRate",new BigDecimal(redNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+                map.put("yellowRate",new BigDecimal(yellowNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+            }else{
+                map.put("redRate","0%");
+                map.put("yellowRate","0%");
+            }
+
+            map.put("total",list.size());
+            message.setData(map);
+        } catch (Exception e) {
+            logger.error("", e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+
+    @PostMapping(value = "/pageQueryZjToTcData")
+    public ListMessage pageQueryZjToTcData(@RequestBody Page page, @RequestBody PreWarnDataQueryVO queryVO) {
+        ListMessage message = new ListMessage();
+        try {
+            Page pageData = subPreNewService.pageQueryZjToTcData(page, getCurUser().getLoginUser(), queryVO);
+            message.add(pageData.getList(), pageData.getTotalCount());
+        } catch (Exception e) {
+            logger.error("",e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+    @PostMapping("pageQueryZjToTcDataRedYellow")
+    public Message pageQueryZjToTcDataRedYellow(@RequestBody PreWarnDataQueryVO queryVO) {
+        Message message = new Message();
+        try {
+            List<Map<String,Object>> list = subPreNewService.pageQueryZjToTcDataDetail(getCurUser().getLoginUser(), queryVO);
+            Integer redNum=0;
+            Integer yellowNum=0;
+            //取当前时间判断
+            Calendar calendar=Calendar.getInstance();
+            for (Map<String, Object> map : list) {
+                LocalDate now = LocalDate.now();
+                LocalDate qyDate = LocalDate.parse(map.get("endDate").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                long daysBetween = ChronoUnit.DAYS.between(qyDate, now);
+                if(daysBetween>3) {
+                    redNum += 1;
+                }else{
+                    yellowNum += 1;
+                }
+            }
+            Map<String,Object> map=new HashMap<>();
+            map.put("redNum",redNum);
+            map.put("yellowNum",yellowNum);
+            if (list.size()>0){
+                map.put("redRate",new BigDecimal(redNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+                map.put("yellowRate",new BigDecimal(yellowNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+            }else{
+                map.put("redRate","0%");
+                map.put("yellowRate","0%");
+            }
+
+            map.put("total",list.size());
+            message.setData(map);
+        } catch (Exception e) {
+            logger.error("", e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+    @PostMapping(value = "/pageQueryTcToRgData")
+    public ListMessage pageQueryTcToRgDataData(@RequestBody Page page, @RequestBody PreWarnDataQueryVO queryVO) {
+        ListMessage message = new ListMessage();
+        try {
+            Page pageData = subPreNewService.pageQueryTcToRgData(page, getCurUser().getLoginUser(), queryVO);
+            message.add(pageData.getList(), pageData.getTotalCount());
+        } catch (Exception e) {
+            logger.error("",e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
+    @PostMapping("pageQueryTcToRgDataRedYellow")
+    public Message pageQueryTcToRgDataRedYellow(@RequestBody PreWarnDataQueryVO queryVO) {
+        Message message = new Message();
+        try {
+            List<Map<String,Object>> list = subPreNewService.pageQueryTcToRgDataDetail(getCurUser().getLoginUser(), queryVO);
+            Integer redNum=0;
+            Integer yellowNum=0;
+            //取当前时间判断
+            Calendar calendar=Calendar.getInstance();
+            for (Map<String, Object> map : list) {
+                LocalDate now = LocalDate.now();
+                LocalDate qyDate = LocalDate.parse(map.get("rtDate").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                long daysBetween = ChronoUnit.DAYS.between(qyDate, now);
+                if(daysBetween>3) {
+                    redNum += 1;
+                }else{
+                    yellowNum += 1;
+                }
+            }
+            Map<String,Object> map=new HashMap<>();
+            map.put("redNum",redNum);
+            map.put("yellowNum",yellowNum);
+            if (list.size()>0){
+                map.put("redRate",new BigDecimal(redNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+                map.put("yellowRate",new BigDecimal(yellowNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+            }else{
+                map.put("redRate","0%");
+                map.put("yellowRate","0%");
+            }
+
+            map.put("total",list.size());
+            message.setData(map);
+        } catch (Exception e) {
+            logger.error("", e);
+            message.add("获取失败");
+        }
+        return message;
+    }
+
 
 
     /**
@@ -101,7 +342,8 @@ public class ProblemInfoApiController extends BaseController {
     public ListMessage pageQueryPreWarnData(@RequestBody Page page, @RequestBody PreWarnDataQueryVO queryVO) {
         ListMessage message = new ListMessage();
         try {
-            Page pageData = subPreNewService.pageDueTime(page, getCurUser().getLoginUser(), queryVO);
+            //Page pageData = subPreNewService.pageDueTime(page, getCurUser().getLoginUser(), queryVO);
+            Page pageData = subPreNewService.pageQueryPreWarnData(page, getCurUser().getLoginUser(), queryVO);
 
             message.add(pageData.getList(), pageData.getTotalCount());
         } catch (Exception e) {
@@ -123,10 +365,9 @@ public class ProblemInfoApiController extends BaseController {
         try {
             Page page=new Page();
             page.setPageSize(0);
-
-            Page pageData = subPreNewService.pageDueTime(page, getCurUser().getLoginUser(), queryVO);
-            List<Map<String,Object>> list=pageData.getList();
-            // List<Map<String,Object>> list = subPreNewService.countSubInfoNumByDueTime(getCurUser().getLoginUser(), queryVO);
+            List<Map<String, Object>> list = subPreNewService.pageQueryPreWarnDataDetail(getCurUser().getLoginUser(), queryVO);
+            //Page pageData = subPreNewService.pageDueTime(page, getCurUser().getLoginUser(), queryVO);
+            //List<Map<String,Object>> list=pageData.getList();
             Integer redNum=0;  //未办理红灯
             Integer yellowNum=0;  //未办理黄灯
 
@@ -138,11 +379,6 @@ public class ProblemInfoApiController extends BaseController {
                     if (Objects.equals(map.get("statusConf"),"2")){
                         Integer num3=map.get("num3")==null?0: (Integer) map.get("num3");
                         Integer num2=map.get("num2")==null?0: (Integer) map.get("num2");
-//                        if (num3>num2+3){
-//                            redNum=redNum+1;
-//                        }else{
-//                            yellowNum=yellowNum+1;
-//                        }
                         cqNum=cqNum+1;
                     }else{
                         Date  planDate=map.get("datePlan")==null?new Date():simpleDateFormat.parse( map.get("datePlan")+"");
@@ -162,16 +398,16 @@ public class ProblemInfoApiController extends BaseController {
             map.put("yellowNum",yellowNum);
             map.put("cqNum",cqNum);
 
-            if (pageData.getList().size()>0){
-                map.put("redRate",new BigDecimal(redNum).multiply(new BigDecimal(100)).divide(new BigDecimal(pageData.getList().size()),2,BigDecimal.ROUND_HALF_UP)+"%");
-                map.put("yellowRate",new BigDecimal(yellowNum).multiply(new BigDecimal(100)).divide(new BigDecimal(pageData.getList().size()),2,BigDecimal.ROUND_HALF_UP)+"%");
-                map.put("cqNumRate",new BigDecimal(cqNum).multiply(new BigDecimal(100)).divide(new BigDecimal(pageData.getList().size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+            if (list.size()>0){
+                map.put("redRate",new BigDecimal(redNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+                map.put("yellowRate",new BigDecimal(yellowNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+                map.put("cqNumRate",new BigDecimal(cqNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
             }else{
                 map.put("redRate",0);
                 map.put("yellowRate",0);
                 map.put("cqNumRate",0);
             }
-            map.put("total",pageData.getList().size());
+            map.put("total",list.size());
             message.setData(map);
         } catch (Exception e) {
             logger.error("", e);
@@ -261,7 +497,8 @@ public class ProblemInfoApiController extends BaseController {
     public ListMessage pageQueryMonthWarnData(@RequestBody Page page, @RequestBody PreWarnDataQueryVO queryVO) {
         ListMessage message = new ListMessage();
         try {
-            Page pageData = subRptContService.pageMonthWarnData(page, getCurUser().getLoginUser(), queryVO);
+            //Page pageData = subRptContService.pageMonthWarnData(page, getCurUser().getLoginUser(), queryVO);
+            Page pageData = subRptContService.pageQueryMonthWarnData(page, getCurUser().getLoginUser(), queryVO);
 
             message.add(pageData.getList(), pageData.getTotalCount());
         } catch (Exception e) {
@@ -282,52 +519,42 @@ public class ProblemInfoApiController extends BaseController {
         try {
             Page page=new Page();
             page.setPageSize(0);
-
-            Page pageData = subRptContService.pageMonthWarnData(page, getCurUser().getLoginUser(), queryVO);
+            //Page pageData = subRptContService.pageMonthWarnData(page, getCurUser().getLoginUser(), queryVO);
+            List<Map<String,Object>> list = subRptContService.pageQueryMonthWarnDataDetail(getCurUser().getLoginUser(), queryVO);
 
             Integer redNum=0;
             Integer yellowNum=0;
 
-            for (Map<String, Object> map : (List<Map<String,Object>>)pageData.getList()) {
-
-
+            for (Map<String, Object> map : list) {
                 Calendar calendar=Calendar.getInstance();
-                calendar.set(Calendar.DAY_OF_MONTH,1);
-
+                calendar.set(Calendar.DAY_OF_MONTH,5);
                     if (map.get("monthId")!=null){
-
-
                          Date create_time=map.get("create_time")==null?new Date(): (Date) map.get("create_time");
-
                          if (((calendar.getTime().getTime()-create_time.getTime())/(1000*3600*24))>3){
                              redNum=redNum+1;
                          }else{
                              yellowNum=yellowNum+1;
                          }
-
-
                     }else{
-
                         Date newDate=new Date();
-
                         if ((newDate.getTime()-calendar.getTime().getTime())/(1000*3600*24)>3){
                             redNum=redNum+1;
                         }else{
                             yellowNum=yellowNum+1;
                         }
-
                     }
-
-
-
             }
 
             Map<String,Object> map=new HashMap<>();
             map.put("redNum",redNum);
             map.put("yellowNum",yellowNum);
-            map.put("redRate",new BigDecimal(redNum).multiply(new BigDecimal(100)).divide(new BigDecimal(pageData.getList().size()),2,BigDecimal.ROUND_HALF_UP)+"%");
-            map.put("yellowRate",new BigDecimal(yellowNum).multiply(new BigDecimal(100)).divide(new BigDecimal(pageData.getList().size()),2,BigDecimal.ROUND_HALF_UP)+"%");
-            map.put("total",pageData.getList().size());
+            if (list.size()>0){
+                map.put("redRate",new BigDecimal(redNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+                map.put("yellowRate",new BigDecimal(yellowNum).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+            }
+            //map.put("redRate",new BigDecimal(redNum).multiply(new BigDecimal(100)).divide(new BigDecimal(pageData.getList().size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+            //map.put("yellowRate",new BigDecimal(yellowNum).multiply(new BigDecimal(100)).divide(new BigDecimal(pageData.getList().size()),2,BigDecimal.ROUND_HALF_UP)+"%");
+            map.put("total",list.size());
             message.setData(map);
         } catch (Exception e) {
             logger.error("", e);

+ 1 - 1
projects/src/main/java/com/rtrh/projects/web/controller/problemreport/api/ProblemtrackApiController.java

@@ -54,7 +54,7 @@ public class ProblemtrackApiController extends BaseController {
         ListMessage message = new ListMessage();
         Page  pageData=null;
         try {
-            pageData=subquestioninfoservice.pageQueryQuestionList(page, getCurUser().getLoginUser(), queryVO);
+            pageData=subquestioninfoservice.pageQueryQuestionNewList(page, getCurUser().getLoginUser(), queryVO);
 
             for (Map<String, String> map : (List<Map<String, String>>) pageData.getList()) {
                 String sta1 = map.get("status");

+ 899 - 0
projects/src/main/webapp/vmodules/problem/info/cbToXjWarn.jsp

@@ -0,0 +1,899 @@
+<%@ 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>
+    <jsp:include page="../../common/common-meta-include.jsp"></jsp:include>
+    <jsp:include page="../../common/common-js-include.jsp"></jsp:include>
+    <jsp:include page="../../common/common-css-include.jsp"></jsp:include>
+    <!--[if lt IE 9]>
+    <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
+    <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
+    <![endif]-->
+    <style type="text/css">
+        /*.table_box .table_process .layui-table-cell {*/
+        /*    height: 75px;*/
+        /*}*/
+        .layui-table-view .layui-table td > div>span,
+        .layui-table-view .layui-table td > div{
+            /*min-height: 85px !important;*/
+            /*white-space: normal;*/
+            line-height: 22px !important;
+            display: -webkit-box; /* 使用旧版的弹性盒子布局 */
+            -webkit-box-orient: vertical; /* 设置为垂直方向排列 */
+            overflow: hidden; /* 隐藏溢出内容 */
+            text-overflow: ellipsis; /* 使用省略号表示溢出内容 */
+            -webkit-line-clamp: 2; /* 显示的行数 */
+        }
+        .table_box .table_process .layui-table-cell {
+            height: 65px;
+        }
+        .layui-table-col-special .layui-table-cell{
+            display:flex;
+            justify-content:space-between;
+        }
+        .queryTimeType{
+            margin-top: -4px;
+            position: absolute;
+        }
+        .hiddenParam {
+            display: none;
+        }
+        .morePan{
+            margin-top: 9px;
+            position: absolute;
+        }
+        .morePan a{
+            color: #2C6EC6;
+        }
+
+        .table_box .table_process{
+            height: fit-content;
+            max-height: 60vh;
+            overflow-x: scroll;
+            overflow-y: scroll;
+        }
+
+        .layui-table-body .layui-table-cell{
+            padding: 5px !important;
+        }
+        .layui-table-header .layui-table-cell{
+            height: 42px !important;
+        }
+    </style>
+</head>
+<body>
+<div id="app"></div>
+<template id="template">
+    <div class="layui-layout layui-layout-admin">
+
+        <div class="right_title">
+			
+            <div class="layui-collapse">
+                <div class="layui-colla-item">
+                <span class="txt">储备转新建超期</span>
+                    <%--                    <h2 class="layui-colla-title">筛选</h2>--%>
+                    <div class="layui-colla-content layui-show">
+                        <form class="layui-form" lay-filter="searchForm">
+
+
+
+                            <div class="layui-row">
+
+                                <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">
+                                            <input type="text" name="subName" placeholder="请输入" autocomplete="off" class="layui-input">
+                                            <input type="hidden" name="subjectId"    value="${subjectId}">
+                                            <input type="hidden" name="mainId" value="${mainId }">
+                                            <input type="hidden" name="sourceId" value="${sourceId }">
+                                            <input type="hidden" name="hyfl" value="${hyfl }">
+                                            <input type="hidden" name="code" value="${code}">
+                                        </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">
+                                            <select id="lightType" name="lightType">
+                                                <option value="">所有</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" 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>--%>
+<%--                                        <div class="layui-input-block">--%>
+<%--                                            <div id="indusKind" name="hyfl"></div>--%>
+<%--                                        </div>--%>
+<%--                                    </div>--%>
+<%--                                </div>--%>
+                            </div>
+                            <div class="layui-row">
+
+                                <div class="layui-col-xs12 layui-col-sm12 layui-col-md3">
+                                    <button type="button" class="layui-btn layui-btn-normal" @click="search">查询</button>
+<%--                                    <span class="layui-btn layui-btn-normal" style="position:relative;z-index:9" @click="backHis()">--%>
+<%--                                        返回--%>
+<%--                                    </span>--%>
+                                    <!-- <button type="button" class="layui-btn layui-btn-export" @click="exportExcel">导出</button> -->
+                                </div>
+                            </div>
+                        </form>
+                    </div>
+                </div>
+            </div>
+
+        </div>
+
+        <div>
+            <div class="layui-row">
+                <div class="layui-form-item" style="display: flex">
+                    <label class="juli">
+                        问题总数<span class="lanse-first">{{numData.total}}个</span>
+                        <div class="progress-div">
+                            <div class="layui-progress">
+                                <div class="layui-progress-bar"></div>
+                            </div>
+                        </div>
+                    </label>
+                    <label class="juli">
+                        超期红灯数量<span class="lanse-first">{{numData.redNum}}个</span>
+                        <div class="progress-div">
+                            <div class="layui-progress">
+                                <div class="layui-progress-bar" :style="'width:'+numData.redRate"></div>
+                            </div>
+                        </div>
+                    </label>
+                    <label class="juli">
+                        超期黄灯数量<span class="lanse-first">{{numData.yellowNum}}</span>
+                        <div class="progress-div">
+                            <div class="layui-progress">
+                                <div class="layui-progress-bar" :style="'width:'+numData.yellowRate"></div>
+                            </div>
+                        </div>
+                    </label>
+                </div>
+            </div>
+        </div>
+        <div>
+
+        </div>
+        <div class="table_box" style="padding-top: 0;">
+            <div class="table_process">
+                <table id="table1" lay-filter="test"></table>
+            </div>
+            <div  class="pagination-box"  id="pagination"></div>
+        </div>
+        <div style="height: 20px;"></div>
+    </div>
+</template>
+
+
+<div id="problem" class="layuimini-main" style="display: none;">
+    <form class="layui-form" lay-filter="problemForm">
+        <div class="layui-row">
+            <div class="layui-col-xs12 layui-col-sm12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">状态:</label>
+                    <div class="layui-input-block">
+                        <input type="radio" name="statusF" value="2" title="红灯" checked="checked"/>
+                        <input type="radio" name="statusF" value="1" title="黄灯"/>
+                        <input type="radio" name="statusF" value="0" title="绿灯"/>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-row">
+            <div class="layui-col-xs12 layui-col-sm12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">问题描述:</label>
+                    <div class="layui-input-block">
+                        <textarea name="status_reason" maxlength="400" style="height: 300px;width: 80%;" id="problemReason" autocomplete="off" class="layui-textarea"></textarea>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="layui-row">
+            <div class="layui-col-xs12 layui-col-sm12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">要求解决日期:</label>
+                    <div class="layui-input-block "  style="width: 25%">
+                        <input type="text" id="dateConfirm" name="dateConfirm"  autocomplete="off" class="layui-input" >
+                    </div>
+                </div>
+            </div>
+        </div>
+    </form>
+</div>
+
+
+
+<script type="text/html" id="subName">
+    <span title="{{d.subName}}">{{d.subName}}</span>
+</script>
+<script type="text/html" id="amt">
+    {{# var computedPer = function(total, now){
+    return (total == 0) ? 0 : parseInt(now * 100 / total +0.5);
+    };
+    }}
+    <span title="">总投资:{{d.amtTotal}}万元 <br/>
+		年度计划投资:{{d.yearPlanAmt}}万元 <br/>
+					年度完成投资:{{d.yearEndAmt}}万元( {{computedPer(d.yearPlanAmt, d.yearEndAmt)}} %)</span>
+</script>
+<script type="text/html" id="date">
+    <div title="">
+        <div class="line">计划开工:{{d.beginDate}}
+
+        </div>
+        <div class="line">计划竣工:{{d.endDate}}
+
+        </div>
+    </div>
+</script>
+<script type="text/html" id="abcSpan">
+    <span style="font-size:28px;font-weigh:500 !important;">{{d.abc||''}}</span>
+</script>
+<script type="text/html" id="toolBar">
+    <div class="toolBar">
+        <span title="项目信息" lay-event="toDetail">项目信息</span>
+        <span title="短信" lay-event="toMsgLog">短信</span>
+        <span title="短信发送" lay-event="sendMsg">短信发送</span>
+        <%--    <c:if test="${isHydw}">--%>
+        <%--      <span title="问题督办" lay-event="problem">&nbsp;问题督办</span>--%>
+        <%--    </c:if>--%>
+        <%--    {{# if(d.unitId == "${currUnitId}") { }}--%>
+        <%--    <span title="原因录入" lay-event="setSubReason">&nbsp;原因录入</span>--%>
+        <%--    {{#}}}--%>
+
+        <%--    {{# if("${currUser.edit}" == 'true'||( d.propKind == '3' && "${currUser.id}" == d.create_user_id )) { }}--%>
+        <%--    <span title="信息修改" lay-event="toEditSubInfo">&nbsp;信息修改</span>--%>
+        <%--    {{#} }}--%>
+
+        <%--    {{# if("${currUser.edit}" == 'true') { }}--%>
+        <%--    {{# if(d.status != '0' && d.status != '6' && d.status != '7' && d.status != '8' && d.status != '9' && d.status != 'A') { }}--%>
+        <%--    <span title="退回暂存" lay-event="toTh">&nbsp;退回暂存</span>--%>
+        <%--    {{#}}}--%>
+        <%--    {{#} }}--%>
+        <%--    <span title="手续办理" lay-event="preNew">&nbsp;手续办理</span>--%>
+        <%--    <c:if test="${admin}">--%>
+        <%--      {{# if(d.isHide == "1") { }}--%>
+        <%--      <span title="取消在建库"  lay-event="isNoHide">&nbsp;取消在建库</span>--%>
+        <%--      {{#} else { }}--%>
+        <%--      <span title="移入在建库"  lay-event="isHide">&nbsp;移入在建库</span>--%>
+        <%--      {{#} }}--%>
+        <%--    </c:if>--%>
+
+    </div>
+</script>
+
+
+<script type="text/html" id="preInfo">
+
+
+
+    <span title="">
+		{{# if(d.xmbaIs == '' || d.xmbaIs == null ) { }}
+			项目备案:未办理 <br/>
+		{{#} else if(d.xmbaIs == '2' ) { }}
+			项目备案:无需办理 <br/>
+
+		{{#} else { }}
+
+			{{# if(d.xmbaStatus == '' || d.xmbaStatus == null ) { }}
+							项目备案:未办理 <br/>
+			{{#} else if(d.xmbaStatus == '0') { }}
+						项目备案:未办理 <br/>
+			{{#} else if(d.xmbaStatus == '1') { }}
+						项目备案:开始办理 <br/>
+			{{#} else if(d.xmbaStatus == '2') { }}
+						项目备案:已办理 <br/>
+			{{#} }}
+
+		{{#} }}
+
+
+
+
+		{{# if(d.yjbgIs == '' || d.yjbgIs == null ) { }}
+			可行性研究报告:未办理 <br/>
+		{{#} else if(d.yjbgIs == '2' ) { }}
+			可行性研究报告:无需办理 <br/>
+		{{#} else { }}
+			{{# if(d.yjbgStatus == '' || d.yjbgStatus == null ) { }}
+							可行性研究报告:未办理 <br/>
+			{{#} else if(d.yjbgStatus == '0') { }}
+						可行性研究报告:未办理 <br/>
+			{{#} else if(d.yjbgStatus == '1') { }}
+						可行性研究报告:开始办理 <br/>
+			{{#} else if(d.yjbgStatus == '2') { }}
+						可行性研究报告:已办理 <br/>
+			{{#} }}
+
+		{{#} }}
+
+		</span>
+
+</script>
+
+<script type="text/html" id="imageDiv">
+    <div style="width:50px;height:50px" onclick="showImage(this)">
+        {{# if(d.fileId != null && d.fileId != '') { }}
+        <img src="${domain}/static/file/{{d.fileId}}/showfile" realUrl="${domain}/static/file/{{d.fileId}}/showfile" width="50px" height="50px"/>
+        {{#} }}
+    </div>
+</script>
+
+
+
+<script type="text/html" id="offsetLight">
+    {{#if(d.offset >= -30 && d.offset <= -10 ) { }}
+    <span style="color: yellow"><image   class="light-rgb"     src="${WebSite.asset}/css/images/bigScreen/light-yellow.png"></image></span>
+    {{#} else if(d.offset < -30) { }}
+    <span style="color: red"><image   class="light-rgb"     src="${WebSite.asset}/css/images/bigScreen/light-red.png"></image></span>
+    {{#}}}
+</script>
+
+
+<script type="text/html" id="dayNum">
+    {{d.num2}}
+</script>
+
+
+
+<script type="text/html" id="openLight">
+
+
+    {{# var computedPer1 = function(beginDate){
+
+    var beginDate =new Date(beginDate);
+    var beginDate7 =new Date(beginDate);
+    var beginDate3 =new Date(beginDate);
+    beginDate7.setDate(beginDate7.getDate()-7);
+    beginDate3.setDate(beginDate3.getDate()-3);
+
+    var newDate =  new Date();
+    if(newDate.getTime() >=beginDate7.getTime()  && newDate.getTime() <=beginDate3.getTime()){
+    return "yellow";
+    }else if(newDate.getTime() >=beginDate3.getTime() && newDate.getTime()  <=  beginDate.getTime()  ){
+    return "red";
+    }else{
+    return "-";
+    }
+    };
+    }}
+
+    {{#if(computedPer1(d.beginDate)=="yellow" ) { }}
+    <span style="color: yellow">  <image   class="light-rgb"     src="${WebSite.asset}/css/images/bigScreen/light-yellow.png"></image></span>
+    {{#} else if(computedPer1(d.beginDate)=="red") { }}
+    <span style="color: red" >   <image   class="light-rgb"     src="${WebSite.asset}/css/images/bigScreen/light-red.png"></image></span>
+    {{#}}}
+</script>
+
+<%--<script type="text/html" id="num2">--%>
+<%--    &lt;%&ndash;	{{(d.num1 + d.num2)/2}}&ndash;%&gt;--%>
+<%--    {{d.num2}}--%>
+<%--</script>--%>
+<script type="text/html" id="num4">
+    <div style="display: flex;justify-content: center">
+        {{#if( (d.num3!=null && d.num3!= '') || d.num3 == 0 ) { }}
+        {{#if( d.num2 - d.num3 >=0 ) { }}
+        <span style="color: green">{{d.num2 - d.num3}}</span>
+        {{#} else if(d.num2 - d.num3 < 0 ) { }}
+        <span style="color: red">{{d.num2 - d.num3}}</span>
+        {{#} else { }}
+        <span>{{d.num2 - d.num3}}</span>
+        {{#}}}
+        {{#} else { }}
+        <span></span>
+        {{#}}}
+    </div>
+</script>
+<script type="text/html" id="num3">
+
+    {{#if( (d.num3!=null && d.num3!= '') || d.num3 == 0 ) { }}
+    {{#if( d.num3  >= d.num2+1 &&  d.num3 <= d.num2+3 ) { }}
+    <span style="color: #EAC100">{{d.num3}}</span>
+    {{#} else if(d.num3 > d.num2+3 ) { }}
+    <span style="color: red">{{d.num3}}</span>
+    {{#} else { }}
+    <span>{{d.num3}}</span>
+    {{#}}}
+    {{#} else { }}
+    <span></span>
+    {{#}}}
+</script>
+<script>
+    new Vue({
+        el: "#app",
+        template: "#template",
+        data: {
+            winH: 0,
+            dataList : [],
+            startDate:"",
+            endDate:"",
+            LightType:"",
+            tableName : 'test',
+            pageNo : 1,
+            indusKind : {},
+            propKind : {},
+            kind: {},
+            numData:{
+                redNum:0,
+                yellowNum:0,
+                cqNum:0,
+            },
+            beginRate: {},
+            showMoreFlag: false,
+            light: null,
+            sort: {field: "amtTotal", type:""},
+            pageSize : 10
+        },
+        mounted : function() {
+            this.init()
+        },
+        methods: {
+            init : function() {
+                this.winH = document.body.clientHeight
+                layui.laydate.render({
+                    elem: '#startTime',
+                    theme: layDateTheme,
+                    range: '~'
+                });
+                if("${type}"=== "1" ){
+                    this.lightType="1";
+                }else{
+                    this.lightType="2";
+                }
+
+                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
+                });
+<%--                <c:forEach items="${XMLX}" var="xm">--%>
+<%--                xmlx.push({value: '${xm.code}', name: '${xm.title}'});--%>
+<%--                </c:forEach>--%>
+<%--                this.kind = layui.xmSelect.render({--%>
+<%--                    el: "#kind",--%>
+<%--                    language:'zn',--%>
+<%--                    data:xmlx--%>
+<%--                });--%>
+
+
+                console.log("${subjectId}");
+                console.log("${mainId}");
+                console.log("${sourceId}");
+                console.log("${hyfl}");
+                this.getData();
+                window.toDetail = this.toDetail;
+                window.showImage = this.showImage;
+            },
+            sendMsg: function(obj) {
+            	var content = "【市发改委】哈密市发改委提醒:您监管/负责的("+obj.data.subName+")项目,"+
+            	obj.data.preName+"手续办理已逾期,请及时关注并处理!!";
+    			layer.open({
+    				title: "短信内容",
+    				type: 1,
+    				area: ["400px","200px"],
+    				content: content,
+    				btn: ["发送"],
+    				yes: function() {
+    					App.msg.success("发送成功");
+    					layer.closeAll();
+    				}
+    			})
+            },
+            showImage: function(that) {
+                var imageUrl = $(that).find("img").eq(0).attr("realUrl");
+                if(imageUrl) {
+                    layer.open({
+                        type: 2,
+                        content: imageUrl,
+                        area: ['500px', '1000px'],
+                        offset: 'auto',
+                        success: function(obj,index){
+                            layer.full(index);
+                        }
+                    })
+                }
+            },
+            setQueryForm2: function() {
+                $("#searchForm").find(".layui-form-item").parent()
+                    .removeClass("layui-col-xs3").removeClass("layui-col-sm3").removeClass("layui-col-md3")
+                    .addClass("layui-col-xs5").addClass("layui-col-sm5").addClass("layui-col-md5");
+            },
+            setQueryForm4: function() {
+                $("#searchForm").find(".layui-form-item").parent()
+                    .removeClass("layui-col-xs5").removeClass("layui-col-sm5").removeClass("layui-col-md5")
+                    .addClass("layui-col-xs3").addClass("layui-col-sm3").addClass("layui-col-md3");
+            },
+            showMore: function() {
+                var self = this;
+                layer.open({
+                    title: "查询条件",
+                    type: 1,
+                    area: ['90%','700px'],
+                    content: $("#searchForm"),
+                    btn: ["查询"],
+                    yes: function(index) {
+                        self.search();
+                        layer.close(index);
+                    },
+                    success: function() {
+                        self.setQueryForm2();
+                        $(".hiddenParam").show();
+                    },
+                    end: function() {
+                        self.setQueryForm4();
+                        $(".hiddenParam").hide();
+                    }
+                })
+            },
+            getSearchParams: function() {
+                var param = layui.form.getValue("searchForm");
+
+                console.log("param");
+                console.log(param);
+                if(param.rangeDate) {
+                    param.beginDate = param.rangeDate.split(" ~ ")[0];
+                    param.endDate = param.rangeDate.split(" ~ ")[1];
+                    param.rangeDate = null;
+                }
+                if(this.light) {
+                    param.light = this.light.getValue("valueStr");
+                }
+                delete(param.select);
+                param.propKind = this.propKind.getValue("value").sort().join(",");
+                return param;
+            },
+            getData : function(){
+                var self = this;
+                var param = this.getSearchParams();
+
+                console.log(param);
+
+                param.pageNo = this.pageNo;
+                param.pageSize = this.pageSize;
+                param.orderBy = this.sort.field;
+                param.orderType = this.sort.type || null;
+
+
+                if (self.lightType=="1"){
+                    param.openDate=true;
+                }else{
+                    param.offsetMax=-10;
+                }
+
+
+
+                App.postJson("/api/problemInfo/pageQueryCbToXjDataRedYellow",param, function(res){
+
+                    console.log(res.data)
+
+                    self.numData = res.data;
+
+                });
+
+
+                App.postJson("/api/problemInfo/pageQueryCbToXjData",param, function(res){
+                    self.dataList = res.rows;
+                    self.loadPage(res.total);
+                    self.loadTable();
+                });
+
+            },
+            loadTable : function(){
+                for(var i=0;i<this.dataList.length;i++){
+                    var tem = this.dataList[i];
+                    switch(tem.status){
+                        case '0':
+                            tem.statusName = '暂存';
+                            break;
+                        case '1':
+                            tem.statusName = '项目前期';
+                            break;
+                        case '6':
+                            tem.statusName = '待开工';
+                            break;
+                        case '7':
+                            tem.statusName = '施工中';
+                            break;
+                        /* case '9':
+                            tem.statusName = '年度竣工';
+                            break; */
+                        case '8':
+                            tem.statusName = '暂停施工';
+                            break;
+                        case 'A':
+                            tem.statusName = '已竣工';
+                            break;
+                    }
+                }
+                var self = this;
+                layui.table.render({
+                    elem: '#table1', // 指定原始表格元素选择器(推荐id选择器)
+                    even: true,
+                    autoSort: false,
+                    initSort: self.sort,
+                    cols: [[ // 设置表头
+                        {type: 'numbers', fixed: 'left', align: 'center',title:'序号'},
+                        {field: 'subName', fixed: 'left', title: '项目名称', minWidth: 300, templet: '#subName'},
+                        {field: 'beginDate', title: '计划新建时间', width: 100},
+                        {field: 'endDate', title: '计划完成时间', minWidth: 80},
+                        {field: 'unitTitle', title: '项目单位', width: 200},
+                        {field: 'mainTitle', title: '监管单位', width: 80},
+                        {field: 'datePlan', title: '联系人与电话', minWidth: 200,templet: '#info'},
+                        {title: '操作', width: 200, align:'center', toolbar: '#toolBar'},
+                    ]],
+                    fixed: true,
+                    height: window.screen.availHeight-430,
+                    data : self.dataList,
+                    done: function(res, curr, count){
+                        //获取当前时间
+                        var date=new Date();
+                        res.data.forEach(function(item, index) {
+                            // /1.当前行的背景颜色cur_color
+
+                            var planDate=new Date(item.datePlan);
+
+                            console.log(planDate);
+
+                            if (item.statusConf  ==  '2' ) {
+                                if (item.num3>item.num2+3){
+                                    $('.layui-table').find('tr[data-index="' + index + '"]').find("td").css('color', "red");
+                                }else{
+                                    $('.layui-table').find('tr[data-index="' + index + '"]').find("td").css('color', "#EAC100");
+                                }
+                            }else{
+                                if (self.daysBetween(planDate,date)>3+item.num2){
+                                    $('.layui-table').find('tr[data-index="' + index + '"]').find("td").css('color', "red");
+                                }else{
+                                    $('.layui-table').find('tr[data-index="' + index + '"]').find("td").css('color', "#EAC100");
+                                }
+                            }
+                            $(".layui-table-body  tr").resize(function () {
+                                $(".layui-table-body  tr").each(function (index, val) {
+                                    $($(".layui-table-fixed .layui-table-body table tr")[index]).height($(val).height());
+                                });
+                            });
+                            //初始化高度,使得冻结行表体高度一致
+                            $(".layui-table-body  tr").each(function (index, val) {
+                                $($(".layui-table-fixed .layui-table-body table tr")[index]).height($(val).height());
+                            });
+                        });
+
+
+
+                    }
+                });
+                layui.table.on('tool('+this.tableName+')', function(obj){
+                    var event = obj.event;
+                    self[event].call(this, obj);
+                });
+                layui.table.on('sort('+this.tableName+')', function(obj) {
+                    self.sort = obj;
+                    self.getData();
+                    return;
+                })
+            },
+            daysBetween: function (date1, date2) {
+
+                const timeDiff = Math.abs(date2.getTime() - date1.getTime());
+                return Math.ceil(timeDiff / (1000 * 3600 * 24));
+            },
+            isNoHide:function (obj){
+                var self=this;
+                console.log(obj);
+                App.msg.confirm("是否移除在建库?",function() {
+                    App.postJson("/api/subject/subInfo/setBackIsHide", {subId: obj.data.id}, function (res) {
+                        if (res.success) {
+                            App.msg.success("设置成功");
+                            self.getData();
+                            layer.close(index);
+                        }
+                    });
+                });
+            },
+            isHide:function (obj){
+                var self=this;
+                console.log(obj);
+                App.msg.confirm("是否移入重点项目库?",function() {
+                    App.postJson("/api/subject/subInfo/setIsHide", {subId: obj.data.id}, function (res) {
+                        if (res.success) {
+                            App.msg.success("设置成功");
+                            self.getData();
+                            layer.close(index);
+                        }
+                    });
+                });
+            },
+            loadPage : function(totalCount){
+                var self = this;
+                layui.laypage.render({
+                    elem: 'pagination',
+                    count: totalCount,
+                    curr : self.pageNo,
+                    limit : self.pageSize,
+                    layout: ['count', 'prev', 'page', 'next', 'skip'],
+                    jump: function(obj, first) {
+                        //首次不执行
+                        if(!first) {
+                            self.pageNo = obj.curr;
+                            self.getData();
+                        }
+                    }
+                });
+            },
+            yearPlan: function(obj) {
+                window.location.href=App.getUrl("amtPlan/detail?subId="+obj.data.id);
+            },
+            setSubReason: function(obj) {
+                var self = this;
+                layui.form.val("reasonForm", obj.data);
+                layer.open({
+                    type: 1,
+                    title: "项目原因录入",
+                    content: $("#setReason"),
+                    area: ['880px', '560px'],
+                    btn: ["保存", "取消"],
+                    yes: function(index) {
+                        var reason = layui.form.val("reasonForm");
+                        reason.subId = obj.data.id;
+                        App.postJson("/api/subject/subInfo/setSubReason",reason, function(res){
+                            if(res.success){
+                                App.msg.success("设置成功");
+                                self.getData();
+                                layer.close(index);
+                            }
+                        });
+                    },
+                    close: function(index) {
+                        layer.close(index);
+                    }
+                })
+            },
+            problem: function(obj) {
+                var self = this;
+                obj.data.status_reason="";
+                layui.form.val("problemForm", obj.data);
+                layer.open({
+                    type: 1,
+                    title: "问题督办",
+                    content: $("#problem"),
+                    area: ['800px', '600px'],
+                    btn: ["保存", "取消"],
+                    yes: function(index) {
+                        var reason = layui.form.val("problemForm");
+                        reason.subId = obj.data.id;
+
+                        if (reason.statusF=="2"||reason.statusF=="1"){
+                            if (reason.status_reason==""||reason.status_reason==undefined){
+                                layer.msg("红灯,黄灯必须输入原因");
+                                return ;
+                            }
+                        }
+                        App.postJson("/api/subject/subInfo/setStatus",{subId:obj.data.id,statusFgw:reason.statusF,reason:reason.status_reason,dateConfirm:reason.dateConfirm}, function(res){
+                            if(res.success){
+                                App.msg.success("设置成功");
+                                self.getData();
+                                layer.close(index);
+                            }
+                        });
+                    },
+                    close: function(index) {
+                        layer.close(index);
+                    }
+                })
+            },
+            exportExcel: function(){
+                var param = this.getSearchParams();
+                App.common.utils.downFile(App.getUrl("subInfoExport/exportSummaryExcel"),"POST", param,"项目情况表.xlsx", "导出失败");
+            },
+            exportExcelByIndusKind: function(){
+                var param = this.getSearchParams();
+                App.common.utils.downFile(App.getUrl("subInfoExport/exportExcelByIndusKind"),"POST", param,"项目情况表(按所属行业统计).xlsx", "导出失败");
+            },
+            exportSchedulingExcel: function(){
+                var param = this.getSearchParams();
+                App.common.utils.downFile(App.getUrl("subInfoExport/exportSchedulingExcel"),"POST", param,"项目调度表.xlsx", "导出失败");
+            },
+            /* exportExcel2: function(){
+                var param = this.getSearchParams();
+                 App.common.utils.downFile(App.getUrl("subInfoExport/exportExcelTz"),"POST", param,"项目详情信息表.xlsx", "导出失败");
+            }, */
+            exportMoreExcel: function() {
+                top.window.getSearchParams = this.getSearchParams;
+                App.openLayer({
+                    title : "自定义导出",
+                    content : App.getUrl("/subInfoExport/index"),
+                    height : "600",
+                    width : "800"
+                })
+            },
+            toMsgLog: function (obj) {
+
+                App.openLayer({
+                    title: "短信",
+                    content: App.getUrl("/msgLog/kindDetail?subId=" + obj.data.subId+"&kind=手续超期"),
+                    height: "600",
+                    width: "800"
+                })
+
+            },
+            toDetail : function(obj){
+                //详情
+                var index = layer.open({
+                    type: 2,
+                    area: ['1000px', '800px'],
+                    content: App.getUrl("/subject/subInfo/detailView?layer=true&subId="+ obj.data.subId + "&lastUrl=" + window.location.href),
+                });
+                layui.layer.full(index);
+            },
+            print: function(obj){
+                window.open(App.getUrl("/subject/apply/downPdf?subId="+obj.data.id));
+            },
+            toEditSubInfo: function(obj){
+                window.location.href=App.getUrl("/subject/subInfo/editSubInfo?subId="+obj.data.id);
+            },
+            preNew: function (obj){
+                window.location.href=App.getUrl("/subPreNew/todo?subId=" + obj.data.id);
+            },
+            backHis: function (){
+                // if() {
+                // window.history.back(-1);
+                <%--}else {--%>
+                <%--  window.location.href="";--%>
+                <%--}--%>
+                window.location.href = "${lastUrl}";
+            },
+            toTh: function(obj){
+                if(obj.data.statusJh == null || obj.data.statusJh == '0' || obj.data.statusJh == '1') {
+                    App.msg.confirm("是否需要退回到暂存状态?", function(){
+                        App.postJson("/api/subject/subInfo/toTemp",{subId : obj.data.id,status:"0"}, function(res){
+                            if(res.success){
+                                layer.msg("成功",{icon:6,time:1000});
+                                //
+                                window.location.href=App.getUrl("subject/subInfo/projTz");
+                            }
+                        });
+                    })
+                } else {
+                    App.msg.warn("已做过开工申报,需要走变更流程");
+                }
+            },
+            search : function(){
+                this.pageNo = 1;
+                this.getData();
+            }
+        }
+    });
+</script>
+</body>
+</html>

+ 33 - 26
projects/src/main/webapp/vmodules/problem/info/endWarn.jsp

@@ -71,7 +71,7 @@
 <template id="template">
   <div class="layui-layout layui-layout-admin">
     <!-- 内容区域 -->
-		<span class="txt">项目竣工超期</span>
+		<span class="txt">在建转投产超期</span>
       <div class="right_title">
           <div class="layui-collapse">
               <div class="layui-colla-item">
@@ -83,6 +83,7 @@
                           <input type="hidden" name="mainId" value="${mainId }">
                           <input type="hidden" name="sourceId" value="${sourceId }">
                           <input type="hidden" name="hyfl" value="${hyfl }">
+                          <input type="hidden" name="code" value="${code}">
 
                           <input type="hidden" name="queryType" value="3">
 
@@ -95,6 +96,18 @@
                                       </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">
+                                          <select id="lightType" name="lightType">
+                                              <option value="">所有</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" style="height:28px;">--%>
 <%--                                      <label class="layui-form-label">项目类型</label>--%>
@@ -146,22 +159,22 @@
                           </div>
                       </div>
                   </label>
-<%--                  <label class="juli">--%>
-<%--                      红灯数量<span class="lanse-first">{{numData.redNum}}个</span>--%>
-<%--                      <div class="progress-div">--%>
-<%--                          <div class="layui-progress">--%>
-<%--                              <div class="layui-progress-bar" :style="'width:'+numData.redRate"></div>--%>
-<%--                          </div>--%>
-<%--                      </div>--%>
-<%--                  </label>--%>
-<%--                  <label class="juli">--%>
-<%--                      黄灯数量<span class="lanse-first">{{numData.yellowNum}}</span>--%>
-<%--                      <div class="progress-div">--%>
-<%--                          <div class="layui-progress">--%>
-<%--                              <div class="layui-progress-bar" :style="'width:'+numData.yellowRate"></div>--%>
-<%--                          </div>--%>
-<%--                      </div>--%>
-<%--                  </label>--%>
+                  <label class="juli">
+                      红灯数量<span class="lanse-first">{{numData.redNum}}个</span>
+                      <div class="progress-div">
+                          <div class="layui-progress">
+                              <div class="layui-progress-bar" :style="'width:'+numData.redRate"></div>
+                          </div>
+                      </div>
+                  </label>
+                  <label class="juli">
+                      黄灯数量<span class="lanse-first">{{numData.yellowNum}}</span>
+                      <div class="progress-div">
+                          <div class="layui-progress">
+                              <div class="layui-progress-bar" :style="'width:'+numData.yellowRate"></div>
+                          </div>
+                      </div>
+                  </label>
               </div>
           </div>
       </div>
@@ -411,7 +424,7 @@
       dataList : [],
       startDate:"",
       endDate:"",
-      LightType:"1",
+      LightType:"",
       tableName : 'test',
       pageNo : 1,
       kind: {},
@@ -557,13 +570,7 @@
         param.orderType = this.sort.type || null;
 
 
-        if (self.lightType=="1"){
-          param.openDate=true;
-        }else{
-          param.offsetMax=-10;
-        }
-
-          App.postJson("/api/problemInfo/pageQueryEndWarnDataRedYellow",param, function(res){
+          App.postJson("/api/problemInfo/pageQueryZjToTcDataRedYellow",param, function(res){
 
               console.log(res.data)
 
@@ -572,7 +579,7 @@
           });
 
 
-        App.postJson("/api/problemInfo/pageQueryEndWarnData",param, function(res){
+        App.postJson("/api/problemInfo/pageQueryZjToTcData",param, function(res){
           self.dataList = res.rows;
           self.loadPage(res.total);
           self.loadTable();

+ 30 - 26
projects/src/main/webapp/vmodules/problem/info/monthWarn.jsp

@@ -81,6 +81,7 @@
               <input type="hidden" name="mainId" value="${mainId }">
               <input type="hidden" name="sourceId" value="${sourceId }">
               <input type="hidden" name="hyfl" value="${hyfl }">
+              <input type="hidden" name="code" value="${code}">
               <input type="hidden" name="queryType" value="3">
 
               <div class="layui-row">
@@ -92,6 +93,18 @@
                     </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">
+                      <select id="lightType" name="lightType">
+                        <option value="">所有</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>
@@ -153,22 +166,22 @@
               </div>
             </div>
           </label>
-<%--          <label class="juli">--%>
-<%--            红灯数量<span class="lanse-first">{{numData.redNum}}个</span>--%>
-<%--            <div class="progress-div">--%>
-<%--              <div class="layui-progress">--%>
-<%--                <div class="layui-progress-bar" :style="'width:'+numData.redRate"></div>--%>
-<%--              </div>--%>
-<%--            </div>--%>
-<%--          </label>--%>
-<%--          <label class="juli">--%>
-<%--            黄灯数量<span class="lanse-first">{{numData.yellowNum}}</span>--%>
-<%--            <div class="progress-div">--%>
-<%--              <div class="layui-progress">--%>
-<%--                <div class="layui-progress-bar" :style="'width:'+numData.yellowRate"></div>--%>
-<%--              </div>--%>
-<%--            </div>--%>
-<%--          </label>--%>
+          <label class="juli">
+            红灯数量<span class="lanse-first">{{numData.redNum}}个</span>
+            <div class="progress-div">
+              <div class="layui-progress">
+                <div class="layui-progress-bar" :style="'width:'+numData.redRate"></div>
+              </div>
+            </div>
+          </label>
+          <label class="juli">
+            黄灯数量<span class="lanse-first">{{numData.yellowNum}}</span>
+            <div class="progress-div">
+              <div class="layui-progress">
+                <div class="layui-progress-bar" :style="'width:'+numData.yellowRate"></div>
+              </div>
+            </div>
+          </label>
         </div>
       </div>
     </div>
@@ -435,7 +448,7 @@
       dataList : [],
       startDate:"",
       endDate:"",
-      LightType:"1",
+      LightType:"",
       tableName : 'test',
       pageNo : 1,
       kind: {},
@@ -612,15 +625,6 @@
         param.orderBy = this.sort.field;
         param.orderType = this.sort.type || null;
 
-
-        if (self.lightType=="1"){
-          param.openDate=true;
-        }else{
-          param.offsetMax=-10;
-        }
-
-        // console.log(this.startMonth);
-
         if (this.startMonth!=""&&this.startMonth!=null){
           param.year=this.startMonth.split("-")[0];
           param.month=this.startMonth.split("-")[1];

+ 33 - 27
projects/src/main/webapp/vmodules/problem/info/openWarn.jsp

@@ -70,7 +70,7 @@
     <!-- 内容区域 -->
 
       <div class="right_title">
-      		<span class="txt">项目开工超期</span>
+      		<span class="txt">新建转在建超期</span>
           <div class="layui-collapse">
               <div class="layui-colla-item">
                   <%--                    <h2 class="layui-colla-title">筛选</h2>--%>
@@ -81,6 +81,7 @@
                           <input type="hidden" name="mainId" value="${mainId }">
                           <input type="hidden" name="sourceId" value="${sourceId }">
                           <input type="hidden" name="hyfl" value="${hyfl }">
+                          <input type="hidden" name="code" value="${code}">
 
                           <div class="layui-row">
                               <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
@@ -91,6 +92,18 @@
                                       </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">
+                                          <select id="lightType" name="lightType">
+                                              <option value="">所有</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" style="height:28px;">--%>
 <%--                                      <label class="layui-form-label">项目类型</label>--%>
@@ -142,22 +155,22 @@
                           </div>
                       </div>
                   </label>
-<%--                  <label class="juli">--%>
-<%--                      红灯数量<span class="lanse-first">{{numData.redNum}}个</span>--%>
-<%--                      <div class="progress-div">--%>
-<%--                          <div class="layui-progress">--%>
-<%--                              <div class="layui-progress-bar" :style="'width:'+numData.redRate"></div>--%>
-<%--                          </div>--%>
-<%--                      </div>--%>
-<%--                  </label>--%>
-<%--                  <label class="juli">--%>
-<%--                      黄灯数量<span class="lanse-first">{{numData.yellowNum}}</span>--%>
-<%--                      <div class="progress-div">--%>
-<%--                          <div class="layui-progress">--%>
-<%--                              <div class="layui-progress-bar" :style="'width:'+numData.yellowRate"></div>--%>
-<%--                          </div>--%>
-<%--                      </div>--%>
-<%--                  </label>--%>
+                  <label class="juli">
+                      红灯数量<span class="lanse-first">{{numData.redNum}}个</span>
+                      <div class="progress-div">
+                          <div class="layui-progress">
+                              <div class="layui-progress-bar" :style="'width:'+numData.redRate"></div>
+                          </div>
+                      </div>
+                  </label>
+                  <label class="juli">
+                      黄灯数量<span class="lanse-first">{{numData.yellowNum}}</span>
+                      <div class="progress-div">
+                          <div class="layui-progress">
+                              <div class="layui-progress-bar" :style="'width:'+numData.yellowRate"></div>
+                          </div>
+                      </div>
+                  </label>
               </div>
           </div>
       </div>
@@ -399,7 +412,7 @@
       dataList : [],
       startDate:"",
       endDate:"",
-      LightType:"1",
+      LightType:"",
       tableName : 'test',
       pageNo : 1,
       kind: {},
@@ -543,14 +556,7 @@
         param.orderType = this.sort.type || null;
 
 
-        if (self.lightType=="1"){
-          param.openDate=true;
-        }else{
-          param.offsetMax=-10;
-        }
-
-
-          App.postJson("/api/problemInfo/pageQueryOpenWarnDataRedYellow",param, function(res){
+          App.postJson("/api/problemInfo/pageQueryXjToZjDataRedYellow",param, function(res){
 
               console.log(res.data)
 
@@ -559,7 +565,7 @@
           });
 
 
-        App.postJson("/api/problemInfo/pageQueryOpenWarnData",param, function(res){
+        App.postJson("/api/problemInfo/pageQueryXjToZjData",param, function(res){
           self.dataList = res.rows;
           self.loadPage(res.total);
           self.loadTable();

+ 8 - 15
projects/src/main/webapp/vmodules/problem/info/pldWarn.jsp

@@ -70,7 +70,7 @@
         <!-- 内容区域 -->
 
         <div class="right_title">
-        	<span class="txt">投资偏离度超限</span>
+        	<span class="txt">投产转入规超期</span>
             <div class="layui-collapse">
                 <div class="layui-colla-item">
                     <%--                    <h2 class="layui-colla-title">筛选</h2>--%>
@@ -82,6 +82,7 @@
                             <input type="hidden" name="mainId" value="${mainId }">
                             <input type="hidden" name="zjly" value="${sourceId }">
                             <input type="hidden" name="indusKind" value="${hyfl }">
+                            <input type="hidden" name="code" value="${code}">
 
                             <div class="layui-row">
                                 <div class="layui-col-xs6 layui-col-sm6 layui-col-md3">
@@ -105,9 +106,9 @@
                                         <label class="layui-form-label">灯色</label>
                                         <div class="layui-input-block">
                                             <select id="lightType" name="lightType">
-                                                <option value="">请选择</option>
-                                                <option value="1">红灯</option>
-                                                <option value="2">黄灯</option>
+                                                <option value="">所有</option>
+                                                <option value="1">超期红灯</option>
+                                                <option value="2">超期黄灯</option>
                                             </select>
                                         </div>
                                     </div>
@@ -411,7 +412,7 @@
             dataList : [],
             startDate:"",
             endDate:"",
-            LightType:"1",
+            LightType:"",
             tableName : 'test',
             pageNo : 1,
             numData:{},
@@ -556,15 +557,7 @@
                 param.offsetMax=-10;
 
 
-                if (param.lightType=="1"){
-                    param.offsetMax=-30;
-                }else if (param.lightType=="2"){
-                    param.offsetMax=-10;
-                    param.offsetMin=-30;
-                }
-
-
-                App.postJson("/api/problemInfo/pageQueryPldWarnDataRedYellow",param, function(res){
+                App.postJson("/api/problemInfo/pageQueryTcToRgDataRedYellow",param, function(res){
 
                     console.log(res.data)
 
@@ -573,7 +566,7 @@
                 });
 
 
-                App.postJson("/api/problemInfo/pageQueryPldWarnData",param, function(res){
+                App.postJson("/api/problemInfo/pageQueryTcToRgData",param, function(res){
                     self.dataList = res.rows;
                     self.loadPage(res.total);
                     self.loadTable();

+ 34 - 32
projects/src/main/webapp/vmodules/problem/info/preInfo.jsp

@@ -31,17 +31,17 @@
         <div class="right_title">
             <div class="tab-group">
                 <button class="btn btn1" :class="{active: tabActive === 1}" @click="onChangeActive(1)">储备转新建超期
-                    <span class="button-card" @click="ct('','','','','1')">{{cbToXjNum}}</span></button>
+                    <span class="button-card" @click="ct('','','','','1','')">{{cbToXjNum}}</span></button>
                 <button class="btn btn1" :class="{active: tabActive === 2}" @click="onChangeActive(2)">前期手续办理超期
-                    <span class="button-card" @click="ct('','','','','2')">{{preNum}}</span></button>
+                    <span class="button-card" @click="ct('','','','','2','')">{{preNum}}</span></button>
                 <button class="btn btn1" :class="{active: tabActive === 3}" @click="onChangeActive(3)">新建转在建超期
-                    <span class="button-card" @click="ct('','','','','3')">{{xjToZjNum}}</span></button>
+                    <span class="button-card" @click="ct('','','','','3','')">{{xjToZjNum}}</span></button>
                 <button class="btn btn1" :class="{active: tabActive === 4}" @click="onChangeActive(4)">在建转投产超期
-                    <span class="button-card" @click="ct('','','','','4')">{{zjToTcNum}}</span></button>
+                    <span class="button-card" @click="ct('','','','','4','')">{{zjToTcNum}}</span></button>
                 <button class="btn btn1" :class="{active: tabActive === 5}" @click="onChangeActive(5)">投产转入规超期
-                    <span class="button-card" @click="ct('','','','','5')">{{tcToRgNum}}</span></button>
+                    <span class="button-card" @click="ct('','','','','5','')">{{tcToRgNum}}</span></button>
                 <button class="btn btn2" :class="{active: tabActive === 6}" @click="onChangeActive(6)">项目月报超期
-                    <span class="button-card" @click="ct('','','','','6')">{{monthlyNum}}</span></button>
+                    <span class="button-card" @click="ct('','','','','6','')">{{monthlyNum}}</span></button>
                 <%--                <button class="btn btn2" :class="{active: tabActive === 3}" @click="onChangeActive(3)">项目开工超期--%>
                 <%--                    <span class="button-card" @click="ct('','','','','3')">{{openWarnNum}}</span></button>--%>
                 <%--                <button class="btn btn2" :class="{active: tabActive === 5}" @click="onChangeActive(5)">投资偏离度超限--%>
@@ -104,7 +104,7 @@
                     <div class="tab-syatic center-syayic">
                         <div class="bar-number-row">
                             <div class="row-item" v-for="(itemFund,index) in quyuList" :key="index"
-                                 @dblclick="ct(itemFund.code,'','','','')">
+                                 @dblclick="ct(itemFund.code,'','','','','')">
                                 <div class="row-item-static">
                                     <span class="font-weight">{{itemFund.number}}</span>
                                     <span class="danwei">个</span>
@@ -150,7 +150,7 @@
             <%--                &lt;%&ndash;                    点击&ndash;%&gt;--%>
             <%--                &lt;%&ndash;                </div>&ndash;%&gt;--%>
             <%--            </div>--%>
-            <div class="pro-bar-item bar-item-4" :class="collsItem==4?'':'height-bar'">
+            <div v-if="tabActive != 2 && tabActive !=6" class="pro-bar-item bar-item-4" :class="collsItem==4?'':'height-bar'">
                 <div class="bar-tip">
                     按行业统计
                     <div class="sanjiao special-color"></div>
@@ -159,7 +159,7 @@
                     <div class="tab-syatic">
                         <div class="bar-number-row" v-for="(item,index) in hangyeList" :key="index">
                             <div class="row-item" v-for="(itemFund,indexFund) in item" :key="indexFund"
-                                 @dblclick="ct('','','',itemFund.code,'')">
+                                 @dblclick="ct('','','',itemFund.code,'','')">
                                 <div class="row-item-static">
                                     <span class="font-weight">{{itemFund.number}}</span>
                                     <span class="danwei">个</span>
@@ -189,7 +189,7 @@
                     <div class="tab-syatic">
                         <div class="bar-number-row" v-for="(item,index) in guimoList" :key="index">
                             <div class="row-item" v-for="(itemFund,indexFund) in item" :key="indexFund"
-                                 @dblclick="ct('','','','',itemFund.code)">
+                                 @dblclick="ct('','','','','',itemFund.code)">
                                 <div class="row-item-static">
                                     <span class="font-weight">{{itemFund.number}}</span>
                                     <span class="danwei">个</span>
@@ -639,55 +639,57 @@
             },
 
             // tab上的数字点击跳转
-            ct: function (subjectId, sourceId, mainId, hyfl, index) {
+            ct: function (subjectId, sourceId, mainId, hyfl, index,code) {
                 // window.event? window.event.cancelBubble = true : e.stopPropagation();
                 // console.log('ct被点击了');
                 var self = this;
                 var url = "/problem/info/preWarn";
                 console.log(index);
                 if (index !== undefined && index != "") {
-                    if (index == 1) {
-                        url = "/problem/info/preWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                     if (index == 1) {
+                        url = "/problem/info/cbToXjWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                     } else if (index == 2) {
-                        url = "/problem/info/monthWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                         url = "/problem/info/preWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                     } else if (index == 3) {
-                        url = "/problem/info/openWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                         url = "/problem/info/openWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                     } else if (index == 4) {
-                        url = "/problem/info/endWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                         url = "/problem/info/endWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                     } else if (index == 5) {
-                        url = "/problem/info/pldWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                         url = "/problem/info/pldWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                     } else if (index == 6) {
-                        url = "/problem/info/problemWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
-                    }
+                         url = "/problem/info/monthWarn?subjectId=&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
+
+                     }
                 } else {
                     if (mainId != null && mainId != undefined && mainId != '') {
                         if (self.tabActive == 1) {
-                            //url = "/problem/info/preWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
-                            url = "/problem/info/preWarn?subjectId=" + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/cbToXjWarn?subjectId="+ self.quyuListTab[self.chooseNum].number +"&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         } else if (self.tabActive == 2) {
-                            url = "/problem/info/monthWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/preWarn?subjectId="+ self.quyuListTab[self.chooseNum].number +"&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         } else if (self.tabActive == 3) {
-                            url = "/problem/info/openWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/openWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         } else if (self.tabActive == 4) {
-                            url = "/problem/info/endWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/endWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         } else if (self.tabActive == 5) {
-                            url = "/problem/info/pldWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/pldWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         } else if (self.tabActive == 6) {
-                            url = "/problem/info/problemWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            //url = "/problem/info/problemWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/monthWarn?subjectId=" + self.quyuListTab[self.chooseNum].number + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         }
                     } else {
                         if (self.tabActive == 1) {
-                            url = "/problem/info/preWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/cbToXjWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         } else if (self.tabActive == 2) {
-                            url = "/problem/info/monthWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/preWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         } else if (self.tabActive == 3) {
-                            url = "/problem/info/openWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/openWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         } else if (self.tabActive == 4) {
-                            url = "/problem/info/endWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/endWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         } else if (self.tabActive == 5) {
-                            url = "/problem/info/pldWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/pldWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         } else if (self.tabActive == 6) {
-                            url = "/problem/info/problemWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            //url = "/problem/info/problemWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&lastUrl=" + window.location.href;
+                            url = "/problem/info/monthWarn?subjectId=" + (subjectId || "") + "&sourceId=" + sourceId + "&mainId=" + mainId + "&hyfl=" + hyfl + "&code=" + code +"&lastUrl=" + window.location.href;
                         }
                     }
                 }

+ 1 - 0
projects/src/main/webapp/vmodules/problem/info/preWarn.jsp

@@ -90,6 +90,7 @@
                                             <input type="hidden" name="mainId" value="${mainId }">
                                             <input type="hidden" name="sourceId" value="${sourceId }">
                                             <input type="hidden" name="hyfl" value="${hyfl }">
+                                            <input type="hidden" name="code" value="${code}">
                                         </div>
                                     </div>
                                 </div>