提交 4eebb667 authored 作者: malei's avatar malei

feat(newbook): 选题管理

1. 审核记录列表 References: N/A
上级 64e7c951
...@@ -8,7 +8,8 @@ public enum NBErrorEnum { ...@@ -8,7 +8,8 @@ public enum NBErrorEnum {
SAVE_SERIES_FAILED(5000, "保存丛书失败"), SAVE_SERIES_FAILED(5000, "保存丛书失败"),
SAVE_SUBJECT_FAILED(5001, "保存选题失败"), SAVE_SUBJECT_FAILED(5001, "保存选题失败"),
GENERATE_SUBJECT_NUM_FAILED(5002, "选题号生成失败"), GENERATE_SUBJECT_NUM_FAILED(5002, "选题号生成失败"),
ENTITY_NOT_EXIST(5003, "资源不存在"); ENTITY_NOT_EXIST(5003, "资源不存在"),
GET_USER_INFO_FAILED(5004, "获取用户信息失败");
private int errNum; private int errNum;
private String errMsg; private String errMsg;
......
package com.zrqx.core.form.newbook.subject; package com.zrqx.core.form.newbook.subject;
import com.zrqx.core.vo.newbook.subject.BatchAuditSubjectVo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -10,10 +11,19 @@ import java.util.List; ...@@ -10,10 +11,19 @@ import java.util.List;
@ApiModel(description = "批量审批") @ApiModel(description = "批量审批")
public class BatchAuditForm { public class BatchAuditForm {
@ApiModelProperty("选题ID") @ApiModelProperty("选题;勾选的数据")
private List<Integer> ids; private List<BatchAuditSubjectVo> subjects;
@ApiModelProperty("选题状态,") @ApiModelProperty("当前审核阶段 1-2-1 1-2-2 1-2-3")
private String stage;
@ApiModelProperty("0:审核未通过, 1:审核通过")
private String status; private String status;
@ApiModelProperty("下一阶段,审核未通过:1-4,室主任审核通过:1-2-2;选题委员会通过:1-2-3;社领导通过:1-3")
private String nextStage;
@ApiModelProperty("审核意见")
private String auditOpinion;
} }
...@@ -25,7 +25,7 @@ public class SubjectAudit { ...@@ -25,7 +25,7 @@ public class SubjectAudit {
* 用户ID * 用户ID
*/ */
@ApiModelProperty(value = "用户ID") @ApiModelProperty(value = "用户ID")
private Integer userId; private String userId;
/** /**
* 状态:0:审核未通过,1:审核通过 * 状态:0:审核未通过,1:审核通过
...@@ -52,12 +52,6 @@ public class SubjectAudit { ...@@ -52,12 +52,6 @@ public class SubjectAudit {
private String stage; private String stage;
/** /**
* 选题ID,冗余字段,可以使用选题号作为关联,选题号唯一不可变
*/
@ApiModelProperty(value = "选题ID")
private Integer ssId;
/**
* 选新书题ID * 选新书题ID
*/ */
@ApiModelProperty(value = "新书ID") @ApiModelProperty(value = "新书ID")
......
package com.zrqx.core.vo.newbook.subject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class BatchAuditSubjectVo {
@ApiModelProperty("选题ID")
private Integer id;
@ApiModelProperty("选题号")
private String subjectNum;
}
...@@ -6,7 +6,6 @@ import lombok.Data; ...@@ -6,7 +6,6 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
@Data @Data
@ApiModel(value = "选题详情", description = "选题详情") @ApiModel(value = "选题详情", description = "选题详情")
...@@ -114,6 +113,4 @@ public class SelectedSubjectVo { ...@@ -114,6 +113,4 @@ public class SelectedSubjectVo {
@ApiModelProperty("状态:录入中:1-1 待室主任审核:1-2-1 待选题委员会审核:1-2-2 待社长审核:1-2-3 审核通过:1-3 审核未通过:1-4 三审驳回:1-5") @ApiModelProperty("状态:录入中:1-1 待室主任审核:1-2-1 待选题委员会审核:1-2-2 待社长审核:1-2-3 审核通过:1-3 审核未通过:1-4 三审驳回:1-5")
private String status; private String status;
@ApiModelProperty("审核意见")
private List<SubjectAuditVo> audits;
} }
package com.zrqx.core.vo.newbook.subject; package com.zrqx.core.vo.newbook.subject;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date; import java.util.Date;
@Data
public class SubjectAuditVo { public class SubjectAuditVo {
@ApiModelProperty(value = "ID") @ApiModelProperty(value = "ID")
private Integer id; private Integer id;
@ApiModelProperty(value = "用户ID") @ApiModelProperty(value = "用户ID")
private Integer userId; private String userId;
private String userName;
@ApiModelProperty(value = "状态:0:审核未通过,1:审核通过") @ApiModelProperty(value = "状态:0:审核未通过,1:审核通过")
private String status; private String status;
......
package com.zrqx.newbook.bg.controller.subject; package com.zrqx.newbook.bg.controller.subject;
import com.zrqx.core.enums.newbook.EducationEnum; import com.zrqx.core.enums.newbook.EducationEnum;
import com.zrqx.core.form.newbook.subject.BatchAuditForm;
import com.zrqx.core.form.newbook.subject.QuerySubjectForm; import com.zrqx.core.form.newbook.subject.QuerySubjectForm;
import com.zrqx.core.form.newbook.subject.SaveSubjectForm; import com.zrqx.core.form.newbook.subject.SaveSubjectForm;
import com.zrqx.core.util.CallBack; import com.zrqx.core.util.CallBack;
...@@ -9,8 +10,10 @@ import com.zrqx.core.util.PageParam; ...@@ -9,8 +10,10 @@ import com.zrqx.core.util.PageParam;
import com.zrqx.core.util.excelutil.ExcelUtil; import com.zrqx.core.util.excelutil.ExcelUtil;
import com.zrqx.core.vo.newbook.subject.ExportSubjectVo; import com.zrqx.core.vo.newbook.subject.ExportSubjectVo;
import com.zrqx.core.vo.newbook.subject.SelectedSubjectVo; import com.zrqx.core.vo.newbook.subject.SelectedSubjectVo;
import com.zrqx.core.vo.newbook.subject.SubjectAuditVo;
import com.zrqx.core.vo.newbook.subject.SubjectListVo; import com.zrqx.core.vo.newbook.subject.SubjectListVo;
import com.zrqx.newbook.bg.service.subject.SelectedSubjectService; import com.zrqx.newbook.bg.service.subject.SelectedSubjectService;
import com.zrqx.newbook.bg.service.subject.SubjectAuditService;
import com.zrqx.newbook.bg.service.subject.SubjectService; import com.zrqx.newbook.bg.service.subject.SubjectService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -35,6 +38,9 @@ public class SubjectController { ...@@ -35,6 +38,9 @@ public class SubjectController {
@Autowired @Autowired
private SubjectService subjectService; private SubjectService subjectService;
@Autowired
private SubjectAuditService auditService;
@ApiOperation(value = "获取学历列表", notes = "获取学历列表") @ApiOperation(value = "获取学历列表", notes = "获取学历列表")
@GetMapping("/get/education") @GetMapping("/get/education")
public CallBack<Map<String, String>> getEducationMap() { public CallBack<Map<String, String>> getEducationMap() {
...@@ -81,7 +87,7 @@ public class SubjectController { ...@@ -81,7 +87,7 @@ public class SubjectController {
} }
@PostMapping("/batch/audit") @PostMapping("/batch/audit")
@ApiOperation(value = "批量审批", notes = "批量审批") @ApiOperation(value = "批量提交审批", notes = "批量提交审批")
public CallBack<Boolean> batchAudit() { public CallBack<Boolean> batchAudit() {
return CallBack.success(); return CallBack.success();
...@@ -102,9 +108,17 @@ public class SubjectController { ...@@ -102,9 +108,17 @@ public class SubjectController {
return CallBack.success(); return CallBack.success();
} }
//审批 @PostMapping("/batch/verify")
@ApiOperation(value = "批量审核", notes = "审核未通过:1-4,室主任审核通过:1-2-2;选题委员会通过:1-2-3;社领导通过:1-3")
public CallBack<Boolean> batchAudit(@RequestBody BatchAuditForm form) {
return CallBack.success(service.batchAudit(form));
}
//批量审核 @GetMapping("/list/audits/{id}")
@ApiOperation(value = "获取审核记录", notes = "传入选题详情ID")
public CallBack<List<SubjectAuditVo>> listAudits(@PathVariable Integer id) {
return CallBack.success(auditService.queryAuditsByBssId(id));
}
//指定三审负责人 //指定三审负责人
......
package com.zrqx.newbook.bg.service.subject; package com.zrqx.newbook.bg.service.subject;
import com.zrqx.core.form.newbook.subject.BatchAuditForm;
import com.zrqx.core.form.newbook.subject.QuerySubjectForm; import com.zrqx.core.form.newbook.subject.QuerySubjectForm;
import com.zrqx.core.form.newbook.subject.SaveSubjectForm; import com.zrqx.core.form.newbook.subject.SaveSubjectForm;
import com.zrqx.core.model.newbook.subject.SelectedSubject; import com.zrqx.core.model.newbook.subject.SelectedSubject;
...@@ -63,4 +64,11 @@ public interface SelectedSubjectService extends BaseService<SelectedSubject, Int ...@@ -63,4 +64,11 @@ public interface SelectedSubjectService extends BaseService<SelectedSubject, Int
* @return * @return
*/ */
List<ExportSubjectVo> export(QuerySubjectForm form, PageParam pageParam); List<ExportSubjectVo> export(QuerySubjectForm form, PageParam pageParam);
/**
* 批量审批
* @param form
* @return
*/
boolean batchAudit(BatchAuditForm form);
} }
...@@ -5,16 +5,19 @@ import com.zrqx.core.enums.newbook.NBErrorEnum; ...@@ -5,16 +5,19 @@ import com.zrqx.core.enums.newbook.NBErrorEnum;
import com.zrqx.core.enums.newbook.SelectedSubjectEnum; import com.zrqx.core.enums.newbook.SelectedSubjectEnum;
import com.zrqx.core.enums.newbook.SubjectStatusEnum; import com.zrqx.core.enums.newbook.SubjectStatusEnum;
import com.zrqx.core.exception.BaseException; import com.zrqx.core.exception.BaseException;
import com.zrqx.core.form.newbook.subject.BatchAuditForm;
import com.zrqx.core.form.newbook.subject.QuerySubjectForm; import com.zrqx.core.form.newbook.subject.QuerySubjectForm;
import com.zrqx.core.form.newbook.subject.SaveSubjectForm; import com.zrqx.core.form.newbook.subject.SaveSubjectForm;
import com.zrqx.core.form.resource.bg.series.SeriesForm; import com.zrqx.core.form.resource.bg.series.SeriesForm;
import com.zrqx.core.mapper.BaseMapper; import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.newbook.subject.SelectedSubject; import com.zrqx.core.model.newbook.subject.SelectedSubject;
import com.zrqx.core.model.newbook.subject.SubjectAudit;
import com.zrqx.core.model.newbook.subject.SubjectAuthor; import com.zrqx.core.model.newbook.subject.SubjectAuthor;
import com.zrqx.core.service.BaseServiceImpl; import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.core.util.CallBack; import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.PageInfo; import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam; import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.newbook.subject.BatchAuditSubjectVo;
import com.zrqx.core.vo.newbook.subject.ExportSubjectVo; import com.zrqx.core.vo.newbook.subject.ExportSubjectVo;
import com.zrqx.core.vo.newbook.subject.SelectedSubjectVo; import com.zrqx.core.vo.newbook.subject.SelectedSubjectVo;
import com.zrqx.core.vo.newbook.subject.SubjectListVo; import com.zrqx.core.vo.newbook.subject.SubjectListVo;
...@@ -24,6 +27,7 @@ import com.zrqx.newbook.bg.client.SysuserClient; ...@@ -24,6 +27,7 @@ import com.zrqx.newbook.bg.client.SysuserClient;
import com.zrqx.newbook.bg.manage.SubjectAuthorManage; import com.zrqx.newbook.bg.manage.SubjectAuthorManage;
import com.zrqx.newbook.bg.manage.SubjectManage; import com.zrqx.newbook.bg.manage.SubjectManage;
import com.zrqx.newbook.bg.mapper.subject.SelectedSubjectMapper; import com.zrqx.newbook.bg.mapper.subject.SelectedSubjectMapper;
import com.zrqx.newbook.bg.mapper.subject.SubjectAuditMapper;
import com.zrqx.newbook.bg.mapper.subject.SubjectAuthorMapper; import com.zrqx.newbook.bg.mapper.subject.SubjectAuthorMapper;
import com.zrqx.newbook.bg.mapper.subject.SubjectMapper; import com.zrqx.newbook.bg.mapper.subject.SubjectMapper;
import com.zrqx.newbook.commons.Redis; import com.zrqx.newbook.commons.Redis;
...@@ -66,6 +70,9 @@ public class SelectedSubjectServiceImpl extends BaseServiceImpl<SelectedSubject, ...@@ -66,6 +70,9 @@ public class SelectedSubjectServiceImpl extends BaseServiceImpl<SelectedSubject,
private SubjectAuthorManage authorManage; private SubjectAuthorManage authorManage;
@Autowired @Autowired
private SubjectAuditMapper auditMapper;
@Autowired
private Redis redis; private Redis redis;
@Override @Override
...@@ -236,6 +243,38 @@ public class SelectedSubjectServiceImpl extends BaseServiceImpl<SelectedSubject, ...@@ -236,6 +243,38 @@ public class SelectedSubjectServiceImpl extends BaseServiceImpl<SelectedSubject,
return all; return all;
} }
@Override
public boolean batchAudit(BatchAuditForm form) {
List<BatchAuditSubjectVo> subjects = form.getSubjects();
if (subjects == null || subjects.size() ==0) {
return false;
}
for (BatchAuditSubjectVo subject : subjects) {
SubjectAudit audit = new SubjectAudit();
audit.setUserId(redis.getUser().getUserId());
audit.setStatus(form.getStatus());
audit.setAuditTime(new Date());
audit.setAuditOpinion(form.getAuditOpinion());
audit.setStage(form.getStage());
audit.setBssId(subject.getId());
audit.setSubjectNum(subject.getSubjectNum());
//如果插入成功则修改选题详情状态到下一阶段
if (auditMapper.insertSelective(audit) > 0) {
SelectedSubject selectedSubject = Optional.ofNullable(super.selectByPrimaryKey(subject.getId()))
.orElseThrow(() -> new BaseException(
NBErrorEnum.ENTITY_NOT_EXIST.getErrNum(),
NBErrorEnum.ENTITY_NOT_EXIST.getErrMsg()
));
selectedSubject.setStatus(form.getNextStage());
super.updateByPrimaryKeySelective(selectedSubject);
}
}
return true;
}
private String saveSeries(String seriesName) { private String saveSeries(String seriesName) {
SeriesForm series = new SeriesForm(); SeriesForm series = new SeriesForm();
series.setSeriesName(seriesName); series.setSeriesName(seriesName);
......
...@@ -2,6 +2,17 @@ package com.zrqx.newbook.bg.service.subject; ...@@ -2,6 +2,17 @@ package com.zrqx.newbook.bg.service.subject;
import com.zrqx.core.model.newbook.subject.SubjectAudit; import com.zrqx.core.model.newbook.subject.SubjectAudit;
import com.zrqx.core.service.BaseService; import com.zrqx.core.service.BaseService;
import com.zrqx.core.vo.newbook.subject.SubjectAuditVo;
import java.util.List;
public interface SubjectAuditService extends BaseService<SubjectAudit, Integer> { public interface SubjectAuditService extends BaseService<SubjectAudit, Integer> {
/**
* 查询选题的审核记录
* @param bssId
* @return
*/
List<SubjectAuditVo> queryAuditsByBssId(Integer bssId);
} }
package com.zrqx.newbook.bg.service.subject; package com.zrqx.newbook.bg.service.subject;
import com.zrqx.core.enums.newbook.NBErrorEnum;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.mapper.BaseMapper; import com.zrqx.core.mapper.BaseMapper;
import com.zrqx.core.model.newbook.subject.SubjectAudit; import com.zrqx.core.model.newbook.subject.SubjectAudit;
import com.zrqx.core.service.BaseServiceImpl; import com.zrqx.core.service.BaseServiceImpl;
import com.zrqx.core.util.ArrayUtils;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.vo.newbook.subject.SubjectAuditVo;
import com.zrqx.core.vo.sysuser.bg.user.UserVO;
import com.zrqx.newbook.bg.client.SysuserClient;
import com.zrqx.newbook.bg.mapper.subject.SubjectAuditMapper; import com.zrqx.newbook.bg.mapper.subject.SubjectAuditMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@Service @Service
public class SubjectAuditServiceImpl extends BaseServiceImpl<SubjectAudit, Integer> implements SubjectAuditService { public class SubjectAuditServiceImpl extends BaseServiceImpl<SubjectAudit, Integer> implements SubjectAuditService {
...@@ -13,8 +27,44 @@ public class SubjectAuditServiceImpl extends BaseServiceImpl<SubjectAudit, Integ ...@@ -13,8 +27,44 @@ public class SubjectAuditServiceImpl extends BaseServiceImpl<SubjectAudit, Integ
@Autowired @Autowired
private SubjectAuditMapper mapper; private SubjectAuditMapper mapper;
@Autowired
private SysuserClient sysuserClient;
@Override @Override
public BaseMapper<SubjectAudit> getMapper() { public BaseMapper<SubjectAudit> getMapper() {
return mapper; return mapper;
} }
@Override
public List<SubjectAuditVo> queryAuditsByBssId(Integer bssId) {
List<SubjectAuditVo> audits = new ArrayList<>();
Example example = super.createExample();
example.createCriteria()
.andEqualTo("bssId", bssId);
List<SubjectAudit> subjectAudits = mapper.selectByExample(example);
if (ArrayUtils.empty(subjectAudits)) {
return audits;
}
for (SubjectAudit audit : subjectAudits) {
SubjectAuditVo auditVo = new SubjectAuditVo();
BeanUtils.copyProperties(audit, auditVo);
CallBack<UserVO> callBack = sysuserClient.getUserById(audit.getUserId());
if (!callBack.isStatus() || callBack == null) {
throw new BaseException(
NBErrorEnum.GET_USER_INFO_FAILED.getErrNum(),
NBErrorEnum.GET_USER_INFO_FAILED.getErrMsg()
);
}
auditVo.setUserName(callBack.getData().getUserName());
audits.add(auditVo);
}
return audits.stream()
.sorted(Comparator.comparing(SubjectAuditVo::getStage))
.collect(Collectors.toList());
}
} }
...@@ -184,9 +184,6 @@ public class UserController { ...@@ -184,9 +184,6 @@ public class UserController {
return CallBack.success(userSerivce.queryEditors()); return CallBack.success(userSerivce.queryEditors());
} }
//1-2-1: 室主任审批权限0/1
//1-2-2: 选题委员会审批权限0/1
//1-2-3: 设领导审批权限0/1
@GetMapping("/get/audit/auth") @GetMapping("/get/audit/auth")
@ApiOperation(value = "获取当前用户的选题申报审核权限", notes = "1-2-1: 室主任审批权限0/1;1-2-2: 选题委员会审批权限0/1;1-2-3: 设领导审批权限0/1") @ApiOperation(value = "获取当前用户的选题申报审核权限", notes = "1-2-1: 室主任审批权限0/1;1-2-2: 选题委员会审批权限0/1;1-2-3: 设领导审批权限0/1")
public CallBack<JSONObject> getAuditAuth() { public CallBack<JSONObject> getAuditAuth() {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论