Browse Source

实现、调试APP驾驶舱基础信息

jiawuxian 1 year ago
parent
commit
c905e4c3db

+ 26 - 25
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/controller/AppCockpitController.java

@@ -51,31 +51,32 @@ public class AppCockpitController extends BaseController {
     @ApiOperation(value = "基础信息")
     @GetMapping("/baseInfo")
     public AjaxResult baseInfo() {
-        AppBaseInfoVo vo = new AppBaseInfoVo();
-        vo.setSecurityFacilities(new AppBaseInfoSecurityFacilitiesVo());
-        vo.setBanking2015(new AppGa38RateVo());
-        vo.setOfflineATM2015(new AppGa38RateVo());
-        vo.setBanking2021(new AppGa38RateVo());
-        vo.setOfflineATM2021(new AppGa38RateVo());
-
-        vo.setBusinessStoreInfo(new HashMap<>());
-        vo.getBusinessStoreInfo().put("一类库", 50);
-        vo.getBusinessStoreInfo().put("二类库", 50);
-        vo.getBusinessStoreInfo().put("三类库", 50);
-        vo.getBusinessStoreInfo().put("四类库", 50);
-
-
-        vo.setSecurityPeopleInfo(new HashMap<>());
-        vo.getSecurityPeopleInfo().put("未配备", 40);
-        vo.getSecurityPeopleInfo().put("已配备", 40);
-
-        vo.setOnlineATMPropertyRight(new HashMap<>());
-        vo.getOnlineATMPropertyRight().put("穿墙式设备",40);
-        vo.getOnlineATMPropertyRight().put("大堂式设备",40);
-
-        vo.setOfflineATMPropertyRight(new HashMap<>());
-        vo.getOfflineATMPropertyRight().put("穿墙式设备",40);
-        vo.getOfflineATMPropertyRight().put("大堂式设备",40);
+        AppBaseInfoVo vo=cockpitService.baseInfo();
+//        AppBaseInfoVo vo = new AppBaseInfoVo();
+//        vo.setSecurityFacilities(new AppBaseInfoSecurityFacilitiesVo());
+//        vo.setBanking2015(new AppGa38RateVo());
+//        vo.setOfflineATM2015(new AppGa38RateVo());
+//        vo.setBanking2021(new AppGa38RateVo());
+//        vo.setOfflineATM2021(new AppGa38RateVo());
+//
+//        vo.setBusinessStoreInfo(new HashMap<>());
+//        vo.getBusinessStoreInfo().put("一类库", 50);
+//        vo.getBusinessStoreInfo().put("二类库", 50);
+//        vo.getBusinessStoreInfo().put("三类库", 50);
+//        vo.getBusinessStoreInfo().put("四类库", 50);
+//
+//
+//        vo.setSecurityPeopleInfo(new HashMap<>());
+//        vo.getSecurityPeopleInfo().put("未配备", 40);
+//        vo.getSecurityPeopleInfo().put("已配备", 40);
+//
+//        vo.setOnlineATMPropertyRight(new HashMap<>());
+//        vo.getOnlineATMPropertyRight().put("穿墙式设备",40);
+//        vo.getOnlineATMPropertyRight().put("大堂式设备",40);
+//
+//        vo.setOfflineATMPropertyRight(new HashMap<>());
+//        vo.getOfflineATMPropertyRight().put("穿墙式设备",40);
+//        vo.getOfflineATMPropertyRight().put("大堂式设备",40);
         return success(vo);
     }
 

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

@@ -0,0 +1,45 @@
+package com.xunmei.core.board.dto.app;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * APP驾驶舱机构基础信息
+ */
+@Data
+public class AppOrgBaseInfoDto {
+    @ApiModelProperty("机构总数")
+    private int total;
+    @ApiModelProperty("未达标数量")
+    private int unreachedCount;
+    @ApiModelProperty("营业网点数数量")
+    private int bankingCount;
+    @ApiModelProperty("离行数量")
+    private int offATMCount;
+    @ApiModelProperty("营业网点GA38-2021达标数量")
+    private int bankingGA382021 ;
+    @ApiModelProperty("营业网点GA38-20215达标数量")
+    private int bankingGA382015 ;
+    @ApiModelProperty("离行GA38-2021达标数量")
+    private int offATMGA382021 ;
+    @ApiModelProperty("离行GA38-2015达标数量")
+    private int offATMGA382015;
+    @ApiModelProperty("一类库数量")
+    private int businessLibraryOne;
+    @ApiModelProperty("二类库数量")
+    private int businessLibraryTwo;
+    @ApiModelProperty("三类库数量")
+    private int businessLibraryThree;
+    @ApiModelProperty("四类库数量")
+    private int businessLibraryFour;
+    @ApiModelProperty("有配置保安数量")
+    private int orgWithSecurityCount;
+    @ApiModelProperty("营业网点大堂式设备数量")
+    private int bankingObbyDeviceCount;
+    @ApiModelProperty("营业网点穿墙式设备数量")
+    private int bankingWallDeviceCount;
+    @ApiModelProperty("离行大堂式设备数量")
+    private int offATMObbyDeviceCount;
+    @ApiModelProperty("离行穿墙式设备数量")
+    private int offATMWallDeviceCount;
+}

+ 8 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/mapper/AppCockpitMapper.java

@@ -2,6 +2,7 @@ package com.xunmei.core.board.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 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.vo.app.AppOverviewVo;
 import org.apache.ibatis.annotations.Param;
@@ -75,4 +76,11 @@ public interface AppCockpitMapper extends BaseMapper {
      * @return
      */
     AppOverviewTaskInfoDto selectOverViewQuestionInfo(@Param("orgPath") String orgPath, @Param("date") Date date);
+
+    /**
+     * 获取机构(暂时只查营业网点、离行)基础信息
+     * @param orgPath
+     * @return
+     */
+    AppOrgBaseInfoDto selectOrgBaseInfo(@Param("orgPath") String orgPath);
 }

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

@@ -13,15 +13,13 @@ 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.mapper.AppCockpitMapper;
 import com.xunmei.core.board.mapper.CockpitMapper;
 import com.xunmei.core.board.service.AppCockpitService;
-import com.xunmei.core.board.vo.app.AppBaseInfoVo;
-import com.xunmei.core.board.vo.app.AppOverviewItemVo;
-import com.xunmei.core.board.vo.app.AppOverviewVo;
-import com.xunmei.core.board.vo.app.AppTaskRankingVo;
+import com.xunmei.core.board.vo.app.*;
 import com.xunmei.core.board.vo.web.TaskStatisticVo;
 import com.xunmei.core.thread.ThreadPoolConfig;
 import com.xunmei.system.api.RemoteOrgService;
@@ -106,7 +104,52 @@ public class AppCockpitServiceImpl implements AppCockpitService {
 
     @Override
     public AppBaseInfoVo baseInfo() {
-        return null;
+        SysOrg org = remoteOrgService.selectOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER);
+        if (ObjectUtil.isNull(org)) {
+           throw new ServiceException("登录机构不存在");
+        }
+
+        AppBaseInfoVo vo = new AppBaseInfoVo();
+        AppOrgBaseInfoDto baseInfoDto=appCockpitMapper.selectOrgBaseInfo(org.getPath());
+        vo.setSecurityFacilities(new AppBaseInfoSecurityFacilitiesVo());
+        vo.getSecurityFacilities().setGa382015(baseInfoDto.getBankingGA382015()+baseInfoDto.getOffATMGA382015());
+        vo.getSecurityFacilities().setGa382021(baseInfoDto.getBankingGA382021()+baseInfoDto.getOffATMGA382021());
+        vo.getSecurityFacilities().setGa38Unreached(baseInfoDto.getUnreachedCount());
+
+        vo.setBanking2021(new AppGa38RateVo());
+        vo.getBanking2021().setTotal(baseInfoDto.getBankingCount());
+        vo.getBanking2021().setRate(computeRate(baseInfoDto.getBankingCount(), baseInfoDto.getBankingGA382021()));
+
+        vo.setBanking2015(new AppGa38RateVo());
+        vo.getBanking2015().setTotal(baseInfoDto.getBankingCount());
+        vo.getBanking2015().setRate(computeRate(baseInfoDto.getBankingCount(), baseInfoDto.getBankingGA382015()));
+
+        vo.setOfflineATM2021(new AppGa38RateVo());
+        vo.getOfflineATM2021().setTotal(baseInfoDto.getOffATMCount());
+        vo.getOfflineATM2021().setRate(computeRate(baseInfoDto.getOffATMCount(), baseInfoDto.getOffATMGA382021()));
+
+        vo.setOfflineATM2015(new AppGa38RateVo());
+        vo.getOfflineATM2015().setTotal(baseInfoDto.getOffATMCount());
+        vo.getOfflineATM2015().setRate(computeRate(baseInfoDto.getOffATMCount(), baseInfoDto.getOffATMGA382015()));
+
+        vo.setBusinessStoreInfo(new HashMap<>());
+        vo.getBusinessStoreInfo().put("一类库",baseInfoDto.getBusinessLibraryOne());
+        vo.getBusinessStoreInfo().put("二类库",baseInfoDto.getBusinessLibraryTwo());
+        vo.getBusinessStoreInfo().put("三类库",baseInfoDto.getBusinessLibraryThree());
+        vo.getBusinessStoreInfo().put("四类库",baseInfoDto.getBusinessLibraryFour());
+
+        vo.setSecurityPeopleInfo(new HashMap<>());
+        vo.getSecurityPeopleInfo().put("已配备", baseInfoDto.getOrgWithSecurityCount());
+        vo.getSecurityPeopleInfo().put("未配备",baseInfoDto.getBankingCount()-baseInfoDto.getOrgWithSecurityCount());
+
+        vo.setOnlineATMPropertyRight(new HashMap<>());
+        vo.getOnlineATMPropertyRight().put("穿墙式设备",baseInfoDto.getOffATMWallDeviceCount());
+        vo.getOnlineATMPropertyRight().put("大堂式设备",baseInfoDto.getOffATMObbyDeviceCount());
+
+        vo.setOfflineATMPropertyRight(new HashMap<>());
+        vo.getOfflineATMPropertyRight().put("穿墙式设备",baseInfoDto.getOffATMWallDeviceCount());
+        vo.getOfflineATMPropertyRight().put("大堂式设备",baseInfoDto.getOffATMObbyDeviceCount());
+        return  vo;
     }
 
     /**
@@ -205,23 +248,11 @@ public class AppCockpitServiceImpl implements AppCockpitService {
         }
         vo.setCurrentCompletedCount(dto.getCompleted());
         vo.setShouldComplete(dto.getTotal());
-        if (ObjectUtil.equal(dto.getTotal(), 0) || ObjectUtil.isNull(dto.getTotal())) {
-            vo.setCurrentCompletedRate(1F);
-        } else if (ObjectUtil.equal(dto.getCompleted(), 0) || ObjectUtil.isNull(dto.getCompleted())) {
-            vo.setCurrentCompletedCount(0);
-        } else {
-            vo.setCurrentCompletedRate(((float) dto.getCompleted()) / dto.getTotal());
-        }
-
-        float prevRate = 0;
-        if (ObjectUtil.equal(dto.getPrevTotal(), 0) || ObjectUtil.isNull(dto.getPrevTotal())) {
-            prevRate = 1F;
-        } else if (ObjectUtil.isNotNull(dto.getPrevCompleted())) {
-            prevRate = ((float) dto.getPrevCompleted()) / dto.getPrevTotal();
-        }
-
+        vo.setCurrentCompletedRate(computeRate(dto.getTotal(),dto.getCompleted()));
+        float prevRate =computeRate(dto.getPrevTotal(),dto.getPrevCompleted());
         vo.setPrevCompletedRate(prevRate);
         vo.setCompare(vo.getCurrentCompletedRate() - prevRate);
+
         return vo;
     }
 
@@ -235,15 +266,25 @@ public class AppCockpitServiceImpl implements AppCockpitService {
      */
     private AppOverviewItemVo computeGa38(int total, int completed, int currentCompleted, int prevCompleted) {
         AppOverviewItemVo vo = new AppOverviewItemVo();
-        if (ObjectUtil.equal(total, 0)) {
-            vo.setCurrentCompletedRate(1F);
-        } else {
-            vo.setCurrentCompletedRate(((float) completed) / total);
-        }
-
+        vo.setCurrentCompletedRate(computeRate(total,completed));
         vo.setCompare(((float) currentCompleted) - prevCompleted);
         vo.setCurrentCompletedCount(currentCompleted);
         return vo;
     }
 
+    /**
+     * 计算比例
+     * @param total
+     * @param divisor
+     * @return
+     */
+    private float computeRate(Integer total,Integer divisor){
+        if (ObjectUtil.equal(total, 0) || ObjectUtil.isNull(total)) {
+            return 1F;
+        } else if (ObjectUtil.equal(divisor, 0) || ObjectUtil.isNull(divisor)) {
+            return  0F;
+        } else {
+            return (divisor.floatValue() / total.floatValue());
+        }
+    }
 }

+ 2 - 2
soc-modules/soc-modules-core/src/main/resources/mapper/board/AppCockpitMapper.xml

@@ -105,7 +105,7 @@
           and org_path like concat(#{orgPath}, '%')
     </select>
 
-    <select id="selectOrgBaseInfo">
+    <select id="selectOrgBaseInfo" resultType="com.xunmei.core.board.dto.app.AppOrgBaseInfoDto">
         SELECT
             count(0) as total,
             sum(if(oh.org_id is null,1,0)) as unreachedCount,
@@ -140,7 +140,7 @@
                             GROUP BY org_id) oh ON o.id = oh.org_id
                 LEFT JOIN sys_org_extend oe on o.id=oe.org_id
         WHERE
-            o.deleted = 0 and org_path like concat(#{orgPath}, '%')
+            o.deleted = 0 and path like concat(#{orgPath}, '%')
           AND (
                     o.type = 4
                 OR o.type = 5)