From 44b225e7b8138bd5c202a994a85e013352214a5d Mon Sep 17 00:00:00 2001 From: lcj <2331845269@qq.com> Date: Thu, 27 Mar 2025 17:47:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=BD=E5=B7=A5=E4=BA=BA=E5=91=98=E9=BB=91?= =?UTF-8?q?=E5=90=8D=E5=8D=95=E5=90=8E=E7=AB=AF=E9=80=BB=E8=BE=91=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=89=8D=E7=AB=AF=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project/domain/BusConstructionUser.java | 12 +- .../domain/bo/BusConstructionBlacklistBo.java | 45 ----- .../ConstructionUserCreateReq.java | 19 +- .../ConstructionUserQueryReq.java | 24 +-- .../ConstructionUserUpdateReq.java | 19 +- .../domain/vo/BusConstructionUserVo.java | 13 +- .../IBusConstructionBlacklistService.java | 8 + .../BusConstructionBlacklistServiceImpl.java | 48 ++++++ .../impl/BusConstructionUserServiceImpl.java | 57 ++++-- .../impl/BusProjectTeamMemberServiceImpl.java | 23 +-- .../safety/domain/BusQuestionBank.java | 13 +- .../safety/domain/BusQuestionsConfig.java | 5 + .../questionbank/QuestionBankCreateReq.java | 5 + .../questionbank/QuestionBankQueryReq.java | 5 + .../QuestionsConfigCreateReq.java | 5 + .../QuestionsConfigQueryReq.java | 5 + .../safety/domain/vo/BusQuestionBankVo.java | 9 +- .../domain/vo/BusQuestionsConfigVo.java | 20 +-- .../impl/BusQuestionBankServiceImpl.java | 19 ++ .../impl/BusQuestionsConfigServiceImpl.java | 20 ++- .../project/constructionBlacklist/index.ts | 63 +++++++ .../project/constructionBlacklist/types.ts | 69 ++++++++ .../api/safety/questionUserAnswer/types.ts | 14 +- .../src/api/safety/questionsConfig/types.ts | 28 +-- .../project/constructionBlacklist/index.vue | 163 ++++++++++++++++++ .../views/project/constructionUser/index.vue | 39 ++++- .../projectTeam/component/UserListDialog.vue | 5 +- plus-ui/src/views/project/workWage/index.vue | 152 ++++++++-------- .../src/views/safety/questionBank/index.vue | 135 +++++++-------- .../views/safety/questionUserAnswer/index.vue | 117 ++++++++----- .../views/safety/questionsConfig/index.vue | 131 +++++++------- 31 files changed, 833 insertions(+), 457 deletions(-) delete mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/bo/BusConstructionBlacklistBo.java create mode 100644 plus-ui/src/api/project/constructionBlacklist/index.ts create mode 100644 plus-ui/src/api/project/constructionBlacklist/types.ts create mode 100644 plus-ui/src/views/project/constructionBlacklist/index.vue diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusConstructionUser.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusConstructionUser.java index 63852cd3..4c095371 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusConstructionUser.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusConstructionUser.java @@ -1,6 +1,8 @@ package org.dromara.project.domain; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import org.dromara.common.mybatis.core.domain.BaseEntity; @@ -61,7 +63,7 @@ public class BusConstructionUser extends BaseEntity { /** * 是否代打 */ - private Long isPinch; + private String isPinch; /** * 联系电话 @@ -71,7 +73,7 @@ public class BusConstructionUser extends BaseEntity { /** * 0:保密 1:男 2女 */ - private Long sex; + private String sex; /** * 民族 @@ -156,12 +158,12 @@ public class BusConstructionUser extends BaseEntity { /** * 入场时间 */ - private String entryDate; + private Date entryDate; /** * 离场时间 */ - private String leaveDate; + private Date leaveDate; /** * 薪水 diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/bo/BusConstructionBlacklistBo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/bo/BusConstructionBlacklistBo.java deleted file mode 100644 index 577b29df..00000000 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/bo/BusConstructionBlacklistBo.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.dromara.project.domain.bo; - -import org.dromara.project.domain.BusConstructionBlacklist; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import org.dromara.common.core.validate.AddGroup; -import org.dromara.common.core.validate.EditGroup; -import io.github.linpeilie.annotations.AutoMapper; -import lombok.Data; -import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.*; - -/** - * 黑名单业务对象 bus_construction_blacklist - * - * @author lcj - * @date 2025-03-27 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@AutoMapper(target = BusConstructionBlacklist.class, reverseConvertGenerate = false) -public class BusConstructionBlacklistBo extends BaseEntity { - - /** - * 用户id - */ - @NotNull(message = "用户id不能为空", groups = { AddGroup.class }) - private Long userId; - - /** - * 名字 - */ - private String userName; - - /** - * 身份证号码 - */ - private String sfzNumber; - - /** - * 备注 - */ - private String remark; - - -} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserCreateReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserCreateReq.java index de4970e2..06c10127 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserCreateReq.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserCreateReq.java @@ -35,11 +35,6 @@ public class ConstructionUserCreateReq implements Serializable { */ private Long contractorId; - /** - * 班组id - */ - private Long teamId; - /** * 状态(0在职 1离职) */ @@ -48,7 +43,7 @@ public class ConstructionUserCreateReq implements Serializable { /** * 是否代打 */ - private Long isPinch; + private String isPinch; /** * 联系电话 @@ -58,7 +53,7 @@ public class ConstructionUserCreateReq implements Serializable { /** * 0:保密 1:男 2女 */ - private Long sex; + private String sex; /** * 民族 @@ -140,16 +135,6 @@ public class ConstructionUserCreateReq implements Serializable { */ private String clock; - /** - * 入场时间 - */ - private String entryDate; - - /** - * 离场时间 - */ - private String leaveDate; - /** * 薪水 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserQueryReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserQueryReq.java index 47c2d657..0b849722 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserQueryReq.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserQueryReq.java @@ -53,7 +53,7 @@ public class ConstructionUserQueryReq implements Serializable { /** * 是否代打 */ - private Long isPinch; + private String isPinch; /** * 联系电话 @@ -63,7 +63,7 @@ public class ConstructionUserQueryReq implements Serializable { /** * 0:保密 1:男 2女 */ - private Long sex; + private String sex; /** * 民族 @@ -75,26 +75,6 @@ public class ConstructionUserQueryReq implements Serializable { */ private String sfzNumber; - /** - * 身份证有效开始期 - */ - private String sfzStart; - - /** - * 身份证有效结束期 - */ - private String sfzEnd; - - /** - * 身份证地址 - */ - private String sfzSite; - - /** - * 身份证出生日期 - */ - private String sfzBirth; - /** * 籍贯 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserUpdateReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserUpdateReq.java index fcfa945d..678336ac 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserUpdateReq.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserUpdateReq.java @@ -40,11 +40,6 @@ public class ConstructionUserUpdateReq implements Serializable { */ private Long contractorId; - /** - * 班组id - */ - private Long teamId; - /** * 状态(0在职 1离职) */ @@ -53,7 +48,7 @@ public class ConstructionUserUpdateReq implements Serializable { /** * 是否代打 */ - private Long isPinch; + private String isPinch; /** * 联系电话 @@ -63,7 +58,7 @@ public class ConstructionUserUpdateReq implements Serializable { /** * 0:保密 1:男 2女 */ - private Long sex; + private String sex; /** * 民族 @@ -145,16 +140,6 @@ public class ConstructionUserUpdateReq implements Serializable { */ private String clock; - /** - * 入场时间 - */ - private String entryDate; - - /** - * 离场时间 - */ - private String leaveDate; - /** * 薪水 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusConstructionUserVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusConstructionUserVo.java index 351fbc33..0cb531e6 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusConstructionUserVo.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusConstructionUserVo.java @@ -66,7 +66,6 @@ public class BusConstructionUserVo implements Serializable { /** * 分包公司 */ - @ExcelProperty(value = "分包公司") private BusContractorVo contractorVo; /** @@ -78,7 +77,6 @@ public class BusConstructionUserVo implements Serializable { /** * 班组 */ - @ExcelProperty(value = "班组") private BusProjectTeamVo teamVo; /** @@ -92,7 +90,7 @@ public class BusConstructionUserVo implements Serializable { * 是否代打 */ @ExcelProperty(value = "是否代打") - private Long isPinch; + private String isPinch; /** * 联系电话 @@ -103,8 +101,9 @@ public class BusConstructionUserVo implements Serializable { /** * 0:保密 1:男 2女 */ - @ExcelProperty(value = "0:保密 1:男 2女") - private Long sex; + @ExcelProperty(value = "性别", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "user_sex_type") + private String sex; /** * 民族 @@ -207,13 +206,13 @@ public class BusConstructionUserVo implements Serializable { * 入场时间 */ @ExcelProperty(value = "入场时间") - private String entryDate; + private Date entryDate; /** * 离场时间 */ @ExcelProperty(value = "离场时间") - private String leaveDate; + private Date leaveDate; /** * 薪水 diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionBlacklistService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionBlacklistService.java index e9ebdc8a..0dc70895 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionBlacklistService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionBlacklistService.java @@ -62,6 +62,14 @@ public interface IBusConstructionBlacklistService extends IService ids, Boolean isValid); + /** + * 校验用户是否在黑名单中 + * + * @param userId 用户id + * @param projectId 项目id + */ + void validUserInBlacklist(Long userId, Long projectId); + /** * 获取黑名单查询条件封装 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionBlacklistServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionBlacklistServiceImpl.java index 26dd4c78..afb50f98 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionBlacklistServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionBlacklistServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.project.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -14,6 +15,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.project.domain.BusConstructionBlacklist; import org.dromara.project.domain.BusConstructionUser; +import org.dromara.project.domain.BusProjectTeamMember; import org.dromara.project.domain.req.constructionblacklist.ConstructionBlacklistCreateReq; import org.dromara.project.domain.req.constructionblacklist.ConstructionBlacklistQueryReq; import org.dromara.project.domain.vo.BusConstructionBlacklistVo; @@ -21,11 +23,14 @@ import org.dromara.project.mapper.BusConstructionBlacklistMapper; import org.dromara.project.service.IBusConstructionBlacklistService; import org.dromara.project.service.IBusConstructionUserService; import org.dromara.project.service.IBusProjectService; +import org.dromara.project.service.IBusProjectTeamMemberService; import org.springframework.beans.BeanUtils; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collection; +import java.util.Date; import java.util.List; /** @@ -44,6 +49,10 @@ public class BusConstructionBlacklistServiceImpl extends ServiceImpl constructionUserLqw = Wrappers.lambdaUpdate(BusConstructionUser.class) + .eq(BusConstructionUser::getId, userId) + .set(BusConstructionUser::getTeamId, null) + .set(BusConstructionUser::getLeaveDate, new Date()); + boolean update = constructionUserService.update(constructionUserLqw); + if (!update) { + throw new ServiceException("用户退场失败,数据库异常", HttpStatus.ERROR); + } + // 移除用户与班组关联 + LambdaQueryWrapper projectTeamMemberLqw = Wrappers.lambdaQuery(BusProjectTeamMember.class) + .eq(BusProjectTeamMember::getProjectId, req.getProjectId()) + .eq(BusProjectTeamMember::getTeamId, teamId) + .eq(BusProjectTeamMember::getMemberId, userId); + boolean remove = projectTeamMemberService.remove(projectTeamMemberLqw); + if (!remove) { + throw new ServiceException("用户退场失败,数据库异常", HttpStatus.ERROR); + } + } return constructionBlacklist.getId(); } @@ -155,6 +187,22 @@ public class BusConstructionBlacklistServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); + lqw.eq(BusConstructionBlacklist::getUserId, userId) + .eq(BusConstructionBlacklist::getProjectId, projectId); + if (this.count(lqw) > 0) { + throw new ServiceException("用户已存在黑名单中", HttpStatus.BAD_REQUEST); + } + } + /** * 获取黑名单查询条件封装 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java index 5c45c6bd..ef86aadc 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java @@ -14,14 +14,13 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.project.domain.BusConstructionUser; -import org.dromara.project.domain.BusContractor; -import org.dromara.project.domain.BusProjectTeamMember; +import org.dromara.project.domain.*; import org.dromara.project.domain.req.constructionuser.ConstructionUserCreateReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserQueryReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserUpdateReq; import org.dromara.project.domain.vo.BusConstructionUserVo; import org.dromara.project.domain.vo.BusContractorVo; +import org.dromara.project.domain.vo.BusProjectTeamVo; import org.dromara.project.mapper.BusConstructionUserMapper; import org.dromara.project.service.*; import org.dromara.system.service.ISysOssService; @@ -63,6 +62,10 @@ public class BusConstructionUserServiceImpl extends ServiceImpl blacklistLqw = Wrappers.lambdaQuery(BusConstructionBlacklist.class) + .select(BusConstructionBlacklist::getUserId); + if (projectId != null) { + blacklistLqw.eq(BusConstructionBlacklist::getProjectId, projectId); + } + List blackUserIdList = constructionBlacklistService.listObjs(blacklistLqw, obj -> (Long) obj); + // 查询结果移除黑名单人员 + if (CollUtil.isNotEmpty(blackUserIdList)) { + lqw.notIn(BusConstructionUser::getId, blackUserIdList); + } return lqw; } @@ -327,18 +333,31 @@ public class BusConstructionUserServiceImpl extends ServiceImpl contractorIdSet = constructionUserList.stream().map(BusConstructionUser::getContractorId) .collect(Collectors.toSet()); - Map> contractorIdContractorList = contractorService.listByIds(contractorIdSet).stream() + Map> contractorIdContractorMap = contractorService.listByIds(contractorIdSet).stream() .collect(Collectors.groupingBy(BusContractor::getId)); + // 关联查询班组信息 + Set teamIdSet = constructionUserList.stream().map(BusConstructionUser::getTeamId) + .collect(Collectors.toSet()); + Map> teamIdTeamMap = projectTeamService.listByIds(teamIdSet).stream() + .collect(Collectors.groupingBy(BusProjectTeam::getId)); // 填充信息 List constructionUserVoList = constructionUserList.stream().map(constructionUser -> { BusConstructionUserVo constructionUserVo = new BusConstructionUserVo(); BeanUtils.copyProperties(constructionUser, constructionUserVo); + // 关联分包公司信息 Long contractorId = constructionUser.getContractorId(); BusContractorVo contractor = null; - if (contractorIdContractorList.containsKey(contractorId)) { - contractor = contractorService.getVo(contractorIdContractorList.get(contractorId).get(0)); + if (contractorIdContractorMap.containsKey(contractorId)) { + contractor = contractorService.getVo(contractorIdContractorMap.get(contractorId).get(0)); } constructionUserVo.setContractorVo(contractor); + // 关联班组信息 + Long teamId = constructionUser.getTeamId(); + BusProjectTeamVo team = null; + if (teamIdTeamMap.containsKey(teamId)) { + team = projectTeamService.getVo(teamIdTeamMap.get(teamId).get(0)); + } + constructionUserVo.setTeamVo(team); return constructionUserVo; }).toList(); constructionUserVoPage.setRecords(constructionUserVoList); diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java index 43b23606..3eb37c9a 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java @@ -22,18 +22,12 @@ import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberQueryRe import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberUpdateReq; import org.dromara.project.domain.vo.BusProjectTeamMemberVo; import org.dromara.project.mapper.BusProjectTeamMemberMapper; -import org.dromara.project.service.IBusConstructionUserService; -import org.dromara.project.service.IBusProjectService; -import org.dromara.project.service.IBusProjectTeamMemberService; -import org.dromara.project.service.IBusProjectTeamService; +import org.dromara.project.service.*; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -55,6 +49,9 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl() - .eq(BusProjectTeamMember::getMemberId, projectTeamMember.getMemberId())); + .eq(BusProjectTeamMember::getMemberId, projectTeamMember.getMemberId()) + .eq(BusProjectTeamMember::getProjectId, projectTeamMember.getProjectId())); if (teamMember != null) { - throw new ServiceException("当前用户已关联编号为:" + teamMember.getTeamId() + "的班组", HttpStatus.CONFLICT); + throw new ServiceException("当前用户已入场", HttpStatus.BAD_REQUEST); } // 操作数据库 boolean save = this.save(projectTeamMember); if (!save) { throw new ServiceException("新增项目班组下的成员失败,数据库异常", HttpStatus.ERROR); } - // 同步修改用户表的team_id字段 + // 同步修改用户表的team_id字段并添加入场时间 BusConstructionUser constructionUser = new BusConstructionUser(); constructionUser.setId(projectTeamMember.getMemberId()); constructionUser.setTeamId(projectTeamMember.getTeamId()); + constructionUser.setEntryDate(new Date()); constructionUserService.updateById(constructionUser); return projectTeamMember.getId(); } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/BusQuestionBank.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/BusQuestionBank.java index 71128cb0..b2d2e2e4 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/BusQuestionBank.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/BusQuestionBank.java @@ -1,13 +1,13 @@ package org.dromara.safety.domain; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.mybatis.core.domain.BaseEntity; import java.io.Serial; +import java.util.Date; /** * 题库对象 bus_question_bank @@ -29,6 +29,11 @@ public class BusQuestionBank extends BaseEntity { @TableId(value = "id") private Long id; + /** + * 项目id + */ + private Long projectId; + /** * 题目类别 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/BusQuestionsConfig.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/BusQuestionsConfig.java index 3fc95396..ea1030b1 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/BusQuestionsConfig.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/BusQuestionsConfig.java @@ -26,6 +26,11 @@ public class BusQuestionsConfig implements Serializable { @TableId(value = "id") private Long id; + /** + * 项目id + */ + private Long projectId; + /** * 单选题(单位/道) */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionbank/QuestionBankCreateReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionbank/QuestionBankCreateReq.java index c93a3918..292c6bd6 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionbank/QuestionBankCreateReq.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionbank/QuestionBankCreateReq.java @@ -16,6 +16,11 @@ public class QuestionBankCreateReq implements Serializable { @Serial private static final long serialVersionUID = 9014952417764490638L; + /** + * 项目id + */ + private Long projectId; + /** * 题目类别 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionbank/QuestionBankQueryReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionbank/QuestionBankQueryReq.java index e0bcf9b8..040bd580 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionbank/QuestionBankQueryReq.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionbank/QuestionBankQueryReq.java @@ -21,6 +21,11 @@ public class QuestionBankQueryReq implements Serializable { */ private Long id; + /** + * 项目id + */ + private Long projectId; + /** * 题目类别 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionsconfig/QuestionsConfigCreateReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionsconfig/QuestionsConfigCreateReq.java index 296e4956..71632dd8 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionsconfig/QuestionsConfigCreateReq.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionsconfig/QuestionsConfigCreateReq.java @@ -15,6 +15,11 @@ public class QuestionsConfigCreateReq implements Serializable { @Serial private static final long serialVersionUID = -6430325731025840429L; + /** + * 项目id + */ + private Long projectId; + /** * 单选题(单位/道) */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionsconfig/QuestionsConfigQueryReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionsconfig/QuestionsConfigQueryReq.java index 1bea10bb..f5ec4996 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionsconfig/QuestionsConfigQueryReq.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/req/questionsconfig/QuestionsConfigQueryReq.java @@ -20,6 +20,11 @@ public class QuestionsConfigQueryReq implements Serializable { */ private Long id; + /** + * 项目id + */ + private Long projectId; + /** * 单选题(单位/道) */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusQuestionBankVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusQuestionBankVo.java index 9da102e7..5713cd1c 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusQuestionBankVo.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusQuestionBankVo.java @@ -33,6 +33,12 @@ public class BusQuestionBankVo implements Serializable { @ExcelProperty(value = "主键id") private Long id; + /** + * 项目id + */ + @ExcelProperty(value = "项目id") + private Long projectId; + /** * 题目类别 */ @@ -56,8 +62,7 @@ public class BusQuestionBankVo implements Serializable { /** * 选项(以JSON数组形式存储) */ - @ExcelProperty(value = "选项", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "以=JSON数组形式存储") + @ExcelProperty(value = "选项") private List optionList; /** diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusQuestionsConfigVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusQuestionsConfigVo.java index 7d2706ca..d03a4122 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusQuestionsConfigVo.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/BusQuestionsConfigVo.java @@ -4,8 +4,6 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; -import org.dromara.common.excel.annotation.ExcelDictFormat; -import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.safety.domain.BusQuestionsConfig; import java.io.Serial; @@ -32,11 +30,16 @@ public class BusQuestionsConfigVo implements Serializable { @ExcelProperty(value = "主键id") private Long id; + /** + * 项目id + */ + @ExcelProperty(value = "项目id") + private Long projectId; + /** * 单选题(单位/道) */ - @ExcelProperty(value = "单选题", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "单=位/道") + @ExcelProperty(value = "单选题") private Long singleChoice; /** @@ -48,8 +51,7 @@ public class BusQuestionsConfigVo implements Serializable { /** * 多选题(单位/道) */ - @ExcelProperty(value = "多选题", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "单=位/道") + @ExcelProperty(value = "多选题") private Long multipleChoice; /** @@ -61,8 +63,7 @@ public class BusQuestionsConfigVo implements Serializable { /** * 判断题(单位/道) */ - @ExcelProperty(value = "判断题", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "单=位/道") + @ExcelProperty(value = "判断题") private Long estimate; /** @@ -86,8 +87,7 @@ public class BusQuestionsConfigVo implements Serializable { /** * 答题最大时间(单位/分钟) */ - @ExcelProperty(value = "答题最大时间", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "单=位/分钟") + @ExcelProperty(value = "答题最大时间") private Long answerTime; diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusQuestionBankServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusQuestionBankServiceImpl.java index ce1f0ee3..1c28648b 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusQuestionBankServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/BusQuestionBankServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import org.dromara.common.core.constant.CacheConstants; import org.dromara.common.core.constant.HttpStatus; @@ -14,6 +15,8 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.redis.utils.RedisUtils; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.project.service.IBusProjectService; import org.dromara.safety.domain.BusQuestionBank; import org.dromara.safety.domain.req.questionbank.QuestionBankCreateReq; import org.dromara.safety.domain.req.questionbank.QuestionBankQueryReq; @@ -38,6 +41,9 @@ import java.util.List; public class BusQuestionBankServiceImpl extends ServiceImpl implements IBusQuestionBankService { + @Resource + private IBusProjectService projectService; + /** * 查询题库 * @@ -134,6 +140,7 @@ public class BusQuestionBankServiceImpl extends ServiceImpl ids, Boolean isValid) { + Long userId = LoginHelper.getUserId(); + List questionBankList = this.listByIds(ids); if (isValid) { // TODO 做一些业务上的校验,判断是否需要校验 + List projectId = questionBankList.stream().map(BusQuestionBank::getProjectId).toList(); + projectService.validAuth(projectId, userId); } return this.removeBatchByIds(ids); } @@ -193,6 +210,7 @@ public class BusQuestionBankServiceImpl extends ServiceImpl implements IBusQuestionsConfigService { + @Resource + private IBusProjectService projectService; + /** * 查询题库配置 * @@ -122,8 +128,14 @@ public class BusQuestionsConfigServiceImpl extends ServiceImpl ids, Boolean isValid) { + Long userId = LoginHelper.getUserId(); + List questionsConfigList = this.listByIds(ids); if (isValid) { // TODO 做一些业务上的校验,判断是否需要校验 + List projectId = questionsConfigList.stream().map(BusQuestionsConfig::getProjectId).toList(); + projectService.validAuth(projectId, userId); } return this.removeBatchByIds(ids); } @@ -173,6 +189,7 @@ public class BusQuestionsConfigServiceImpl extends ServiceImpl => { + return request({ + url: '/project/constructionBlacklist/list', + method: 'get', + params: query + }); +}; + +/** + * 查询黑名单详细 + * @param id + */ +export const getConstructionBlacklist = (id: string | number): AxiosPromise => { + return request({ + url: '/project/constructionBlacklist/' + id, + method: 'get' + }); +}; + +/** + * 新增黑名单 + * @param data + */ +export const addConstructionBlacklist = (data: ConstructionBlacklistForm) => { + return request({ + url: '/project/constructionBlacklist', + method: 'post', + data: data + }); +}; + +/** + * 修改黑名单 + * @param data + */ +export const updateConstructionBlacklist = (data: ConstructionBlacklistForm) => { + return request({ + url: '/project/constructionBlacklist', + method: 'put', + data: data + }); +}; + +/** + * 删除黑名单 + * @param id + */ +export const delConstructionBlacklist = (id: string | number | Array) => { + return request({ + url: '/project/constructionBlacklist/' + id, + method: 'delete' + }); +}; diff --git a/plus-ui/src/api/project/constructionBlacklist/types.ts b/plus-ui/src/api/project/constructionBlacklist/types.ts new file mode 100644 index 00000000..890f1942 --- /dev/null +++ b/plus-ui/src/api/project/constructionBlacklist/types.ts @@ -0,0 +1,69 @@ +export interface ConstructionBlacklistVO { + /** + * id + */ + id: string | number; + /** + * 名字 + */ + userName: string; + + /** + * 身份证号码 + */ + sfzNumber: string; + + /** + * 备注 + */ + remark: string; +} + +export interface ConstructionBlacklistForm extends BaseEntity { + /** + * 项目id + */ + projectId?: string | number; + + /** + * 用户id + */ + userId?: string | number; + + /** + * 备注 + */ + remark?: string; +} + +export interface ConstructionBlacklistQuery extends PageQuery { + /** + * 主键id + */ + id?: string | number; + + /** + * 项目id + */ + projectId?: string | number; + + /** + * 用户id + */ + userId?: string | number; + + /** + * 名字 + */ + userName?: string; + + /** + * 身份证号码 + */ + sfzNumber?: string; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/plus-ui/src/api/safety/questionUserAnswer/types.ts b/plus-ui/src/api/safety/questionUserAnswer/types.ts index 3bdb6def..66434a09 100644 --- a/plus-ui/src/api/safety/questionUserAnswer/types.ts +++ b/plus-ui/src/api/safety/questionUserAnswer/types.ts @@ -43,7 +43,6 @@ export interface QuestionUserAnswerVO { * 文件地址 */ file: string; - } export interface QuestionUserAnswerForm extends BaseEntity { @@ -91,11 +90,9 @@ export interface QuestionUserAnswerForm extends BaseEntity { * 文件地址 */ file?: string; - } export interface QuestionUserAnswerQuery extends PageQuery { - /** * 项目id */ @@ -136,11 +133,8 @@ export interface QuestionUserAnswerQuery extends PageQuery { */ file?: string; - /** - * 日期范围参数 - */ - params?: any; + /** + * 日期范围参数 + */ + params?: any; } - - - diff --git a/plus-ui/src/api/safety/questionsConfig/types.ts b/plus-ui/src/api/safety/questionsConfig/types.ts index a7773d49..57253042 100644 --- a/plus-ui/src/api/safety/questionsConfig/types.ts +++ b/plus-ui/src/api/safety/questionsConfig/types.ts @@ -4,6 +4,11 @@ export interface QuestionsConfigVO { */ id: string | number; + /** + * 项目id + */ + projectId: string | number; + /** * 单选题(单位/道) */ @@ -48,7 +53,6 @@ export interface QuestionsConfigVO { * 答题最大时间(单位/分钟) */ answerTime: number; - } export interface QuestionsConfigForm extends BaseEntity { @@ -57,6 +61,11 @@ export interface QuestionsConfigForm extends BaseEntity { */ id?: string | number; + /** + * 项目id + */ + projectId: string | number; + /** * 单选题(单位/道) */ @@ -101,11 +110,13 @@ export interface QuestionsConfigForm extends BaseEntity { * 答题最大时间(单位/分钟) */ answerTime?: number; - } export interface QuestionsConfigQuery extends PageQuery { - + /** + * 项目id + */ + projectId: string | number; /** * 单选题(单位/道) */ @@ -151,11 +162,8 @@ export interface QuestionsConfigQuery extends PageQuery { */ answerTime?: number; - /** - * 日期范围参数 - */ - params?: any; + /** + * 日期范围参数 + */ + params?: any; } - - - diff --git a/plus-ui/src/views/project/constructionBlacklist/index.vue b/plus-ui/src/views/project/constructionBlacklist/index.vue new file mode 100644 index 00000000..9f72c0a0 --- /dev/null +++ b/plus-ui/src/views/project/constructionBlacklist/index.vue @@ -0,0 +1,163 @@ + + + diff --git a/plus-ui/src/views/project/constructionUser/index.vue b/plus-ui/src/views/project/constructionUser/index.vue index 3e2ea582..c078ed73 100644 --- a/plus-ui/src/views/project/constructionUser/index.vue +++ b/plus-ui/src/views/project/constructionUser/index.vue @@ -12,6 +12,11 @@ + + + + + @@ -71,16 +76,15 @@ {{ getTeamName(scope.row.teamId) }} - - + - - + + @@ -90,11 +94,16 @@ - - + + + + + - +