@@ -0,0 +1,36 @@ | |||
package com.ruoyi.zhushi.controller; | |||
import com.ruoyi.common.core.controller.BaseController; | |||
import com.ruoyi.common.core.domain.R; | |||
import com.ruoyi.common.core.page.TableDataInfo; | |||
import com.ruoyi.zhushi.entity.NjBalanceManageDTO; | |||
import com.ruoyi.zhushi.entity.NjRuleConfigDTO; | |||
import com.ruoyi.zhushi.service.NjBalanceManageService; | |||
import com.ruoyi.zhushi.service.NjRuleConfigService; | |||
import lombok.RequiredArgsConstructor; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.validation.annotation.Validated; | |||
import org.springframework.web.bind.annotation.*; | |||
/** | |||
* 打卡控制台 | |||
*/ | |||
@Validated | |||
@RequiredArgsConstructor | |||
@RestController | |||
@RequestMapping("/nj/balance/manage") | |||
@Slf4j | |||
public class NjBalanceManageController extends BaseController { | |||
@Autowired | |||
private NjBalanceManageService njBalanceManageService; | |||
// 查询当前用户考勤组 | |||
@GetMapping("/query") | |||
public TableDataInfo<NjBalanceManageDTO> query(NjBalanceManageDTO njBalanceManageDTO) { | |||
return njBalanceManageService.queryPageList(njBalanceManageDTO); | |||
} | |||
} |
@@ -0,0 +1,52 @@ | |||
package com.ruoyi.zhushi.controller; | |||
import com.ruoyi.common.core.controller.BaseController; | |||
import com.ruoyi.common.core.domain.R; | |||
import com.ruoyi.common.core.page.TableDataInfo; | |||
import com.ruoyi.zhushi.entity.DkCheckInRecordDTO; | |||
import com.ruoyi.zhushi.entity.NjRuleConfigDTO; | |||
import com.ruoyi.zhushi.service.NjRuleConfigService; | |||
import lombok.RequiredArgsConstructor; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.validation.annotation.Validated; | |||
import org.springframework.web.bind.annotation.*; | |||
/** | |||
* 打卡控制台 | |||
*/ | |||
@Validated | |||
@RequiredArgsConstructor | |||
@RestController | |||
@RequestMapping("/nj/rule/config") | |||
@Slf4j | |||
public class NjRuleConfigController extends BaseController { | |||
@Autowired | |||
private NjRuleConfigService njRuleConfigService; | |||
// 查询当前用户考勤组 | |||
@GetMapping("/queryRuleConfig") | |||
public TableDataInfo<NjRuleConfigDTO> queryRule(NjRuleConfigDTO njRuleConfigDTO) { | |||
return njRuleConfigService.queryRuleConfig(njRuleConfigDTO); | |||
} | |||
// 新增规则 | |||
@PostMapping("/addRuleConfig") | |||
public R<Boolean> addRule(@RequestBody NjRuleConfigDTO njRuleConfigDTO) { | |||
return R.ok(njRuleConfigService.addRule(njRuleConfigDTO)); | |||
} | |||
// 删除规则 | |||
@GetMapping("/delRule") | |||
public R<Integer> delRule(@RequestParam("id") long id) { | |||
return R.ok(njRuleConfigService.delRule(id)); | |||
} | |||
// 删除用户 | |||
@DeleteMapping("/delUser/{id}") | |||
public R<Void> delUser(@PathVariable Long id) { | |||
return toAjax(njRuleConfigService.delUser(id)); | |||
} | |||
} |
@@ -0,0 +1,44 @@ | |||
package com.ruoyi.zhushi.entity; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableField; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.baomidou.mybatisplus.annotation.TableName; | |||
import com.ruoyi.common.core.domain.BaseEntity; | |||
import lombok.Data; | |||
import java.math.BigDecimal; | |||
@Data | |||
@TableName("nj_balance_manage") | |||
public class NjBalanceManage extends BaseEntity { | |||
@TableId(value = "id", type = IdType.AUTO) | |||
private long id; | |||
@TableField(value = "`user_id`") | |||
private long userId; | |||
@TableField(value = "`user_name`") | |||
private String userName; | |||
@TableField(value = "`nick_name`") | |||
private String nickName; | |||
@TableField(value = "`dept_name`") | |||
private String deptName; | |||
@TableField(value = "`annual_leave`") | |||
private BigDecimal annualLeave; | |||
@TableField(value = "`used_day`") | |||
private BigDecimal usedDay; | |||
@TableField(value = "`unused_day`") | |||
private BigDecimal unusedDay; | |||
@TableField(value = "`last_year_unused_day`") | |||
private BigDecimal lastYearUnusedDay; | |||
@TableField(value = "`is_enable`") | |||
private Boolean isEnable; | |||
} |
@@ -0,0 +1,41 @@ | |||
package com.ruoyi.zhushi.entity; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableField; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.baomidou.mybatisplus.annotation.TableName; | |||
import com.ruoyi.common.core.domain.BaseEntity; | |||
import lombok.Data; | |||
import java.math.BigDecimal; | |||
@Data | |||
public class NjBalanceManageDTO extends BaseEntity { | |||
private long id; | |||
private long userId; | |||
private String userName; | |||
private String nickName; | |||
private String deptName; | |||
private BigDecimal annualLeave; | |||
private BigDecimal usedDay; | |||
private BigDecimal unusedDay; | |||
private BigDecimal lastYearUnusedDay; | |||
private Boolean isEnable; | |||
} |
@@ -0,0 +1,37 @@ | |||
package com.ruoyi.zhushi.entity; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableField; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.baomidou.mybatisplus.annotation.TableName; | |||
import com.ruoyi.common.core.domain.BaseEntity; | |||
import lombok.Data; | |||
@Data | |||
@TableName("nj_rule_config") | |||
public class NjRuleConfig extends BaseEntity { | |||
@TableId(value = "id", type = IdType.AUTO) | |||
private long id; | |||
@TableField(value = "`rule_name`") | |||
private String ruleName; | |||
@TableField(value = "`calculation_method`") | |||
private Integer calculationMethod; | |||
@TableField(value = "`annualLeave_tiers`") | |||
private Integer annualLeaveTiers; | |||
@TableField(value = "`validity_period`") | |||
private Boolean validityPeriod; | |||
@TableField(value = "`allow_half_day`") | |||
private Boolean allowHalfDay; | |||
@TableField(value = "`applicable_range`") | |||
private Boolean applicableRange; | |||
@TableField(value = "`generation_cycle`") | |||
private Boolean generationCycle; | |||
} |
@@ -0,0 +1,34 @@ | |||
package com.ruoyi.zhushi.entity; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableField; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.baomidou.mybatisplus.annotation.TableName; | |||
import com.ruoyi.common.core.domain.BaseEntity; | |||
import lombok.Data; | |||
@Data | |||
@TableName("nj_rule_config_and_user") | |||
public class NjRuleConfigAndUser extends BaseEntity { | |||
@TableId(value = "id", type = IdType.AUTO) | |||
private long id; | |||
@TableField(value = "`nj_rule_config_id`") | |||
private long njRuleConfigId; | |||
@TableField(value = "`rule_name`") | |||
private String ruleName; | |||
@TableField(value = "`user_id`") | |||
private long userId; | |||
@TableField(value = "`user_name`") | |||
private String userName; | |||
@TableField(value = "`nick_name`") | |||
private String nickName; | |||
@TableField(value = "`dept_name`") | |||
private String deptName; | |||
} |
@@ -0,0 +1,32 @@ | |||
package com.ruoyi.zhushi.entity; | |||
import com.baomidou.mybatisplus.annotation.IdType; | |||
import com.baomidou.mybatisplus.annotation.TableField; | |||
import com.baomidou.mybatisplus.annotation.TableId; | |||
import com.baomidou.mybatisplus.annotation.TableName; | |||
import com.ruoyi.common.core.domain.BaseEntity; | |||
import lombok.Data; | |||
@Data | |||
public class NjRuleConfigAndUserDTO extends BaseEntity { | |||
private long id; | |||
private long njRuleConfigId; | |||
private String ruleName; | |||
private long userId; | |||
private String userName; | |||
private String nickName; | |||
private String deptName; | |||
} |
@@ -0,0 +1,28 @@ | |||
package com.ruoyi.zhushi.entity; | |||
import com.ruoyi.common.core.domain.BaseEntity; | |||
import lombok.Data; | |||
import java.util.List; | |||
@Data | |||
public class NjRuleConfigDTO extends BaseEntity { | |||
private long id; | |||
private String ruleName; | |||
private Integer calculationMethod; | |||
private Integer annualLeaveTiers; | |||
private Boolean validityPeriod; | |||
private Boolean allowHalfDay; | |||
private Boolean applicableRange; | |||
private Boolean generationCycle; | |||
private List<DkUsers> members; | |||
} |
@@ -0,0 +1,12 @@ | |||
package com.ruoyi.zhushi.mapper; | |||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||
import com.ruoyi.zhushi.entity.NjBalanceManage; | |||
import com.ruoyi.zhushi.entity.NjBalanceManageDTO; | |||
import org.apache.ibatis.annotations.Mapper; | |||
@Mapper | |||
public interface NjBalanceManageMapper extends BaseMapperPlus<NjBalanceManageMapper, NjBalanceManage, NjBalanceManageDTO> { | |||
} |
@@ -0,0 +1,12 @@ | |||
package com.ruoyi.zhushi.mapper; | |||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||
import com.ruoyi.zhushi.entity.NjRuleConfigAndUser; | |||
import com.ruoyi.zhushi.entity.NjRuleConfigAndUserDTO; | |||
import org.apache.ibatis.annotations.Mapper; | |||
@Mapper | |||
public interface NjRuleConfigAndUserMapper extends BaseMapperPlus<NjRuleConfigAndUserMapper, NjRuleConfigAndUser, NjRuleConfigAndUserDTO> { | |||
} |
@@ -0,0 +1,12 @@ | |||
package com.ruoyi.zhushi.mapper; | |||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||
import com.ruoyi.zhushi.entity.NjRuleConfig; | |||
import com.ruoyi.zhushi.entity.NjRuleConfigDTO; | |||
import org.apache.ibatis.annotations.Mapper; | |||
@Mapper | |||
public interface NjRuleConfigMapper extends BaseMapperPlus<NjRuleConfigMapper, NjRuleConfig, NjRuleConfigDTO> { | |||
} |
@@ -0,0 +1,10 @@ | |||
package com.ruoyi.zhushi.service; | |||
import com.ruoyi.common.core.page.TableDataInfo; | |||
import com.ruoyi.zhushi.entity.NjBalanceManageDTO; | |||
public interface NjBalanceManageService { | |||
TableDataInfo<NjBalanceManageDTO> queryPageList(NjBalanceManageDTO njBalanceManageDTO); | |||
} |
@@ -0,0 +1,15 @@ | |||
package com.ruoyi.zhushi.service; | |||
import com.ruoyi.common.core.page.TableDataInfo; | |||
import com.ruoyi.zhushi.entity.NjRuleConfigDTO; | |||
public interface NjRuleConfigService { | |||
TableDataInfo<NjRuleConfigDTO> queryRuleConfig(NjRuleConfigDTO njRuleConfigDTO); | |||
public Boolean addRule(NjRuleConfigDTO njRuleConfigDTO); | |||
public int delRule(long id); | |||
public int delUser(long id); | |||
} |
@@ -0,0 +1,28 @@ | |||
package com.ruoyi.zhushi.service.impl; | |||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||
import com.ruoyi.common.core.page.TableDataInfo; | |||
import com.ruoyi.zhushi.entity.NjBalanceManage; | |||
import com.ruoyi.zhushi.entity.NjBalanceManageDTO; | |||
import com.ruoyi.zhushi.mapper.NjBalanceManageMapper; | |||
import com.ruoyi.zhushi.service.NjBalanceManageService; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.util.List; | |||
@Service | |||
public class NjBalanceManageServiceImpl implements NjBalanceManageService { | |||
@Autowired | |||
private NjBalanceManageMapper njBalanceManageMapper; | |||
@Override | |||
public TableDataInfo<NjBalanceManageDTO> queryPageList(NjBalanceManageDTO njBalanceManageDTO) { | |||
LambdaQueryWrapper<NjBalanceManage> queryWrapper = new LambdaQueryWrapper<>(); | |||
queryWrapper.eq(njBalanceManageDTO.getUserName()!= null, NjBalanceManage::getUserName, njBalanceManageDTO.getUserName()); | |||
queryWrapper.eq(njBalanceManageDTO.getNickName()!= null, NjBalanceManage::getNickName, njBalanceManageDTO.getNickName()); | |||
List<NjBalanceManageDTO> njBalanceManageDTOS = njBalanceManageMapper.selectVoList(queryWrapper, NjBalanceManageDTO.class); | |||
return TableDataInfo.build(njBalanceManageDTOS); | |||
} | |||
} |
@@ -0,0 +1,83 @@ | |||
package com.ruoyi.zhushi.service.impl; | |||
import cn.hutool.core.bean.BeanUtil; | |||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||
import com.ruoyi.common.annotation.Translation; | |||
import com.ruoyi.common.core.page.TableDataInfo; | |||
import com.ruoyi.zhushi.entity.*; | |||
import com.ruoyi.zhushi.mapper.NjRuleConfigAndUserMapper; | |||
import com.ruoyi.zhushi.mapper.NjRuleConfigMapper; | |||
import com.ruoyi.zhushi.service.NjRuleConfigService; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
@Service | |||
public class NjRuleConfigServiceImpl implements NjRuleConfigService { | |||
@Autowired | |||
private NjRuleConfigMapper njRuleConfigMapper; | |||
@Autowired | |||
private NjRuleConfigAndUserMapper njRuleConfigAndUserMapper; | |||
@Override | |||
public TableDataInfo<NjRuleConfigDTO> queryRuleConfig(NjRuleConfigDTO njRuleConfigDTO) { | |||
LambdaQueryWrapper<NjRuleConfig> queryWrapper = Wrappers.lambdaQuery(); | |||
queryWrapper.eq(null != njRuleConfigDTO.getRuleName(), NjRuleConfig::getRuleName, njRuleConfigDTO.getRuleName()); | |||
List<NjRuleConfigDTO> njRuleConfigDTOS = njRuleConfigMapper.selectVoList(queryWrapper, NjRuleConfigDTO.class); | |||
njRuleConfigDTOS.forEach(nj -> { | |||
if(!nj.getApplicableRange()){ | |||
List<DkUsers> users = new ArrayList<>(); | |||
LambdaQueryWrapper<NjRuleConfigAndUser> njRuleConfigAndUserLambdaQueryWrapper = Wrappers.lambdaQuery(); | |||
njRuleConfigAndUserLambdaQueryWrapper.eq(NjRuleConfigAndUser::getNjRuleConfigId, nj.getId()); | |||
List<NjRuleConfigAndUserDTO> njRuleConfigAndUserDTOS = njRuleConfigAndUserMapper.selectVoList(njRuleConfigAndUserLambdaQueryWrapper, NjRuleConfigAndUserDTO.class); | |||
njRuleConfigAndUserDTOS.forEach(njRuleConfigAndUser -> { | |||
DkUsers dkUsers = new DkUsers(); | |||
BeanUtil.copyProperties(njRuleConfigAndUser, dkUsers); | |||
users.add(dkUsers); | |||
}); | |||
nj.setMembers(users); | |||
} | |||
}); | |||
return TableDataInfo.build(njRuleConfigDTOS); | |||
} | |||
@Override | |||
public Boolean addRule(NjRuleConfigDTO njRuleConfigDTO) { | |||
NjRuleConfig njRuleConfig = new NjRuleConfig(); | |||
BeanUtil.copyProperties(njRuleConfigDTO, njRuleConfig); | |||
njRuleConfigMapper.insertOrUpdate(njRuleConfig); | |||
List<NjRuleConfigAndUser> njRuleConfigAndUsers = new ArrayList<>(); | |||
if(null != njRuleConfigDTO.getMembers() && njRuleConfigDTO.getMembers().size() > 0){ | |||
njRuleConfigDTO.getMembers() | |||
.forEach(user -> { | |||
NjRuleConfigAndUser njRuleConfigAndUser = new NjRuleConfigAndUser(); | |||
njRuleConfigAndUser.setNjRuleConfigId(njRuleConfig.getId()); | |||
njRuleConfigAndUser.setRuleName(njRuleConfig.getRuleName()); | |||
njRuleConfigAndUser.setUserId(user.getUserId()); | |||
njRuleConfigAndUser.setUserName(user.getUserName()); | |||
njRuleConfigAndUser.setNickName(user.getNickName()); | |||
njRuleConfigAndUsers.add(njRuleConfigAndUser); | |||
}); | |||
} | |||
return njRuleConfigAndUserMapper.insertOrUpdateBatch(njRuleConfigAndUsers); | |||
} | |||
@Override | |||
public int delRule(long id) { | |||
return njRuleConfigMapper.deleteById(id); | |||
} | |||
@Override | |||
public int delUser(long id) { | |||
return njRuleConfigAndUserMapper.deleteById(id); | |||
} | |||
} |