febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/Position.java
@@ -1,20 +1,14 @@ package cc.mrbird.febs.common.core.entity.system; import java.io.Serializable; import java.util.Date; import cc.mrbird.febs.common.core.annotation.FieldInfo; import cc.mrbird.febs.common.core.utils.DateDeSerializer; import cc.mrbird.febs.common.core.utils.DateSerializer; import cc.mrbird.febs.common.core.utils.DateTimeDeserializer; import cc.mrbird.febs.common.core.utils.DateTimeSerializer; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import lombok.Data; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.Version; import org.springframework.format.annotation.DateTimeFormat; import lombok.Data; import java.io.Serializable; import java.util.Date; /** * @@ -48,9 +42,6 @@ @FieldInfo(name = "createTime",type = "datetime",explain = "记录创建时间") @TableField("createTime") @JsonSerialize(using = DateTimeSerializer.class) @JsonDeserialize(using = DateTimeDeserializer.class) @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date createTime; @FieldInfo(name = "creator",type = "varchar",explain = "记录创建人") @@ -59,9 +50,6 @@ @FieldInfo(name = "modifyTime",type = "datetime",explain = "记录最后更新时间") @TableField("modifyTime") @JsonSerialize(using = DateTimeSerializer.class) @JsonDeserialize(using = DateTimeDeserializer.class) @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date modifyTime; @FieldInfo(name = "modifier",type = "varchar",explain = "记录最后更新人") febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java
@@ -227,10 +227,12 @@ empBadRecordService.importEmpBadRecord(listObject.get(12),returnList); empRemarkinfoService.importEmpRemarkInfo(listObject.get(13),returnList); } } catch (Exception e) { }catch (IndexOutOfBoundsException e){ log.error("导入员工,下表越界", e); }catch (Exception e) { log.error("导入员工", e); } return new FebsResponse().data(returnList); return new FebsResponse().data(returnList); } @ApiOperation(value = "关闭员工档案") febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemoteDeptService.java
@@ -1,15 +1,10 @@ package cc.mrbird.febs.server.hr.feign; import cc.mrbird.febs.common.core.entity.FebsResponse; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.common.core.entity.constant.FebsServerConstant; import cc.mrbird.febs.common.core.entity.system.Dept; import cc.mrbird.febs.common.core.entity.system.SystemUser; import cc.mrbird.febs.server.hr.feign.fallback.RemoteDeptServiceFallback; import cc.mrbird.febs.server.hr.feign.fallback.RemoteUserServiceFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -30,7 +25,7 @@ @GetMapping("dept") List<Dept> selectAllDept(Dept dept); @GetMapping("dept/userRightDepts") String userRightDepts(); } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemoteDicItemService.java
@@ -1,10 +1,7 @@ package cc.mrbird.febs.server.hr.feign; import cc.mrbird.febs.common.core.entity.FebsResponse; import cc.mrbird.febs.common.core.entity.constant.FebsServerConstant; import cc.mrbird.febs.common.core.entity.system.Dept; import cc.mrbird.febs.common.core.entity.system.DicItem; import cc.mrbird.febs.server.hr.feign.fallback.RemoteDeptServiceFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemotePositionService.java
New file @@ -0,0 +1,20 @@ package cc.mrbird.febs.server.hr.feign; import cc.mrbird.febs.common.core.entity.constant.FebsServerConstant; import cc.mrbird.febs.common.core.entity.system.Position; import cc.mrbird.febs.server.hr.feign.fallback.RemotePositionServiceFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import java.util.List; /** * @author MrBird */ @FeignClient(value = FebsServerConstant.FEBS_SERVER_SYSTEM, contextId = "positionServiceClient", fallbackFactory = RemotePositionServiceFallback.class) public interface IRemotePositionService { @GetMapping("position/setPositionRedis") List<Position> setPositionRedis(); } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/fallback/RemotePositionServiceFallback.java
New file @@ -0,0 +1,22 @@ package cc.mrbird.febs.server.hr.feign.fallback; import cc.mrbird.febs.common.core.annotation.Fallback; import cc.mrbird.febs.server.hr.feign.IRemotePositionService; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; /** * @author MrBird */ @Slf4j @Fallback public class RemotePositionServiceFallback implements FallbackFactory<IRemotePositionService> { @Override public IRemotePositionService create(Throwable throwable) { return () -> { log.error("feign获取岗位异常",throwable); return null; }; } } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java
@@ -1,11 +1,15 @@ package cc.mrbird.febs.server.hr.service.impl; import cc.mrbird.febs.common.core.constant.ModuleCode; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.common.core.entity.constant.StringConstant; import cc.mrbird.febs.common.core.exception.FebsException; import cc.mrbird.febs.common.core.utils.FebsUtil; import cc.mrbird.febs.common.core.utils.MyUtil; import cc.mrbird.febs.common.core.utils.SequenceUtil; import cc.mrbird.febs.server.hr.entity.*; import cc.mrbird.febs.server.hr.entity.EmpAccessory; import cc.mrbird.febs.server.hr.entity.EmpBaseInfo; import cc.mrbird.febs.server.hr.entity.Label; import cc.mrbird.febs.server.hr.feign.IRemoteDeptService; import cc.mrbird.febs.server.hr.mapper.EmpAccessoryMapper; import cc.mrbird.febs.server.hr.properties.FebsServerHrProperties; @@ -13,36 +17,30 @@ import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService; import cc.mrbird.febs.server.hr.service.ILabelService; import cc.mrbird.febs.server.hr.vo.EmpAccessoryVO; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Dict; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ZipUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.aspectj.weaver.ast.Or; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Propagation; import lombok.RequiredArgsConstructor; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.common.core.entity.constant.StringConstant; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.*; import java.util.logging.Logger; /** * 附件管理 Service实现 @@ -154,7 +152,7 @@ } queryWrapper.in("c.dept_Id", remoteDeptService.userRightDepts().split(StringConstant.COMMA)); queryWrapper.orderByAsc("a.deptName,a.empName,a.certificateNumb"); queryWrapper.orderByAsc("a.deptName,a.empName"); Page<EmpAccessory> page = new Page<>(request.getPageNum(), request.getPageSize()); // String querySql = empAccessoryMapper.getQuerySql(); //List<Label> labelList = labelService.findLabels(new Label()); @@ -329,7 +327,11 @@ File[] childlist = FileUtil.ls(fileids+"/"+file.getName()); for (File file1 : childlist) { EmpAccessory accessory = new EmpAccessory(); if (file1.getName().indexOf("体检")>=0){ if (file1.getName().indexOf("外皮")>=0){ accessory.setLabelid(142445285230593L); }else if (file1.getName().indexOf("心电图")>=0){ accessory.setLabelid(142445218121729L); }else if (file1.getName().indexOf("体检")>=0){ accessory.setLabelid(142445218121729L); }else if (file1.getName().indexOf("合同")>=0){ accessory.setLabelid(142445285230593L); febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
@@ -1,53 +1,48 @@ package cc.mrbird.febs.server.hr.service.impl; import java.io.*; import java.util.*; import java.util.function.Consumer; import java.util.stream.Collectors; import cc.mrbird.febs.common.core.constant.DicCode; import cc.mrbird.febs.common.core.constant.ModuleCode; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.common.core.entity.constant.FebsConstant; import cc.mrbird.febs.common.core.entity.constant.StringConstant; import cc.mrbird.febs.common.core.entity.system.Dept; import cc.mrbird.febs.common.core.entity.system.DicItem; import cc.mrbird.febs.common.core.entity.system.Position; import cc.mrbird.febs.common.core.entity.system.SysConfig; import cc.mrbird.febs.common.core.exception.FebsException; import cc.mrbird.febs.common.core.utils.*; import cc.mrbird.febs.server.hr.entity.EmpDimissionLog; import cc.mrbird.febs.server.hr.entity.EmpJobChange; import cc.mrbird.febs.common.redis.service.RedisService; import cc.mrbird.febs.server.hr.entity.*; import cc.mrbird.febs.server.hr.feign.IRemoteDeptService; import cc.mrbird.febs.server.hr.feign.IRemoteDicItemService; import cc.mrbird.febs.server.hr.feign.IRemotePositionService; import cc.mrbird.febs.server.hr.feign.IRemoteUserService; import cc.mrbird.febs.server.hr.mapper.*; import cc.mrbird.febs.server.hr.properties.FebsServerHrProperties; import cc.mrbird.febs.server.hr.service.*; import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService; import cc.mrbird.febs.server.hr.service.IEmpDimissionLogService; import cc.mrbird.febs.server.hr.service.IEmpJobChangeService; import cc.mrbird.febs.server.hr.util.PoiExportExcel; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cc.mrbird.febs.server.hr.entity.*; import cn.hutool.core.util.StrUtil; import io.prometheus.client.Collector; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cc.mrbird.febs.common.core.constant.DicCode; import cc.mrbird.febs.common.core.constant.ModuleCode; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.common.core.entity.system.Dept; import cc.mrbird.febs.common.core.entity.system.DicItem; import cc.mrbird.febs.common.redis.service.RedisService; import cc.mrbird.febs.server.hr.entity.EmpBaseInfo; import cc.mrbird.febs.server.hr.feign.IRemoteDeptService; import lombok.RequiredArgsConstructor; import org.springframework.util.FileSystemUtils; import org.springframework.validation.annotation.Validated; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.*; import java.util.function.Consumer; import java.util.stream.Collectors; /** * name:EmpBaseinfo @@ -83,7 +78,7 @@ private final EmpRemarkInfoMapper empRemarkInfoMapper; private final IRemoteDicItemService remoteDicItemService; private final EmpOccupationalMapper empOccupationalMapper; private final IRemotePositionService remotePositionService; @Override public IPage<EmpBaseInfo> findEmpBaseInfos(QueryRequest request, EmpBaseInfo empBaseInfo) { @@ -428,53 +423,78 @@ returnList.add(StrUtil.format("导入员工基本信息异常: 出现位置第{}行, 原因:{}部门不存在", listObject.indexOf(list) + 1, list.get(2).toString())); continue; } empBaseInfo.setEmpName(list.get(3).toString()); empBaseInfo.setDeptId(dept.getDeptId()); empBaseInfo.setJobName(list.get(4).toString()); empBaseInfo.setEmpType(list.get(5).toString()); empBaseInfo.setSex("男".equals(list.get(6).toString()) ? "1" : "2"); empBaseInfo.setNation(list.get(7).toString()); empBaseInfo.setCertificateNumb(list.get(8).toString()); //婚姻状况 DicItem dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"marriage")&&StrUtil.equals(j.getDicItemName(),list.get(9).toString())).findFirst().orElse(null); empBaseInfo.setAllDeptName(dept.getAllDeptName()); empBaseInfo.setDeptId(dept.getDeptId()); List<Position> positionList = CastUtil.castList(redisService.get("position"), Position.class); if (null==positionList){ positionList = remotePositionService.setPositionRedis(); if (null==positionList){ returnList.add(StrUtil.format("导入员工基本信息异常: 出现位置第{}行, 原因:{}获取岗位为空,请设置岗位", listObject.indexOf(list) + 1, list.get(3).toString())); continue; } } Position position = positionList.stream().filter(d -> d.getPositionName().equals(list.get(3).toString())).findFirst().orElse(null); if (null == position){ returnList.add(StrUtil.format("导入员工基本信息异常: 出现位置第{}行, 原因:{}获取岗位为空", listObject.indexOf(list) + 1, list.get(3).toString())); continue; } empBaseInfo.setJobId(position.getPositionId()); empBaseInfo.setJobName(list.get(3).toString()); empBaseInfo.setEmpName(list.get(4).toString()); empBaseInfo.setCertificateNumb(list.get(5).toString()); empBaseInfo.setSex("男".equals(list.get(6).toString()) ? "1" : "2"); //民族 DicItem dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"nation")&&StrUtil.equals(j.getDicItemName(),list.get(7).toString())).findFirst().orElse(null); if (null!=dicItem){ empBaseInfo.setNation(dicItem.getDicItemCode()); } //婚姻状况 dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"marriage")&&StrUtil.equals(j.getDicItemName(),list.get(8).toString())).findFirst().orElse(null); if (null!=dicItem){ empBaseInfo.setMarriage(dicItem.getDicItemCode()); } if (StringUtils.isNotBlank(list.get(10).toString())) { empBaseInfo.setStature(Integer.valueOf(list.get(10).toString())); if (StringUtils.isNotBlank(list.get(9).toString())) { empBaseInfo.setStature(Integer.valueOf(list.get(9).toString())); } //政治面貌 dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"politics")&&StrUtil.equals(j.getDicItemName(),list.get(11).toString())).findFirst().orElse(null); dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(), "plitical")&&StrUtil.equals(j.getDicItemName(),list.get(10).toString())).findFirst().orElse(null); if (null!=dicItem){ empBaseInfo.setPolitics(dicItem.getDicItemCode()); } if (StringUtils.isNotBlank(list.get(12).toString())) { empBaseInfo.setEntryDate(DateUtil.parseDate(list.get(12).toString())); if (StringUtils.isNotBlank(list.get(11).toString())) { empBaseInfo.setEntryDate(DateUtil.parseDate(list.get(11).toString())); } //最高学历 dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"education")&&StrUtil.equals(j.getDicItemName(),list.get(13).toString())).findFirst().orElse(null); dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"education")&&StrUtil.equals(j.getDicItemName(),list.get(12).toString())).findFirst().orElse(null); if (null!=dicItem){ empBaseInfo.setEducation(dicItem.getDicItemCode()); } if (StringUtils.isNotBlank(list.get(14).toString())) { empBaseInfo.setSeniority(Integer.valueOf(list.get(14).toString())); if (StringUtils.isNotBlank(list.get(13).toString())) { empBaseInfo.setSeniority(Integer.valueOf(list.get(13).toString())); } //籍贯 dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"nativePlace")&&StrUtil.equals(j.getDicItemName(),list.get(15).toString())).findFirst().orElse(null); dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"nativePlace")&&StrUtil.equals(j.getDicItemName(),list.get(14).toString())).findFirst().orElse(null); if (null!=dicItem){ empBaseInfo.setNativePlace(dicItem.getDicItemCode()); } empBaseInfo.setCensusAddress(list.get(16).toString()); empBaseInfo.setCurrentAddress(list.get(17).toString()); empBaseInfo.setCensusAddress(list.get(15).toString()); empBaseInfo.setCurrentAddress(list.get(16).toString()); dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"empType")&&StrUtil.equals(j.getDicItemName(),list.get(17).toString())).findFirst().orElse(null); if (null!=dicItem){ empBaseInfo.setEmpType(dicItem.getDicItemCode()); } empBaseInfo.setGuardNumb(list.get(18).toString()); empBaseInfo.setReturnReceipt(list.get(19).toString()); empBaseInfo.setTelePhone(list.get(20).toString()); febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/PositionController.java
@@ -8,9 +8,8 @@ import cc.mrbird.febs.server.system.service.IPositionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import lombok.RequiredArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -99,4 +98,9 @@ public FebsResponse selectDicJobs() { return new FebsResponse().data(positionService.selectDicJobs()); } @GetMapping("setPositionRedis") List<Position> setPositionRedis(){ return positionService.setPositionRedis(); } } febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/IPositionService.java
@@ -69,4 +69,6 @@ void logicDelPosition(String ids); List<Map<String, Object>> selectDicJobs(); List<Position> setPositionRedis(); } febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/PositionServiceImpl.java
@@ -2,22 +2,22 @@ import cc.mrbird.febs.common.core.constant.ModuleCode; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.common.core.entity.system.Position; import cc.mrbird.febs.common.core.utils.FebsUtil; import cc.mrbird.febs.common.core.utils.SequenceUtil; import cc.mrbird.febs.common.redis.service.RedisService; import cc.mrbird.febs.server.system.mapper.PositionMapper; import cc.mrbird.febs.server.system.service.IPositionService; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Propagation; import lombok.RequiredArgsConstructor; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.common.core.utils.FebsUtil; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -117,4 +117,15 @@ public List<Map<String, Object>> selectDicJobs() { return positionMapper.selectDicJobs(); } } @Override public List<Position> setPositionRedis() { LambdaQueryWrapper<Position> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Position::getDelFlag, 0); List<Position> position = this.baseMapper.selectList(queryWrapper); redisService.del("position"); redisService.set("position", position,60*60*24L); return position; } }