瀏覽代碼

Merge remote-tracking branch 'origin/V0.0.2' into V0.0.2

jingyuanchao 1 年之前
父節點
當前提交
118c0535eb

+ 16 - 9
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/controller/AppCockpitController.java

@@ -6,7 +6,12 @@ import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.core.board.dto.app.AppTaskRankingDto;
 import com.xunmei.core.board.service.AppCockpitService;
 import com.xunmei.core.board.vo.app.*;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponses;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -16,13 +21,14 @@ import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
 import java.util.Date;
+
 /**
  * 驾驶舱
  *
  * @author xunmei
  * @date 2023-09-06
  */
-@ApiOperation(value = "APP驾驶舱")
+@Api(tags = "APP驾驶舱")
 @RestController
 @RequestMapping("/cockpit/app")
 //@RequiresPermissions("core:cockpit")
@@ -33,7 +39,7 @@ public class AppCockpitController extends BaseController {
     /**
      * 履职排名
      */
-    @ApiOperation(value = "履职排名")
+    @ApiOperation(value = "履职排名", notes = "返回数组", response = AppTaskRankingVo.class)
     @GetMapping("/ranking/resumption")
     public AjaxResult taskRanking(AppTaskRankingDto dto) {
         List<AppTaskRankingVo> rankingVos = appCockpitService.taskRanking(dto);
@@ -45,9 +51,10 @@ public class AppCockpitController extends BaseController {
      * 基础信息
      */
     @ApiOperation(value = "基础信息")
+//    @ApiResponse(content =@Content(schema = @Schema(implementation = AppBaseInfoVo.class)))
     @GetMapping("/baseInfo")
     public AjaxResult baseInfo() {
-        AppBaseInfoVo vo= appCockpitService.baseInfo();
+        AppBaseInfoVo vo = appCockpitService.baseInfo();
 //        AppBaseInfoVo vo = new AppBaseInfoVo();
 //        vo.setSecurityFacilities(new AppBaseInfoSecurityFacilitiesVo());
 //        vo.setBanking2015(new AppGa38RateVo());
@@ -79,9 +86,9 @@ public class AppCockpitController extends BaseController {
     /**
      * 总览
      */
-    @ApiOperation(value = "总览")
+    @ApiOperation(value = "总览", response = AppOverviewVo.class)
     @GetMapping("/overview")
-    public AjaxResult overview()   throws ExecutionException, InterruptedException, TimeoutException {
+    public AjaxResult overview() throws ExecutionException, InterruptedException, TimeoutException {
         AppOverviewVo vo = appCockpitService.overview();
         return success(vo);
     }
@@ -89,7 +96,7 @@ public class AppCockpitController extends BaseController {
     /**
      * 综合数据-履职
      */
-    @ApiOperation(value = "综合数据-履职")
+    @ApiOperation(value = "综合数据-履职", response = AppSyntheticResumptionVo.class)
     @GetMapping("/synthetic/resumption")
     public AjaxResult syntheticResumption(Date month) {
         AppSyntheticResumptionVo vo = appCockpitService.syntheticResumption(month);
@@ -99,7 +106,7 @@ public class AppCockpitController extends BaseController {
     /**
      * 综合数据-问题整改
      */
-    @ApiOperation(value = "综合数据-问题整改")
+    @ApiOperation(value = "综合数据-问题整改", response = AppSyntheticQuestionVo.class)
     @GetMapping("/synthetic/question")
     public AjaxResult syntheticQuestion(Date month) {
         AppSyntheticQuestionVo vo = appCockpitService.syntheticQuestion(month);
@@ -109,7 +116,7 @@ public class AppCockpitController extends BaseController {
     /**
      * 综合数据-安全检查
      */
-    @ApiOperation(value = "综合数据-安全检查")
+    @ApiOperation(value = "综合数据-安全检查", response = AppSyntheticSafetycheckVo.class)
     @GetMapping("/synthetic/safethcheck")
     public AjaxResult syntheticSafetycheck(Date month) {
         AppSyntheticSafetycheckVo vo = appCockpitService.syntheticSafetyCheck(month);
@@ -119,7 +126,7 @@ public class AppCockpitController extends BaseController {
     /**
      * 综合数据-安全检查
      */
-    @ApiOperation(value = "综合数据-其它")
+    @ApiOperation(value = "综合数据-其它", response = AppSyntheticOtherVo.class)
     @GetMapping("/synthetic/other")
     public AjaxResult syntheticOther(Date month) {
         AppSyntheticOtherVo vo = appCockpitService.syntheticOther(month);

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/controller/WebCockpitController.java

@@ -17,7 +17,7 @@ import javax.annotation.Resource;
  * @author xunmei
  * @date 2023-09-06
  */
-@ApiOperation(value = "驾驶舱")
+@Api(tags = "驾驶舱")
 @RestController
 @RequestMapping("/cockpit")
 //@RequiresPermissions("core:cockpit")

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/dto/app/AppSyntheticTaskCategoryDto.java

@@ -12,4 +12,6 @@ public class AppSyntheticTaskCategoryDto {
     private int total;
 
     private int completed;
+
+    private int exceptionCount;
 }

+ 41 - 12
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/impl/AppCockpitServiceImpl.java

@@ -12,10 +12,7 @@ import com.xunmei.common.core.enums.CycleCommonEnum;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.core.board.dto.app.AppGA38InfoDto;
-import com.xunmei.core.board.dto.app.AppOrgBaseInfoDto;
-import com.xunmei.core.board.dto.app.AppOverviewTaskInfoDto;
-import com.xunmei.core.board.dto.app.AppTaskRankingDto;
+import com.xunmei.core.board.dto.app.*;
 import com.xunmei.core.board.mapper.AppCockpitMapper;
 import com.xunmei.core.board.mapper.CockpitMapper;
 import com.xunmei.core.board.service.AppCockpitService;
@@ -30,13 +27,16 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
+import reactor.function.Predicate3;
 
 import javax.annotation.Resource;
+import javax.swing.*;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
+import java.util.stream.Collectors;
 
 @Service
 public class AppCockpitServiceImpl implements AppCockpitService {
@@ -115,10 +115,7 @@ public class AppCockpitServiceImpl implements AppCockpitService {
      */
     @Override
     public AppBaseInfoVo baseInfo() {
-        SysOrg org = remoteOrgService.selectOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER);
-        if (ObjectUtil.isNull(org)) {
-            throw new ServiceException("登录机构不存在");
-        }
+        SysOrg org = getLoginOrg();
 
         AppBaseInfoVo vo = new AppBaseInfoVo();
         AppOrgBaseInfoDto baseInfoDto = appCockpitMapper.selectOrgBaseInfo(org.getPath());
@@ -170,11 +167,8 @@ public class AppCockpitServiceImpl implements AppCockpitService {
      */
     @Override
     public AppOverviewVo overview() throws ExecutionException, InterruptedException, TimeoutException {
-        SysOrg org = remoteOrgService.selectOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER);
+        SysOrg org = getLoginOrg();
         AppOverviewVo vo = new AppOverviewVo();
-        if (ObjectUtil.isNull(org)) {
-            return vo;
-        }
 
         Date currentMonth = DateUtil.beginOfMonth(new Date());
         Date prevMonth = DateUtil.beginOfMonth(new Date()).offset(DateField.MONTH, -1);
@@ -248,6 +242,33 @@ public class AppCockpitServiceImpl implements AppCockpitService {
 
     @Override
     public AppSyntheticResumptionVo syntheticResumption(Date month) {
+        SysOrg org = getLoginOrg();
+        DateRange range = DateUtils.getStartAndEnd(month, CycleCommonEnum.MONTHLY);
+        List<AppSyntheticTaskCategoryDto> taskCategoryDtos = appCockpitMapper.selectSyntheticResumption( org.getPath(), range.getStartTime(), range.getEndTime());
+
+        AppSyntheticResumptionVo vo=new AppSyntheticResumptionVo();
+        vo.setInfoByType(new HashMap<>());
+        vo.setRateByType(new HashMap<>());
+        Predicate3<List<String>,String,String> predicate3=(List<String> types,String label,String no)->{
+            List<AppSyntheticTaskCategoryDto> used= taskCategoryDtos.stream().filter(d->types.contains(d.getPlanType())).collect(Collectors.toList());
+            int total=used.stream().mapToInt(AppSyntheticTaskCategoryDto::getTotal).sum();
+            int completed=used.stream().mapToInt(AppSyntheticTaskCategoryDto::getCompleted).sum();
+            Float rate=computeRate(total,completed);
+
+            vo.getRateByType().put(label,rate);
+            vo.getInfoByType().put(label,AppSyntheticTaskInfoVo.builder()
+                    .completedCount(completed).shouldCompleteCount(total).completedRate(rate)
+                    .build());
+
+            return true;
+        };
+
+        predicate3.test(Arrays.asList("1","2","3"),"每日履职",null);
+        predicate3.test(Arrays.asList("4"),"报警测试",null);
+        predicate3.test(Arrays.asList("5"),"UPS维护",null);
+        predicate3.test(Arrays.asList("6"),"夜间值守",null);
+        predicate3.test(Arrays.asList("7"),"离行巡检",null);
+
         return new AppSyntheticResumptionVo();
     }
 
@@ -288,6 +309,14 @@ public class AppCockpitServiceImpl implements AppCockpitService {
     }
 
 
+    private SysOrg getLoginOrg() {
+        SysOrg org = remoteOrgService.selectOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER);
+        if (ObjectUtil.isNull(org)) {
+            throw new ServiceException("未获取到登录机构");
+        }
+        return org;
+    }
+
     /**
      * @param total            应完成
      * @param completed        已完成

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/vo/app/AppSyntheticTaskInfoVo.java

@@ -1,9 +1,11 @@
 package com.xunmei.core.board.vo.app;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
 import lombok.Data;
 
 @Data
+@Builder
 /**
  * 综合数据-任务完成情况
  */