feat(domain): 完善领域管理系统功能

master
zhaokai 2026-02-28 08:42:18 +08:00
parent f79685b4da
commit 1043ec5efd
39 changed files with 180 additions and 64 deletions

View File

@ -20,7 +20,7 @@ spring:
file-extension: yml file-extension: yml
shared-configs: shared-configs:
- config-common.yml - config-common.yml
# - config-port.yml - config-port.yml
- config-mq.yml - config-mq.yml
- config-log.yml - config-log.yml
- config-sdk-server.yml - config-sdk-server.yml
@ -36,5 +36,3 @@ spring:
discovery: discovery:
server-addr: ${spring.cloud.nacos.config.server-addr} server-addr: ${spring.cloud.nacos.config.server-addr}
namespace: ${spring.cloud.nacos.config.namespace} namespace: ${spring.cloud.nacos.config.namespace}
server:
port: 8080

View File

@ -44,12 +44,12 @@ public class DomainDepartmentController {
@ApiOperation("分页") @ApiOperation("分页")
@PostMapping("/list") @PostMapping("/list")
@PreAuthorize("@pms.hasAnyPermission('lybmgl')") // @PreAuthorize("@pms.hasAnyPermission('lybmgl')")
public PageResponse<DomainDepartmentListCO> page(@RequestBody DomainDepartmentPageQry qry) { public PageResponse<DomainDepartmentListCO> page(@RequestBody DomainDepartmentPageQry qry) {
return domainDepartmentService.listPage(qry); return domainDepartmentService.listPage(qry);
} }
@ApiOperation("所有数据") @ApiOperation("领域部门所有数据")
@PostMapping("/listAll") @PostMapping("/listAll")
public MultiResponse<DomainDepartmentCO> listAll() { public MultiResponse<DomainDepartmentCO> listAll() {
List<DomainDepartmentCO> domainDepartmentCOList = domainDepartmentService.listAll(); List<DomainDepartmentCO> domainDepartmentCOList = domainDepartmentService.listAll();

View File

@ -38,13 +38,13 @@ public class DomainDepartmentUserController {
@ApiOperation("领域部门下审核人员分页") @ApiOperation("领域部门下审核人员分页")
@PostMapping("/list") @PostMapping("/list")
public PageResponse<DomainDepartmentUserCO> page(@RequestBody DomainDepartmentUserPageQry qry) { public PageResponse<DomainDepartmentUserCO> page(@Validated @RequestBody DomainDepartmentUserPageQry qry) {
return domainDepartmentUserService.listPage(qry); return domainDepartmentUserService.listPage(qry);
} }
@ApiOperation("领域部门下审核人员所有数据") @ApiOperation("领域部门下审核人员所有数据")
@PostMapping("/listAll") @PostMapping("/listAll")
public MultiResponse<DomainDepartmentUserCO> listAll(@RequestBody DomainDepartmentUserPageQry qry) { public MultiResponse<DomainDepartmentUserCO> listAll(@Validated @RequestBody DomainDepartmentUserPageQry qry) {
return MultiResponse.of(domainDepartmentUserService.listAll(qry)); return MultiResponse.of(domainDepartmentUserService.listAll(qry));
} }

View File

@ -50,12 +50,12 @@ public class DomainGroupController {
@ApiOperation("领域组分页") @ApiOperation("领域组分页")
@PostMapping("/list") @PostMapping("/list")
@PreAuthorize("@pms.hasAnyPermission('lyzgl')") // @PreAuthorize("@pms.hasAnyPermission('lyzgl')")
public PageResponse<DomainGroupCO> page(@RequestBody DomainGroupPageQry qry) { public PageResponse<DomainGroupCO> page(@RequestBody DomainGroupPageQry qry) {
return domainGroupService.listPage(qry); return domainGroupService.listPage(qry);
} }
@ApiOperation("所有数据") @ApiOperation("领域组所有数据")
@PostMapping("/listAll") @PostMapping("/listAll")
public MultiResponse<DomainGroupCO> listAll(@RequestBody DomainGroupQry qry) { public MultiResponse<DomainGroupCO> listAll(@RequestBody DomainGroupQry qry) {
return MultiResponse.of(domainGroupService.listAll(qry)); return MultiResponse.of(domainGroupService.listAll(qry));

View File

@ -38,13 +38,13 @@ public class DomainGroupUserController {
@ApiOperation("领域组人员分页") @ApiOperation("领域组人员分页")
@PostMapping("/list") @PostMapping("/list")
public PageResponse<DomainGroupUserCO> page(@RequestBody DomainGroupUserPageQry qry) { public PageResponse<DomainGroupUserCO> page(@Validated @RequestBody DomainGroupUserPageQry qry) {
return domainGroupUserService.listPage(qry); return domainGroupUserService.listPage(qry);
} }
@ApiOperation("领域组人员所有数据") @ApiOperation("领域组人员所有数据")
@PostMapping("/listAll") @PostMapping("/listAll")
public MultiResponse<DomainGroupUserCO> listAll(@RequestBody DomainGroupUserPageQry qry) { public MultiResponse<DomainGroupUserCO> listAll(@Validated @RequestBody DomainGroupUserPageQry qry) {
return MultiResponse.of(domainGroupUserService.listAll(qry)); return MultiResponse.of(domainGroupUserService.listAll(qry));
} }

View File

@ -42,15 +42,15 @@ public class ProjectTaskController {
} }
@ApiOperation("课题任务分页") @ApiOperation("课题任务分页")
@PostMapping("/projectpage") @PostMapping("/projectPage")
@PreAuthorize("@pms.hasAnyPermission('gfd-ktrw','qyd-ktrw')") // @PreAuthorize("@pms.hasAnyPermission('gfd-ktrw','qyd-ktrw')")
public PageResponse<ProjectTaskCO> listPage(@RequestBody ProjectTaskPageQry qry) { public PageResponse<ProjectTaskCO> listPage(@RequestBody ProjectTaskPageQry qry) {
return projectTaskService.listPage(qry); return projectTaskService.listPage(qry);
} }
@ApiOperation("课题评分分页") @ApiOperation("课题评分分页")
@PostMapping("/projectScorepage") @PostMapping("/projectScorepage")
@PreAuthorize("@pms.hasAnyPermission('gfd-ktpf','qyd-ktpf')") // @PreAuthorize("@pms.hasAnyPermission('gfd-ktpf','qyd-ktpf')")
public PageResponse<ProjectTaskCO> projectScorepage(@RequestBody ProjectTaskPageQry qry) { public PageResponse<ProjectTaskCO> projectScorepage(@RequestBody ProjectTaskPageQry qry) {
return projectTaskService.listPage(qry); return projectTaskService.listPage(qry);
} }

View File

@ -33,7 +33,7 @@ import java.util.ArrayList;
@AllArgsConstructor @AllArgsConstructor
public class ProjectTaskInfoController { public class ProjectTaskInfoController {
private final ProjectTaskInfoServiceI projectTaskInfoService; private final ProjectTaskInfoServiceI projectTaskInfoService;
@ApiOperation("课题反馈任务项") @ApiOperation("新课题反馈任务项")
@PutMapping("/edit") @PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody ProjectTaskInfoUpdateCmd projectTaskInfoUpdateCmd) { public SingleResponse edit(@Validated @RequestBody ProjectTaskInfoUpdateCmd projectTaskInfoUpdateCmd) {
projectTaskInfoService.edit(projectTaskInfoUpdateCmd); projectTaskInfoService.edit(projectTaskInfoUpdateCmd);

View File

@ -1,5 +1,6 @@
package com.zcloud.domain.command; package com.zcloud.domain.command;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.cola.exception.BizException; import com.alibaba.cola.exception.BizException;
import com.zcloud.domain.command.convertor.DomainGroupUserCoConvertor; import com.zcloud.domain.command.convertor.DomainGroupUserCoConvertor;
import com.zcloud.domain.domain.gateway.DomainGroupGateway; import com.zcloud.domain.domain.gateway.DomainGroupGateway;
@ -8,7 +9,9 @@ import com.zcloud.domain.dto.DomainDepartmentUserAddCmd;
import com.zcloud.domain.dto.DomainGroupAddCmd; import com.zcloud.domain.dto.DomainGroupAddCmd;
import com.zcloud.domain.dto.DomainGroupUserAddCmd; import com.zcloud.domain.dto.DomainGroupUserAddCmd;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO; import com.zcloud.domain.persistence.dataobject.DomainDepartmentUserDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupUserDO; import com.zcloud.domain.persistence.dataobject.DomainGroupUserDO;
import com.zcloud.domain.persistence.repository.DomainGroupRepository;
import com.zcloud.domain.persistence.repository.DomainGroupUserRepository; import com.zcloud.domain.persistence.repository.DomainGroupUserRepository;
import com.zcloud.gbscommon.utils.Tools; import com.zcloud.gbscommon.utils.Tools;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -29,6 +32,7 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
public class DomainGroupAddExe { public class DomainGroupAddExe {
private final DomainGroupGateway domainGroupGateway; private final DomainGroupGateway domainGroupGateway;
private final DomainGroupRepository domainGroupRepository;
private final DomainGroupUserRepository domainGroupUserRepository; private final DomainGroupUserRepository domainGroupUserRepository;
private final DomainGroupUserCoConvertor domainDepartmentUserCoConvertor; private final DomainGroupUserCoConvertor domainDepartmentUserCoConvertor;
@ -36,6 +40,13 @@ public class DomainGroupAddExe {
public boolean execute(DomainGroupAddCmd cmd) { public boolean execute(DomainGroupAddCmd cmd) {
DomainGroupE domainGroupE = new DomainGroupE(); DomainGroupE domainGroupE = new DomainGroupE();
BeanUtils.copyProperties(cmd, domainGroupE); BeanUtils.copyProperties(cmd, domainGroupE);
//判断一个小组,只能负责一个领域;领域小组必须为,分子公办公司;
cmd.getCorpinfoId();
List<DomainGroupDO> domainGroupDOList =domainGroupRepository.getListByCorpinfoId(cmd.getCorpinfoId());
if (CollUtil.isNotEmpty(domainGroupDOList)) {
throw new BizException("该公司已存在领域小组");
}
boolean res = false; boolean res = false;
try { try {
res = domainGroupGateway.add(domainGroupE); res = domainGroupGateway.add(domainGroupE);

View File

@ -2,6 +2,7 @@ package com.zcloud.domain.command;
import com.alibaba.cola.exception.BizException; import com.alibaba.cola.exception.BizException;
import com.zcloud.domain.domain.enums.CommonFlagEnum; import com.zcloud.domain.domain.enums.CommonFlagEnum;
import com.zcloud.domain.domain.enums.ScoreStatusEnum;
import com.zcloud.domain.domain.gateway.ProjectTaskScoreInfoGateway; import com.zcloud.domain.domain.gateway.ProjectTaskScoreInfoGateway;
import com.zcloud.domain.domain.model.ProjectTaskScoreInfoE; import com.zcloud.domain.domain.model.ProjectTaskScoreInfoE;
import com.zcloud.domain.dto.ProjectTaskScoreInfoUpdateCmd; import com.zcloud.domain.dto.ProjectTaskScoreInfoUpdateCmd;
@ -63,7 +64,12 @@ public class ProjectTaskScoreInfoUpdateExe {
// 计算平均分并保留两位小数 // 计算平均分并保留两位小数
BigDecimal averageScore = totalScore.divide(new BigDecimal(listByTaskId.size()),2,RoundingMode.HALF_UP); BigDecimal averageScore = totalScore.divide(new BigDecimal(listByTaskId.size()),2,RoundingMode.HALF_UP);
projectTaskRepository.updateScoreStatus(info.getProjectTaskId(), CommonFlagEnum.YES.getCode(),averageScore); projectTaskRepository.updateScoreStatus(info.getProjectTaskId(), ScoreStatusEnum.SCORED.getCode(),averageScore);
}else{
//修改为评分中
projectTaskRepository.updateScoreStatus(info.getProjectTaskId(), ScoreStatusEnum.SCOREING.getCode(),null);
} }
} }
} }

View File

@ -57,7 +57,7 @@ public class ProjectTaskUpdateExe {
throw new BizException("数据不存在"); throw new BizException("数据不存在");
} }
if(ProjectTaskExecuteStatusEnum.FINISHED.getCode().equals(projectTaskDO.getExecuteStatus())){ if(ProjectTaskExecuteStatusEnum.FINISHED.getCode().equals(projectTaskDO.getExecuteStatus())){
throw new BizException("已结束的课题不能删除"); throw new BizException("已结束的课题不能修改");
} }
ProjectTaskE projectTaskE = new ProjectTaskE(); ProjectTaskE projectTaskE = new ProjectTaskE();

View File

@ -14,10 +14,7 @@ import com.zcloud.domain.persistence.dataobject.ProjectTaskDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskGroupUserDO; import com.zcloud.domain.persistence.dataobject.ProjectTaskGroupUserDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskInfoDO; import com.zcloud.domain.persistence.dataobject.ProjectTaskInfoDO;
import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreInfoDO; import com.zcloud.domain.persistence.dataobject.ProjectTaskScoreInfoDO;
import com.zcloud.domain.persistence.repository.ProjectTaskGroupUserRepository; import com.zcloud.domain.persistence.repository.*;
import com.zcloud.domain.persistence.repository.ProjectTaskInfoRepository;
import com.zcloud.domain.persistence.repository.ProjectTaskRepository;
import com.zcloud.domain.persistence.repository.ProjectTaskScoreInfoRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper; import com.zcloud.gbscommon.utils.PageQueryHelper;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -44,6 +41,7 @@ public class ProjectTaskQueryExe {
private final ProjectTaskScoreInfoCoConvertor projectTaskScoreInfoCoConvertor; private final ProjectTaskScoreInfoCoConvertor projectTaskScoreInfoCoConvertor;
private final ProjectTaskGroupUserRepository projectTaskGroupUserRepository; private final ProjectTaskGroupUserRepository projectTaskGroupUserRepository;
private final ProjectTaskGroupUserCoConvertor projectTaskGroupUserCoConvertor; private final ProjectTaskGroupUserCoConvertor projectTaskGroupUserCoConvertor;
private final CorpInfoRepository corpInfoRepository;
/** /**
* *
@ -55,6 +53,26 @@ public class ProjectTaskQueryExe {
Map<String, Object> params = PageQueryHelper.toHashMap(projectTaskPageQry); Map<String, Object> params = PageQueryHelper.toHashMap(projectTaskPageQry);
PageResponse<ProjectTaskDO> pageResponse = projectTaskRepository.listPage(params); PageResponse<ProjectTaskDO> pageResponse = projectTaskRepository.listPage(params);
List<ProjectTaskCO> examCenterCOS = projectTaskCoConvertor.converDOsToCOs(pageResponse.getData()); List<ProjectTaskCO> examCenterCOS = projectTaskCoConvertor.converDOsToCOs(pageResponse.getData());
/**
*
* 1.
* 2.
*/
examCenterCOS.forEach(videoCoursewareCO -> {
//如果是企业,可以看本企业下所有的,如果是个人,只能看个人的,判断登录的账号是企业主账号还是个人
Boolean isCorpAccount = corpInfoRepository.checkCorp();
// 企业账户检查租户ID匹配
if (isCorpAccount && AuthContext.getTenantId().equals(videoCoursewareCO.getTenantId())) {
videoCoursewareCO.setIsUserCreate(true);
return;
}
// 个人账户检查创建者ID匹配
if (!isCorpAccount && videoCoursewareCO.getCreateId().equals(AuthContext.getUserId())) {
videoCoursewareCO.setIsUserCreate(true);
}
});
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
} }

View File

@ -4,6 +4,8 @@ import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty;
/** /**
* web-client * web-client
@ -25,6 +27,7 @@ public class DomainDepartmentUserPageQry extends PageQuery {
* - `ne`: SQL!= * - `ne`: SQL!=
*/ */
@ApiModelProperty(value = "领域部门id", name = "domainDepartmentId") @ApiModelProperty(value = "领域部门id", name = "domainDepartmentId")
@NotEmpty(message = "领域部门不能为空")
private String domainDepartmentId; private String domainDepartmentId;
} }

View File

@ -28,5 +28,7 @@ public class DomainGroupQry{
private String domainType; private String domainType;
@ApiModelProperty(value = "领域管理组名称") @ApiModelProperty(value = "领域管理组名称")
private String domainGroupName; private String domainGroupName;
private Long corpinfoId;
} }

View File

@ -4,6 +4,8 @@ import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty;
/** /**
* web-client * web-client
@ -25,6 +27,7 @@ public class DomainGroupUserPageQry extends PageQuery {
* - `ne`: SQL!= * - `ne`: SQL!=
*/ */
@ApiModelProperty(value = "领域组id", name = "domainGroupId", required = true) @ApiModelProperty(value = "领域组id", name = "domainGroupId", required = true)
@NotEmpty(message = "领域组不能为空")
private String domainGroupId; private String domainGroupId;
} }

View File

@ -21,7 +21,7 @@ import java.io.Serializable;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class ProjectTaskGroupUserAddCmd implements Serializable { public class ProjectTaskGroupUserAddCmd implements Serializable {
@ApiModelProperty(value = "课题任务主键id", name = "projectTaskId", required = true) @ApiModelProperty(value = "课题任务主键id", name = "projectTaskId")
private String projectTaskId; private String projectTaskId;
@ApiModelProperty(value = "部门主键id", name = "departmentId", required = true) @ApiModelProperty(value = "部门主键id", name = "departmentId", required = true)

View File

@ -20,14 +20,14 @@ import java.io.Serializable;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class ProjectTaskInfoAddCmd implements Serializable { public class ProjectTaskInfoAddCmd implements Serializable {
@ApiModelProperty(value = "课题任务主键id", name = "projectTaskId", required = true) @ApiModelProperty(value = "课题任务主键id", name = "projectTaskId")
private String projectTaskId; private String projectTaskId;
@ApiModelProperty(value = "任务名称", name = "workName", required = true) @ApiModelProperty(value = "任务名称", name = "workName", required = true)
@NotEmpty(message = "任务名称不能为空") @NotEmpty(message = "任务名称不能为空")
private String workName; private String workName;
@ApiModelProperty(value = "任务附件url", name = "workUrl", required = true) @ApiModelProperty(value = "任务附件url", name = "workUrl")
private String workUrl; private String workUrl;
} }

View File

@ -36,5 +36,8 @@ public class ProjectTaskInfoUpdateCmd implements Serializable {
@ApiModelProperty(value = "任务附件url", name = "workUrl", required = true) @ApiModelProperty(value = "任务附件url", name = "workUrl", required = true)
@NotEmpty(message = "任务附件url不能为空") @NotEmpty(message = "任务附件url不能为空")
private String workUrl; private String workUrl;
@ApiModelProperty(value = "任务附件名称", name = "workUrl", required = true)
@NotEmpty(message = "任务附件名称不能为空")
private String attachmentName;
} }

View File

@ -32,7 +32,7 @@ public class ProjectTaskPageQry extends PageQuery {
@ApiModelProperty(value = "课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)") @ApiModelProperty(value = "课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)")
private Integer executeStatus; private Integer executeStatus;
@ApiModelProperty(value = "评分状态(0:未评分,1:已评分)") @ApiModelProperty(value = "评分状态(0:未评分,1:评分中,2:已评分)")
private Integer scoreStatus; private Integer scoreStatus;
@ApiModelProperty(value = "课题名称") @ApiModelProperty(value = "课题名称")

View File

@ -29,7 +29,7 @@ public class ProjectTaskUpdateCmd extends Command {
@ApiModelProperty(value = "主键", name = "id", required = true) @ApiModelProperty(value = "主键", name = "id", required = true)
@NotNull(message = "主键不能为空") @NotNull(message = "主键不能为空")
private Long id; private Long id;
@ApiModelProperty(value = "业务主键id", name = "projectTaskId", required = true) @ApiModelProperty(value = "业务主键id", name = "projectTaskId")
private String projectTaskId; private String projectTaskId;
@ApiModelProperty(value = "领域类型", name = "domainType", required = true) @ApiModelProperty(value = "领域类型", name = "domainType", required = true)
@NotEmpty(message = "领域类型不能为空") @NotEmpty(message = "领域类型不能为空")

View File

@ -1,6 +1,7 @@
package com.zcloud.domain.dto.clientobject; package com.zcloud.domain.dto.clientobject;
import com.alibaba.cola.dto.ClientObject; import com.alibaba.cola.dto.ClientObject;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -51,6 +52,8 @@ public class DomainGroupCO implements Serializable {
private String teamUserName; private String teamUserName;
@ApiModelProperty(value = "领域课题数") @ApiModelProperty(value = "领域课题数")
private Long projectTaskCount; private Long projectTaskCount;
@ApiModelProperty(value = "领域课题完成数")
private Long projectTaskFinishedCount;
} }

View File

@ -9,6 +9,7 @@ import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
@ -56,8 +57,8 @@ public class ProjectTaskCO implements Serializable {
//课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束) //课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)
@ApiModelProperty(value = "课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)") @ApiModelProperty(value = "课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)")
private Integer executeStatus; private Integer executeStatus;
//评分状态(0:未评分,1:已评分) //评分状态(0:未评分,1:评分中,2:已评分)
@ApiModelProperty(value = "评分状态(0:未评分,1:已评分)") @ApiModelProperty(value = "评分状态(0:未评分,1:评分中,2:已评分)")
private Integer scoreStatus; private Integer scoreStatus;
//评分 //评分
@ApiModelProperty(value = "评分") @ApiModelProperty(value = "评分")
@ -65,5 +66,14 @@ public class ProjectTaskCO implements Serializable {
@ApiModelProperty(value = "领域主管部门名称") @ApiModelProperty(value = "领域主管部门名称")
private String masterDepartmentName; private String masterDepartmentName;
@ApiModelProperty(value = "创建人id")
private Long createId;
private Long tenantId;
@ApiModelProperty(value = "是否是当前用户创建的数据")
private Boolean isUserCreate = false;
} }

View File

@ -59,8 +59,8 @@ public class ProjectTaskDetailsCO implements Serializable {
//课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束) //课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)
@ApiModelProperty(value = "课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)") @ApiModelProperty(value = "课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)")
private Integer executeStatus; private Integer executeStatus;
//评分状态(0:未评分,1:已评分) //评分状态(0:未评分,1:评分中,2:已评分)
@ApiModelProperty(value = "评分状态(0:未评分,1:已评分)") @ApiModelProperty(value = "评分状态(0:未评分,1:评分中,2:已评分)")
private Integer scoreStatus; private Integer scoreStatus;
//评分 //评分
@ApiModelProperty(value = "评分") @ApiModelProperty(value = "评分")

View File

@ -4,6 +4,7 @@ import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -31,6 +32,8 @@ public class ProjectTaskInfoCO implements Serializable {
//任务附件url //任务附件url
@ApiModelProperty(value = "任务附件url") @ApiModelProperty(value = "任务附件url")
private String workUrl; private String workUrl;
@ApiModelProperty(value = "任务附件名称")
private String attachmentName;
} }

View File

@ -13,20 +13,20 @@ import java.util.stream.Collectors;
@Getter @Getter
public enum MenuEnum { public enum MenuEnum {
//领域部门 //领域部门
LYBMGL("/edu/container/supervision/resourceManage/teacherManage/list", "lybmgl"), LYBMGL("/domain/container/supervision/domainDepartment", "lybmgl"),
//领域组 //领域组
LYZGL("/edu/container/supervision/resourceManage/courseware/list", "lyzgl"), LYZGL("/domain/container/supervision/domainGroup", "lyzgl"),
//课题任务管理 //课题任务管理
GFDKTRW("/edu/container/supervision/resourceManage/courseManage/list", "gfd-ktrw"), GFDKTRW("/domain/container/supervision/resourceManage/courseManage/list", "gfd-ktrw"),
//课题评分管理 //课题评分管理
GFDKTPF("/edu/container/supervision/resourceManage/testPaperManage/list", "gfd-ktpf"), GFDKTPF("/domain/container/supervision/resourceManage/testPaperManage/list", "gfd-ktpf"),
//企业端 //企业端
//课题任务管理 //课题任务管理
QYDKTRW("/edu/container/branchCompany/resourceManage/courseware/list", "qyd-ktrw"), QYDKTRW("/domain/container/branchCompany/resourceManage/courseware/list", "qyd-ktrw"),
//课题评分管理 //课题评分管理
QYDKTPF("/edu/container/branchCompany/resourceManage/courseManage/list", "qyd-ktpf"), QYDKTPF("/domain/container/branchCompany/resourceManage/courseManage/list", "qyd-ktpf"),
; ;

View File

@ -0,0 +1,21 @@
package com.zcloud.domain.domain.enums;
import lombok.Getter;
/**
* (0:,1:2)
*/
@Getter
public enum ScoreStatusEnum {
NO_SCORE(0,"未评分"),
SCOREING(1,"评分中"),
SCORED(2,"已评分"),
;
private final Integer code;
private final String name;
ScoreStatusEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
}

View File

@ -38,7 +38,7 @@ public class ProjectTaskE extends BaseE {
//课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束) //课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)
private Integer executeStatus; private Integer executeStatus;
//评分状态(0:未评分,1:已评分) //评分状态(0:未评分,1:评分中,2:已评分)
private Integer scoreStatus; private Integer scoreStatus;
//评分 //评分
private BigDecimal score; private BigDecimal score;

View File

@ -1,8 +1,10 @@
package com.zcloud.domain.domain.model; package com.zcloud.domain.domain.model;
import com.jjb.saas.framework.domain.model.BaseE; import com.jjb.saas.framework.domain.model.BaseE;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
@ -23,6 +25,8 @@ public class ProjectTaskInfoE extends BaseE {
private String workName; private String workName;
//任务附件url //任务附件url
private String workUrl; private String workUrl;
//附件名称
private String attachmentName;
//乐观锁 //乐观锁
private Integer version; private Integer version;
//创建人 //创建人

View File

@ -53,6 +53,9 @@ public class DomainGroupDO extends BaseDO {
@ApiModelProperty(value = "领域课题数") @ApiModelProperty(value = "领域课题数")
@TableField(exist = false) @TableField(exist = false)
private Long projectTaskCount; private Long projectTaskCount;
@ApiModelProperty(value = "领域课题完成数")
@TableField(exist = false)
private Long projectTaskFinishedCount;
public DomainGroupDO(String domainGroupId) { public DomainGroupDO(String domainGroupId) {
this.domainGroupId = domainGroupId; this.domainGroupId = domainGroupId;

View File

@ -53,8 +53,8 @@ public class ProjectTaskDO extends BaseDO {
//课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束) //课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)
@ApiModelProperty(value = "课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)") @ApiModelProperty(value = "课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)")
private Integer executeStatus; private Integer executeStatus;
//评分状态(0:未评分,1:已评分) //评分状态(0:未评分,1:评分中,2:已评分)
@ApiModelProperty(value = "评分状态(0:未评分,1:已评分)") @ApiModelProperty(value = "评分状态(0:未评分,1:评分中,2:已评分)")
private Integer scoreStatus; private Integer scoreStatus;
//评分 //评分
@ApiModelProperty(value = "评分") @ApiModelProperty(value = "评分")

View File

@ -7,6 +7,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
/** /**
* web-infrastructure * web-infrastructure
* *
@ -30,6 +32,8 @@ public class ProjectTaskInfoDO extends BaseDO {
//任务附件url //任务附件url
@ApiModelProperty(value = "任务附件url") @ApiModelProperty(value = "任务附件url")
private String workUrl; private String workUrl;
@ApiModelProperty(value = "任务附件名称")
private String attachmentName;
public ProjectTaskInfoDO(String projectTaskInfoId) { public ProjectTaskInfoDO(String projectTaskInfoId) {
this.projectTaskInfoId = projectTaskInfoId; this.projectTaskInfoId = projectTaskInfoId;

View File

@ -21,5 +21,6 @@ public interface CorpInfoRepository extends BaseRepository<CorpInfoDO> {
boolean isSupper(); boolean isSupper();
Boolean checkCorp();
} }

View File

@ -5,6 +5,7 @@ import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.domain.persistence.dataobject.DomainGroupDO; import com.zcloud.domain.persistence.dataobject.DomainGroupDO;
import com.zcloud.domain.persistence.dataobject.DomainGroupUserDO; import com.zcloud.domain.persistence.dataobject.DomainGroupUserDO;
import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -21,5 +22,6 @@ public interface DomainGroupRepository extends BaseRepository<DomainGroupDO> {
List<DomainGroupDO> listAll(Map<String, Object> params); List<DomainGroupDO> listAll(Map<String, Object> params);
List<DomainGroupDO> getListByCorpinfoId(@NotNull(message = "主责企业不能为空") Long corpinfoId);
} }

View File

@ -64,6 +64,9 @@ public class CorpInfoRepositoryImpl extends BaseRepositoryImpl<CorpInfoMapper, C
return true; return true;
return false; return false;
} }
@Override
public Boolean checkCorp() {
return AuthContext.getUserId().equals(AuthContext.getTenantId());
}
} }

View File

@ -3,6 +3,7 @@ package com.zcloud.domain.persistence.repository.impl;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.domain.domain.enums.MenuEnum; import com.zcloud.domain.domain.enums.MenuEnum;
@ -28,6 +29,7 @@ import java.util.Map;
@RequiredArgsConstructor @RequiredArgsConstructor
public class DomainGroupRepositoryImpl extends BaseRepositoryImpl<DomainGroupMapper, DomainGroupDO> implements DomainGroupRepository { public class DomainGroupRepositoryImpl extends BaseRepositoryImpl<DomainGroupMapper, DomainGroupDO> implements DomainGroupRepository {
private final DomainGroupMapper domainGroupMapper; private final DomainGroupMapper domainGroupMapper;
private final CorpInfoRepositoryImpl corpInfoRepository;
@Override @Override
public PageResponse<DomainGroupDO> listPage(Map<String, Object> params) { public PageResponse<DomainGroupDO> listPage(Map<String, Object> params) {
@ -47,7 +49,17 @@ public class DomainGroupRepositoryImpl extends BaseRepositoryImpl<DomainGroupMap
@Override @Override
public List<DomainGroupDO> listAll(Map<String, Object> params) { public List<DomainGroupDO> listAll(Map<String, Object> params) {
if(!corpInfoRepository.isSupper()){
params.put("corpinfoId", AuthContext.getTenantId());
}
return domainGroupMapper.listAll( params); return domainGroupMapper.listAll( params);
} }
@Override
public List<DomainGroupDO> getListByCorpinfoId(Long corpinfoId) {
QueryWrapper<DomainGroupDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("corpinfo_id", corpinfoId);
return domainGroupMapper.selectList(queryWrapper);
}
} }

View File

@ -17,8 +17,8 @@
select dd.*, select dd.*,
d.name as masterDepartmentName, d.name as masterDepartmentName,
u.name as masterUserName, u.name as masterUserName,
count(pt.id) as projectTaskCount, count(distinct pt.id) as projectTaskCount,
count(ddu.id) as domainDepartmentUserCount count(distinct ddu.id) as domainDepartmentUserCount
from domain_department dd from domain_department dd
left join department d on dd.master_department_id = d.id and d.delete_enum = 'FALSE' left join department d on dd.master_department_id = d.id and d.delete_enum = 'FALSE'
left join user u on dd.master_user_id = u.id and u.delete_enum = 'FALSE' left join user u on dd.master_user_id = u.id and u.delete_enum = 'FALSE'

View File

@ -9,7 +9,8 @@
c.corp_name as corpinfoname, c.corp_name as corpinfoname,
d.name as teamdepartmentname, d.name as teamdepartmentname,
u.name as teamusername, u.name as teamusername,
count(distinct ptg.id) as projectTaskCount count(distinct ptg.id) as projectTaskCount,
sum(if(ptg.execute_status = 4, 1, 0)) as projectTaskFinishedCount
from domain_group dg from domain_group dg
left join corp_info c on dg.corpinfo_id = c.id and c.delete_enum = 'false' left join corp_info c on dg.corpinfo_id = c.id and c.delete_enum = 'false'
left join department d on dg.team_department_id = d.id and d.delete_enum = 'false' left join department d on dg.team_department_id = d.id and d.delete_enum = 'false'
@ -39,15 +40,13 @@
</select> </select>
<select id="listAll" resultType="com.zcloud.domain.persistence.dataobject.DomainGroupDO"> <select id="listAll" resultType="com.zcloud.domain.persistence.dataobject.DomainGroupDO">
select dg.*, select dg.*,
c.corp_name as corpinfoname, c.corp_name as corpinfoName,
d.name as teamdepartmentname, d.name as teamDepartmentName,
u.name as teamusername u.name as teamUserName
from domain_group dg from domain_group dg
left join corp_info c on dg.corpinfo_id = c.id and c.delete_enum = 'false' left join corp_info c on dg.corpinfo_id = c.id and c.delete_enum = 'false'
left join department d on dg.team_department_id = d.id and d.delete_enum = 'false' left join department d on dg.team_department_id = d.id and d.delete_enum = 'false'
left join user u on dg.team_user_id = u.id and u.delete_enum = 'false' left join user u on dg.team_user_id = u.id and u.delete_enum = 'false'
where dg.delete_enum = 'false' where dg.delete_enum = 'false'
<if test="domainType != null and domainType != ''"> <if test="domainType != null and domainType != ''">
and dg.domain_type = #{domainType} and dg.domain_type = #{domainType}
@ -55,6 +54,9 @@
<if test="domainGroupName != null and domainGroupName != ''"> <if test="domainGroupName != null and domainGroupName != ''">
and dg.domain_group_name like CONCAT('%', #{domainGroupName}, '%') and dg.domain_group_name like CONCAT('%', #{domainGroupName}, '%')
</if> </if>
<if test="corpinfoId != null ">
and dg.corpinfo_id = #{corpinfoId}
</if>
order by dg.create_time desc order by dg.create_time desc
</select> </select>
</mapper> </mapper>

View File

@ -26,13 +26,13 @@
</if> </if>
<if test="params.projectName != null and params.projectName != '' "> <if test="params.projectName != null and params.projectName != '' ">
and pt.project_name = #{params.projectName} and pt.project_name like CONCAT('%', #{params.projectName}, '%')
</if> </if>
<if test="params.startDate != null and params.startDate != '' "> <if test="params.startDate != null and params.startDate != '' ">
and pt.executed_start_date >= #{params.startDate} and pt.executed_start_date <![CDATA[<=]]> #{params.startDate}
</if> </if>
<if test="params.endDate != null and params.endDate != '' "> <if test="params.endDate != null and params.endDate != '' ">
and pt.executed_end_date <![CDATA[<=]]> #{params.endDate} and pt.executed_end_date >= #{params.endDate}
</if> </if>
<if test="params.scoreStatus != null "> <if test="params.scoreStatus != null ">
and pt.score_status = #{params.scoreStatus} and pt.score_status = #{params.scoreStatus}
@ -53,7 +53,11 @@
where pt.delete_enum = 'false' and pt.id=#{id} where pt.delete_enum = 'false' and pt.id=#{id}
</select> </select>
<update id="updateScoreStatus"> <update id="updateScoreStatus">
update project_task set score_status = #{code},score = #{averageScore} where project_task_id = #{projectTaskId} update project_task set score_status = #{code}
<if test="averageScore != null">
,score = #{averageScore}
</if>
where project_task_id = #{projectTaskId}
</update> </update>
<update id="updateExecuteStatusBatchById"> <update id="updateExecuteStatusBatchById">
update project_task set execute_status = #{code} where update project_task set execute_status = #{code} where