Ver código fonte

Merge remote-tracking branch 'origin/master'

suntianwu 2 anos atrás
pai
commit
70482c4380

+ 29 - 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 = "新完成采购任务数量")
@@ -133,4 +132,29 @@ public class StatisticalAnalysisController extends BaseController {
         Map<String, Integer> map = pmDemandService.purchaseProjectExecute(pmDemandReqVo);
         return success(map);
     }
+
+    @ApiOperation(value = "已完成项目数量统计")
+    @PostMapping("/purchaseProjectCompleteNumber")
+    public AjaxResult purchaseProjectCompleteNumber(@RequestBody PmDemandReqVo pmDemandReqVo) {
+        // 需求单位可查看本单位及其下属单位的统计数据
+        if (StringUtils.isNull(pmDemandReqVo.getPurchaseDeptId())) {
+            return error("登录账号的单位 不能为空!");
+        }
+        if (StringUtils.isNull(pmDemandReqVo.getTimeType())) {
+            return error("统计时间类型不能为空, 1:年度,2:季度,3:月份!");
+        }
+        List<Map<String, Integer>> map = pmDemandService.purchaseProjectCompleteNumber(pmDemandReqVo);
+        return success(map);
+    }
+
+    @ApiOperation(value = "各阶段项目数量分布")
+    @PostMapping("/purchaseProjectDistribution")
+    public AjaxResult purchaseProjectDistribution(@RequestBody PmDemandReqVo pmDemandReqVo) {
+        // 需求单位可查看本单位及其下属单位的统计数据
+        if (StringUtils.isNull(pmDemandReqVo.getPurchaseDeptId())) {
+            return error("登录账号的单位 不能为空!");
+        }
+        List<Map<String, Integer>> map = pmDemandService.purchaseProjectDistribution(pmDemandReqVo);
+        return success(map);
+    }
 }

+ 9 - 1
purchase-system/src/main/java/com/ozs/plan/service/impl/PlanYearsServiceImpl.java

@@ -1148,8 +1148,16 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
                 }
             }
             return AjaxResult.success(vo);
+        } else {
+            if (StringUtils.isNotNull(provisionalPlan)) {
+                return AjaxResult.success(provisionalPlan);
+            } else {
+                if (StringUtils.isNotNull(byId)) {
+                    return AjaxResult.success(byId);
+                }
+            }
         }
-        return AjaxResult.success(null);
+        return AjaxResult.error("没有查到相关数据!");
     }
 
     private List<SysFileInfo> getSysFileInfoList(Long redId, Integer type) {

+ 7 - 1
purchase-system/src/main/java/com/ozs/pm/doman/vo/requestVo/PmDemandReqVo.java

@@ -78,5 +78,11 @@ public class PmDemandReqVo extends PageVo
     private String detailType;
 
     @ApiModelProperty("采购单位(登录账号的单位)")
-    private Long purchaseDeptId;
+    private Integer purchaseDeptId;
+
+    @ApiModelProperty("统计时间类型 1:年度,2:季度,3:月份")
+    private String timeType;
+
+    @ApiModelProperty("项目类型列表")
+    private List<String> projectStatusList;
 }

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

@@ -181,4 +181,43 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
      * @return
      */
     Map<String, Integer> purchaseProjectExecuteIncomplete(PmDemandReqVo pmDemandReqVo);
+
+    /**
+     * 查询数据库年份最小值
+     * @return
+     */
+    Integer selectMinYear();
+
+    /**
+     * 已完成项目数量统计 -- 年份
+     * @param pmDemandReqVo
+     * @return
+     */
+    List<Map<String, Integer>> selectpurchaseProjectCompleteNumberYear(PmDemandReqVo pmDemandReqVo);
+
+    /**
+     * 已完成项目数量统计 -- 季度
+     * @param pmDemandReqVo
+     * @return
+     */
+    List<Map<String, Integer>> selectpurchaseProjectCompleteNumberQuarter(PmDemandReqVo pmDemandReqVo);
+
+    /**
+     * 已完成项目数量统计 -- 月份
+     * @param pmDemandReqVo
+     * @return
+     */
+    List<Map<String, Integer>> selectpurchaseProjectCompleteNumberMonth(PmDemandReqVo pmDemandReqVo);
+
+    List<StatisticalChartsResVo> countProjectMajorByYear();
+
+    StatisticalChartsResVo countProjectMajorByQuarter(@Param("quarter") Integer quarter, @Param("year") Integer year);
+
+    List<StatisticalChartsResVo> countProjectMajorByMonth();
+
+    List<StatisticalChartsResVo> countEveryStatusNumTwo();
+
+    StatisticalChartsResVo countMajorProjectExceed();
+
+    StatisticalChartsResVo countMajorProjectLastYear();
 }

+ 16 - 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);
 
     /**
      * 新完成采购任务数量
@@ -309,4 +309,18 @@ public interface IPmDemandService extends IService<PmDemand> {
      * @return
      */
     Map<String, Integer> purchaseProjectExecute(PmDemandReqVo pmDemandReqVo);
+
+    /**
+     * 已完成项目数量统计
+     * @param pmDemandReqVo
+     * @return
+     */
+    List<Map<String, Integer>> purchaseProjectCompleteNumber(PmDemandReqVo pmDemandReqVo);
+
+    /**
+     * 各阶段项目数量分布
+     * @param pmDemandReqVo
+     * @return
+     */
+    List<Map<String, Integer>> purchaseProjectDistribution(PmDemandReqVo pmDemandReqVo);
 }

Diferenças do arquivo suprimidas por serem muito extensas
+ 573 - 456
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java


+ 97 - 4
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
@@ -168,21 +168,60 @@
             , project_attr)
           AND `project_status` = #{code}
           and DATE_FORMAT(create_time
-            , '%Y') = YEAR (NOW()) - 1
+                  , '%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())
+          and DATE_FORMAT(create_time, '%Y') = YEAR(NOW())
+        GROUP BY project_status
+    </select>
+
+    <select id="countEveryStatusNumTwo" 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 (15, 16, 17)
+          and DATE_FORMAT(create_time, '%Y') = YEAR(NOW())
         GROUP BY project_status
     </select>
 
     <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>
 
     <!-- 正常推荐项目 -->
@@ -202,4 +241,58 @@
         from pm_demand
         where project_status in (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
     </select>
+
+    <select id="selectMinYear" resultType="java.lang.Integer">
+        select min(year (plan_demand_sub_time))
+        from pm_demand
+    </select>
+
+    <select id="selectpurchaseProjectCompleteNumberYear" parameterType="com.ozs.pm.doman.vo.requestVo.PmDemandReqVo"
+            resultType="java.util.Map">
+        select ifnull(sum(a.evaluation), 0) evaluation, year (a.plan_demand_sub_time) yy, ifnull(sum(b.contract_amount), 0) contractAmount
+        from (
+            select evaluation, plan_demand_sub_time, demand_id from pm_demand where project_status = '17'
+        ) a left join (
+            select contract_amount, demand_id from pm_contract_info
+        ) b on a.demand_id = b.demand_id
+        group by year (a.plan_demand_sub_time)
+    </select>
+
+    <select id="selectpurchaseProjectCompleteNumberQuarter" parameterType="com.ozs.pm.doman.vo.requestVo.PmDemandReqVo"
+            resultType="java.util.Map">
+        select ifnull(sum(a.evaluation), 0) evaluation, quarter(a.plan_demand_sub_time) yy, ifnull(sum(b.contract_amount), 0) contractAmount from (
+            select evaluation, plan_demand_sub_time, demand_id from pm_demand where project_status = '17' and year (plan_demand_sub_time) = year(NOW())
+        ) a left join (
+            select contract_amount, demand_id from pm_contract_info
+        ) b on a.demand_id = b.demand_id
+        group by concat(Year (a.plan_demand_sub_time), quarter(a.plan_demand_sub_time))
+    </select>
+
+    <select id="selectpurchaseProjectCompleteNumberMonth" parameterType="com.ozs.pm.doman.vo.requestVo.PmDemandReqVo"
+            resultType="java.util.Map">
+        select ifnull(sum(a.evaluation), 0)            evaluation,
+               date_format(plan_demand_sub_time, '%m') yy,
+               ifnull(sum(b.contract_amount), 0)       contractAmount
+        from (
+                 select evaluation, plan_demand_sub_time, demand_id
+                 from pm_demand
+                 where project_status = '17'
+                   and year(plan_demand_sub_time) = year(NOW())
+             ) a
+                 left join (
+            select contract_amount, demand_id
+            from pm_contract_info
+        ) b on a.demand_id = b.demand_id
+        group by date_format(a.plan_demand_sub_time, '%y%m')
+    </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>
 </mapper>