Browse Source

Merge branch 'master' into feature/dashboard

master
niohe·erbao 1 year ago
parent
commit
9b6c0725e1
10 changed files with 151 additions and 14 deletions
  1. +3
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingExpertJudgeController.java
  2. +2
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/domain/MeetingExpertJudge.java
  3. +49
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/enumeration/ExpertJudgeEnum.java
  4. +26
    -8
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/req/MeetingExpertJudgeReq.java
  5. +14
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingExpertJudgeManage.java
  6. +10
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java
  7. +9
    -3
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectLibListItemVO.java
  8. +1
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/staging/utils/ProjectStatusFlowUtil.java
  9. +11
    -2
      pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java
  10. +26
    -0
      pmapi/src/test/java/com/ningdatech/pmapi/password/PasswordTest.java

+ 3
- 1
pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingExpertJudgeController.java View File

@@ -2,10 +2,12 @@ package com.ningdatech.pmapi.meeting.controller;




import com.ningdatech.pmapi.meeting.entity.req.MeetingExpertJudgeReq; import com.ningdatech.pmapi.meeting.entity.req.MeetingExpertJudgeReq;
import com.ningdatech.pmapi.meeting.entity.req.MeetingExpertJudgeReq.Basic;
import com.ningdatech.pmapi.meeting.manage.MeetingExpertJudgeManage; import com.ningdatech.pmapi.meeting.manage.MeetingExpertJudgeManage;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;


import javax.validation.Valid; import javax.validation.Valid;
@@ -28,7 +30,7 @@ public class MeetingExpertJudgeController {


@ApiOperation("保存履职评价") @ApiOperation("保存履职评价")
@PostMapping("/submit") @PostMapping("/submit")
public void saveExpertJudge(@Valid @RequestBody MeetingExpertJudgeReq req) {
public void saveExpertJudge(@Validated(Basic.class) @RequestBody MeetingExpertJudgeReq req) {
expertJudgeManage.saveExpertJudge(req); expertJudgeManage.saveExpertJudge(req);
} }




+ 2
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/domain/MeetingExpertJudge.java View File

@@ -30,6 +30,8 @@ public class MeetingExpertJudge implements Serializable {
@ApiModelProperty("会议ID") @ApiModelProperty("会议ID")
private Long meetingId; private Long meetingId;


private Long expertId;

@ApiModelProperty("会议专家ID") @ApiModelProperty("会议专家ID")
private Long meetingExpertId; private Long meetingExpertId;




+ 49
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/enumeration/ExpertJudgeEnum.java View File

@@ -0,0 +1,49 @@
package com.ningdatech.pmapi.meeting.entity.enumeration;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
* <p>
* ExpertJudgeEnum
* </p>
*
* @author WendyYang
* @since 2023/8/3
**/
public class ExpertJudgeEnum {

private ExpertJudgeEnum() {
}

@Getter
@AllArgsConstructor
public enum AttendStatus {
ON_TIME(1, "准时"),
BE_LATE(2, "迟到"),
ABSENT(3, "缺席");

private final Integer code;
private final String value;

public boolean eq(Integer code) {
return this.code.equals(code);
}
}

@Getter
@AllArgsConstructor
public enum Performance {

POSITIVE(1, "积极"),
NEGATIVE(2, "消极");

private final Integer code;
private final String value;

public boolean eq(Integer code) {
return this.code.equals(code);
}
}

}

+ 26
- 8
pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/req/MeetingExpertJudgeReq.java View File

@@ -7,6 +7,9 @@ import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.time.LocalDateTime; import java.time.LocalDateTime;


import com.ningdatech.pmapi.meeting.entity.enumeration.ExpertJudgeEnum;
import org.hibernate.validator.constraints.Range;

/** /**
* <p> * <p>
* MeetingExpertJudgeReq * MeetingExpertJudgeReq
@@ -20,34 +23,41 @@ public class MeetingExpertJudgeReq {


private Long id; private Long id;


@NotNull(message = "会议ID不能为空")
@NotNull(message = "会议ID不能为空", groups = Basic.class)
private Long meetingId; private Long meetingId;


@NotNull(message = "会议专家ID不能为空")
@NotNull(message = "会议专家ID不能为空", groups = Basic.class)
private Long meetingExpertId; private Long meetingExpertId;


@ApiModelProperty("评分(1~10)") @ApiModelProperty("评分(1~10)")
@NotNull(message = "评分不能为空")
@NotNull(message = "评分不能为空", groups = Basic.class)
@Range(min = 1, max = 10, message = "评分范围为:1~10")
private Integer score; private Integer score;


/**
* @see ExpertJudgeEnum.AttendStatus
*/
@ApiModelProperty("是否参加:1 准时、2 迟到、3 缺席") @ApiModelProperty("是否参加:1 准时、2 迟到、3 缺席")
@NotNull(message = "是否参加不能为空")
@NotNull(message = "是否参加不能为空", groups = Basic.class)
private Integer attended; private Integer attended;


/**
* @see ExpertJudgeEnum.Performance
*/
@ApiModelProperty("参与程度:1 积极、2 消极") @ApiModelProperty("参与程度:1 积极、2 消极")
@NotNull(message = "参与度不能为空")
@NotNull(message = "参与度不能为空", groups = Attend.class)
private Integer performance; private Integer performance;


@ApiModelProperty("是否提出建议:true 是、false 否") @ApiModelProperty("是否提出建议:true 是、false 否")
@NotNull(message = "是否提出建议不能为空")
@NotNull(message = "是否提出建议不能为空", groups = Attend.class)
private Boolean advised; private Boolean advised;


@ApiModelProperty("是否早退:true 早退、false 未早退") @ApiModelProperty("是否早退:true 早退、false 未早退")
@NotNull(message = "是否早退不能为空")
@NotNull(message = "是否早退不能为空", groups = Attend.class)
private Boolean leaveEarly; private Boolean leaveEarly;


@ApiModelProperty("是否违规:true 是、false 否") @ApiModelProperty("是否违规:true 是、false 否")
@NotNull(message = "是否违规不能为空")
@NotNull(message = "是否违规不能为空", groups = Attend.class)
private Boolean brokeRule; private Boolean brokeRule;


@ApiModelProperty("违规内容") @ApiModelProperty("违规内容")
@@ -56,4 +66,12 @@ public class MeetingExpertJudgeReq {
@JSONField(format = "yyyy-MM-dd HH:mm:ss") @JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createOn; private LocalDateTime createOn;


//==================================================================================================================

public interface Attend {
}

public interface Basic {
}

} }

+ 14
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingExpertJudgeManage.java View File

@@ -4,19 +4,25 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.basic.util.ValidUtil;
import com.ningdatech.cache.lock.DistributedLock; import com.ningdatech.cache.lock.DistributedLock;
import com.ningdatech.pmapi.meeting.entity.domain.Meeting; import com.ningdatech.pmapi.meeting.entity.domain.Meeting;
import com.ningdatech.pmapi.meeting.entity.domain.MeetingExpert; import com.ningdatech.pmapi.meeting.entity.domain.MeetingExpert;
import com.ningdatech.pmapi.meeting.entity.domain.MeetingExpertJudge; import com.ningdatech.pmapi.meeting.entity.domain.MeetingExpertJudge;
import com.ningdatech.pmapi.meeting.entity.enumeration.ExpertAttendStatusEnum; import com.ningdatech.pmapi.meeting.entity.enumeration.ExpertAttendStatusEnum;
import com.ningdatech.pmapi.meeting.entity.enumeration.ExpertJudgeEnum;
import com.ningdatech.pmapi.meeting.entity.enumeration.MeetingStatusEnum; import com.ningdatech.pmapi.meeting.entity.enumeration.MeetingStatusEnum;
import com.ningdatech.pmapi.meeting.entity.req.MeetingExpertJudgeReq; import com.ningdatech.pmapi.meeting.entity.req.MeetingExpertJudgeReq;
import com.ningdatech.pmapi.meeting.entity.req.MeetingExpertJudgeReq.Attend;
import com.ningdatech.pmapi.meeting.service.IMeetingExpertJudgeService; import com.ningdatech.pmapi.meeting.service.IMeetingExpertJudgeService;
import com.ningdatech.pmapi.meeting.service.IMeetingExpertService; import com.ningdatech.pmapi.meeting.service.IMeetingExpertService;
import com.ningdatech.pmapi.meeting.service.IMeetingService; import com.ningdatech.pmapi.meeting.service.IMeetingService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;


import java.util.Map;

/** /**
* <p> * <p>
* MeetingExpertJudgeManage * MeetingExpertJudgeManage
@@ -46,6 +52,13 @@ public class MeetingExpertJudgeManage {
throw BizException.wrap("履职评价失败,请重试"); throw BizException.wrap("履职评价失败,请重试");
} }
try { try {
if (!ExpertJudgeEnum.AttendStatus.ABSENT.eq(req.getAttended())) {
Map<String, String> validMap = ValidUtil.valid(req, Attend.class);
if (!validMap.isEmpty()) {
String errMsg = CollUtils.joinByComma(validMap.values());
throw BizException.wrap(errMsg);
}
}
// 会议状态校验 // 会议状态校验
Meeting meeting = meetingService.getById(req.getMeetingId()); Meeting meeting = meetingService.getById(req.getMeetingId());
if (meeting == null || MeetingStatusEnum.CANCELED.eq(meeting.getStatus())) { if (meeting == null || MeetingStatusEnum.CANCELED.eq(meeting.getStatus())) {
@@ -63,6 +76,7 @@ public class MeetingExpertJudgeManage {
throw BizException.wrap("履职评价已提交"); throw BizException.wrap("履职评价已提交");
} }
MeetingExpertJudge entity = BeanUtil.copyProperties(req, MeetingExpertJudge.class); MeetingExpertJudge entity = BeanUtil.copyProperties(req, MeetingExpertJudge.class);
entity.setExpertId(expert.getExpertId());
expertJudgeService.save(entity); expertJudgeService.save(entity);
} finally { } finally {
distributedLock.releaseLock(key); distributedLock.releaseLock(key);


+ 10
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java View File

@@ -126,6 +126,9 @@ public class ProjectLibManage {
ProjectLibListItemVO item = new ProjectLibListItemVO(); ProjectLibListItemVO item = new ProjectLibListItemVO();
item.setId(w.getId()); item.setId(w.getId());
item.setProjectName(w.getProjectName()); item.setProjectName(w.getProjectName());
item.setProjectCode(w.getProjectCode());
item.setArea(w.getArea());
item.setAreaCode(w.getAreaCode());
item.setCreateOn(w.getCreateOn()); item.setCreateOn(w.getCreateOn());
item.setDeclaredAmount(w.getDeclareAmount()); item.setDeclaredAmount(w.getDeclareAmount());
item.setStage(w.getStage()); item.setStage(w.getStage());
@@ -157,6 +160,9 @@ public class ProjectLibManage {
ProjectLibListItemVO item = new ProjectLibListItemVO(); ProjectLibListItemVO item = new ProjectLibListItemVO();
item.setId(w.getId()); item.setId(w.getId());
item.setProjectName(w.getProjectName()); item.setProjectName(w.getProjectName());
item.setProjectCode(w.getProjectCode());
item.setArea(w.getArea());
item.setAreaCode(w.getAreaCode());
item.setCreateOn(w.getCreateOn()); item.setCreateOn(w.getCreateOn());
item.setDeclaredAmount(w.getDeclareAmount()); item.setDeclaredAmount(w.getDeclareAmount());
item.setStage(w.getStage()); item.setStage(w.getStage());
@@ -1125,6 +1131,10 @@ public class ProjectLibManage {
projectApplication.setProjectVersion(version); projectApplication.setProjectVersion(version);
projectApplication.setIsConstruct(isConstruct); projectApplication.setIsConstruct(isConstruct);


if(StringUtils.isNotBlank(application.getRelatedExistsApplication())){
projectApplication.setApplicationName(null);
}

boolean result = projectApplicationService.save(projectApplication); boolean result = projectApplicationService.save(projectApplication);
// 保存应用关联的核心业务 // 保存应用关联的核心业务
List<ProjectCoreBusinessDTO> coreBusinessList = application.getCoreBusinessList(); List<ProjectCoreBusinessDTO> coreBusinessList = application.getCoreBusinessList();


+ 9
- 3
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/vo/ProjectLibListItemVO.java View File

@@ -39,6 +39,15 @@ public class ProjectLibListItemVO {
@ApiModelProperty("项目ID") @ApiModelProperty("项目ID")
private Long id; private Long id;


@ApiModelProperty("项目编号")
private String projectCode;

@ApiModelProperty("区域")
private String area;

@ApiModelProperty("区域Code")
private String areaCode;

@ApiModelProperty("项目名称") @ApiModelProperty("项目名称")
private String projectName; private String projectName;


@@ -127,9 +136,6 @@ public class ProjectLibListItemVO {
@ApiModelProperty("能否被预审申报") @ApiModelProperty("能否被预审申报")
private Boolean canPreDeclared = Boolean.FALSE; private Boolean canPreDeclared = Boolean.FALSE;


@ApiModelProperty("21位项目编号")
private String projectCode;

@ApiModelProperty("是否有上级条线主管部门 0没有 1有") @ApiModelProperty("是否有上级条线主管部门 0没有 1有")
private Integer isHigherSuperOrg; private Integer isHigherSuperOrg;




+ 1
- 0
pmapi/src/main/java/com/ningdatech/pmapi/staging/utils/ProjectStatusFlowUtil.java View File

@@ -31,6 +31,7 @@ public class ProjectStatusFlowUtil {
* value: lambda表达式,最终会获取发起实例的函数 * value: lambda表达式,最终会获取发起实例的函数
*/ */
public ProjectStatusFlowUtil(){ public ProjectStatusFlowUtil(){
intervalTimeMap.put(0,60);
intervalTimeMap.put(1,60 * 2); intervalTimeMap.put(1,60 * 2);
intervalTimeMap.put(2,60 * 6); intervalTimeMap.put(2,60 * 6);
intervalTimeMap.put(3,60 * 15); intervalTimeMap.put(3,60 * 15);


+ 11
- 2
pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java View File

@@ -653,7 +653,10 @@ public class TodoCenterManage {
List<ProjectInst> projectInstList = projectInstService.list(Wrappers.lambdaQuery(ProjectInst.class) List<ProjectInst> projectInstList = projectInstService.list(Wrappers.lambdaQuery(ProjectInst.class)
.in(ProjectInst::getProjectId, projectIdList) .in(ProjectInst::getProjectId, projectIdList)
.orderByDesc(ProjectInst::getProjectId)); .orderByDesc(ProjectInst::getProjectId));
Map<String, Project> projectInfoMap = projectInstList.stream().collect(Collectors.toMap(ProjectInst::getInstCode, p -> projectsMap.get(p.getProjectId())));
Map<String, Project> projectInfoMap = projectInstList.stream()
.filter(p -> Objects.nonNull(p.getInstCode()) &&
!TodoCenterConstant.Declared.NULL_INST_CODE.equals(p.getInstCode()))
.collect(Collectors.toMap(ProjectInst::getInstCode, p -> projectsMap.get(p.getProjectId())));
List<String> instCodes = projectInstList.stream().map(ProjectInst::getInstCode).collect(Collectors.toList()); List<String> instCodes = projectInstList.stream().map(ProjectInst::getInstCode).collect(Collectors.toList());


// 查出用户工作流 // 查出用户工作流
@@ -793,7 +796,10 @@ public class TodoCenterManage {
List<ProjectInst> projectInstList = projectInstService.list(Wrappers.lambdaQuery(ProjectInst.class) List<ProjectInst> projectInstList = projectInstService.list(Wrappers.lambdaQuery(ProjectInst.class)
.in(ProjectInst::getProjectId, projectIdList) .in(ProjectInst::getProjectId, projectIdList)
.orderByDesc(ProjectInst::getProjectId)); .orderByDesc(ProjectInst::getProjectId));
Map<String, Project> projectInfoMap = projectInstList.stream().collect(Collectors.toMap(ProjectInst::getInstCode, p -> projectsMap.get(p.getProjectId())));
Map<String, Project> projectInfoMap = projectInstList.stream()
.filter(p -> Objects.nonNull(p.getInstCode()) &&
!TodoCenterConstant.Declared.NULL_INST_CODE.equals(p.getInstCode()))
.collect(Collectors.toMap(ProjectInst::getInstCode, p -> projectsMap.get(p.getProjectId())));
List<String> instCodes = projectInstList.stream().map(ProjectInst::getInstCode).collect(Collectors.toList()); List<String> instCodes = projectInstList.stream().map(ProjectInst::getInstCode).collect(Collectors.toList());


// 查出用户工作流 // 查出用户工作流
@@ -1153,6 +1159,9 @@ public class TodoCenterManage {
!InstTypeEnum.DEPT_UNITED_REVIEW.getCode().equals(instType)) { !InstTypeEnum.DEPT_UNITED_REVIEW.getCode().equals(instType)) {
projectApplication.setIsConstruct(Boolean.TRUE); projectApplication.setIsConstruct(Boolean.TRUE);
} }
if(StringUtils.isNotBlank(application.getRelatedExistsApplication())){
projectApplication.setApplicationName(null);
}
projectApplication.setProjectVersion(project.getVersion()); projectApplication.setProjectVersion(project.getVersion());
projectApplicationService.save(projectApplication); projectApplicationService.save(projectApplication);
} }


+ 26
- 0
pmapi/src/test/java/com/ningdatech/pmapi/password/PasswordTest.java View File

@@ -0,0 +1,26 @@
package com.ningdatech.pmapi.password;

import org.junit.Test;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
* @Classname PasswordTest
* @Description
* @Date 2023/8/2 17:39
* @Author PoffyZhang
*/
public class PasswordTest {

@Test
public void password(){
String mingwen = "ELgaCeHteZA8VJK8";

String miwen = "$2a$10$MT82RbInrIkRVL/GRS01Vew8AO6ICngOpbAGbdkWgSnYFhog5n8.q";

String encode = new BCryptPasswordEncoder().encode(mingwen);
boolean matches = new BCryptPasswordEncoder().matches(mingwen, encode);
System.out.println(encode);
System.out.println(matches);
}
}

Loading…
Cancel
Save