Bladeren bron

项目总库分析报告

JiangPengLi 2 maanden geleden
bovenliggende
commit
6522621bce

+ 2 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/LogOperateMapper.java

@@ -2,6 +2,7 @@ package com.rtrh.projects.modules.projects.mapper;
 
 import com.rtrh.core.repository.mybatis.MyBatisRepository;
 import com.rtrh.projects.modules.projects.po.LogOperate;
+import com.rtrh.projects.modules.projects.vo.LogOperateVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -19,5 +20,5 @@ public interface LogOperateMapper {
 
     void save(@Param("log") LogOperate logOperate);
 
-    List<LogOperate> queryByYear(@Param("year") int year);
+    List<LogOperateVO> queryByYear(@Param("year") int year);
 }

+ 4 - 2
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/LogOperateMapper.xml

@@ -20,7 +20,7 @@
                     #{log.title}
                     )
     </insert>
-    <select id="queryByYear" resultType="com.rtrh.projects.modules.projects.po.LogOperate">
+    <select id="queryByYear" resultType="com.rtrh.projects.modules.projects.vo.LogOperateVO">
         SELECT
             log.id AS id,
             log.userid AS userid,
@@ -38,8 +38,10 @@
             log.create_user_name AS createUserName,
             log.create_time AS createTime,
             log.logic_delete_flag AS logicDeleteFlag
+            s.indus_kind AS indusKind,
+            s.subject_id AS subjectId
         FROM
-            t_log_operate log
+            t_log_operate log left join sub_info s on log.sub_id=s.id
     </select>
 
 </mapper>

+ 2 - 1
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/ILogOperateService.java

@@ -1,6 +1,7 @@
 package com.rtrh.projects.modules.projects.service;
 
 import com.rtrh.projects.modules.projects.po.LogOperate;
+import com.rtrh.projects.modules.projects.vo.LogOperateVO;
 
 import java.util.List;
 
@@ -16,5 +17,5 @@ public interface ILogOperateService {
 
     void save(LogOperate logOperate);
 
-    List<LogOperate> queryByYear(int year);
+    List<LogOperateVO> queryByYear(int year);
 }

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

@@ -3,6 +3,7 @@ package com.rtrh.projects.modules.projects.service.impl;
 import com.rtrh.projects.modules.projects.mapper.LogOperateMapper;
 import com.rtrh.projects.modules.projects.po.LogOperate;
 import com.rtrh.projects.modules.projects.service.ILogOperateService;
+import com.rtrh.projects.modules.projects.vo.LogOperateVO;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -27,7 +28,7 @@ public class LogOperateServiceImpl implements ILogOperateService {
     }
 
     @Override
-    public List<LogOperate> queryByYear(int year) {
+    public List<LogOperateVO> queryByYear(int year) {
         return logOperateMapper.queryByYear(year);
     }
 }

+ 23 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/vo/LogOperateVO.java

@@ -0,0 +1,23 @@
+package com.rtrh.projects.modules.projects.vo;
+
+import com.rtrh.projects.modules.projects.po.LogOperate;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 操作日志表
+ * </p>
+ *
+ * @author jiangpengli
+ * @since 2025-01-06
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class LogOperateVO extends LogOperate {
+    private String subjectId;
+    private String indusKind;
+}

+ 41 - 33
projects/src/main/java/com/rtrh/projects/web/controller/subject/SubInfoExportController.java

@@ -34,6 +34,7 @@ import com.rtrh.projects.modules.projects.po.LogOperate;
 import com.rtrh.projects.modules.projects.po.SubIndu;
 import com.rtrh.projects.modules.projects.po.SubInfoGxj;
 import com.rtrh.projects.modules.projects.service.ILogOperateService;
+import com.rtrh.projects.modules.projects.vo.LogOperateVO;
 import com.rtrh.projects.modules.projects.vo.StatusChangeCountersVO;
 import com.rtrh.projects.modules.projects.vo.SubInfoTotalExcel;
 import com.rtrh.projects.modules.projects.vo.export.*;
@@ -1009,7 +1010,7 @@ public class SubInfoExportController extends BaseController {
             statusGroupList.forEach((key, value) -> {
                 SubInfoStatusEnum anEnum = SubInfoStatusEnum.getEnum(key);
                 String statusRate = new BigDecimal(value.size()).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, RoundingMode.HALF_UP) + "%";
-                BigDecimal totalAmt = value.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal totalAmt = value.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(10000), 2, RoundingMode.HALF_UP);
                 String format = String.format("%s项目%s个,占工业项目总数的%s,计划总投资%s亿元;", anEnum.getDesc(), value.size(), statusRate, totalAmt);
                 statusStrBuilder.append(format);
             });
@@ -1021,7 +1022,7 @@ public class SubInfoExportController extends BaseController {
             Map<String, List<SubInfoTotalExcel>> subjectGroupList = list.stream().collect(Collectors.groupingBy(SubInfoTotalExcel::getSubjectId));
             subjectGroupList.forEach((key, value) -> {
                 String rate = new BigDecimal(value.size()).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, RoundingMode.HALF_UP) + "%";
-                BigDecimal totalAmt = value.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal totalAmt = value.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(10000), 2, RoundingMode.HALF_UP);
                 String format = String.format("%s%s个,占工业项目总数的%s,计划总投资%s亿元;", jsddMap.get(key), value.size(), rate, totalAmt);
                 subjectStrBuilder.append(format);
             });
@@ -1044,7 +1045,7 @@ public class SubInfoExportController extends BaseController {
             }));
             scaleGroupList.forEach((key, value) -> {
                 String rate = new BigDecimal(value.size()).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, RoundingMode.HALF_UP) + "%";
-                BigDecimal totalAmt = value.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal totalAmt = value.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(10000), 2, RoundingMode.HALF_UP);
                 String format = String.format("计划总投资%s项目%s个,占工业项目总数的%s,计划总投资%s亿元;", key, value.size(), rate, totalAmt);
                 scaleStrBuilder.append(format);
             });
@@ -1064,7 +1065,7 @@ public class SubInfoExportController extends BaseController {
                     }));
             hyGroupList.forEach((key, value) -> {
                 String rate = new BigDecimal(value.size()).multiply(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, RoundingMode.HALF_UP) + "%";
-                BigDecimal totalAmt = value.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal totalAmt = value.stream().map(SubInfoTotalExcel::getAmtTotal).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(10000), 2, RoundingMode.HALF_UP);
                 String format = String.format("%s项目%s个,占工业项目总数的%s,计划总投资%s亿元;", hyflMap.getOrDefault(key, key), value.size(), rate, totalAmt);
                 hyStrBuilder.append(format);
             });
@@ -1072,7 +1073,7 @@ public class SubInfoExportController extends BaseController {
             data.put("hyStr", hyStr);
 
             // 一、项目转化情况
-            List<LogOperate> logList = logOperateService.queryByYear(year);
+            List<LogOperateVO> logList = logOperateService.queryByYear(year);
             StatusChangeCountersVO totalCounterVo = new StatusChangeCountersVO();
             addNum(logList, totalCounterVo);
             data.put("cbToXjNum", totalCounterVo.cbToXjNum);
@@ -1082,7 +1083,7 @@ public class SubInfoExportController extends BaseController {
             data.put("xjToCbNum", totalCounterVo.xjToCbNum);
             data.put("rgToZjNum", totalCounterVo.rgToZjNum);
 
-            List<LogOperate> lastLogList = logList.stream().filter(logOperate -> DateUtil.month(logOperate.getCreateTime()) < DateUtil.month(new Date())).collect(Collectors.toList());
+            List<LogOperateVO> lastLogList = logList.stream().filter(logOperate -> DateUtil.month(logOperate.getCreateTime()) < DateUtil.month(new Date())).collect(Collectors.toList());
             StatusChangeCountersVO lastCounterVo = new StatusChangeCountersVO();
             addNum(lastLogList, lastCounterVo);
             data.put("lastCbToXjNum", lastCounterVo.cbToXjNum);
@@ -1093,53 +1094,60 @@ public class SubInfoExportController extends BaseController {
             data.put("lastRgToZjNum", lastCounterVo.rgToZjNum);
 
             // 分属地看
+            Map<String, List<LogOperateVO>> subjectZhGroups = logList.stream().collect(Collectors.groupingBy(LogOperateVO::getSubjectId));
             String text = "%s年1-%s月,%s储备项目转新建%s个、新建项目转在建%s个、在建项目转投产%s个、投产项目转入规%s个,新建项目降级为储备%s个、入规项目转为在建%s个。" +
                     "其中,%s月当月,储备项目转新建%s个、新建项目转在建%s个、在建项目转投产%s个、投产项目转入规%s个,新建项目降级为储备%s个、入规项目转为在建%s个。" +
                     "1-%s月,项目开工率%s、投产率%s、入规率%s,较1-(%s)月,分别增长%s、%s、%s个百分点。";
-            String subjectZhStr = String.format(text,
-                    year, month, "subjectName", totalCounterVo.cbToXjNum, totalCounterVo.xjToZjNum, totalCounterVo.zjToTcNum, totalCounterVo.tcToRgNum, totalCounterVo.xjToCbNum, totalCounterVo.rgToZjNum,
-                    month, totalCounterVo.cbToXjNum, totalCounterVo.xjToZjNum, totalCounterVo.zjToTcNum, totalCounterVo.tcToRgNum, totalCounterVo.xjToCbNum, totalCounterVo.rgToZjNum,
-                    month, "kgl", "tcl", "rgl", lastMonth, "1", "2", "3"
-            );
+            StringBuilder subjectZhStr = new StringBuilder();
+            subjectZhGroups.forEach((key, value) -> {
+                StatusChangeCountersVO tempVo = new StatusChangeCountersVO();
+                subjectZhStr.append(String.format(text,
+                        year, month, jsddMap.get(key), tempVo.cbToXjNum, tempVo.xjToZjNum, tempVo.zjToTcNum, tempVo.tcToRgNum, tempVo.xjToCbNum, tempVo.rgToZjNum,
+                        month, totalCounterVo.cbToXjNum, tempVo.xjToZjNum, tempVo.zjToTcNum, tempVo.tcToRgNum, tempVo.xjToCbNum, tempVo.rgToZjNum,
+                        month, "0%", "0%", "0%", lastMonth, "0", "0", "0"));
+            });
+
             data.put("subjectZhStr", subjectZhStr);
             // 分规模看
+            Map<String, List<LogOperateVO>> scaleZhGroups = logList.stream().collect(Collectors.groupingBy(LogOperateVO::getSubjectId));
             String scaleZhStr = String.format(text,
                     year, month, "计划总投资100亿元以上", totalCounterVo.cbToXjNum, totalCounterVo.xjToZjNum, totalCounterVo.zjToTcNum, totalCounterVo.tcToRgNum, totalCounterVo.xjToCbNum, totalCounterVo.rgToZjNum,
                     month, totalCounterVo.cbToXjNum, totalCounterVo.xjToZjNum, totalCounterVo.zjToTcNum, totalCounterVo.tcToRgNum, totalCounterVo.xjToCbNum, totalCounterVo.rgToZjNum,
-                    month, "kgl", "tcl", "rgl", lastMonth, "1", "2", "3"
+                    month, "0%", "0%", "0%", lastMonth, "0", "0", "0"
             );
             data.put("scaleZhStr", scaleZhStr);
             // 分行业看
+            Map<String, List<LogOperateVO>> hyZhGroups = logList.stream().collect(Collectors.groupingBy(LogOperateVO::getSubjectId));
             String hyZhStr = String.format(text,
                     year, month, "制造业", totalCounterVo.cbToXjNum, totalCounterVo.xjToZjNum, totalCounterVo.zjToTcNum, totalCounterVo.tcToRgNum, totalCounterVo.xjToCbNum, totalCounterVo.rgToZjNum,
                     month, totalCounterVo.cbToXjNum, totalCounterVo.xjToZjNum, totalCounterVo.zjToTcNum, totalCounterVo.tcToRgNum, totalCounterVo.xjToCbNum, totalCounterVo.rgToZjNum,
-                    month, "kgl", "tcl", "rgl", lastMonth, "1", "2", "3"
+                    month, "0%", "0%", "0%", lastMonth, "0", "0", "0"
             );
             data.put("hyZhStr", hyZhStr);
             // 二、存在问题
             // (一)项目落地方面
-            data.put("xmldSubNameStr", "a项目b项目c项目");
-            data.put("xmldNum", 3);
-            data.put("xmldMonthNum", 3);
+            data.put("xmldSubNameStr", "、、");
+            data.put("xmldNum", 0);
+            data.put("xmldMonthNum", 0);
             // (二)前期手续方面
-            data.put("qqsxNum", 3);
-            data.put("qqsxHpNames", "a项目b项目c项目");
-            data.put("qqsxHpNum", 3);
-            data.put("qqsxNpNames", "a项目b项目c项目");
-            data.put("qqsxNpNum", 3);
-            data.put("qqsxYdNames", "a项目b项目c项目");
-            data.put("qqsxYdNum", 3);
+            data.put("qqsxNum", 0);
+            data.put("qqsxHpNames", "、、");
+            data.put("qqsxHpNum", 0);
+            data.put("qqsxNpNames", "、、");
+            data.put("qqsxNpNum", 0);
+            data.put("qqsxYdNames", "、、");
+            data.put("qqsxYdNum", 0);
             // (三)工程建设方面
-            data.put("gcjsNum", 3);
-            data.put("gcjsZjzhNames", "a项目b项目c项目");
-            data.put("gcjsZjzhNum", 3);
-            data.put("gcjsAqsgNames", "a项目b项目c项目");
+            data.put("gcjsNum", 0);
+            data.put("gcjsZjzhNames", "、、");
+            data.put("gcjsZjzhNum", 0);
+            data.put("gcjsAqsgNames", "、、");
             // (四)升规入统方面
-            data.put("sgrtNum", 3);
-            data.put("sgrtCqNames", "a项目b项目c项目");
-            data.put("sgrtCqNum", 3);
-            data.put("sgrtZlzhNames", "a项目b项目c项目");
-            data.put("sgrtZlzhNum", 3);
+            data.put("sgrtNum", 0);
+            data.put("sgrtCqNames", "、、");
+            data.put("sgrtCqNum", 0);
+            data.put("sgrtZlzhNames", "、、");
+            data.put("sgrtZlzhNum", 0);
 
             // Map<String, List<LogOperate>> collect = logList.stream().collect(Collectors.groupingBy(LogOperate::getTitle));
             // String currentYearZhStr = buildZhData(collect);
@@ -1158,7 +1166,7 @@ public class SubInfoExportController extends BaseController {
         word.write(response.getOutputStream());
     }
 
-    private void addNum(List<LogOperate> lastLogList, StatusChangeCountersVO vo) {
+    private void addNum(List<LogOperateVO> lastLogList, StatusChangeCountersVO vo) {
         for (LogOperate logOperate : lastLogList) {
             if (SubInfoStatusEnum.CB.getCode().equals(logOperate.getStatusFirst()) && SubInfoStatusEnum.XJ.getCode().equals(logOperate.getStatusAfter())) {
                 ++vo.cbToXjNum;

BIN
projects/src/main/resources/template/analysis.docx