| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | |
| | | @Autowired |
| | | private SysEmployeeMapper employeeMapper; |
| | | |
| | | @Autowired |
| | | private SysCardMapper cardMapper; |
| | | |
| | | @Autowired |
| | | private SysDeptMapper deptMapper; |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int add(SysEmployeeAddRequest request, String username) |
| | | { |
| | | if (request == null) |
| | |
| | | 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) |
| | |
| | | { |
| | | 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 |
| | |
| | | } |
| | | |
| | | @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 |
| | |
| | | } |
| | | |
| | | @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 |
| | |
| | | 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()); |