From 809562f45f703f99f9f75618428cef59a6458799 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 30 三月 2026 17:39:05 +0800
Subject: [PATCH] yys 1.设备导入,人员导入
---
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java | 182 ++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 171 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
index d421345..3613da3 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -6,22 +6,30 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.dto.WordDateDto;
+import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysPost;
+import com.ruoyi.project.system.domain.SysRole;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysDeptMapper;
import com.ruoyi.project.system.mapper.SysPostMapper;
+import com.ruoyi.project.system.mapper.SysRoleMapper;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.project.system.service.impl.SysUserServiceImpl;
import com.ruoyi.staff.dto.StaffOnJobDto;
-import com.ruoyi.staff.mapper.StaffContractMapper;
-import com.ruoyi.staff.mapper.StaffLeaveMapper;
-import com.ruoyi.staff.mapper.StaffOnJobMapper;
-import com.ruoyi.staff.pojo.StaffContract;
-import com.ruoyi.staff.pojo.StaffLeave;
-import com.ruoyi.staff.pojo.StaffOnJob;
+import com.ruoyi.staff.dto.StaffOnJobExcelDto;
+import com.ruoyi.staff.mapper.*;
+import com.ruoyi.staff.pojo.*;
import com.ruoyi.staff.service.IStaffOnJobService;
import freemarker.template.Configuration;
import freemarker.template.Template;
import lombok.AllArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.ListUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -35,6 +43,7 @@
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
+import java.util.stream.Collectors;
@AllArgsConstructor
@Service
@@ -42,6 +51,13 @@
@Autowired
private StaffOnJobMapper staffOnJobMapper;
+
+ @Autowired
+ private SysDeptMapper sysDeptMapper;
+
+ @Autowired
+ private SysRoleMapper sysRoleMapper;
+
@Autowired
private SysPostMapper sysPostMapper;
@@ -49,6 +65,33 @@
private StaffContractMapper staffContractMapper;
@Autowired
private StaffLeaveMapper staffLeaveMapper;
+
+ @Autowired
+ private PersonalAttendanceRecordsMapper personalAttendanceRecordsMapper;
+
+ @Autowired
+ private SysUserServiceImpl sysUserService;
+
+ @Autowired
+ private SysUserMapper sysUserMapper;
+
+ @Autowired
+ private StaffEducationServiceImpl staffEducationService;
+
+ @Autowired
+ private StaffEducationMapper staffEducationMapper;
+
+ @Autowired
+ private StaffWorkExperienceMapper staffWorkExperienceMapper;
+
+ @Autowired
+ private StaffWorkExperienceServiceImpl staffWorkExperienceServiceImpl;
+
+ @Autowired
+ private StaffEmergencyContactMapper staffEmergencyContactMapper;
+
+ @Autowired
+ private StaffEmergencyContactServiceImpl staffEmergencyContactServiceImpl;
//鍦ㄨ亴鍛樺伐鍙拌处鍒嗛〉鏌ヨ
@@ -64,14 +107,33 @@
String[] ignoreProperties = {"id"};//鎺掗櫎id灞炴��
// 鍒ゆ柇缂栧彿鏄惁瀛樺湪
List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffOnJobPrams.getStaffNo()));
- if (staffOnJobs.size()>0){
+ if (staffOnJobs != null && !staffOnJobs.isEmpty()){
throw new BaseException("缂栧彿涓�"+staffOnJobPrams.getStaffNo()+"鐨勫憳宸ュ凡缁忓瓨鍦�,鏃犳硶鏂板!!!");
}
+
// 鍒涘缓鍏ヨ亴鏁版嵁
staffOnJobPrams.setContractExpireTime(staffOnJobPrams.getContractEndTime());
staffOnJobPrams.setStaffState(1);
staffOnJobMapper.insert(staffOnJobPrams);
-
+ // 鏌ヨ鐢ㄦ埛鏄惁宸茬粡鏂板
+ SysUser sysUser = sysUserService.selectUserById(staffOnJobPrams.getId());
+ if(sysUser == null){
+ SysUser sysUser1 = new SysUser();
+ sysUser1.setUserName(staffOnJobPrams.getStaffNo());
+ sysUser1.setNickName(staffOnJobPrams.getStaffName());
+ String s = SecurityUtils.encryptPassword("123456");
+ sysUser1.setPassword(s);
+ if(staffOnJobPrams.getSysPostId() != null){
+ Long[] posts = new Long[]{staffOnJobPrams.getSysPostId().longValue()};
+ sysUser1.setPostIds(posts);
+ }
+ sysUser1.setRoleIds(new Long[]{staffOnJobPrams.getRoleId()});
+ sysUser1.setDeptIds(new Long[]{staffOnJobPrams.getSysDeptId()});
+ sysUser1.setStatus("0");
+ sysUserService.insertUser(sysUser1);
+ }
+ // 缁戝畾瀛愯〃鏁版嵁
+ bingingStaffOnJobExtra(staffOnJobPrams.getId(),staffOnJobPrams);
// 鍒涘缓鍚堝悓璁板綍
StaffContract staffContract = new StaffContract();
staffContract.setStaffOnJobId(staffOnJobPrams.getId());
@@ -103,19 +165,83 @@
staffContractMapper.updateById(contract);
}
+ // 鍒犻櫎鎵�鏈夊瓙琛ㄦ暟鎹�
+ delStaffOnJobExtra(Arrays.asList(id));
+ // 缁戝畾瀛愯〃鏁版嵁
+ bingingStaffOnJobExtra(id,staffOnJobParams);
// 鏇存柊鍛樺伐鏁版嵁
staffOnJobParams.setContractExpireTime(staffOnJobParams.getContractEndTime());
return staffOnJobMapper.updateById(staffOnJobParams);
+ }
+
+ /**
+ * 缁戝畾鍛樺伐瀛愯〃鏁版嵁
+ * @param staffOnJobPrams
+ * @param id
+ */
+ public void bingingStaffOnJobExtra(Long id,StaffOnJob staffOnJobPrams) {
+ // 鏂板鏁欒偛缁忓巻
+ if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffEducationList())){
+ staffOnJobPrams.getStaffEducationList().stream()
+ .filter(Objects::nonNull) // 杩囨护null瀵硅薄锛岄伩鍏嶇┖鎸囬拡
+ .forEach(staff -> staff.setStaffOnJobId(id)); // 璧嬪��
+ staffEducationService.saveBatch(staffOnJobPrams.getStaffEducationList());
+ }
+ // 鏂板宸ヤ綔缁忓巻
+ if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffWorkExperienceList())){
+ staffOnJobPrams.getStaffWorkExperienceList().stream()
+ .filter(Objects::nonNull) // 杩囨护null瀵硅薄锛岄伩鍏嶇┖鎸囬拡
+ .forEach(staff -> staff.setStaffOnJobId(id)); // 璧嬪��
+ staffWorkExperienceServiceImpl.saveBatch(staffOnJobPrams.getStaffWorkExperienceList());
+ }
+ // 鏂板绱ф�ヨ仈绯讳汉
+ if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffEmergencyContactList())){
+ staffOnJobPrams.getStaffEmergencyContactList().stream()
+ .filter(Objects::nonNull) // 杩囨护null瀵硅薄锛岄伩鍏嶇┖鎸囬拡
+ .forEach(staff -> staff.setStaffOnJobId(id)); // 璧嬪��
+ staffEmergencyContactServiceImpl.saveBatch(staffOnJobPrams.getStaffEmergencyContactList());
+ }
+ }
+
+
+ /**
+ * 閫氳繃鍛樺伐id鍒犻櫎鏁欒偛缁忓巻锛屽伐浣滅粡鍘嗭紝绱ф�ヨ仈绯讳汉
+ * @param ids
+ * @return
+ */
+ public void delStaffOnJobExtra(List<Long> ids) {
+ // 鍒犻櫎鏁欒偛缁忓巻
+ staffEducationService.remove(Wrappers.<StaffEducation>lambdaQuery().in(StaffEducation::getStaffOnJobId,ids));
+ // 鍒犻櫎宸ヤ綔缁忓巻
+ staffWorkExperienceServiceImpl.remove(Wrappers.<StaffWorkExperience>lambdaQuery().in(StaffWorkExperience::getStaffOnJobId,ids));
+ // 鍒犻櫎绱ф�ヨ仈绯讳汉
+ staffEmergencyContactServiceImpl.remove(Wrappers.<StaffEmergencyContact>lambdaQuery().in(StaffEmergencyContact::getStaffOnJobId,ids));
}
//鍒犻櫎鍏ヨ亴
@Override
@Transactional(rollbackFor = Exception.class)
public int delStaffOnJobs(List<Integer> ids) {
+ List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().in(StaffOnJob::getId, ids));
+ if(CollectionUtils.isEmpty(staffOnJobs)){
+ throw new BaseException("璇ュ憳宸ヤ笉瀛樺湪,鏃犳硶鍒犻櫎!!!");
+ }
// 鍒犻櫎鍏ヨ亴鏁版嵁
staffOnJobMapper.deleteBatchIds(ids);
// 鍒犻櫎绂昏亴鏁版嵁
staffLeaveMapper.delete(Wrappers.<StaffLeave>lambdaQuery().in(StaffLeave::getStaffOnJobId, ids));
+ // 鍒犻櫎鎵撳崱璁板綍
+ personalAttendanceRecordsMapper.delete(Wrappers.<PersonalAttendanceRecords>lambdaQuery().in(PersonalAttendanceRecords::getStaffOnJobId, ids));
+ // 鍒犻櫎鐢ㄦ埛鏁版嵁
+ List<SysUser> sysUsers = sysUserMapper.selectList(Wrappers.<SysUser>lambdaQuery()
+ .in(SysUser::getUserName, staffOnJobs.stream().map(StaffOnJob::getStaffNo).collect(Collectors.toList())));
+ if(CollectionUtils.isNotEmpty(sysUsers)){
+ Long[] longs = sysUsers.stream().map(SysUser::getUserId).toArray(Long[]::new);
+ sysUserService.deleteUserByIds(longs);
+ }
+ // 鍒犻櫎瀛愯〃鏁版嵁
+ delStaffOnJobExtra(ids.stream().map(Integer::longValue).collect(Collectors.toList()));
+
// 鍒犻櫎鍚堝悓鏁版嵁
return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids));
}
@@ -172,6 +298,13 @@
staffOnJobDto.setContractStartTime(contract.getContractStartTime());
staffOnJobDto.setContractEndTime(contract.getContractEndTime());
}
+ // 鑾峰彇瀛愯〃鏁版嵁
+ staffOnJobDto.setStaffEducationList(staffEducationMapper.selectList(Wrappers.<StaffEducation>lambdaQuery()
+ .eq(StaffEducation::getStaffOnJobId, staffOnJob.getId())));
+ staffOnJobDto.setStaffWorkExperienceList(staffWorkExperienceMapper.selectList(Wrappers.<StaffWorkExperience>lambdaQuery()
+ .eq(StaffWorkExperience::getStaffOnJobId, staffOnJob.getId())));
+ staffOnJobDto.setStaffEmergencyContactList(staffEmergencyContactMapper.selectList(Wrappers.<StaffEmergencyContact>lambdaQuery()
+ .eq(StaffEmergencyContact::getStaffOnJobId, staffOnJob.getId())));
return staffOnJobDto;
}
@@ -189,11 +322,38 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public Boolean importData(MultipartFile file) {
try {
- ExcelUtil<StaffOnJob> util = new ExcelUtil<>(StaffOnJob.class);
- List<StaffOnJob> staffOnJobs = util.importExcel(file.getInputStream());
- return saveOrUpdateBatch(staffOnJobs);
+ ExcelUtil<StaffOnJobExcelDto> util = new ExcelUtil<>(StaffOnJobExcelDto.class);
+ List<StaffOnJobExcelDto> staffOnJobs = util.importExcel(file.getInputStream());
+ if (CollectionUtils.isEmpty(staffOnJobs)){
+ return false;
+ }
+ // 鑾峰彇鎵�鏈夐儴闂ㄦ暟鎹�
+ List<SysDept> sysDepts = sysDeptMapper.selectList(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getDelFlag, 0));
+ // 鑾峰彇鎵�鏈夎鑹叉暟鎹�
+ List<SysRole> sysRoles = sysRoleMapper.selectRoleAll();
+ staffOnJobs.forEach(staffOnJob -> {
+ StaffOnJobDto staffOnJobDto = new StaffOnJobDto();
+ BeanUtils.copyProperties(staffOnJob, staffOnJobDto);
+ // 閫氳繃鍚嶇О鑾峰彇閮ㄩ棬id
+ staffOnJobDto.setSysDeptId(// ... existing code ...
+ sysDepts.stream()
+ .filter(dept -> dept.getDeptName() != null && dept.getDeptName().equals(staffOnJob.getSysDeptName()))
+ .findFirst()
+ .map(SysDept::getDeptId)
+ .orElse(null)
+ );
+ // 閫氳繃鍚嶇О鑾峰彇瑙掕壊id
+ staffOnJobDto.setRoleId(sysRoles.stream()
+ .filter(role -> role.getRoleName() != null && role.getRoleName().equals(staffOnJob.getRoleName()))
+ .findFirst()
+ .map(SysRole::getRoleId)
+ .orElse( null));
+ add(staffOnJobDto);
+ });
+ return true;
} catch (Exception e) {
e.printStackTrace();
return false;
--
Gitblit v1.9.3