可选择的项目需要限制为自己创建的项目

master
Harry Yang 2023-01-04 16:24:02 +08:00
parent eba5e87990
commit 6600fac52e
2 changed files with 31 additions and 17 deletions

View File

@ -56,6 +56,7 @@ import cn.palmte.work.model.Project;
import cn.palmte.work.model.ProjectBudgetIncomeDetail; import cn.palmte.work.model.ProjectBudgetIncomeDetail;
import cn.palmte.work.model.ProjectRepository; import cn.palmte.work.model.ProjectRepository;
import cn.palmte.work.model.ProjectTaskRecord; import cn.palmte.work.model.ProjectTaskRecord;
import cn.palmte.work.model.SysRole;
import cn.palmte.work.model.enums.CooperationType; import cn.palmte.work.model.enums.CooperationType;
import cn.palmte.work.model.enums.Enumerable; import cn.palmte.work.model.enums.Enumerable;
import cn.palmte.work.model.enums.ProcessStatus; import cn.palmte.work.model.enums.ProcessStatus;
@ -228,13 +229,8 @@ public class ProcessController {
@ResponseBody @ResponseBody
@GetMapping("/projects") @GetMapping("/projects")
public List<Map<String, Object>> query(@RequestParam String q, @RequestParam ProcessType processType) { public List<Map<String, Object>> query(@RequestParam String q, @RequestParam ProcessType processType) {
List<Project> projects = Collections.emptyList(); Admin admin = getLoginUser();
if (processType == ProcessType.procurement_contract) { List<Project> projects = processService.queryProjects(q, processType, admin);
projects = projectRepository.findBudgetPassedProjects(q);
}
else if (processType == ProcessType.sale_contract) {
projects = projectRepository.findBudgetPassedProjectsForSaleContract(q);
}
return projects.stream() return projects.stream()
.map(project -> { .map(project -> {
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
@ -246,6 +242,14 @@ public class ProcessController {
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
private static Admin getLoginUser() {
Admin admin = InterfaceUtil.getAdmin();
if (admin == null) {
throw ErrorMessageException.failed("未登录或登录失效");
}
return admin;
}
@Builder @Builder
public static class ProjectReturnValue { public static class ProjectReturnValue {
public final String applyDate = LocalDate.now().format(formatter); public final String applyDate = LocalDate.now().format(formatter);
@ -296,8 +300,7 @@ public class ProcessController {
@GetMapping("/projects/{id}") @GetMapping("/projects/{id}")
public ProjectReturnValue getProject(@PathVariable int id, @RequestParam ProcessType processType) { public ProjectReturnValue getProject(@PathVariable int id, @RequestParam ProcessType processType) {
Project project = projectRepository.findById(id); Project project = projectRepository.findById(id);
Admin admin = InterfaceUtil.getAdmin(); Admin admin = getLoginUser();
// project_budget_plan_detail 垫资金额计算 // project_budget_plan_detail 垫资金额计算
BigDecimal repaidAmount = getRepaidAmount(id); BigDecimal repaidAmount = getRepaidAmount(id);
@ -387,7 +390,7 @@ public class ProcessController {
BeanUtils.copyProperties(form, entity, "sealTypes", "applyDate", "attachments"); BeanUtils.copyProperties(form, entity, "sealTypes", "applyDate", "attachments");
entity.setApplyDate(LocalDate.parse(form.getApplyDate(), formatter)); entity.setApplyDate(LocalDate.parse(form.getApplyDate(), formatter));
entity.setSealTypes(SealTypeArray.of(form.getSealTypes())); entity.setSealTypes(SealTypeArray.of(form.getSealTypes()));
Admin admin = InterfaceUtil.getAdmin(); Admin admin = getLoginUser();
entity.setApplyPersonId(admin.getId()); entity.setApplyPersonId(admin.getId());
entity.setAttachmentUri(JSON.toJSONString(form.getAttachments())); entity.setAttachmentUri(JSON.toJSONString(form.getAttachments()));
@ -616,7 +619,7 @@ public class ProcessController {
.withMatcher("applyPersonName", ExampleMatcher.GenericPropertyMatcher::contains); .withMatcher("applyPersonName", ExampleMatcher.GenericPropertyMatcher::contains);
// 只展示自己创建的草稿 // 只展示自己创建的草稿
Admin admin = InterfaceUtil.getAdmin(); Admin admin = getLoginUser();
if (!isAdministrator(admin)) { if (!isAdministrator(admin)) {
Integer loginUserId = admin.getId(); Integer loginUserId = admin.getId();
if (forAudit) { if (forAudit) {
@ -638,7 +641,7 @@ public class ProcessController {
} }
private boolean isAdministrator(Admin admin) { private boolean isAdministrator(Admin admin) {
return admin != null && "admin".equals(admin.getUserName()); return admin != null && admin.getRoleType() == SysRole.ROLE_TYPE_SYSTEM;
} }
// 审核 // 审核
@ -677,10 +680,7 @@ public class ProcessController {
@PostMapping("/revoke/{id}") @PostMapping("/revoke/{id}")
public void revoke(@PathVariable("id") int id) { public void revoke(@PathVariable("id") int id) {
// TODO 发起申请的人,在第一个人还没审批的情况下可以撤回 // TODO 发起申请的人,在第一个人还没审批的情况下可以撤回
Admin admin = InterfaceUtil.getAdmin(); Admin admin = getLoginUser();
if (admin == null) {
throw ErrorMessageException.failed("权限不足");
}
if (isAdministrator(admin)) { if (isAdministrator(admin)) {
processService.revoke(id); processService.revoke(id);
} }
@ -710,7 +710,7 @@ public class ProcessController {
@ResponseBody @ResponseBody
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
public void delete(@PathVariable("id") int id) { public void delete(@PathVariable("id") int id) {
Admin admin = InterfaceUtil.getAdmin(); Admin admin = getLoginUser();
Integer applyUserId = admin.getId(); Integer applyUserId = admin.getId();
int update = jdbcTemplate.update("delete from project_process where id =? and apply_person_id=?", id, applyUserId); int update = jdbcTemplate.update("delete from project_process where id =? and apply_person_id=?", id, applyUserId);
if (update != 1) { if (update != 1) {

View File

@ -10,6 +10,7 @@ import java.math.BigDecimal;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -32,6 +33,7 @@ import cn.palmte.work.model.Project;
import cn.palmte.work.model.ProjectBudgetCostDetail; import cn.palmte.work.model.ProjectBudgetCostDetail;
import cn.palmte.work.model.ProjectRepository; import cn.palmte.work.model.ProjectRepository;
import cn.palmte.work.model.enums.ProcessStatus; import cn.palmte.work.model.enums.ProcessStatus;
import cn.palmte.work.model.enums.ProcessType;
import cn.palmte.work.model.process.BudgetPurchaseAmount; import cn.palmte.work.model.process.BudgetPurchaseAmount;
import cn.palmte.work.model.process.BudgetPurchaseDetail; import cn.palmte.work.model.process.BudgetPurchaseDetail;
import cn.palmte.work.model.process.ProcurementContract; import cn.palmte.work.model.process.ProcurementContract;
@ -56,11 +58,23 @@ public class ProjectProcessService {
private final EntityManager entityManager; private final EntityManager entityManager;
private final ProjectInstanceService projectInstanceService; private final ProjectInstanceService projectInstanceService;
private final ProjectRepository projectRepository; private final ProjectRepository projectRepository;
private final ProjectService projectService;
private final DeptRepository deptRepository; private final DeptRepository deptRepository;
private final AdminRepository userRepository; private final AdminRepository userRepository;
private final ProcurementTypeRepository procurementTypeRepository; private final ProcurementTypeRepository procurementTypeRepository;
public List<Project> queryProjects(String q, ProcessType processType, Admin loginUser) {
List<Project> projects = Collections.emptyList();
if (processType == ProcessType.procurement_contract) {
projects = projectRepository.findBudgetPassedProjects(q);
}
else if (processType == ProcessType.sale_contract) {
projects = projectRepository.findBudgetPassedProjectsForSaleContract(q);
}
return projectService.visibleProjects(projects, loginUser);
}
@Data @Data
static class DeptReturnValue { static class DeptReturnValue {