|
|
@@ -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;
|
|
|
@@ -56,6 +54,12 @@ public class AppCockpitServiceImpl implements AppCockpitService {
|
|
|
@Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
|
|
|
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
|
|
|
|
|
+ /**
|
|
|
+ * 履职排名
|
|
|
+ *
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@Override
|
|
|
public List<AppTaskRankingVo> taskRanking(AppTaskRankingDto dto) {
|
|
|
DateRange range = DateUtils.getStartAndEnd(dto.getMonth(), CycleCommonEnum.MONTHLY);
|
|
|
@@ -104,9 +108,59 @@ public class AppCockpitServiceImpl implements AppCockpitService {
|
|
|
return r;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 基础信息
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@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;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -192,36 +246,44 @@ public class AppCockpitServiceImpl implements AppCockpitService {
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public AppSyntheticResumptionVo syntheticResumption(Date month) {
|
|
|
+ return new AppSyntheticResumptionVo();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AppSyntheticQuestionVo syntheticQuestion(Date month) {
|
|
|
+ return new AppSyntheticQuestionVo();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AppSyntheticSafetycheckVo syntheticSafetyCheck(Date month) {
|
|
|
+ return new AppSyntheticSafetycheckVo();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AppSyntheticOtherVo syntheticOther(Date month) {
|
|
|
+ return new AppSyntheticOtherVo();
|
|
|
+ }
|
|
|
+
|
|
|
private AppOverviewItemVo computeOverviewItem(AppOverviewTaskInfoDto dto) {
|
|
|
|
|
|
AppOverviewItemVo vo = new AppOverviewItemVo();
|
|
|
- if(ObjectUtil.isNull(dto)){
|
|
|
+ if (ObjectUtil.isNull(dto)) {
|
|
|
vo.setShouldComplete(0);
|
|
|
vo.setCurrentCompletedCount(0);
|
|
|
vo.setCurrentCompletedRate(0F);
|
|
|
vo.setCompare(0F);
|
|
|
-
|
|
|
- return vo;
|
|
|
+
|
|
|
+ return vo;
|
|
|
}
|
|
|
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 +297,26 @@ 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());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|