diff --git a/.gitignore b/.gitignore index 556e864..4c01934 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ build/ .DS_Store /.idea/ +.idea diff --git a/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java b/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java index 3e29f93..56d3671 100644 --- a/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java +++ b/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java @@ -12,6 +12,7 @@ import com.zcloud.basic.info.api.UserServiceI; import com.zcloud.basic.info.dto.*; import com.zcloud.basic.info.dto.clientobject.UserCO; import com.zcloud.gbscommon.translateaop.TranslateField; +import com.zcloud.gbscommon.utils.Tools; import com.zcloud.gbscommon.zclouddepartment.response.ZcloudDepartmentInfoCo; import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo; import io.swagger.annotations.Api; @@ -20,9 +21,9 @@ import lombok.AllArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import javax.servlet.http.HttpServletResponse; +import java.util.*; +import java.util.stream.Collectors; /** * web-adapter @@ -108,5 +109,19 @@ public class UserController { userService.edit(userUpdateCmd); return SingleResponse.buildSuccess(); } + + @ApiOperation("导出用户列表") + @PostMapping("/exportUserTable") + public void exportPointTable(@Validated @RequestBody UserExportQry qry, HttpServletResponse httpServletResponse) { + List dataIds = Collections.emptyList(); + if(qry.getIds() != null && qry.getIds().length > 0){ + dataIds = Arrays.stream(qry.getIds()) + .filter(Objects::nonNull) // 过滤掉null + .filter(str -> !str.trim().isEmpty()) // 过滤掉空字符串 + .map(Long::valueOf) + .collect(Collectors.toList()); + } + userService.exportUserTable(httpServletResponse, dataIds, Long.valueOf(qry.getCorpinfoId())); + } } diff --git a/web-adapter/src/main/java/com/zcloud/basic/info/web/UserEmploymentLogController.java b/web-adapter/src/main/java/com/zcloud/basic/info/web/UserEmploymentLogController.java index 32d9455..ef89be9 100644 --- a/web-adapter/src/main/java/com/zcloud/basic/info/web/UserEmploymentLogController.java +++ b/web-adapter/src/main/java/com/zcloud/basic/info/web/UserEmploymentLogController.java @@ -27,7 +27,7 @@ import java.util.ArrayList; * @Author zhangyue * @Date 2025-11-06 19:15:37 */ -@Api(tags = "用户资质信息") +@Api(tags = "用户履职记录") @RequestMapping("/${application.gateway}/userEmploymentLog") @RestController @AllArgsConstructor diff --git a/web-adapter/src/main/java/com/zcloud/basic/info/web/UserQualificationInfoController.java b/web-adapter/src/main/java/com/zcloud/basic/info/web/UserQualificationInfoController.java index 7f52823..b42dcda 100644 --- a/web-adapter/src/main/java/com/zcloud/basic/info/web/UserQualificationInfoController.java +++ b/web-adapter/src/main/java/com/zcloud/basic/info/web/UserQualificationInfoController.java @@ -1,6 +1,7 @@ package com.zcloud.basic.info.web; +import com.alibaba.cola.exception.BizException; import com.zcloud.basic.info.api.UserQualificationInfoServiceI; import com.zcloud.basic.info.dto.UserQualificationInfoAddCmd; import com.zcloud.basic.info.dto.UserQualificationInfoPageQry; @@ -16,6 +17,7 @@ import com.jjb.saas.framework.auth.utils.AuthContext; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -28,7 +30,7 @@ import java.util.Objects; * @Author SondonYong * @Date 2025-10-31 09:50:26 */ -@Api(tags = "人员资格证书管理") +@Api(tags = "人员资格证书管理1-特种,2-安全") @RequestMapping("/${application.gateway}/userQualificationInfo") @RestController @AllArgsConstructor @@ -39,13 +41,22 @@ public class UserQualificationInfoController { @PostMapping("/save") public SingleResponse add(@Validated @RequestBody UserQualificationInfoAddCmd cmd) { SSOUser ssoUser = AuthContext.getCurrentUser(); + if(cmd.getQualificationinfoType() == 1 + && (StringUtils.isEmpty(cmd.getOperatingProject()) || StringUtils.isEmpty(cmd.getOperatingProjectName()))){ + throw new BizException("操作项目不能为空。"); + } return userQualificationInfoService.add(cmd); } @ApiOperation("修改") @PutMapping("/edit") - public SingleResponse edit(@Validated @RequestBody UserQualificationInfoUpdateCmd userQualificationInfoUpdateCmd) { - userQualificationInfoService.edit(userQualificationInfoUpdateCmd); + public SingleResponse edit(@Validated @RequestBody UserQualificationInfoUpdateCmd cmd) { + + if(cmd.getQualificationinfoType() == 1 + && (StringUtils.isEmpty(cmd.getOperatingProject()) || StringUtils.isEmpty(cmd.getOperatingProjectName()))){ + throw new BizException("操作项目不能为空。"); + } + userQualificationInfoService.edit(cmd); return SingleResponse.buildSuccess(); } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/PostRemoveExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/PostRemoveExe.java index 018b038..52237e4 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/PostRemoveExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/PostRemoveExe.java @@ -41,13 +41,13 @@ public class PostRemoveExe { @Transactional(rollbackFor = Exception.class) public boolean execute(Long id) { // 这段代码后续放到user的方法中, 校验是否有人员使用该岗位 -// QueryWrapper queryWrapper = new QueryWrapper(); -// queryWrapper.eq("post_id", id); -// queryWrapper.eq("delete_enum", "FALSE"); -// List userPostList = userRepository.list(queryWrapper); -// if (userPostList != null && userPostList.size() > 0) { -// throw new BizException("岗位有相应人员,请解除相关岗位信息后删除。"); -// } + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("post_id", id); + queryWrapper.eq("delete_enum", "FALSE"); + List userPostList = userRepository.list(queryWrapper); + if (userPostList != null && userPostList.size() > 0) { + throw new BizException("岗位有相应人员,请解除相关岗位信息后删除。"); + } boolean res = postGateway.deletedPostById(id); postDepartmentGateway.deletedPostDepartment(id); @@ -65,13 +65,13 @@ public class PostRemoveExe { throw new BizException("岗位ID不能为空"); } // 这段代码后续放到user的方法中, 校验是否有人员使用该岗位 -// QueryWrapper queryWrapper = new QueryWrapper(); -// queryWrapper.in("post_id", ids); -// queryWrapper.eq("delete_enum", "FALSE"); -// List userPostList = userRepository.list(queryWrapper); -// if (userPostList != null && userPostList.size() > 0) { -// throw new BizException("岗位有相应人员,请解除相关岗位信息后删除。"); -// } + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.in("post_id", ids); + queryWrapper.eq("delete_enum", "FALSE"); + List userPostList = userRepository.list(queryWrapper); + if (userPostList != null && userPostList.size() > 0) { + throw new BizException("岗位有相应人员,请解除相关岗位信息后删除。"); + } boolean res = postGateway.deletedPostByIds(ids); postDepartmentGateway.deletedPostDepartment(ids); diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java index a3248b9..28e93b9 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java @@ -3,17 +3,17 @@ package com.zcloud.basic.info.command; import com.alibaba.cola.exception.BizException; import com.jjb.saas.framework.auth.model.SSOUser; import com.jjb.saas.framework.auth.utils.AuthContext; -import com.jjb.saas.system.client.role.facade.RoleFacade; -import com.jjb.saas.system.client.user.facade.UserFacade; -import com.jjb.saas.system.client.user.request.FacadeUserAddCmd; import com.zcloud.basic.info.command.convertor.UserCoConvertor; +import com.zcloud.basic.info.domain.gateway.CorpInfoGateway; import com.zcloud.basic.info.domain.gateway.UserEmploymentLogGateway; import com.zcloud.basic.info.domain.gateway.UserGateway; import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.domain.model.UserEmploymentLogE; import com.zcloud.basic.info.dto.UserAddCmd; import com.zcloud.basic.info.dto.UserXgfAddCmd; +import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO; import com.zcloud.basic.info.persistence.dataobject.UserEmploymentLogDO; +import com.zcloud.basic.info.persistence.repository.CorpInfoRepository; import com.zcloud.gbscommon.utils.Tools; import lombok.AllArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; @@ -22,8 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; - - +import org.springframework.util.ObjectUtils; /** @@ -37,12 +36,13 @@ public class UserAddExe { private final UserGateway userGateway; private UserCoConvertor userCoConvertor; private final UserEmploymentLogGateway userEmploymentLogGateway; + private final CorpInfoRepository corpInfoRepository; // @Autowired // private RedisTemplate redisTemplate; - @DubboReference(check = false) - private UserFacade userFacade; - @DubboReference - private RoleFacade roleFacade; +// @DubboReference(check = false) +// private UserFacade userFacade; +// @DubboReference +// private RoleFacade roleFacade; @Transactional(rollbackFor = Exception.class) public boolean execute(UserAddCmd cmd) { @@ -51,17 +51,18 @@ public class UserAddExe { UserE userE = new UserE(); BeanUtils.copyProperties(cmd, userE); userE.initAdd(tenantId, userE); + CorpInfoDO corpInfoDO = corpInfoRepository.getById(userE.getCorpinfoId()); + String corpName = null; UserEmploymentLogE userEmploymentLogE = new UserEmploymentLogE(); BeanUtils.copyProperties(userE, userEmploymentLogE); - userEmploymentLogE.initAdd(userEmploymentLogE); boolean res = false; try { res = userGateway.add(userE); + if(corpInfoDO != null && !ObjectUtils.isEmpty(corpInfoDO.getCorpName())){ + corpName = corpInfoDO.getCorpName(); + } + userEmploymentLogE.initAdd(userEmploymentLogE, corpName, userE.getId()); userEmploymentLogGateway.add(userEmploymentLogE); -// FacadeUserAddCmd facadeUserAddCmd = new FacadeUserAddCmd(); -// facadeUserAddCmd.setAccount(userE.getUsername()); -// FacadeUserAddCmd facadeUserAddCmd = userCoConvertor.converEToFacadeUserAddCmd(userE); -// userFacade.addUser(facadeUserAddCmd); } catch (Exception e) { throw new RuntimeException(e); } @@ -77,14 +78,18 @@ public class UserAddExe { UserE userE = new UserE(); BeanUtils.copyProperties(cmd, userE); userE.initAdd(tenantId, userE); - + CorpInfoDO corpInfoDO = corpInfoRepository.getById(userE.getCorpinfoId()); + String corpName = null; + UserEmploymentLogE userEmploymentLogE = new UserEmploymentLogE(); + BeanUtils.copyProperties(userE, userEmploymentLogE); boolean res = false; try { res = userGateway.add(userE); -// FacadeUserAddCmd facadeUserAddCmd = new FacadeUserAddCmd(); -// facadeUserAddCmd.setAccount(userE.getUsername()); -// FacadeUserAddCmd facadeUserAddCmd = userCoConvertor.converEToFacadeUserAddCmd(userE); -// userFacade.addUser(facadeUserAddCmd); + if(corpInfoDO != null && !ObjectUtils.isEmpty(corpInfoDO.getCorpName())){ + corpName = corpInfoDO.getCorpName(); + } + userEmploymentLogE.initAdd(userEmploymentLogE, corpName, userE.getId()); + userEmploymentLogGateway.add(userEmploymentLogE); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java index 1565943..a1863a8 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java @@ -1,9 +1,15 @@ package com.zcloud.basic.info.command; import com.alibaba.cola.exception.BizException; +import com.zcloud.basic.info.domain.gateway.UserEmploymentLogGateway; import com.zcloud.basic.info.domain.gateway.UserGateway; import com.zcloud.basic.info.domain.model.UserE; +import com.zcloud.basic.info.domain.model.UserEmploymentLogE; import com.zcloud.basic.info.dto.UserUpdateCmd; +import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO; +import com.zcloud.basic.info.persistence.dataobject.UserDO; +import com.zcloud.basic.info.persistence.repository.CorpInfoRepository; +import com.zcloud.basic.info.persistence.repository.UserRepository; import com.zcloud.gbscommon.utils.Const; import com.zcloud.gbscommon.utils.ZcloudRedisUtil; import lombok.AllArgsConstructor; @@ -11,8 +17,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; - - +import org.springframework.util.ObjectUtils; /** @@ -24,6 +29,12 @@ import org.springframework.transaction.annotation.Transactional; @AllArgsConstructor public class UserUpdateExe { private final UserGateway userGateway; + + private final UserRepository userRepository; + + private final UserEmploymentLogGateway userEmploymentLogGateway; + + private final CorpInfoRepository corpInfoRepository; @Autowired private ZcloudRedisUtil zcloudRedisUtil; @@ -31,7 +42,28 @@ public class UserUpdateExe { public void execute(UserUpdateCmd userUpdateCmd) { UserE userE = new UserE(); BeanUtils.copyProperties(userUpdateCmd, userE); - boolean res = userGateway.update(userE); + UserDO userDO = userRepository.getInfoById(userUpdateCmd.getId()); + UserE oldUserE = new UserE(); + BeanUtils.copyProperties(userDO, oldUserE); + boolean transferPositionFlag = userE.verifyTransferPosition(oldUserE, userE); + String corpName = null; + + boolean res = false; + try { + res = userGateway.update(userE); + if (transferPositionFlag) { + UserEmploymentLogE userEmploymentLogE = new UserEmploymentLogE(); + CorpInfoDO corpInfoDO = corpInfoRepository.getById(userE.getCorpinfoId()); + if(corpInfoDO != null && !ObjectUtils.isEmpty(corpInfoDO.getCorpName())){ + corpName = corpInfoDO.getCorpName(); + } + userEmploymentLogE.initAdd(userEmploymentLogE, corpName, userE.getId()); + userEmploymentLogGateway.add(userEmploymentLogE); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + if (!res) { throw new BizException("修改失败"); } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/convertor/UserCoConvertor.java b/web-app/src/main/java/com/zcloud/basic/info/command/convertor/UserCoConvertor.java index 1ddca72..c3704bb 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/convertor/UserCoConvertor.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/convertor/UserCoConvertor.java @@ -4,6 +4,7 @@ import com.jjb.saas.system.client.user.request.FacadeUserAddCmd; import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.dto.clientobject.UserCO; import com.zcloud.basic.info.persistence.dataobject.UserDO; +import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity; import com.zcloud.gbscommon.zclouduser.response.ZcloudUserCo; import org.mapstruct.Mapper; @@ -23,6 +24,7 @@ public interface UserCoConvertor { * @return */ List converDOsToCOs(List userDOs); + List converDOsToExcelEntitys(List userDOs); UserCO converDOToCO(UserDO userDO); FacadeUserAddCmd converEToFacadeUserAddCmd(UserE userE); diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/query/UserQueryExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/query/UserQueryExe.java index 941fbef..2fead95 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/query/UserQueryExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/query/UserQueryExe.java @@ -2,28 +2,27 @@ package com.zcloud.basic.info.command.query; import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.SingleResponse; -import com.jjb.saas.system.client.role.facade.RoleFacade; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zcloud.basic.info.command.convertor.UserCoConvertor; import com.zcloud.basic.info.domain.gateway.UserGateway; import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.dto.UserPageQry; import com.zcloud.basic.info.dto.UserQryCmd; import com.zcloud.basic.info.dto.UserVerifyQryCmd; -import com.zcloud.basic.info.dto.clientobject.ImgFilesCO; import com.zcloud.basic.info.dto.clientobject.UserCO; -import com.zcloud.basic.info.persistence.dataobject.ImgFilesDO; import com.zcloud.basic.info.persistence.dataobject.UserDO; import com.zcloud.basic.info.persistence.repository.UserRepository; +import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity; import com.zcloud.gbscommon.utils.PageQueryHelper; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -40,7 +39,6 @@ public class UserQueryExe { private final UserRepository userRepository; private final UserGateway userGateway; private final UserCoConvertor userCoConvertor; - private final RoleFacade roleFacade; /** * 分页 @@ -114,5 +112,20 @@ public class UserQueryExe { UserDO byId = userRepository.getById(aLong); return userCoConvertor.converDOToCO(byId); } + + /** + * 导出用户 + */ + public void exportUserTable(HttpServletResponse httpServletResponse, List dataIds, Long corpinfoId) { + Map params = new HashMap<>(); + params.put("corpinfoId", corpinfoId); + if(dataIds != null && !dataIds.isEmpty()) { + params.put("userIdList", dataIds); + } + List userDOList = userRepository.listAll(params); + List userExcelExportEntities = userCoConvertor.converDOsToExcelEntitys(userDOList); + UserE userE = new UserE(); + userE.exportUserTable(httpServletResponse, userExcelExportEntities); + } } diff --git a/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java b/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java index 2d97217..ee35c75 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java @@ -14,6 +14,7 @@ import com.zcloud.basic.info.dto.clientobject.UserCO; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; import java.util.Collection; import java.util.List; @@ -56,6 +57,11 @@ public class UserServiceImpl implements UserServiceI { userUpdateExe.execute(userUpdateCmd); } + @Override + public void exportUserTable(HttpServletResponse httpServletResponse, List dataIds, Long corpinfoId) { + userQueryExe.exportUserTable(httpServletResponse, dataIds, corpinfoId); + } + @Override public void remove(Long id) { userRemoveExe.execute(id); diff --git a/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java b/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java index 5c5d50f..2e3c02e 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java +++ b/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java @@ -8,6 +8,7 @@ import com.alibaba.cola.dto.SingleResponse; import com.zcloud.basic.info.dto.*; import com.zcloud.basic.info.dto.clientobject.UserCO; +import javax.servlet.http.HttpServletResponse; import java.util.Collection; import java.util.List; @@ -25,6 +26,8 @@ public interface UserServiceI { void edit(UserUpdateCmd cmd); + void exportUserTable(HttpServletResponse httpServletResponse, List dataIds, Long corpinfoId); + void remove(Long id); void removeBatch(Long[] ids); diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/UserAddCmd.java b/web-client/src/main/java/com/zcloud/basic/info/dto/UserAddCmd.java index ba6ef0c..1c68bcc 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/dto/UserAddCmd.java +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/UserAddCmd.java @@ -120,5 +120,12 @@ public class UserAddCmd extends Command { @ApiModelProperty(value = "政治面貌名称", name = "politicalAffiliationName") private String politicalAffiliationName; + @ApiModelProperty(value = "企业名称") + private String corpinfoName; + @ApiModelProperty(value = "部门名称") + private String departmentName; + @ApiModelProperty(value = "岗位名称") + private String postName; + } diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/UserEmploymentLogQryCmd.java b/web-client/src/main/java/com/zcloud/basic/info/dto/UserEmploymentLogQryCmd.java index 96328b8..cb5bb92 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/dto/UserEmploymentLogQryCmd.java +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/UserEmploymentLogQryCmd.java @@ -13,6 +13,6 @@ import lombok.Data; @Data public class UserEmploymentLogQryCmd{ - private String likeUserEmploymentLogId; + private Long eqUserId; } diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/UserExportQry.java b/web-client/src/main/java/com/zcloud/basic/info/dto/UserExportQry.java new file mode 100644 index 0000000..e9bb1ad --- /dev/null +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/UserExportQry.java @@ -0,0 +1,37 @@ +package com.zcloud.basic.info.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + + +/** + * web-client + * + * @Author zhangyue + * @Date 2025-11-04 14:07:36 + */ +@Data +public class UserExportQry extends PageQuery { + + /** + * 查询条件操作前缀,支持以下几种数据库查询操作: + * - `like`: 模糊匹配查询,对应SQL的LIKE操作符 + * - `eq`: 等值查询,对应SQL的=操作符 + * - `gt`: 大于比较查询 + * - `lt`: 小于比较查询 + * - `ge`: 大于等于比较查询 + * - `le`: 小于等于比较查询 + * - `ne`: 不等比较查询,对应SQL的!=操作符 + */ + @ApiModelProperty(value = "人员id列表", name = "ids") + private String[] ids; + + @ApiModelProperty(value = "企业id", name = "corpinfoId", required = true) + @NotEmpty(message = "企业id不能为空") + private String corpinfoId; + +} + diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoAddCmd.java b/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoAddCmd.java index ab65ec5..d6bfaf3 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoAddCmd.java +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoAddCmd.java @@ -1,15 +1,12 @@ package com.zcloud.basic.info.dto; import com.alibaba.cola.dto.Command; -import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import javax.validation.constraints.*; -import java.time.LocalDate; -import java.util.Date; /** * web-client @@ -37,19 +34,28 @@ public class UserQualificationInfoAddCmd extends Command { @NotEmpty(message = "资质名称不能为空") private String qualificationName; - @ApiModelProperty(value = "人员资质证书有效期-开始时间", name = "startValidityTime", required = true) - @NotNull(message = "人员资质证书有效期开始时间不能为空") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date startValidityTime; - - @ApiModelProperty(value = "人员资质证书有效期-结束时间", name = "endValidityTime", required = true) - @NotNull(message = "人员资质证书有效期结束时间不能为空") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date endValidityTime; - @ApiModelProperty(value = "证书编号", name = "certificateNo", required = true) @NotEmpty(message = "证书编号不能为空") private String certificateNo; + @ApiModelProperty(value = "资质类型,1-特种作业证书,2-安全人员证书", name = "qualificationinfoType", required = true) + @NotNull(message = "资质类型不能为空") + private Integer qualificationinfoType; + + // 证书作业类别-字典编码 + @ApiModelProperty(value = "证书作业类别-字典编码", name = "qualificationinfoCategory", required = true) + @NotEmpty(message = "证书作业类别不能为空") + private String qualificationinfoCategory; + // 证书作业类别名称 + @ApiModelProperty(value = "证书作业类别名称", name = "qualificationinfoCategoryName", required = true) + @NotEmpty(message = "证书作业类别不能为空") + private String qualificationinfoCategoryName; + // 操作项目-字典编码(特种有,安全没有) + @ApiModelProperty(value = "操作项目-字典编码(特种有,安全没有)", name = "operatingProject") + private String operatingProject; + // 操作项目名称(特种有,安全没有) + @ApiModelProperty(value = "操作项目名称(特种有,安全没有)", name = "operatingProjectName") + private String operatingProjectName; + } diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoPageQry.java b/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoPageQry.java index b94eda8..4e0ced4 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoPageQry.java +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoPageQry.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.util.Date; @@ -36,15 +37,12 @@ public class UserQualificationInfoPageQry extends PageQuery { private String userIdString; private Long eqUserId; - @ApiModelProperty(value = "证书名称编号模糊查询", name = "keyWords") - private String keyWords; + @ApiModelProperty(value = "资质类型,1-特种作业证书,2-安全人员证书", name = "eqQualificationinfoType", required = true) + @NotNull(message = "资质类型不能为空") + private Integer eqQualificationinfoType; - @ApiModelProperty(value = "结束时间", name = "geEndValidityTime") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date geEndValidityTime; + @ApiModelProperty(value = "证书类型(字典编码)", name = "eqQualificationinfoCategory") + private String eqQualificationinfoCategory; - @ApiModelProperty(value = "开始时间", name = "leStartValidityTime") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date leStartValidityTime; } diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoUpdateCmd.java b/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoUpdateCmd.java index c547424..5c8a754 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoUpdateCmd.java +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/UserQualificationInfoUpdateCmd.java @@ -39,18 +39,27 @@ public class UserQualificationInfoUpdateCmd extends Command { @NotEmpty(message = "资质名称不能为空") private String qualificationName; - @ApiModelProperty(value = "人员资质证书有效期开始时间", name = "startValidityTime", required = true) - @NotNull(message = "人员资质证书有效期开始时间不能为空") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date startValidityTime; - - @ApiModelProperty(value = "人员资质证书有效期结束时间", name = "endValidityTime", required = true) - @NotNull(message = "人员资质证书有效期结束时间不能为空") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date endValidityTime; - @ApiModelProperty(value = "证书编号", name = "certificateNo", required = true) @NotEmpty(message = "证书编号不能为空") private String certificateNo; + + @ApiModelProperty(value = "资质类型,1-特种作业证书,2-安全人员证书", name = "qualificationinfoType", required = true) + @NotNull(message = "资质类型不能为空") + private Integer qualificationinfoType; + + // 证书作业类别-字典编码 + @ApiModelProperty(value = "证书作业类别-字典编码", name = "qualificationinfoCategory") + @NotEmpty(message = "证书作业类别编码不能为空") + private String qualificationinfoCategory; + // 证书作业类别名称 + @ApiModelProperty(value = "证书作业类别名称", name = "qualificationinfoCategoryName") + @NotEmpty(message = "证书作业类别不能为空") + private String qualificationinfoCategoryName; + // 操作项目-字典编码(特种有,安全没有) + @ApiModelProperty(value = "操作项目-字典编码(特种有,安全没有)", name = "operatingProject") + private String operatingProject; + // 操作项目名称(特种有,安全没有) + @ApiModelProperty(value = "操作项目名称(特种有,安全没有)", name = "operatingProjectName") + private String operatingProjectName; } diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/UserXgfAddCmd.java b/web-client/src/main/java/com/zcloud/basic/info/dto/UserXgfAddCmd.java index 0694240..bff1ff9 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/dto/UserXgfAddCmd.java +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/UserXgfAddCmd.java @@ -78,7 +78,6 @@ public class UserXgfAddCmd extends Command { private String userIdCard; @ApiModelProperty(value = "人脸头像url", name = "userAvatarUrl", required = true) - @NotEmpty(message = "人脸头像url不能为空") private String userAvatarUrl; @ApiModelProperty(value = "现住址", name = "currentAddress", required = true) @@ -128,5 +127,11 @@ public class UserXgfAddCmd extends Command { @NotEmpty(message = "政治面貌名称不能为空") private String politicalAffiliationName; + @ApiModelProperty(value = "企业名称") + private String corpinfoName; + @ApiModelProperty(value = "部门名称") + private String departmentName; + @ApiModelProperty(value = "岗位名称") + private String postName; } diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/clientobject/UserQualificationInfoCO.java b/web-client/src/main/java/com/zcloud/basic/info/dto/clientobject/UserQualificationInfoCO.java index ad4b289..a743dfa 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/dto/clientobject/UserQualificationInfoCO.java +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/clientobject/UserQualificationInfoCO.java @@ -1,13 +1,10 @@ package com.zcloud.basic.info.dto.clientobject; import com.alibaba.cola.dto.ClientObject; -import com.alibaba.excel.annotation.format.DateTimeFormat; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.time.LocalDate; -import java.time.LocalDateTime; import java.util.Date; @@ -30,16 +27,9 @@ public class UserQualificationInfoCO extends ClientObject { //用户id @ApiModelProperty(value = "用户id") private Long userId; - //资质名称 - @ApiModelProperty(value = "资质名称") + //证书名称 + @ApiModelProperty(value = "证书名称") private String qualificationName; - //人员资质证书有效期 - @ApiModelProperty(value = "人员资质证书有效期开始时间") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date startValidityTime; - @ApiModelProperty(value = "人员资质证书有效期结束时间") - @JsonFormat(pattern = "yyyy-MM-dd") - private Date endValidityTime; //证书编号 @ApiModelProperty(value = "证书编号") private String certificateNo; @@ -98,5 +88,14 @@ public class UserQualificationInfoCO extends ClientObject { //环境 @ApiModelProperty(value = "环境") private String env; + + @ApiModelProperty(value = "人员名称") + private String userName; + + @ApiModelProperty(value = "入职状态") + private String employmentFlagName; + + @ApiModelProperty(value = "部门名称") + private String departmentName; } diff --git a/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java b/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java index 24e3e3e..7def2c5 100644 --- a/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java +++ b/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java @@ -1,16 +1,17 @@ package com.zcloud.basic.info.domain.model; import com.alibaba.cola.dto.Response; +import com.alibaba.cola.exception.BizException; import com.jjb.saas.framework.domain.model.BaseE; -import com.zcloud.gbscommon.utils.DateUtil; -import com.zcloud.gbscommon.utils.FileUpload; +import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity; +import com.zcloud.gbscommon.utils.ExcelUtils; import com.zcloud.gbscommon.utils.Tools; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.util.ObjectUtils; -import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; +import java.util.List; /** * web-domain @@ -63,6 +64,13 @@ public class UserE extends BaseE { private String phone; private String rankLevelName; + + //企业名称 + private String corpinfoName; + //部门名称 + private String departmentName; + //岗位名称 + private String postName; //人员在部门中的排序 private Integer sort; //乐观锁 @@ -124,5 +132,37 @@ public class UserE extends BaseE { return Response.buildSuccess(); } } + + /** + * 人员修改过程中,是否存在转岗、入职离职 + * @param oldUserE + * @param newUserE + * @return + */ + public boolean verifyTransferPosition(UserE oldUserE, UserE newUserE) { + if (oldUserE.getCorpinfoId() != newUserE.getCorpinfoId()){ + return true; + } + if (oldUserE.getDepartmentId() != newUserE.getDepartmentId()){ + return true; + } + if (oldUserE.getPostId() != newUserE.getPostId()){ + return true; + } + if(oldUserE.getEmploymentFlag() != newUserE.getEmploymentFlag()){ + return true; + } + return false; + } + + // 导出 + public void exportUserTable(HttpServletResponse httpServletResponse, List userExcelEntities) { + try { + ExcelUtils.exportExcel(httpServletResponse,UserExcelExportEntity.class,"人员信息", userExcelEntities); + }catch (Exception e) { + throw new BizException("导出失败"); + } + } + } diff --git a/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserEmploymentLogE.java b/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserEmploymentLogE.java index 538464c..396263d 100644 --- a/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserEmploymentLogE.java +++ b/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserEmploymentLogE.java @@ -59,8 +59,10 @@ public class UserEmploymentLogE extends BaseE { //环境 private String env; - public void initAdd(UserEmploymentLogE userEmploymentLogE) { + public void initAdd(UserEmploymentLogE userEmploymentLogE, String corpinfoName, Long user_id) { userEmploymentLogE.setUserEmploymentLogId(Tools.get32UUID()); + userEmploymentLogE.setCorpinfoName(corpinfoName); + userEmploymentLogE.setUserId(user_id); } } diff --git a/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserQualificationInfoE.java b/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserQualificationInfoE.java index 11af902..e4e4d01 100644 --- a/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserQualificationInfoE.java +++ b/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserQualificationInfoE.java @@ -28,9 +28,6 @@ public class UserQualificationInfoE extends BaseE { private Long userId; //资质名称 private String qualificationName; - //人员资质证书有效期 - private Date startValidityTime; - private Date endValidityTime; //证书编号 private String certificateNo; diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java index 7e20f2d..a97c472 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java @@ -27,6 +27,7 @@ public class UserGatewayImpl implements UserGateway { UserDO d = new UserDO(); BeanUtils.copyProperties(userE, d); userRepository.save(d); + userE.setId(d.getId()); return true; } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/UserQualificationInfoDO.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/UserQualificationInfoDO.java index e2ab613..d87209d 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/UserQualificationInfoDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/UserQualificationInfoDO.java @@ -33,11 +33,6 @@ public class UserQualificationInfoDO extends BaseDO { //资质名称 @ApiModelProperty(value = "资质名称") private String qualificationName; - //人员资质证书有效期 - @ApiModelProperty(value = "人员资质证书有效期") - private Date startValidityTime; - @ApiModelProperty(value = "人员资质证书有效期") - private Date endValidityTime; //证书编号 @ApiModelProperty(value = "证书编号") private String certificateNo; @@ -58,6 +53,18 @@ public class UserQualificationInfoDO extends BaseDO { @ApiModelProperty(value = "操作项目名称(特种有,安全没有)") private String operatingProjectName; + @ApiModelProperty(value = "人员名称") + @TableField(exist = false) + private String userName; + + @ApiModelProperty(value = "入职状态, 1-入职 0-离职") + @TableField(exist = false) + private String employmentFlagName; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String departmentName; + public UserQualificationInfoDO(String userQualificationinfoId) { this.userQualificationinfoId = userQualificationinfoId; } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/mapper/UserQualificationInfoMapper.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/mapper/UserQualificationInfoMapper.java index 3967c86..25d0005 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/mapper/UserQualificationInfoMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/mapper/UserQualificationInfoMapper.java @@ -1,8 +1,12 @@ package com.zcloud.basic.info.persistence.mapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zcloud.basic.info.persistence.dataobject.UserDO; import com.zcloud.basic.info.persistence.dataobject.UserQualificationInfoDO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * web-infrastructure @@ -12,5 +16,7 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserQualificationInfoMapper extends BaseMapper { - } + IPage selectQualificationInfoPage(IPage page, @Param("ew") QueryWrapper queryWrapper); + +} diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserQualificationInfoRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserQualificationInfoRepositoryImpl.java index 0b5d687..5b6b9f9 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserQualificationInfoRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserQualificationInfoRepositoryImpl.java @@ -31,26 +31,19 @@ public class UserQualificationInfoRepositoryImpl extends BaseRepositoryImpl listPage(Map params) { - Object keyWords = params.get("keyWords"); IPage iPage = new Query().getPage(params); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params); - if (keyWords != null && !Tools.isEmpty(keyWords.toString())) { - queryWrapper.and(i -> i.like("qualification_name", keyWords).or().like("certificate_no", keyWords)); - } - queryWrapper.orderByDesc("create_time"); - IPage result = userQualificationInfoMapper.selectPage(iPage, queryWrapper); + queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params, "a."); + queryWrapper.eq("a.delete_enum", "FALSE"); + queryWrapper.orderByDesc("a.create_time"); + IPage result = userQualificationInfoMapper.selectQualificationInfoPage(iPage, queryWrapper); return PageHelper.pageToResponse(result, result.getRecords()); } @Override public MultiResponse list(Map params) { - Object keyWords = params.get("keyWords"); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params); - if (keyWords != null && !Tools.isEmpty(keyWords.toString())) { - queryWrapper.and(i -> i.like("qualification_name", keyWords).or().like("certificate_no", keyWords)); - } queryWrapper.orderByDesc("create_time"); List result = userQualificationInfoMapper.selectList(queryWrapper); return MultiResponse.of(result); diff --git a/web-infrastructure/src/main/resources/mapper/UserMapper.xml b/web-infrastructure/src/main/resources/mapper/UserMapper.xml index 9ec061c..9917f63 100644 --- a/web-infrastructure/src/main/resources/mapper/UserMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/UserMapper.xml @@ -70,6 +70,12 @@ and u.post_id = #{params.postId} + + and u.id in + + #{item} + + order by u.create_time desc diff --git a/web-infrastructure/src/main/resources/mapper/UserQualificationInfoMapper.xml b/web-infrastructure/src/main/resources/mapper/UserQualificationInfoMapper.xml index 6ad43bc..87d19ce 100644 --- a/web-infrastructure/src/main/resources/mapper/UserQualificationInfoMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/UserQualificationInfoMapper.xml @@ -4,5 +4,42 @@ +