|
@@ -3,16 +3,17 @@ package com.jeeplus.test.roster.service;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.jeeplus.core.excel.utils.EasyPoiUtil;
|
|
|
+import com.jeeplus.core.query.QueryWrapperGenerator;
|
|
|
import com.jeeplus.security.util.SecurityUtils;
|
|
|
import com.jeeplus.sys.constant.enums.OfficeTypeEnum;
|
|
|
-import com.jeeplus.sys.domain.Cert;
|
|
|
-import com.jeeplus.sys.domain.Office;
|
|
|
-import com.jeeplus.sys.domain.User;
|
|
|
+import com.jeeplus.sys.domain.*;
|
|
|
import com.jeeplus.sys.mapper.UserMapper;
|
|
|
import com.jeeplus.sys.service.CertService;
|
|
|
import com.jeeplus.sys.service.OfficeService;
|
|
@@ -98,14 +99,65 @@ public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase>
|
|
|
@Autowired
|
|
|
private CertService certService;
|
|
|
|
|
|
- public IPage<RosterBaseDTO> findList(Page<RosterBaseDTO> page, QueryWrapper<RosterBase> queryWrapper){
|
|
|
+ public IPage<RosterBaseDTO> findList(Page<RosterBaseDTO> page, RosterBaseDTO rosterBaseDTO) throws Exception {
|
|
|
+ RosterBase rosterBase = RosterBaseWrapper.INSTANCE.toEntity(rosterBaseDTO);
|
|
|
+ QueryWrapper<RosterBase> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( rosterBase, RosterBase.class );
|
|
|
queryWrapper.eq("rb.del_flag","0");
|
|
|
+ if(ObjectUtil.isNotEmpty(rosterBaseDTO)){
|
|
|
+ if(StringUtils.isNotBlank(rosterBaseDTO.getCompanyId())){
|
|
|
+ List<Office> list = officeService.list(new QueryWrapper<Office>().lambda().like(Office::getParentIds, rosterBaseDTO.getCompanyId()).eq(Office::getDelFlag, '0'));
|
|
|
+ List<String> ids = list.stream().map(Office::getId).collect(Collectors.toList());
|
|
|
+ queryWrapper.in("so.id",ids);
|
|
|
+ }else if(StringUtils.isNotBlank(rosterBaseDTO.getOfficeId())){
|
|
|
+ List<Office> list = officeService.list(new QueryWrapper<Office>().lambda().eq(Office::getId, rosterBaseDTO.getOfficeId()).eq(Office::getDelFlag, '0'));
|
|
|
+ List<String> ids = list.stream().map(Office::getId).collect(Collectors.toList());
|
|
|
+ queryWrapper.in("so.id",ids);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(rosterBaseDTO.getOfficeSelect())) {
|
|
|
+ // 根据部门筛选
|
|
|
+ List<User> userList = userService.list(new LambdaQueryWrapper<User>().eq(User::getOfficeId, rosterBaseDTO.getOfficeSelect()));
|
|
|
+ List<String> ids = userList.stream().distinct().map(User::getRosterId).collect(Collectors.toList());
|
|
|
+ queryWrapper.in("rb.id",ids);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(rosterBaseDTO.getPostSelect())) {
|
|
|
+ // 根据岗位筛选
|
|
|
+ List<User> userByPost = userService.getUserIdByPost(rosterBaseDTO.getPostSelect());
|
|
|
+ List<String> ids = userByPost.stream().distinct().map(User::getRosterId).collect(Collectors.toList());
|
|
|
+ queryWrapper.in("rb.id",ids);
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(rosterBaseDTO.getDates())) {
|
|
|
+ queryWrapper.between("rb.onboarding_date", rosterBaseDTO.getDates()[0], rosterBaseDTO.getDates()[1]);
|
|
|
+ }
|
|
|
+ }
|
|
|
IPage<RosterBaseDTO> rosterBaseDTOIPage = rosterBaseMapper.findList(page, queryWrapper);
|
|
|
if(CollectionUtil.isNotEmpty(rosterBaseDTOIPage.getRecords())){
|
|
|
rosterBaseDTOIPage.getRecords().stream().forEach(item->{
|
|
|
- if(StringUtils.isNotBlank(item.getHeadshot())){
|
|
|
- String fileTemporaryLookUrl = ossService.getFileTemporaryLookUrl(item.getHeadshot());
|
|
|
- item.setHeadshotLsUrl(fileTemporaryLookUrl);
|
|
|
+// 头像获取到新的临时地址展示
|
|
|
+// if(StringUtils.isNotBlank(item.getHeadshot())){
|
|
|
+// String fileTemporaryLookUrl = ossService.getFileTemporaryLookUrl(item.getHeadshot());
|
|
|
+// item.setHeadshotLsUrl(fileTemporaryLookUrl);
|
|
|
+// }
|
|
|
+ if (CollectionUtil.isNotEmpty(item.getPostList())) {
|
|
|
+ String postNames = item.getPostList().stream().filter(filter ->{
|
|
|
+ if(ObjectUtil.isNotEmpty(filter)) {
|
|
|
+ if (StringUtils.isNotBlank(filter.getName())) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }).map(Post::getName).collect(Collectors.joining(","));
|
|
|
+ item.setPostNames(postNames);
|
|
|
+ }
|
|
|
+ if (CollectionUtil.isNotEmpty(item.getRoleList())) {
|
|
|
+ String roleNames = item.getRoleList().stream().filter(filter ->{
|
|
|
+ if(ObjectUtil.isNotEmpty(filter)) {
|
|
|
+ if (StringUtils.isNotBlank(filter.getName())) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }).map(Role::getName).collect(Collectors.joining(","));
|
|
|
+ item.setRoleNames(roleNames);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -200,8 +252,11 @@ public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase>
|
|
|
if(ObjectUtil.isNotEmpty(rosterBaseDTO)){
|
|
|
if(StringUtils.isNotBlank(rosterBaseDTO.getId())){
|
|
|
RosterBase byId = this.getById(rosterBaseDTO.getId());
|
|
|
- // 原数据的人员类型为员工,现在要修改成游客,那么就要将原数据关联的用户删除掉
|
|
|
+ // 原数据的人员类型为员工,现在要修改成游客,
|
|
|
+ // 原数据关联的用户删除掉
|
|
|
+ // 删除原数据关联表的数据,删除与游客无关的数据
|
|
|
if ("1".equals(byId.getPersonType()) && "2".equals(rosterBaseDTO.getPersonType())) {
|
|
|
+ // 原数据关联的用户删除掉
|
|
|
// 通过花名册id查询用户
|
|
|
List<User> ulist = userService.list(new QueryWrapper<User>().lambda().eq(User::getRosterId, rosterBaseDTO.getId()));
|
|
|
if (CollectionUtil.isNotEmpty(ulist)) {
|
|
@@ -218,7 +273,8 @@ public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase>
|
|
|
userMapper.deleteUserRole(i.getId());
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
+ // 删除原数据关联表的数据,清空与游客无关的字段
|
|
|
+ rosterBaseDTO = this.deleteRosterWorker(rosterBaseDTO);
|
|
|
}
|
|
|
// 身份证号唯一验证(排除自己)
|
|
|
if(StringUtils.isNotBlank(rosterBaseDTO.getIdCard())){
|
|
@@ -235,11 +291,6 @@ public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase>
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
- //获取当前登录人信息
|
|
|
- UserDTO userDTO = UserUtils.getCurrentUserDTO();
|
|
|
- //工号生成
|
|
|
- String serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), RosterBaseDTO.BIZ_CODE);
|
|
|
- rosterBaseDTO.setJobNo(serialNum);
|
|
|
// 身份证号唯一验证
|
|
|
if(StringUtils.isNotBlank(rosterBaseDTO.getIdCard())){
|
|
|
List<RosterBase> rosterBaseList = this.list(new QueryWrapper<RosterBase>().eq("id_card", rosterBaseDTO.getIdCard()));
|
|
@@ -255,11 +306,27 @@ public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase>
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ if ("1".equals(rosterBaseDTO.getPersonType())) { // 当前人员是员工时
|
|
|
+ //获取当前登录人信息
|
|
|
+ UserDTO userDTO = UserUtils.getCurrentUserDTO();
|
|
|
+ //工号生成
|
|
|
+ String serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), RosterBaseDTO.BIZ_CODE);
|
|
|
+ if (StringUtils.isNotBlank(rosterBaseDTO.getId())) {
|
|
|
+ RosterBase byId = this.getById(rosterBaseDTO.getId());
|
|
|
+ if (StringUtils.isBlank(byId.getJobNo())) {
|
|
|
+ rosterBaseDTO.setJobNo(serialNum); // 游客转员工,保存时,生成工号
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ rosterBaseDTO.setJobNo(serialNum); // 员工新增生成工号
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
RosterBase rosterBase = RosterBaseWrapper.INSTANCE.toEntity(rosterBaseDTO);
|
|
|
|
|
|
+
|
|
|
+
|
|
|
// 新增或修改花名册数据
|
|
|
this.saveOrUpdate(rosterBase);
|
|
|
|
|
@@ -275,6 +342,8 @@ public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase>
|
|
|
rosterContract.setBaseId(rosterBase.getId());
|
|
|
rosterContractService.remove(new QueryWrapper<RosterContract>().eq("base_id",rosterBase.getId()));
|
|
|
rosterContractService.saveOrUpdate(rosterContract);
|
|
|
+ } else {
|
|
|
+ rosterContractService.remove(new QueryWrapper<RosterContract>().eq("base_id",rosterBase.getId()));
|
|
|
}
|
|
|
//保存银行卡信息
|
|
|
if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterBankCardsDTOList())){
|
|
@@ -614,4 +683,80 @@ public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase>
|
|
|
});
|
|
|
return ResponseEntity.ok ("删除花名册成功");
|
|
|
}
|
|
|
+
|
|
|
+ public RosterBaseDTO deleteRosterWorker (RosterBaseDTO rosterBaseDTO) {
|
|
|
+// 删除原数据关联表的数据
|
|
|
+ rosterBaseDTO.setRosterContractDTO(null); // 删除合同信息
|
|
|
+ rosterBaseDTO.setRosterBankCardsDTOList(null); // 删除银行卡信息
|
|
|
+ rosterBaseDTO.setRosterEducateDTOList(null); // 删除教育经历
|
|
|
+ rosterBaseDTO.setRosterWorkDTOList(null); // 删除工作经历
|
|
|
+ rosterBaseDTO.setRosterFamilyDTOList(null); // 删除家庭成员
|
|
|
+ rosterBaseDTO.setRosterCertificateDTOList(null); // 删除员工证书
|
|
|
+ rosterBaseDTO.setRosterLeadershipDTO(null); // 删除直属领导
|
|
|
+ rosterBaseDTO.setCertDTOList(null); // 关联用户的资质
|
|
|
+ rosterBaseDTO.setRoleIdList(null); // 关联用户的角色
|
|
|
+ rosterBaseDTO.setPostIdList(null); // 关联用户的岗位
|
|
|
+ rosterBaseDTO.setManageOfficeIds(null); // 关联用户的管理部门
|
|
|
+ // 与游客无关字段置空
|
|
|
+ rosterBaseDTO.setOfficeId("");
|
|
|
+ rosterBaseDTO.setJobPositionId("");
|
|
|
+ rosterBaseDTO.setPositionId("");
|
|
|
+ rosterBaseDTO.setRankId("");
|
|
|
+ rosterBaseDTO.setJobNo("");
|
|
|
+ rosterBaseDTO.setContractType("");
|
|
|
+ rosterBaseDTO.setWorkerType("");
|
|
|
+ rosterBaseDTO.setOnboardingDate(null);
|
|
|
+ rosterBaseDTO.setSeniority("");
|
|
|
+ rosterBaseDTO.setContractCompany("");
|
|
|
+ rosterBaseDTO.setBirthDate(null);
|
|
|
+ rosterBaseDTO.setWorkPlace("");
|
|
|
+ rosterBaseDTO.setContactAddress("");
|
|
|
+ rosterBaseDTO.setEmploymentSituation("");
|
|
|
+ rosterBaseDTO.setWorkingHour("");
|
|
|
+ rosterBaseDTO.setAccountType("");
|
|
|
+ rosterBaseDTO.setAccountAddr("");
|
|
|
+ rosterBaseDTO.setOrigin("");
|
|
|
+ rosterBaseDTO.setLiveAddr("");
|
|
|
+ rosterBaseDTO.setHighestEducation("");
|
|
|
+ rosterBaseDTO.setPoliticalFace("");
|
|
|
+ rosterBaseDTO.setMaritalStatus("");
|
|
|
+ rosterBaseDTO.setEmergencyContactName("");
|
|
|
+ rosterBaseDTO.setEmergencyContactTel("");
|
|
|
+ rosterBaseDTO.setSpouseName("");
|
|
|
+ rosterBaseDTO.setChildName("");
|
|
|
+ rosterBaseDTO.setHeadshot("");
|
|
|
+ // 表删除无关字段
|
|
|
+ UpdateWrapper<RosterBase> wrapper = new UpdateWrapper<>();
|
|
|
+ wrapper.lambda()
|
|
|
+ .set(RosterBase::getOfficeId,null)
|
|
|
+ .set(RosterBase::getJobPositionId,null)
|
|
|
+ .set(RosterBase::getPositionId,null)
|
|
|
+ .set(RosterBase::getRankId,null)
|
|
|
+ .set(RosterBase::getJobNo,null)
|
|
|
+ .set(RosterBase::getContractType,null)
|
|
|
+ .set(RosterBase::getWorkerType,null)
|
|
|
+ .set(RosterBase::getOnboardingDate,null)
|
|
|
+ .set(RosterBase::getSeniority,null)
|
|
|
+ .set(RosterBase::getContractCompany,null)
|
|
|
+ .set(RosterBase::getBirthDate,null)
|
|
|
+ .set(RosterBase::getWorkPlace,null)
|
|
|
+ .set(RosterBase::getContactAddress,null)
|
|
|
+ .set(RosterBase::getEmploymentSituation,null)
|
|
|
+ .set(RosterBase::getWorkingHour,null)
|
|
|
+ .set(RosterBase::getAccountType,null)
|
|
|
+ .set(RosterBase::getAccountAddr,null)
|
|
|
+ .set(RosterBase::getOrigin,null)
|
|
|
+ .set(RosterBase::getLiveAddr,null)
|
|
|
+ .set(RosterBase::getHighestEducation,null)
|
|
|
+ .set(RosterBase::getPoliticalFace,null)
|
|
|
+ .set(RosterBase::getMaritalStatus,null)
|
|
|
+ .set(RosterBase::getEmergencyContactName,null)
|
|
|
+ .set(RosterBase::getEmergencyContactTel,null)
|
|
|
+ .set(RosterBase::getSpouseName,null)
|
|
|
+ .set(RosterBase::getChildName,null)
|
|
|
+ .set(RosterBase::getHeadshot,null)
|
|
|
+ .eq(RosterBase::getId,rosterBaseDTO.getId());
|
|
|
+ this.update(wrapper);
|
|
|
+ return rosterBaseDTO;
|
|
|
+ }
|
|
|
}
|