From 20051550f01227ecebbe0bf064e188dd242f58f2 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 21 九月 2026 11:55:02 +0800
Subject: [PATCH] update
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysEmployeeServiceImpl.java | 65 ++++++++++++++++++++++++++++++--
1 files changed, 61 insertions(+), 4 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysEmployeeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysEmployeeServiceImpl.java
index 6e39eea..cf2f15d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysEmployeeServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysEmployeeServiceImpl.java
@@ -5,6 +5,7 @@
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysEmployee;
+import com.ruoyi.system.domain.SysCard;
import com.ruoyi.system.dto.SysEmployeeAddRequest;
import com.ruoyi.system.dto.SysEmployeeDeleteRequest;
import com.ruoyi.system.dto.SysEmployeeDetailRequest;
@@ -14,6 +15,7 @@
import com.ruoyi.system.dto.SysEmployeeUnbindRequest;
import com.ruoyi.system.mapper.SysDeptMapper;
import com.ruoyi.system.mapper.SysEmployeeMapper;
+import com.ruoyi.system.mapper.SysCardMapper;
import com.ruoyi.system.service.ISysEmployeeService;
import com.ruoyi.system.utils.EmployeePhoneCrypto;
import com.ruoyi.system.vo.SysEmployeeVO;
@@ -24,6 +26,7 @@
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.io.InputStream;
@@ -45,6 +48,9 @@
@Autowired
private SysEmployeeMapper employeeMapper;
+
+ @Autowired
+ private SysCardMapper cardMapper;
@Autowired
private SysDeptMapper deptMapper;
@@ -83,6 +89,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public int add(SysEmployeeAddRequest request, String username)
{
if (request == null)
@@ -93,10 +100,13 @@
request.getContactPhone(), request.getPosition(), request.getCardNo(), request.getFaceImage(),
request.getEnabled(), null);
employee.setCreateBy(username);
- return employeeMapper.insertEmployee(employee);
+ int rows = employeeMapper.insertEmployee(employee);
+ syncCard(employee.getEmployeeId(), null, employee.getCardNo(), username);
+ return rows;
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public int edit(SysEmployeeEditRequest request, String username)
{
if (request == null)
@@ -108,12 +118,15 @@
{
throw new ServiceException("员工不存在");
}
+ SysEmployee oldEmployee = employeeMapper.selectById(employeeId);
SysEmployee employee = buildEmployee(request.getDeptId(), request.getEmployeeName(), request.getEmployeeNo(),
request.getContactPhone(), request.getPosition(), request.getCardNo(), request.getFaceImage(),
request.getEnabled(), employeeId);
employee.setEmployeeId(employeeId);
employee.setUpdateBy(username);
- return employeeMapper.updateEmployee(employee);
+ int rows = employeeMapper.updateEmployee(employee);
+ syncCard(employeeId, oldEmployee.getCardNo(), employee.getCardNo(), username);
+ return rows;
}
@Override
@@ -128,9 +141,16 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public int unbindCard(SysEmployeeUnbindRequest request, String username)
{
- return employeeMapper.clearCard(getRequiredEmployeeIds(request == null ? null : request.getEmployeeIds()), username);
+ List<Long> employeeIds = getRequiredEmployeeIds(request == null ? null : request.getEmployeeIds());
+ int rows = employeeMapper.clearCard(employeeIds, username);
+ for (Long employeeId : employeeIds)
+ {
+ cardMapper.unbindByEmployeeId(employeeId, username);
+ }
+ return rows;
}
@Override
@@ -140,9 +160,16 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public int delete(SysEmployeeDeleteRequest request, String username)
{
- return employeeMapper.deleteByIds(getRequiredEmployeeIds(request == null ? null : request.getEmployeeIds()), username);
+ List<Long> employeeIds = getRequiredEmployeeIds(request == null ? null : request.getEmployeeIds());
+ int rows = employeeMapper.deleteByIds(employeeIds, username);
+ for (Long employeeId : employeeIds)
+ {
+ cardMapper.unbindByEmployeeId(employeeId, username);
+ }
+ return rows;
}
@Override
@@ -369,6 +396,36 @@
return StringUtils.trim(value);
}
+ /**
+ * 员工模块直接维护卡号时同步卡片关系,保证两个管理入口的数据一致。
+ */
+ private void syncCard(Long employeeId, String oldCardNo, String newCardNo, String username)
+ {
+ if (oldCardNo != null && !oldCardNo.equals(newCardNo))
+ {
+ cardMapper.unbindByEmployeeId(employeeId, username);
+ }
+ if (newCardNo == null || newCardNo.length() == 0)
+ {
+ return;
+ }
+ SysCard card = cardMapper.selectByCardNo(newCardNo);
+ if (card == null)
+ {
+ card = new SysCard();
+ card.setCardNo(newCardNo);
+ card.setEmployeeId(employeeId);
+ card.setCreateBy(username);
+ cardMapper.insertCard(card);
+ return;
+ }
+ if (card.getEmployeeId() != null && !employeeId.equals(card.getEmployeeId()))
+ {
+ throw new ServiceException("卡号已绑定其他员工");
+ }
+ cardMapper.bindCard(card.getCardId(), employeeId, username);
+ }
+
private void fillDisplayFields(SysEmployeeVO employee, boolean fullPhone)
{
String phone = EmployeePhoneCrypto.decrypt(employee.getContactPhone());
--
Gitblit v1.7.1