|  | @@ -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());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |