Browse Source

增加会议评审项目

tags/24080901
WendyYang 1 year ago
parent
commit
a8910f7d01
19 changed files with 346 additions and 78 deletions
  1. +2
    -2
      ningda-generator/src/main/java/com/ningdatech/generator/config/GeneratorCodeKingbaseConfig.java
  2. +5
    -21
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingController.java
  3. +20
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingInnerProjectController.java
  4. +20
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingOuterProjectController.java
  5. +37
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/domain/MeetingInnerProject.java
  6. +61
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/domain/MeetingOuterProject.java
  7. +7
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/dto/MeetingBasicDTO.java
  8. +32
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/dto/MeetingReviewProjectDTO.java
  9. +2
    -16
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/helper/ExpertInviteHelper.java
  10. +9
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/helper/MeetingManageHelper.java
  11. +37
    -39
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java
  12. +16
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingInnerProjectMapper.java
  13. +5
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingInnerProjectMapper.xml
  14. +16
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingOuterProjectMapper.java
  15. +5
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingOuterProjectMapper.xml
  16. +16
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/service/IMeetingInnerProjectService.java
  17. +16
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/service/IMeetingOuterProjectService.java
  18. +20
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/service/impl/MeetingInnerProjectServiceImpl.java
  19. +20
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/service/impl/MeetingOuterProjectServiceImpl.java

+ 2
- 2
ningda-generator/src/main/java/com/ningdatech/generator/config/GeneratorCodeKingbaseConfig.java View File

@@ -46,7 +46,7 @@ public class GeneratorCodeKingbaseConfig {
path + "/com/ningdatech/pmapi/" + packageName + "/mapper"));
})
.strategyConfig(builder -> {
builder.addTablePrefix("wflow");
builder.addTablePrefix("");
// 设置需要生成的表名
builder.addInclude(tableNames);
})
@@ -56,7 +56,7 @@ public class GeneratorCodeKingbaseConfig {
}

public static void main(String[] args) {
generate("Liuxinxin", "expert", PATH_LXX, "expert_avoid_company");
generate("WendyYang", "meeting", PATH_YYD, "meeting_inner_project","meeting_outer_project");
}

}

+ 5
- 21
pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingController.java View File

@@ -4,7 +4,6 @@ package com.ningdatech.pmapi.meeting.controller;
import com.ningdatech.basic.model.IdVo;
import com.ningdatech.basic.model.PageVo;
import com.ningdatech.log.annotation.WebLog;
import com.ningdatech.pmapi.meeting.entity.dto.MeetingBasicDTO;
import com.ningdatech.pmapi.meeting.entity.req.*;
import com.ningdatech.pmapi.meeting.entity.vo.*;
import com.ningdatech.pmapi.meeting.manage.MeetingManage;
@@ -33,15 +32,15 @@ public class MeetingController {

private final MeetingManage meetingManage;

@PostMapping("/save")
@ApiOperation("新建会议")
@PostMapping("/create")
@ApiOperation(value = "新建会议")
@WebLog(value = "新建会议")
public IdVo<Long> meetingCreate(@Valid @RequestBody MeetingCreateReq req) {
return meetingManage.save(req);
return meetingManage.meetingCreateAndInviteExpert(req);
}

@PostMapping("/expertInviteByCreate")
@ApiOperation("新建会议-专家抽取")
@ApiOperation(value = "新建会议-专家抽取", hidden = true)
@WebLog(value = "新建会议-专家抽取")
public void expertInviteByCreate(@Valid @RequestBody ExpertInviteReq po) {
meetingManage.expertInviteByCreate(po);
@@ -53,7 +52,7 @@ public class MeetingController {
return meetingManage.expertCountOnChange(po);
}

@ApiOperation("专家抽取员事务列表")
@ApiOperation("专家抽取员会议列表")
@GetMapping("/meetingListByManager")
@WebLog(value = "专家抽取员事务列表")
public PageVo<MeetingByManagerVO> meetingListByManager(MeetingListReq po) {
@@ -74,21 +73,6 @@ public class MeetingController {
return meetingManage.getMeetingBasicInfo(meetingId);
}

@ApiOperation("会议结果上传")
@PostMapping("/uploadMeetingResult")
@WebLog(value = "会议结果上传")
public void uploadMeetingResult(@Valid @RequestBody MeetingResultReq po) {
meetingManage.uploadMeetingResult(po);

}

@ApiOperation("会议结果详情")
@GetMapping("/detail/{meetingId}/meetingResult")
@WebLog(value = "会议结果详情况")
public MeetingResultVO meetingResultDetail(@PathVariable Long meetingId) {
return meetingManage.meetingResultDetail(meetingId);
}

@ApiOperation("邀请情况详情")
@GetMapping("/detail/{meetingId}/inviteDetail")
@WebLog(value = "邀请情况详请")


+ 20
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingInnerProjectController.java View File

@@ -0,0 +1,20 @@
package com.ningdatech.pmapi.meeting.controller;


import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.stereotype.Controller;

/**
* <p>
* 会议评审内部项目表 前端控制器
* </p>
*
* @author WendyYang
* @since 2023-02-28
*/
@Controller
@RequestMapping("/pmapi.meeting/meeting-inner-project")
public class MeetingInnerProjectController {

}

+ 20
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/controller/MeetingOuterProjectController.java View File

@@ -0,0 +1,20 @@
package com.ningdatech.pmapi.meeting.controller;


import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.stereotype.Controller;

/**
* <p>
* 会议评审外部项目 前端控制器
* </p>
*
* @author WendyYang
* @since 2023-02-28
*/
@Controller
@RequestMapping("/pmapi.meeting/meeting-outer-project")
public class MeetingOuterProjectController {

}

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

@@ -0,0 +1,37 @@
package com.ningdatech.pmapi.meeting.entity.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
* <p>
* 会议评审内部项目表
* </p>
*
* @author WendyYang
* @since 2023-02-28
*/
@Data
@TableName("meeting_inner_project")
@ApiModel(value = "MeetingInnerProject对象", description = "会议评审内部项目表")
public class MeetingInnerProject implements Serializable {

private static final long serialVersionUID = 1L;

@ApiModelProperty("主键")
@TableId(type = IdType.AUTO)
private Long id;

@ApiModelProperty("会议ID")
private Long meetingId;

@ApiModelProperty("项目ID")
private Long projectId;

}

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

@@ -0,0 +1,61 @@
package com.ningdatech.pmapi.meeting.entity.domain;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
* <p>
* 会议评审外部项目
* </p>
*
* @author WendyYang
* @since 2023-02-28
*/
@Data
@TableName("meeting_outer_project")
@ApiModel(value = "MeetingOuterProject对象", description = "会议评审外部项目")
public class MeetingOuterProject implements Serializable {

private static final long serialVersionUID = 1L;

@ApiModelProperty("主键")
@TableId(type = IdType.AUTO)
private Long id;

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

@ApiModelProperty("申报单位")
private String buildOrg;

@ApiModelProperty("项目类型")
private String projectType;

@ApiModelProperty("预算年度")
private Integer projectYear;

@ApiModelProperty("申报金额")
private BigDecimal declareAmount;

@ApiModelProperty("会议ID")
private Long meetingId;

@TableField(fill = FieldFill.INSERT)
private Long createBy;

@TableField(fill = FieldFill.INSERT)
private LocalDateTime createOn;

@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateBy;

@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateOn;

}

+ 7
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/dto/MeetingBasicDTO.java View File

@@ -8,6 +8,7 @@ import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
* <p>
@@ -59,4 +60,10 @@ public class MeetingBasicDTO {
@ApiModelProperty("联系方式")
private String contact;

@ApiModelProperty("内部项目ID")
private List<Long> projectIdList;

@ApiModelProperty("外部项目")
private List<MeetingReviewProjectDTO> projects;

}

+ 32
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/entity/dto/MeetingReviewProjectDTO.java View File

@@ -0,0 +1,32 @@
package com.ningdatech.pmapi.meeting.entity.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
* <p>
* MeetingEvalProjectDTO
* </p>
*
* @author WendyYang
* @since 17:18 2023/2/28
*/
@Data
public class MeetingReviewProjectDTO {

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

@ApiModelProperty("预算年度")
private Integer projectYear;

@ApiModelProperty("项目类型")
private String projectType;

@ApiModelProperty("申报金额")
private String declareAmount;

@ApiModelProperty("申报单位")
private String buildOrg;

}

+ 2
- 16
pmapi/src/main/java/com/ningdatech/pmapi/meeting/helper/ExpertInviteHelper.java View File

@@ -87,26 +87,12 @@ public class ExpertInviteHelper {
return expertIds;
}

public Map<Long, ExpertUserFullInfo> checkAppointExpert(AppointInviteRuleDTO appointRule, AvoidInfoDTO avoidRule) {
public Map<Long, ExpertUserFullInfo> checkAppointExpert(AppointInviteRuleDTO appointRule) {
if (appointRule == null) {
return Collections.emptyMap();
}
List<ExpertUserFullInfo> expertInfos = expertUserFullInfoService.listByUserId(appointRule.getExpertIds());
Map<Long, ExpertUserFullInfo> infoMap = CollUtils.listToMap(expertInfos, ExpertUserFullInfo::getUserId);
if (avoidRule == null) {
return infoMap;
}
infoMap.forEach((key, userFullInfo) -> {
if (CollectionUtils.isNotEmpty(avoidRule.getExpertIds())) {
boolean contains = avoidRule.getExpertIds().contains(key);
Assert.isTrue(!contains, "已回避的专家不可被指定邀请");
}
if (CollUtil.isNotEmpty(avoidRule.getAvoidUnitIdList())) {
boolean contains = avoidRule.getAvoidUnitIdList().contains(userFullInfo.getCompany());
Assert.isTrue(!contains, "回避单位的专家不可出现在指定邀请名单中");
}
});
return infoMap;
return CollUtils.listToMap(expertInfos, ExpertUserFullInfo::getUserId);
}

/**


+ 9
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/helper/MeetingManageHelper.java View File

@@ -15,6 +15,7 @@ import com.ningdatech.pmapi.meeting.entity.domain.Meeting;
import com.ningdatech.pmapi.meeting.entity.domain.MeetingExpert;
import com.ningdatech.pmapi.meeting.entity.dto.AvoidInfoDTO;
import com.ningdatech.pmapi.meeting.entity.dto.MeetingAndAttendStatusDTO;
import com.ningdatech.pmapi.meeting.entity.dto.MeetingBasicDTO;
import com.ningdatech.pmapi.meeting.entity.enumeration.ExpertAttendStatus;
import com.ningdatech.pmapi.meeting.entity.enumeration.MeetingStatus;
import com.ningdatech.pmapi.meeting.entity.req.MeetingListReq;
@@ -49,6 +50,14 @@ public class MeetingManageHelper {
private final IExpertInviteRuleService inviteRuleService;
private final IExpertInviteAvoidRuleService inviteAvoidRuleService;

public void checkReviewProject(MeetingBasicDTO meetingBasic) {
if (meetingBasic.getIsInnerProject()) {
Assert.notEmpty(meetingBasic.getProjectIdList(), "评审项目不能为空");
} else {
Assert.notEmpty(meetingBasic.getProjects(), "评审项目不能为空");
}
}

/**
* 获取专家出席会议的状态
*


+ 37
- 39
pmapi/src/main/java/com/ningdatech/pmapi/meeting/manage/MeetingManage.java View File

@@ -21,10 +21,7 @@ import com.ningdatech.pmapi.expert.entity.ExpertUserFullInfo;
import com.ningdatech.pmapi.expert.helper.PermissionCheckHelper;
import com.ningdatech.pmapi.expert.service.IExpertUserFullInfoService;
import com.ningdatech.pmapi.meeting.builder.ExpertInviteBuilder;
import com.ningdatech.pmapi.meeting.entity.domain.ExpertInviteAvoidRule;
import com.ningdatech.pmapi.meeting.entity.domain.ExpertInviteRule;
import com.ningdatech.pmapi.meeting.entity.domain.Meeting;
import com.ningdatech.pmapi.meeting.entity.domain.MeetingExpert;
import com.ningdatech.pmapi.meeting.entity.domain.*;
import com.ningdatech.pmapi.meeting.entity.dto.*;
import com.ningdatech.pmapi.meeting.entity.enumeration.ExpertAttendStatus;
import com.ningdatech.pmapi.meeting.entity.enumeration.ExpertInviteTypeEnum;
@@ -36,10 +33,7 @@ import com.ningdatech.pmapi.meeting.entity.vo.ExpertInviteDetailVO.RandomInviteL
import com.ningdatech.pmapi.meeting.helper.ExpertInviteHelper;
import com.ningdatech.pmapi.meeting.helper.MeetingManageHelper;
import com.ningdatech.pmapi.meeting.helper.YxtCallOrSmsHelper;
import com.ningdatech.pmapi.meeting.service.IExpertInviteAvoidRuleService;
import com.ningdatech.pmapi.meeting.service.IExpertInviteRuleService;
import com.ningdatech.pmapi.meeting.service.IMeetingExpertService;
import com.ningdatech.pmapi.meeting.service.IMeetingService;
import com.ningdatech.pmapi.meeting.service.*;
import com.ningdatech.pmapi.meeting.task.ExpertInviteTask;
import com.ningdatech.pmapi.meta.helper.DictionaryCache;
import com.ningdatech.pmapi.meta.helper.TagCache;
@@ -85,6 +79,8 @@ public class MeetingManage {
private final DistributedLock distributedLock;
private final PermissionCheckHelper permissionCheckHelper;
private final IUserInfoService userInfoService;
private final IMeetingInnerProjectService meetingInnerProjectService;
private final IMeetingOuterProjectService meetingOuterProjectService;

private final ExpertInviteHelper expertInviteHelper;
private static final String INVITED_RULE_CREATE = "INVITED_RULE_CREATE:";
@@ -97,8 +93,9 @@ public class MeetingManage {
public static final int RETRY_TIMES = 3;

@Transactional(rollbackFor = Exception.class)
public IdVo<Long> save(MeetingCreateReq req) {
public IdVo<Long> meetingCreateAndInviteExpert(MeetingCreateReq req) {
MeetingBasicDTO meetingBasic = req.getMeetingBasicInfo();
meetingManageHelper.checkReviewProject(meetingBasic);
String md5ByParam = SecureUtil.md5(meetingBasic.toString());
String key = MEETING_CREATE_KEY + md5ByParam;
if (!distributedLock.lock(key, RETRY_TIMES)) {
@@ -115,6 +112,22 @@ public class MeetingManage {
meeting.setCreator(userDetail.getUsername());
meeting.setInviteStopped(true);
meetingService.save(meeting);
if (meetingBasic.getIsInnerProject()) {
List<MeetingInnerProject> projects = meetingBasic.getProjectIdList().stream().map(w -> {
MeetingInnerProject project = new MeetingInnerProject();
project.setMeetingId(meeting.getId());
project.setProjectId(w);
return project;
}).collect(Collectors.toList());
meetingInnerProjectService.saveBatch(projects);
} else {
List<MeetingOuterProject> projects = meetingBasic.getProjects().stream().map(w -> {
MeetingOuterProject project = BeanUtil.copyProperties(w, MeetingOuterProject.class);
project.setMeetingId(meeting.getId());
return project;
}).collect(Collectors.toList());
meetingOuterProjectService.saveBatch(projects);
}
// 抽取专家
req.getExpertInviteRule().setMeetingId(meeting.getId());
expertInviteByCreate(req.getExpertInviteRule());
@@ -131,11 +144,12 @@ public class MeetingManage {
throw BizException.wrap("不可重复进行专家抽取");
}
try {
AvoidInfoDTO avoidInfo = req.getAvoidRule();
Meeting meeting = meetingService.getById(req.getMeetingId());
if (ExpertInviteTypeEnum.RANDOM.eq(req.getInviteType())) {
List<RandomInviteRuleDTO> randomRules = req.getRandomRules();
Assert.notEmpty(randomRules, "随机抽取规则不能为空");
AvoidInfoDTO avoidInfo = req.getAvoidRule();
Assert.notNull(avoidInfo, "回避信息不能为空");
// 随机抽取的话则需进行抽取数量校验
ExpertCountOnChangeVO countOnChange = expertCountOnChange(req);
if (!countOnChange.getStatus()) {
@@ -152,11 +166,22 @@ public class MeetingManage {
update.set(Meeting::getInviteStopped, false);
update.eq(Meeting::getId, meeting.getId());
meetingService.update(update);
// 回避规则
if (avoidInfo != null) {
ExpertInviteAvoidRule avoidRule = new ExpertInviteAvoidRule();
avoidRule.setMeetingId(meeting.getId());
// 未传值时设置为0 表示不限制周参与次数
avoidRule.setWeekInviteCount(ObjectUtil.defaultIfNull(avoidRule.getWeekInviteCount(), 0));
avoidRule.setAvoidOrgIds(CollUtils.joinByComma(avoidInfo.getAvoidOrgIdList()));
avoidRule.setAvoidUnitIds(CollUtils.joinByComma(avoidInfo.getAvoidUnitIdList()));
avoidRule.setExpertIds(CollUtils.joinByComma(avoidInfo.getExpertIds()));
inviteAvoidRuleService.save(avoidRule);
}
} else {
// 指定邀请
AppointInviteRuleDTO appointRule = req.getAppointRule();
Assert.notNull(appointRule, "指定邀请规则不能为空");
Map<Long, ExpertUserFullInfo> usersMap = expertInviteHelper.checkAppointExpert(appointRule, avoidInfo);
Map<Long, ExpertUserFullInfo> usersMap = expertInviteHelper.checkAppointExpert(appointRule);
// 处理指定抽取规则
ExpertInviteRule appoint = getExpertInviteRule(appointRule, meeting.getId());
inviteRuleService.save(appoint);
@@ -169,17 +194,6 @@ public class MeetingManage {
}).collect(Collectors.toList());
meetingExpertService.saveBatch(experts);
}
// 回避规则
if (avoidInfo != null) {
ExpertInviteAvoidRule avoidRule = new ExpertInviteAvoidRule();
avoidRule.setMeetingId(meeting.getId());
// 未传值时设置为0 表示不限制周参与次数
avoidRule.setWeekInviteCount(ObjectUtil.defaultIfNull(avoidRule.getWeekInviteCount(), 0));
avoidRule.setAvoidOrgIds(CollUtils.joinByComma(avoidInfo.getAvoidOrgIdList()));
avoidRule.setAvoidUnitIds(CollUtils.joinByComma(avoidInfo.getAvoidUnitIdList()));
avoidRule.setExpertIds(CollUtils.joinByComma(avoidInfo.getExpertIds()));
inviteAvoidRuleService.save(avoidRule);
}
} finally {
distributedLock.releaseLock(key);
}
@@ -194,7 +208,7 @@ public class MeetingManage {
**/
public ExpertCountOnChangeVO expertCountOnChange(ExpertInviteReq req) {
// 未传递指定邀请专家直接忽略
expertInviteHelper.checkAppointExpert(req.getAppointRule(), req.getAvoidRule());
expertInviteHelper.checkAppointExpert(req.getAppointRule());
Meeting meeting = meetingService.getById(req.getMeetingId());
ExpertCountOnChangeVO resultCount = new ExpertCountOnChangeVO();
resultCount.setStatus(true);
@@ -321,22 +335,6 @@ public class MeetingManage {
.build();
}

public void uploadMeetingResult(MeetingResultReq po) {
LambdaUpdateWrapper<Meeting> updater = Wrappers.lambdaUpdate(Meeting.class)
.eq(Meeting::getId, po.getMeetingId())
.set(Meeting::getStatus, Manager.COMPLETED.getCode());
meetingService.update(updater);
}

public MeetingResultVO meetingResultDetail(Long meetingId) {
LambdaQueryWrapper<Meeting> query = Wrappers.lambdaQuery(Meeting.class)
.eq(Meeting::getId, meetingId);
MeetingResultVO result = new MeetingResultVO();
result.setMeetingId(meetingId);
return result;
}


public ExpertInviteDetailVO inviteDetail(Long meetingId) {
ExpertInviteDetailVO result = new ExpertInviteDetailVO();
Meeting meeting = meetingService.getById(meetingId);


+ 16
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingInnerProjectMapper.java View File

@@ -0,0 +1,16 @@
package com.ningdatech.pmapi.meeting.mapper;

import com.ningdatech.pmapi.meeting.entity.domain.MeetingInnerProject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
* <p>
* 会议评审内部项目表 Mapper 接口
* </p>
*
* @author WendyYang
* @since 2023-02-28
*/
public interface MeetingInnerProjectMapper extends BaseMapper<MeetingInnerProject> {

}

+ 5
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingInnerProjectMapper.xml View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ningdatech.pmapi.meeting.mapper.MeetingInnerProjectMapper">

</mapper>

+ 16
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingOuterProjectMapper.java View File

@@ -0,0 +1,16 @@
package com.ningdatech.pmapi.meeting.mapper;

import com.ningdatech.pmapi.meeting.entity.domain.MeetingOuterProject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**
* <p>
* 会议评审外部项目 Mapper 接口
* </p>
*
* @author WendyYang
* @since 2023-02-28
*/
public interface MeetingOuterProjectMapper extends BaseMapper<MeetingOuterProject> {

}

+ 5
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/mapper/MeetingOuterProjectMapper.xml View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ningdatech.pmapi.meeting.mapper.MeetingOuterProjectMapper">

</mapper>

+ 16
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/service/IMeetingInnerProjectService.java View File

@@ -0,0 +1,16 @@
package com.ningdatech.pmapi.meeting.service;

import com.ningdatech.pmapi.meeting.entity.domain.MeetingInnerProject;
import com.baomidou.mybatisplus.extension.service.IService;

/**
* <p>
* 会议评审内部项目表 服务类
* </p>
*
* @author WendyYang
* @since 2023-02-28
*/
public interface IMeetingInnerProjectService extends IService<MeetingInnerProject> {

}

+ 16
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/service/IMeetingOuterProjectService.java View File

@@ -0,0 +1,16 @@
package com.ningdatech.pmapi.meeting.service;

import com.ningdatech.pmapi.meeting.entity.domain.MeetingOuterProject;
import com.baomidou.mybatisplus.extension.service.IService;

/**
* <p>
* 会议评审外部项目 服务类
* </p>
*
* @author WendyYang
* @since 2023-02-28
*/
public interface IMeetingOuterProjectService extends IService<MeetingOuterProject> {

}

+ 20
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/service/impl/MeetingInnerProjectServiceImpl.java View File

@@ -0,0 +1,20 @@
package com.ningdatech.pmapi.meeting.service.impl;

import com.ningdatech.pmapi.meeting.entity.domain.MeetingInnerProject;
import com.ningdatech.pmapi.meeting.mapper.MeetingInnerProjectMapper;
import com.ningdatech.pmapi.meeting.service.IMeetingInnerProjectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

/**
* <p>
* 会议评审内部项目表 服务实现类
* </p>
*
* @author WendyYang
* @since 2023-02-28
*/
@Service
public class MeetingInnerProjectServiceImpl extends ServiceImpl<MeetingInnerProjectMapper, MeetingInnerProject> implements IMeetingInnerProjectService {

}

+ 20
- 0
pmapi/src/main/java/com/ningdatech/pmapi/meeting/service/impl/MeetingOuterProjectServiceImpl.java View File

@@ -0,0 +1,20 @@
package com.ningdatech.pmapi.meeting.service.impl;

import com.ningdatech.pmapi.meeting.entity.domain.MeetingOuterProject;
import com.ningdatech.pmapi.meeting.mapper.MeetingOuterProjectMapper;
import com.ningdatech.pmapi.meeting.service.IMeetingOuterProjectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

/**
* <p>
* 会议评审外部项目 服务实现类
* </p>
*
* @author WendyYang
* @since 2023-02-28
*/
@Service
public class MeetingOuterProjectServiceImpl extends ServiceImpl<MeetingOuterProjectMapper, MeetingOuterProject> implements IMeetingOuterProjectService {

}

Loading…
Cancel
Save