Bladeren bron

补充字段

buzhanyi 2 jaren geleden
bovenliggende
commit
ad7d31b82a

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

@@ -6,11 +6,13 @@ import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.utils.StringUtils;
 import com.ozs.plan.service.PlanYearsService;
 import com.ozs.pm.doman.vo.requestVo.PmDemandReqVo;
+import com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo;
 import com.ozs.pm.service.IPmDemandService;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -24,11 +26,46 @@ public class StatisticalAnalysisController extends BaseController {
     @Resource
     private IPmDemandService pmDemandService;
 
-    @ApiOperation(value = "执行滞后采购项目")
-    @GetMapping("/demandUnit")
+
+    @ApiOperation(value = "项目属性分布")
+    @GetMapping("/countByProjectAttr")
+    public AjaxResult countByProjectAttr() {
+        //按照项目属性统计所有的项目
+        List<StatisticalChartsResVo> resVos = pmDemandService.countByProjectAttr();
+        return AjaxResult.success(resVos);
+    }
+
+    @ApiOperation(value = "项目金额分布")
+    @GetMapping("/countByEvaluation")
+    public AjaxResult countByEvaluation() {
+        //按照概算金额统计所有的项目
+        //概算金额包括:100万以下采购任务、100至500万元采购任务、500至1000万元采购任务、1000至5000万元采购任务、5000至1亿元采购任务、1亿元及以上采购任务
+        List<StatisticalChartsResVo> resVos = pmDemandService.countByEvaluation();
+        return AjaxResult.success(resVos);
+    }
+
+    @ApiOperation(value = "执行滞后采购项目情况")
+    @GetMapping("/countProjectExceed")
     public AjaxResult countProjectExceed() {
-        //指本年度所有的逾期项目数
-        return null;
+        //执行滞后采购项目:本年度所有的逾期项目数
+        //预算金额:本年度所有逾期项目累加的预算金额
+        //滞后项目数量占比:指本年度逾期项目数量/本年度所有项目数量
+        return pmDemandService.countProjectExceed();
+    }
+
+    @ApiOperation(value = "滞后项目数量分析")
+    @GetMapping("/exceedAnalysis")
+    public AjaxResult exceedAnalysis() {
+        //统计不同时间维度的逾期项目
+        return pmDemandService.exceedAnalysis();
+    }
+
+    @ApiOperation(value = "滞后项目时长分析")
+    @GetMapping("/exceedMarketAnalysis")
+    public AjaxResult exceedMarketAnalysis() {
+        //按照滞后时长统计项目数量
+        //滞后时长包括:滞后1个月以内的采购任务、滞后1至3个月采购任务、滞后3至6个月采购任务、滞后6个月至1年采购任务、滞后1年以上采购任务
+        return pmDemandService.exceedMarketAnalysis();
     }
 
     @ApiOperation(value = "采购项目信息统计")
@@ -41,4 +78,39 @@ public class StatisticalAnalysisController extends BaseController {
         Map<String, Integer> map = pmDemandService.purchaseProjectStatistical(pmDemandReqVo);
         return success(map);
     }
+
+    @ApiOperation(value = "重大规划采购任务专项计划管理情况")
+    @GetMapping("/countMajorProject")
+    public AjaxResult countMajorProject() {
+        return pmDemandService.countMajorProject();
+    }
+
+
+    @ApiOperation(value = "任务数量趋势分析")
+    @GetMapping("/taskQuantityAnalysis")
+    public AjaxResult taskQuantityAnalysis() {
+        //任务数量趋势分析:按照月、季度、年统计“项目属性”字段中“重大规划”属性的项目
+        //统计数据包括:上年度已完成任务数、本年度已完成任务数、新受领任务数(指未完成的数量)
+        return pmDemandService.taskQuantityAnalysis();
+    }
+
+    @ApiOperation(value = "新完成采购任务数量")
+    @GetMapping("/newFinishPro")
+    public AjaxResult newFinishPro() {
+        // 新完成采购任务数量:本年度状态为“合同待填制”、“项目建设中”、“项目建设完成”的项目
+        //        预算金额:“合同待填制”、“项目建设中”、“项目建设完成”的项目累加的预算金额
+        //合同金额:“合同待填制”、“项目建设中”、“项目建设完成”的项目累加的合同金额
+        return pmDemandService.newFinishPro();
+    }
+
+    @ApiOperation(value = "各阶段采购任务数量分布")
+    @GetMapping("/countEveryStatusNum")
+    public AjaxResult countEveryStatusNum() {
+        //指项目进行到各个阶段的数量
+        //阶段包括:待选取代理、待上传招标文件、待发布公告、待开标、待发布中标公告、中标公式中
+        //展示信息包括:鼠标上到图表时,展示项目数量和平均消耗时长(平均消耗时长,指所有项目在该阶段完成的平均时间)
+        return pmDemandService.countEveryStatusNum();
+    }
+
+
 }

+ 75 - 0
purchase-system/src/main/java/com/ozs/pm/mapper/PmDemandMapper.java

@@ -8,6 +8,7 @@ import com.ozs.pm.doman.vo.requestVo.PmDemandReqVo;
 import com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
@@ -85,4 +86,78 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
     StatisticalChartsResVo countByEvaluationBet(@Param("evaluation") Integer evaluation, @Param("evaluationEnd") Integer evaluationEnd);
 
     StatisticalChartsResVo countByEvaluationGt(Integer evaluation);
+
+    /**
+     * 本年度所有的逾期项目数
+     *
+     * @return
+     */
+    StatisticalChartsResVo countProjectExceed();
+
+    /**
+     * 年度逾期项目数量
+     *
+     * @return
+     */
+    Integer countThisYear();
+
+    /**
+     * 统计不同时间维度的逾期项目
+     *
+     * @return
+     */
+    LinkedList<StatisticalChartsResVo> countProjectExceedYear();
+
+    /**
+     * 统计不同时间维度的逾期项目
+     *
+     * @return
+     */
+    LinkedList<StatisticalChartsResVo> countProjectExceedMonth();
+
+    /**
+     * 统计不同时间维度的逾期项目
+     *
+     * @return
+     */
+    StatisticalChartsResVo countProjectExceedQuarter(@Param("quarter") Integer quarter, @Param("year") Integer year);
+
+    /**
+     * 所有滞后
+     *
+     * @return
+     */
+    List<PmDemand> countProjectExceedAll();
+
+    /**
+     * //***状态:指本年度正在进行中的项目属性为“重大规划”的项目数
+     * //预算金额:指本年度正在进行中的项目属性为“重大规划”的项目累加的预算金额
+     *
+     * @param code
+     * @return
+     */
+    StatisticalChartsResVo majorProjectByStatus(String code);
+
+    /**
+     * //执行滞后数量:指本年度逾期项目中,项目属性为“重大规划”的项目数
+     * //预算金额:指本年度正在进行中的项目属性为“重大规划”的项目累加的预算金额
+     *
+     * @return
+     */
+    StatisticalChartsResVo countProjectExceedAndMajor();
+
+    /**
+     * 查询本年度的**状态的重大规划项目
+     */
+    List<StatisticalChartsResVo> taskQuantityYear(String code);
+
+    /**
+     * 查询上年度的**状态的重大规划项目
+     */
+    List<StatisticalChartsResVo> taskQuantityLastYear(String code);
+
+    /**
+     * @return
+     */
+    List<StatisticalChartsResVo> countEveryStatusNum();
 }

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

@@ -239,4 +239,53 @@ public interface IPmDemandService extends IService<PmDemand> {
      * @return
      */
     List<StatisticalChartsResVo> countByEvaluation();
+
+    /**
+     * 执行滞后采购项目情况
+     *
+     * @return
+     */
+    AjaxResult countProjectExceed();
+
+    /**
+     * 统计不同时间维度的逾期项目
+     *
+     * @return
+     */
+    AjaxResult exceedAnalysis();
+
+    /**
+     * 滞后项目时长分析
+     *
+     * @return
+     */
+    AjaxResult exceedMarketAnalysis();
+
+    /**
+     * 今年已完成数量
+     *
+     * @return
+     */
+    AjaxResult countMajorProject();
+
+    /**
+     * 任务数量趋势分析
+     *
+     * @return
+     */
+    AjaxResult taskQuantityAnalysis();
+
+    /**
+     * 新完成采购任务数量
+     *
+     * @return
+     */
+    AjaxResult newFinishPro();
+
+    /**
+     * 各阶段采购任务数量分布
+     *
+     * @return
+     */
+    AjaxResult countEveryStatusNum();
 }

+ 183 - 1
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java

@@ -1,7 +1,7 @@
 package com.ozs.pm.service.impl;
 
+import java.text.DecimalFormat;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.*;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -1421,6 +1421,173 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         return resVos;
     }
 
+    @Override
+    public AjaxResult countProjectExceed() {
+        HashMap<String, String> resMap = new HashMap<>();
+        //执行滞后采购项目:本年度所有的逾期项目数
+        //预算金额:本年度所有逾期项目累加的预算金额
+        StatisticalChartsResVo resVo = pmDemandMapper.countProjectExceed();
+        resMap.put("执行滞后采购项目", resVo.getNum());
+        resMap.put("预算金额", resVo.getEvaluationTotal());
+        //滞后项目数量占比:指本年度逾期项目数量/本年度所有项目数量
+        Integer thisYear = pmDemandMapper.countThisYear();
+        resMap.put("滞后项目数量占比", getPercent(Integer.parseInt(resVo.getNum()), thisYear));
+        return AjaxResult.success(resMap);
+    }
+
+    /**
+     * 统计不同时间维度的逾期项目
+     *
+     * @return
+     */
+    @Override
+    public AjaxResult exceedAnalysis() {
+        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);
+                }
+            }
+        }
+
+        resMap.put("年", byYear);
+        resMap.put("月", byMonth);
+        resMap.put("季度", byQuarter);
+        return AjaxResult.success(resMap);
+    }
+
+    @Override
+    public AjaxResult taskQuantityAnalysis() {
+        //任务数量趋势分析:按照月、季度、年统计“项目属性”字段中“重大规划”属性的项目
+        //统计数据包括:上年度已完成任务数、本年度已完成任务数、新受领任务数(指未完成的数量)
+        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;
+    }
+
+    @Override
+    public AjaxResult newFinishPro() {
+        // 新完成采购任务数量:本年度状态为“合同待填制”、“项目建设中”、“项目建设完成”的项目
+        //        预算金额:“合同待填制”、“项目建设中”、“项目建设完成”的项目累加的预算金额
+        //合同金额:“合同待填制”、“项目建设中”、“项目建设完成”的项目累加的合同金额
+
+        return null;
+    }
+
+    @Override
+    public AjaxResult countEveryStatusNum() {
+        //指项目进行到各个阶段的数量
+        //阶段包括:待选取代理、待上传招标文件、待发布公告、待开标、待发布中标公告、中标公式中
+        List<StatisticalChartsResVo> everyStatusNum = pmDemandMapper.countEveryStatusNum();
+        if (!ObjectUtils.isEmpty(everyStatusNum) && everyStatusNum.size() > 0) {
+            for (StatisticalChartsResVo vo : everyStatusNum) {
+                switch (vo.getColumnName()) {
+                    case "9":
+                        vo.setColumnName(PmProjectStatus.WAIT_SELECT_AGENT.getInfo());
+                    case "10":
+                        vo.setColumnName(PmProjectStatus.WAIT_UPLOAD_BID_FILE.getInfo());
+                    case "11":
+                        vo.setColumnName(PmProjectStatus.WAIT_ANNOUNCEMENT.getInfo());
+                    case "12":
+                        vo.setColumnName(PmProjectStatus.WAIT_OPEN_BID.getInfo());
+                    case "13":
+                        vo.setColumnName(PmProjectStatus.WAIT_BID_ANNOUNCEMENT.getInfo());
+                    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;
+    }
+
+    @Override
+    public AjaxResult exceedMarketAnalysis() {
+        //所有滞后
+        List<PmDemand> demandList = pmDemandMapper.countProjectExceedAll();
+        //滞后时长包括:滞后1个月以内的采购任务、滞后1至3个月采购任务、滞后3至6个月采购任务、滞后6个月至1年采购任务、滞后1年以上采购任务
+        HashMap<String, Integer> map = new LinkedHashMap<>();
+        map.put("滞后1个月以内的采购任务", 0);
+        map.put("滞后1至3个月采购任务", 0);
+        map.put("滞后3至6个月采购任务", 0);
+        map.put("滞后6个月至1年采购任务", 0);
+        map.put("滞后1年以上采购任务", 0);
+        if (!ObjectUtils.isEmpty(demandList) && demandList.size() > 0) {
+            for (PmDemand demand : demandList) {
+                //滞后时间
+                Long exTime = null;
+                if (!ObjectUtils.isEmpty(demand.getRealDemandCommitTime()) && demand.getRealDemandCommitTime().getTime() - demand.getPlanDemandSubTime().getTime() > 0) {
+                    exTime = demand.getRealDemandCommitTime().getTime() - demand.getPlanDemandSubTime().getTime();
+                } else if (!ObjectUtils.isEmpty(demand.getRealPurchaseFinishTime()) && demand.getRealPurchaseFinishTime().getTime() - demand.getPlanPurchaseFinishTime().getTime() > 0) {
+                    exTime = demand.getRealPurchaseFinishTime().getTime() - demand.getPlanPurchaseFinishTime().getTime();
+                } else if (!ObjectUtils.isEmpty(demand.getRealDeliverTime()) && demand.getRealDeliverTime().getTime() - demand.getPlanDeliverTime().getTime() > 0) {
+                    exTime = demand.getRealDeliverTime().getTime() - demand.getPlanDeliverTime().getTime();
+                }
+                if (exTime < Long.valueOf("2592000000")) {
+                    map.put("滞后1个月以内的采购任务", map.get("滞后1个月以内的采购任务") + 1);
+                }
+                if (exTime >= Long.valueOf("2592000000") && exTime < Long.valueOf("7776000000")) {
+                    map.put("滞后1至3个月采购任务", map.get("滞后1至3个月采购任务") + 1);
+                }
+                if (exTime >= Long.valueOf("7776000000") && exTime < Long.valueOf("15552000000")) {
+                    map.put("滞后3至6个月采购任务", map.get("滞后3至6个月采购任务") + 1);
+                }
+                if (exTime >= Long.valueOf("15552000000") && exTime < Long.valueOf("31104000000")) {
+                    map.put("滞后6个月至1年采购任务", map.get("滞后6个月至1年采购任务") + 1);
+                }
+                if (exTime > Long.valueOf("31104000000")) {
+                    map.put("滞后1年以上采购任务", map.get("滞后1年以上采购任务") + 1);
+                }
+            }
+        }
+
+        return AjaxResult.success(map);
+    }
+
+    @Override
+    public AjaxResult countMajorProject() {
+        List<StatisticalChartsResVo> resVos = new ArrayList<>();
+        //数量:指本年度状态为“项目建设完成”的项目属性为“重大规划”的项目数
+        //预算金额:指本年度状态为“项目建设完成”的项目属性为“重大规划”的项目累加的预算金额
+        StatisticalChartsResVo resVo = new StatisticalChartsResVo();
+        resVo = pmDemandMapper.majorProjectByStatus(PmProjectStatus.COMPLETION_CONSTRUCTION.getCode());
+        resVo.setColumnName("项目建设完成");
+        resVos.add(resVo);
+        //正常推进项目:指本年度正在进行中的项目属性为“重大规划”的项目数
+        //预算金额:指本年度正在进行中的项目属性为“重大规划”的项目累加的预算金额
+        StatisticalChartsResVo resVo1 = new StatisticalChartsResVo();
+        resVo1 = pmDemandMapper.majorProjectByStatus(PmProjectStatus.UNDER_CONSTRUCTION.getCode());
+        resVo1.setColumnName("正常推进项目");
+        resVos.add(resVo1);
+
+        //执行滞后数量:指本年度逾期项目中,项目属性为“重大规划”的项目数
+        //预算金额:指本年度正在进行中的项目属性为“重大规划”的项目累加的预算金额
+        StatisticalChartsResVo resVo2 = new StatisticalChartsResVo();
+        resVo2 = pmDemandMapper.countProjectExceedAndMajor();
+        resVo2.setColumnName("执行滞后数量");
+        resVos.add(resVo2);
+
+        //resVo2=pmDemandMapper.majorProjectByStatus(PmProjectStatus.COMPLETION_CONSTRUCTION.getCode());
+        return AjaxResult.success(resVos);
+    }
+
 
     //查询不同状态下的项目数据
     public List<PmDemandResVo> getListByStatus(String projectStatus) {
@@ -1536,4 +1703,19 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         }
         return "";
     }
+
+    /**
+     * 计算百分比:使用java.text.DecimalFormat实现
+     *
+     * @param x
+     * @param y
+     * @return
+     */
+    public static String getPercent(int x, int y) {
+        double d1 = x * 1.0;
+        double d2 = y * 1.0;
+        // 设置保留几位小数, “.”后面几个零就保留几位小数,这里设置保留2位小数
+        DecimalFormat decimalFormat = new DecimalFormat("##.00%");
+        return decimalFormat.format(d1 / d2);
+    }
 }

+ 96 - 0
purchase-system/src/main/resources/mapper/pm/PmDemandMapper.xml

@@ -78,5 +78,101 @@
         WHERE evaluation &gt; #{evaluation}
     </select>
 
+    <select id="countProjectExceed" 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
+            or real_purchase_finish_time > plan_purchase_finish_time
+            or real_deliver_time > plan_deliver_time)
+          and DATE_FORMAT(create_time, '%Y') = YEAR(NOW())
+    </select>
+
+    <select id="countThisYear" resultType="java.lang.Integer">
+        SELECT COUNT(demand_id) num
+        FROM `pm_demand`
+        WHERE DATE_FORMAT(create_time, '%Y') = YEAR(NOW())
+    </select>
+
+    <select id="countProjectExceedYear" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+        SELECT DATE_FORMAT(create_time, '%Y') columnName, COUNT(demand_id) num
+        FROM `pm_demand`
+        WHERE (real_demand_commit_time > plan_demand_sub_time
+            or real_purchase_finish_time > plan_purchase_finish_time
+            or real_deliver_time > plan_deliver_time)
+        GROUP BY DATE_FORMAT(create_time, '%Y')
+        order by create_time asc
+    </select>
+
+    <select id="countProjectExceedMonth" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+        SELECT DATE_FORMAT(create_time, '%Y-%m') columnName, COUNT(demand_id) num
+        FROM `pm_demand`
+        WHERE (real_demand_commit_time > plan_demand_sub_time
+            or real_purchase_finish_time > plan_purchase_finish_time
+            or real_deliver_time > plan_deliver_time)
+        GROUP BY DATE_FORMAT(create_time, '%Y-%m')
+    </select>
+
+    <select id="countProjectExceedQuarter" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+        SELECT create_time columnName, COUNT(demand_id) num
+        FROM `pm_demand`
+        WHERE (real_demand_commit_time > plan_demand_sub_time
+            or real_purchase_finish_time > plan_purchase_finish_time
+            or real_deliver_time > plan_deliver_time)
+          and QUARTER(create_time) = #{quarter}
+          AND DATE_FORMAT(create_time, '%Y') = #{year}
+    </select>
+
+    <select id="countProjectExceedAll" resultType="com.ozs.pm.doman.PmDemand">
+        SELECT *
+        FROM `pm_demand`
+        WHERE (real_demand_commit_time > plan_demand_sub_time
+            or real_purchase_finish_time > plan_purchase_finish_time
+            or real_deliver_time > plan_deliver_time)
+
+    </select>
+
+    <select id="majorProjectByStatus" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo"
+            parameterType="java.lang.String">
+        SELECT COUNT(demand_id) num, SUM(evaluation) evaluationTotal
+        FROM `pm_demand`
+        WHERE find_in_set('1', project_attr)
+          AND `project_status` = #{code}
+          AND DATE_FORMAT(create_time, '%Y') = year(now())
+    </select>
+
+    <select id="countProjectExceedAndMajor" 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
+            or real_purchase_finish_time > plan_purchase_finish_time
+            or real_deliver_time > plan_deliver_time)
+          AND find_in_set('1', project_attr)
+          and DATE_FORMAT(create_time, '%Y') = YEAR(NOW())
+    </select>
+
+    <select id="taskQuantityYear" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+        SELECT YEAR(NOW()) columnName, COUNT(demand_id) num
+        FROM `pm_demand`
+        WHERE find_in_set('1', project_attr)
+          AND `project_status` = #{code}
+          and DATE_FORMAT(create_time, '%Y') = YEAR(NOW())
+    </select>
+
+    <select id="taskQuantityLastYear" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo"
+            parameterType="java.lang.String">
+        SELECT YEAR(NOW()) - 1 columnName, COUNT(demand_id) num
+        FROM `pm_demand`
+        WHERE find_in_set('1', project_attr)
+          AND `project_status` = #{code}
+          and DATE_FORMAT(create_time, '%Y') = YEAR(NOW()) - 1
+    </select>
+
+    <select id="countEveryStatusNum" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+        SELECT project_status columnName, COUNT(demand_id) num, SUM(evaluation) evaluationTotal
+        FROM `pm_demand`
+        WHERE `project_status` IN (9, 10, 11, 12, 13, 14)
+          and DATE_FORMAT(create_time, '%Y') = YEAR(NOW())
+        GROUP BY project_status
+    </select>
 
 </mapper>