|
|
@@ -1,7 +1,10 @@
|
|
|
package com.xjrsoft.module.attendance.service.impl;
|
|
|
|
|
|
+import cn.dev33.satoken.stp.StpUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
+import com.xjrsoft.common.enums.DeleteMark;
|
|
|
import com.xjrsoft.module.attendance.entity.AttendanceRuleCategory;
|
|
|
import com.xjrsoft.module.attendance.entity.AttendanceRuleDetails;
|
|
|
import com.xjrsoft.module.attendance.entity.AttendanceUserRelation;
|
|
|
@@ -9,10 +12,16 @@ import com.xjrsoft.module.attendance.mapper.AttendanceRuleCategoryMapper;
|
|
|
import com.xjrsoft.module.attendance.mapper.AttendanceRuleDetailsMapper;
|
|
|
import com.xjrsoft.module.attendance.mapper.AttendanceUserRelationMapper;
|
|
|
import com.xjrsoft.module.attendance.service.IAttendanceRuleCategoryService;
|
|
|
+import com.xjrsoft.module.concat.service.IXjrUserService;
|
|
|
+import com.xjrsoft.module.organization.entity.UserDeptRelation;
|
|
|
+import com.xjrsoft.module.teacher.entity.BaseTeacher;
|
|
|
+import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -26,36 +35,73 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<AttendanceRuleCategoryMapper, AttendanceRuleCategory> implements IAttendanceRuleCategoryService {
|
|
|
- private final AttendanceRuleCategoryMapper attendanceRuleCategoryAttendanceRuleCategoryMapper;
|
|
|
+ private final AttendanceRuleCategoryMapper categoryMapper;
|
|
|
|
|
|
- private final AttendanceRuleDetailsMapper attendanceRuleCategoryAttendanceRuleDetailsMapper;
|
|
|
- private final AttendanceUserRelationMapper attendanceRuleCategoryAttendanceUserRelationMapper;
|
|
|
+ private final AttendanceRuleDetailsMapper detailsMapper;
|
|
|
+ private final AttendanceUserRelationMapper relationMapper;
|
|
|
+ private final IXjrUserService xjrUserService;
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean add(AttendanceRuleCategory attendanceRuleCategory) {
|
|
|
- attendanceRuleCategoryAttendanceRuleCategoryMapper.insert(attendanceRuleCategory);
|
|
|
+ categoryMapper.insert(attendanceRuleCategory);
|
|
|
for (AttendanceRuleDetails attendanceRuleDetails : attendanceRuleCategory.getAttendanceRuleDetailsList()) {
|
|
|
attendanceRuleDetails.setAttendanceRuleCategoryId(attendanceRuleCategory.getId());
|
|
|
- attendanceRuleCategoryAttendanceRuleDetailsMapper.insert(attendanceRuleDetails);
|
|
|
+ detailsMapper.insert(attendanceRuleDetails);
|
|
|
}
|
|
|
- for (AttendanceUserRelation attendanceUserRelation : attendanceRuleCategory.getAttendanceUserRelationList()) {
|
|
|
- attendanceUserRelation.setAttendanceRuleCategoryId(attendanceRuleCategory.getId());
|
|
|
- attendanceRuleCategoryAttendanceUserRelationMapper.insert(attendanceUserRelation);
|
|
|
+
|
|
|
+ if(attendanceRuleCategory.getRoleId() != null && attendanceRuleCategory.getRoleId() == 2){
|
|
|
+ List<XjrUser> insertList = new ArrayList<>();
|
|
|
+ if(attendanceRuleCategory.getAttendanceRange() == 1){
|
|
|
+ List<XjrUser> userList = xjrUserService.list(
|
|
|
+ new MPJLambdaWrapper<XjrUser>()
|
|
|
+ .leftJoin(BaseTeacher.class, BaseTeacher::getUserId, XjrUser::getId)
|
|
|
+ .eq(BaseTeacher::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ .eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+ insertList.addAll(userList);
|
|
|
+ }else if(attendanceRuleCategory.getAttendanceRange() == 2){
|
|
|
+ List<Long> deptIds = new ArrayList<>();
|
|
|
+ for (AttendanceUserRelation relation : attendanceRuleCategory.getAttendanceUserRelationList()) {
|
|
|
+ if(relation.getDeptId() != null){
|
|
|
+ deptIds.add(relation.getDeptId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ List<XjrUser> userList = xjrUserService.list(
|
|
|
+ new MPJLambdaWrapper<XjrUser>()
|
|
|
+ .leftJoin(BaseTeacher.class, BaseTeacher::getUserId, XjrUser::getId)
|
|
|
+ .leftJoin(UserDeptRelation.class, UserDeptRelation::getUserId, XjrUser::getId)
|
|
|
+ .eq(BaseTeacher::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ .eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ .in(UserDeptRelation::getDeptId, deptIds)
|
|
|
+ );
|
|
|
+ insertList.addAll(userList);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (XjrUser user : insertList) {
|
|
|
+ AttendanceUserRelation relation = new AttendanceUserRelation();
|
|
|
+ relation.setCreateDate(new Date());
|
|
|
+ relation.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ relation.setUserId(user.getId());
|
|
|
+ relation.setAttendanceRuleCategoryId(attendanceRuleCategory.getId());
|
|
|
+ relationMapper.insert(relation);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean update(AttendanceRuleCategory attendanceRuleCategory) {
|
|
|
- attendanceRuleCategoryAttendanceRuleCategoryMapper.updateById(attendanceRuleCategory);
|
|
|
+ categoryMapper.updateById(attendanceRuleCategory);
|
|
|
//********************************* AttendanceRuleDetails 增删改 开始 *******************************************/
|
|
|
{
|
|
|
// 查出所有子级的id
|
|
|
- List<AttendanceRuleDetails> attendanceRuleDetailsList = attendanceRuleCategoryAttendanceRuleDetailsMapper.selectList(Wrappers.lambdaQuery(AttendanceRuleDetails.class).eq(AttendanceRuleDetails::getAttendanceRuleCategoryId, attendanceRuleCategory.getId()).select(AttendanceRuleDetails::getId));
|
|
|
+ List<AttendanceRuleDetails> attendanceRuleDetailsList = detailsMapper.selectList(Wrappers.lambdaQuery(AttendanceRuleDetails.class).eq(AttendanceRuleDetails::getAttendanceRuleCategoryId, attendanceRuleCategory.getId()).select(AttendanceRuleDetails::getId));
|
|
|
List<Long> attendanceRuleDetailsIds = attendanceRuleDetailsList.stream().map(AttendanceRuleDetails::getId).collect(Collectors.toList());
|
|
|
//原有子表单 没有被删除的主键
|
|
|
List<Long> attendanceRuleDetailsOldIds = attendanceRuleCategory.getAttendanceRuleDetailsList().stream().map(AttendanceRuleDetails::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
@@ -65,18 +111,18 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
|
|
|
for (AttendanceRuleDetails attendanceRuleDetails : attendanceRuleCategory.getAttendanceRuleDetailsList()) {
|
|
|
//如果不等于空则修改
|
|
|
if (attendanceRuleDetails.getId() != null) {
|
|
|
- attendanceRuleCategoryAttendanceRuleDetailsMapper.updateById(attendanceRuleDetails);
|
|
|
+ detailsMapper.updateById(attendanceRuleDetails);
|
|
|
}
|
|
|
//如果等于空 则新增
|
|
|
else {
|
|
|
//已经不存在的id 删除
|
|
|
attendanceRuleDetails.setAttendanceRuleCategoryId(attendanceRuleCategory.getId());
|
|
|
- attendanceRuleCategoryAttendanceRuleDetailsMapper.insert(attendanceRuleDetails);
|
|
|
+ detailsMapper.insert(attendanceRuleDetails);
|
|
|
}
|
|
|
}
|
|
|
//已经不存在的id 删除
|
|
|
if(attendanceRuleDetailsRemoveIds.size() > 0){
|
|
|
- attendanceRuleCategoryAttendanceRuleDetailsMapper.deleteBatchIds(attendanceRuleDetailsRemoveIds);
|
|
|
+ detailsMapper.deleteBatchIds(attendanceRuleDetailsRemoveIds);
|
|
|
}
|
|
|
}
|
|
|
//********************************* AttendanceRuleDetails 增删改 结束 *******************************************/
|
|
|
@@ -84,7 +130,7 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
|
|
|
//********************************* AttendanceUserRelation 增删改 开始 *******************************************/
|
|
|
{
|
|
|
// 查出所有子级的id
|
|
|
- List<AttendanceUserRelation> attendanceUserRelationList = attendanceRuleCategoryAttendanceUserRelationMapper.selectList(Wrappers.lambdaQuery(AttendanceUserRelation.class).eq(AttendanceUserRelation::getAttendanceRuleCategoryId, attendanceRuleCategory.getId()).select(AttendanceUserRelation::getId));
|
|
|
+ List<AttendanceUserRelation> attendanceUserRelationList = relationMapper.selectList(Wrappers.lambdaQuery(AttendanceUserRelation.class).eq(AttendanceUserRelation::getAttendanceRuleCategoryId, attendanceRuleCategory.getId()).select(AttendanceUserRelation::getId));
|
|
|
List<Long> attendanceUserRelationIds = attendanceUserRelationList.stream().map(AttendanceUserRelation::getId).collect(Collectors.toList());
|
|
|
//原有子表单 没有被删除的主键
|
|
|
List<Long> attendanceUserRelationOldIds = attendanceRuleCategory.getAttendanceUserRelationList().stream().map(AttendanceUserRelation::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
@@ -94,18 +140,18 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
|
|
|
for (AttendanceUserRelation attendanceUserRelation : attendanceRuleCategory.getAttendanceUserRelationList()) {
|
|
|
//如果不等于空则修改
|
|
|
if (attendanceUserRelation.getId() != null) {
|
|
|
- attendanceRuleCategoryAttendanceUserRelationMapper.updateById(attendanceUserRelation);
|
|
|
+ relationMapper.updateById(attendanceUserRelation);
|
|
|
}
|
|
|
//如果等于空 则新增
|
|
|
else {
|
|
|
//已经不存在的id 删除
|
|
|
attendanceUserRelation.setAttendanceRuleCategoryId(attendanceRuleCategory.getId());
|
|
|
- attendanceRuleCategoryAttendanceUserRelationMapper.insert(attendanceUserRelation);
|
|
|
+ relationMapper.insert(attendanceUserRelation);
|
|
|
}
|
|
|
}
|
|
|
//已经不存在的id 删除
|
|
|
if(attendanceUserRelationRemoveIds.size() > 0){
|
|
|
- attendanceRuleCategoryAttendanceUserRelationMapper.deleteBatchIds(attendanceUserRelationRemoveIds);
|
|
|
+ relationMapper.deleteBatchIds(attendanceUserRelationRemoveIds);
|
|
|
}
|
|
|
}
|
|
|
//********************************* AttendanceUserRelation 增删改 结束 *******************************************/
|
|
|
@@ -116,9 +162,9 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean delete(List<Long> ids) {
|
|
|
- attendanceRuleCategoryAttendanceRuleCategoryMapper.deleteBatchIds(ids);
|
|
|
- attendanceRuleCategoryAttendanceRuleDetailsMapper.delete(Wrappers.lambdaQuery(AttendanceRuleDetails.class).in(AttendanceRuleDetails::getAttendanceRuleCategoryId, ids));
|
|
|
- attendanceRuleCategoryAttendanceUserRelationMapper.delete(Wrappers.lambdaQuery(AttendanceUserRelation.class).in(AttendanceUserRelation::getAttendanceRuleCategoryId, ids));
|
|
|
+ categoryMapper.deleteBatchIds(ids);
|
|
|
+ detailsMapper.delete(Wrappers.lambdaQuery(AttendanceRuleDetails.class).in(AttendanceRuleDetails::getAttendanceRuleCategoryId, ids));
|
|
|
+ relationMapper.delete(Wrappers.lambdaQuery(AttendanceUserRelation.class).in(AttendanceUserRelation::getAttendanceRuleCategoryId, ids));
|
|
|
|
|
|
return true;
|
|
|
}
|