Browse Source

不同维度取消一次性返回

buzhanyi 2 years ago
parent
commit
eeae3de4a7

+ 4 - 5
purchase-admin/src/main/java/com/ozs/web/controller/statisticalAnalysis/StatisticalAnalysisController.java

@@ -55,9 +55,9 @@ public class StatisticalAnalysisController extends BaseController {
 
     @ApiOperation(value = "滞后项目数量分析")
     @GetMapping("/exceedAnalysis")
-    public AjaxResult exceedAnalysis() {
+    public AjaxResult exceedAnalysis(String qType) {
         //统计不同时间维度的逾期项目
-        return pmDemandService.exceedAnalysis();
+        return pmDemandService.exceedAnalysis(qType);
     }
 
     @ApiOperation(value = "滞后项目时长分析")
@@ -88,10 +88,9 @@ public class StatisticalAnalysisController extends BaseController {
 
     @ApiOperation(value = "任务数量趋势分析")
     @GetMapping("/taskQuantityAnalysis")
-    public AjaxResult taskQuantityAnalysis() {
+    public AjaxResult taskQuantityAnalysis(String qType) {
         //任务数量趋势分析:按照月、季度、年统计“项目属性”字段中“重大规划”属性的项目
-        //统计数据包括:上年度已完成任务数、本年度已完成任务数、新受领任务数(指未完成的数量)
-        return pmDemandService.taskQuantityAnalysis();
+        return pmDemandService.taskQuantityAnalysis(qType);
     }
 
     @ApiOperation(value = "新完成采购任务数量")

+ 28 - 1
purchase-system/src/main/java/com/ozs/pm/mapper/PmDemandMapper.java

@@ -144,7 +144,7 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
      *
      * @return
      */
-    StatisticalChartsResVo countProjectExceedAndMajor();
+    StatisticalChartsResVo countMajorProjectExceed();
 
     /**
      * 查询本年度的**状态的重大规划项目
@@ -156,6 +156,11 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
      */
     List<StatisticalChartsResVo> taskQuantityLastYear(String code);
 
+    /**
+     * 查询上年度的重大规划项目总数和总金额
+     */
+    StatisticalChartsResVo countMajorProjectLastYear();
+
     /**
      * @return
      */
@@ -163,8 +168,30 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
 
     /**
      * 通过计划ID查询项目
+     *
      * @param planId
      * @return
      */
     PmDemand selectByPlanId(@Param("planId") Integer planId);
+
+    /**
+     * 统计不同时间维度的重大项目(年)
+     *
+     * @return
+     */
+    List<StatisticalChartsResVo> countProjectMajorByYear();
+
+    /**
+     * 统计不同时间维度的重大项目(月)
+     *
+     * @return
+     */
+    List<StatisticalChartsResVo> countProjectMajorByMonth();
+
+    /**
+     * 统计不同时间维度的重大项目(季度)
+     *
+     * @return
+     */
+    StatisticalChartsResVo countProjectMajorByQuarter(@Param("quarter") Integer quarter, @Param("year") Integer year);
 }

+ 2 - 2
purchase-system/src/main/java/com/ozs/pm/service/IPmDemandService.java

@@ -252,7 +252,7 @@ public interface IPmDemandService extends IService<PmDemand> {
      *
      * @return
      */
-    AjaxResult exceedAnalysis();
+    AjaxResult exceedAnalysis(String qType);
 
     /**
      * 滞后项目时长分析
@@ -273,7 +273,7 @@ public interface IPmDemandService extends IService<PmDemand> {
      *
      * @return
      */
-    AjaxResult taskQuantityAnalysis();
+    AjaxResult taskQuantityAnalysis(String qType);
 
     /**
      * 新完成采购任务数量

+ 52 - 28
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java

@@ -1441,42 +1441,62 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
      * @return
      */
     @Override
-    public AjaxResult exceedAnalysis() {
+    public AjaxResult exceedAnalysis(String qType) {
         HashMap<String, List<StatisticalChartsResVo>> resMap = new HashMap<>();
         List<StatisticalChartsResVo> byYear = pmDemandMapper.countProjectExceedYear();
-        List<StatisticalChartsResVo> byMonth = pmDemandMapper.countProjectExceedMonth();
-        List<StatisticalChartsResVo> byQuarter = new LinkedList<>();
-        for (StatisticalChartsResVo chartsResVo : byYear) {
-            for (int i = 1; i <= 4; i++) {
-                StatisticalChartsResVo quarter = pmDemandMapper.countProjectExceedQuarter(i, Integer.parseInt(chartsResVo.getColumnName()));
-                if (Integer.parseInt(quarter.getNum()) > 0) {
-                    quarter.setColumnName(chartsResVo.getColumnName() + "年第" + i + "季度");
-                    byQuarter.add(quarter);
+        if (qType.equals("1")) {
+            resMap.put("年", byYear);
+        } else if (qType.equals("2")) {
+            List<StatisticalChartsResVo> byQuarter = new LinkedList<>();
+            for (StatisticalChartsResVo chartsResVo : byYear) {
+                for (int i = 1; i <= 4; i++) {
+                    StatisticalChartsResVo quarter = pmDemandMapper.countProjectExceedQuarter(i, Integer.parseInt(chartsResVo.getColumnName()));
+                    if (Integer.parseInt(quarter.getNum()) > 0) {
+                        quarter.setColumnName(chartsResVo.getColumnName() + "年第" + i + "季度");
+                        byQuarter.add(quarter);
+                    }
                 }
             }
+            resMap.put("季度", byQuarter);
+        } else if (qType.equals("3")) {
+            List<StatisticalChartsResVo> byMonth = pmDemandMapper.countProjectExceedMonth();
+            resMap.put("月", byMonth);
         }
-
-        resMap.put("年", byYear);
-        resMap.put("月", byMonth);
-        resMap.put("季度", byQuarter);
         return AjaxResult.success(resMap);
     }
 
     @Override
-    public AjaxResult taskQuantityAnalysis() {
-        //任务数量趋势分析:按照月、季度、年统计“项目属性”字段中“重大规划”属性的项目
-        //统计数据包括:上年度已完成任务数、本年度已完成任务数、新受领任务数(指未完成的数量)
+    public AjaxResult taskQuantityAnalysis(String qType) {
         HashMap<String, List<StatisticalChartsResVo>> resMap = new HashMap<>();
-        List<StatisticalChartsResVo> thisYearFinish = pmDemandMapper.taskQuantityYear(PmProjectStatus.COMPLETION_CONSTRUCTION.getCode());
-        List<StatisticalChartsResVo> lastYearFinish = pmDemandMapper.taskQuantityLastYear(PmProjectStatus.COMPLETION_CONSTRUCTION.getCode());
-
-        return null;
+        //任务数量趋势分析:按照月、季度、年统计“项目属性”字段中“重大规划”属性的项目
+        List<StatisticalChartsResVo> byYear = pmDemandMapper.countProjectMajorByYear();
+        if (qType.equals("1")) {
+            resMap.put("年", byYear);
+        } else if (qType.equals("2")) {
+            List<StatisticalChartsResVo> byQuarter = new LinkedList<>();
+            for (StatisticalChartsResVo chartsResVo : byYear) {
+                for (int i = 1; i <= 4; i++) {
+                    StatisticalChartsResVo quarter = pmDemandMapper.countProjectMajorByQuarter(i, Integer.parseInt(chartsResVo.getColumnName()));
+                    if (Integer.parseInt(quarter.getNum()) > 0) {
+                        quarter.setColumnName(chartsResVo.getColumnName() + "年第" + i + "季度");
+                        byQuarter.add(quarter);
+                    }
+                }
+            }
+            resMap.put("季度", byQuarter);
+        } else if (qType.equals("3")) {
+            List<StatisticalChartsResVo> byMonth = pmDemandMapper.countProjectMajorByMonth();
+            resMap.put("月", byMonth);
+        }
+        return AjaxResult.success(resMap);
     }
 
     @Override
     public AjaxResult newFinishPro() {
         // 新完成采购任务数量:本年度状态为“合同待填制”、“项目建设中”、“项目建设完成”的项目
         //        预算金额:“合同待填制”、“项目建设中”、“项目建设完成”的项目累加的预算金额
+
+
         //合同金额:“合同待填制”、“项目建设中”、“项目建设完成”的项目累加的合同金额
 
         return null;
@@ -1503,19 +1523,15 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                     case "14":
                         vo.setColumnName(PmProjectStatus.BIDDING_PUBLICITY.getInfo());
                 }
-                //展示信息包括:鼠标上到图表时,展示项目数量和平均消耗时长(平均消耗时长,指所有项目在该阶段完成的平均时间)
-                //Integer days= pmDemandMapper.getTimeByStatus(PmProjectStatus.WAIT_SELECT_AGENT.getCode());
-
             }
         }
-
         //    WAIT_SELECT_AGENT("9", "待选取代理"),
         //    WAIT_UPLOAD_BID_FILE("10", "待上传招标文件"),
         //    WAIT_ANNOUNCEMENT("11", "待发布公告"),
         //    WAIT_OPEN_BID("12", "待开标"),
         //    WAIT_BID_ANNOUNCEMENT("13", "待发布中标公告"),
         //    BIDDING_PUBLICITY("14", "中标公示中"),
-        return null;
+        return AjaxResult.success(everyStatusNum);
     }
 
     @Override
@@ -1568,22 +1584,30 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         //预算金额:指本年度状态为“项目建设完成”的项目属性为“重大规划”的项目累加的预算金额
         StatisticalChartsResVo resVo = new StatisticalChartsResVo();
         resVo = pmDemandMapper.majorProjectByStatus(PmProjectStatus.COMPLETION_CONSTRUCTION.getCode());
-        resVo.setColumnName("项目建设完成");
+        resVo.setColumnName("今年已完成数量");
         resVos.add(resVo);
+
         //正常推进项目:指本年度正在进行中的项目属性为“重大规划”的项目数
         //预算金额:指本年度正在进行中的项目属性为“重大规划”的项目累加的预算金额
         StatisticalChartsResVo resVo1 = new StatisticalChartsResVo();
         resVo1 = pmDemandMapper.majorProjectByStatus(PmProjectStatus.UNDER_CONSTRUCTION.getCode());
-        resVo1.setColumnName("正常推进项目");
+        resVo1.setColumnName("正常推进数量");
         resVos.add(resVo1);
 
         //执行滞后数量:指本年度逾期项目中,项目属性为“重大规划”的项目数
         //预算金额:指本年度正在进行中的项目属性为“重大规划”的项目累加的预算金额
         StatisticalChartsResVo resVo2 = new StatisticalChartsResVo();
-        resVo2 = pmDemandMapper.countProjectExceedAndMajor();
+        resVo2 = pmDemandMapper.countMajorProjectExceed();
         resVo2.setColumnName("执行滞后数量");
         resVos.add(resVo2);
 
+        //上年度重大规划采购任务数量:指上年度项目中,项目属性为“重大规划”的项目数
+        //预算金额:指上年度项目中,项目属性为“重大规划”的项目累加的预算金额
+        StatisticalChartsResVo resVo3 = new StatisticalChartsResVo();
+        resVo3 = pmDemandMapper.countMajorProjectLastYear();
+        resVo3.setColumnName("上年度重大规划采购任务数量");
+        resVos.add(resVo3);
+
         //resVo2=pmDemandMapper.majorProjectByStatus(PmProjectStatus.COMPLETION_CONSTRUCTION.getCode());
         return AjaxResult.success(resVos);
     }

+ 33 - 2
purchase-system/src/main/resources/mapper/pm/PmDemandMapper.xml

@@ -140,7 +140,7 @@
           AND DATE_FORMAT(create_time, '%Y') = year(now())
     </select>
 
-    <select id="countProjectExceedAndMajor" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+    <select id="countMajorProjectExceed" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
         SELECT COUNT(demand_id) num, SUM(evaluation) evaluationTotal
         FROM `pm_demand`
         WHERE (real_demand_commit_time > plan_demand_sub_time
@@ -178,6 +178,37 @@
     <select id="selectByPlanId" parameterType="java.lang.Integer" resultType="com.ozs.pm.doman.PmDemand">
         select *
         from pm_demand
-        where plan_id = #{planId} limit 1
+        where plan_id = #{planId}
+        limit 1
+    </select>
+
+    <select id="countMajorProjectLastYear" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+        SELECT YEAR(NOW()) - 1 columnName, COUNT(demand_id) num, SUM(evaluation) evaluationTotal
+        FROM `pm_demand`
+        WHERE find_in_set('1', project_attr)
+          and DATE_FORMAT(create_time, '%Y') = YEAR(NOW()) - 1
+    </select>
+
+    <select id="countProjectMajorByYear" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+        SELECT DATE_FORMAT(create_time, '%Y') columnName, COUNT(demand_id) num
+        FROM `pm_demand`
+        WHERE find_in_set('1', project_attr)
+        GROUP BY DATE_FORMAT(create_time, '%Y')
+        order by create_time asc
+    </select>
+
+    <select id="countProjectMajorByMonth" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+        SELECT DATE_FORMAT(create_time, '%Y-%m') columnName, COUNT(demand_id) num
+        FROM `pm_demand`
+        WHERE find_in_set('1', project_attr)
+        GROUP BY DATE_FORMAT(create_time, '%Y-%m')
+    </select>
+
+    <select id="countProjectMajorByQuarter" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+        SELECT create_time columnName, COUNT(demand_id) num
+        FROM `pm_demand`
+        WHERE find_in_set('1', project_attr)
+          and QUARTER(create_time) = #{quarter}
+          AND DATE_FORMAT(create_time, '%Y') = #{year}
     </select>
 </mapper>