diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/common/helper/impl/UserInfoHelperImpl.java b/hz-pm-api/src/main/java/com/hz/pm/api/common/helper/impl/UserInfoHelperImpl.java index 163a405..db66c56 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/common/helper/impl/UserInfoHelperImpl.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/common/helper/impl/UserInfoHelperImpl.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.model.constant.BizConst; -import com.hz.pm.api.common.util.BizUtils; import com.hz.pm.api.common.util.StrUtils; import com.hz.pm.api.sys.mapper.RoleMapper; import com.hz.pm.api.sys.model.entity.Role; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/common/util/TagUtil.java b/hz-pm-api/src/main/java/com/hz/pm/api/common/util/TagUtil.java index ea012f3..b547ef2 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/common/util/TagUtil.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/common/util/TagUtil.java @@ -2,7 +2,6 @@ package com.hz.pm.api.common.util; import cn.hutool.core.collection.CollUtil; import com.hz.pm.api.expert.model.TagFieldInfo; -import org.apache.commons.collections4.CollectionUtils; import java.util.Comparator; import java.util.List; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/controller/DashboardController.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/controller/DashboardController.java deleted file mode 100644 index 67f5b43..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/controller/DashboardController.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.hz.pm.api.dashboard.controller; - -import com.ningdatech.log.annotation.WebLog; -import com.hz.pm.api.dashboard.manage.CockpitStatsManage; -import com.hz.pm.api.dashboard.manage.DashboardProjectManage; -import com.hz.pm.api.dashboard.model.dto.CockpitStatsSaveDTO; -import com.hz.pm.api.dashboard.model.po.QueryYearPO; -import com.hz.pm.api.dashboard.model.vo.*; -import com.hz.pm.api.scheduler.task.CockpitStatsStatisticsTask; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; -import java.net.UnknownHostException; -import java.util.List; - -/** - * @author liuxinxin - * @date 2023/8/2 上午10:36 - */ - -@RestController -@RequestMapping("/api/v1/dashboard") -@Validated -@RequiredArgsConstructor -@Api(value = "DashboardController", tags = "驾驶舱相关接口") -public class DashboardController { - - private final DashboardProjectManage dashboardProjectManage; - - private final CockpitStatsManage cockpitStatsManage; - - private final CockpitStatsStatisticsTask cockpitStatsStatisticsTask; - - @PostMapping("project-summary") - @ApiOperation("驾驶舱项目总览") - @WebLog("驾驶舱项目总览") - public DashboardProjectSummaryVO getProjectSummary(@Valid @RequestBody QueryYearPO queryYearPO) { - return dashboardProjectManage.getProjectSummary(queryYearPO); - } - - @PostMapping("project-cnt-summary") - @ApiOperation("驾驶舱项目数量") - @WebLog("驾驶舱项目数量") - public DashboardProjectCntSummaryVO getProjectCntSummary(@Valid @RequestBody QueryYearPO queryYearPO) { - return dashboardProjectManage.getProjectCntSummary(queryYearPO); - } - - @PostMapping("investment-summary") - @ApiOperation("驾驶舱投资金额") - @WebLog("驾驶舱投资金额") - public DashboardInvestmentSummaryVO getInvestmentSummary(@Valid @RequestBody QueryYearPO queryYearPO) { - return dashboardProjectManage.getInvestmentSummary(queryYearPO); - } - - @GetMapping("/project-portrait/{projectCode}") - @ApiOperation("驾驶舱-项目画像接口") - public DashboardProjectProtraitVO getProjectPortrait(@PathVariable String projectCode) { - return dashboardProjectManage.getProjectPortrait(projectCode); - } - - @GetMapping("cockpit-stats") - @ApiOperation("驾驶舱-统计数据接口") - public CockpitStatsVO getData(@RequestParam(required = false) String regionCode, - @RequestParam(required = false) Integer year) { - return cockpitStatsManage.getData(regionCode,year); - } - - @GetMapping("cockpit-stats-start") - @ApiOperation("驾驶舱-统计数据接口 强制运行任务") - public String statsStart() throws UnknownHostException { - cockpitStatsStatisticsTask.doTask(); - return "运行成功"; - } - - @PostMapping("cockpit-stats-save") - @ApiOperation("驾驶舱-统计数据接口 假数据保存") - public String statsSave(@RequestBody List saves) { - cockpitStatsManage.save(saves); - return "保存成功"; - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/controller/StatisticsController.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/controller/StatisticsController.java index 546e8d3..e496120 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/controller/StatisticsController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/controller/StatisticsController.java @@ -1,7 +1,11 @@ package com.hz.pm.api.dashboard.controller; -import com.hz.pm.api.dashboard.manage.*; -import com.hz.pm.api.dashboard.model.vo.*; +import com.hz.pm.api.dashboard.manage.ExpertStatisticsManage; +import com.hz.pm.api.dashboard.manage.FundStatisticsManage; +import com.hz.pm.api.dashboard.manage.ProjectCostStatisticsManage; +import com.hz.pm.api.dashboard.model.vo.CostStatisticsVO; +import com.hz.pm.api.dashboard.model.vo.ExpertStatisticsVO; +import com.hz.pm.api.dashboard.model.vo.FundStatisticsVO; import com.ningdatech.log.annotation.DataScopeQueryCheck; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -20,23 +24,13 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/v1/statistics") @Validated @RequiredArgsConstructor -@Api(value = "StatisticsController", tags = "统计") +@Api(tags = "统计") public class StatisticsController { private final FundStatisticsManage fundStatisticsManage; - private final ExpertStatisticsManage expertStatisticsManage; - - private final MeetingStatisticsManage meetingStatisticsManage; - private final ProjectCostStatisticsManage costStatisticsManage; - private final EarlyWarningStatisticsManage earlyWarningStatisticsManage; - - private final PerformanceStatisticsManage performanceStatisticsManage; - - private final ProjectStatisticsManage projectStatisticsManage; - @DataScopeQueryCheck @GetMapping("/fund") @ApiOperation("项目资金统计") @@ -52,37 +46,11 @@ public class StatisticsController { } @DataScopeQueryCheck - @GetMapping("/meeting") - @ApiOperation("评审会议统计") - public MeetingStatisticsVO meeting(@RequestParam(required = false) Integer year) { - return meetingStatisticsManage.statistics(year); - } - - @DataScopeQueryCheck @GetMapping("/project-cost") @ApiOperation("项目成本统计") public CostStatisticsVO projectCost() { return costStatisticsManage.statistics(); } - @DataScopeQueryCheck - @GetMapping("/early-warning") - @ApiOperation("预警统计") - public EarlyWarningStatisticsVO earlyWarning(@RequestParam(required = false) Integer year) { - return earlyWarningStatisticsManage.statistics(year); - } - - @DataScopeQueryCheck - @GetMapping("/performance") - @ApiOperation("绩效统计") - public PerformanceStatisticsVO performance(@RequestParam(required = false) Integer year) { - return performanceStatisticsManage.statistics(year); - } - @DataScopeQueryCheck - @GetMapping("/project") - @ApiOperation("项目统计") - public ProjectStatisticsVO project(@RequestParam(required = false) Integer year) { - return projectStatisticsManage.statistics(year); - } } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/helper/DashboardChartAssembler.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/helper/DashboardChartAssembler.java deleted file mode 100644 index 4695d66..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/helper/DashboardChartAssembler.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.hz.pm.api.dashboard.helper; - -import cn.hutool.core.collection.CollUtil; -import com.hz.pm.api.dashboard.constant.ChartTypeEnum; -import com.hz.pm.api.dashboard.model.basic.AnalysisChart; -import com.hz.pm.api.dashboard.model.basic.AnalysisData; -import com.hz.pm.api.meta.helper.DictionaryCache; -import com.hz.pm.api.projectlib.model.entity.Project; -import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -/** - * @author liuxinxin - * @date 2023/8/4 下午2:36 - */ - -@Component -@RequiredArgsConstructor -public class DashboardChartAssembler { - - private final DictionaryCache dictionaryCache; - - - public static AnalysisChart buildProjectStateAnalysisChart(Map> projectGroupMap, ChartTypeEnum chartTypeEnum) { - AnalysisChart analysisChart = new AnalysisChart(); - List dataList = new ArrayList<>(); - analysisChart.setChartType(chartTypeEnum); - analysisChart.setDataList(dataList); - for (Map.Entry> entry : projectGroupMap.entrySet()) { - AnalysisData analysisData = new AnalysisData(); - String chartKey = ProjectStatusEnum.getDesc(entry.getKey()); - analysisData.setKey(chartKey); - analysisData.setValue(CollUtil.size(entry.getValue())); - dataList.add(analysisData); - } - return analysisChart; - } - - public static AnalysisChart buildInvestmentAnalysisChart(Map keyValueMap - , Map> projectGroupMap, ChartTypeEnum chartTypeEnum) { - AnalysisChart analysisChart = new AnalysisChart(); - List dataList = new ArrayList<>(); - analysisChart.setChartType(chartTypeEnum); - analysisChart.setDataList(dataList); - for (T key : keyValueMap.keySet()) { - AnalysisData analysisData = new AnalysisData(); - String chartKey = keyValueMap.get(key); - List projectList = projectGroupMap.get(key); - - BigDecimal approvedTotalInvestmentIncreaseSum = new BigDecimal("0"); - if (CollUtil.isNotEmpty(projectList)) { - for (Project project : projectList) { - BigDecimal approvedTotalInvestmentIncrease = project.getApprovedTotalInvestmentIncrease(); - if (Objects.nonNull(approvedTotalInvestmentIncrease)) { - approvedTotalInvestmentIncreaseSum.add(approvedTotalInvestmentIncrease); - } - } - } - analysisData.setKey(chartKey); - analysisData.setValue(approvedTotalInvestmentIncreaseSum); - dataList.add(analysisData); - } - return analysisChart; - } - - public static AnalysisChart buildAnalysisChart(Map keyValueMap - , Map> projectGroupMap, ChartTypeEnum chartTypeEnum) { - AnalysisChart analysisChart = new AnalysisChart(); - List dataList = new ArrayList<>(); - analysisChart.setChartType(chartTypeEnum); - analysisChart.setDataList(dataList); - for (T key : keyValueMap.keySet()) { - AnalysisData analysisData = new AnalysisData(); - String chartKey = keyValueMap.get(key); - List projectList = projectGroupMap.get(key); - analysisData.setKey(chartKey); - analysisData.setValue(CollUtil.isEmpty(projectList) ? 0 : projectList.size()); - dataList.add(analysisData); - } - return analysisChart; - } - - public static AnalysisChart buildAnalysisChartString(Map keyValueMap - , Map> projectGroupMap, ChartTypeEnum chartTypeEnum) { - AnalysisChart analysisChart = new AnalysisChart(); - List dataList = new ArrayList<>(); - analysisChart.setChartType(chartTypeEnum); - analysisChart.setDataList(dataList); - for (T key : keyValueMap.keySet()) { - AnalysisData analysisData = new AnalysisData(); - String chartKey = keyValueMap.get(key); - List projectList = projectGroupMap.get(key); - analysisData.setKey(chartKey); - analysisData.setValue(CollUtil.isEmpty(projectList) ? 0 : projectList.size()); - dataList.add(analysisData); - } - return analysisChart; - } - - public AnalysisChart assemblerAnalysisChart(Map> dictionaryCodeIdMap - , ChartTypeEnum chartTypeEnum) { - AnalysisChart analysisChart = new AnalysisChart(); - List dataList = new ArrayList<>(); - analysisChart.setChartType(chartTypeEnum); - analysisChart.setDataList(dataList); - - for (String dictionaryCode : dictionaryCodeIdMap.keySet()) { - AnalysisData analysisData = new AnalysisData(); - analysisData.setKey(dictionaryCache.getByCode(dictionaryCode).get().getName()); - analysisData.setValue(dictionaryCodeIdMap.get(dictionaryCode).size()); - dataList.add(analysisData); - } - return analysisChart; - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/helper/DashboardHelper.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/helper/DashboardHelper.java deleted file mode 100644 index e7f6c8c..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/helper/DashboardHelper.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.hz.pm.api.dashboard.helper; - -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.hz.pm.api.dashboard.constant.AnalysisBasicConstant; -import com.hz.pm.api.sys.model.entity.Region; -import com.hz.pm.api.sys.service.IRegionService; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author liuxinxin - * @date 2023/8/3 下午3:13 - */ - -@Component -@RequiredArgsConstructor -public class DashboardHelper { - - private final IRegionService iRegionService; - - /** - * 获取丽水区域相关信息 - */ - public Map getLiShuiRegionCodeNameMap() { - List regionList = iRegionService.list(Wrappers.lambdaQuery(Region.class) - .eq(Region::getParentCode, AnalysisBasicConstant.LS_REGION_CODE)); - return regionList.stream().collect(Collectors.toMap(Region::getRegionCode, Region::getRegionName)); - } - - /** - * 获取增补情况键值表 - */ - public Map getTemporaryAugmentMap() { -// 0:否 1:是 - Map map = new HashMap<>(); - map.put(1, "增补项目"); - map.put(0, "非增补项目"); - return map; - } - - - /** - * 获取项目类型键值表 - */ - public Map getProjectTypeMap() { - // "项目类型 1:建设 2:运维 - Map map = new HashMap<>(); - map.put(1, "建设"); - map.put(2, "运维"); - return map; - } - - /** - * 获取项目类型键值表 - */ - public Map getBizDomainMap() { - // 综合业务领域 1: '党政机关整体智治',2: '数字政府',3: '数字经济',4: '数字社会',7: '数字文化',5: '数字法治',6: '一体化智能化公共数据平台', 8: '基层智治' - Map map = new HashMap<>(); - map.put(1, "党政机关整体智治"); - map.put(2, "数字政府"); - map.put(3, "数字经济"); - map.put(4, "数字社会"); - map.put(5, "数字文化"); - map.put(6, "数字法治"); - map.put(7, "一体化智能化公共数据平台"); - map.put(8, "基层智治"); - return map; - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/DashboardExpertManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/DashboardExpertManage.java deleted file mode 100644 index 34b6d30..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/DashboardExpertManage.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.hz.pm.api.dashboard.manage; - -import cn.hutool.core.collection.CollectionUtil; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.hz.pm.api.dashboard.constant.ChartTypeEnum; -import com.hz.pm.api.dashboard.helper.DashboardChartAssembler; -import com.hz.pm.api.dashboard.helper.DashboardHelper; -import com.hz.pm.api.dashboard.model.basic.AnalysisChart; -import com.hz.pm.api.dashboard.model.basic.AnalysisData; -import com.hz.pm.api.dashboard.model.basic.StarExpertBO; -import com.hz.pm.api.dashboard.model.po.QueryYearPO; -import com.hz.pm.api.dashboard.model.vo.ExpertDashboardSummaryVO; -import com.hz.pm.api.expert.constant.ExpertUserInfoStepEnum; -import com.hz.pm.api.expert.entity.ExpertUserFullInfo; -import com.hz.pm.api.expert.service.IExpertUserFullInfoService; -import com.hz.pm.api.meeting.entity.domain.Meeting; -import com.hz.pm.api.meeting.entity.domain.MeetingExpertJudge; -import com.hz.pm.api.meeting.entity.enumeration.MeetingStatusEnum; -import com.hz.pm.api.meeting.service.IMeetingExpertJudgeService; -import com.hz.pm.api.meeting.service.IMeetingService; -import com.hz.pm.api.meta.constant.ExpertDictTypeEnum; -import com.hz.pm.api.meta.model.entity.ExpertDictionary; -import com.hz.pm.api.meta.service.IExpertDictionaryService; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; - -/** - * @author liuxinxin - * @date 2023/8/2 上午10:39 - */ - -@Component -@RequiredArgsConstructor -public class DashboardExpertManage { - - private final DashboardHelper dashboardHelper; - private final IExpertUserFullInfoService iExpertUserFullInfoService; - private final IMeetingService iMeetingService; - private final IMeetingExpertJudgeService iMeetingExpertJudgeService; - private final IExpertDictionaryService iExpertDictionaryService; - private final DashboardChartAssembler dashboardChartAssembler; - - - public ExpertDashboardSummaryVO getExpertDashboardSummary(QueryYearPO queryYearPO) { - String queryRegionCode = queryYearPO.getRegionCode(); - List analysisChartList = new ArrayList<>(); - - // 获取丽水区域 code name Map - Map liShuiRegionCodeNameMap = dashboardHelper.getLiShuiRegionCodeNameMap(); - // 获取库内所有的专家列表 - List evidenceHasBeenSubmittedExpertInfoList = iExpertUserFullInfoService.list(); - - // 专家regionCode分组map列表 - Map> regionCodeExpertMap = Collections.emptyMap(); - - // 各区域专家数量 - AnalysisChart regionExpertNumberChartAnalysisChart = new AnalysisChart(); - List regionExpertNumberChartDataList = new ArrayList<>(); - regionExpertNumberChartAnalysisChart.setChartType(ChartTypeEnum.REGION_EXPERT_NUMBER_CHART); - regionExpertNumberChartAnalysisChart.setDataList(regionExpertNumberChartDataList); - for (String regionCode : liShuiRegionCodeNameMap.keySet()) { - AnalysisData analysisData = new AnalysisData(); - String regionName = liShuiRegionCodeNameMap.get(regionCode); - List expertUserFullInfoList = regionCodeExpertMap.get(regionCode); - int expertCnt = 0; - if (CollectionUtil.isNotEmpty(expertUserFullInfoList)) { - expertCnt = expertUserFullInfoList.size(); - } - analysisData.setKey(regionName); - analysisData.setValue(expertCnt); - regionExpertNumberChartDataList.add(analysisData); - } - analysisChartList.add(regionExpertNumberChartAnalysisChart); - - // 查询区域的专家id 列表 - List regionDegreeExpertIdList = new ArrayList<>(); - if (StringUtils.isNotBlank(queryRegionCode)) { - List expertUserFullInfoList = regionCodeExpertMap.get(queryRegionCode); - if (CollectionUtil.isNotEmpty(expertUserFullInfoList)) { - regionDegreeExpertIdList = expertUserFullInfoList.stream() - .map(ExpertUserFullInfo::getUserId) - .collect(Collectors.toList()); - } - } else { - regionDegreeExpertIdList = evidenceHasBeenSubmittedExpertInfoList.stream() - .map(ExpertUserFullInfo::getUserId) - .collect(Collectors.toList()); - } - - if (CollectionUtil.isNotEmpty(regionDegreeExpertIdList)) { - // 区域学历分布 - List degreeExpertDictionaryList = iExpertDictionaryService - .listByUserId(regionDegreeExpertIdList, ExpertDictTypeEnum.DEGREE); - Map> degreeCodeMap = degreeExpertDictionaryList.stream() - .map(ExpertDictionary::getDictionaryCode) - .collect(Collectors.groupingBy(Function.identity())); - AnalysisChart regionExpertEducationChartAnalysisChart = - dashboardChartAssembler.assemblerAnalysisChart(degreeCodeMap, ChartTypeEnum.REGION_EXPERT_EDUCATION_CHART); - analysisChartList.add(regionExpertEducationChartAnalysisChart); - - // 区域职称级别分布 - List titleLevelExpertDictionaryList = iExpertDictionaryService - .listByUserId(regionDegreeExpertIdList, ExpertDictTypeEnum.TITLE_LEVEL); - Map> titleLevelCodeMap = titleLevelExpertDictionaryList.stream() - .collect(Collectors.groupingBy(ExpertDictionary::getDictionaryCode)); - AnalysisChart regionExpertTitleLevelChartAnalysisChart = - dashboardChartAssembler.assemblerAnalysisChart(titleLevelCodeMap, ChartTypeEnum.REGION_EXPERT_TITLE_LEVEL_CHART); - analysisChartList.add(regionExpertTitleLevelChartAnalysisChart); - } - - // 评审次数 - List normalMeetingList = iMeetingService.list(Wrappers.lambdaQuery(Meeting.class) - .ne(Meeting::getStatus, MeetingStatusEnum.CANCELED.getCode())); - Integer meetingCnt = normalMeetingList.size(); - - // 各类型评审次数 - Map> meetingTypeMap = normalMeetingList.stream().collect(Collectors.groupingBy(Meeting::getType)); - AnalysisChart meetingTypeCntChartAnalysisChart = - dashboardChartAssembler.assemblerAnalysisChart(meetingTypeMap, ChartTypeEnum.MEETING_TYPE_CNT_CHART); - analysisChartList.add(meetingTypeCntChartAnalysisChart); - - // 明星专家列表 - List starExpertList = new ArrayList<>(); - List meetingExpertJudgeList = iMeetingExpertJudgeService.list(); - Map> expertIdMeetingExpertJudgeMap = meetingExpertJudgeList.stream() - .collect(Collectors.groupingBy(MeetingExpertJudge::getExpertId)); - Map expertIdExpertNameMap = evidenceHasBeenSubmittedExpertInfoList.stream() - .collect(Collectors.toMap(ExpertUserFullInfo::getUserId, ExpertUserFullInfo::getExpertName)); - - for (Long expertId : expertIdMeetingExpertJudgeMap.keySet()) { - String expertName = expertIdExpertNameMap.get(expertId); - List expertMeetingExpertJudgeList = expertIdMeetingExpertJudgeMap.get(expertId); - DoubleSummaryStatistics statistics = expertMeetingExpertJudgeList - .stream().filter(r -> Objects.nonNull(r.getScore())) - .map(MeetingExpertJudge::getScore).mapToDouble(Number::doubleValue).summaryStatistics(); - double average = statistics.getAverage(); - StarExpertBO starExpertBO = new StarExpertBO(); - starExpertBO.setAveragePerformanceScore(average); - starExpertBO.setExpertId(expertId); - starExpertBO.setExpertName(expertName); - starExpertList.add(starExpertBO); - } - starExpertList = starExpertList.stream() - .sorted(Comparator.comparing(StarExpertBO::getAveragePerformanceScore) - .reversed()).collect(Collectors.toList()); - if (starExpertList.size() > 5) { - starExpertList = starExpertList.subList(0, 5); - } - - // 装配返回类 - ExpertDashboardSummaryVO expertDashboardSummaryVO = new ExpertDashboardSummaryVO(); - expertDashboardSummaryVO.setMeetingCnt(meetingCnt); - expertDashboardSummaryVO.setStarExpertList(starExpertList); - expertDashboardSummaryVO.setAnalysisChartList(analysisChartList); - return expertDashboardSummaryVO; - } - -} - diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/DashboardProjectManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/DashboardProjectManage.java deleted file mode 100644 index 607207a..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/DashboardProjectManage.java +++ /dev/null @@ -1,549 +0,0 @@ -package com.hz.pm.api.dashboard.manage; - -import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.google.common.collect.Lists; -import com.hz.pm.api.common.model.constant.BizConst; -import com.hz.pm.api.dashboard.constant.ChartTypeEnum; -import com.hz.pm.api.dashboard.constant.DashboardConstant.Protrait; -import com.hz.pm.api.dashboard.handle.ApplicationHandler; -import com.hz.pm.api.dashboard.handle.ProjectStatusHandler; -import com.hz.pm.api.dashboard.helper.DashboardChartAssembler; -import com.hz.pm.api.dashboard.helper.DashboardHelper; -import com.hz.pm.api.dashboard.model.basic.AnalysisChart; -import com.hz.pm.api.dashboard.model.basic.CompanyProjectCntBO; -import com.hz.pm.api.dashboard.model.basic.ProjectATIISBO; -import com.hz.pm.api.dashboard.model.po.QueryYearPO; -import com.hz.pm.api.dashboard.model.vo.*; -import com.hz.pm.api.gov.model.entity.GovBizProjectApply; -import com.hz.pm.api.gov.model.entity.GovBizProjectBaseinfo; -import com.hz.pm.api.gov.model.entity.GovOperationProjectBaseinfo; -import com.hz.pm.api.gov.service.IGovBizProjectApplyService; -import com.hz.pm.api.gov.service.IGovBizProjectBaseinfoService; -import com.hz.pm.api.gov.service.IGovOperationProjectBaseinfoService; -import com.hz.pm.api.portrait.service.IProjectTagService; -import com.hz.pm.api.projectdeclared.model.entity.Purchase; -import com.hz.pm.api.projectdeclared.service.IPurchaseService; -import com.hz.pm.api.projectlib.model.entity.Project; -import com.hz.pm.api.projectlib.model.entity.ProjectDelayApply; -import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; -import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; -import com.hz.pm.api.projectlib.service.INdProjectDelayApplyService; -import com.hz.pm.api.projectlib.service.IProjectService; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.*; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ForkJoinPool; -import java.util.stream.Collectors; - -/** - * @author liuxinxin - * @date 2023/8/2 上午10:39 - */ - -@Component -@RequiredArgsConstructor -public class DashboardProjectManage { - - private final IProjectService iProjectService; - - private final IGovBizProjectBaseinfoService baseinfoService; - - private final IGovBizProjectApplyService applyService; - - - private final IGovOperationProjectBaseinfoService operationBaseService; - private final INdProjectDelayApplyService iProjectDelayApplyService; - private final DashboardHelper dashboardHelper; - private final IPurchaseService iPurchaseService; - - private final ProjectStatusHandler statusHandler; - - private final IProjectTagService projectTagService; - - private final ApplicationHandler applicationHandler; - - public DashboardProjectSummaryVO getProjectSummary(QueryYearPO queryYearPO) { - // 预算年度 - Integer year = queryYearPO.getYear(); - String regionCode = queryYearPO.getRegionCode(); - List allProjectWithRepeatList = iProjectService.list(Wrappers.lambdaQuery(Project.class) - .eq(Objects.nonNull(year), Project::getProjectYear, year) - .eq(StringUtils.isNotBlank(regionCode), Project::getAreaCode, regionCode) - ); - List allProjectList = allProjectWithRepeatList.stream() - .filter(r -> r.getNewest()).collect(Collectors.toList()); - - List allProjectIdWithRepeatList = allProjectWithRepeatList.stream().map(Project::getId).collect(Collectors.toList()); - - // 项目总数 - Integer projectCnt = allProjectList.size(); - - // 待立项项目数 - List toBeApprovedProjectList = allProjectList.stream() - .filter(r -> ProjectStatusEnum.TO_BE_APPROVED.getCode().equals(r.getStatus())) - .collect(Collectors.toList()); - Integer toBeApprovedProjectCnt = toBeApprovedProjectList.size(); - - // 已立项项目数 - Integer approvedProjectCnt = projectCnt - toBeApprovedProjectCnt; - - // 项目立项率 - Double projectApprovalRate = BigDecimal.valueOf((float) approvedProjectCnt / projectCnt).setScale(2, RoundingMode.HALF_UP).doubleValue(); - - // 项目申报总金额 - List declareAmountList = allProjectList.stream().map(Project::getDeclareAmount) - .filter(Objects::nonNull). - collect(Collectors.toList()); - BigDecimal declareAmountSum = new BigDecimal("0"); - for (BigDecimal declareAmount : declareAmountList) { - declareAmountSum.add(declareAmount); - } - - // 项目批复总金额 - List approvedTotalInvestmentIncreaseList = allProjectList.stream().map(Project::getApprovedTotalInvestmentIncrease) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - BigDecimal approvedTotalInvestmentIncreaseSum = new BigDecimal("0"); - for (BigDecimal approvedTotalInvestmentIncrease : approvedTotalInvestmentIncreaseList) { - approvedTotalInvestmentIncreaseSum.add(approvedTotalInvestmentIncrease); - } - - // 资金核定率 - BigDecimal fundApprovalRate = new BigDecimal("0"); - if (new BigDecimal("0").compareTo(approvedTotalInvestmentIncreaseSum) != 0) { - fundApprovalRate = declareAmountSum.divide(approvedTotalInvestmentIncreaseSum, 2, RoundingMode.HALF_UP); - } - - - // 项目采购总金额 - BigDecimal projectProcurementTotalAmount = new BigDecimal("0"); - List purchaseList = iPurchaseService.list(Wrappers.lambdaQuery(Purchase.class) - .in(Purchase::getProjectId, allProjectIdWithRepeatList)); - for (Purchase purchase : purchaseList) { - BigDecimal transactionAmount = purchase.getTransactionAmount(); - if (Objects.nonNull(transactionAmount)) { - projectProcurementTotalAmount.add(transactionAmount); - } - } - -// 项目画像 - - // 延期项目数 延期占比 - List projectDelayApplyList = iProjectDelayApplyService - .list(Wrappers.lambdaQuery(ProjectDelayApply.class) - .in(ProjectDelayApply::getProjectId, allProjectIdWithRepeatList)); - Map> projectDelayApplyListMap = projectDelayApplyList.stream().collect(Collectors.groupingBy(ProjectDelayApply::getProjectId)); - Integer delayProjectCnt = projectDelayApplyListMap.keySet().size(); - Double delayProportion = BigDecimal.valueOf((float) delayProjectCnt / projectCnt).setScale(2, RoundingMode.HALF_UP).doubleValue(); - - // 项目变更数量 项目变更金额 - List changedProjectList = new ArrayList<>(); - Map> allProjectMap = allProjectWithRepeatList.stream().collect(Collectors.groupingBy(Project::getProjectCode)); - for (String projectCode : allProjectMap.keySet()) { - List projectList = allProjectMap.get(projectCode); - Project newestProject = projectList.stream() - .filter(Project::getNewest) - .collect(Collectors.toList()).get(0); - boolean isChanged = false; - for (Project project : projectList) { - Boolean newest = project.getNewest(); - boolean isBackReject = project.getIsBackReject(); - if (!newest && isBackReject) { - isChanged = true; - break; - } - } - if (isChanged) { - changedProjectList.add(newestProject); - } - } - Integer changedProjectCnt = changedProjectList.size(); - - // 项目变更金额 - BigDecimal changedProjectContractAmountSum = new BigDecimal("0"); - for (Project project : changedProjectList) { - BigDecimal contractAmount = project.getContractAmount(); - if (Objects.nonNull(contractAmount)) { - changedProjectContractAmountSum.add(contractAmount); - } - } - - // 装配返回VO - DashboardProjectSummaryVO dashboardProjectSummaryVO = new DashboardProjectSummaryVO(); - dashboardProjectSummaryVO.setProjectCnt(projectCnt); - dashboardProjectSummaryVO.setApprovedProjectCnt(approvedProjectCnt); - dashboardProjectSummaryVO.setToBeApprovedProjectCnt(toBeApprovedProjectCnt); - dashboardProjectSummaryVO.setProjectApprovalRate(projectApprovalRate); - dashboardProjectSummaryVO.setDeclareAmountSum(declareAmountSum); - dashboardProjectSummaryVO.setApprovedTotalInvestmentIncreaseSum(approvedTotalInvestmentIncreaseSum); - - dashboardProjectSummaryVO.setDelayProjectCnt(delayProjectCnt); - dashboardProjectSummaryVO.setDelayProportion(delayProportion); - dashboardProjectSummaryVO.setChangedProjectCnt(changedProjectCnt); - dashboardProjectSummaryVO.setChangedProjectContractAmountSum(changedProjectContractAmountSum); - dashboardProjectSummaryVO.setFundApprovalRate(fundApprovalRate); - return dashboardProjectSummaryVO; - } - - public DashboardProjectCntSummaryVO getProjectCntSummary(QueryYearPO req) { - // 预算年度 - Integer year = req.getYear(); - List allProjectList = iProjectService.list(Wrappers.lambdaQuery(Project.class) - .eq(Project::getNewest, true) - .eq(Objects.nonNull(year), Project::getProjectYear, year)); - - // 单位项目数量TOP5 - List companyProjectCntTop5List = new ArrayList<>(); - Map> buildOrgNameProjectGroupMap = allProjectList.stream() - .collect(Collectors.groupingBy(Project::getBuildOrgName)); - for (String buildOrgName : buildOrgNameProjectGroupMap.keySet()) { - List projectList = buildOrgNameProjectGroupMap.get(buildOrgName); - CompanyProjectCntBO companyProjectCntBO = new CompanyProjectCntBO(); - companyProjectCntBO.setBuildOrgName(buildOrgName); - companyProjectCntBO.setProjectCnt(projectList.size()); - companyProjectCntTop5List.add(companyProjectCntBO); - } - companyProjectCntTop5List.sort(Comparator.comparing(CompanyProjectCntBO::getProjectCnt).reversed()); - if (companyProjectCntTop5List.size() > 5) { - companyProjectCntTop5List = companyProjectCntTop5List.subList(0, 5); - } - - // 项目增补情况 - Map> isTemporaryAugmentGroupMap = allProjectList.stream() - .collect(Collectors.groupingBy(Project::getIsTemporaryAugment)); - Map temporaryAugmentMap = dashboardHelper.getTemporaryAugmentMap(); - AnalysisChart isTemporaryAugmentAnalysisChart = DashboardChartAssembler.buildAnalysisChart(temporaryAugmentMap, isTemporaryAugmentGroupMap - , ChartTypeEnum.PROJECT_SUPPLEMENTATION_STATUS_CHART); - - // 各类型项目数量 - Map> projectTypeGroupMap = allProjectList.stream() - .collect(Collectors.groupingBy(Project::getProjectType)); - Map projectTypeMap = dashboardHelper.getTemporaryAugmentMap(); - AnalysisChart projectTypeAnalysisChart = DashboardChartAssembler.buildAnalysisChartString(projectTypeMap, projectTypeGroupMap - , ChartTypeEnum.EACH_TYPE_QUANTITY_OF_PROJECT_CHART); - - // 各区域项目数量 - Map> areaCodeGroupMap = allProjectList.stream() - .collect(Collectors.groupingBy(Project::getAreaCode)); - Map liShuiRegionCodeNameMap = dashboardHelper.getLiShuiRegionCodeNameMap(); - AnalysisChart areaCodeAnalysisChart = DashboardChartAssembler.buildAnalysisChart(liShuiRegionCodeNameMap, areaCodeGroupMap - , ChartTypeEnum.PROJECTS_NUMBER_IN_EACH_REGION_CHART); - - // 各领域项目数量 - Map> bizDomainGroupMap = allProjectList.stream() - .collect(Collectors.groupingBy(Project::getBizDomain)); - Map bizDomainMap = dashboardHelper.getBizDomainMap(); - AnalysisChart bizDomainAnalysisChart = DashboardChartAssembler.buildAnalysisChart(bizDomainMap, bizDomainGroupMap - , ChartTypeEnum.PROJECTS_NUMBER_IN_VARIOUS_FIELDS_CHART); - - // 各阶段项目数量 - Map> projectStateGroupMap = allProjectList.stream() - .collect(Collectors.groupingBy(Project::getStage)); - AnalysisChart projectStateAnalysisChart = DashboardChartAssembler - .buildProjectStateAnalysisChart(projectStateGroupMap, ChartTypeEnum.PROJECTS_NUMBER_IN_EACH_STAGE_CHART); - - DashboardProjectCntSummaryVO dashboardProjectCntSummaryVO = new DashboardProjectCntSummaryVO(); - dashboardProjectCntSummaryVO.setCompanyProjectCntTop5List(companyProjectCntTop5List); - List analysisChartList = new ArrayList<>(); - dashboardProjectCntSummaryVO.setAnalysisChartList(analysisChartList); - analysisChartList.add(isTemporaryAugmentAnalysisChart); - analysisChartList.add(projectTypeAnalysisChart); - analysisChartList.add(bizDomainAnalysisChart); - analysisChartList.add(areaCodeAnalysisChart); - analysisChartList.add(projectStateAnalysisChart); - return dashboardProjectCntSummaryVO; - } - - - public DashboardInvestmentSummaryVO getInvestmentSummary(QueryYearPO req) { - // 预算年度 - Integer year = req.getYear(); - String regionCode = req.getRegionCode(); - List allProjectList = iProjectService.list(Wrappers.lambdaQuery(Project.class) - .eq(Project::getNewest, true) - .eq(Objects.nonNull(year), Project::getProjectYear, year) - .eq(StringUtils.isNotBlank(regionCode), Project::getAreaCode, regionCode) - ); - - // 项目预算TOP5 - List projectATIISTop5List = allProjectList.stream().filter(r -> Objects.nonNull(r.getApprovedTotalInvestmentIncrease())) - .map(r -> { - ProjectATIISBO projectATIISBO = new ProjectATIISBO(); - projectATIISBO.setProjectId(r.getId()); - projectATIISBO.setProjectCode(r.getProjectCode()); - projectATIISBO.setProjectName(r.getProjectName()); - projectATIISBO.setApprovedTotalInvestmentIncrease(r.getApprovedTotalInvestmentIncrease()); - return projectATIISBO; - }).collect(Collectors.toList()); - projectATIISTop5List.sort(Comparator.comparing(ProjectATIISBO::getApprovedTotalInvestmentIncrease)); - if (projectATIISTop5List.size() > 5) { - projectATIISTop5List = projectATIISTop5List.subList(0, 5); - } - - // 单位预算TOP5 - List companyProjectATIISTop5List = new ArrayList<>(); - Map> buildOrgNameProjectGroupMap = allProjectList.stream() - .collect(Collectors.groupingBy(Project::getBuildOrgName)); - for (String buildOrgName : buildOrgNameProjectGroupMap.keySet()) { - List projectList = buildOrgNameProjectGroupMap.get(buildOrgName); - CompanyProjectCntBO companyProjectCntBO = new CompanyProjectCntBO(); - companyProjectCntBO.setBuildOrgName(buildOrgName); - BigDecimal approvedTotalInvestmentIncreaseSum = new BigDecimal("0"); - for (Project project : projectList) { - BigDecimal approvedTotalInvestmentIncrease = project.getApprovedTotalInvestmentIncrease(); - if (Objects.nonNull(approvedTotalInvestmentIncrease)) { - approvedTotalInvestmentIncreaseSum.add(approvedTotalInvestmentIncrease); - } - } - companyProjectCntBO.setApprovedTotalInvestmentIncreaseSum(approvedTotalInvestmentIncreaseSum); - companyProjectATIISTop5List.add(companyProjectCntBO); - } - companyProjectATIISTop5List.sort(Comparator.comparing(CompanyProjectCntBO::getApprovedTotalInvestmentIncreaseSum).reversed()); - if (companyProjectATIISTop5List.size() > 5) { - companyProjectATIISTop5List = companyProjectATIISTop5List.subList(0, 5); - } - - // 各领域项目投资情况 - Map> bizDomainGroupMap = allProjectList.stream() - .collect(Collectors.groupingBy(Project::getBizDomain)); - Map bizDomainMap = dashboardHelper.getBizDomainMap(); - AnalysisChart bizDomainInvestmentAnalysisChart = DashboardChartAssembler.buildInvestmentAnalysisChart(bizDomainMap, bizDomainGroupMap - , ChartTypeEnum.PROJECTS_INVESTMENT_AMOUNT_IN_VARIOUS_FIELDS_CHART); - - // 各区域项目投资情况 - Map> areaCodeGroupMap = allProjectList.stream() - .collect(Collectors.groupingBy(Project::getAreaCode)); - Map liShuiRegionCodeNameMap = dashboardHelper.getLiShuiRegionCodeNameMap(); - AnalysisChart areaCodeInvestmentAnalysisChart = DashboardChartAssembler.buildInvestmentAnalysisChart(liShuiRegionCodeNameMap, areaCodeGroupMap - , ChartTypeEnum.PROJECTS_INVESTMENT_SITUATION_IN_VARIOUS_REGIONS); - - DashboardInvestmentSummaryVO dashboardInvestmentSummaryVO = new DashboardInvestmentSummaryVO(); - dashboardInvestmentSummaryVO.setCompanyProjectATIISTop5List(companyProjectATIISTop5List); - dashboardInvestmentSummaryVO.setProjectATIISTop5List(projectATIISTop5List); - List analysisChartList = new ArrayList<>(); - dashboardInvestmentSummaryVO.setAnalysisChartList(analysisChartList); - analysisChartList.add(areaCodeInvestmentAnalysisChart); - analysisChartList.add(bizDomainInvestmentAnalysisChart); - return dashboardInvestmentSummaryVO; - } - - /** - * 驾驶舱-项目画像 - * - * @param projectCode - * @return - */ - public DashboardProjectProtraitVO getProjectPortrait(String projectCode) { - DashboardProjectProtraitVO res = new DashboardProjectProtraitVO(); - //1.先查询项目 - Project project = iProjectService.getProjectByCode(projectCode); - - GovBizProjectBaseinfo baseInfo = baseinfoService.getOne(Wrappers.lambdaQuery(GovBizProjectBaseinfo.class) - .eq(GovBizProjectBaseinfo::getBaseProjId, projectCode) - .last(BizConst.LIMIT_1)); - - GovOperationProjectBaseinfo operationBase = operationBaseService.getOne(Wrappers.lambdaQuery(GovOperationProjectBaseinfo.class) - .eq(GovOperationProjectBaseinfo::getBaseProjId, projectCode) - .last(BizConst.LIMIT_1)); - - GovBizProjectApply apply = applyService.getOne(Wrappers.lambdaQuery(GovBizProjectApply.class) - .eq(GovBizProjectApply::getBaseProjId, projectCode) - .last(BizConst.LIMIT_1)); - - if (Objects.isNull(project) && Objects.isNull(baseInfo) && Objects.isNull(operationBase)) { - return res; - } - - //2.转换项目信息 - if (Objects.nonNull(project)) { - ProtraitProjectInfoVO projectInfo = BeanUtil.copyProperties(project, ProtraitProjectInfoVO.class); - projectInfo.setOverdueSituation("即将超期"); - projectInfo.setSafetyInputRate(convertSafetyInputRate(project)); - projectInfo.setStatus(Objects.nonNull(project.getStatus()) ? project.getStatus().toString() : null); - //3.项目状态情况 - projectInfo.setStatusSituation(genProjectStatus(project)); - res.setProjectInfo(projectInfo); - } else if (Objects.nonNull(baseInfo)) { - ProtraitProjectInfoVO projectInfo = BeanUtil.copyProperties(baseInfo, ProtraitProjectInfoVO.class); - projectInfo.setOverdueSituation("即将超期"); - projectInfo.setSafetyInputRate("0"); - if (Objects.nonNull(apply)) { - try { - projectInfo.setProjectYear(Integer.valueOf(apply.getBaseProjSetYear())); - } catch (Exception ignored) { - } - projectInfo.setProjectIntroduction(apply.getBaseProjIntro()); - projectInfo.setBuildCycle(apply.getBaseProjDuration()); - projectInfo.setApprovalAmount(apply.getBaseProjTotalAmount()); - } - projectInfo.setProjectCode(projectCode); - projectInfo.setProjectName(baseInfo.getBaseProjName()); - projectInfo.setBuildOrgName(baseInfo.getBaseBuildDeprt()); - projectInfo.setBuildOrgCode(baseInfo.getBaseBuildDeprtDing()); - //3.项目状态情况 - projectInfo.setStatusSituation(genProjectStatus(baseInfo)); - projectInfo.setStatus(baseInfo.getBaseProjSetProg()); - res.setProjectInfo(projectInfo); - } else if (Objects.nonNull(operationBase)) { - ProtraitProjectInfoVO projectInfo = BeanUtil.copyProperties(operationBase, ProtraitProjectInfoVO.class); - projectInfo.setOverdueSituation("即将超期"); - projectInfo.setSafetyInputRate("0"); - if (Objects.nonNull(apply)) { - try { - projectInfo.setProjectYear(Integer.valueOf(apply.getBaseProjSetYear())); - } catch (Exception ignored) { - } - projectInfo.setProjectIntroduction(apply.getBaseProjIntro()); - projectInfo.setBuildCycle(apply.getBaseProjDuration()); - projectInfo.setApprovalAmount(apply.getBaseProjTotalAmount()); - } - projectInfo.setProjectCode(projectCode); - projectInfo.setProjectName(operationBase.getBaseProjName()); - projectInfo.setBuildOrgName(operationBase.getBaseBuildDeprt()); - projectInfo.setBuildOrgCode(operationBase.getBaseBuildDeprtDing()); - //3.项目状态情况 - projectInfo.setStatusSituation(genProjectStatus(operationBase)); - projectInfo.setStatus(operationBase.getBaseProjSetProg()); - res.setProjectInfo(projectInfo); - } - - - //4.查询项目特征 - res.setProjectFeatures(projectTagService.getProjectTas(projectCode)); - - //5.查询项目产出 - res.setProjectOutput(applicationHandler.generateOutput(projectCode)); - - return res; - } - - /** - * 计算安全投入 - * - * @param project - * @return - */ - public static String convertSafetyInputRate(Project project) { - String safetyInputDescribe = project.getSafetyInputDescribe(); - if (org.apache.commons.lang3.StringUtils.isNotBlank(safetyInputDescribe)) { - try { - JSONArray array = JSON.parseArray(safetyInputDescribe); - final Double[] total = {0.0}; - array.forEach(j -> { - JSONObject json = JSON.parseObject(JSON.toJSONString(j)); - Double safetyInputAmount = json.getDouble(Protrait.FEILD_SAFETYMONEY); - if (Objects.nonNull(safetyInputAmount)) { - total[0] += safetyInputAmount; - } - }); - Double totalAmount = total[0]; - //申报金额 - BigDecimal declareAmount = project.getDeclareAmount(); - if (Objects.isNull(declareAmount) || declareAmount.compareTo(BigDecimal.ZERO) == 0) { - return Protrait.ZREO_PERCEN; - } - BigDecimal rate = BigDecimal.valueOf(totalAmount).multiply(BigDecimal.valueOf(100)) - .divide(declareAmount, BigDecimal.ROUND_CEILING, RoundingMode.HALF_UP) - .stripTrailingZeros(); - return rate.toPlainString(); - } catch (Exception ignored) { - } - } - return Protrait.ZREO_PERCEN; - } - - /** - * 生成项目 状态流转信息 - * - * @param project - * @return - */ - private List genProjectStatus(Project project) { - final List res = Lists.newArrayList(); - //1.计划(单位内部审核) - res.add(new ProtraitProjectStatusSituationVO()); - //2.申报(项目预审) - res.add(new ProtraitProjectStatusSituationVO()); - //3.审批(建设方案审批) - res.add(new ProtraitProjectStatusSituationVO()); - //4.建设(立项后的建设中) - res.add(new ProtraitProjectStatusSituationVO()); - //5.验收(终验) - res.add(new ProtraitProjectStatusSituationVO()); - //6.运维(todo: 运维时间还没有) - res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.OPERATION).build()); - //7.绩效 - res.add(new ProtraitProjectStatusSituationVO()); - //8.注销(todo: 还没有注销功能) - res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.LOG_OFF).build()); - - CompletableFuture.allOf( - CompletableFuture.runAsync(() -> res.set(0, statusHandler.genApproveStatus(project, Protrait.PLAN, - InstTypeEnum.UNIT_INNER_AUDIT)), ForkJoinPool.commonPool()), - CompletableFuture.runAsync(() -> res.set(1, statusHandler.genApproveStatus(project, Protrait.DECLARED, - InstTypeEnum.PRELIMINARY_PREVIEW)), ForkJoinPool.commonPool()), - CompletableFuture.runAsync(() -> res.set(2, statusHandler.genApproveStatus(project, Protrait.APPROVE, - InstTypeEnum.CONSTRUCTION_PLAN_REVIEW)), ForkJoinPool.commonPool()), - CompletableFuture.runAsync(() -> res.set(3, statusHandler.genStatus(project, Protrait.CONSTRUCTION, - ProjectStatusEnum.UNDER_CONSTRUCTION, ProjectStatusEnum.TO_BE_FINALLY_INSPECTED)), ForkJoinPool.commonPool()), - CompletableFuture.runAsync(() -> res.set(4, statusHandler.genApproveStatus(project, Protrait.ACCEPT, - InstTypeEnum.PROJECT_FINAL_INSPECTION)), ForkJoinPool.commonPool()), - CompletableFuture.runAsync(() -> res.set(6, statusHandler.generatePerformanceStatus(project)), - ForkJoinPool.commonPool()) - ).join(); - return res; - } - - private List genProjectStatus(GovBizProjectBaseinfo baseinfo) { - final List res = Lists.newArrayList(); - //1.计划(单位内部审核) - res.add(new ProtraitProjectStatusSituationVO(Protrait.PLAN, null)); - //2.申报(项目预审) - res.add(new ProtraitProjectStatusSituationVO(Protrait.DECLARED, null)); - //3.审批(建设方案审批) - res.add(new ProtraitProjectStatusSituationVO(Protrait.APPROVE, null)); - //4.建设(立项后的建设中) - res.add(new ProtraitProjectStatusSituationVO(Protrait.CONSTRUCTION, null)); - //5.验收(终验) - res.add(new ProtraitProjectStatusSituationVO(Protrait.ACCEPT, - Objects.nonNull(baseinfo.getBaseProjSetProg()) && "07".equals(baseinfo.getBaseProjSetProg()) ? baseinfo.getTongTime() : null)); - //6.运维(todo: 运维时间还没有) - res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.OPERATION).build()); - //7.绩效 - res.add(new ProtraitProjectStatusSituationVO(Protrait.ACCEPT, null)); - //8.注销(todo: 还没有注销功能) - res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.LOG_OFF).build()); - return res; - } - - private List genProjectStatus(GovOperationProjectBaseinfo baseinfo) { - final List res = Lists.newArrayList(); - //1.计划(单位内部审核) - res.add(new ProtraitProjectStatusSituationVO(Protrait.PLAN, null)); - //2.申报(项目预审) - res.add(new ProtraitProjectStatusSituationVO(Protrait.DECLARED, null)); - //3.审批(建设方案审批) - res.add(new ProtraitProjectStatusSituationVO(Protrait.APPROVE, null)); - //4.建设(立项后的建设中) - res.add(new ProtraitProjectStatusSituationVO(Protrait.CONSTRUCTION, null)); - //5.验收(终验) - res.add(new ProtraitProjectStatusSituationVO(Protrait.ACCEPT, - Objects.nonNull(baseinfo.getBaseProjSetProg()) && "07".equals(baseinfo.getBaseProjSetProg()) ? baseinfo.getTongTime() : null)); - //6.运维(todo: 运维时间还没有) - res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.OPERATION).build()); - //7.绩效 - res.add(new ProtraitProjectStatusSituationVO(Protrait.ACCEPT, null)); - //8.注销(todo: 还没有注销功能) - res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.LOG_OFF).build()); - return res; - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/EarlyWarningStatisticsManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/EarlyWarningStatisticsManage.java deleted file mode 100644 index 635b48f..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/EarlyWarningStatisticsManage.java +++ /dev/null @@ -1,301 +0,0 @@ -package com.hz.pm.api.dashboard.manage; - -import cn.hutool.core.collection.CollUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.google.common.collect.Lists; -import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; -import com.hz.pm.api.common.model.entity.DataDTO; -import com.hz.pm.api.dashboard.model.vo.EarlyWarningStatisticsVO; -import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; -import com.hz.pm.api.projectlib.model.enumeration.WarningFlowTypeEnum; -import com.hz.pm.api.projectlib.model.enumeration.WarningOperationTypeEnum; -import com.hz.pm.api.projectlib.model.entity.Project; -import com.hz.pm.api.projectlib.model.entity.ProjectInst; -import com.hz.pm.api.projectlib.service.IProjectInstService; -import com.hz.pm.api.projectlib.service.IProjectService; -import com.hz.pm.api.sys.model.entity.WflowEarlyWarningRecords; -import com.hz.pm.api.sys.service.IEarlyWarningRecordsService; -import com.hz.pm.api.sys.utils.EarlyWarningUtil; -import com.hz.pm.api.user.security.model.UserInfoDetails; -import com.hz.pm.api.user.util.LoginUserUtil; -import com.wflow.enums.WarningNoticeTypeEnum; -import com.wflow.enums.WarningRuleTypeEnum; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.flowable.engine.HistoryService; -import org.flowable.engine.TaskService; -import org.flowable.engine.history.HistoricProcessInstance; -import org.flowable.task.api.Task; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * @Classname EarlyWarningStatisticsManage - * @Description - * @Date 2023/12/05 17:44 - * @Author PoffyZhang - */ -@Component -@RequiredArgsConstructor -@Slf4j -public class EarlyWarningStatisticsManage { - - private final IEarlyWarningRecordsService earlyWarningRecordsService; - - private final HistoryService historyService; - - private final IProjectInstService projectInstService; - - private final IProjectService projectService; - - private final TaskService taskService; - - private static final List threeYears = Lists.newArrayList(LocalDateTime.now().getYear() - 2, - LocalDateTime.now().getYear() - 1, LocalDateTime.now().getYear()); - - public EarlyWarningStatisticsVO statistics(Integer year) { - UserInfoDetails user = LoginUserUtil.loginUserDetail(); - - //项目 - List projects = projectService.list(Wrappers.lambdaQuery(Project.class) - .eq(Project::getNewest, Boolean.TRUE)); - - EarlyWarningStatisticsVO res = new EarlyWarningStatisticsVO(); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(WflowEarlyWarningRecords.class); - EarlyWarningUtil.buildPermissionWrapper(wrapper, user); - List records = earlyWarningRecordsService.list(wrapper); - //累积总告警数 - res.setAccumulatedAlarmsTotal(records.size()); - res.setAccumulatedAlarmsFlow((int) records.stream().filter(a -> { - if (Objects.nonNull(a.getRuleType()) && - a.getRuleType().equals(WarningRuleTypeEnum.PROCESS_WARNING.getCode())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).count()); - res.setAccumulatedAlarmsFilling((int) records.stream().filter(a -> { - if (Objects.nonNull(a.getRuleType()) && - a.getRuleType().equals(WarningRuleTypeEnum.DECLARED_WARNING.getCode())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).count()); - - //近三年 - List threeYearsAlarms = Lists.newArrayList(); - for (Integer thisYear : threeYears) { - DataDTO yearData = new DataDTO(); - yearData.setName(thisYear.toString()); - yearData.setNum((int) records.stream().filter(r -> { - if (Objects.nonNull(r.getWarningTime()) && - thisYear.equals(r.getWarningTime().getYear())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).count()); - threeYearsAlarms.add(yearData); - } - res.setThreeYearsAlarms(threeYearsAlarms); - - //当前各流程报警数 - List alarmsFlowsNow = Lists.newArrayList(); - for (ProjectProcessStageEnum stageEnum : ProjectProcessStageEnum.values()) { - String processName = stageEnum.getDesc(); - Integer processType = stageEnum.getCode(); - alarmsFlowsNow.add(DataDTO.of(processName, computeFlowWarningNow(processType, records))); - } - res.setAlarmsFlowsNow(alarmsFlowsNow); - - //当前各填报报警数 - List alarmsFillingNow = Lists.newArrayList(); - for (WarningFlowTypeEnum fillingEnum : WarningFlowTypeEnum.values()) { - String processName = fillingEnum.getDesc(); - Integer projectStatus = fillingEnum.getProjectStutas(); - alarmsFillingNow.add(DataDTO.of(processName, computeFillingNow(projectStatus, records, projects))); - } - res.setAlarmsFillingNow(alarmsFillingNow); - - //实施预警 - List alarmsConstruction = Lists.newArrayList(); - for (WarningNoticeTypeEnum noticeTypeEnum : WarningNoticeTypeEnum.values()) { - String name = noticeTypeEnum.getDesc(); - Integer noticeType = noticeTypeEnum.getCode(); - alarmsConstruction.add(DataDTO.of(name, computeConstruction(noticeType, records, projects))); - } - res.setConstructionAlarms(alarmsConstruction); - - //安全监测 - List safetyMonitoring = Lists.newArrayList(); - //--1 安全设计 - safetyMonitoring.add(DataDTO.of("安全设计", 0)); - //--2 安全投入低于5% - safetyMonitoring.add(DataDTO.of("安全投入低于5%", computeSafeLessFive(projects))); - //--3 非信创 - safetyMonitoring.add(DataDTO.of("非信创", computeNotXinChuang(projects))); - //--4 等保未做 - safetyMonitoring.add(DataDTO.of("等保未做", 0)); - //--5 密评未做 - safetyMonitoring.add(DataDTO.of("密评未做", 0)); - res.setSafetyMonitoring(safetyMonitoring); - return res; - } - - //计算非信创 - private Integer computeNotXinChuang(List projects) { - return (int) projects.stream().filter(p -> StringUtils.isNotBlank(p.getCloudType()) && - !p.getCloudType().contains("2")).count(); - } - - //计算安全投入低于5% - private Integer computeSafeLessFive(List projects) { - return (int) projects.stream().filter(p -> { - //计算出 安全投入 - BigDecimal rate = new BigDecimal(DashboardProjectManage.convertSafetyInputRate(p)); - if (rate.compareTo(new BigDecimal(5)) < 0) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).count(); - } - - private Integer computeConstruction(Integer noticeType, List records, - List projects) { - //终验告警 - List constructionRecords = records.stream().filter(r -> { - if (Objects.nonNull(r.getRuleType()) && - WarningRuleTypeEnum.OPERATION_WARNING.getCode().equals(r.getRuleType())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).filter(r -> Objects.nonNull(r.getNoticeType()) && r.getNoticeType().equals(noticeType) && - WarningOperationTypeEnum.ZHONGYAN.getCode().equals(r.getBiz())) - .collect(Collectors.toList()); - if (CollUtil.isEmpty(constructionRecords)) { - return 0; - } - Map> recordsMap = constructionRecords.stream().collect(Collectors.groupingBy( - WflowEarlyWarningRecords::getProjectCode)); - - //待终验的项目 - List tobeFinalProjects = projects.stream().filter(p -> { - if (Objects.nonNull(p.getStatus()) && - p.getStatus().equals(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).collect(Collectors.toList()); - - return (int) tobeFinalProjects.stream().filter(p -> { - if (recordsMap.containsKey(p.getProjectCode())) { - List warningRecords = recordsMap.get(p.getProjectCode()); - //如果是临期的 不能包含有超期的 - if (noticeType.equals(WarningNoticeTypeEnum.ADVENT.getCode())) { - for (WflowEarlyWarningRecords warningRecord : warningRecords) { - if (Objects.isNull(warningRecord.getNoticeType()) || warningRecord.getNoticeType() - .equals(WarningNoticeTypeEnum.OVER.getCode())) { - return Boolean.FALSE; - } - } - } - //这个状态有告警 并且 这个项目也是这个类型 - return Boolean.TRUE; - } - return Boolean.FALSE; - }).count(); - } - - private Integer computeFillingNow(Integer projectStutas, List records, - List projects) { - List fillingRecords = records.stream().filter(r -> { - if (Objects.nonNull(r.getRuleType()) && - WarningRuleTypeEnum.DECLARED_WARNING.getCode().equals(r.getRuleType())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).filter(r -> Objects.nonNull(r.getNodeId())).collect(Collectors.toList()); - if (CollUtil.isEmpty(fillingRecords)) { - return 0; - } - Map> warningMap = fillingRecords.stream() - .collect(Collectors.groupingBy(WflowEarlyWarningRecords::getProjectCode)); - - List thisStatusProjects = projects.stream().filter(p -> { - if (Objects.nonNull(p.getStatus()) && p.getStatus().equals(projectStutas)) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).collect(Collectors.toList()); - - return (int) thisStatusProjects.stream().filter(p -> { - if (warningMap.containsKey(p.getProjectCode())) { - //这个状态有告警 并且 这个项目也是这个类型 - return Boolean.TRUE; - } - return Boolean.FALSE; - }).count(); - } - - //计算某个流程当前正在告警的数量 - private Integer computeFlowWarningNow(Integer processType, List records) { - List processRecords = records.stream().filter(r -> { - if (Objects.nonNull(r.getRuleType()) && - WarningRuleTypeEnum.PROCESS_WARNING.getCode().equals(r.getRuleType())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).filter(r -> Objects.nonNull(r.getNodeId())).collect(Collectors.toList()); - if (CollUtil.isEmpty(processRecords)) { - return 0; - } - Map> warningMap = processRecords.stream() - .collect(Collectors.groupingBy(WflowEarlyWarningRecords::getNodeId)); - - //1.先查出 所育 这个类型的 流程 - List proInsts = projectInstService.list(Wrappers.lambdaQuery(ProjectInst.class) - .eq(ProjectInst::getInstType, processType)); - if (CollUtil.isEmpty(proInsts)) { - return 0; - } - //2.再筛选一下 选出 正在审核 未完成的 - Set instCodes = proInsts.stream().map(ProjectInst::getInstCode) - .collect(Collectors.toSet()); - List processes = historyService.createHistoricProcessInstanceQuery() - .processInstanceIds(instCodes) - .unfinished() - .orderByProcessInstanceStartTime() - .asc() - .list(); - if (CollUtil.isEmpty(processes)) { - return 0; - } - //查出所有正在执行的工作流任务 - List tasks = taskService.createTaskQuery() - .list(); - if (CollUtil.isEmpty(tasks)) { - return 0; - } - Map> taskMap = tasks.stream() - .collect(Collectors.groupingBy(Task::getProcessInstanceId)); - return (int) processes.stream().filter(p -> { - if (taskMap.containsKey(p.getId())) { - List tasksThis = taskMap.get(p.getId()); - for (Task taskThis : tasksThis) { - //说明 当前有告警 - if (warningMap.containsKey(taskThis.getTaskDefinitionKey())) { - return Boolean.TRUE; - } - } - } - return Boolean.FALSE; - }).count(); - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/ExpertStatisticsManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/ExpertStatisticsManage.java index 21729bc..1697b8a 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/ExpertStatisticsManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/ExpertStatisticsManage.java @@ -57,10 +57,6 @@ public class ExpertStatisticsManage { private final IMetaDictionaryService metaDictionaryService; - private Integer[] years = new Integer[]{LocalDateTime.now().getYear() - 2, - LocalDateTime.now().getYear() - 1, LocalDateTime.now().getYear(), - LocalDateTime.now().getYear() + 1, LocalDateTime.now().getYear() + 2}; - private Integer[] threeYears = new Integer[]{LocalDateTime.now().getYear() - 2, LocalDateTime.now().getYear() - 1, LocalDateTime.now().getYear()}; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/MeetingStatisticsManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/MeetingStatisticsManage.java deleted file mode 100644 index 909a5c9..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/MeetingStatisticsManage.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.hz.pm.api.dashboard.manage; - -import cn.hutool.core.collection.CollUtil; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.google.common.collect.Lists; -import com.hz.pm.api.common.helper.RegionCacheHelper; -import com.hz.pm.api.common.model.constant.RegionConst; -import com.hz.pm.api.common.model.entity.DataDTO; -import com.hz.pm.api.dashboard.model.vo.MeetingStatisticsVO; -import com.hz.pm.api.ding.constants.DingOrganizationContant; -import com.hz.pm.api.expert.constant.ReviewResultEnum; -import com.hz.pm.api.expert.model.entity.ExpertReview; -import com.hz.pm.api.expert.model.enumeration.ReviewTemplateTypeEnum; -import com.hz.pm.api.expert.service.IExpertReviewService; -import com.hz.pm.api.meeting.entity.domain.Meeting; -import com.hz.pm.api.meeting.service.IMeetingService; -import com.hz.pm.api.organization.model.entity.DingOrganization; -import com.hz.pm.api.organization.service.IDingOrganizationService; -import com.hz.pm.api.projectlib.model.entity.Project; -import com.hz.pm.api.projectlib.service.IProjectService; -import com.hz.pm.api.sys.model.dto.RegionDTO; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.Comparator; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * @Classname MeetingStatisticsManage - * @Description - * @Date 2023/12/05 17:44 - * @Author PoffyZhang - */ -@Component -@RequiredArgsConstructor -@Slf4j -public class MeetingStatisticsManage { - - private final IMeetingService meetingService; - - private final IExpertReviewService expertReviewService; - - private final RegionCacheHelper regionCacheHelper; - - private final IDingOrganizationService dingOrganizationService; - - private final IProjectService projectService; - - public MeetingStatisticsVO statistics(Integer year) { - MeetingStatisticsVO res = new MeetingStatisticsVO(); - List meetings = meetingService.list(Wrappers.lambdaQuery(Meeting.class)); - //查出 年份的 会议数据 - meetings = meetings.stream().filter(m -> { - if (Objects.nonNull(m.getStartTime()) && - (Objects.isNull(year) || year.equals(m.getStartTime().getYear()))) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).collect(Collectors.toList()); - List meetingIds = meetings.stream().map(Meeting::getId) - .collect(Collectors.toList()); - - //会议总数 - res.setMeetingTotal(meetings.size()); - - //评审数 - List expertReviews = Lists.newArrayList(); - Integer reviewsTotal = 0; - if (CollUtil.isNotEmpty(meetingIds)) { - expertReviews = expertReviewService.list(Wrappers.lambdaQuery(ExpertReview.class) - .eq(ExpertReview::getIsFinal, Boolean.TRUE) - .in(ExpertReview::getMeetingId, meetingIds)); - reviewsTotal = expertReviews.size(); - } - //通过的评审 - List passExpertReviews = expertReviews.stream() - .filter(r -> Objects.nonNull(r.getReviewResult()) && - r.getReviewResult().equals(ReviewResultEnum.PASSED.getCode())) - .collect(Collectors.toList()); - //不通过的评审 - List notpassExpertReviews = expertReviews.stream() - .filter(r -> Objects.nonNull(r.getReviewResult()) && - r.getReviewResult().equals(ReviewResultEnum.REFUSED.getCode())) - .collect(Collectors.toList()); - res.setPassReview(passExpertReviews.size()); - res.setNotPassRate(reviewsTotal.compareTo(0) == 0 ? BigDecimal.ZERO : - BigDecimal.valueOf(notpassExpertReviews.size()).multiply(BigDecimal.valueOf(100) - .divide(BigDecimal.valueOf(reviewsTotal), RoundingMode.HALF_UP))); - - //各区域 - List regions = regionCacheHelper.listChildren(RegionConst.RC_HZ, RegionConst.RL_CITY) - .stream().filter(r -> r.getRegionLevel().equals(RegionConst.RL_COUNTY)) - .sorted(Comparator.comparing(RegionDTO::getRegionCode)).collect(Collectors.toList()); - List regionMeetngs = Lists.newArrayList(); - for (RegionDTO region : regions) { - regionMeetngs.add(DataDTO.of(region.getRegionName(), region.getRegionCode(), meetings.size())); - } - res.setRegionMeetings(regionMeetngs); - - //预审 验收 会议 - List meetingTypes = Lists.newArrayList(); - meetingTypes.add(DataDTO.of("预审会议", ReviewTemplateTypeEnum.PRELIMINARY_SCHEME_REVIEW.getCode().toString(), - meetings.stream().filter(m -> { - if (StringUtils.isNotBlank(m.getType()) && - m.getType().equals(ReviewTemplateTypeEnum.PRELIMINARY_SCHEME_REVIEW.getCode() - .toString())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).collect(Collectors.toList()).size())); - long yanshouCount = meetings.stream().filter(m -> { - if (StringUtils.isNotBlank(m.getType()) && - m.getType().equals(ReviewTemplateTypeEnum.ACCEPTANCE_SCHEME_REVIEW.getCode() - .toString())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).count(); - meetingTypes.add(DataDTO.of("验收会议", ReviewTemplateTypeEnum.ACCEPTANCE_SCHEME_REVIEW.getCode().toString(), - (int) yanshouCount)); - res.setMeetingTypes(meetingTypes); - - //各区县评审 不通过率 - List regionNotpassReview = Lists.newArrayList(); - for (RegionDTO region : regions) { - DataDTO data = new DataDTO(); - data.setCode(region.getRegionCode()); - data.setName(region.getRegionName()); - //先求出 此区域会议 - List regionMeetingIds = meetings.stream().filter(m -> Boolean.FALSE).map(Meeting::getId).collect(Collectors.toList()); - - List regionReviews = expertReviews.stream().filter(r -> { - if (Objects.nonNull(r.getMeetingId()) && - regionMeetingIds.contains(r.getMeetingId())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }).collect(Collectors.toList()); - long regionNotpass = regionReviews.stream().filter(r -> Objects.nonNull(r.getReviewResult()) && - r.getReviewResult().equals(ReviewResultEnum.REFUSED.getCode())) - .count(); - - data.setRate(CollUtil.isEmpty(regionReviews) ? BigDecimal.ZERO : - BigDecimal.valueOf(regionNotpass).multiply(BigDecimal.valueOf(100)) - .divide(BigDecimal.valueOf(regionReviews.size()), BigDecimal.ROUND_CEILING, RoundingMode.HALF_UP)); - - regionNotpassReview.add(data); - } - res.setNotPassRegionMeetings(regionNotpassReview); - - //各部门 不通过项目TOP10 - List organizations = dingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class) - .in(DingOrganization::getTypeCode, Lists.newArrayList(DingOrganizationContant.UNIT_TYPE, - DingOrganizationContant.GOV_TEMPORARY))); - List projects = projectService.list(Wrappers.lambdaQuery(Project.class) - .eq(Project::getNewest, Boolean.TRUE)); - - //TOP10 - List finalExpertReviews = expertReviews; - List notpassTop10 = organizations.stream() - .map(o -> { - DataDTO data = new DataDTO(); - data.setCode(o.getOrganizationCode()); - data.setName(o.getOrganizationName()); - List orgProjects = projects.stream().filter(p -> Objects.nonNull(p.getBuildOrgCode()) && - p.getBuildOrgCode().equals(o.getOrganizationCode())) - .collect(Collectors.toList()); - List projectCodes = orgProjects.stream().map(Project::getProjectCode) - .collect(Collectors.toList()); - if (CollUtil.isEmpty(projectCodes)) { - return data; - } - List reviews = finalExpertReviews.stream().filter(r -> Objects.nonNull(r.getProjectCode()) && - projectCodes.contains(r.getProjectCode())).collect(Collectors.toList()); - long orgNotpass = reviews.stream().filter(r -> Objects.nonNull(r.getReviewResult()) && - r.getReviewResult().equals(ReviewResultEnum.REFUSED.getCode())) - .count(); - data.setRate(CollUtil.isEmpty(reviews) ? BigDecimal.ZERO : - BigDecimal.valueOf(orgNotpass).multiply(BigDecimal.valueOf(100)) - .divide(BigDecimal.valueOf(reviews.size()), BigDecimal.ROUND_CEILING, RoundingMode.HALF_UP)); - return data; - }) - .filter(d -> Objects.nonNull(d.getRate())) - .sorted(Comparator.comparing(DataDTO::getRate).reversed()) - .limit(10).collect(Collectors.toList()); - res.setNotPassTop10(notpassTop10); - return res; - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/PerformanceStatisticsManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/PerformanceStatisticsManage.java deleted file mode 100644 index 80401f6..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/PerformanceStatisticsManage.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.hz.pm.api.dashboard.manage; - -import com.google.common.collect.Lists; -import com.hz.pm.api.dashboard.model.vo.PerformanceStatisticsVO; -import com.hz.pm.api.performance.service.IPerformanceAppraisalProjectService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; -import java.time.LocalDateTime; -import java.util.List; - -/** - * @Classname PerformanceStatisticsManage - * @Description - * @Date 2023/12/05 17:44 - * @Author PoffyZhang - */ -@Component -@RequiredArgsConstructor -@Slf4j -public class PerformanceStatisticsManage { - - private final IPerformanceAppraisalProjectService performanceAppraisalProjectService; - - List thisTwoYears = Lists.newArrayList(LocalDateTime.now().getYear() - 1 - ,LocalDateTime.now().getYear()); - - public PerformanceStatisticsVO statistics(Integer year) { - PerformanceStatisticsVO res = new PerformanceStatisticsVO(); - - return res; - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/ProjectCostStatisticsManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/ProjectCostStatisticsManage.java index 1513cb7..2575182 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/ProjectCostStatisticsManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/ProjectCostStatisticsManage.java @@ -32,7 +32,6 @@ import java.util.stream.Collectors; public class ProjectCostStatisticsManage { private final IMeetingExpertService meetingExpertService; - private final IMeetingService meetingService; //评审费 每人500 (0.05万) diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/datascope/contants/DataScopeColumnConst.java b/hz-pm-api/src/main/java/com/hz/pm/api/datascope/contants/DataScopeColumnConst.java deleted file mode 100644 index b8aaa40..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/datascope/contants/DataScopeColumnConst.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.hz.pm.api.datascope.contants; - -/** - *

- * DataScopeColumnConst - *

- * - * @author WendyYang - * @since 16:24 2022/11/3 - */ -public interface DataScopeColumnConst { - - String REGION_ID = "region_id"; - - String REGION_CODE = "region_code"; - - String ORG_CODE = "org_code"; - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/datascope/contants/LambdaDataScopeTypeEnum.java b/hz-pm-api/src/main/java/com/hz/pm/api/datascope/contants/LambdaDataScopeTypeEnum.java deleted file mode 100644 index 7a73c9d..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/datascope/contants/LambdaDataScopeTypeEnum.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.hz.pm.api.datascope.contants; - -import io.swagger.annotations.ApiModel; - -/** - * @Classname DataScopeTypeEnum - * @Description - * @Date 2022/11/18 11:15 - * @Created by PoffyZhang - */ -@ApiModel(value = "DataScopeTypeEnum", description = "数据范围类型-枚举") -public enum LambdaDataScopeTypeEnum { - /** - * 地区 - */ - REGION, - - /** - * 公司 - */ - ORG, - - /** - * 员工 - */ - EMPLOYEE, - - /** - * 都没有 - */ - NONE; -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/datascope/model/DataScopeEntity.java b/hz-pm-api/src/main/java/com/hz/pm/api/datascope/model/DataScopeEntity.java index 90937d9..8d8185f 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/datascope/model/DataScopeEntity.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/datascope/model/DataScopeEntity.java @@ -3,10 +3,10 @@ package com.hz.pm.api.datascope.model; import lombok.Data; /** - * @Classname DataScopEntity + * @author PoffyZhang + * @Classname DataScopeEntity * @Description * @Date 2022/11/11 16:25 - * @Created by PoffyZhang */ @Data public class DataScopeEntity { diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/ding/constants/DingOrganizationContant.java b/hz-pm-api/src/main/java/com/hz/pm/api/ding/constants/DingOrganizationContant.java deleted file mode 100644 index 20fd70a..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/ding/constants/DingOrganizationContant.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.hz.pm.api.ding.constants; - -/** - * @Classname DingOrganizationContant - * @Description - * @Date 2023/7/10 17:58 - * @Author PoffyZhang - */ -public interface DingOrganizationContant { - - String UNIT_TYPE = "GOV_UNIT"; - String GOV_TEMPORARY = "GOV_TEMPORARY"; - String HOLLOW = "GOV_HOLLOW_DIVISION_NODE"; -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/ding/controller/DingInfoPullController.java b/hz-pm-api/src/main/java/com/hz/pm/api/ding/controller/DingInfoPullController.java index fd3fac1..04b016d 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/ding/controller/DingInfoPullController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/ding/controller/DingInfoPullController.java @@ -1,42 +1,13 @@ package com.hz.pm.api.ding.controller; -import com.alibaba.fastjson.JSON; -import com.hz.pm.api.common.util.CryptUtils; -import com.hz.pm.api.ding.task.EmployeeBatchGetTask; import com.hz.pm.api.ding.task.GovBusinessStripsTask; -import com.hz.pm.api.ding.task.OrganizationBatchGetTask; -import com.hz.pm.api.irs.manage.AppIrsManage; import com.hz.pm.api.irs.model.dto.ForwardDTO; -import com.hz.pm.api.sys.manage.OrgProcDefManage; -import com.hz.pm.api.projectdeclared.manage.IrsManage; -import com.hz.pm.api.projectlib.model.dto.ProjectDTO; -import com.hz.pm.api.projectlib.model.entity.Project; -import com.hz.pm.api.projectlib.service.IProjectService; -import com.ningdatech.irs.service.IRefreshTokenService; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; -import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; -import org.springframework.web.client.RestTemplate; -import javax.annotation.Resource; import javax.validation.Valid; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.security.NoSuchAlgorithmException; -import java.util.Objects; /** *

@@ -52,237 +23,11 @@ import java.util.Objects; @Slf4j public class DingInfoPullController { - private final EmployeeBatchGetTask employeeBatchGetTask; private final GovBusinessStripsTask businessStripsTask; - private final OrganizationBatchGetTask organizationBatchGetTask; - - private final OrgProcDefManage orgProcDefManage; - - private final IrsManage irsManage; - - @Resource - private IRefreshTokenService refreshTokenService; - - @Value("${irs.interface-refresh.request-token-url}") - private String govRequestTokenUrl; - @Value("${irs.interface-refresh.refresh-token-url}") - private String govRefreshTokenUrl; - - private final AppIrsManage appIrsManage; - - private final IProjectService projectService; - - @GetMapping("/employee") - public void employeeBatchGet() { - employeeBatchGetTask.batchGetEmployeeTask(); - } @GetMapping("/businessStrips") public void businessStripsBatchGet() { businessStripsTask.batchGetGovBusinessStripsTask(); } - @GetMapping("/organization") - public void organizationBatchGet() { - organizationBatchGetTask.batchGetOrganizationTask(); - } - - @GetMapping("/organization/{orgCode}") - public void organizationGetSubs(@PathVariable String orgCode) { - organizationBatchGetTask.organizationGetSubs(orgCode); - } - - @GetMapping("/organization-sub/{orgCode}") - public void organizationSubGetOrgs(@PathVariable String orgCode) { - organizationBatchGetTask.organizationSubGetOrgs(orgCode); - } - - @GetMapping("/employeeByRegionCode/{regionCode}") - public void employeeBatchGetByRegionCode(@PathVariable String regionCode) { - employeeBatchGetTask.batchGetEmployeeTaskByRegionCode(regionCode); - } - - @GetMapping("/employeeByOrdCode/{orgCode}") - public void employeeBatchGetByOrdCode(@PathVariable String orgCode) { - employeeBatchGetTask.batchGetEmployeeTaskByOrdCode(orgCode); - } - - @GetMapping("/getEmployeeByCode/{empCode}") - public void getEmployeeByCode(@PathVariable String empCode) { - employeeBatchGetTask.getEmployeeByCode(empCode); - } - - @GetMapping("/getBatchEmployeeByCode/{orgCode}") - public void getBatchEmployeeByCode(@PathVariable String orgCode) { - employeeBatchGetTask.getBatchEmployeeByCode(orgCode); - } - - @GetMapping("/getToken") - public String getToken() { - return employeeBatchGetTask.getToken(); - } - - @GetMapping("/getAuthToken") - public String getAuthToken() { - return employeeBatchGetTask.getAuthToken(); - } - - @ApiOperation(value = "项目详情推送", notes = "项目详情推送") - @GetMapping("/push-project") - public String pushProject() throws Exception { - File f = new File("/temp/遂昌归集项目信息(需补).xlsx"); -// File f = new File("C:\\Users\\PoffyZhang\\Desktop\\遂昌归集项目信息(需补).xlsx"); - Workbook wb = readExcel(new FileInputStream(f), f.getName()); - Assert.notNull(wb, "文件流为空"); - Row row; - Integer sucessNum = 0; - if (wb != null) { - //获取第一个sheet - Sheet sheet = wb.getSheetAt(0); - //获取最大行数 - int rownum = sheet.getPhysicalNumberOfRows(); - //获取第一行 - row = sheet.getRow(0); - //获取最大列数 - for (int i = 1; i < rownum; i++) { - row = sheet.getRow(i); - if (Objects.isNull(row) || Objects.isNull(row.getCell(0))) { - //取不到数据了 停止 - log.info("数据取完"); - break; - } - ProjectDTO projectDto = new ProjectDTO(); - - projectDto.setProjectCode(row.getCell(0).toString()); - projectDto.setProjectName(row.getCell(1).toString()); - projectDto.setArea(row.getCell(2).toString()); - projectDto.setAreaCode("331123000"); - String baseProjType = String.valueOf(row.getCell(4)); - if (StringUtils.isNotBlank(baseProjType) && baseProjType.contains(".")) { - baseProjType = baseProjType.substring(0, - baseProjType.indexOf(".")); - } - projectDto.setBaseProjType(baseProjType); - projectDto.setBaseConstructionType(String.valueOf(row.getCell(5))); - projectDto.setBaseProjConsClass(String.valueOf(row.getCell(6))); - projectDto.setBaseLowestLevel(String.valueOf(row.getCell(7))); - projectDto.setProjectYear(Integer.valueOf(String.valueOf(row.getCell(8)))); - projectDto.setBaseProjBasis(String.valueOf(row.getCell(9))); - projectDto.setBuildBasis(String.valueOf(row.getCell(10))); - String baseProjSerProg = String.valueOf(row.getCell(12)); - if (StringUtils.isNotBlank(baseProjSerProg) && baseProjSerProg.contains(".")) { - baseProjSerProg = baseProjSerProg.substring(0, - baseProjSerProg.indexOf(".")); - } - projectDto.setBaseProjSetProg(baseProjSerProg); - projectDto.setResponsibleMan(String.valueOf(row.getCell(13))); - projectDto.setResponsibleManMobile(String.valueOf(row.getCell(14))); - projectDto.setContactName(String.valueOf(row.getCell(15))); - projectDto.setContactPhone(String.valueOf(row.getCell(16))); - projectDto.setBuildOrgName(String.valueOf(row.getCell(18))); - projectDto.setBuildOrgCode(String.valueOf(row.getCell(19))); - projectDto.setSuperOrg(String.valueOf(row.getCell(21))); - projectDto.setSuperOrgCode(String.valueOf(row.getCell(22))); - projectDto.setHigherSuperOrg(String.valueOf(row.getCell(24))); - projectDto.setHigherSuperOrgCode(String.valueOf(row.getCell(25))); - - log.info("projectDto :{}", JSON.toJSONString(projectDto)); - - if (StringUtils.isNotBlank(appIrsManage.pushProjectDetail(projectDto))) { - sucessNum++; - } - } - } - - return "推送IRS项目详情成功数量:" + sucessNum; - } - - @ApiOperation(value = "应用和项目关系推送", notes = "应用和项目关系推送") - @GetMapping("/push-app-project") - public String pushAppProject() throws Exception { - long timestamp = System.currentTimeMillis(); - String areaCode = "331123"; - String appKey = "A331101453557202109017383"; - String appSecret = "496f0f2a19994f76b4fd9dae087366c7"; - String baseProjSys = "初次建设的应用21"; - String baseProjSysCode = "A331123467587202307014177"; - String baseProjName = "遂昌县-nsl-项目测试004"; - String baseProjId = "331123230130123412186"; - String requestSecret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, HttpMethod.POST.name()); - String capCode = CryptUtils.encryptHMAC(timestamp + areaCode, "bcb4fc0f517fc168ee543fcf4d231f3b"); - String capTime = String.valueOf(timestamp); - String sign = CryptUtils.MD5Encode(appKey + requestSecret + timestamp); - String url = "https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/94wbaL1I1Pbz0648.htm?requestTime=" + timestamp + - "&sign=" + sign + "&appKey=" + appKey + "&capCode=" + capCode + "&capTime=" + capTime + - "&baseProjSys=" + baseProjSys + "&areaCode=331123&baseProjName=" + baseProjName + "&baseProjId=" + baseProjId + - "&isEffective=1&baseProjSysCode=" + baseProjSysCode; - RestTemplate restTemplate = new RestTemplate(); - log.info("url :{}", url); - ResponseEntity forEntity = restTemplate.getForEntity(url, String.class); - - log.info(JSON.toJSONString(forEntity)); - - return forEntity.getBody(); - } - - @ApiOperation(value = "项目详情推送", notes = "项目详情推送") - @GetMapping("/push-project-detail") - public String pushProjectDetail() throws NoSuchAlgorithmException { - Project project = projectService.getById(189L); - ProjectDTO projectDto = new ProjectDTO(); - - projectDto.setProjectCode(project.getProjectCode()); - projectDto.setProjectName(project.getProjectName()); - projectDto.setArea(project.getArea()); - projectDto.setAreaCode(project.getAreaCode()); - projectDto.setBaseProjType("1"); - projectDto.setBaseConstructionType("03"); - projectDto.setBaseProjConsClass("C"); - projectDto.setBaseLowestLevel("C"); - projectDto.setProjectYear(project.getProjectYear()); - projectDto.setBaseProjBasis("1"); - projectDto.setBuildBasis("01"); - projectDto.setBaseProjSetProg("05"); - projectDto.setResponsibleMan(project.getResponsibleMan()); - projectDto.setResponsibleManMobile(project.getResponsibleManMobile()); - projectDto.setContactName(project.getContactName()); - projectDto.setContactPhone(project.getContactPhone()); - projectDto.setBuildOrgName(project.getBuildOrgName()); - projectDto.setBuildOrgCode(project.getBuildOrgCode()); - projectDto.setSuperOrg(project.getSuperOrg()); - projectDto.setSuperOrgCode(project.getSuperOrgCode()); - projectDto.setHigherSuperOrg(project.getHigherSuperOrg()); - projectDto.setHigherSuperOrgCode(project.getHigherSuperOrgCode()); - - log.info("projectDto :{}", JSON.toJSONString(projectDto)); - - if (StringUtils.isNotBlank(appIrsManage.pushProjectDetail(projectDto))) { - return "推送成功"; - } - return "推送失败"; - } - - @ApiOperation(value = "转发IRS请求", notes = "转发IRS请求 用于") - @PostMapping("/forward") - public String forward(@Valid @RequestBody ForwardDTO dto) { - return irsManage.forward(dto); - } - - public static Workbook readExcel(InputStream is, String extString) { - Workbook wb = null; - - extString = extString.substring(extString.lastIndexOf(".")); - try { - if (".xls".equals(extString)) { - return new HSSFWorkbook(is); - } else if (".xlsx".equals(extString)) { - return new XSSFWorkbook(is); - } else { - return null; - } - } catch (IOException e) { - e.printStackTrace(); - } - return wb; - } } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/ding/task/EmployeeBatchGetTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/ding/task/EmployeeBatchGetTask.java deleted file mode 100644 index e63d828..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/ding/task/EmployeeBatchGetTask.java +++ /dev/null @@ -1,446 +0,0 @@ -package com.hz.pm.api.ding.task; - -import cn.hutool.core.collection.CollUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.google.common.collect.Lists; -import com.hz.pm.api.common.model.constant.BizConst; -import com.hz.pm.api.ding.constants.DingOrganizationContant; -import com.hz.pm.api.organization.model.entity.DingEmployeeInfo; -import com.hz.pm.api.organization.model.entity.DingOrganization; -import com.hz.pm.api.organization.service.IDingEmployeeInfoService; -import com.hz.pm.api.organization.service.IDingOrganizationService; -import com.hz.pm.api.user.model.entity.UserInfo; -import com.hz.pm.api.user.service.IUserInfoService; -import com.ningdatech.basic.function.VUtils; -import com.ningdatech.basic.model.GenericResult; -import com.ningdatech.zwdd.ZwddIntegrationProperties; -import com.ningdatech.zwdd.client.ZwddAuthClient; -import com.ningdatech.zwdd.client.ZwddClient; -import com.ningdatech.zwdd.model.Page; -import com.ningdatech.zwdd.model.dto.EmployeeAccountIdDTO; -import com.ningdatech.zwdd.model.dto.EmployeeInfoDTO; -import com.ningdatech.zwdd.model.query.PageOrganizationEmployeePositionsQuery; -import com.ningdatech.zwdd.model.response.OrganizationEmployeePosition; -import com.ningdatech.zwdd.model.response.OrganizationEmployeePosition.GovEmployeePosition; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.time.LocalDateTime; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author liuxinxin - * @date 2023/2/10 上午9:52 - */ - -@Slf4j -@Component -@RequiredArgsConstructor -public class EmployeeBatchGetTask { - - private static final int PAGE_SIZE = 20; - private static final int GROUP_SIZE = 100; - private static final long MAX_SIZE = 10000; - - //================================================================================================================== - - private final ZwddClient zwddClient; - private final ZwddAuthClient zwddAuthClient; - private final IDingOrganizationService dingOrganizationService; - private final IDingEmployeeInfoService dingEmployeeInfoService; - private final ZwddIntegrationProperties zwddIntegrationProperties; - private final IUserInfoService userInfoService; - - //================================================================================================================== - - @Transactional(rollbackFor = Exception.class) - // @Scheduled(cron = "0 0 1 * * ?") - public void batchGetEmployeeTask() { - // 获取所有的组织列表用户获取组织下的 用户信息(暂时只查单位的类型) - List dingOrganizationList = dingOrganizationService.list( - Wrappers.lambdaQuery(DingOrganization.class) - .eq(DingOrganization::getTypeCode, DingOrganizationContant.UNIT_TYPE)); - log.info("所有待更新员工的单位数:{}", dingOrganizationList.size()); - if (CollUtil.isNotEmpty(dingOrganizationList)) { - //记录任务 单位数 - Integer index = 0; - for (DingOrganization dingOrg : dingOrganizationList) { - log.info("当前单位:{},下标数,{}", dingOrg.getOrganizationName(), index); - index++; - List allOrganizationEmployeePositionList = new ArrayList<>(); - String organizationCode = dingOrg.getOrganizationCode(); - PageOrganizationEmployeePositionsQuery query = new PageOrganizationEmployeePositionsQuery(); - query.setEmployeeStatus("A"); - query.setOrganizationCode(organizationCode); - query.setReturnTotalSize(true); - query.setTenantId(zwddIntegrationProperties.getTenantId()); - int pageNo = 1; - query.setPageNo(pageNo); - query.setPageSize(PAGE_SIZE); - - // 查询组织下 用户信息 - GenericResult> firstPageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); - Page data = firstPageGenericResult.getData(); - if (Objects.isNull(data)) { - log.info("响应为空:{}", organizationCode); - continue; - } - if (CollUtil.isNotEmpty(data.getData())) { - allOrganizationEmployeePositionList.addAll(data.getData()); - } - Long totalSize = data.getTotalSize(); - - log.info("dingOrg :{}", JSON.toJSONString(dingOrg)); - - log.info("totalSize :{},{}", totalSize, dingOrg.getOrganizationName()); - if (totalSize > PAGE_SIZE) { - if (totalSize > MAX_SIZE) { - //超过1万 按1万的处理 - totalSize = MAX_SIZE; - } - - int restPageNo = totalSize % PAGE_SIZE > 0 ? 1 : 0; - int maxPageNo = (int) Math.ceil(totalSize / PAGE_SIZE) + restPageNo; - for (pageNo = 2; pageNo <= maxPageNo; pageNo++) { - query.setPageNo(pageNo); - GenericResult> pageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); - if (pageGenericResult.isSuccess()) { - allOrganizationEmployeePositionList.addAll(pageGenericResult.getData().getData()); - } else { - log.error(pageGenericResult.getMsg()); - } - } - } - - // 批量查询 成员的accountId - List dingEmployeeInfoSaveRecordList = new ArrayList<>(); - if (allOrganizationEmployeePositionList.size() <= GROUP_SIZE) { - log.info("assemblerAccountId :{}", allOrganizationEmployeePositionList.size()); - assemblerAccountId(allOrganizationEmployeePositionList, dingEmployeeInfoSaveRecordList); - } else { - log.info("assemblerAccountId :{}", allOrganizationEmployeePositionList.size()); - List> split = Lists.partition(allOrganizationEmployeePositionList, GROUP_SIZE); - for (List segment : split) { - assemblerAccountId(segment, dingEmployeeInfoSaveRecordList); - } - } - // 批量保存用户信息 - saveBatch(dingEmployeeInfoSaveRecordList); - } - } - } - - - private void assemblerAccountId(List segment, List dingEmployeeInfoSaveRecordList) { - List employeeCodes = segment.stream().map(OrganizationEmployeePosition::getEmployeeCode).distinct().collect(Collectors.toList()); - GenericResult> listGenericResult = zwddClient.listEmployeeAccountIds(employeeCodes); - List employeeAccountIdDTOList = listGenericResult.getData(); - if (CollUtil.isNotEmpty(employeeAccountIdDTOList)) { - Map employeeCodeAccountIdMap = employeeAccountIdDTOList.stream().filter(Objects::nonNull) - .collect(Collectors.toMap(EmployeeAccountIdDTO::getEmployeeCode, EmployeeAccountIdDTO::getAccountId)); - - List dingEmployeeInfos = buildDingEmployeeInfoRecordList(segment); - - dingEmployeeInfos = dingEmployeeInfos.stream().map(r -> { - r.setAccountId(employeeCodeAccountIdMap.get(r.getEmployeeCode())); - return r; - }).collect(Collectors.toList()); - dingEmployeeInfoSaveRecordList.addAll(dingEmployeeInfos); - } - } - - private List buildDingEmployeeInfoRecordList(List allOrganizationEmployeePositionList) { - List saveRecordList = new ArrayList<>(); - for (OrganizationEmployeePosition organizationEmployeePosition : allOrganizationEmployeePositionList) { - List govEmployeePositions = organizationEmployeePosition.getGovEmployeePositions(); - if (CollUtil.isNotEmpty(govEmployeePositions)) { - List segmentSaveRecordList = new ArrayList<>(); - for (GovEmployeePosition govEmployeePosition : govEmployeePositions) { - DingEmployeeInfo dingEmployeeInfo = new DingEmployeeInfo(); - BeanUtils.copyProperties(organizationEmployeePosition, dingEmployeeInfo); - dingEmployeeInfo.setMainJob(govEmployeePosition.getMainJob()); - dingEmployeeInfo.setEmpPosUnitCode(govEmployeePosition.getEmpPosUnitCode()); - dingEmployeeInfo.setEmpPosEmployeeRoleCode(govEmployeePosition.getEmpPosEmployeeRoleCode()); - dingEmployeeInfo.setEmpPosInnerInstitutionCode(govEmployeePosition.getEmpPosInnerInstitutionCode()); - dingEmployeeInfo.setEmployeeCode(govEmployeePosition.getEmployeeCode()); - dingEmployeeInfo.setJobAttributesCode(govEmployeePosition.getJobAttributesCode()); - dingEmployeeInfo.setOrganizationCode(govEmployeePosition.getOrganizationCode()); - dingEmployeeInfo.setEmpPosVirtualOrganizationCode(govEmployeePosition.getEmpPosVirtualOrganizationCode()); - dingEmployeeInfo.setEmpStatus(govEmployeePosition.getStatus()); - dingEmployeeInfo.setCreateOn(LocalDateTime.now()); - dingEmployeeInfo.setUpdateOn(LocalDateTime.now()); - dingEmployeeInfo.setCreateBy(-1L); - dingEmployeeInfo.setUpdateBy(-1L); - segmentSaveRecordList.add(dingEmployeeInfo); - } - saveRecordList.addAll(segmentSaveRecordList); - } else { - DingEmployeeInfo dingEmployeeInfo = new DingEmployeeInfo(); - BeanUtils.copyProperties(organizationEmployeePosition, dingEmployeeInfo); - saveRecordList.add(dingEmployeeInfo); - } - } - return saveRecordList; - } - - private void saveBatch(List dingEmployeeInfoSaveRecordList) { - dingEmployeeInfoSaveRecordList = dingEmployeeInfoSaveRecordList.stream() - .filter(r -> "true".equals(r.getMainJob()) - && "A".equals(r.getEmpStatus()) - && StringUtils.isNotBlank(r.getEmpPosUnitCode()) - && StringUtils.isNotBlank(r.getEmployeeCode()) - ).collect(Collectors.toList()); - - Set uniqueKeySet = new HashSet(); - - List saveList = new ArrayList<>(); - - for (DingEmployeeInfo dingEmployeeInfo : dingEmployeeInfoSaveRecordList) { - if (uniqueKeySet.add(dingEmployeeInfo.getEmployeeCode() + dingEmployeeInfo.getEmpPosUnitCode())) { - saveList.add(dingEmployeeInfo); - } - } - - List organizations = dingOrganizationService.list(); - Map organizationMap = organizations.stream().collect(Collectors.toMap(DingOrganization::getOrganizationCode, o -> o)); - - for (DingEmployeeInfo dingEmployeeInfo : saveList) { - String employeeCode = dingEmployeeInfo.getEmployeeCode(); - - DingEmployeeInfo employeeInfo = dingEmployeeInfoService.getOne(Wrappers.lambdaQuery(DingEmployeeInfo.class) - .eq(DingEmployeeInfo::getEmployeeCode, employeeCode) - .last(BizConst.LIMIT_1)); - if (Objects.isNull(employeeInfo)) { - dingEmployeeInfoService.save(dingEmployeeInfo); - } else { - dingEmployeeInfo.setId(employeeInfo.getId()); - dingEmployeeInfoService.saveOrUpdate(dingEmployeeInfo); - } - } - } - - /** - * 按区域 来更新员工 - * - * @param regionCode - */ - public void batchGetEmployeeTaskByRegionCode(String regionCode) { - List units = dingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class) - .eq(DingOrganization::getTypeCode, DingOrganizationContant.UNIT_TYPE) - .eq(DingOrganization::getDivisionCode, regionCode)); - - - log.info("所有地区 {} 待更新员工的单位数:{}", regionCode, units.size()); - if (CollUtil.isNotEmpty(units)) { - //记录任务 单位数 - Integer index = 0; - for (DingOrganization dingOrganization : units) { - log.info("当前单位:{},下标数,{}", dingOrganization.getOrganizationName(), index); - index++; - List allOrganizationEmployeePositionList = new ArrayList<>(); - String organizationCode = dingOrganization.getOrganizationCode(); - PageOrganizationEmployeePositionsQuery query = new PageOrganizationEmployeePositionsQuery(); - query.setEmployeeStatus("A"); - query.setOrganizationCode(organizationCode); - query.setReturnTotalSize(true); - query.setTenantId(zwddIntegrationProperties.getTenantId()); - int pageNo = 1; - query.setPageNo(pageNo); - query.setPageSize(PAGE_SIZE); - - // 查询组织下 用户信息 - GenericResult> firstPageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); - Page data = firstPageGenericResult.getData(); - if (Objects.isNull(data)) { - log.info("响应为空:{}", organizationCode); - continue; - } - if (CollUtil.isNotEmpty(data.getData())) { - allOrganizationEmployeePositionList.addAll(data.getData()); - } - Long totalSize = data.getTotalSize(); - - log.info("dingOrganization :{}", JSON.toJSONString(dingOrganization)); - - log.info("totalSize :{},{}", totalSize, dingOrganization.getOrganizationName()); - if (totalSize > PAGE_SIZE) { - if (totalSize > MAX_SIZE) { - //超过1万 按1万的处理 - totalSize = MAX_SIZE; - } - - int restPageNo = totalSize % PAGE_SIZE > 0 ? 1 : 0; - int maxPageNo = (int) Math.ceil(totalSize / PAGE_SIZE) + restPageNo; - for (pageNo = 2; pageNo <= maxPageNo; pageNo++) { - query.setPageNo(pageNo); - GenericResult> pageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); - if (pageGenericResult.isSuccess()) { - allOrganizationEmployeePositionList.addAll(pageGenericResult.getData().getData()); - } else { - log.error(pageGenericResult.getMsg()); - } - } - } - - // 批量查询 成员的accountId - List dingEmployeeInfoSaveRecordList = new ArrayList<>(); - if (allOrganizationEmployeePositionList.size() <= GROUP_SIZE) { - log.info("assemblerAccountId :{}", allOrganizationEmployeePositionList.size()); - assemblerAccountId(allOrganizationEmployeePositionList, dingEmployeeInfoSaveRecordList); - } else { - log.info("assemblerAccountId :{}", allOrganizationEmployeePositionList.size()); - List> split = Lists.partition(allOrganizationEmployeePositionList, GROUP_SIZE); - for (List segment : split) { - assemblerAccountId(segment, dingEmployeeInfoSaveRecordList); - } - } - // 批量保存用户信息 - saveBatch(dingEmployeeInfoSaveRecordList); - } - log.info("员工同步完成"); - } - } - - public void batchGetEmployeeTaskByOrdCode(String orgCode) { - DingOrganization org = dingOrganizationService.getOne(Wrappers.lambdaQuery(DingOrganization.class) - .eq(DingOrganization::getOrganizationCode, orgCode) - .last(BizConst.LIMIT_1)); - VUtils.isTrue(Objects.isNull(org)).throwMessage("单位不存在"); - log.info("所属单位 {} 要更新员工信息了", org.getOrganizationName()); - - List allOrganizationEmployeePositionList = new ArrayList<>(); - PageOrganizationEmployeePositionsQuery query = new PageOrganizationEmployeePositionsQuery(); - query.setEmployeeStatus("A"); - query.setOrganizationCode(orgCode); - query.setReturnTotalSize(true); - query.setTenantId(zwddIntegrationProperties.getTenantId()); - int pageNo = 1; - query.setPageNo(pageNo); - query.setPageSize(PAGE_SIZE); - - // 查询组织下 用户信息 - GenericResult> firstPageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); - Page data = firstPageGenericResult.getData(); - if (Objects.isNull(data)) { - log.info("响应为空:{}", orgCode); - return; - } - if (CollUtil.isNotEmpty(data.getData())) { - allOrganizationEmployeePositionList.addAll(data.getData()); - } - Long totalSize = data.getTotalSize(); - - log.info("dingOrganization :{}", JSON.toJSONString(org)); - - log.info("totalSize :{},{}", totalSize, org.getOrganizationName()); - if (totalSize > PAGE_SIZE) { - if (totalSize > MAX_SIZE) { - //超过1万 按1万的处理 - totalSize = MAX_SIZE; - } - - int restPageNo = totalSize % PAGE_SIZE > 0 ? 1 : 0; - int maxPageNo = (int) Math.ceil(totalSize / PAGE_SIZE) + restPageNo; - for (pageNo = 2; pageNo <= maxPageNo; pageNo++) { - query.setPageNo(pageNo); - GenericResult> pageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); -// log.info("pageGenericResult :{}", JSON.toJSONString(pageGenericResult)); - if (pageGenericResult.isSuccess()) { - allOrganizationEmployeePositionList.addAll(pageGenericResult.getData().getData()); - } else { - log.error(pageGenericResult.getMsg()); - } - } - } - - // 批量查询 成员的accountId - List dingEmployeeInfoSaveRecordList = new ArrayList<>(); - if (allOrganizationEmployeePositionList.size() <= GROUP_SIZE) { - log.info("assemblerAccountId :{}", allOrganizationEmployeePositionList.size()); - assemblerAccountId(allOrganizationEmployeePositionList, dingEmployeeInfoSaveRecordList); - } else { - log.info("assemblerAccountId :{}", allOrganizationEmployeePositionList.size()); - List> split = Lists.partition(allOrganizationEmployeePositionList, GROUP_SIZE); - for (List segment : split) { - assemblerAccountId(segment, dingEmployeeInfoSaveRecordList); - } - } - // 批量保存用户信息 - saveBatch(dingEmployeeInfoSaveRecordList); - - log.info("员工同步完成"); - - } - - /** - * 更新员工信息 主要是头像 - * - * @param empCode - */ - public void getEmployeeByCode(String empCode) { - GenericResult result = zwddClient.getEmployeeByCode(empCode); - log.error("请求员工信息 result:{}", JSON.toJSONString(result)); - if (!result.isSuccess()) { - log.error("请求员工信息失败 :{},mesg:{}", empCode, result.getMsg()); - return; - } - EmployeeInfoDTO data = result.getData(); - - if (Objects.isNull(data)) { - log.error("请求员工信息失败 返回为空"); - return; - } - - DingEmployeeInfo emp = dingEmployeeInfoService.getOne(Wrappers.lambdaQuery(DingEmployeeInfo.class) - .eq(DingEmployeeInfo::getEmployeeCode, empCode) - .last(BizConst.LIMIT_1)); - - if (Objects.nonNull(emp)) { - emp.setAvatar(data.getGovEmpAvatar()); - dingEmployeeInfoService.updateById(emp); - } - - UserInfo user = userInfoService.getOne(Wrappers.lambdaQuery(UserInfo.class) - .eq(UserInfo::getEmployeeCode, empCode) - .last(BizConst.LIMIT_1)); - - if (Objects.nonNull(user)) { - user.setAvatar(data.getGovEmpAvatar()); - userInfoService.updateById(user); - } - } - - /** - * 更新一整个单位的 - * - * @param orgCode - */ - public void getBatchEmployeeByCode(String orgCode) { - - List employees = dingEmployeeInfoService.list(Wrappers.lambdaQuery(DingEmployeeInfo.class) - .eq(DingEmployeeInfo::getEmpPosUnitCode, orgCode)); - - for (DingEmployeeInfo employee : employees) { - getEmployeeByCode(employee.getEmployeeCode()); - } - } - - /** - * 获取token - */ - public String getToken() { - GenericResult accessToken = zwddClient.getAccessToken(); - return accessToken.getData(); - } - - public String getAuthToken() { - GenericResult accessToken = zwddAuthClient.getAccessToken(); - return accessToken.getData(); - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/ding/task/GovBusinessStripsTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/ding/task/GovBusinessStripsTask.java index e86f682..3f11647 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/ding/task/GovBusinessStripsTask.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/ding/task/GovBusinessStripsTask.java @@ -35,7 +35,6 @@ public class GovBusinessStripsTask { private final IGovBusinessStripService iGovBusinessStripService; @Transactional(rollbackFor = Exception.class) -// @Scheduled(cron = "0 0 1 * * ?") public void batchGetGovBusinessStripsTask() { PageSubGovBusinessStripsQuery pageSubGovBusinessStripsQuery = new PageSubGovBusinessStripsQuery(); pageSubGovBusinessStripsQuery.setPageNo(1); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/ding/task/OrganizationBatchGetTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/ding/task/OrganizationBatchGetTask.java deleted file mode 100644 index a51a31f..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/ding/task/OrganizationBatchGetTask.java +++ /dev/null @@ -1,256 +0,0 @@ - -package com.hz.pm.api.ding.task; - -import cn.hutool.core.collection.CollUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.google.common.collect.Lists; -import com.ningdatech.basic.model.GenericResult; -import com.hz.pm.api.common.model.constant.BizConst; -import com.hz.pm.api.ding.model.DingOrgInfoTreeDTO; -import com.hz.pm.api.organization.model.entity.DingOrganization; -import com.hz.pm.api.organization.service.IDingOrganizationService; -import com.ningdatech.zwdd.client.ZwddClient; -import com.ningdatech.zwdd.model.dto.DingOrgInfoDTO; -import com.ningdatech.zwdd.model.dto.DingScopesV2DTO; -import com.ningdatech.zwdd.model.dto.PageSubOrganizationCodeDTO; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * @author liuxinxin - * @date 2023/2/7 上午10:15 - */ - -@Slf4j -@Component -public class OrganizationBatchGetTask { - - @Autowired - private ZwddClient zwddClient; - - private static final Integer GROUP_SIZE = 100; - - @Autowired - private IDingOrganizationService iDingOrganizationService; - - @Autowired - private EmployeeBatchGetTask employeeBatchGetTask; - - /** - * 获取浙政钉组织架构 - */ - @Transactional(rollbackFor = Exception.class) -// @Scheduled(cron = "0 0 1 * * ?") - public void batchGetOrganizationTask() { -// List allList = iDingOrganizationService.list(); -// List currentAllOrganizationCodeList = allList.stream().map(DingOrganization::getOrganizationCode).collect(Collectors.toList()); - // 全量删除 - iDingOrganizationService.remove(Wrappers.lambdaQuery(DingOrganization.class).isNotNull(DingOrganization::getId)); - // 获取顶级组织code - GenericResult scopesV2Result = zwddClient.getScopesV2(); - DingScopesV2DTO scopesV2 = scopesV2Result.getData(); - - if (Objects.nonNull(scopesV2)) { - // 顶级组织code - List deptVisibleScopes = scopesV2.getDeptVisibleScopes(); - log.info("顶级组织code: size = " + deptVisibleScopes.size() + "列表:" + JSONObject.toJSONString(deptVisibleScopes)); - // 获取顶级节点信息 - GenericResult> listGenericResult = zwddClient.listOrganizationsByCodes(deptVisibleScopes); - log.info("listGenericResult: {}" + JSON.toJSONString(listGenericResult)); - List dingOrgInfoDtos = listGenericResult.getData(); - for (String orgCode : deptVisibleScopes) { -// if (currentAllOrganizationCodeList.contains(orgCode)) { -// log.info("已存在组织架构---{}", orgCode); -// continue; -// } - List treeDTOList = new ArrayList<>(); - - DingOrgInfoTreeDTO childDingOrgInfoTreeDTO = new DingOrgInfoTreeDTO(); - //设置节点详情 - if (dingOrgInfoDtos != null && !dingOrgInfoDtos.isEmpty()) { - for (DingOrgInfoDTO orgInfo : dingOrgInfoDtos) { - if (orgInfo.getOrganizationCode().equals(orgCode)) { - childDingOrgInfoTreeDTO.setDingOrgInfoDTO(orgInfo); - } - } - } - childDingOrgInfoTreeDTO.setCode(orgCode); - childDingOrgInfoTreeDTO.setChildCodes(new ArrayList<>()); - getDingOrgChild(childDingOrgInfoTreeDTO); - treeDTOList.add(childDingOrgInfoTreeDTO); - if (CollectionUtils.isNotEmpty(treeDTOList)) { - List saveRecordList = new ArrayList<>(); - buildSaveRecordList(treeDTOList, saveRecordList); - // 批量保存 - if (saveRecordList.size() <= GROUP_SIZE) { - iDingOrganizationService.saveBatch(saveRecordList); - } else { - List> split = Lists.partition(saveRecordList, GROUP_SIZE); - for (List segment : split) { - iDingOrganizationService.saveBatch(segment); - } - } - } - log.info("----拉取浙政钉组织结构结束---,顶级code:" + orgCode); - } - } - } - - /** - * 更新 其 子单位 - * @param orgCode - */ - public void organizationGetSubs(String orgCode) { - log.info("----拉取浙政钉组织子单位开始---,顶级code:" + orgCode); - DingOrganization topOrg = iDingOrganizationService.getOne(Wrappers.lambdaQuery(DingOrganization.class) - .eq(DingOrganization::getOrganizationCode, orgCode) - .last(BizConst.LIMIT_1)); - // 顶级组织code - GenericResult subOrganizationResult = zwddClient.pageSubOrganizationCodes(1, 100, orgCode); - log.info("subOrganizationResult: {}" + JSON.toJSONString(subOrganizationResult)); - PageSubOrganizationCodeDTO data = subOrganizationResult.getData(); - List subOrganizationCodeList = data.getSubOrganizationCodeList(); - - if(Objects.isNull(subOrganizationCodeList)){ - log.info("subOrganizationCodeList为null"); - return; - } - - employeeBatchGetTask.batchGetEmployeeTaskByOrdCode(orgCode); - - for(String subOrganizationCode : subOrganizationCodeList){ - GenericResult organizationByCode = zwddClient.getOrganizationByCode(subOrganizationCode); - DingOrgInfoDTO dingOrgInfo = organizationByCode.getData(); - DingOrganization old = iDingOrganizationService.getOne(Wrappers.lambdaQuery(DingOrganization.class) - .eq(DingOrganization::getOrganizationCode, dingOrgInfo.getOrganizationCode()) - .last(BizConst.LIMIT_1)); - if(Objects.nonNull(old)){ - log.info("该单位已经存在 :{}",old.getOrganizationName()); - organizationGetSubs(dingOrgInfo.getOrganizationCode()); -// employeeBatchGetTask.batchGetEmployeeTaskByOrdCode(dingOrgInfo.getOrganizationCode()); - continue; - } - - DingOrganization organization = new DingOrganization(); - organization.setOrganizationCode(dingOrgInfo.getOrganizationCode()); - organization.setOrganizationName(dingOrgInfo.getOrganizationName()); - //和顶级单位一个区域 - organization.setDivisionCode(topOrg.getDivisionCode()); - organization.setParentCode(dingOrgInfo.getParentCode()); - organization.setTypeName(dingOrgInfo.getTypeName()); - organization.setAddress(dingOrgInfo.getAddress()); - organization.setBusinessStripCodes(dingOrgInfo.getBusinessStripCodes()); - organization.setDisplayOrder(dingOrgInfo.getDisplayOrder()); - organization.setGmtCreate(LocalDateTime.now()); - organization.setInstitutionLevelCode(dingOrgInfo.getInstitutionLevelCode()); - organization.setParentName(dingOrgInfo.getParentName()); - if(iDingOrganizationService.save(organization)){ - organizationGetSubs(organization.getOrganizationCode()); -// employeeBatchGetTask.batchGetEmployeeTaskByOrdCode(organization.getOrganizationCode()); - } - } - - log.info("----拉取浙政钉组织子单位结束---,顶级code:" + orgCode); - } - - /** - * 查看下 当前的子单位信息 - * @param orgCode - */ - public void organizationSubGetOrgs(String orgCode) { - // 顶级组织code - GenericResult subOrganizationResult = zwddClient.pageSubOrganizationCodes(1, 100, orgCode); - log.info("subOrganizationResult: {}" + JSON.toJSONString(subOrganizationResult)); - PageSubOrganizationCodeDTO data = subOrganizationResult.getData(); - List subOrganizationCodeList = data.getSubOrganizationCodeList(); - - if(Objects.isNull(subOrganizationCodeList)){ - log.info("subOrganizationCodeList为null"); - return; - } - - for(String subOrganizationCode : subOrganizationCodeList){ - GenericResult organizationByCode = zwddClient.getOrganizationByCode(subOrganizationCode); - DingOrgInfoDTO dingOrgInfo = organizationByCode.getData(); - log.info("dingOrgInfo :{}",JSON.toJSONString(dingOrgInfo)); - } - } - - private void buildSaveRecordList(List treeDTOList, List saveRecordList) { - if (CollectionUtils.isEmpty(treeDTOList)) { - return; - } - for (DingOrgInfoTreeDTO dingOrgInfoTreeDTO : treeDTOList) { - DingOrganization saveRecord = new DingOrganization(); - DingOrgInfoDTO dingOrgInfoDTO = dingOrgInfoTreeDTO.getDingOrgInfoDTO(); - List childCodes = dingOrgInfoTreeDTO.getChildCodes(); - saveRecord.setDisplayOrder(dingOrgInfoDTO.getDisplayOrder()); -// saveRecord.setEnabled("1"); - saveRecord.setParentCode(dingOrgInfoDTO.getParentCode()); - saveRecord.setTypeCode(dingOrgInfoDTO.getTypeCode()); - saveRecord.setTypeName(dingOrgInfoDTO.getTypeName()); - saveRecord.setOrganizationCode(dingOrgInfoDTO.getOrganizationCode()); -// saveRecord.setSubCount((long) dingOrgInfoTreeDTO.getChildCodes().size()); - saveRecord.setOrganizationName(dingOrgInfoDTO.getOrganizationName()); - saveRecord.setDivisionCode(dingOrgInfoDTO.getDivisionCode()); - saveRecordList.add(saveRecord); - if (CollectionUtils.isNotEmpty(childCodes)) { - buildSaveRecordList(childCodes, saveRecordList); - } - } - } - - private void getDingOrgChild(DingOrgInfoTreeDTO parentDingOrgInfoTreeDTO) { - String parentOrgCode = parentDingOrgInfoTreeDTO.getCode(); - DingOrgInfoDTO orgInfoDTO = parentDingOrgInfoTreeDTO.getDingOrgInfoDTO(); - boolean leaf = orgInfoDTO.getLeaf(); - if (!leaf) { - int currentPage = 1; - int pageSize = 100; - GenericResult pageSubOrganizationCodeDTOGenericResult = zwddClient.pageSubOrganizationCodes(currentPage++, pageSize, parentOrgCode); - PageSubOrganizationCodeDTO pageSubOrganizationCodeDTO = pageSubOrganizationCodeDTOGenericResult.getData(); - - if (CollUtil.isNotEmpty(pageSubOrganizationCodeDTO.getSubOrganizationCodeList())) { - List subOrganizationCodeList = new ArrayList<>(pageSubOrganizationCodeDTO.getSubOrganizationCodeList()); - Long totalSize = pageSubOrganizationCodeDTO.getTotalSize(); - - while (totalSize > (long) currentPage * pageSize) { - GenericResult subPageSubOrganizationCodeDTOGenericResult = zwddClient - .pageSubOrganizationCodes(currentPage++, pageSize, parentOrgCode); - PageSubOrganizationCodeDTO subOrganizationCodeDTO = subPageSubOrganizationCodeDTOGenericResult.getData(); - if (CollectionUtils.isNotEmpty(subOrganizationCodeDTO.getSubOrganizationCodeList())) { - subOrganizationCodeList.addAll(subOrganizationCodeDTO.getSubOrganizationCodeList()); - } - } - - if (CollectionUtils.isNotEmpty(subOrganizationCodeList)) { - GenericResult> listGenericResult = zwddClient - .listOrganizationsByCodes(subOrganizationCodeList); - List dingOrgInfoDtos = listGenericResult.getData(); - List dingOrgInfoTreeDTOList = dingOrgInfoDtos.stream().map(r -> { - DingOrgInfoTreeDTO dingOrgInfoTreeDTO = new DingOrgInfoTreeDTO(); - dingOrgInfoTreeDTO.setCode(r.getOrganizationCode()); - dingOrgInfoTreeDTO.setDingOrgInfoDTO(r); - dingOrgInfoTreeDTO.setChildCodes(new ArrayList<>()); - getDingOrgChild(dingOrgInfoTreeDTO); - return dingOrgInfoTreeDTO; - }).collect(Collectors.toList()); - parentDingOrgInfoTreeDTO.setChildCodes(dingOrgInfoTreeDTOList); - } - } - } - } -} - - diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/ExpertInfoCmdAssembler.java b/hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/ExpertInfoCmdAssembler.java index 4779e5e..b7aa5ff 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/ExpertInfoCmdAssembler.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/ExpertInfoCmdAssembler.java @@ -53,17 +53,17 @@ public class ExpertInfoCmdAssembler { private static List buildExpertAvoidCompanyList(ExpertProfessionalInfo professionalInfo) { - List expertAvoidCompanyList = new ArrayList<>(); + List avoidCompanies = new ArrayList<>(); List avoidCompanyList = professionalInfo.getAvoidCompanyList(); if (CollectionUtils.isNotEmpty(avoidCompanyList)) { - expertAvoidCompanyList = avoidCompanyList.stream().map(r -> { + avoidCompanyList.forEach(r -> { ExpertAvoidCompanyDTO expertAvoidCompanyDTO = new ExpertAvoidCompanyDTO(); expertAvoidCompanyDTO.setCompanyName(r.getCompanyName()); expertAvoidCompanyDTO.setCompanyUniqCode(r.getCompanyUniqCode()); - return expertAvoidCompanyDTO; - }).collect(Collectors.toList()); + avoidCompanies.add(expertAvoidCompanyDTO); + }); } - return expertAvoidCompanyList; + return avoidCompanies; } private static List buildExpertRegionList(ExpertBasicInfo basicInfo) { diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/ExpertUserInfoAssembler.java b/hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/ExpertUserInfoAssembler.java index 7ed854d..41edd36 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/ExpertUserInfoAssembler.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/ExpertUserInfoAssembler.java @@ -9,7 +9,6 @@ import com.hz.pm.api.expert.constant.ExpertApplyTypeEnum; import com.hz.pm.api.expert.entity.*; import com.hz.pm.api.expert.model.*; import com.hz.pm.api.expert.model.dto.*; -import com.hz.pm.api.expert.model.vo.ExpertFullInfoVO; import com.hz.pm.api.gov.model.vo.GovBusinessStripVO; import com.hz.pm.api.meta.constant.ExpertDictTypeEnum; import com.hz.pm.api.meta.constant.ExpertTagEnum; @@ -42,60 +41,6 @@ public class ExpertUserInfoAssembler { private final DictionaryCache dictionaryCache; private final RegionCacheHelper regionCacheHelper; - public ExpertFullInfoVO buildExpertDetail(List attachFiles, ExpertFullInfoAllDTO expertFullInfoAll) { - ExpertUserFullInfoDTO expertUserInfo = expertFullInfoAll.getExpertUserInfoDTO(); - // 字典字典段map - Map> dictMap = buildDictInfoMap(expertFullInfoAll.getExpertDictionaryList()); - // 专家文件资料map - Map fileMap = buildFileBasicInfoMap(attachFiles); - // 专家标签字段map - Map> tagMap = buildTagFieldInfoMap(expertFullInfoAll.getExpertTagList()); - // 专家履职意向地 - List intentionWorkRegions = expertFullInfoAll.getExpertIntentionWorkRegionInfo(); - // 专家回避单位列表 - List avoidCompanies = expertFullInfoAll.getExpertAvoidCompanyList(); - // 基本信息 - ExpertBasicInfo basicInfo = convert(expertUserInfo, dictMap, tagMap, intentionWorkRegions); - // 学历信息 - ExpertEduInfo eduInfo = buildExpertEduInfo(expertUserInfo, dictMap); - // 职业信息 - ExpertJobInfo jobInfo = buildExpertJobInfo(expertUserInfo, dictMap); - jobInfo.setBusinessStrips(expertFullInfoAll.getBusinessStrips()); - // 专业信息 - ExpertProfessionalInfo profession = buildExpertProfessionalInfo(expertUserInfo, dictMap, tagMap, fileMap, avoidCompanies); - // 推荐信息 - ExpertRecommendInfo recommendInfo = new ExpertRecommendInfo(); - recommendInfo.setRecommendedWay(dictMap.get(ExpertDictTypeEnum.RECOMMENDED_WAY.getKey())); - recommendInfo.setRecommendFile(expertUserInfo.getRecommendFile()); - // 其他信息 - ExpertOtherInfo otherInfo = new ExpertOtherInfo(); - otherInfo.setOther(tagMap.get(ExpertTagEnum.OTHER.getKey())); - otherInfo.setRemark(expertUserInfo.getRemark()); - - // 专家申请履职意向展示列表 - List applyIntentionWorkRegions = expertFullInfoAll.getExpertApplyIntentionWorkRegionInfo().stream().map(r -> { - ExpertRegionInfo intentionWorkRegion = new ExpertRegionInfo(); - intentionWorkRegion.setRegionLevel(r.getRegionLevel()); - intentionWorkRegion.setRegionCode(r.getRegionCode()); - intentionWorkRegion.setRegionName(regionCacheHelper.getUnionPath(r.getRegionCode(), r.getRegionLevel())); - return intentionWorkRegion; - }).collect(Collectors.toList()); - - if (CollUtil.isEmpty(basicInfo.getExpertIntentionWorkRegions())) { - basicInfo.setExpertIntentionWorkRegions(applyIntentionWorkRegions); - } - ExpertFullInfoVO resExpertFullInfo = new ExpertFullInfoVO(); - resExpertFullInfo.setUserId(expertUserInfo.getUserId()); - resExpertFullInfo.setBasicInfo(basicInfo); - resExpertFullInfo.setEduInfo(eduInfo); - resExpertFullInfo.setJobInfo(jobInfo); - resExpertFullInfo.setProfessionalInfo(profession); - resExpertFullInfo.setRecommendInfo(recommendInfo); - resExpertFullInfo.setExpertOtherInfo(otherInfo); - resExpertFullInfo.setExpertApplyIntentionWorkRegions(applyIntentionWorkRegions); - return resExpertFullInfo; - } - public static Map buildFileBasicInfoMap(List attachFiles) { return attachFiles.stream().map(r -> { FileBasicInfo fileBasicInfo = new FileBasicInfo(); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/expert/controller/ExpertController.java b/hz-pm-api/src/main/java/com/hz/pm/api/expert/controller/ExpertController.java index 7b12ace..c8207d5 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/expert/controller/ExpertController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/expert/controller/ExpertController.java @@ -44,20 +44,6 @@ public class ExpertController { expertManage.expertRegistration(request); } - @PostMapping("/basic-info-submit") - @ApiOperation("专家管理员新增专家)") - @WebLog("专家管理员新增专家") - public void expertBasicInfoSubmit(@Valid @RequestBody ExpertUserBasicInfoSubmitRequest request) { - expertManage.expertBasicInfoSubmit(request); - } - - @PostMapping("/basic-info-submit-notvalid") - @ApiOperation("专家管理员新增专家 参数不校检") - @WebLog("专家管理员新增专家 参数不校检") - public void expertBasicInfoSubmitNotValid(@RequestBody ExpertUserBasicInfoSubmitRequest request) { - expertManage.expertBasicInfoSubmit(request); - } - @GetMapping("/portrait/{expertId}/{year}") public ExpertPortraitVO expertPortrait(@PathVariable Long expertId, @PathVariable Integer year) { return expertManage.expertPortrait(expertId, year); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/expert/manage/ExpertManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/expert/manage/ExpertManage.java index cbf7bad..371814c 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/expert/manage/ExpertManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/expert/manage/ExpertManage.java @@ -83,9 +83,6 @@ public class ExpertManage { private final IExpertUserFullInfoService expertUserFullInfoService; private final ExpertInfoService expertInfoService; private final IUserInfoService userInfoService; - private final ExpertMetaApplyManage expertMetaApplyManage; - private final IUserRoleService userRoleService; - private final IRoleService roleService; private final VerifyCodeCheckHelper verifyCodeCheckHelper; private final ZwddClient zwddClient; private final IMeetingExpertService meetingExpertService; @@ -112,30 +109,6 @@ public class ExpertManage { }).filter(Objects::nonNull).collect(Collectors.groupingBy(DictionaryVO::getDictionaryType)); } - /** - * 专家管理员新增专家 - * - * @param req / - */ - @Transactional(rollbackFor = Exception.class) - public void expertBasicInfoSubmit(ExpertUserBasicInfoSubmitRequest req) { - Long operatorId = LoginUserUtil.getUserId(); - // 用户id - Long userId = assemblerAndGenerateExpert(req, operatorId); - // 批量通过专家入库审核/专家履职意向审核 - expertMetaApplyManage.autoPassExpertApply(userId); - - // 增加用户专家角色 - Role role = roleService.getOne(Wrappers.lambdaQuery(Role.class).eq(Role::getCode, RoleEnum.EXPERT.name())); - UserRole expertRole = userRoleService.getOne(userId, role.getId()); - if (Objects.isNull(expertRole)) { - expertRole = new UserRole(); - expertRole.setUserId(userId); - expertRole.setRoleId(role.getId()); - userRoleService.save(expertRole); - } - } - public ExpertDetailVO getExpertDetail(Long userId, boolean getFileDetail) { ExpertUserFullInfo eui = expertUserFullInfoService.getByUserId(userId); if (eui == null) { diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/gov/controller/GovProjectCollectionController.java b/hz-pm-api/src/main/java/com/hz/pm/api/gov/controller/GovProjectCollectionController.java index 772cc91..c75b47c 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/gov/controller/GovProjectCollectionController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/gov/controller/GovProjectCollectionController.java @@ -8,7 +8,6 @@ import com.hz.pm.api.gov.model.vo.GovBizProjectListVO; import com.hz.pm.api.gov.model.vo.GovOperationProjectDetailVO; import com.hz.pm.api.gov.model.vo.GovProjectDictionaryVO; import com.hz.pm.api.projectlib.model.req.ProjectListReq; -import com.hz.pm.api.scheduler.task.SynProjectCollectionTask; import com.hz.pm.api.scheduler.task.SynProvinceOrgTask; import com.ningdatech.basic.model.PageVo; import com.ningdatech.log.annotation.WebLog; @@ -40,9 +39,6 @@ import java.util.List; public class GovProjectCollectionController { private final GovProjectCollectionManage collectionManage; - - private final SynProjectCollectionTask collectionTask; - private final SynProvinceOrgTask synProvinceOrgTask; @GetMapping("/dictionary") @@ -155,41 +151,6 @@ public class GovProjectCollectionController { return collectionManage.operationDraftRemove(draftId); } - @PostMapping("/push-task") - @ApiOperation("主动调用定时器方法") - @WebLog("主动调用定时器方法") - public void pushTask() throws UnknownHostException { - collectionTask.doTask(); - } - - @PostMapping("/push-task-single") - @ApiOperation("主动调用定时器方法") - @WebLog("主动调用定时器方法") - public void pushTaskSingle(@RequestBody List projectCodes) { - collectionTask.doTaskSingle(projectCodes); - } - - @PostMapping("/staging-convert-pdf") - @ApiOperation("把库存的项目归集的文件 都转换成PDF文件存入字段") - @WebLog("主动转换库存的文件都为PDF文件") - public void stagingConvertPdf(@RequestParam(required = false) String projId) { - collectionTask.stagingConvertPdf(projId); - } - - @PostMapping("/staging-convert-pdf2") - @ApiOperation("把库存的项目归集的文件approval_file重新转换") - @WebLog("把库存的项目归集的文件approval_file重新转换") - public void stagingConvertPdf2(@RequestParam(required = false) String projId) { - collectionTask.stagingConvertPdf2(projId); - } - - @PostMapping("/staging-convert-pdf3") - @ApiOperation("把库存的项目归集的文件 都转换成PDF文件存入字段 采购") - @WebLog("主动转换库存的文件都为PDF文件 采购") - public void stagingConvertPdf3(@RequestParam(required = false) String projId) { - collectionTask.stagingConvertPdf3(projId); - } - @PostMapping("/rebuild-project-code") @ApiOperation("重新生成项目编号") @WebLog("重新生成项目编号") diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/gov/entity/GovBusinessStrip.java b/hz-pm-api/src/main/java/com/hz/pm/api/gov/entity/GovBusinessStrip.java deleted file mode 100644 index 35d5308..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/gov/entity/GovBusinessStrip.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.hz.pm.api.gov.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModel; - -import java.io.Serializable; - -/** - *

- * - *

- * - * @author liuxinxin - * @since 2023-04-13 - */ -@TableName("gov_business_strip") -@ApiModel(value = "GovBusinessStrip对象", description = "") -public class GovBusinessStrip implements Serializable { - - private static final long serialVersionUID = 1L; - - private Long id; - - private String businessStripCode; - - private String businessStripName; - - private String parentCode; - - private String parentName; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - public String getBusinessStripCode() { - return businessStripCode; - } - - public void setBusinessStripCode(String businessStripCode) { - this.businessStripCode = businessStripCode; - } - public String getBusinessStripName() { - return businessStripName; - } - - public void setBusinessStripName(String businessStripName) { - this.businessStripName = businessStripName; - } - public String getParentCode() { - return parentCode; - } - - public void setParentCode(String parentCode) { - this.parentCode = parentCode; - } - public String getParentName() { - return parentName; - } - - public void setParentName(String parentName) { - this.parentName = parentName; - } - - @Override - public String toString() { - return "GovBusinessStrip{" + - "id=" + id + - ", businessStripCode=" + businessStripCode + - ", businessStripName=" + businessStripName + - ", parentCode=" + parentCode + - ", parentName=" + parentName + - "}"; - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java index 85076c6..ca17605 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java @@ -115,20 +115,15 @@ public class GovProjectCollectionManage { private final FileService fileService; - @Value("${project.push-url}") + @Value("${project.push-url:}") private String pushUrl; - @Value("${project.no-effective-url}") + @Value("${project.no-effective-url:}") private String noEffectiveUrl; - @Value("${project.delete-all-url}") + @Value("${project.delete-all-url:}") private String deleteAllUrl; - @Value("${spring.profiles.active}") - private String active; - - private final RegionCacheHelper regionCacheHelper; - private final IProjectService projectService; private final IProjectApplicationService applicationService; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/irs/config/IrsSealPlatformProperties.java b/hz-pm-api/src/main/java/com/hz/pm/api/irs/config/IrsSealPlatformProperties.java index c9fda13..819fbe9 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/irs/config/IrsSealPlatformProperties.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/irs/config/IrsSealPlatformProperties.java @@ -22,27 +22,27 @@ public class IrsSealPlatformProperties { public static String apiUrl; - @Value("${irs.seal-platform.project-id}") + @Value("${irs.seal-platform.project-id:}") public void setProjectId(String projectId) { IrsSealPlatformProperties.projectId = projectId; } - @Value("${irs.seal-platform.project-secret}") + @Value("${irs.seal-platform.project-secret:}") public void setProjectSecret(String projectSecret) { IrsSealPlatformProperties.projectSecret = projectSecret; } - @Value("${irs.seal-platform.access-key}") + @Value("${irs.seal-platform.access-key:}") public void setAccessKey(String accessKey) { IrsSealPlatformProperties.accessKey = accessKey; } - @Value("${irs.seal-platform.secret-key}") + @Value("${irs.seal-platform.secret-key:}") public void setSecretKey(String secretKey) { IrsSealPlatformProperties.secretKey = secretKey; } - @Value("${irs.seal-platform.api-url}") + @Value("${irs.seal-platform.api-url:}") public void setApiUrl(String apiUrl) { IrsSealPlatformProperties.apiUrl = apiUrl; } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/irs/controller/ApplicationController.java b/hz-pm-api/src/main/java/com/hz/pm/api/irs/controller/ApplicationController.java deleted file mode 100644 index 3b77374..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/irs/controller/ApplicationController.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.hz.pm.api.irs.controller; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.ningdatech.log.annotation.WebLog; -import com.hz.pm.api.irs.manage.AppIrsManage; -import com.hz.pm.api.irs.model.dto.ApiApplyDTO; -import com.hz.pm.api.irs.model.dto.PushProjectAppToIrsDTO; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; - -import javax.validation.Valid; -import java.security.NoSuchAlgorithmException; - -/** - * @Classname ApplicationController - * @Description - * @Date 2023/7/12 9:26 - * @Author PoffyZhang - */ -@RestController -@RequestMapping("/api/v1/irs/app") -@AllArgsConstructor -@Slf4j -@Valid -public class ApplicationController { - - private final AppIrsManage appIrsManage; - - @PostMapping("/push-project-app") - @WebLog("推送项目和应用关系") - public Boolean pushProjectApp(@Valid @RequestBody PushProjectAppToIrsDTO dto) throws Exception { - return appIrsManage.pushProjectApp(dto); - } - - @GetMapping("/sreach-app") - public JSONObject searchApp(ApiApplyDTO apply) throws NoSuchAlgorithmException { - return appIrsManage.searchApp(apply); - } - - @GetMapping("/sreach-apps") - public JSONArray searchApps(ApiApplyDTO apply) throws NoSuchAlgorithmException { - return appIrsManage.searchApps(apply); - } - - @GetMapping("/digitalResourcesIndicators/{appCode}/{pageSize}") - public JSONObject getDigitalResourcesIndicators(@PathVariable String appCode,@PathVariable Integer pageSize) { - return appIrsManage.getDigitalResourceIndicatorsByAppCode(appCode, pageSize); - } - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/irs/controller/IrsController.java b/hz-pm-api/src/main/java/com/hz/pm/api/irs/controller/IrsController.java deleted file mode 100644 index 07467c4..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/irs/controller/IrsController.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.hz.pm.api.irs.controller; - -import com.hz.pm.api.projectdeclared.manage.IrsManage; -import com.hz.pm.api.projectdeclared.model.vo.IrsApplicationVO; -import com.hz.pm.api.projectdeclared.model.vo.PiotTasksVO; -import com.hz.pm.api.scheduler.task.SynProjectCoreBizTask; -import com.ningdatech.log.annotation.WebLog; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.net.UnknownHostException; -import java.security.NoSuchAlgorithmException; -import java.util.List; - -/** - * @Classname IrsController - * @Description irs 一些下拉框信息 - * @Date 2023/3/13 9:53 - * @Author PoffyZhang - */ -@Slf4j -@Validated -@RestController -@RequestMapping("/api/v1/irs") -@Api(value = "irs", tags = "irs-信息查询") -@RequiredArgsConstructor -public class IrsController { - - private final IrsManage irsManage; - - private final SynProjectCoreBizTask projectCoreBizTask; - - @ApiOperation(value = "irs应用列表", notes = "irs应用列表") - @WebLog("irs应用列表") - @GetMapping("/application-list") - public List applicationList(@RequestParam(required = false) String areaCode) { - return irsManage.applicationList(areaCode); - } - - @ApiOperation(value = "试点任务列表", notes = "试点任务列表") - @WebLog("试点任务列表") - @GetMapping("/piot-tasks") - public List piotTasks() { - return irsManage.listPiotTasks(); - } - - @ApiOperation(value = "获取企业社会信用编码", notes = "获取企业社会信用编码") - @GetMapping("/get-credit-code") - public String getCreditCode() throws NoSuchAlgorithmException { - return irsManage.getCreditCode(); - } - - @ApiOperation(value = "强制刷新核心业务", notes = "强制刷新核心业务") - @GetMapping("/refresh-core-biz") - public void refreshCoreBiz(@RequestParam(required = false) String orgCode) throws UnknownHostException { - if(StringUtils.isNotBlank(orgCode)){ - projectCoreBizTask.doTask(orgCode); - }else{ - projectCoreBizTask.doTask(); - } - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/irs/manage/AppIrsManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/irs/manage/AppIrsManage.java deleted file mode 100644 index 49e355b..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/irs/manage/AppIrsManage.java +++ /dev/null @@ -1,396 +0,0 @@ -package com.hz.pm.api.irs.manage; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.crypto.digest.MD5; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.hz.pm.api.common.model.constant.RegionConst; -import com.hz.pm.api.common.enumeration.CommonEnum; -import com.hz.pm.api.common.statemachine.util.StateMachineUtil; -import com.hz.pm.api.common.util.CryptUtils; -import com.hz.pm.api.common.util.HttpUtil; -import com.hz.pm.api.irs.model.dto.ApiApplyDTO; -import com.hz.pm.api.irs.model.dto.ApiApplySearchResult; -import com.hz.pm.api.irs.model.dto.PushProjectAppToIrsDTO; -import com.hz.pm.api.irs.model.res.ApiResponse; -import com.hz.pm.api.projectlib.model.dto.ProjectDTO; -import com.hz.pm.api.projectlib.model.entity.Project; -import com.hz.pm.api.projectlib.model.entity.ProjectApplication; -import com.hz.pm.api.projectlib.service.IProjectApplicationService; -import com.hz.pm.api.projectlib.service.IProjectService; -import com.ningdatech.basic.function.VUtils; -import com.ningdatech.irs.service.IRefreshTokenService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestTemplate; - -import javax.annotation.Resource; -import java.security.NoSuchAlgorithmException; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * @Classname AppIrsManage - * @Description - * @Date 2023/7/12 11:43 - * @Author PoffyZhang - */ -@Component -@Slf4j -@RequiredArgsConstructor -public class AppIrsManage { - - private final IProjectService projectService; - - private final IProjectApplicationService applicationService; - - private final StateMachineUtil stateMachineUtil; - - @Value("${irs.push-app.appKey}") - private String pushAppKey; - - @Value("${irs.push-app.appScret}") - private String pushAppScret; - - @Value("${irs.push-app.url}") - private String pushUrl; - - @Value("${irs.search-app.appKey}") - private String searchAppKey; - - @Value("${irs.search-app.appScret}") - private String searchAppScret; - - @Value("${irs.search-app.url}") - private String searchUrl; - @Resource - private IRefreshTokenService refreshTokenService; - - @Value("${irs.interface-refresh.request-token-url}") - private String govRequestTokenUrl; - @Value("${irs.interface-refresh.refresh-token-url}") - private String govRefreshTokenUrl; - - @Value("${irs.push-project-detail.url}") - private String pushProjectUrl; - - @Value("${irs.push-project-detail.appKey}") - private String pushProjectAppKey; - - @Value("${irs.push-project-detail.appSecret}") - private String pushProjectAppSecret; - - //=============数字资源指标获取======================================================================================== - - @Value("${irs.digital-resource-indicators.app-key}") - private String driAppKey; - - @Value("${irs.digital-resource-indicators.app-secret}") - private String driAppSecret; - - @Value("${irs.digital-resource-indicators.interface-name}") - private String driInterfaceName; - - @Value("${irs.digital-resource-indicators.url}") - private String driUrl; - - /** - * 推送 项目和应用关系 - * - * @param dto - * @return - * @throws NoSuchAlgorithmException - */ - public Boolean pushProjectApp(PushProjectAppToIrsDTO dto) throws Exception { - String appCode = dto.getAppCode(); - Long appId = dto.getAppId(); - String projectCode = dto.getProjectCode(); - ProjectApplication app = applicationService.getById(appId); - VUtils.isTrue(Objects.isNull(app)).throwMessage("应用不存在!"); - VUtils.isTrue(CommonEnum.NO.getCode().equals(app.getIsFirst())).throwMessage("应用不是初次新建!"); - Project project = projectService.getProjectByCode(projectCode); - VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在!"); - - ApiApplyDTO apiApply = new ApiApplyDTO(); - apiApply.setAppId(appCode); - JSONObject jsonObject = this.searchApp(apiApply); - ApiApplySearchResult apiApplySearchResult = JSON.parseObject(JSON.toJSONString(jsonObject), ApiApplySearchResult.class); - VUtils.isTrue(Objects.isNull(apiApplySearchResult)).throwMessage("应用在IRS不存在!"); - - long timestamp = System.currentTimeMillis(); - String areaCode = project.getAreaCode(); - String projectName = project.getProjectName(); - String requestSecret = refreshTokenService.refreshToken(pushAppKey, pushAppScret, govRequestTokenUrl, govRefreshTokenUrl, HttpMethod.POST.name()); - String capCode = CryptUtils.encryptHMAC(timestamp + areaCode, "bcb4fc0f517fc168ee543fcf4d231f3b"); - String capTime = String.valueOf(timestamp); - String sign = CryptUtils.MD5Encode(pushAppKey + requestSecret + timestamp); - String url = pushUrl + "?requestTime=" + timestamp + - "&sign=" + sign + "&appKey=" + pushAppKey + "&capCode=" + capCode + "&capTime=" + capTime + - "&baseProjSys=" + apiApplySearchResult.getName() + "&areaCode=" + areaCode + "&baseProjName=" + projectName + - "&baseProjId=" + project.getProjectCode() + - "&isEffective=1&baseProjSysCode=" + appCode; - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity forEntity = restTemplate.getForEntity(url, ApiResponse.class); - - log.info("推送 项目和应用结果 : {}", JSON.toJSONString(forEntity)); - - ApiResponse body = forEntity.getBody(); - - if (Objects.isNull(body) || Objects.isNull(body.getCode()) - || 0 != body.getCode()) { - return Boolean.FALSE; - } - - //保存关系 - app.setAppCode(appCode); - if (applicationService.updateById(app)) { - /** - * 判断下 如果成功的话 那么判断下 这个项目的初次创建的app 是否都已经被注册 - * 如果都已经注册 要调用状态机 进入下一个状态 - */ - List apps = applicationService.list(Wrappers.lambdaQuery(ProjectApplication.class) - .eq(ProjectApplication::getProjectId, project.getId())); - //筛选出 初次新建的app 但是没有appCode的 - apps = apps.stream().filter(a -> { - if (CommonEnum.YES.getCode().equals(a.getIsFirst()) && - StringUtils.isBlank(app.getAppCode())) { - return Boolean.TRUE; - } - return Boolean.FALSE; - }) - .collect(Collectors.toList()); - - //如果筛选出来的 为空的话 就调用状态机 - if (CollUtil.isEmpty(apps)) { - stateMachineUtil.pass(project); - project.setUpdateOn(LocalDateTime.now()); - projectService.updateById(project); - } - } - - return body.getSuccess(); - } - - /** - * 查询app - * - * @param apply - * @return - * @throws NoSuchAlgorithmException - */ - public JSONObject searchApp(ApiApplyDTO apply) throws NoSuchAlgorithmException { - long timestamp = System.currentTimeMillis(); - String appCode = apply.getAppId(); - String requestSecret = refreshTokenService.refreshToken(searchAppKey, searchAppScret, govRequestTokenUrl, govRefreshTokenUrl, HttpMethod.POST.name()); - String sign = CryptUtils.MD5Encode(searchAppKey + requestSecret + timestamp); - String url = searchUrl + "?requestTime=" + timestamp + "&sign=" + sign + - "&appKey=" + searchAppKey + "&" + - "pageSize=10&pageNum=1&appCode=" + appCode + - "&areaCode=&deptCode=&name="; - log.info("url : {}", url); - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity forEntity = restTemplate.getForEntity(url, String.class); - - if (Objects.nonNull(forEntity.getBody()) && Objects.nonNull(forEntity.getBody())) { - JSONObject body = JSON.parseObject(forEntity.getBody()); - if (Objects.isNull(body)) { - return null; - } - JSONObject datas = body.getJSONObject("datas"); - if (Objects.isNull(datas)) { - return null; - } - JSONObject data = datas.getJSONObject("data"); - if (Objects.isNull(data)) { - return null; - } - JSONArray apiApplySearchResult = data.getJSONArray("apiApplySearchResult"); - if (CollUtil.isEmpty(apiApplySearchResult)) { - return null; - } - return apiApplySearchResult.getJSONObject(0); - } - return null; - } - - public JSONArray searchApps(ApiApplyDTO apply) throws NoSuchAlgorithmException { - long timestamp = System.currentTimeMillis(); - String areaCode = StringUtils.isNotBlank(apply.getAreaCode()) ? - convertAreaCode(apply.getAreaCode()) : null; - String requestSecret = refreshTokenService.refreshToken(searchAppKey, searchAppScret, govRequestTokenUrl, govRefreshTokenUrl, - HttpMethod.POST.name()); - String sign = CryptUtils.MD5Encode(searchAppKey + requestSecret + timestamp); - String url = searchUrl + "?requestTime=" + timestamp + "&sign=" + sign + - "&appKey=" + searchAppKey + "&pageSize=1000&" + - "pageNum=1&areaCode=" + areaCode + - "&deptCode=&name="; - log.info("查询应用目录:{}", url); - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity forEntity = restTemplate.getForEntity(url, String.class); - - log.info("查询应用目录 : {}", forEntity.getStatusCode()); - - if (Objects.nonNull(forEntity.getBody())) { - JSONObject body = JSON.parseObject(forEntity.getBody()); - if (Objects.isNull(body)) { - return null; - } - JSONObject datas = body.getJSONObject("datas"); - if (Objects.isNull(datas)) { - return null; - } - JSONObject data = datas.getJSONObject("data"); - if (Objects.isNull(data)) { - return null; - } - JSONArray apiApplySearchResult = data.getJSONArray("apiApplySearchResult"); - return apiApplySearchResult; - } - return null; - } - - /** - * 如果是市本级的 结尾改成01 还要转换开发区的code - * - * @param areaCode - * @return - */ - private String convertAreaCode(String areaCode) { - if (RegionConst.RC_HZ.equals(areaCode) || RegionConst.LS_KF.equals(areaCode)) { - return RegionConst.RC_LS_SBJ_IRS; - } - return areaCode; - } - - public String testGuibing() throws Exception { - long timestamp = System.currentTimeMillis(); - String appSecret = "496f0f2a19994f76b4fd9dae087366c7"; - String appKey = "A331101453557202109017383"; - String method = "POST"; - String secret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, method); - log.info("secret :{}", secret); - String sign = MD5.create().digestHex(appKey + secret + timestamp); - HttpComponentsClientHttpRequestFactory factory = HttpUtil.generateHttpRequestFactory(); - RestTemplate restTemplate; - if (Objects.nonNull(factory)) { - restTemplate = new RestTemplate(factory); - } else { - restTemplate = new RestTemplate(); - } - String appId = "A330000100000202105005790"; - String capCode = CryptUtils.encryptHMAC(timestamp + appId, "bcb4fc0f517fc168ee543fcf4d231f3b"); - String url = "https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/" + - "dataSharing/5crv7i4727abLCv0.htm?requestTime=" + timestamp + - "&sign=" + sign + "&appKey=" + appKey + - "&capCode=" + capCode + "&capTime=" + timestamp + - "&appId=" + appId; - log.info("url :{}", url); - ResponseEntity forEntity = restTemplate.getForEntity(url, String.class); - log.info(forEntity.getBody()); - return forEntity.getBody(); - } - - /** - * 推送项目详情 - * - * @return - */ - public String pushProjectDetail(ProjectDTO projectDto) { - long timestamp = System.currentTimeMillis(); - String appSecret = pushProjectAppSecret; - String appKey = pushProjectAppKey; - String method = HttpMethod.POST.name(); - String secret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, method); - log.info("secret :{}", secret); - String sign = MD5.create().digestHex(appKey + secret + timestamp); - HttpComponentsClientHttpRequestFactory factory = HttpUtil.generateHttpRequestFactory(); - RestTemplate restTemplate; - if (Objects.nonNull(factory)) { - restTemplate = new RestTemplate(factory); - } else { - restTemplate = new RestTemplate(); - } - String baseProjPrincipal = projectDto.getResponsibleMan();//"蒋国海" - String baseProjSetYear = String.valueOf(projectDto.getProjectYear());//"2022" - String baseProjId = projectDto.getProjectCode();//"331123220130969000000" - String baseManDeprt = projectDto.getBuildOrgName();//"遂昌县大数据和金融发展中心" - String baseProjBasis = projectDto.getBaseProjBasis();//"2" - String baseLowestLevel = projectDto.getBaseLowestLevel();//"C" - String ProjPrincipalCall = projectDto.getResponsibleManMobile();//"13884366607" - //内容类别 - String baseConstructionType = projectDto.getBaseConstructionType();//"01" - String baseProjType = projectDto.getBaseProjType();//"1" - String baseProjContacts = projectDto.getContactName();//"毛以林" - String isEffective = "02"; // 有效 - String baseConsDeprtDing = projectDto.getBuildOrgCode();//"GO_9a7dce7fbaf54787998fa004f1b7c0e1"; - String baseProjSetProg = projectDto.getBaseProjSetProg();//"04" - String baseProjContactsCall = projectDto.getContactPhone();//"13857049999" - String baseProjName = projectDto.getProjectName();//"遂昌县大数据和金融发展中心天工系统" - String baseProjConsClass = projectDto.getBaseProjConsClass();//"C" - String areaCode = projectDto.getAreaCode();//"331123000" - String baseAreaName = projectDto.getArea();//"遂昌县"; - String baseManDeprtDing = projectDto.getSuperOrgCode();//"GO_9a7dce7fbaf54787998fa004f1b7c0e1"; - String baseProvManDeprtDing = projectDto.getHigherSuperOrgCode();//"GO_6c383c049d95461f9a0df780140ceb32"; - String baseBasisEstablish = projectDto.getBuildBasis();//"中共遂昌县委办公室关于研究开发“天工”智能化管理平台(三期)的函"; - String capCode = null; - try { - capCode = CryptUtils.encryptHMAC(timestamp + areaCode, "bcb4fc0f517fc168ee543fcf4d231f3b"); - } catch (Exception e) { - log.error(e.getMessage()); - } - - String url = pushProjectUrl + "?" + - "requestTime=" + timestamp + "&sign=" + sign + - "&appKey=" + appKey + "&baseProjPrincipal=" + baseProjPrincipal + "" + - "&baseProjSetYear=" + baseProjSetYear + "&baseProjId=" + baseProjId + - "&baseManDeprt=" + baseManDeprt + "&baseProjBasis=" + baseProjBasis + - "&baseLowestLevel=" + baseLowestLevel + "&ProjPrincipalCall=" + ProjPrincipalCall + - "&baseConstructionType=" + baseConstructionType + "&baseProjType=" + baseProjType + - "&baseProjContacts=" + baseProjContacts + "&isEffective=" + isEffective + - "&baseConsDeprtDing=" + baseConsDeprtDing + "&baseProjSetProg=" + baseProjSetProg + - "&baseProjContactsCall=" + baseProjContactsCall + "&baseProjName=" + baseProjName + - "&baseProjConsClass=" + baseProjConsClass + "&capCode=" + capCode + "&baseManDeprtDing=" + baseManDeprtDing + - "&baseProvManDeprtDing=" + baseProvManDeprtDing + "&baseBasisEstablish=" + baseBasisEstablish + - "&baseAreaCode=" + areaCode + "&capTime=" + timestamp + "&baseAreaName=" + baseAreaName; - log.info("url :{}", url); - ResponseEntity forEntity = restTemplate.getForEntity(url, String.class); - log.info(forEntity.getBody()); - return forEntity.getBody(); - } - - public JSONObject getDigitalResourceIndicatorsByAppCode(String appCode, Integer pageSize) { - long timestamp = System.currentTimeMillis(); - String appSecret = driAppSecret; - String appKey = driAppKey; - String method = HttpMethod.POST.name(); - String secret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, method); - log.info("secret : {}", secret); - String sign = MD5.create().digestHex(appKey + secret + timestamp); - HttpComponentsClientHttpRequestFactory factory = HttpUtil.generateHttpRequestFactory(); - RestTemplate restTemplate; - if (Objects.nonNull(factory)) { - restTemplate = new RestTemplate(factory); - } else { - restTemplate = new RestTemplate(); - } - - String url = driUrl + "?" + - "requestTime=" + timestamp + "&sign=" + sign + - "&appKey=" + appKey + "&appCode=" + appCode + "&pageIndex=1&pageSize=" + pageSize; - log.info("url :{}", url); - ResponseEntity forEntity = restTemplate.getForEntity(url, JSONObject.class); - log.info(Objects.requireNonNull(forEntity.getBody()).toJSONString()); - return forEntity.getBody(); - } - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/irs/manage/ProjectIrsManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/irs/manage/ProjectIrsManage.java deleted file mode 100644 index 93594cd..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/irs/manage/ProjectIrsManage.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.hz.pm.api.irs.manage; - -import com.alibaba.fastjson.JSONObject; -import com.ningdatech.irs.service.IRefreshTokenService; -import com.hz.pm.api.common.util.CryptUtils; -import com.hz.pm.api.common.util.HttpUtil; -import com.hz.pm.api.common.util.RefreshKeyUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestTemplate; -import javax.annotation.Resource; -import java.security.NoSuchAlgorithmException; -import java.util.Objects; - -/** - * @Classname ProjectIrsManage - * @Description - * @Date 2023/8/15 11:43 - * @Author PoffyZhang - */ -@Component -@Slf4j -@RequiredArgsConstructor -public class ProjectIrsManage { - - @Value("${irs.core-biz.appKey}") - private String appKey; - - @Value("${irs.core-biz.appSecret}") - private String appSecret; - - @Value("${irs.core-biz.url}") - private String coreBizUrl; - - @Value("${irs.core-biz.interfaceName}") - private String interfaceName; - @Resource - private IRefreshTokenService refreshTokenService; - - @Value("${irs.interface-refresh.request-token-url}") - private String govRequestTokenUrl; - @Value("${irs.interface-refresh.refresh-token-url}") - private String govRefreshTokenUrl; - - /** - * 查询核心业务 - * - * @param businessName - * @return - * @throws NoSuchAlgorithmException - */ - public JSONObject searchCoreBiz(String businessName,String orgCode,Integer limit,Integer page) { - long timestamp = System.currentTimeMillis(); - String secret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, - HttpMethod.POST.name()); - String sign = null; - try{ - sign = CryptUtils.MD5Encode(appKey + secret + timestamp); - }catch (Exception e){ - log.error(e.getMessage()); - } - HttpComponentsClientHttpRequestFactory factory = HttpUtil.generateHttpRequestFactory(); - RestTemplate restTemplate; - if(Objects.nonNull(factory)){ - restTemplate = new RestTemplate(factory); - }else{ - restTemplate = new RestTemplate(); - } - - String url = coreBizUrl + "?" + - "dingCode=" + (StringUtils.isNotBlank(orgCode)?orgCode:StringUtils.EMPTY) + - "&matterName=" + (StringUtils.isNotBlank(businessName)?businessName:StringUtils.EMPTY) + - "&oid=&useState=1&" + - "limit=" + (Objects.isNull(limit) ? "10" : limit) + "&page=" + (Objects.isNull(page) ? "1" : page) + - "&appKey=" + appKey + "&sign=" + sign + "&requestTime=" + timestamp; - - ResponseEntity forEntity = restTemplate.getForEntity(url, JSONObject.class); - JSONObject body = forEntity.getBody(); - log.info("core biz :{}",body); - - JSONObject datas = body.getJSONObject("datas"); - if(Objects.nonNull(datas)){ - return datas; - } - return forEntity.getBody(); - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/config/WebProperties.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/config/WebProperties.java deleted file mode 100644 index b320696..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/config/WebProperties.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.hz.pm.api.meeting.entity.config; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -/** - *

- * SystemProperties - *

- * - * @author WendyYang - * @since 14:39 2022/9/15 - */ -@Data -@Component -public class WebProperties { - - public static String expertRegistrationUrl; - - public static String webUrl; - - public static String apiHost; - - public static String provincialUrl; - - @Value("${api-host:}") - private void setApiHost(String host) { - apiHost = host; - } - - @Value("${expert-registration.url:/expertEnroll}") - private void setExpertRegistrationUrl(String url) { - expertRegistrationUrl = url; - } - - @Value("${web.url:}") - private void setWebUrl(String url) { - webUrl = url; - } - - /** - * 省局项目管理调用跳转地址 - */ - @Value("${web.provincial:}") - private void setProvincial(String provincial) { - provincialUrl = provincial; - } - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/config/WebProps.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/config/WebProps.java new file mode 100644 index 0000000..7c7cc97 --- /dev/null +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/config/WebProps.java @@ -0,0 +1,27 @@ +package com.hz.pm.api.meeting.entity.config; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + *

+ * WebProps + *

+ * + * @author WendyYang + * @since 14:39 2022/9/15 + */ +@Data +@Component +public class WebProps { + + public static String apiHost; + + + @Value("${api-host:}") + private void setApiHost(String host) { + apiHost = host; + } + +} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/organization/constant/ProcDefCont.java b/hz-pm-api/src/main/java/com/hz/pm/api/organization/constant/ProcDefCont.java new file mode 100644 index 0000000..fc4faf2 --- /dev/null +++ b/hz-pm-api/src/main/java/com/hz/pm/api/organization/constant/ProcDefCont.java @@ -0,0 +1,18 @@ +package com.hz.pm.api.organization.constant; + +/** + *

+ * ProcDefCont + *

+ * + * @author WendyYang + * @since 15:50 2024/3/29 + */ +public class ProcDefCont { + + private ProcDefCont() { + } + + public static final String MODELS_ID_PREFIX = "pd"; + +} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/organization/constants/ProcDefContant.java b/hz-pm-api/src/main/java/com/hz/pm/api/organization/constants/ProcDefContant.java deleted file mode 100644 index 2c379af..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/organization/constants/ProcDefContant.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.hz.pm.api.organization.constants; - -/** - * @Classname ProcDefContant - * @Description - * @Date 2023/7/11 9:35 - * @Author PoffyZhang - */ -public interface ProcDefContant { - - public final static String MODELS_ID_PREFIX = "pd"; - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/organization/controller/DingOrganizationController.java b/hz-pm-api/src/main/java/com/hz/pm/api/organization/controller/DingOrganizationController.java index 25c0e50..c76daac 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/organization/controller/DingOrganizationController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/organization/controller/DingOrganizationController.java @@ -3,8 +3,6 @@ package com.hz.pm.api.organization.controller; import com.hz.pm.api.organization.manage.OrganizationManage; import com.hz.pm.api.organization.model.po.ReqOrganizationListPO; -import com.hz.pm.api.organization.model.po.ReqSynthesizePO; -import com.hz.pm.api.organization.model.vo.KeyTreeVO; import com.hz.pm.api.organization.model.vo.OrganizationTreeVO; import com.hz.pm.api.organization.model.vo.ResOrganizationListVO; import com.ningdatech.basic.model.PageVo; @@ -49,9 +47,4 @@ public class DingOrganizationController { return organizationManage.getChildOrganizationList(parentCode, orgName, false); } - @ApiOperation("组织树状列表筛选(前端定制化接口不可复用)") - @PostMapping("/tree-list") - public List treeVOList(@Valid @RequestBody ReqSynthesizePO request) { - return organizationManage.treeRubbishVOList(request); - } } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/organization/manage/GovBusinessStripManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/organization/manage/GovBusinessStripManage.java index 00954ad..d848f07 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/organization/manage/GovBusinessStripManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/organization/manage/GovBusinessStripManage.java @@ -9,7 +9,6 @@ import com.hz.pm.api.organization.model.vo.GovBusinessStripTreeVO; import com.hz.pm.api.organization.model.vo.ProvincialGovBusinessStripVO; import com.hz.pm.api.organization.service.IGovBusinessStripService; import com.hz.pm.api.organization.service.IProvincialGovBusinessStripService; -import com.hz.pm.api.provincial.service.IJoinReviewProvincialBureauService; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; @@ -30,14 +29,8 @@ import java.util.stream.Collectors; public class GovBusinessStripManage { private final IGovBusinessStripService iGovBusinessStripService; - private final IProvincialGovBusinessStripService provincialGovBusinessStripService; - private final IJoinReviewProvincialBureauService joinReviewProvincialBureauService; - - @Value("${irs.province-gov.can-search}") - private Boolean canSearch; - public List getChildOrganizationList(String parentCode) { if (Objects.isNull(parentCode)) { parentCode = "-1"; @@ -57,15 +50,15 @@ public class GovBusinessStripManage { public List getProvincialGovBusinessStripList(String businessStripName) { List strips = provincialGovBusinessStripService.list(Wrappers.lambdaQuery(ProvincialGovBusinessStrip.class) - .like(StringUtils.isNotBlank(businessStripName),ProvincialGovBusinessStrip::getBusinessStripName,businessStripName) + .like(StringUtils.isNotBlank(businessStripName), ProvincialGovBusinessStrip::getBusinessStripName, businessStripName) .orderByAsc(ProvincialGovBusinessStrip::getBusinessStripName)); - if(CollUtil.isEmpty(strips)){ + if (CollUtil.isEmpty(strips)) { return Collections.emptyList(); } return strips.stream() - .map(p -> BeanUtil.copyProperties(p,ProvincialGovBusinessStripVO.class)) + .map(p -> BeanUtil.copyProperties(p, ProvincialGovBusinessStripVO.class)) .collect(Collectors.toList()); } } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/organization/manage/OrganizationManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/organization/manage/OrganizationManage.java index 4cc698f..bd4df2e 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/organization/manage/OrganizationManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/organization/manage/OrganizationManage.java @@ -5,23 +5,20 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.common.collect.Lists; -import com.ningdatech.basic.model.PageVo; import com.hz.pm.api.common.config.DingOrganizationProperties; import com.hz.pm.api.common.helper.RegionCacheHelper; import com.hz.pm.api.common.util.StrUtils; -import com.hz.pm.api.ding.constants.DingOrganizationContant; import com.hz.pm.api.fiscal.service.ICompanyFiscalCodeService; import com.hz.pm.api.organization.model.entity.DingEmployeeInfo; import com.hz.pm.api.organization.model.entity.DingOrganization; import com.hz.pm.api.organization.model.po.ReqOrganizationListPO; -import com.hz.pm.api.organization.model.po.ReqSynthesizePO; import com.hz.pm.api.organization.model.vo.KeyTreeVO; import com.hz.pm.api.organization.model.vo.OrganizationTreeVO; import com.hz.pm.api.organization.model.vo.ResOrganizationListVO; import com.hz.pm.api.organization.service.IDingEmployeeInfoService; import com.hz.pm.api.organization.service.IDingOrganizationService; import com.hz.pm.api.sys.model.dto.RegionDTO; +import com.ningdatech.basic.model.PageVo; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Component; @@ -138,50 +135,6 @@ public class OrganizationManage { }).collect(Collectors.toList()); } - public List treeRubbishVOList(ReqSynthesizePO request) { - String organizationCode = request.getOrganizationCode(); - String organizationName = request.getOrganizationName(); - String employeeName = request.getEmployeeName(); - Boolean onlyUnit = request.getOnlyUnit(); - - // 用户搜索为特殊逻辑 - if (StringUtils.isNotBlank(employeeName)) { - return treeEmployeeQuery(employeeName, organizationCode); - } - - List dingOrganizationList = new ArrayList<>(); - List organizationCodeList = new ArrayList<>(); - if (StringUtils.isNotBlank(organizationName)) { - dingOrganizationList = iDingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class) - .like(DingOrganization::getOrganizationName, organizationName) - .in(onlyUnit, DingOrganization::getTypeCode, Lists.newArrayList(DingOrganizationContant.UNIT_TYPE, - DingOrganizationContant.HOLLOW))); - if (dingOrganizationList.isEmpty()) { - return new ArrayList<>(); - } - } else if (StrUtils.isBlank(organizationCode)) { - organizationCodeList = dingOrganizationProperties.getDeptVisibleScopes(); - } else { - organizationCodeList = CollectionUtil.toList(organizationCode); - } - - if (CollectionUtil.isEmpty(dingOrganizationList)) { - dingOrganizationList = iDingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class) - .in(DingOrganization::getOrganizationCode, organizationCodeList) - .notIn(onlyUnit, DingOrganization::getTypeCode, "GOV_INTERNAL_INSTITUTION")); - } - - List orgKeyTreeVOList = dingOrganizationList.stream().map(r -> { - KeyTreeVO keyTreeVO = new KeyTreeVO(); - keyTreeVO.setTitle(r.getOrganizationName()); - keyTreeVO.setKey(r.getOrganizationCode()); - keyTreeVO.setType("ORGANIZATION"); - return keyTreeVO; - }).collect(Collectors.toList()); - treeVOList(request.getNeedMember(), orgKeyTreeVOList, onlyUnit); - return orgKeyTreeVOList; - } - public List treeEmployeeQuery(String employeeName, String organizationCode) { List parentCodeList = CollUtil.toList(organizationCode).stream() .filter(StringUtils::isNotBlank) diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/IndicatorConfigManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/IndicatorConfigManage.java index b6e1913..3696273 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/IndicatorConfigManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/IndicatorConfigManage.java @@ -272,53 +272,6 @@ public class IndicatorConfigManage { } /** - * 装配 模板详情 - * - * @param templateDetails - * @return - */ - private List buildTemplateDetail(List templateDetails) { - List res = Lists.newArrayList(); - //第一层是 一级的 - for (PerformanceIndicatorProjectTemplateDetail templateDetailFirst : templateDetails) { - if (PerformanceTemplateTypeEnum.FIRST_INDEX.getCode().equals(templateDetailFirst.getType())) { - ProjectTemplateDetailVO detailFirstVo = BeanUtil.copyProperties(templateDetailFirst, ProjectTemplateDetailVO.class); - List firstList = Lists.newArrayList(); - for (PerformanceIndicatorProjectTemplateDetail templateDetailSecond : templateDetails) { - if (Objects.nonNull(templateDetailSecond.getParentId()) && - templateDetailSecond.getParentId().equals(templateDetailFirst.getId())) { - ProjectTemplateDetailVO detailSecondVo = BeanUtil.copyProperties(templateDetailSecond, ProjectTemplateDetailVO.class); - List secondList = Lists.newArrayList(); - for (PerformanceIndicatorProjectTemplateDetail templateDetailThird : templateDetails) { - if (Objects.nonNull(templateDetailThird.getParentId()) && - templateDetailThird.getParentId().equals(templateDetailSecond.getId())) { - ProjectTemplateDetailVO detailThirdVo = BeanUtil.copyProperties(templateDetailThird, ProjectTemplateDetailVO.class); - List thirdList = Lists.newArrayList(); - for (PerformanceIndicatorProjectTemplateDetail templateDetailFour : templateDetails) { - if (Objects.nonNull(templateDetailFour.getParentId()) && - templateDetailFour.getParentId().equals(templateDetailThird.getId())) { - ProjectTemplateDetailVO detailFourVo = BeanUtil.copyProperties(templateDetailFour, ProjectTemplateDetailVO.class); - thirdList.add(detailFourVo); - } - } - detailThirdVo.setChildren(thirdList); - secondList.add(detailThirdVo); - } - } - detailSecondVo.setChildren(secondList); - firstList.add(detailSecondVo); - } - } - detailFirstVo.setChildren(firstList); - res.add(detailFirstVo); - - } - } - return res; - } - - - /** * 删除项目模板 * * @param id diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/DeclaredProjectController.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/DeclaredProjectController.java index 6bd6f17..1da752f 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/DeclaredProjectController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/DeclaredProjectController.java @@ -1,34 +1,33 @@ package com.hz.pm.api.projectdeclared.controller; -import javax.servlet.http.HttpServletResponse; - -import com.hz.pm.api.projectdeclared.model.enumerization.ProjectDraftTypeEnum; -import com.ningdatech.log.annotation.WebLog; -import com.hz.pm.api.gov.manage.GovProjectCollectionManage; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import com.alibaba.fastjson.JSONObject; -import com.ningdatech.basic.model.PageVo; import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.projectdeclared.manage.DeclaredProjectManage; import com.hz.pm.api.projectdeclared.manage.ProjectAdjustmentManage; import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectListParamDTO; import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO; import com.hz.pm.api.projectdeclared.model.dto.ProjectDraftSaveDTO; +import com.hz.pm.api.projectdeclared.model.enumerization.ProjectDraftTypeEnum; import com.hz.pm.api.projectdeclared.model.vo.ProjectDraftVO; import com.hz.pm.api.projectlib.model.req.ProjectListReq; import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; - +import com.ningdatech.basic.model.PageVo; +import com.ningdatech.log.annotation.WebLog; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; /** - * @Classname DeclaredProjectController - * @Description 申报项目 - * @Date 2023/1/31 11:29 - * @Author PoffyZhang + *

+ * DeclaredProjectController + *

+ * + * @author WendyYang + * @since 16:22 2024/3/29 */ @Slf4j @Validated @@ -47,15 +46,6 @@ public class DeclaredProjectController { return declaredProjectManage.projectLibList(req); } - @ApiOperation(value = "核心业务列表", notes = "核心业务列表") - @GetMapping("/core-biz") - public JSONObject bizList(@RequestParam(required = false) String businessName, - @RequestParam(required = false) Integer pageSize, - @RequestParam(required = false) Integer pageNumber, - @RequestParam(required = false) String orgCode) { - return declaredProjectManage.bizList(businessName, pageSize, pageNumber, orgCode); - } - @ApiOperation(value = "申报项目草稿箱列表", notes = "申报项目草稿箱列表") @GetMapping("/draft") public PageVo draft(@ModelAttribute DeclaredProjectListParamDTO params) { @@ -110,10 +100,4 @@ public class DeclaredProjectController { ExcelDownUtil.downXls(response, req, declaredProjectManage::exportList); } - @PostMapping("/remove/{projectCode}") - @ApiOperation("申报项目删除-预审失败") - @WebLog("申报项目删除-预审失败") - public String remove(@PathVariable String projectCode) { - return declaredProjectManage.removeProject(projectCode); - } } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java index 66932ec..b317f58 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java @@ -4,26 +4,19 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; -import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.EasyExcelFactory; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.common.collect.Lists; import com.hz.pm.api.common.enumeration.CommonEnum; import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; import com.hz.pm.api.common.helper.UserInfoHelper; -import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelExportStyle; import com.hz.pm.api.external.model.enumeration.MhUnitTypeEnum; -import com.hz.pm.api.gov.manage.GovProjectCollectionManage; -import com.hz.pm.api.irs.manage.ProjectIrsManage; -import com.hz.pm.api.projectdeclared.contant.DeclaredProjectConst; import com.hz.pm.api.projectdeclared.model.dto.*; import com.hz.pm.api.projectdeclared.model.entity.ProjectDraft; import com.hz.pm.api.projectdeclared.model.enumerization.ProjectDraftTypeEnum; @@ -55,7 +48,6 @@ import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.NdDateUtils; -import com.ningdatech.basic.util.StrPool; import com.wflow.bean.entity.WflowModels; import com.wflow.exception.BusinessException; import com.wflow.workflow.bean.dto.OrgInfoDTO; @@ -65,22 +57,26 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.time.LocalDateTime; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** - * @Classname DeclaredProjectManage - * @Description - * @Date 2023/2/1 14:48 - * @Author PoffyZhang + *

+ * DeclaredProjectManage + *

+ * + * @author WendyYang + * @since 16:24 2024/3/29 */ @Component @Slf4j @@ -88,38 +84,23 @@ import java.util.stream.Collectors; public class DeclaredProjectManage { private final IProjectService projectService; - private final ProjectLibManage projectLibManage; - private final IProjectDraftService projectDraftService; - private final ProcessInstanceService processService; - private final ProcessModelManage processModelManage; - - private final DefaultDeclaredProjectManage defaultDeclaredProjectManage; - + private final DefaultDeclaredProjectManage declaredProjectManage; private final NoticeManage noticeManage; - private final UserInfoHelper userInfoHelper; - private final MhUnitCache mhUnitCache; - private final ProjectIrsManage projectIrsManage; - - private final GovProjectCollectionManage collectionManage; - - @Value("${spring.profiles.active}") - private String active; - /** * 新项目 启动实例 * - * @param dto - * @return + * @param req \ + * @return \ */ @Transactional(rollbackFor = Exception.class) - public synchronized String startTheProcess(DefaultDeclaredDTO dto) { + public synchronized String startTheProcess(DefaultDeclaredDTO req) { UserInfoDetails user = LoginUserUtil.loginUserDetail(); WflowModels model = processModelManage.getWflowModels(ProjectProcessStageEnum.ORG_INTERNAL_APPROVAL_PROCESS, @@ -128,15 +109,15 @@ public class DeclaredProjectManage { throw BizException.wrap("找不到单位流程配置"); } - ProjectDTO projectInfo = dto.getProjectInfo(); + ProjectDTO projectInfo = req.getProjectInfo(); projectInfo.setBuildOrgCode(user.getMhUnitIdStr()); projectInfo.setBuildOrgName(user.getMhUnitName()); //项目名称去重 - defaultDeclaredProjectManage.checkDuplication(projectInfo); + declaredProjectManage.checkDuplication(projectInfo); //判断申报金额 是否等于总的 判断年度支付金额 是否等于总金额 - defaultDeclaredProjectManage.checkAmount(projectInfo); + declaredProjectManage.checkAmount(projectInfo); //写死 是否有主管单位 projectInfo.setIsHigherSuperOrg(CommonEnum.YES.getCode()); @@ -156,21 +137,21 @@ public class DeclaredProjectManage { ProcessStartParamsVo params = new ProcessStartParamsVo(); - params.setUser(defaultDeclaredProjectManage.buildUser(user)); + params.setUser(declaredProjectManage.buildUser(user)); params.setProcessUsers(Collections.emptyMap()); //放入条件判断的项目字段 ProjectConditionDTO conditionDto = new ProjectConditionDTO(); - BeanUtils.copyProperties(dto.getProjectInfo(), conditionDto); - dto.getFormData().putAll( + BeanUtils.copyProperties(req.getProjectInfo(), conditionDto); + req.getFormData().putAll( JSON.parseObject(JSON.toJSONString(conditionDto), new TypeReference>() { }) ); - params.setFormData(dto.getFormData()); + params.setFormData(req.getFormData()); //开始申报 // 获取发起单位、发起单位主管单位、发起单位上级主管条线单位信息 Project project = new Project(); BeanUtils.copyProperties(projectInfo, project); - Map orgModelMap = defaultDeclaredProjectManage.buildOrgModelMap(user.getUserId(), project); + Map orgModelMap = declaredProjectManage.buildOrgModelMap(user.getUserId(), project); String instanceId = processService.startProcessLs(model, params, orgModelMap); log.info("申报项目成功 【{}】", instanceId); @@ -211,7 +192,7 @@ public class DeclaredProjectManage { if (StringUtils.isNotBlank(projectDto.getProjectName()) && !projectDto.getProjectName().equals(projectInfo.getProjectName())) { projectDto.setProjectCode(projectInfo.getProjectCode()); - defaultDeclaredProjectManage.checkDuplication(projectDto); + declaredProjectManage.checkDuplication(projectDto); } //写死 是否有主管单位 @@ -227,7 +208,7 @@ public class DeclaredProjectManage { } //判断申报金额 是否等于总的 判断年度支付金额 是否等于总金额 - defaultDeclaredProjectManage.checkAmount(projectDto); + declaredProjectManage.checkAmount(projectDto); WflowModels model = processModelManage.getWflowModels(ProjectProcessStageEnum.ORG_INTERNAL_APPROVAL_PROCESS, user.getMhUnitId()); @@ -242,16 +223,16 @@ public class DeclaredProjectManage { .throwMessage("提交失败 该项目不是 单位内部拒绝审核状态或者未立项阶段"); ProcessStartParamsVo params = new ProcessStartParamsVo(); - params.setUser(defaultDeclaredProjectManage.buildUser(user)); + params.setUser(declaredProjectManage.buildUser(user)); params.setProcessUsers(Collections.emptyMap()); //把条件值给放入工作流 - defaultDeclaredProjectManage.buildCondition(params, dto); + declaredProjectManage.buildCondition(params, dto); // 获取发起单位、发起单位主管单位、发起单位上级主管条线单位信息 Project project = new Project(); BeanUtils.copyProperties(projectDto, project); - Map orgModelMap = defaultDeclaredProjectManage.buildOrgModelMap(user.getUserId(), project); + Map orgModelMap = declaredProjectManage.buildOrgModelMap(user.getUserId(), project); String instanceId = processService.startProcessLs(model, params, orgModelMap); log.info("重新申报项目成功 【{}】", instanceId); @@ -421,7 +402,7 @@ public class DeclaredProjectManage { ExcelDownUtil.setFileName(fileName, response); //数据导出处理函数 try { - EasyExcel.write(response.getOutputStream(), DeclaredProjectExportDTO.class) + EasyExcelFactory.write(response.getOutputStream(), DeclaredProjectExportDTO.class) .autoCloseStream(false) .registerWriteHandler(ExcelExportStyle.formalStyle()) .sheet(fileName) @@ -431,73 +412,4 @@ public class DeclaredProjectManage { } } - /** - * 查询 核心业务 - * - * @param businessName \ - * @return \ - */ - public JSONObject bizList(String businessName, Integer limit, Integer page, String orgCode) { - JSONObject jsonObject = new JSONObject(); - UserInfoDetails user = LoginUserUtil.loginUserDetail(); - if (BizConst.DEV.equals(active)) { - jsonObject = JSONObject.parseObject(DeclaredProjectConst.Biz.CORE_BIZ); - if (CollUtil.isEmpty(jsonObject)) { - return jsonObject; - } - if (StringUtils.isNotBlank(businessName)) { - JSONArray dataArray = jsonObject.getJSONArray(BizConst.RESPONSE_KEY_DATA); - if (CollUtil.isEmpty(dataArray)) { - return new JSONObject(); - } - Iterator iter = dataArray.stream().iterator(); - JSONArray dataArrayRes = new JSONArray(); - while (iter.hasNext()) { - JSONObject value = (JSONObject) iter.next(); - String businessValue = value.getString("matterName"); - if (StringUtils.isNotBlank(businessValue) && businessValue.contains(businessName)) { - dataArrayRes.add(value); - } - } - jsonObject.put("data", dataArrayRes); - jsonObject.put("total", dataArrayRes.size()); - } - } else if (BizConst.PRE.equals(active) || - BizConst.PROD.equals(active)) { - if (StringUtils.isNotBlank(orgCode)) { - String[] orgCodes = orgCode.split(StrPool.COMMA); - JSONArray finalArray = new JSONArray(); - for (String og : orgCodes) { - JSONObject res = projectIrsManage.searchCoreBiz(businessName, og, limit, page); - if (Objects.nonNull(res)) { - JSONArray dataArray = res.getJSONArray(BizConst.RESPONSE_KEY_DATA); - if (CollUtil.isNotEmpty(dataArray)) { - finalArray.addAll(dataArray); - } - } - } - jsonObject.put("data", finalArray); - jsonObject.put("total", finalArray.size()); - } else { - jsonObject = projectIrsManage.searchCoreBiz(businessName, user.getMhUnitIdStr(), limit, page); - } - } - return jsonObject; - } - - /** - * 预审失败的时候 可以删除项目 - * - * @param projectCode \ - */ - @Transactional - public String removeProject(String projectCode) { - Project project = projectService.getProjectByCode(projectCode); - Assert.notNull(project, "该项目不存在"); - VUtils.isTrue(Objects.isNull(project.getStatus()) || - !ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode().equals(project.getStatus())) - .throwMessage("不是预审不通过 状态 不能删除!"); - - return collectionManage.removeProject(Lists.newArrayList(projectCode)); - } } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/IrsManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/IrsManage.java deleted file mode 100644 index 9294981..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/IrsManage.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.hz.pm.api.projectdeclared.manage; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.google.common.base.Joiner; -import com.ningdatech.basic.util.CollUtils; -import com.hz.pm.api.common.model.constant.BizConst; -import com.hz.pm.api.common.util.CryptUtils; -import com.hz.pm.api.common.util.HttpUtil; -import com.hz.pm.api.irs.manage.AppIrsManage; -import com.hz.pm.api.irs.model.dto.ApiApplyDTO; -import com.hz.pm.api.irs.model.dto.ForwardDTO; -import com.hz.pm.api.irs.utils.RefreshTokenUtil; -import com.hz.pm.api.projectdeclared.model.entity.IrsApplication; -import com.hz.pm.api.projectdeclared.model.entity.NdPiotTasks; -import com.hz.pm.api.projectdeclared.model.vo.IrsApplicationVO; -import com.hz.pm.api.projectdeclared.model.vo.PiotTasksVO; -import com.hz.pm.api.projectdeclared.service.INdPiotTasksService; -import com.hz.pm.api.projectdeclared.service.IrsApplicationService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestTemplate; - -import java.security.NoSuchAlgorithmException; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @Classname IrsManage - * @Description - * @Date 2023/3/1 14:48 - * @Author PoffyZhang - */ -@Component -@Slf4j -@RequiredArgsConstructor -public class IrsManage { - - @Value("${irs.is-search-app}") - private Boolean isSearchApp; - - private final IrsApplicationService irsApplicationService; - - private final INdPiotTasksService piotTasksService; - - private final AppIrsManage appIrsManage; - - - public List applicationList(String areaCode) { - //不请求IRS - if(!isSearchApp) { - List list = irsApplicationService.list(); - if(CollUtil.isEmpty(list)){ - return Collections.emptyList(); - } - return CollUtils.convert(list,app -> BeanUtil.copyProperties(app,IrsApplicationVO.class)); - } - - try { - ApiApplyDTO apiApplay = new ApiApplyDTO(); - apiApplay.setAreaCode(areaCode); - JSONArray jsonArray = appIrsManage.searchApps(apiApplay); - if(CollUtil.isNotEmpty(jsonArray)){ - return jsonArray.stream().map(apply -> { - JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(apply)); - IrsApplicationVO vo = new IrsApplicationVO(); - vo.setApplicationCode(jsonObject.getString("appId")); - vo.setApplicationName(jsonObject.getString("name")); - return vo; - }).collect(Collectors.toList()); - } - } catch (NoSuchAlgorithmException e) { - throw new RuntimeException(e); - } - return Collections.emptyList(); - } - - public List listPiotTasks() { - List list = piotTasksService.list(); - if(CollUtil.isEmpty(list)){ - return Collections.emptyList(); - } - return CollUtils.convert(list,task -> BeanUtil.copyProperties(task,PiotTasksVO.class)); - } - - public String getCreditCode() throws NoSuchAlgorithmException { - String appSecret = RefreshTokenUtil.refrshByAppScret(); - String appkey = "8fb070a1f1194b2ebffdc6f596bb8a96"; - String dataName = "丽水市大数据"; - long timestamp = System.currentTimeMillis(); - String sign = CryptUtils.MD5Encode(appkey + appSecret + timestamp); - String url = "https://interface.ls.local/a/api/shared/1689239219101?data_name=" + dataName + "&appKey=" + appkey + - "&sign=" + sign + "&requestTime=" + timestamp; - RestTemplate restTemplate = new RestTemplate(HttpUtil.generateHttpRequestFactory()); - log.info("url:" + url); - ResponseEntity forEntity = restTemplate.getForEntity(url, String.class); - log.info(forEntity.getBody()); - return forEntity.getBody(); - } - - /** - * 转发IRS请求 - * @param dto - * @return - */ - public String forward(ForwardDTO dto) { - try{ - String url = dto.getUrl(); - url = url + "?" + asUrlParams(dto.getData()); - log.info("url :{}",url); - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity forEntity = restTemplate.getForEntity(url, String.class); - log.info(forEntity.getBody()); - return forEntity.getBody(); - }catch (Exception e){ - log.error("e:" + e); - } - return BizConst.OP_FAIL; - } - - public static String asUrlParams(Map source){ - return Joiner.on("&") - // 用指定符号代替空值,key 或者value 为null都会被替换 - .useForNull("") - .withKeyValueSeparator("=") - .join(source); - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java index cbeb96e..4c178a6 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java @@ -1,7 +1,6 @@ package com.hz.pm.api.projectdeclared.service; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ArrayUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.IService; @@ -9,7 +8,10 @@ import com.hz.pm.api.projectdeclared.model.entity.Purchase; import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; import com.ningdatech.basic.util.CollUtils; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Set; import java.util.stream.Collectors; /** diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ApplicationManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ApplicationManage.java index a935129..dfaafa4 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ApplicationManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ApplicationManage.java @@ -53,13 +53,13 @@ import java.util.stream.Collectors; @Slf4j public class ApplicationManage { - @Value("${irs.app-report.url}") + @Value("${irs.app-report.url:}") private String url; - @Value("${irs.app-report.appKey}") + @Value("${irs.app-report.appKey:}") private String appKey; - @Value("${irs.app-report.appScret}") + @Value("${irs.app-report.appScret:}") private String appScret; private final IProjectApplicationService applicationService; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/provincial/service/impl/JoinReviewProvincialBureauServiceImpl.java b/hz-pm-api/src/main/java/com/hz/pm/api/provincial/service/impl/JoinReviewProvincialBureauServiceImpl.java index 3b73032..9feb273 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/provincial/service/impl/JoinReviewProvincialBureauServiceImpl.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/provincial/service/impl/JoinReviewProvincialBureauServiceImpl.java @@ -54,21 +54,21 @@ public class JoinReviewProvincialBureauServiceImpl implements IJoinReviewProvinc @Resource private IRefreshTokenService refreshTokenService; - @Value("${irs.interface-refresh.request-token-url}") + @Value("${irs.interface-refresh.request-token-url:}") private String govRequestTokenUrl; - @Value("${irs.interface-refresh.refresh-token-url}") + @Value("${irs.interface-refresh.refresh-token-url:}") private String govRefreshTokenUrl; - @Value("${irs.province-gov.url}") + @Value("${irs.province-gov.url:}") private String govUrl; - @Value("${irs.province-gov.appSecret}") + @Value("${irs.province-gov.appSecret:}") private String govAppSecret; - @Value("${irs.province-gov.appKey}") + @Value("${irs.province-gov.appKey:}") private String govAppKey; - @Value("${irs.province-gov.interfaceName}") + @Value("${irs.province-gov.interfaceName:}") private String interfaceName; /** diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/BatchUpdateEmployeeTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/BatchUpdateEmployeeTask.java deleted file mode 100644 index c8a227c..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/BatchUpdateEmployeeTask.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.hz.pm.api.scheduler.task; - -import cn.hutool.core.date.StopWatch; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.google.common.collect.Lists; -import com.hz.pm.api.ding.constants.DingOrganizationContant; -import com.hz.pm.api.ding.task.EmployeeBatchGetTask; -import com.hz.pm.api.organization.model.entity.DingOrganization; -import com.hz.pm.api.organization.service.IDingOrganizationService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.List; - -/** - * @author liuxinxin - * @date 2023/1/12 上午9:53 - * 批量获取/更新部门信息任务 - */ -@Component -@Slf4j -@RequiredArgsConstructor -public class BatchUpdateEmployeeTask { - - @Value("${hostname}") - private String HOST_NAME; - - private final EmployeeBatchGetTask employeeBatchGetTask; - private final IDingOrganizationService organizationService; - - //@Scheduled(cron = "0 45 1 * * ?") - public void doTask() throws UnknownHostException { - if (!HOST_NAME.equals(InetAddress.getLocalHost().getHostName())) { - return; - } - - log.info("=========== 每日更新 浙政钉员工信息 (根据现有单位) ======== 任务开始"); - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - // 1.查出浙政钉 所有单位 - List units = organizationService.list(Wrappers.lambdaQuery(DingOrganization.class) - .in(DingOrganization::getTypeCode, Lists.newArrayList( - DingOrganizationContant.UNIT_TYPE,DingOrganizationContant.GOV_TEMPORARY - ))); - - log.info("需要更新的 单位数量为 {}",units.size()); - - for(DingOrganization organization : units){ - log.info("当前单位是 {}",organization.getOrganizationName()); - employeeBatchGetTask.batchGetEmployeeTaskByOrdCode(organization.getOrganizationCode()); - } - - stopWatch.stop(); - log.info("=========== 每日更新 浙政钉员工信息 (根据现有单位) ======== 任务结束 {}s", stopWatch.getTotalTimeSeconds()); - } - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/BatchUpdateOrganizationTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/BatchUpdateOrganizationTask.java deleted file mode 100644 index 3e86bac..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/BatchUpdateOrganizationTask.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.hz.pm.api.scheduler.task; - -import org.springframework.stereotype.Component; - -/** - * @author liuxinxin - * @date 2023/1/12 上午9:53 - * 批量获取/更新部门信息任务 - */ -@Component -public class BatchUpdateOrganizationTask { - - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/CheckProvincialReviewResultTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/CheckProvincialReviewResultTask.java index 516616b..1267a79 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/CheckProvincialReviewResultTask.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/CheckProvincialReviewResultTask.java @@ -44,7 +44,7 @@ public class CheckProvincialReviewResultTask { private final IProjectService projectService; private final StateMachineUtil stateMachineUtil; - @Value("${hostname}") + @Value("${hostname:}") private String HOST_NAME; @Value("${spring.profiles.active}") diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/CockpitStatsStatisticsTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/CockpitStatsStatisticsTask.java index 9630c46..986cc11 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/CockpitStatsStatisticsTask.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/CockpitStatsStatisticsTask.java @@ -64,7 +64,7 @@ import java.util.stream.Stream; @RequiredArgsConstructor public class CockpitStatsStatisticsTask { - @Value("${hostname}") + @Value("${hostname:}") public String HOST; @Value("${spring.profiles.active}") diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/EarlyWarningInstanceNotStartTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/EarlyWarningInstanceNotStartTask.java index d74b831..56b9557 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/EarlyWarningInstanceNotStartTask.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/EarlyWarningInstanceNotStartTask.java @@ -56,7 +56,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class EarlyWarningInstanceNotStartTask { - @Value("${hostname}") + @Value("${hostname:}") private String HOST_NAME; private final IEarlyWarningService earlyWarningService; @@ -65,8 +65,6 @@ public class EarlyWarningInstanceNotStartTask { private final EarlyWarningManage earlyWarningManage; - private final IContractService contractService; - private final IOperationService operationService; private final IUserInfoService userInfoService; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/EarlyWarningProjectTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/EarlyWarningProjectTask.java index 058a38d..17a6a32 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/EarlyWarningProjectTask.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/EarlyWarningProjectTask.java @@ -55,7 +55,7 @@ public class EarlyWarningProjectTask { private final TaskService taskService; - @Value("${hostname}") + @Value("${hostname:}") private String HOST_NAME; @Scheduled(fixedDelay = 6000 * 120) diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/ProjectStatusFlowTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/ProjectStatusFlowTask.java index 89f9d44..42c0bbc 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/ProjectStatusFlowTask.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/ProjectStatusFlowTask.java @@ -37,7 +37,7 @@ public class ProjectStatusFlowTask { private final IProjectService projectService; - @Value("${hostname}") + @Value("${hostname:}") private String HOST_NAME; @Scheduled(cron = "0 */1 * * * ?") diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/SynProjectCollectionTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/SynProjectCollectionTask.java deleted file mode 100644 index 98aa503..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/SynProjectCollectionTask.java +++ /dev/null @@ -1,475 +0,0 @@ -package com.hz.pm.api.scheduler.task; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.StopWatch; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ningdatech.basic.exception.BizException; -import com.ningdatech.basic.model.PageVo; -import com.ningdatech.file.service.FileService; -import com.hz.pm.api.common.model.constant.BizConst; -import com.hz.pm.api.gov.manage.GovProjectCollectionManage; -import com.hz.pm.api.gov.model.entity.*; -import com.hz.pm.api.gov.model.vo.GovBizProjectDetailVO; -import com.hz.pm.api.gov.model.vo.GovBizProjectListVO; -import com.hz.pm.api.gov.model.vo.GovOperationProjectBaseinfoVO; -import com.hz.pm.api.gov.model.vo.GovOperationProjectDetailVO; -import com.hz.pm.api.gov.service.*; -import com.hz.pm.api.gov.utils.ProjectConvertUtil; -import com.hz.pm.api.projectlib.manage.ProjectLibManage; -import com.hz.pm.api.projectlib.model.entity.Project; -import com.hz.pm.api.projectlib.model.req.ProjectListReq; -import com.hz.pm.api.projectlib.model.vo.ProjectDetailVO; -import com.hz.pm.api.projectlib.service.IProjectService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.List; -import java.util.Objects; -import java.util.StringJoiner; - -/** - * @author ZPF - * @since 2023/08/31 18:16 - */ -@Slf4j -@Component -@RequiredArgsConstructor -public class SynProjectCollectionTask { - - @Value("${hostname}") - public String HOST; - - @Value("${spring.profiles.active}") - public String active; - - - private final GovProjectCollectionManage collectionManage; - private final IGovBizProjectBaseinfoService baseinfoService; - private final IGovBizProjectApplyService applyService; - private final IGovBizProjectApproveService approveService; - private final IGovBizProjectCimplementService cimplementService; - private final IGovBizProjectMimplementService mimplementService; - private final IGovBizProjectProcureService procureService; - private final IProjectService projectService; - private final ProjectLibManage projectLibManage; - private final FileService fileService; - - private static final Integer PAGE_NUMBER = 1; - - - /** - * 前置机每天晚上10点自动清空,第二天早上6点获取数据 - * 定时同步前置机数据 每天1点开始执行一次 - */ - @Scheduled(cron = "0 0 1 * * ?") - public void doTask() throws UnknownHostException { - if (!HOST.equals(InetAddress.getLocalHost().getHostName())) { - log.info("定时器没开启或者host不对! {}:{}", - HOST, InetAddress.getLocalHost().getHostName()); - return; - } - if (BizConst.PRE.equals(active)) { - log.info("预发环境不用同步!"); - return; - } - - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - - log.info("数据同步任务开始之前 先删除前置机上的所有数据"); - collectionManage.deleteAll(); - - //全量项目归集 - ProjectListReq req = new ProjectListReq(); - Long count = collectionManage.count(req) + collectionManage.operationCount(req); - if (count == 0L) { - log.info("本次同步无数据"); - return; - } - req.setPageNumber(PAGE_NUMBER); - req.setPageSize(count.intValue()); - PageVo projectCollectionPage = collectionManage.list(req); - - log.info("projectCollections size :{}", projectCollectionPage.getTotal()); - - for (GovBizProjectListVO vo : projectCollectionPage.getRecords()) { - GovBizProjectDetailVO projectDetail = collectionManage.detail(vo.getBaseProjId()); - collectionManage.pushProjectVo(projectDetail); - } - - //2.运维备案项目 - PageVo operationList = collectionManage.operationList(req); - log.info("operation list size :{}", operationList.getTotal()); - for (GovBizProjectListVO vo : operationList.getRecords()) { - GovOperationProjectDetailVO operationDetail = collectionManage.operationDetail(vo.getBaseProjId()); - GovOperationProjectBaseinfoVO baseinfo = operationDetail.getBaseinfo(); - if (Objects.isNull(baseinfo) || Objects.isNull(baseinfo.getPush()) || - Boolean.FALSE.equals(baseinfo.getPush())) { - log.info("此运维项目不用推送:" + vo.getBaseProjId()); - } - collectionManage.pushProjectVo(operationDetail); - } - - //3.申报项目 需要推送的项目 - List projects = projectService.list(Wrappers.lambdaQuery(Project.class) - .eq(Project::getNewest, Boolean.TRUE) - .eq(Project::getPush, Boolean.TRUE)); - log.info("projects need push size :{}", projects.size()); - for (Project project : projects) { - ProjectDetailVO projectDetailVO = projectLibManage.detailProjectCode(project.getProjectCode()); - GovBizProjectDetailVO vo = ProjectConvertUtil.declaredToCollection(projectDetailVO, fileService); - if (Objects.nonNull(vo)) { - collectionManage.pushProjectVo(vo); - } - } - - stopWatch.stop(); - log.info("数据同步任务结束====={}s", stopWatch.getTotalTimeSeconds()); - } - - /** - * 把库存的项目归集里 没有转换PDF文件的 都转换一遍 存入数据库 - */ - public void stagingConvertPdf(String projId) { - log.info("项目归集库存转换PDF任务开始====="); - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - - GovBizProjectBaseinfo base = baseinfoService.getOne(Wrappers.lambdaQuery(GovBizProjectBaseinfo.class) - .eq(GovBizProjectBaseinfo::getBaseProjId, projId)); - if (Objects.nonNull(base)) { - //开始转换PDF - convertPdfVo(projId); - } - - stopWatch.stop(); - log.info("项目归集库存转换PDF任务结束====={}s", stopWatch.getTotalTimeSeconds()); - } - - public void stagingConvertPdf2(String projId) { - log.info("项目归集库存转换PDF任务2开始====="); - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - ProjectListReq req = new ProjectListReq(); - req.setPageNumber(1); - req.setPageSize(BizConst.MAX_EXPORT_COUNT); - List projects = approveService.list(Wrappers.lambdaQuery(GovBizProjectApprove.class) - .eq(GovBizProjectApprove::getDeleted, Boolean.FALSE) - .eq(StringUtils.isNotBlank(projId), GovBizProjectApprove::getBaseProjId, projId) - .isNotNull(GovBizProjectApprove::getApprovalFile) - .isNull(GovBizProjectApprove::getApprovalFilePdf)); - - if (CollUtil.isEmpty(projects)) { - log.info("没有项目归集 任务终止"); - return; - } - - for (GovBizProjectApprove project : projects) { - String baseProjId = project.getBaseProjId(); - //开始转换PDF - GovBizProjectApprove approve = approveService.getOne(Wrappers.lambdaQuery(GovBizProjectApprove.class) - .eq(GovBizProjectApprove::getBaseProjId, baseProjId) - .last(BizConst.LIMIT_1)); - if (Objects.isNull(approve)) { - return; - } - if (StringUtils.isBlank(approve.getApprovalFilePdf()) && StringUtils.isNotBlank(approve.getApprovalFile())) { - StringJoiner sj = collectionManage.convertAndUpload(approve.getApprovalFile()); - approve.setApprovalFilePdf(sj.toString()); - } - } - - stopWatch.stop(); - log.info("项目归集库存转换PDF任务2结束====={}s", stopWatch.getTotalTimeSeconds()); - } - - public void stagingConvertPdf3(String projId) { - log.info("项目归集库存转换PDF任务3开始====="); - - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - ProjectListReq req = new ProjectListReq(); - req.setPageNumber(1); - req.setPageSize(BizConst.MAX_EXPORT_COUNT); - List approves = approveService.list(Wrappers.lambdaQuery(GovBizProjectApprove.class) - .eq(GovBizProjectApprove::getDeleted, Boolean.FALSE) - .eq(StringUtils.isNotBlank(projId), GovBizProjectApprove::getBaseProjId, projId) - .isNotNull(GovBizProjectApprove::getApprovalFile) - .isNull(GovBizProjectApprove::getApprovalFilePdf)); - - if (CollUtil.isEmpty(approves)) { - log.info("没有项目归集 审批信息 立项文件 任务终止"); - return; - } - - for (GovBizProjectApprove approve : approves) { - //开始转换PDF - convertPdfVo(approve.getBaseProjId()); - } - - stopWatch.stop(); - log.info("项目归集库存转换PDF任务3结束====={}s", stopWatch.getTotalTimeSeconds()); - } - - //开始转换PDF - private void convertPdfVo(String baseProjId) { - convertPdfApply(baseProjId); - convertPdfApprove(baseProjId); - convertPdfCimplement(baseProjId); - convertPdfMimplement(baseProjId); - convertPdfAProcure(baseProjId); - } - - private void convertPdfApply(String baseProjId) { - GovBizProjectApply apply = applyService.getOne(Wrappers.lambdaQuery(GovBizProjectApply.class) - .eq(GovBizProjectApply::getBaseProjId, baseProjId) - .last(BizConst.LIMIT_1)); - if (Objects.isNull(apply)) { - return; - } - if (StringUtils.isBlank(apply.getBaseProjApplyFilePdf()) && StringUtils.isNotBlank(apply.getBaseProjApplyFile())) { - StringJoiner sj = collectionManage.convertAndUpload(apply.getBaseProjApplyFile()); - apply.setBaseProjApplyFilePdf(sj.toString()); - } - if (StringUtils.isBlank(apply.getBaseProjBasisFilePdf()) && StringUtils.isNotBlank(apply.getBaseProjBasisFile())) { - StringJoiner sj = collectionManage.convertAndUpload(apply.getBaseProjBasisFile()); - apply.setBaseProjBasisFilePdf(sj.toString()); - } - if (StringUtils.isBlank(apply.getBaseProjOtherFilePdf()) && StringUtils.isNotBlank(apply.getBaseProjOtherFile())) { - StringJoiner sj = collectionManage.convertAndUpload(apply.getBaseProjOtherFile()); - apply.setBaseProjOtherFilePdf(sj.toString()); - } - if (StringUtils.isBlank(apply.getBaseResearchReportFilePdf()) && StringUtils.isNotBlank(apply.getBaseResearchReportFile())) { - StringJoiner sj = collectionManage.convertAndUpload(apply.getBaseResearchReportFile()); - apply.setBaseResearchReportFilePdf(sj.toString()); - } - if (StringUtils.isBlank(apply.getBaseOperatMaintenFilePdf()) && StringUtils.isNotBlank(apply.getBaseOperatMaintenFile())) { - StringJoiner sj = collectionManage.convertAndUpload(apply.getBaseOperatMaintenFile()); - apply.setBaseOperatMaintenFilePdf(sj.toString()); - } - applyService.updateById(apply); - } - - private void convertPdfApprove(String baseProjId) { - GovBizProjectApprove approve = approveService.getOne(Wrappers.lambdaQuery(GovBizProjectApprove.class) - .eq(GovBizProjectApprove::getBaseProjId, baseProjId) - .last(BizConst.LIMIT_1)); - if (Objects.isNull(approve)) { - return; - } - if (StringUtils.isBlank(approve.getApprovalFilePdf()) && StringUtils.isNotBlank(approve.getApprovalFile())) { - StringJoiner sj = collectionManage.convertAndUpload(approve.getApprovalFile()); - approve.setApprovalFilePdf(sj.toString()); - } - if (StringUtils.isBlank(approve.getPreliminaryDesignFilePdf()) && StringUtils.isNotBlank(approve.getPreliminaryDesignFile())) { - StringJoiner sj = collectionManage.convertAndUpload(approve.getPreliminaryDesignFile()); - approve.setPreliminaryDesignFilePdf(sj.toString()); - } - if (StringUtils.isBlank(approve.getBaseReviewCommentsFilePdf()) && StringUtils.isNotBlank(approve.getBaseReviewCommentsFile())) { - StringJoiner sj = collectionManage.convertAndUpload(approve.getBaseReviewCommentsFile()); - approve.setBaseReviewCommentsFilePdf(sj.toString()); - } - approveService.updateById(approve); - } - - private void convertPdfCimplement(String baseProjId) { - GovBizProjectCimplement cimplement = cimplementService.getOne(Wrappers.lambdaQuery(GovBizProjectCimplement.class) - .eq(GovBizProjectCimplement::getBaseProjId, baseProjId) - .last(BizConst.LIMIT_1)); - if (Objects.isNull(cimplement)) { - return; - } - if (StringUtils.isBlank(cimplement.getBaseCheckFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseCheckFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseCheckFile()); - cimplement.setBaseCheckFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseChanFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseChanFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseChanFile()); - cimplement.setBaseChanFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseChangeFormFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseChangeFormFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseChangeFormFile()); - cimplement.setBaseChangeFormFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseUserConsFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseUserConsFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseUserConsFile()); - cimplement.setBaseUserConsFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseEstaSummFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseEstaSummFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseEstaSummFile()); - cimplement.setBaseEstaSummFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseEngineerPostpoFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseEngineerPostpoFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseEngineerPostpoFile()); - cimplement.setBaseEngineerPostpoFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBasePasswAssessFilePdf()) && StringUtils.isNotBlank(cimplement.getBasePasswAssessFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBasePasswAssessFile()); - cimplement.setBasePasswAssessFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseThirdAcceptFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseThirdAcceptFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseThirdAcceptFile()); - cimplement.setBaseThirdAcceptFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseFinanlAuditFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseFinanlAuditFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseFinanlAuditFile()); - cimplement.setBaseFinanlAuditFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseInitialOpinionFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseInitialOpinionFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseInitialOpinionFile()); - cimplement.setBaseInitialOpinionFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseThirdAcceptFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseThirdAcceptFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseThirdAcceptFile()); - cimplement.setBaseThirdAcceptFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseSummReportFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseSummReportFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseSummReportFile()); - cimplement.setBaseSummReportFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseFinalExpertOpinionFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseFinalExpertOpinionFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseFinalExpertOpinionFile()); - cimplement.setBaseFinalExpertOpinionFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseIrsTestRunFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseIrsTestRunFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseIrsTestRunFile()); - cimplement.setBaseIrsTestRunFilePdf(sj.toString()); - } - if (StringUtils.isBlank(cimplement.getBaseInforLevelFilePdf()) && StringUtils.isNotBlank(cimplement.getBaseInforLevelFile())) { - StringJoiner sj = collectionManage.convertAndUpload(cimplement.getBaseInforLevelFile()); - cimplement.setBaseInforLevelFilePdf(sj.toString()); - } - cimplementService.updateById(cimplement); - } - - private void convertPdfMimplement(String baseProjId) { - GovBizProjectMimplement mimplement = mimplementService.getOne(Wrappers.lambdaQuery(GovBizProjectMimplement.class) - .eq(GovBizProjectMimplement::getBaseProjId, baseProjId) - .last(BizConst.LIMIT_1)); - if (Objects.isNull(mimplement)) { - return; - } - if (StringUtils.isBlank(mimplement.getBaseChanFilePdf()) && StringUtils.isNotBlank(mimplement.getBaseChanFile())) { - StringJoiner sj = collectionManage.convertAndUpload(mimplement.getBaseChanFile()); - mimplement.setBaseChanFilePdf(sj.toString()); - } - if (StringUtils.isBlank(mimplement.getBaseUserConsFilePdf()) && StringUtils.isNotBlank(mimplement.getBaseUserConsFile())) { - StringJoiner sj = collectionManage.convertAndUpload(mimplement.getBaseUserConsFile()); - mimplement.setBaseUserConsFilePdf(sj.toString()); - } - if (StringUtils.isBlank(mimplement.getBaseEstaSummFilePdf()) && StringUtils.isNotBlank(mimplement.getBaseEstaSummFile())) { - StringJoiner sj = collectionManage.convertAndUpload(mimplement.getBaseEstaSummFile()); - mimplement.setBaseEstaSummFilePdf(sj.toString()); - } - if (StringUtils.isBlank(mimplement.getBaseEngineerPostpoFilePdf()) && StringUtils.isNotBlank(mimplement.getBaseEngineerPostpoFile())) { - StringJoiner sj = collectionManage.convertAndUpload(mimplement.getBaseEngineerPostpoFile()); - mimplement.setBaseEngineerPostpoFilePdf(sj.toString()); - } - if (StringUtils.isBlank(mimplement.getBasePasswAssessFilePdf()) && StringUtils.isNotBlank(mimplement.getBasePasswAssessFile())) { - StringJoiner sj = collectionManage.convertAndUpload(mimplement.getBasePasswAssessFile()); - mimplement.setBasePasswAssessFilePdf(sj.toString()); - } - if (StringUtils.isBlank(mimplement.getBaseThirdAcceptFilePdf()) && StringUtils.isNotBlank(mimplement.getBaseThirdAcceptFile())) { - StringJoiner sj = collectionManage.convertAndUpload(mimplement.getBaseThirdAcceptFile()); - mimplement.setBaseThirdAcceptFilePdf(sj.toString()); - } - if (StringUtils.isBlank(mimplement.getBaseThirdAcceptFilePdf()) && StringUtils.isNotBlank(mimplement.getBaseThirdAcceptFile())) { - StringJoiner sj = collectionManage.convertAndUpload(mimplement.getBaseThirdAcceptFile()); - mimplement.setBaseThirdAcceptFilePdf(sj.toString()); - } - if (StringUtils.isBlank(mimplement.getBaseFinalExpertOpinionFilePdf()) && StringUtils.isNotBlank(mimplement.getBaseFinalExpertOpinionFile())) { - StringJoiner sj = collectionManage.convertAndUpload(mimplement.getBaseFinalExpertOpinionFile()); - mimplement.setBaseFinalExpertOpinionFilePdf(sj.toString()); - } - if (StringUtils.isBlank(mimplement.getBaseEngineerAlterFilePdf()) && StringUtils.isNotBlank(mimplement.getBaseEngineerAlterFile())) { - StringJoiner sj = collectionManage.convertAndUpload(mimplement.getBaseEngineerAlterFile()); - mimplement.setBaseEngineerAlterFilePdf(sj.toString()); - } - if (StringUtils.isBlank(mimplement.getBaseOperatMaintenSummFilePdf()) && StringUtils.isNotBlank(mimplement.getBaseOperatMaintenSummFile())) { - StringJoiner sj = collectionManage.convertAndUpload(mimplement.getBaseOperatMaintenSummFile()); - mimplement.setBaseOperatMaintenSummFilePdf(sj.toString()); - } - mimplementService.updateById(mimplement); - } - - private void convertPdfAProcure(String baseProjId) { - List procures = procureService.list(Wrappers.lambdaQuery(GovBizProjectProcure.class) - .eq(GovBizProjectProcure::getBaseProjId, baseProjId)); - for (GovBizProjectProcure procure : procures) { - if (StringUtils.isBlank(procure.getPurchaseContractPdf()) && StringUtils.isNotBlank(procure.getPurchaseContract())) { - StringJoiner sj = collectionManage.convertAndUpload(procure.getPurchaseContract()); - procure.setPurchaseContractPdf(sj.toString()); - } - if (StringUtils.isBlank(procure.getPurchaseFilePdf()) && StringUtils.isNotBlank(procure.getPurchaseFile())) { - StringJoiner sj = collectionManage.convertAndUpload(procure.getPurchaseFile()); - procure.setPurchaseFilePdf(sj.toString()); - } - if (StringUtils.isBlank(procure.getBiddingFilePdf()) && StringUtils.isNotBlank(procure.getBiddingFile())) { - StringJoiner sj = collectionManage.convertAndUpload(procure.getBiddingFile()); - procure.setBiddingFilePdf(sj.toString()); - } - procureService.updateById(procure); - } - } - - public void doTaskSingle(List projectCodes) { - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - - log.info("数据同步任务 指定项目编号 :{}", projectCodes); - - if (CollUtil.isEmpty(projectCodes)) { - throw new BizException("不能为空!"); - } - - //全量项目归集 - ProjectListReq req = new ProjectListReq(); - req.setPageNumber(PAGE_NUMBER); - req.setPageSize(1000); - PageVo projectCollectionPage = collectionManage.list(req); - - log.info("projectCollections size :{}", projectCollectionPage.getTotal()); - - for (GovBizProjectListVO vo : projectCollectionPage.getRecords()) { - GovBizProjectDetailVO projectDetail = collectionManage.detail(vo.getBaseProjId()); - collectionManage.pushProjectVo(projectDetail); - } - - //2.运维备案项目 - PageVo operationList = collectionManage.operationList(req); - log.info("operation list size :{}", operationList.getTotal()); - for (GovBizProjectListVO vo : operationList.getRecords()) { - GovOperationProjectDetailVO operationDetail = collectionManage.operationDetail(vo.getBaseProjId()); - GovOperationProjectBaseinfoVO baseinfo = operationDetail.getBaseinfo(); - if (Objects.isNull(baseinfo) || Objects.isNull(baseinfo.getPush()) || - Boolean.FALSE.equals(baseinfo.getPush())) { - log.info("此运维项目不用推送:" + vo.getBaseProjId()); - } - collectionManage.pushProjectVo(operationDetail); - } - - //3.申报项目 需要推送的项目 - List projects = projectService.list(Wrappers.lambdaQuery(Project.class) - .eq(Project::getNewest, Boolean.TRUE) - .eq(Project::getPush, Boolean.TRUE) - .in(Project::getProjectCode, projectCodes)); - log.info("projects need push size :{}", projects.size()); - for (Project project : projects) { - ProjectDetailVO projectDetailVO = projectLibManage.detailProjectCode(project.getProjectCode()); - GovBizProjectDetailVO vo = ProjectConvertUtil.declaredToCollection(projectDetailVO, fileService); - if (Objects.nonNull(vo)) { - collectionManage.pushProjectVo(vo); - } - } - - stopWatch.stop(); - log.info("数据同步任务 指定项目编号 结束====={}s", stopWatch.getTotalTimeSeconds()); - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/SynProjectCoreBizTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/SynProjectCoreBizTask.java deleted file mode 100644 index 84cf00e..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/SynProjectCoreBizTask.java +++ /dev/null @@ -1,250 +0,0 @@ -package com.hz.pm.api.scheduler.task; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.StopWatch; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.google.common.collect.Lists; -import com.ningdatech.basic.model.GenericResult; -import com.hz.pm.api.common.model.constant.BizConst; -import com.hz.pm.api.ding.constants.DingOrganizationContant; -import com.hz.pm.api.irs.manage.ProjectIrsManage; -import com.hz.pm.api.irs.model.entity.ProjectCoreBiz; -import com.hz.pm.api.irs.service.IProjectCoreBizService; -import com.hz.pm.api.organization.model.entity.DingOrganization; -import com.hz.pm.api.organization.service.IDingOrganizationService; -import com.hz.pm.api.projectdeclared.contant.ProjectCodeCont; -import com.ningdatech.zwdd.client.ZwddClient; -import com.ningdatech.zwdd.model.dto.DingOrgInfoDTO; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * @author ZPF - * @since 2023/09/13 18:16 - */ -@Component -@Slf4j -@RequiredArgsConstructor -public class SynProjectCoreBizTask { - - @Value("${hostname}") - public String HOST; - - @Value("${spring.profiles.active}") - public String active; - - @Autowired - private IProjectCoreBizService projectCoreBizService; - - @Autowired - private IDingOrganizationService organizationService; - - @Autowired - private ZwddClient zwddClient; - - @Autowired - private ProjectIrsManage projectIrsManage; - - private final Integer MAX_PAGE_SIZE = 1000; - - /** - * 前置机每天晚上10点自动清空,第二天早上6点获取数据 - * 定时同步前置机数据 每天1点开始执行一次 不按照单位 - * - */ -// @Scheduled(cron = "0 0 2 * * ?") - public void doTask() throws UnknownHostException { - if (!HOST.equals(InetAddress.getLocalHost().getHostName())) { - log.info("定时器没开启或者host不对! {}:{}", - HOST,InetAddress.getLocalHost().getHostName()); - return; - } - - log.info("同步项目核心业务开始====="); - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - - List orgs = organizationService.list(Wrappers.lambdaQuery(DingOrganization.class) - .in(DingOrganization::getTypeCode, Lists.newArrayList(DingOrganizationContant.UNIT_TYPE - , DingOrganizationContant.GOV_TEMPORARY))); - - log.info("总共需要同步 orgs size :{}",orgs.size()); - - syncCoreBiz(orgs); - stopWatch.stop(); - log.info("同步项目核心业务结束====={}s",stopWatch.getTotalTimeSeconds()); - } - - public void doTask(String orgCode) throws UnknownHostException { - log.info("同步项目核心业务开始====="); - StopWatch stopWatch = new StopWatch(); - stopWatch.start(); - - List orgs = organizationService.list(Wrappers.lambdaQuery(DingOrganization.class) - .in(DingOrganization::getTypeCode, Lists.newArrayList(DingOrganizationContant.UNIT_TYPE - , DingOrganizationContant.GOV_TEMPORARY)) - .eq(StringUtils.isNotBlank(orgCode),DingOrganization::getOrganizationCode,orgCode)); - - log.info("总共需要同步 orgs size :{}",orgs.size()); - - syncCoreBiz(orgs); - - stopWatch.stop(); - log.info("同步项目核心业务结束====={}s",stopWatch.getTotalTimeSeconds()); - } - - private void syncCoreBiz(List orgs) { - for(DingOrganization organization : orgs){ - GenericResult dingResult = zwddClient.getOrganizationByCode(organization.getOrganizationCode()); - - log.info("core biz result : {}",JSON.toJSONString(dingResult)); - - if(dingResult.isSuccess()){ - DingOrgInfoDTO data = dingResult.getData(); - String unifiedSocialCreditCode = data.getUnifiedSocialCreditCode(); - if(StringUtils.isNotBlank(unifiedSocialCreditCode)){ - organization.setUnifiedSocialCreditCode(unifiedSocialCreditCode); - organizationService.updateById(organization); - } - - //去请求IRS接口 - JSONObject jsonObject = projectIrsManage.searchCoreBiz(null, organization.getOrganizationCode(), 1000, 1); - - JSONArray jsonArray = jsonObject.getJSONArray(BizConst.RESPONSE_KEY_DATA); - if(CollUtil.isNotEmpty(jsonArray)){ - jsonArray.forEach(j -> { - JSONObject jsonData = JSON.parseObject(JSON.toJSONString(j)); - ProjectCoreBiz coreBiz = new ProjectCoreBiz(); - // - Long irsId = jsonData.getLong(BizConst.RESPONSE_KEY_ID); - String dingCode = jsonData.getString(BizConst.RESPONSE_KEY_DING_CODE); - String matterName = jsonData.getString(BizConst.RESPONSE_KEY_MATTER_NAME); - String orgName = jsonData.getString(BizConst.RESPONSE_KEY_ORG_NAME); - String userState = jsonData.getString(BizConst.RESPONSE_KEY_USER_STATE); - String areaName = jsonData.getString(BizConst.RESPONSE_KEY_AREA_NAME); - ProjectCoreBiz old = projectCoreBizService.getOne(Wrappers.lambdaQuery(ProjectCoreBiz.class) - .eq(ProjectCoreBiz::getIrsId, irsId) - .last(BizConst.LIMIT_1)); - - if(Objects.nonNull(old)){ - coreBiz.setId(old.getId()); - }else{ - coreBiz.setCreateOn(LocalDateTime.now()); - } - coreBiz.setUpdateOn(LocalDateTime.now()); - coreBiz.setIrsId(irsId); - coreBiz.setMatterName(matterName); - coreBiz.setOrgCode(dingCode); - coreBiz.setOrgName(orgName); - coreBiz.setUserState(userState); - coreBiz.setAreaName(areaName); - coreBiz.setMatterCode(irsId.toString()); - projectCoreBizService.saveOrUpdate(coreBiz); - coreBiz.setMatterCode(genirate(unifiedSocialCreditCode,coreBiz.getId())); - projectCoreBizService.updateById(coreBiz); - }); - } - } - } - } - - private void syncCoreBiz() { - Map map = organizationService.list().stream().distinct().collect(Collectors.toMap(DingOrganization::getOrganizationCode, o -> o)); - - Integer currentSize = MAX_PAGE_SIZE; - Integer page = 1; - while (currentSize.equals(MAX_PAGE_SIZE)) { - //去请求IRS接口 - JSONObject jsonObject = projectIrsManage.searchCoreBiz(null, null, MAX_PAGE_SIZE, page); - - JSONArray jsonArray = jsonObject.getJSONArray(BizConst.RESPONSE_KEY_DATA); - - if(Objects.isNull(jsonArray)){ - return; - } - - currentSize = jsonArray.size(); - if (CollUtil.isNotEmpty(jsonArray)) { - if (currentSize.equals(MAX_PAGE_SIZE)) { - page++; - } - jsonArray.forEach(j -> { - JSONObject jsonData = JSON.parseObject(JSON.toJSONString(j)); - ProjectCoreBiz coreBiz = new ProjectCoreBiz(); - // - Long irsId = jsonData.getLong(BizConst.RESPONSE_KEY_ID); - String dingCode = jsonData.getString(BizConst.RESPONSE_KEY_DING_CODE); - String matterName = jsonData.getString(BizConst.RESPONSE_KEY_MATTER_NAME); - String orgName = jsonData.getString(BizConst.RESPONSE_KEY_ORG_NAME); - String userState = jsonData.getString(BizConst.RESPONSE_KEY_USER_STATE); - String areaName = jsonData.getString(BizConst.RESPONSE_KEY_AREA_NAME); - ProjectCoreBiz old = projectCoreBizService.getOne(Wrappers.lambdaQuery(ProjectCoreBiz.class) - .eq(ProjectCoreBiz::getIrsId, irsId) - .last(BizConst.LIMIT_1)); - - if (Objects.nonNull(old)) { - coreBiz.setId(old.getId()); - } else { - coreBiz.setCreateOn(LocalDateTime.now()); - } - - if(map.containsKey(dingCode)){ - DingOrganization organization = map.get(dingCode); - - String unifiedSocialCreditCode = organization.getUnifiedSocialCreditCode(); - if(StringUtils.isBlank(unifiedSocialCreditCode)){ - GenericResult dingResult = zwddClient.getOrganizationByCode(organization.getOrganizationCode()); - - log.info("ding org result : {}",JSON.toJSONString(dingResult)); - - if(dingResult.isSuccess()){ - DingOrgInfoDTO data = dingResult.getData(); - unifiedSocialCreditCode = data.getUnifiedSocialCreditCode(); - organization.setUnifiedSocialCreditCode(unifiedSocialCreditCode); - organizationService.updateById(organization); - } - } - - coreBiz.setUpdateOn(LocalDateTime.now()); - coreBiz.setIrsId(irsId); - coreBiz.setMatterName(matterName); - coreBiz.setOrgCode(dingCode); - coreBiz.setOrgName(orgName); - coreBiz.setUserState(userState); - coreBiz.setAreaName(areaName); - coreBiz.setMatterCode(irsId.toString()); - projectCoreBizService.saveOrUpdate(coreBiz); - coreBiz.setMatterCode(genirate(unifiedSocialCreditCode, coreBiz.getId())); - projectCoreBizService.updateById(coreBiz); - } - }); - } - } - } - - /** - * 生成 编号 - * @param unifiedSocialCreditCode - * @param id - * @return - */ - private String genirate(String unifiedSocialCreditCode, Long id) { - String formatId = String.format(ProjectCodeCont.SHUZI_4, id); - return unifiedSocialCreditCode + formatId; - } - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/SynProvinceOrgTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/SynProvinceOrgTask.java index a689e93..4965ca5 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/SynProvinceOrgTask.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/SynProvinceOrgTask.java @@ -28,7 +28,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class SynProvinceOrgTask { - @Value("${hostname}") + @Value("${hostname:}") public String HOST; @Value("${spring.profiles.active}") diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/WorkNoticeFlowTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/WorkNoticeFlowTask.java index 4799021..50a8c37 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/WorkNoticeFlowTask.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/WorkNoticeFlowTask.java @@ -4,6 +4,7 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.time.LocalDateTime; import java.util.List; + import com.ningdatech.basic.model.GenericResult; import com.hz.pm.api.staging.model.entity.WorkNoticeStaging; import com.hz.pm.api.staging.service.INdWorkNoticeStagingService; @@ -25,7 +26,7 @@ import lombok.extern.slf4j.Slf4j; /** * 发送工作通知定时任务 - * @return + * * @author CMM * @since 2023/02/28 21:23 */ @@ -37,7 +38,7 @@ public class WorkNoticeFlowTask { private final INdWorkNoticeStagingService workNoticeStagingService; private final ZwddClient zwddClient; - @Value("${hostname}") + @Value("${hostname:}") private String HOST_NAME; @Scheduled(cron = "0 */1 * * * ?") @@ -51,27 +52,27 @@ public class WorkNoticeFlowTask { .le(WorkNoticeStaging::getRetryTimes, StagingContant.Retry.MAX_RETRY_TIMES) .orderByAsc(WorkNoticeStaging::getId)); - log.info("需要发送的工作通知 size:{} :{}",stagingList.size(), JSON.toJSONString(stagingList)); - if(CollUtil.isEmpty(stagingList)){ + log.info("需要发送的工作通知 size:{} :{}", stagingList.size(), JSON.toJSONString(stagingList)); + if (CollUtil.isEmpty(stagingList)) { log.info("没有需要发送的工作通知!"); return; } //遍历 - for(WorkNoticeStaging workNoticeStaging : stagingList){ - try{ + for (WorkNoticeStaging workNoticeStaging : stagingList) { + try { WorkNoticeInfo workNoticeInfo = new WorkNoticeInfo(); - BeanUtils.copyProperties(workNoticeStaging,workNoticeInfo); + BeanUtils.copyProperties(workNoticeStaging, workNoticeInfo); String receiverUserId = workNoticeInfo.getReceiverUserId(); String bizMsgId = workNoticeInfo.getBizMsgId(); String msg = workNoticeInfo.getMsg(); GenericResult result = zwddClient.sendWorkNotice(receiverUserId, bizMsgId, msg); - if (result.isSuccess()){ + if (result.isSuccess()) { //执行成功了 删除暂存的数据 workNoticeStagingService.removeById(workNoticeStaging); } - }catch (Exception e){ + } catch (Exception e) { log.error("发送工作通知 异常 bizMsgId:【" + workNoticeStaging.getBizMsgId() + "】 异常内容:" + e); - }finally { + } finally { //增加重试的次数 和下次扫描时间 workNoticeStagingService.addRetryTimes(workNoticeStaging); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/staging/utils/ProjectStatusFlowUtil.java b/hz-pm-api/src/main/java/com/hz/pm/api/staging/utils/ProjectStatusFlowUtil.java index 8c265b6..c2c2e75 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/staging/utils/ProjectStatusFlowUtil.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/staging/utils/ProjectStatusFlowUtil.java @@ -1,7 +1,5 @@ package com.hz.pm.api.staging.utils; -import com.google.common.collect.Maps; - import java.util.HashMap; import java.util.Map; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/sys/controller/SysProcDefController.java b/hz-pm-api/src/main/java/com/hz/pm/api/sys/controller/SysProcDefController.java index 5abd3bf..7680075 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/sys/controller/SysProcDefController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/sys/controller/SysProcDefController.java @@ -14,7 +14,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.List; import java.util.Set; /** diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/sys/convert/RegionConverter.java b/hz-pm-api/src/main/java/com/hz/pm/api/sys/convert/RegionConverter.java index e5f8b91..0689fd5 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/sys/convert/RegionConverter.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/sys/convert/RegionConverter.java @@ -79,7 +79,7 @@ public class RegionConverter { List treeList = new ArrayList<>(); List children = regions.getOrDefault(parentId, Collections.emptyList()); for (RegionDTO region : children) { - if (!showDeleted && region.getDeleted()) { + if (!showDeleted && Boolean.TRUE.equals(region.getDeleted())) { continue; } RegionTreeVO node = toRegionTreeVO(region); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/InitProcessManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/InitProcessManage.java index 18bbe11..fb52965 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/InitProcessManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/InitProcessManage.java @@ -58,7 +58,7 @@ public class InitProcessManage { models.setFormName(stage.getDesc()); models.setProcessType(stage.getCode()); models.setRegionCode(unitId); - models.setProcess(new ProcessNode()); + models.setProcess(new ProcessNode<>()); models.setSettings("{\"sign\":false,\"admin\":[],\"notify\":{},\"commiter\":[]}"); models.setFormItems("[]"); String formId = processModelService.insertProcess(models); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/OrgProcDefManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/OrgProcDefManage.java index aacb7cb..0fa61f0 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/OrgProcDefManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/OrgProcDefManage.java @@ -4,7 +4,7 @@ import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.hz.pm.api.organization.constants.ProcDefContant; +import com.hz.pm.api.organization.constant.ProcDefCont; import com.hz.pm.api.user.model.entity.MhUnit; import com.hz.pm.api.user.service.IMhUnitService; import com.ningdatech.basic.util.CollUtils; @@ -75,7 +75,7 @@ public class OrgProcDefManage { } private void saveDef(MhUnit unit, ProcessDefTypeEnum defType) { - String procDefId = ProcDefContant.MODELS_ID_PREFIX + IdUtil.objectId(); + String procDefId = ProcDefCont.MODELS_ID_PREFIX + IdUtil.objectId(); WflowOrgModels defaultModel = new WflowOrgModels(); defaultModel.setProcessDefId(procDefId); defaultModel.setIsStop(Boolean.FALSE); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/UserGuidanceManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/UserGuidanceManage.java index a4f956f..0031c81 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/UserGuidanceManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/UserGuidanceManage.java @@ -4,9 +4,8 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.google.common.collect.Lists; -import com.hz.pm.api.expert.entity.ExpertUserFullInfo; -import com.ningdatech.basic.function.VUtils; import com.hz.pm.api.common.model.constant.BizConst; +import com.hz.pm.api.expert.entity.ExpertUserFullInfo; import com.hz.pm.api.expert.service.IExpertUserFullInfoService; import com.hz.pm.api.signature.entity.CompanySignature; import com.hz.pm.api.signature.service.ICompanySignatureService; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/user/controller/UserAuthController.java b/hz-pm-api/src/main/java/com/hz/pm/api/user/controller/UserAuthController.java index 8a3ae1c..ff68124 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/user/controller/UserAuthController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/user/controller/UserAuthController.java @@ -2,7 +2,7 @@ package com.hz.pm.api.user.controller; import com.fasterxml.jackson.databind.ObjectMapper; -import com.hz.pm.api.meeting.entity.config.WebProperties; +import com.hz.pm.api.meeting.entity.config.WebProps; import com.hz.pm.api.user.manage.AgentLoginManage; import com.hz.pm.api.user.manage.AuthCodeLoginManage; import com.hz.pm.api.user.model.vo.AuthCodeVO; @@ -109,7 +109,7 @@ public class UserAuthController { } String authCode = authCodeLoginManage.generateAuthCode(targetUserId); String urlParam = "?authCode=" + authCode; - String path = WebProperties.apiHost + request.getContextPath() + AUTH_CODE_LOGIN_PATH; + String path = WebProps.apiHost + request.getContextPath() + AUTH_CODE_LOGIN_PATH; response.sendRedirect(path + urlParam); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/user/security/model/UserInfoDetails.java b/hz-pm-api/src/main/java/com/hz/pm/api/user/security/model/UserInfoDetails.java index d4f620a..d424211 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/user/security/model/UserInfoDetails.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/user/security/model/UserInfoDetails.java @@ -72,7 +72,7 @@ public class UserInfoDetails extends AbstractLoginUser implements UserDetails { */ @Override public Collection getAuthorities() { - if (CollectionUtil.isNotEmpty(this.userRoleList)) { + if (CollUtil.isNotEmpty(this.userRoleList)) { List authorities = new ArrayList<>(); for (Role role : this.userRoleList) { authorities.add(new SimpleGrantedAuthority(role.getCode())); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/workbench/model/vo/WorkbenchVO.java b/hz-pm-api/src/main/java/com/hz/pm/api/workbench/model/vo/WorkbenchVO.java index 0038a76..792ffa1 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/workbench/model/vo/WorkbenchVO.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/workbench/model/vo/WorkbenchVO.java @@ -10,7 +10,6 @@ import com.ningdatech.basic.model.PageVo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.io.Serializable; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; diff --git a/hz-pm-api/src/main/resources/application-dev.yml b/hz-pm-api/src/main/resources/application-dev.yml index 2783e4e..86fc475 100644 --- a/hz-pm-api/src/main/resources/application-dev.yml +++ b/hz-pm-api/src/main/resources/application-dev.yml @@ -152,10 +152,6 @@ sa-token: token-style: uuid # 是否输出操作日志 is-log: false -#浙政钉公司顶级organizationCode -organization: - dept-visible-scopes: - - GO_ff70e47bae684fdba0d64f4acab85661 yxt: # wsdl-url: http://115.239.137.23:9501/ws/v1?wsdl @@ -168,72 +164,6 @@ yxt: sms-enable: true tel-enable: true -#省局联审 请求信息 -provincial: -# host: http://zj.ningdatech.com/prometheus-zhejiang_foreign - host: http://223.4.72.75/prometheus-zhejiang_foreign - pushUrl: /api/v1/foreign/importantPro - detailUrl: /api/v1/foreign/importantProView - domainUrl: /api/v1/foreign/dominantUnit - key: 7fb48b518c6044a5a44deddd11b445e3 - secret: ced8fff70018413c9516c58f95885624 - - -#天印服务器接口信息 -irs: - is-search-app: false - digital-resource-indicators: - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/99E2bic31KdXzaa7.htm - interface-name: 99E2bic31KdXzaa7 - app-key: A331101453557202109017383 - app-secret: 496f0f2a19994f76b4fd9dae087366c7 - seal-platform: - project-id: 330001110 - project-secret: 70e512d40c8f440484db4acab181570a - access-key: 42bcb49bea174986a3bfdfba7d005566 - secret-key: bebff29877d4443abd67fc4f8fb335d8 - api-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220309000004/seal-platform/seal/v1/rest/sign/signPdf - app-report: - url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020230427000001/irs-res-bill/report/pdfUrl - appScret: BCDSGS_4ab4235d26a9a357170a39f3a13fd68c - appKey: BCDSGA_d874c8e46b541eb4e8aac6510fd3351b - push-app: - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/94wbaL1I1Pbz0648.htm - appScret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - search-app: - url: https://interface.zjzwfw.gov.cn/gateway/api/001003001029/dataSharing/XS8daav3bcemZ3Ra.htm - appScret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - province-gov: - can-search: false - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/62vd5jAdM0b7Gr00.htm - interfaceName: 62vd5jAdM0b7Gr00 - appSecret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - push-project-detail: - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/3XN9R93Pva6db7sf.htm - interfaceName: 3XN9R93Pva6db7sf - appSecret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - core-biz: - url: https://interface.zjzwfw.gov.cn/gateway/api/001008012012001/dataSharing/Fc3re2cq7r64Qfa7.htm - interfaceName: Fc3re2cq7r64Qfa7 - appSecret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - interface-refresh: - method: POST - request-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenByKey.htm - refresh-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenBySec.htm - interface-local-refresh: - method: GET - request-token-url: https://interface.ls.local/a/api/requestTokenKey?appKey={appKey}&requestTime={requestTime}&sign={sign} - refresh-token-url: https://interface.ls.local/a/api/refreshTokenKey?appKey={appKey}&requestTime={requestTime}&sign={sign} -hostname: iZbp13nwyvib53j4j1p2xoZ -project: - push-url: http://120.26.44.207:38088/open/api/v1/project-receive/save - no-effective-url: http://120.26.44.207:38088/open/api/v1/project-receive/not-effective - delete-all-url: http://120.26.44.207:38088/open/api/v1/project-receive/delete-all login: phone-verify-code: skip: true diff --git a/hz-pm-api/src/main/resources/application-prod.yml b/hz-pm-api/src/main/resources/application-prod.yml index e38b8a7..ab0d00f 100644 --- a/hz-pm-api/src/main/resources/application-prod.yml +++ b/hz-pm-api/src/main/resources/application-prod.yml @@ -173,70 +173,6 @@ yxt: sms-enable: false tel-enable: false -#省局联审 请求信息 -provincial: - host: https://pms.zj.gov.cn/prometheus-zhejiang_foreign - pushUrl: /api/v1/foreign/importantPro - detailUrl: /api/v1/foreign/importantProView - domainUrl: /api/v1/foreign/dominantUnit - key: b5b2096953534a53991be4ea95f8cffa - secret: 1bec9b77134d4962ac466fbe9696b897 - -#天印服务器接口信息 -irs: - is-search-app: true - digital-resource-indicators: - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/99E2bic31KdXzaa7.htm - interfaceName: 99E2bic31KdXzaa7 - app-key: A331101453557202109017383 - app-secret: 496f0f2a19994f76b4fd9dae087366c7 - seal-platform: - project-id: 330001110 - project-secret: 70e512d40c8f440484db4acab181570a - access-key: 42bcb49bea174986a3bfdfba7d005566 - secret-key: bebff29877d4443abd67fc4f8fb335d8 - api-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220309000004/seal-platform/seal/v1/rest/sign/signPdf - app-report: - url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020230427000001/irs-res-bill/report/pdfUrl - appScret: BCDSGS_4ab4235d26a9a357170a39f3a13fd68c - appKey: BCDSGA_d874c8e46b541eb4e8aac6510fd3351b - push-app: - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/94wbaL1I1Pbz0648.htm - appScret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - search-app: - url: https://interface.zjzwfw.gov.cn/gateway/api/001003001029/dataSharing/XS8daav3bcemZ3Ra.htm - appScret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - province-gov: - can-search: true - interfaceName: 62vd5jAdM0b7Gr00 - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/62vd5jAdM0b7Gr00.htm - appSecret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - push-project-detail: - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/3XN9R93Pva6db7sf.htm - interfaceName: 3XN9R93Pva6db7sf - appSecret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - core-biz: - url: https://interface.zjzwfw.gov.cn/gateway/api/001008012012001/dataSharing/Fc3re2cq7r64Qfa7.htm - interfaceName: Fc3re2cq7r64Qfa7 - appSecret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - interface-refresh: - method: POST - request-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenByKey.htm - refresh-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenBySec.htm - interface-local-refresh: - method: GET - request-token-url: https://interface.ls.local/a/api/requestTokenKey?appKey={appKey}&requestTime={requestTime}&sign={sign} - refresh-token-url: https://interface.ls.local/a/api/refreshTokenKey?appKey={appKey}&requestTime={requestTime}&sign={sign} -hostname: iZ6mx01gyeodd80imxd2gbZ -project: - push-url: http://10.53.168.41:38088/open/api/v1/project-receive/save - no-effective-url: http://10.53.168.41:38088/open/api/v1/project-receive/not-effective - delete-all-url: http://10.53.168.41:38088/open/api/v1/project-receive/delete-all login: phone-verify-code: skip: false diff --git a/hz-pm-api/src/test/java/com/hz/pm/api/irs/IrsTest.java b/hz-pm-api/src/test/java/com/hz/pm/api/irs/IrsTest.java index abcc0f0..238e664 100644 --- a/hz-pm-api/src/test/java/com/hz/pm/api/irs/IrsTest.java +++ b/hz-pm-api/src/test/java/com/hz/pm/api/irs/IrsTest.java @@ -7,7 +7,6 @@ import com.hz.pm.api.AppTests; import com.hz.pm.api.common.util.CryptUtils; import com.hz.pm.api.common.util.HmacAuthUtil; import com.hz.pm.api.common.util.RefreshKeyUtil; -import com.hz.pm.api.irs.manage.AppIrsManage; import com.ningdatech.zwdd.ZwddIntegrationProperties; import com.ningdatech.zwdd.client.ZwddAuthClient; import com.ningdatech.zwdd.client.ZwddClient; diff --git a/hz-pm-api/src/test/java/com/hz/pm/api/organization/OrganizationTest.java b/hz-pm-api/src/test/java/com/hz/pm/api/organization/OrganizationTest.java index c6f59e7..9146ed5 100644 --- a/hz-pm-api/src/test/java/com/hz/pm/api/organization/OrganizationTest.java +++ b/hz-pm-api/src/test/java/com/hz/pm/api/organization/OrganizationTest.java @@ -8,9 +8,7 @@ import com.google.common.collect.Lists; import com.ningdatech.basic.model.GenericResult; import com.hz.pm.api.AppTests; import com.hz.pm.api.ding.model.DingOrgInfoTreeDTO; -import com.hz.pm.api.ding.task.EmployeeBatchGetTask; import com.hz.pm.api.ding.task.GovBusinessStripsTask; -import com.hz.pm.api.ding.task.OrganizationBatchGetTask; import com.hz.pm.api.organization.model.entity.DingOrganization; import com.hz.pm.api.organization.service.IDingOrganizationService; import com.ningdatech.zwdd.client.ZwddClient; diff --git a/hz-pm-api/src/test/resources/application-dev.yml b/hz-pm-api/src/test/resources/application-dev.yml index c46328c..66382c6 100644 --- a/hz-pm-api/src/test/resources/application-dev.yml +++ b/hz-pm-api/src/test/resources/application-dev.yml @@ -152,10 +152,6 @@ sa-token: token-style: uuid # 是否输出操作日志 is-log: false -#浙政钉公司顶级organizationCode -organization: - dept-visible-scopes: - - GO_ff70e47bae684fdba0d64f4acab85661 yxt: # wsdl-url: http://115.239.137.23:9501/ws/v1?wsdl @@ -168,72 +164,6 @@ yxt: sms-enable: true tel-enable: true -#省局联审 请求信息 -provincial: - # host: http://zj.ningdatech.com/prometheus-zhejiang_foreign - host: http://223.4.72.75/prometheus-zhejiang_foreign - pushUrl: /api/v1/foreign/importantPro - detailUrl: /api/v1/foreign/importantProView - domainUrl: /api/v1/foreign/dominantUnit - key: 7fb48b518c6044a5a44deddd11b445e3 - secret: ced8fff70018413c9516c58f95885624 - - -#天印服务器接口信息 -irs: - is-search-app: false - digital-resource-indicators: - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/99E2bic31KdXzaa7.htm - interface-name: 99E2bic31KdXzaa7 - app-key: A331101453557202109017383 - app-secret: 496f0f2a19994f76b4fd9dae087366c7 - seal-platform: - project-id: 330001110 - project-secret: 70e512d40c8f440484db4acab181570a - access-key: 42bcb49bea174986a3bfdfba7d005566 - secret-key: bebff29877d4443abd67fc4f8fb335d8 - api-url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020220309000004/seal-platform/seal/v1/rest/sign/signPdf - app-report: - url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020230427000001/irs-res-bill/report/pdfUrl - appScret: BCDSGS_4ab4235d26a9a357170a39f3a13fd68c - appKey: BCDSGA_d874c8e46b541eb4e8aac6510fd3351b - push-app: - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/94wbaL1I1Pbz0648.htm - appScret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - search-app: - url: https://interface.zjzwfw.gov.cn/gateway/api/001003001029/dataSharing/XS8daav3bcemZ3Ra.htm - appScret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - province-gov: - can-search: false - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/62vd5jAdM0b7Gr00.htm - interfaceName: 62vd5jAdM0b7Gr00 - appSecret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - push-project-detail: - url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/3XN9R93Pva6db7sf.htm - interfaceName: 3XN9R93Pva6db7sf - appSecret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - core-biz: - url: https://interface.zjzwfw.gov.cn/gateway/api/001008012012001/dataSharing/Fc3re2cq7r64Qfa7.htm - interfaceName: Fc3re2cq7r64Qfa7 - appSecret: 496f0f2a19994f76b4fd9dae087366c7 - appKey: A331101453557202109017383 - interface-refresh: - method: POST - request-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenByKey.htm - refresh-token-url: http://interface.zjzwfw.gov.cn/gateway/app/refreshTokenBySec.htm - interface-local-refresh: - method: GET - request-token-url: https://interface.ls.local/a/api/requestTokenKey?appKey={appKey}&requestTime={requestTime}&sign={sign} - refresh-token-url: https://interface.ls.local/a/api/refreshTokenKey?appKey={appKey}&requestTime={requestTime}&sign={sign} -hostname: iZbp13nwyvib53j4j1p2xoZ -project: - push-url: http://120.26.44.207:38088/open/api/v1/project-receive/save - no-effective-url: http://120.26.44.207:38088/open/api/v1/project-receive/not-effective - delete-all-url: http://120.26.44.207:38088/open/api/v1/project-receive/delete-all login: phone-verify-code: skip: true