Explorar el Código

统计分析和系统首页部分更改

buzhanyi hace 2 años
padre
commit
57e4c07cb9

+ 12 - 12
purchase-admin/src/main/java/com/ozs/web/controller/home/SystemHomepageController.java

@@ -37,24 +37,12 @@ public class SystemHomepageController extends BaseController {
         return planYearsService.demandUnitPlanManagementTotal();
     }
 
-    @ApiOperation(value = "采购管理部门首页计划管理总数")
-    @GetMapping("/purchasingManagement/planManagement/total")
-    public AjaxResult purchasingManagementPurchasingManagementTotal() {
-        return planYearsService.purchasingManagementPurchasingManagementTotal();
-    }
-
     @ApiOperation(value = "需求单位首页需求管理总数")
     @GetMapping("/demandUnit/demandManagement/total")
     public AjaxResult demandUnitDemandManagementTotal() {
         return planYearsService.demandUnitDemandManagementTotal();
     }
 
-    @ApiOperation(value = "采购管理部门首页需求管理总数")
-    @GetMapping("/purchasingManagement/demandManagement/total")
-    public AjaxResult purchasingManagementDemandManagementTotal() {
-        return planYearsService.purchasingManagementDemandManagementTotal();
-    }
-
     @ApiOperation(value = "需求单位首页合同管理总数")
     @GetMapping("/demandUnit/contractManagement/total")
     public AjaxResult demandUnitContractManagementTotal() {
@@ -67,6 +55,18 @@ public class SystemHomepageController extends BaseController {
         return planYearsService.demandUnitConstructionManagementTotal();
     }
 
+    @ApiOperation(value = "采购管理部门首页计划管理总数")
+    @GetMapping("/purchasingManagement/planManagement/total")
+    public AjaxResult purchasingManagementPurchasingManagementTotal() {
+        return planYearsService.purchasingManagementPurchasingManagementTotal();
+    }
+
+    @ApiOperation(value = "采购管理部门首页需求管理总数")
+    @GetMapping("/purchasingManagement/demandManagement/total")
+    public AjaxResult purchasingManagementDemandManagementTotal() {
+        return planYearsService.purchasingManagementDemandManagementTotal();
+    }
+
     @ApiOperation(value = "采购管理部门首页任务下达管理总数")
     @GetMapping("/purchasingManagement/taskRelease/total")
     public AjaxResult purchasingManagementTaskReleaseTotal() {

+ 29 - 9
purchase-admin/src/main/java/com/ozs/web/controller/statisticalAnalysis/StatisticalAnalysisController.java

@@ -57,6 +57,19 @@ public class StatisticalAnalysisController extends BaseController {
         return AjaxResult.success(resVos);
     }
 
+    @ApiOperation(value = "采购方式分布")
+    @PostMapping("/countByPurchaseMouth")
+    @PreAuthorize("@ss.hasPermi('statistical:countByPurchaseMouth')")
+    @Log(title = ModularConstans.statisticalAnalysis, businessType = BusinessType.QUERY)
+    public AjaxResult countByPurchaseMouth(@RequestBody PmDemandReqVo pmDemandReqVo) {
+        //按照项目属性统计所有的项目
+        if (StringUtils.isNull(pmDemandReqVo.getPurchaseDeptId())) {
+            return error("登录账号的单位 不能为空!");
+        }
+        List<StatisticalChartsResVo> resVos = pmDemandService.countByPurchaseMode();
+        return AjaxResult.success(resVos);
+    }
+
     @ApiOperation(value = "项目金额分布")
     @PostMapping("/countByEvaluation")
     @PreAuthorize("@ss.hasPermi('statistical:countByEvaluation')")
@@ -155,15 +168,6 @@ public class StatisticalAnalysisController extends BaseController {
         return pmDemandService.taskQuantityAnalysis(pmDemandReqVo);
     }
 
-    //@ApiOperation(value = "新完成采购任务数量")--------接口作废
-    // @PostMapping("/newFinishPro")
-    //public AjaxResult newFinishPro(@RequestBody PmDemandReqVo pmDemandReqVo) {
-    //    // 新完成采购任务数量:本年度状态为“合同待填制”、“项目建设中”、“项目建设完成”的项目
-    //    //        预算金额:“合同待填制”、“项目建设中”、“项目建设完成”的项目累加的预算金额
-    //    //合同金额:“合同待填制”、“项目建设中”、“项目建设完成”的项目累加的合同金额
-    //    return pmDemandService.newFinishPro();
-    //}
-
     @ApiOperation(value = "各阶段采购任务数量分布")
     @PostMapping("/countEveryStatusNum")
     @PreAuthorize("@ss.hasPermi('statistical:countEveryStatusNum')")
@@ -220,6 +224,22 @@ public class StatisticalAnalysisController extends BaseController {
         return success(map);
     }
 
+    @ApiOperation(value = "已完成采购任务数量")
+    @PostMapping("/purchaseTaskFinish")
+    @PreAuthorize("@ss.hasPermi('statistical:purchaseTaskFinish')")
+    @Log(title = ModularConstans.statisticalAnalysis, businessType = BusinessType.QUERY)
+    public AjaxResult purchaseTaskFinish(@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.purchaseTaskFinish(pmDemandReqVo);
+        return success(map);
+    }
+
     @ApiOperation(value = "各阶段项目数量分布")
     @PostMapping("/purchaseProjectDistribution")
     @PreAuthorize("@ss.hasPermi('statistical:purchaseProjectDistribution')")

+ 6 - 6
purchase-common/src/main/java/com/ozs/common/enums/ProcurementMethodSuggest.java

@@ -1,16 +1,16 @@
 package com.ozs.common.enums;
 
 /**
- * 采购方式建议
+ * 采购方式
  *
  * @author buzhanyi
  */
 public enum ProcurementMethodSuggest {
-    OPEN_BIDDING("1", "公开招标"),
-    SELECTED_BIDDING("2", "邀请招标"),
-    COMPETITIVE_NEGOTIATION("3", "竞争性谈判"),
-    ENQUIRY("4", "询价"),
-    SINGLE_SOURCE ("5", "单一来源");
+    OPEN_BIDDING("0", "公开招标"),
+    SELECTED_BIDDING("1", "邀请招标"),
+    COMPETITIVE_NEGOTIATION("2", "竞争性谈判"),
+    ENQUIRY("3", "询价"),
+    SINGLE_SOURCE("4", "单一来源");
 
     private final String code;
     private final String info;

+ 15 - 66
purchase-system/src/main/java/com/ozs/plan/service/impl/PlanYearsServiceImpl.java

@@ -630,21 +630,12 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
         List<PlanYears> planYears = new ArrayList<>();
         try {
             List<SysRole> sysRoles = sysRoleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
-            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("demand_unit")).collect(Collectors.toList());
+            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("purchasing_management")).collect(Collectors.toList());
             if (sysRoleList.size() > 0) {
                 SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
                 SysDept sysDept = deptMapper.selectDeptById(sysUser.getDeptId());
-                List<SysDept> sysDepts = deptMapper.selectChildrenDeptById(sysDept.getDeptId());
-                List<Long> collect = sysDepts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
-                if (collect.size() == 0) {
-                    collect.add(-1L);
-                }
                 QueryWrapper<PlanYears> queryWrapper = new QueryWrapper<>();
-                queryWrapper
-                        .or(wrapper -> wrapper.lambda().eq(PlanYears::getPurchaseDeptId, sysDept.getDeptId())
-                                .eq(PlanYears::getIsExcess, IsExcess.NO_EXCESS.getCode()))
-                        .or(wrapper -> wrapper.lambda().in(PlanYears::getPurchaseDeptId, collect)
-                                .eq(PlanYears::getIsExcess, IsExcess.EXCESS.getCode()))
+                queryWrapper.eq("purchaseDeptId", sysDept.getDeptId())
                         .in("project_status", ProjectStatus.PLANWAIEXAMINE.getCode(), ProjectStatus.PLANTOEXAMINE.getCode());
                 planYears = planYearsMapper.selectList(queryWrapper);
             }
@@ -659,7 +650,7 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
         List<PmDemand> pmDemands = new ArrayList<>();
         try {
             List<SysRole> sysRoles = sysRoleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
-            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("purchasing_management")).collect(Collectors.toList());
+            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("demand_unit")).collect(Collectors.toList());
             if (sysRoleList.size() > 0) {
                 SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
                 SysDept sysDept = deptMapper.selectDeptById(sysUser.getDeptId());
@@ -678,21 +669,13 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
         List<PmDemand> pmDemands = new ArrayList<>();
         try {
             List<SysRole> sysRoles = sysRoleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
-            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("demand_unit")).collect(Collectors.toList());
+            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("purchasing_management")).collect(Collectors.toList());
             if (sysRoleList.size() > 0) {
                 SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
                 SysDept sysDept = deptMapper.selectDeptById(sysUser.getDeptId());
                 List<SysDept> sysDepts = deptMapper.selectChildrenDeptById(sysDept.getDeptId());
-                List<Long> collect = sysDepts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
-                if (collect.size() == 0) {
-                    collect.add(-1L);
-                }
                 QueryWrapper<PmDemand> queryWrapper = new QueryWrapper<>();
-                queryWrapper
-                        .or(wrapper -> wrapper.lambda().eq(PmDemand::getPurchaseDeptId, sysDept.getDeptId())
-                                .eq(PmDemand::getIsExcess, IsExcess.NO_EXCESS.getCode()))
-                        .or(wrapper -> wrapper.lambda().in(PmDemand::getPurchaseDeptId, collect)
-                                .eq(PmDemand::getIsExcess, IsExcess.EXCESS.getCode()))
+                queryWrapper.eq("purchaseDeptId", sysDept.getDeptId())
                         .in("project_status", PmProjectStatus.DEMAND_WAIT_AUDIT.getCode(), PmProjectStatus.DEMAND_AUDIT_RETURN.getCode());
                 pmDemands = pmDemandMapper.selectList(queryWrapper);
             }
@@ -707,7 +690,7 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
         List<PmDemand> pmDemands = new ArrayList<>();
         try {
             List<SysRole> sysRoles = sysRoleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
-            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("purchasing_management")).collect(Collectors.toList());
+            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("demand_unit")).collect(Collectors.toList());
             if (sysRoleList.size() > 0) {
                 SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
                 SysDept sysDept = deptMapper.selectDeptById(sysUser.getDeptId());
@@ -727,7 +710,7 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
         List<PmDemand> pmDemands = new ArrayList<>();
         try {
             List<SysRole> sysRoles = sysRoleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
-            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("purchasing_management")).collect(Collectors.toList());
+            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("demand_unit")).collect(Collectors.toList());
             if (sysRoleList.size() > 0) {
                 SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
                 SysDept sysDept = deptMapper.selectDeptById(sysUser.getDeptId());
@@ -747,21 +730,12 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
         List<PmDemand> pmDemands = new ArrayList<>();
         try {
             List<SysRole> sysRoles = sysRoleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
-            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("demand_unit")).collect(Collectors.toList());
+            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("purchasing_management")).collect(Collectors.toList());
             if (sysRoleList.size() > 0) {
                 SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
                 SysDept sysDept = deptMapper.selectDeptById(sysUser.getDeptId());
-                List<SysDept> sysDepts = deptMapper.selectChildrenDeptById(sysDept.getDeptId());
-                List<Long> collect = sysDepts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
-                if (collect.size() == 0) {
-                    collect.add(-1L);
-                }
                 QueryWrapper<PmDemand> queryWrapper = new QueryWrapper<>();
-                queryWrapper
-                        .or(wrapper -> wrapper.lambda().eq(PmDemand::getPurchaseDeptId, sysDept.getDeptId())
-                                .eq(PmDemand::getIsExcess, IsExcess.NO_EXCESS.getCode()))
-                        .or(wrapper -> wrapper.lambda().in(PmDemand::getPurchaseDeptId, collect)
-                                .eq(PmDemand::getIsExcess, IsExcess.EXCESS.getCode()))
+                queryWrapper.eq("purchase_dept_id", sysDept.getDeptId())
                         .in("project_status", PmProjectStatus.TASK_WAIT_RELEASE.getCode(),
                                 PmProjectStatus.WAIT_SELECT_AGENT.getCode(),
                                 PmProjectStatus.WAIT_UPLOAD_BID_FILE.getCode(),
@@ -783,21 +757,12 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
         List<PmDemand> pmDemands = new ArrayList<>();
         try {
             List<SysRole> sysRoles = sysRoleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
-            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("demand_unit")).collect(Collectors.toList());
+            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("procurement_office")).collect(Collectors.toList());
             if (sysRoleList.size() > 0) {
                 SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
                 SysDept sysDept = deptMapper.selectDeptById(sysUser.getDeptId());
-                List<SysDept> sysDepts = deptMapper.selectChildrenDeptById(sysDept.getDeptId());
-                List<Long> collect = sysDepts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
-                if (collect.size() == 0) {
-                    collect.add(-1L);
-                }
                 QueryWrapper<PmDemand> queryWrapper = new QueryWrapper<>();
-                queryWrapper
-                        .or(wrapper -> wrapper.lambda().eq(PmDemand::getPurchaseDeptId, sysDept.getDeptId())
-                                .eq(PmDemand::getIsExcess, IsExcess.NO_EXCESS.getCode()))
-                        .or(wrapper -> wrapper.lambda().in(PmDemand::getPurchaseDeptId, collect)
-                                .eq(PmDemand::getIsExcess, IsExcess.EXCESS.getCode()))
+                queryWrapper.eq("purchase_dept_id", sysDept.getDeptId())
                         .in("project_status",
                                 PmProjectStatus.WAIT_SELECT_AGENT.getCode(),
                                 PmProjectStatus.WAIT_UPLOAD_BID_FILE.getCode(),
@@ -819,21 +784,14 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
         List<PmDemand> pmDemands = new ArrayList<>();
         try {
             List<SysRole> sysRoles = sysRoleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
-            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("demand_unit")).collect(Collectors.toList());
+            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("procurement_office")).collect(Collectors.toList());
             if (sysRoleList.size() > 0) {
                 SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
                 SysDept sysDept = deptMapper.selectDeptById(sysUser.getDeptId());
                 List<SysDept> sysDepts = deptMapper.selectChildrenDeptById(sysDept.getDeptId());
                 List<Long> collect = sysDepts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
-                if (collect.size() == 0) {
-                    collect.add(-1L);
-                }
                 QueryWrapper<PmDemand> queryWrapper = new QueryWrapper<>();
-                queryWrapper
-                        .or(wrapper -> wrapper.lambda().eq(PmDemand::getPurchaseDeptId, sysDept.getDeptId())
-                                .eq(PmDemand::getIsExcess, IsExcess.NO_EXCESS.getCode()))
-                        .or(wrapper -> wrapper.lambda().in(PmDemand::getPurchaseDeptId, collect)
-                                .eq(PmDemand::getIsExcess, IsExcess.EXCESS.getCode()))
+                queryWrapper.eq("purchase_dept_id", sysDept.getDeptId())
                         .lt("project_status", PmProjectStatus.CONTRACT_WAIT_FILL.getCode());
                 pmDemands = pmDemandMapper.selectList(queryWrapper);
             }
@@ -848,21 +806,12 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
         List<PmDemand> pmDemands = new ArrayList<>();
         try {
             List<SysRole> sysRoles = sysRoleMapper.selectRolePermissionByUserId(SecurityUtils.getUserId());
-            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("demand_unit")).collect(Collectors.toList());
+            List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals("procurement_office")).collect(Collectors.toList());
             if (sysRoleList.size() > 0) {
                 SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
                 SysDept sysDept = deptMapper.selectDeptById(sysUser.getDeptId());
-                List<SysDept> sysDepts = deptMapper.selectChildrenDeptById(sysDept.getDeptId());
-                List<Long> collect = sysDepts.stream().map(SysDept::getDeptId).collect(Collectors.toList());
-                if (collect.size() == 0) {
-                    collect.add(-1L);
-                }
                 QueryWrapper<PmDemand> queryWrapper = new QueryWrapper<>();
-                queryWrapper
-                        .or(wrapper -> wrapper.lambda().eq(PmDemand::getPurchaseDeptId, sysDept.getDeptId())
-                                .eq(PmDemand::getIsExcess, IsExcess.NO_EXCESS.getCode()))
-                        .or(wrapper -> wrapper.lambda().in(PmDemand::getPurchaseDeptId, collect)
-                                .eq(PmDemand::getIsExcess, IsExcess.EXCESS.getCode()))
+                queryWrapper.eq("purchase_dept_id", sysDept.getDeptId())
                         .gt("project_status", PmProjectStatus.CONTRACT_WAIT_FILL.getCode());
                 pmDemands = pmDemandMapper.selectList(queryWrapper);
             }

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

@@ -76,6 +76,13 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
      */
     List<StatisticalChartsResVo> countByProjectAttr();
 
+    /**
+     * 按照采购方式统计所有的项目
+     *
+     * @return
+     */
+    List<StatisticalChartsResVo> countByPurchaseMode();
+
     /**
      * 按照概算金额统计所有的项目
      *
@@ -113,7 +120,7 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
      *
      * @return
      */
-    LinkedList<StatisticalChartsResVo> countProjectExceedMonth();
+    StatisticalChartsResVo countProjectExceedMonth(@Param("month") Integer month, @Param("year") Integer year);
 
     /**
      * 统计不同时间维度的逾期项目
@@ -163,6 +170,7 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
 
     /**
      * 通过计划ID查询项目
+     *
      * @param planId
      * @return
      */
@@ -170,6 +178,7 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
 
     /**
      * 项目执行进度统计--正常推进项目数量、预算金额
+     *
      * @param pmDemandReqVo
      * @return
      */
@@ -177,6 +186,7 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
 
     /**
      * 项目执行进度统计--未完成采购任务,预算金额
+     *
      * @param pmDemandReqVo
      * @return
      */
@@ -184,12 +194,14 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
 
     /**
      * 查询数据库年份最小值
+     *
      * @return
      */
     Integer selectMinYear();
 
     /**
      * 已完成项目数量统计 -- 年份
+     *
      * @param pmDemandReqVo
      * @return
      */
@@ -197,6 +209,7 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
 
     /**
      * 已完成项目数量统计 -- 季度
+     *
      * @param pmDemandReqVo
      * @return
      */
@@ -204,11 +217,36 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
 
     /**
      * 已完成项目数量统计 -- 月份
+     *
      * @param pmDemandReqVo
      * @return
      */
     List<Map<String, Integer>> selectpurchaseProjectCompleteNumberMonth(PmDemandReqVo pmDemandReqVo);
 
+    /**
+     * 已完成采购任务数量统计 -- 年份
+     *
+     * @param pmDemandReqVo
+     * @return
+     */
+    List<Map<String, Integer>> selectPurchaseTaskFinishYear(PmDemandReqVo pmDemandReqVo);
+
+    /**
+     * 已完成采购任务数量统计 -- 季度
+     *
+     * @param pmDemandReqVo
+     * @return
+     */
+    List<Map<String, Integer>> selectPurchaseTaskFinishQuarter(PmDemandReqVo pmDemandReqVo);
+
+    /**
+     * 已完成采购任务数量统计 -- 月份
+     *
+     * @param pmDemandReqVo
+     * @return
+     */
+    List<Map<String, Integer>> selectPurchaseTaskFinishMonth(PmDemandReqVo pmDemandReqVo);
+
     List<StatisticalChartsResVo> countProjectMajorByYear();
 
     StatisticalChartsResVo countProjectMajorByQuarter(@Param("quarter") Integer quarter, @Param("year") Integer year);
@@ -223,6 +261,7 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
 
     /**
      * 各阶段项目数量分布
+     *
      * @param pmDemandReqVo
      * @return
      */
@@ -230,18 +269,23 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
 
     /**
      * 项目数量分析--年
+     *
      * @param pmDemandReqVo
      * @return
      */
     List<Map<String, String>> purchaseProjectNumberAnalysisYear(PmDemandReqVo pmDemandReqVo);
+
     /**
      * 项目数量分析--季度
+     *
      * @param pmDemandReqVo
      * @return
      */
     List<Map<String, String>> purchaseProjectNumberAnalysisQuarter(PmDemandReqVo pmDemandReqVo);
+
     /**
      * 项目数量分析--月份
+     *
      * @param pmDemandReqVo
      * @return
      */

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

@@ -232,6 +232,14 @@ public interface IPmDemandService extends IService<PmDemand> {
      */
     List<StatisticalChartsResVo> countByProjectAttr();
 
+    /**
+     * 统计分析-按照采购方式统计所有的项目
+     *
+     * @param
+     * @return
+     */
+    List<StatisticalChartsResVo> countByPurchaseMode();
+
     /**
      * 统计分析-按照概算金额统计所有的项目
      *
@@ -275,13 +283,6 @@ public interface IPmDemandService extends IService<PmDemand> {
      */
     AjaxResult taskQuantityAnalysis(PmDemandReqVo pmDemandReqVo);
 
-    /**
-     * 新完成采购任务数量
-     *
-     * @return
-     */
-    AjaxResult newFinishPro();
-
     /**
      * 各阶段采购任务数量分布
      *
@@ -312,13 +313,23 @@ public interface IPmDemandService extends IService<PmDemand> {
 
     /**
      * 已完成项目数量统计
+     *
      * @param pmDemandReqVo
      * @return
      */
     List<Map<String, Integer>> purchaseProjectCompleteNumber(PmDemandReqVo pmDemandReqVo);
 
+    /**
+     * 已完成采购任务数量统计
+     *
+     * @param pmDemandReqVo
+     * @return
+     */
+    List<Map<String, Integer>> purchaseTaskFinish(PmDemandReqVo pmDemandReqVo);
+
     /**
      * 各阶段项目数量分布
+     *
      * @param pmDemandReqVo
      * @return
      */

+ 156 - 71
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java

@@ -263,18 +263,18 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 //中标信息列表
                 LambdaQueryWrapper<PmBidWinning> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
                 lambdaQueryWrapper1.eq(PmBidWinning::getDemandId, demandId)
-                        .eq(PmBidWinning::getStatus,BidWinningStatus.NORMAL.getCode());
+                        .eq(PmBidWinning::getStatus, BidWinningStatus.NORMAL.getCode());
                 PmBidWinning pmBidWinning = this.pmBidWinningService.getOne(lambdaQueryWrapper1);
                 if (!ObjectUtils.isEmpty(pmBidWinning)) {
                     LambdaQueryWrapper<PmBidWinningOpeningRef> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
-                    lambdaQueryWrapper2.eq(PmBidWinningOpeningRef::getWinningId,pmBidWinning.getId())
-                            .eq(PmBidWinningOpeningRef::getStatus,BidWinningStatus.NORMAL.getCode());
+                    lambdaQueryWrapper2.eq(PmBidWinningOpeningRef::getWinningId, pmBidWinning.getId())
+                            .eq(PmBidWinningOpeningRef::getStatus, BidWinningStatus.NORMAL.getCode());
                     List<PmBidWinningOpeningRef> pmBidWinningOpeningRefList = this.pmBidWinningOpeningRefService.list(lambdaQueryWrapper2);
-                    if(!ObjectUtils.isEmpty(pmBidWinningOpeningRefList)){
+                    if (!ObjectUtils.isEmpty(pmBidWinningOpeningRefList)) {
                         List<PmBidWinningResVo> pmBidWinningResVoList = new ArrayList<>();
                         for (PmBidWinningOpeningRef pmBidWinningOpeningRef : pmBidWinningOpeningRefList) {
                             PmBidOpening pmBidOpening = this.pmBidOpeningService.getById(pmBidWinningOpeningRef.getOpeningId());
-                            if(pmBidOpening != null){
+                            if (pmBidOpening != null) {
                                 PmBidWinningResVo pmBidWinningResVo = new PmBidWinningResVo();
                                 BeanUtils.copyProperties(pmBidWinning, pmBidWinningResVo);
                                 pmBidWinningResVo.setBidWinningName(pmBidOpening.getBidderName());
@@ -383,7 +383,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         //获取属于求单位管理员的列表
         List<SysRole> sysRoleList2 = sysRoles.stream().filter(tdto -> tdto.getRoleKey().equals(SysRoleKey.DEMAND_UNIT.getCode())).collect(Collectors.toList());
         if (!ObjectUtils.isEmpty(sysRoleList2)) { //属于需求单位管理员
-            lw.apply("(purchase_dept_id = " + deptId + ")" ) ;
+            lw.apply("(purchase_dept_id = " + deptId + ")");
         } else {
             //获取属于采购管理部门管理员 或 采购办管理员的列表
             List<SysRole> sysRoleList = sysRoles.stream().filter(tdto -> (tdto.getRoleKey().equals(SysRoleKey.PURCHASING_MANAGEMENT.getCode())
@@ -392,18 +392,18 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 //获取子部门列表
                 List<SysDept> sysDeptSubs = deptMapper.selectChildrenDeptById(sysUser.getDeptId());
                 String sysDeptSubStr = null;
-                if(!ObjectUtils.isEmpty(sysDeptSubs)){
+                if (!ObjectUtils.isEmpty(sysDeptSubs)) {
                     List<String> sysDeptSubIds = sysDeptSubs.stream().map(SysDept::getDeptId).collect(Collectors.toList())
                             .stream().map(x -> x + "").collect(Collectors.toList());
                     sysDeptSubStr = String.join(",", sysDeptSubIds);
                 }
 
-                String condtionSql= null;
-                if(ObjectUtils.isEmpty(sysDeptSubStr)){
+                String condtionSql = null;
+                if (ObjectUtils.isEmpty(sysDeptSubStr)) {
                     condtionSql = "(purchase_dept_id = " + deptId + " AND is_excess = 0) ";
                 } else {
                     condtionSql = "((purchase_dept_id = " + deptId + " AND is_excess = 0) " +
-                            " OR (purchase_dept_id IN ("+ sysDeptSubStr +")  AND is_excess = 1))";
+                            " OR (purchase_dept_id IN (" + sysDeptSubStr + ")  AND is_excess = 1))";
                 }
 
                 lw.apply(condtionSql);
@@ -417,13 +417,13 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         if (!StringUtils.isBlank(pmDemandReqVo.getPurchaseServices())) {
             lw.eq(PmDemand::getPurchaseServices, pmDemandReqVo.getPurchaseServices());
         }
-        if (!ObjectUtils.isEmpty(pmDemandReqVo.getProjectStatus() )) {
+        if (!ObjectUtils.isEmpty(pmDemandReqVo.getProjectStatus())) {
             lw.eq(PmDemand::getProjectStatus, pmDemandReqVo.getProjectStatus());
         }
-        if (!ObjectUtils.isEmpty(pmDemandReqVo.getWarnStatus() )) {
+        if (!ObjectUtils.isEmpty(pmDemandReqVo.getWarnStatus())) {
             lw.eq(PmDemand::getWarnStatus, pmDemandReqVo.getWarnStatus());
         }
-        if (!ObjectUtils.isEmpty(pmDemandReqVo.getIsExcess() )) {
+        if (!ObjectUtils.isEmpty(pmDemandReqVo.getIsExcess())) {
             lw.eq(PmDemand::getIsExcess, pmDemandReqVo.getIsExcess());
         }
         if (!StringUtils.isBlank(pmDemandReqVo.getBeginDate())) {
@@ -744,13 +744,13 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
     @Transactional(rollbackFor = Exception.class)
     public boolean reviewReturn(PmDemandReqVo pmDemandReqVo) {
         UpdateWrapper<PmDemand> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().eq(PmDemand::getDemandId,pmDemandReqVo.getDemandId())
-                .set(PmDemand::getProjectStatus,PmProjectStatus.DEMAND_AUDIT_RETURN.getCode())
-                .set(PmDemand::getAdjustReason,pmDemandReqVo.getRefuseReason())
-                .set(PmDemand::getRealDemandCommitTime,null)
-                .set(PmDemand::getUpdateBy,pmDemandReqVo.getUpdateBy())
-                .set(PmDemand::getUpdateTime,DateUtils.getNowDate())
-                .set(PmDemand::getAuditTime,DateUtils.getNowDate());
+        updateWrapper.lambda().eq(PmDemand::getDemandId, pmDemandReqVo.getDemandId())
+                .set(PmDemand::getProjectStatus, PmProjectStatus.DEMAND_AUDIT_RETURN.getCode())
+                .set(PmDemand::getAdjustReason, pmDemandReqVo.getRefuseReason())
+                .set(PmDemand::getRealDemandCommitTime, null)
+                .set(PmDemand::getUpdateBy, pmDemandReqVo.getUpdateBy())
+                .set(PmDemand::getUpdateTime, DateUtils.getNowDate())
+                .set(PmDemand::getAuditTime, DateUtils.getNowDate());
 
         return this.update(updateWrapper);
     }
@@ -1118,6 +1118,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
 
     /**
      * 填写中标
+     *
      * @param pmBidWinningReqVo
      * @return
      * @throws Exception
@@ -1140,22 +1141,22 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         BeanUtils.copyProperties(pmBidWinningReqVo, pmBidWinning);
 
         //修改老的中标信息状态
-        if(ObjectUtils.isEmpty(pmBidWinningReqVo.getId())){ //属于新增
+        if (ObjectUtils.isEmpty(pmBidWinningReqVo.getId())) { //属于新增
             LambdaQueryWrapper<PmBidWinning> pmBidWinningLambdaQueryWrapper = new LambdaQueryWrapper<>();
-            pmBidWinningLambdaQueryWrapper.eq(PmBidWinning::getDemandId,pmBidWinningReqVo.getDemandId())
-                    .eq(PmBidWinning::getStatus,BidWinningStatus.NORMAL.getCode());
+            pmBidWinningLambdaQueryWrapper.eq(PmBidWinning::getDemandId, pmBidWinningReqVo.getDemandId())
+                    .eq(PmBidWinning::getStatus, BidWinningStatus.NORMAL.getCode());
             List<PmBidWinning> pmBidWinninglist = pmBidWinningService.list(pmBidWinningLambdaQueryWrapper);
-            if(!ObjectUtils.isEmpty(pmBidWinninglist)){
-                for(PmBidWinning item : pmBidWinninglist) {
+            if (!ObjectUtils.isEmpty(pmBidWinninglist)) {
+                for (PmBidWinning item : pmBidWinninglist) {
                     UpdateWrapper<PmBidWinning> updateWrapper1 = new UpdateWrapper<>();
-                    updateWrapper1.lambda().set(PmBidWinning::getStatus,BidWinningStatus.BE_REPLACED.getCode())
-                            .eq(PmBidWinning::getId,item.getId());
+                    updateWrapper1.lambda().set(PmBidWinning::getStatus, BidWinningStatus.BE_REPLACED.getCode())
+                            .eq(PmBidWinning::getId, item.getId());
                     pmBidWinningService.update(updateWrapper1);
 
                     UpdateWrapper<PmBidWinningOpeningRef> updateWrapper2 = new UpdateWrapper<>();
-                    updateWrapper2.lambda().set(PmBidWinningOpeningRef::getStatus,BidWinningStatus.BE_REPLACED.getCode())
-                            .eq(PmBidWinningOpeningRef::getWinningId,item.getId())
-                            .eq(PmBidWinningOpeningRef::getStatus,BidWinningStatus.NORMAL.getCode());
+                    updateWrapper2.lambda().set(PmBidWinningOpeningRef::getStatus, BidWinningStatus.BE_REPLACED.getCode())
+                            .eq(PmBidWinningOpeningRef::getWinningId, item.getId())
+                            .eq(PmBidWinningOpeningRef::getStatus, BidWinningStatus.NORMAL.getCode());
                     pmBidWinningOpeningRefService.update(updateWrapper2);
                 }
             }
@@ -1197,7 +1198,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 }
                 baseNotice.setType(baseNoticeType.getId());
                 baseNotice.setReleaseTime(pmBidWinningReqVo.getBidAnnouncementTime());
-                 this.baseNoticeService.saveOrUpdate(baseNotice);
+                this.baseNoticeService.saveOrUpdate(baseNotice);
 
                 PmDemand pmDemandUpdate = new PmDemand();
                 pmDemandUpdate.setDemandId(pmBidWinningReqVo.getDemandId());
@@ -1230,28 +1231,28 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         }
 
         LambdaQueryWrapper<PmBidWinning> lw = new LambdaQueryWrapper<>();
-        lw.eq(PmBidWinning::getDemandId, pmBidWinningReqVo.getDemandId()).eq(PmBidWinning::getStatus,BidWinningStatus.NORMAL.getCode());
+        lw.eq(PmBidWinning::getDemandId, pmBidWinningReqVo.getDemandId()).eq(PmBidWinning::getStatus, BidWinningStatus.NORMAL.getCode());
         List<PmBidWinning> pmBidWinninglist = pmBidWinningService.list(lw);
         if (ObjectUtils.isEmpty(pmBidWinninglist)) {
             throw new Exception("原中标信息不存在");
         }
         //修改老的状态
-        for(PmBidWinning item : pmBidWinninglist) {
+        for (PmBidWinning item : pmBidWinninglist) {
             UpdateWrapper<PmBidWinning> updateWrapper1 = new UpdateWrapper<>();
-            updateWrapper1.lambda().set(PmBidWinning::getStatus,BidWinningStatus.BE_REPLACED.getCode())
-                    .eq(PmBidWinning::getId,item.getId());
+            updateWrapper1.lambda().set(PmBidWinning::getStatus, BidWinningStatus.BE_REPLACED.getCode())
+                    .eq(PmBidWinning::getId, item.getId());
             pmBidWinningService.update(updateWrapper1);
 
             UpdateWrapper<PmBidWinningOpeningRef> updateWrapper2 = new UpdateWrapper<>();
-            updateWrapper2.lambda().set(PmBidWinningOpeningRef::getStatus,BidWinningStatus.BE_REPLACED.getCode())
-                    .eq(PmBidWinningOpeningRef::getWinningId,item.getId())
-                    .eq(PmBidWinningOpeningRef::getStatus,BidWinningStatus.NORMAL.getCode());
+            updateWrapper2.lambda().set(PmBidWinningOpeningRef::getStatus, BidWinningStatus.BE_REPLACED.getCode())
+                    .eq(PmBidWinningOpeningRef::getWinningId, item.getId())
+                    .eq(PmBidWinningOpeningRef::getStatus, BidWinningStatus.NORMAL.getCode());
             pmBidWinningOpeningRefService.update(updateWrapper2);
         }
 
         //新增
         PmBidWinning pmBidWinning = new PmBidWinning();
-        BeanUtils.copyProperties(pmBidWinninglist.get(0),pmBidWinning);
+        BeanUtils.copyProperties(pmBidWinninglist.get(0), pmBidWinning);
         pmBidWinning.setId(null);
         pmBidWinning.setBidWinningAmount(pmBidWinningReqVo.getBidWinningAmount());
         pmBidWinning.setStatus(BidWinningStatus.NORMAL.getCode());
@@ -1272,8 +1273,8 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 pmBidWinningOpeningRefList.add(pmBidWinningOpeningRef);
             }
             LambdaQueryWrapper<SysFileRef> sysFileRefLambdaQueryWrapper = new LambdaQueryWrapper<>();
-            sysFileRefLambdaQueryWrapper.eq(SysFileRef::getType,SysFileRefEnum.PM_BID_WINNING_FILE.getType())
-                    .eq(SysFileRef::getRedId,pmBidWinninglist.get(0));
+            sysFileRefLambdaQueryWrapper.eq(SysFileRef::getType, SysFileRefEnum.PM_BID_WINNING_FILE.getType())
+                    .eq(SysFileRef::getRedId, pmBidWinninglist.get(0));
             List<SysFileRef> sysFileRefs = sysFileRefService.list(sysFileRefLambdaQueryWrapper);
             uploadFile(pmBidWinning.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType(), sysFileRefs, pmBidWinningReqVo.getUpdateBy());
 
@@ -1285,6 +1286,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
 
     /**
      * 流标
+     *
      * @param pmBidFailureReqVo
      * @return
      * @throws Exception
@@ -1297,19 +1299,19 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         if (pmBidFailureService.saveOrUpdate(pmBidFailure)) {
             //把中标信息修改状态
             LambdaQueryWrapper<PmBidWinning> lw = new LambdaQueryWrapper<>();
-            lw.eq(PmBidWinning::getDemandId, pmBidFailureReqVo.getDemandId()).eq(PmBidWinning::getStatus,BidWinningStatus.NORMAL.getCode());
+            lw.eq(PmBidWinning::getDemandId, pmBidFailureReqVo.getDemandId()).eq(PmBidWinning::getStatus, BidWinningStatus.NORMAL.getCode());
             List<PmBidWinning> pmBidWinninglist = pmBidWinningService.list(lw);
             if (!ObjectUtils.isEmpty(pmBidWinninglist)) {
-                for(PmBidWinning item : pmBidWinninglist) {
+                for (PmBidWinning item : pmBidWinninglist) {
                     UpdateWrapper<PmBidWinning> updateWrapper1 = new UpdateWrapper<>();
-                    updateWrapper1.lambda().set(PmBidWinning::getStatus,BidWinningStatus.BE_BID_FAILURE.getCode())
-                            .eq(PmBidWinning::getId,item.getId());
+                    updateWrapper1.lambda().set(PmBidWinning::getStatus, BidWinningStatus.BE_BID_FAILURE.getCode())
+                            .eq(PmBidWinning::getId, item.getId());
                     pmBidWinningService.update(updateWrapper1);
 
                     UpdateWrapper<PmBidWinningOpeningRef> updateWrapper2 = new UpdateWrapper<>();
-                    updateWrapper2.lambda().set(PmBidWinningOpeningRef::getStatus,BidWinningStatus.BE_BID_FAILURE.getCode())
-                            .eq(PmBidWinningOpeningRef::getWinningId,item.getId())
-                            .eq(PmBidWinningOpeningRef::getStatus,BidWinningStatus.NORMAL.getCode());
+                    updateWrapper2.lambda().set(PmBidWinningOpeningRef::getStatus, BidWinningStatus.BE_BID_FAILURE.getCode())
+                            .eq(PmBidWinningOpeningRef::getWinningId, item.getId())
+                            .eq(PmBidWinningOpeningRef::getStatus, BidWinningStatus.NORMAL.getCode());
                     pmBidWinningOpeningRefService.update(updateWrapper2);
                 }
             }
@@ -1593,6 +1595,20 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         return resVos;
     }
 
+    @Override
+    public List<StatisticalChartsResVo> countByPurchaseMode() {
+        List<StatisticalChartsResVo> resVos = pmDemandMapper.countByPurchaseMode();
+        for (StatisticalChartsResVo chartsResVo : resVos) {
+            for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
+                if (value.getCode().equals(chartsResVo.getColumnName())) {
+                    chartsResVo.setColumnName(value.getInfo());
+                    break;
+                }
+            }
+        }
+        return resVos;
+    }
+
     @Override
     public List<StatisticalChartsResVo> countByEvaluation(PmDemandReqVo pmDemandReqVo) {
         List<StatisticalChartsResVo> resVos = new ArrayList<>();
@@ -1648,13 +1664,30 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
             for (StatisticalChartsResVo chartsResVo : byYear) {
                 for (int i = 1; i <= 4; i++) {
                     StatisticalChartsResVo quarter = pmDemandMapper.countProjectExceedQuarter(i, Integer.parseInt(chartsResVo.getColumnName()));
+                    if (ObjectUtils.isEmpty(quarter)) {
+                        StatisticalChartsResVo vo = new StatisticalChartsResVo("", "0", "0");
+                        quarter = vo;
+                        quarter.setColumnName(chartsResVo.getColumnName() + "年第" + i + "季度");
+                    }
                     quarter.setColumnName(chartsResVo.getColumnName() + "年第" + i + "季度");
                     byQuarter.add(quarter);
                 }
             }
             resMap.put("季度", byQuarter);
         } else if (pmDemandReqVo.getTimeType().equals("3")) {
-            List<StatisticalChartsResVo> byMonth = pmDemandMapper.countProjectExceedMonth();
+            List<StatisticalChartsResVo> byMonth = new LinkedList<>();
+            for (StatisticalChartsResVo chartsResVo : byYear) {
+                for (int i = 1; i <= 12; i++) {
+                    StatisticalChartsResVo month = pmDemandMapper.countProjectExceedMonth(i, Integer.parseInt(chartsResVo.getColumnName()));
+                    if (ObjectUtils.isEmpty(month)) {
+                        StatisticalChartsResVo vo = new StatisticalChartsResVo("", "0", "0");
+                        month = vo;
+                        month.setColumnName(chartsResVo.getColumnName() + "年" + i + "月");
+                    }
+                    month.setColumnName(chartsResVo.getColumnName() + "年" + i + "月");
+                    byMonth.add(month);
+                }
+            }
             resMap.put("月", byMonth);
         }
         return AjaxResult.success(resMap);
@@ -1684,27 +1717,6 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         return AjaxResult.success(resMap);
     }
 
-    @Override
-    public AjaxResult newFinishPro() {
-        // 新完成采购任务数量:状态为“合同待填制”、“项目建设中”、“项目建设完成”的项目
-        //        预算金额:“合同待填制”、“项目建设中”、“项目建设完成”的项目累加的预算金额
-        List<StatisticalChartsResVo> everyStatusNum = pmDemandMapper.countEveryStatusNumTwo();
-        if (!ObjectUtils.isEmpty(everyStatusNum) && everyStatusNum.size() > 0) {
-            for (StatisticalChartsResVo vo : everyStatusNum) {
-                switch (vo.getColumnName()) {
-                    case "15":
-                        vo.setColumnName(PmProjectStatus.CONTRACT_WAIT_FILL.getInfo());
-                    case "16":
-                        vo.setColumnName(PmProjectStatus.UNDER_CONSTRUCTION.getInfo());
-                    case "17":
-                        vo.setColumnName(PmProjectStatus.COMPLETION_CONSTRUCTION.getInfo());
-                }
-            }
-        }
-        //合同金额:“合同待填制”、“项目建设中”、“项目建设完成”的项目累加的合同金额
-        return AjaxResult.success(everyStatusNum);
-    }
-
     @Override
     public AjaxResult countEveryStatusNum(PmDemandReqVo pmDemandReqVo) {
         //指项目进行到各个阶段的数量
@@ -1925,8 +1937,80 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         return mapReturn;
     }
 
+    /**
+     * 已完成采购任务数量统计
+     *
+     * @param pmDemandReqVo
+     * @return
+     */
+    @Override
+    public List<Map<String, Integer>> purchaseTaskFinish(PmDemandReqVo pmDemandReqVo) {
+        List<Map<String, Integer>> mapReturn = new ArrayList<>();
+        // 统计时间类型 1:年度,2:季度,3:月份
+        if ("1".equals(pmDemandReqVo.getTimeType())) {
+            // 查询数据库中最小的年份
+            int minYear = pmDemandMapper.selectMinYear();
+            // 获取当前年份
+            Calendar calendar = Calendar.getInstance();
+            int year = calendar.get(Calendar.YEAR);
+            // 获取统计数据
+            List<Map<String, Integer>> listMap = pmDemandMapper.selectPurchaseTaskFinishYear(pmDemandReqVo);
+            mapReturn.addAll(listMap);
+            for (int i = minYear; i <= year; i++) {
+                for (Map<String, Integer> map : listMap) {
+                    if (i != Integer.valueOf(map.get("yy"))) {
+                        Map<String, Integer> map1 = new HashMap<>();
+                        map1.put("yy", i);
+                        map1.put("evaluation", 0);
+                        map1.put("contractAmount", 0);
+                        map1.put("countNum", 0);
+                        mapReturn.add(map1);
+                    }
+                }
+            }
+        } else if ("2".equals(pmDemandReqVo.getTimeType())) {
+            // 当前年份季度统计
+            // 获取统计数据
+            List<Map<String, Integer>> listMap = pmDemandMapper.selectPurchaseTaskFinishQuarter(pmDemandReqVo);
+            mapReturn.addAll(listMap);
+            for (int i = 1; i <= 4; i++) {
+                for (Map<String, Integer> map : listMap) {
+                    if (i != map.get("yy")) {
+                        Map<String, Integer> map1 = new HashMap<>();
+                        map1.put("yy", i);
+                        map1.put("evaluation", 0);
+                        map1.put("contractAmount", 0);
+                        map1.put("countNum", 0);
+                        mapReturn.add(map1);
+                    }
+                }
+            }
+        } else if ("3".equals(pmDemandReqVo.getTimeType())) {
+            // 当前年份月份统计
+            // 获取统计数据
+            List<Map<String, Integer>> listMap = pmDemandMapper.selectPurchaseTaskFinishMonth(pmDemandReqVo);
+            mapReturn.addAll(listMap);
+            for (int i = 1; i <= 12; i++) {
+                for (Map<String, Integer> map : listMap) {
+                    int ii = Integer.parseInt(String.valueOf(map.get("yy")));
+                    map.put("yy", ii);
+                    if (i != ii) {
+                        Map<String, Integer> map1 = new HashMap<>();
+                        map1.put("yy", i);
+                        map1.put("evaluation", 0);
+                        map1.put("contractAmount", 0);
+                        map1.put("countNum", 0);
+                        mapReturn.add(map1);
+                    }
+                }
+            }
+        }
+        return mapReturn;
+    }
+
     /**
      * 各阶段项目数量分布
+     *
      * @param pmDemandReqVo
      * @return
      */
@@ -1989,6 +2073,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
 
     /**
      * 项目数量分析
+     *
      * @param pmDemandReqVo
      * @return
      */
@@ -2163,7 +2248,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 if (i > 0) {
                     return "距离计划交付时间不足" + i + "天";
                 } else {
-                    return "已超过计划完成时间" + i + "天";
+                    return "已超过计划完成时间" + Math.abs(i) + "天";
                 }
             }
         }

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

@@ -51,7 +51,8 @@
         -- DATE_FORMAT(plan_demand_sub_time,'%Y')
         select count(demand_id) countQNWC, ifnull(sum(evaluation), 0) evaluationQNWC
         from pm_demand
-        where project_status != '17' and year(plan_demand_sub_time) = year(NOW())-1
+        where project_status != '17'
+          and year(plan_demand_sub_time) = year(NOW()) - 1
     </select>
 
     <select id="countByProjectAttr" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
@@ -60,6 +61,12 @@
         GROUP BY project_status
     </select>
 
+    <select id="countByPurchaseMode" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
+        SELECT purchase_mode columnName, COUNT(demand_id) num, SUM(evaluation) evaluationTotal
+        FROM `pm_demand`
+        GROUP BY purchase_mode
+    </select>
+
     <select id="countByEvaluationLt" resultType="com.ozs.pm.doman.vo.responseVo.StatisticalChartsResVo">
         SELECT COUNT(demand_id) num, SUM(evaluation) evaluationTotal
         FROM `pm_demand`
@@ -109,11 +116,13 @@
         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 MONTH(create_time) = #{month}
+          AND DATE_FORMAT(create_time, '%Y') = #{year}
         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
+        SELECT DATE_FORMAT(create_time, '%Y-${quarter}季度') 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
@@ -286,6 +295,58 @@
         group by date_format(a.plan_demand_sub_time, '%y%m')
     </select>
 
+    <select id="selectPurchaseTaskFinishYear" parameterType="com.ozs.pm.doman.vo.requestVo.PmDemandReqVo"
+            resultType="java.util.Map">
+        select count(demand_id)                  countNum,
+               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 in (15, 16, 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="selectPurchaseTaskFinishQuarter" 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 in (15, 16, 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="selectPurchaseTaskFinishMonth" 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 in (15, 16, 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`