package com.gs.xky.service.Impl;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.gs.xky.dto.EmployeeInfo;
|
import com.gs.xky.entity.MesStaff;
|
import com.gs.xky.entity.SysUser;
|
import com.gs.xky.mapper.MesStaffMapper;
|
import com.gs.xky.service.MesStaffService;
|
import com.gs.xky.service.SysUserService;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* @author 28567
|
* @description 针对表【MES_STAFF(员工信息表)】的数据库操作Service实现
|
* @createDate 2025-02-17 20:59:36
|
*/
|
@Service
|
@RequiredArgsConstructor
|
@Transactional(rollbackFor = Exception.class)
|
public class MesStaffServiceImpl extends ServiceImpl<MesStaffMapper, MesStaff> implements MesStaffService {
|
|
private final SysUserService sysUserService;
|
|
private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
@Override
|
public boolean SaveStaff(List<EmployeeInfo> employeeInfos) {
|
|
List<SysUser> sysUsers = new ArrayList<>();
|
List<MesStaff> mesStaffs = new ArrayList<>();
|
|
for (EmployeeInfo employeeInfo : employeeInfos) {
|
MesStaff mesStaff = getMesStaff(employeeInfo);
|
SysUser user = getUser(employeeInfo, mesStaff.getId());
|
sysUsers.add(user);
|
mesStaffs.add(mesStaff);
|
}
|
|
// 批量插入或更新
|
return batchInsert(sysUsers, mesStaffs);
|
}
|
|
private MesStaff getMesStaff(EmployeeInfo employeeInfo) {
|
MesStaff mesStaff = new MesStaff();
|
|
LambdaQueryWrapper<MesStaff> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(MesStaff::getRemark4, employeeInfo.getPersonId());
|
|
MesStaff one = getOne(wrapper, false);
|
|
if (one != null) {
|
mesStaff.setId(one.getId());
|
}
|
|
mesStaff.setStaffNo(employeeInfo.getEmployeeId());
|
mesStaff.setStaffName(employeeInfo.getTrueName());
|
mesStaff.setPositionCode(employeeInfo.getNames());
|
|
mesStaff.setKeyPosts("否");
|
|
if (employeeInfo.getIsCore() != null && employeeInfo.getIsCore() == 1) {
|
mesStaff.setKeyPosts("是");
|
}
|
|
// 处理日期字段
|
|
try {
|
if (StrUtil.isNotEmpty(employeeInfo.getAttendOnDate())) {
|
Date startDate = sdf.parse(employeeInfo.getAttendOnDate());
|
mesStaff.setStartDate(startDate);
|
}
|
if (StrUtil.isNotEmpty(employeeInfo.getDimissionDate())) {
|
Date separationTime = sdf.parse(employeeInfo.getDimissionDate());
|
mesStaff.setSeparationTime(separationTime);
|
}
|
} catch (ParseException e) {
|
throw new RuntimeException("日期格式不正确", e);
|
}
|
|
// 赋值其他信息
|
|
// mesStaff.setFforbidStatus("1");
|
// if ("离职".equals(employeeInfo.getState()) || "退休".equals(employeeInfo.getState())) {
|
// mesStaff.setFforbidStatus("0");
|
// }
|
mesStaff.setFforbidStatus(employeeInfo.getState());
|
mesStaff.setDepartmentName(employeeInfo.getUnitName());
|
mesStaff.setRemark(StrUtil.isNotEmpty(employeeInfo.getLaowugongsi()) ? "派遣工" : "正式工");
|
mesStaff.setRemark3(employeeInfo.getCUnitName());
|
mesStaff.setRemark4(employeeInfo.getPersonId());
|
|
return mesStaff;
|
}
|
|
private SysUser getUser(EmployeeInfo staff, Long id) {
|
SysUser sysUser = new SysUser();
|
|
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(SysUser::getFcode, staff.getEmployeeId()).eq(SysUser::getFname, staff.getTrueName());
|
|
SysUser one = sysUserService.getOne(wrapper, false);
|
if (one == null) {
|
// 映射员工ID
|
sysUser.setSid(id);
|
} else {
|
sysUser.setSid(one.getSid());
|
sysUser.setFid(one.getFid());
|
}
|
|
// 映射员工编号
|
sysUser.setFcode(staff.getEmployeeId());
|
|
// 映射员工姓名
|
sysUser.setFname(staff.getTrueName());
|
|
// 设置初始密码
|
sysUser.setFpassword("8+()./,");
|
|
// 设置权限级别
|
sysUser.setLever(0);
|
|
// 设置公司代码
|
sysUser.setFcompany("1000");
|
|
// 设置工厂代码
|
sysUser.setFfactory("1000");
|
|
// 设置删除标志
|
sysUser.setDelFlag(0L);
|
|
// 设置设备相关标志
|
sysUser.setDev(0);
|
|
// 设置测试相关标志
|
sysUser.setTet(0);
|
|
// 设置生产相关标志
|
sysUser.setPrd(1);
|
|
// 设置管理标志
|
sysUser.setIsmanager(0);
|
|
// 设置收购标志
|
sysUser.setIsacq(0);
|
|
// 设置扩展字段
|
sysUser.setExpField9("1020");
|
|
// 设置质量检测用户标志
|
sysUser.setQmUser(0);
|
|
// 设置用户状态
|
sysUser.setStatus(0);
|
|
// 设置离职标志
|
sysUser.setIsdeparture(0);
|
|
// 设置检查标志
|
sysUser.setCheckFlag(0L);
|
|
// 设置扩展字段12
|
sysUser.setExpFiel12(0L);
|
|
// 设置首次登录标志
|
sysUser.setFirstLogin(0);
|
|
// 设置创建日期
|
sysUser.setCreateDate(new Date());
|
|
// 设置密码修改时间
|
sysUser.setPswEditTime(new Date());
|
|
return sysUser;
|
}
|
|
private boolean batchInsert(List<SysUser> sysUsers, List<MesStaff> mesStaffs) {
|
// 批量检查 SysUser 是否存在
|
List<Long> sysUserSids = sysUsers.stream().map(SysUser::getSid).collect(Collectors.toList());
|
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
|
wrapper.in(SysUser::getSid, sysUserSids);
|
List<SysUser> existingUsers = sysUserService.list(wrapper);
|
|
// 分离需要插入的新用户
|
List<SysUser> newUserList = sysUsers.stream().filter(user -> existingUsers.stream().noneMatch(e -> e.getSid().equals(user.getSid()))).collect(Collectors.toList());
|
|
// 批量插入新用户
|
if (!newUserList.isEmpty()) {
|
sysUserService.saveBatch(newUserList);
|
}
|
|
// 批量删除旧的 MesStaff 记录
|
//baseMapper.deleteStaff();
|
|
// 批量插入新的 MesStaff 记录
|
if (!mesStaffs.isEmpty()) {
|
saveBatch(mesStaffs);
|
}
|
|
//baseMapper.updateStaff();
|
|
return true;
|
}
|
|
@Override
|
public boolean UpdateStaff(List<EmployeeInfo> employeeInfos) {
|
List<SysUser> sysUsers = new ArrayList<>();
|
List<MesStaff> mesStaffs = new ArrayList<>();
|
|
for (EmployeeInfo employeeInfo : employeeInfos) {
|
MesStaff mesStaff = getMesStaff(employeeInfo);
|
SysUser user = getUser(employeeInfo, mesStaff.getId());
|
sysUsers.add(user);
|
mesStaffs.add(mesStaff);
|
}
|
|
// 批量插入或更新
|
boolean b = saveOrUpdateBatch(mesStaffs) && sysUserService.saveOrUpdateBatch(sysUsers);
|
|
baseMapper.updateStaff();
|
|
return b;
|
}
|
}
|