Bläddra i källkod

问题统计分析

JiangPengLi 3 månader sedan
förälder
incheckning
2862d4295e
18 ändrade filer med 875 tillägg och 615 borttagningar
  1. 10 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.java
  2. 83 6
      projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/SubInfoMapper.xml
  3. 14 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubInfoService.java
  4. 22 11
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoQueryServiceImpl.java
  5. 170 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java
  6. 1 15
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubPreNewServiceImpl.java
  7. 1 1
      projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubRptContServiceImpl.java
  8. 4 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/StatisticsVO.java
  9. 9 0
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/WorkBenchVO.java
  10. 5 5
      projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/export/SubInfoTcVO.java
  11. 23 22
      projects/src/main/java/com/rtrh/projects/web/controller/problemreport/api/ProblemInfoApiController.java
  12. 99 3
      projects/src/main/java/com/rtrh/projects/web/controller/problemreport/api/ProblemPreInfoApiController.java
  13. 3 2
      projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoExportController.java
  14. 5 5
      projects/src/main/webapp/vmodules/leftMenu.jsp
  15. 408 536
      projects/src/main/webapp/vmodules/problem/info/preInfo.jsp
  16. 8 3
      projects/src/main/webapp/vmodules/subject/subInfo/tz/cb.jsp
  17. 9 4
      projects/src/main/webapp/vmodules/subject/subInfo/tz/cb_sum.jsp
  18. 1 1
      projects/src/main/webapp/vmodules/subject/subInfo/tz/xmzk.jsp

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

@@ -89,5 +89,15 @@ public interface SubInfoMapper {
 
     Long queryExceedOutside();
 
+    List<WorkBenchVO> queryExceedCbToXj();
+
     List<WorkBenchVO> queryWarningStatistics();
+
+    List<WorkBenchVO> queryExceedXjToZj();
+
+    List<WorkBenchVO> queryExceedZjTotc();
+
+    List<WorkBenchVO> queryExceedTcToRg();
+
+    List<WorkBenchVO> preProcedureExceed();
 }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -323,15 +323,15 @@
                         {
                             txt: '问题统计分析',
                             code: '602',
-                            //icon: 'icon_question_gz',
-                            // url: 'problem/info/index'
-                            url: 'register/underConstruction'
+                            icon: 'icon_question_gz',
+                            url: 'problem/info/index'
+                            // url: 'register/underConstruction'
                         },
                         {
                             txt: '问题推送处理',
                             code: '603',
-                            // url: "problemtrack/index"
-                            url: 'register/underConstruction'
+                            url: "problemtrack/index"
+                            // url: 'register/underConstruction'
 
                         }
                     ]

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 408 - 536
projects/src/main/webapp/vmodules/problem/info/preInfo.jsp


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

@@ -222,9 +222,14 @@
                         <span class="info-icon" title="C类项目:意向类项目,还处于谋划论证阶段项目">?</span>
                         <span class="lanse-first">{{beginRate.cnum}}</span>
                     </label>
-                    <label class="juli" onclick="levelList('abcs','D类','UNKNOWN_CATEGORY')">
-                        未知分类
-                        <span class="info-icon" title="ABC类未设置">?</span>
+                    <label class="juli" onclick="levelList('abcs','D类','D')">
+                        D类项目数
+                        <span class="info-icon" title="D类项目">?</span>
+                        <span class="lanse-first">{{beginRate.dnum}}</span>
+                    </label>
+                    <label class="juli" onclick="levelList('abcs','其它类','UNKNOWN_CATEGORY')">
+                        其它项目数
+                        <span class="info-icon" title="其它类项目">?</span>
                         <span class="lanse-first">{{beginRate.nnum}}</span>
                     </label>
                 </div>

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

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

+ 1 - 1
projects/src/main/webapp/vmodules/subject/subInfo/tz/xmzk.jsp

@@ -103,7 +103,7 @@
                 项目总库
             </div>
             <div class="layui-btn-container" style="margin-top: 20px;margin-left: 20px">
-<%--                <button type="button" class="layui-btn" @click="exportDetailExcel">导出明细</button>--%>
+                <button type="button" class="layui-btn" @click="exportDetailExcel">导出明细</button>
                 <button type="button" class="layui-btn" @click="exportTotalExcel">导出</button>
                 <button type="button" class="layui-btn" @click="exportMoreExcel">自定义导出</button>
             </div>

Vissa filer visades inte eftersom för många filer har ändrats