@@ -115,7 +115,7 @@ public class RegionLimitHelperImpl extends AbstractRegionLimitHelper { | |||
regionContainsBO.setParentRegionTreeLevel(expertAdminRegion.getRegionLevel()); | |||
regionContainsBOList.add(regionContainsBO); | |||
}*/ | |||
return null; | |||
return new ArrayList<>(); | |||
} | |||
@@ -16,6 +16,7 @@ import lombok.RequiredArgsConstructor; | |||
import org.springframework.web.bind.annotation.*; | |||
import javax.validation.Valid; | |||
import javax.validation.constraints.NotNull; | |||
/** | |||
* <p> | |||
@@ -46,6 +47,13 @@ public class ExpertController { | |||
return expertManage.getExpertFullInfoDetail(null); | |||
} | |||
@GetMapping("/admin/detail") | |||
@ApiOperation("专家管理员获取专家详细信息") | |||
public ExpertFullInfoVO getExpertFullInfoDetail(@RequestParam(value = "expertUserId") @NotNull Long expertUserId) { | |||
return expertManage.getExpertFullInfoDetail(expertUserId); | |||
} | |||
@PostMapping("/expert-library/list") | |||
@ApiOperation("专家库列表查询接口") | |||
public PageVo<ExpertAdminExpertManageListVO> getExpertLibraryList( | |||
@@ -68,7 +68,7 @@ public class ExpertMetaApplyManage { | |||
private final IExpertMetaApplyService iMetaApplyService; | |||
private final IExpertDictionaryService expertDictionaryService; | |||
// private final IExpertAdminManageService ExpertAdminManageService; | |||
// private final IExpertAdminManageService ExpertAdminManageService; | |||
private final RegionCacheHelper regionCacheHelper; | |||
private final IExpertUserFullInfoService userFullInfoService; | |||
private final DictionaryCache dictionaryCache; | |||
@@ -89,7 +89,9 @@ public class ExpertMetaApplyManage { | |||
ExpertAdminExpertManageQueryCmd queryCmd = buildExpertAdminExpertManageQueryCmd(req, viewRegions); | |||
// TODO | |||
// List<Long> filterExpertUserIdList = expertAdminManageService.filterExpertUserIdList(queryCmd); | |||
List<Long> filterExpertUserIdList = new ArrayList<>(); | |||
List<ExpertUserFullInfo> expertUserFullInfoList = userFullInfoService.list(); | |||
// TODO 获取所有的专家审核列表 | |||
List<Long> filterExpertUserIdList = expertUserFullInfoList.stream().map(ExpertUserFullInfo::getUserId).distinct().collect(Collectors.toList()); | |||
if (CollUtil.isEmpty(filterExpertUserIdList)) { | |||
return PageVo.empty(); | |||
} | |||
@@ -11,7 +11,6 @@ import com.ningdatech.pmapi.projectlib.model.req.StartProjectDeclareReq; | |||
import com.ningdatech.pmapi.projectlib.model.vo.AnnualPlanListItemVO; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
import lombok.AllArgsConstructor; | |||
import lombok.RequiredArgsConstructor; | |||
import org.springframework.web.bind.annotation.*; | |||
import org.springframework.web.multipart.MultipartFile; | |||
@@ -69,16 +68,17 @@ public class AnnualPlanController { | |||
annualPlanLibManage.importAnnualPlan(file); | |||
} | |||
@GetMapping("/modify") | |||
@PostMapping("/modify") | |||
@ApiOperation("年度计划编辑") | |||
@WebLog("年度计划编辑") | |||
public void modify(@RequestBody ProjectDTO req) { | |||
annualPlanLibManage.updateAnnualPlan(req); | |||
} | |||
@PostMapping("/exportList") | |||
@ApiOperation("项目库【列表|编辑表】导出") | |||
public void exportList(@Valid @RequestBody ProjectListReq param, HttpServletResponse response){ | |||
annualPlanLibManage.exportList(param,response); | |||
public void exportList(@Valid @RequestBody ProjectListReq param, HttpServletResponse response) { | |||
annualPlanLibManage.exportList(param, response); | |||
} | |||
} |
@@ -127,6 +127,7 @@ public class AnnualPlanLibManage { | |||
throw new BizException("开启方案申报失败"); | |||
} | |||
}); | |||
projectService.updateBatchById(projects); | |||
} | |||
@Transactional(rollbackFor = Exception.class) | |||
@@ -147,6 +148,7 @@ public class AnnualPlanLibManage { | |||
public void suspendAnnualPlan(ProjectIdReq req) throws Exception { | |||
Project project = projectService.getById(req.getProjectId()); | |||
stateMachine.execute(project, ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND); | |||
projectService.updateById(project); | |||
} | |||
@Transactional(rollbackFor = Exception.class) | |||
@@ -8,6 +8,7 @@ import com.ningdatech.basic.exception.BizException; | |||
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.pmapi.common.constant.CommonConst; | |||
import com.ningdatech.pmapi.common.helper.UserInfoHelper; | |||
import com.ningdatech.pmapi.common.model.entity.ExcelExportWriter; | |||
@@ -123,26 +124,12 @@ public class TodoCenterManage { | |||
} | |||
List<String> instCodes = userTodoList.stream().map(ProcessTaskVo::getInstanceId).collect(Collectors.toList()); | |||
List<ProcessTaskVo> resList = new ArrayList<>(); | |||
List<String> instList = new ArrayList<>(); | |||
for (ProcessTaskVo processTaskVo : userTodoList) { | |||
Map<String, ProcessTaskVo> map = resList.stream().collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); | |||
if (instList.contains(processTaskVo.getInstanceId())){ | |||
// 比较两个processTaskVo的endTime,保留最后处理的 | |||
ProcessTaskVo vo = map.get(processTaskVo.getInstanceId()); | |||
int compare = processTaskVo.getTaskEndTime().compareTo(vo.getTaskEndTime()); | |||
if (compare > 0){ | |||
instList.remove(processTaskVo.getInstanceId()); | |||
resList.remove(vo); | |||
}else { | |||
continue; | |||
} | |||
} | |||
instList.add(processTaskVo.getInstanceId()); | |||
resList.add(processTaskVo); | |||
} | |||
Map<String, ProcessTaskVo> taskVoMap = resList.stream().collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); | |||
Set<String> processSet = Sets.newHashSet(); | |||
Map<String, ProcessTaskVo> taskMap = userTodoList.stream() | |||
.sorted((t1,t2) -> t2.getTaskCreateTime().compareTo(t1.getTaskCreateTime())) | |||
.collect(Collectors.toList()).stream() | |||
.filter(v -> processSet.add(v.getInstanceId())) | |||
.collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); | |||
//2.再分页查询项目信息 | |||
ProjectListReq projectListReq = new ProjectListReq(); | |||
@@ -158,7 +145,7 @@ public class TodoCenterManage { | |||
ResToBeProcessedVO res = new ResToBeProcessedVO(); | |||
BeanUtils.copyProperties(d, res); | |||
res.setProjectId(d.getId()); | |||
ProcessTaskVo taskVo = taskVoMap.get(d.getInstCode()); | |||
ProcessTaskVo taskVo = taskMap.get(d.getInstCode()); | |||
res.setNodeId(taskVo.getTaskDefKey()); | |||
res.setProcessStatusName(taskVo.getStatus()); | |||
res.setProcessLaunchTime(d.getCreateOn()); | |||
@@ -192,7 +179,6 @@ public class TodoCenterManage { | |||
projectListReq.setInstCodes(instCodes); | |||
BeanUtils.copyProperties(param, projectListReq); | |||
List<Project> projects = CollUtil.isEmpty(userTodoList) ? Collections.emptyList() : projectLibManage.projectList(projectListReq); | |||
PageVo<ProjectLibListItemVO> projectLibList = projectLibManage.projectLibList(projectListReq); | |||
ExcelExportWriter excelExportWriter = new ExcelExportWriter(); | |||
String fileName = null; | |||
@@ -646,26 +632,13 @@ public class TodoCenterManage { | |||
List<String> instCodes = userIdoList.stream().map(ProcessTaskVo::getInstanceId).collect(Collectors.toList()); | |||
List<ProcessTaskVo> resList = new ArrayList<>(); | |||
List<String> instList = new ArrayList<>(); | |||
for (ProcessTaskVo processTaskVo : userIdoList) { | |||
Map<String, ProcessTaskVo> map = resList.stream().collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); | |||
if (instList.contains(processTaskVo.getInstanceId())){ | |||
// 比较两个processTaskVo的endTime,保留最后处理的 | |||
ProcessTaskVo vo = map.get(processTaskVo.getInstanceId()); | |||
int compare = processTaskVo.getTaskEndTime().compareTo(vo.getTaskEndTime()); | |||
if (compare > 0){ | |||
instList.remove(processTaskVo.getInstanceId()); | |||
resList.remove(vo); | |||
}else { | |||
continue; | |||
} | |||
} | |||
instList.add(processTaskVo.getInstanceId()); | |||
resList.add(processTaskVo); | |||
} | |||
Set<String> processSet = Sets.newHashSet(); | |||
Map<String, ProcessTaskVo> taskMap = userIdoList.stream() | |||
.sorted((t1,t2) -> t2.getTaskEndTime().compareTo(t1.getTaskEndTime())) | |||
.collect(Collectors.toList()).stream() | |||
.filter(v -> processSet.add(v.getInstanceId())) | |||
.collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); | |||
Map<String, ProcessTaskVo> taskVoMap = resList.stream().collect(Collectors.toMap(ProcessTaskVo::getInstanceId, v -> v)); | |||
// 分页查询项目信息 | |||
ProjectListReq projectListReq = new ProjectListReq(); | |||
projectListReq.setInstCodes(instCodes); | |||
@@ -679,10 +652,10 @@ public class TodoCenterManage { | |||
ResToBeProcessedVO res = new ResToBeProcessedVO(); | |||
BeanUtils.copyProperties(d, res); | |||
res.setProjectId(d.getId()); | |||
ProcessTaskVo taskVo = taskVoMap.get(d.getInstCode()); | |||
ProcessTaskVo taskVo = taskMap.get(d.getInstCode()); | |||
res.setProcessStatusName(taskVo.getStatus()); | |||
res.setProcessLaunchTime(d.getCreateOn()); | |||
res.setProcessHandleTime(d.getUpdateOn()); | |||
res.setProcessHandleTime(NdDateUtils.date2LocalDateTime(taskVo.getTaskEndTime())); | |||
return res; | |||
}).collect(Collectors.toList()); | |||
return PageVo.of(resVos, projectPage.getTotal()); | |||
@@ -3,10 +3,9 @@ package com.ningdatech.pmapi.statemachine; | |||
import com.alibaba.fastjson.JSON; | |||
import com.ningdatech.pmapi.AppTests; | |||
import com.ningdatech.pmapi.common.statemachine.util.StateMachineUtils; | |||
import com.ningdatech.pmapi.common.statemachine.event.ProjectStatusChangeEvent; | |||
import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; | |||
import com.ningdatech.pmapi.projectlib.model.entity.Project; | |||
import org.junit.Test; | |||
import org.junit.jupiter.api.Test; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import java.math.BigDecimal; | |||
@@ -26,7 +25,7 @@ public class StateMachineTest extends AppTests { | |||
public void stateMachineTest() throws Exception { | |||
Project project = new Project(); | |||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||
project.setDeclareAmount(BigDecimal.valueOf(2000)); | |||
stateMachineUtils.execute(project, stateMachineUtils.getProjectStatusPassEvent(project.getStatus())); | |||
System.out.println(String.format("project:%s", JSON.toJSONString(project))); | |||