bug修复
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
--- # 临时文件存储位置 避免临时文件被系统清理报错
|
|
||||||
spring.servlet.multipart.location: /javaroot/ruoyi/server/temp
|
|
||||||
|
|
||||||
--- # 监控中心配置
|
--- # 监控中心配置
|
||||||
spring.boot.admin.client:
|
spring.boot.admin.client:
|
||||||
|
|||||||
@@ -55,7 +55,8 @@ public class EmployeeFilesController extends BaseController {
|
|||||||
@GetMapping("/{userId}")
|
@GetMapping("/{userId}")
|
||||||
public R<UserFilesVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<UserFilesVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable("userId") Long userId) {
|
@PathVariable("userId") Long userId) {
|
||||||
return R.ok(iEmployeeFilesService.queryUserFilesVoByUserId(userId));
|
return R.ok(iEmployeeFilesService.
|
||||||
|
queryUserFilesVoByUserId(userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -55,14 +55,6 @@ public class OaSalaryController extends BaseController {
|
|||||||
return iOaSalaryService.listWorker(bo, pageQuery);
|
return iOaSalaryService.listWorker(bo, pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量写入user到salary中
|
|
||||||
*/
|
|
||||||
@GetMapping("/import")
|
|
||||||
public R<Void> importSalaryUser() {
|
|
||||||
return iOaSalaryService.importSalaryUser();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出薪资管理列表
|
* 导出薪资管理列表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -71,5 +71,7 @@ public class OaSalaryVo extends OaSalary {
|
|||||||
|
|
||||||
private List<OaSalaryItemVo> itemList;
|
private List<OaSalaryItemVo> itemList;
|
||||||
|
|
||||||
|
private Double punishSalary;
|
||||||
|
|
||||||
private Double laborCost;
|
private Double laborCost;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package com.ruoyi.oa.mapper;
|
package com.ruoyi.oa.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.ruoyi.oa.domain.OaSalary;
|
import com.ruoyi.oa.domain.OaSalary;
|
||||||
@@ -22,11 +21,12 @@ public interface OaSalaryMapper extends BaseMapperPlus<OaSalaryMapper, OaSalary,
|
|||||||
Page<OaSalaryVo> selectStaffVoPage(Page<Object> build,@Param(Constants.WRAPPER) Wrapper<OaSalary> lqw,@Param("payTime") Date payTime);
|
Page<OaSalaryVo> selectStaffVoPage(Page<Object> build,@Param(Constants.WRAPPER) Wrapper<OaSalary> lqw,@Param("payTime") Date payTime);
|
||||||
|
|
||||||
|
|
||||||
OaSalary selectVoByUserId(Long userId);
|
OaSalary selectVoByUserId(@Param("userId") Long userId,@Param("yearMonth") Date yearMonth);
|
||||||
|
|
||||||
OaSalaryVo selectVoAndItemVoById(@Param("salaryId")Long salaryId,@Param("payTime")Date payTime);
|
OaSalaryVo selectVoAndItemVoById(@Param("salaryId")Long salaryId,@Param("payTime")Date payTime);
|
||||||
|
|
||||||
void delByPayTime(Date date);
|
void delByPayTime(Date date);
|
||||||
|
|
||||||
|
|
||||||
|
void delItemByPayYearMonth(Date yearMonth);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.ruoyi.oa.domain.vo.SysHolidayVo;
|
|||||||
import com.ruoyi.oa.domain.vo.SysOaHolidayVo;
|
import com.ruoyi.oa.domain.vo.SysOaHolidayVo;
|
||||||
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,4 +18,7 @@ import java.util.List;
|
|||||||
public interface SysOaHolidayMapper extends BaseMapperPlus<SysOaHolidayMapper, SysOaHoliday, SysOaHolidayVo> {
|
public interface SysOaHolidayMapper extends BaseMapperPlus<SysOaHolidayMapper, SysOaHoliday, SysOaHolidayVo> {
|
||||||
|
|
||||||
List<SysHolidayVo> queryVoList(SysOaHolidayBo bo);
|
List<SysHolidayVo> queryVoList(SysOaHolidayBo bo);
|
||||||
|
|
||||||
|
Long queryWorkDayNumByMonth(Date payTime);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public interface IOaSalaryService {
|
|||||||
* 导入当月所有人的记录
|
* 导入当月所有人的记录
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
R<Void> importSalaryUser();
|
R<Void> importSalaryUser(Date payTime);
|
||||||
|
|
||||||
TableDataInfo<OaSalaryVo> listWorker(OaSalaryBo bo, PageQuery pageQuery);
|
TableDataInfo<OaSalaryVo> listWorker(OaSalaryBo bo, PageQuery pageQuery);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.ruoyi.oa.domain.vo.SysOaHolidayVo;
|
|||||||
import com.ruoyi.oa.domain.bo.SysOaHolidayBo;
|
import com.ruoyi.oa.domain.bo.SysOaHolidayBo;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
@@ -73,4 +74,11 @@ public interface ISysOaHolidayService {
|
|||||||
|
|
||||||
|
|
||||||
List<SysHolidayVo> queryVoList(SysOaHolidayBo bo);
|
List<SysHolidayVo> queryVoList(SysOaHolidayBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询当月的工作日
|
||||||
|
* @param payTime
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Long queryWorkDayNumByMonth(Date payTime);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,10 +84,11 @@ public class EmployeeFilesServiceImpl implements IEmployeeFilesService {
|
|||||||
@Override
|
@Override
|
||||||
public Boolean insertByBo(UserFilesVo userFilesVo) {
|
public Boolean insertByBo(UserFilesVo userFilesVo) {
|
||||||
// 删除该用户所有的文件,重新填入
|
// 删除该用户所有的文件,重新填入
|
||||||
baseMapper.deleteByUserId(userFilesVo.getUserId());
|
// baseMapper.deleteByUserId(userFilesVo.getUserId()); 似乎不用删
|
||||||
List<EmployeeFilesVo> fileList = userFilesVo.getFileList();
|
List<EmployeeFilesVo> fileList = userFilesVo.getFileList();
|
||||||
fileList.forEach(file -> {
|
fileList.forEach(file -> {
|
||||||
EmployeeFiles employeeFiles = BeanUtil.toBean(file, EmployeeFiles.class);
|
EmployeeFiles employeeFiles = BeanUtil.toBean(file, EmployeeFiles.class);
|
||||||
|
employeeFiles.setFilePath(file.getFilePath());
|
||||||
employeeFiles.setUserId(userFilesVo.getUserId());
|
employeeFiles.setUserId(userFilesVo.getUserId());
|
||||||
baseMapper.insert(employeeFiles);
|
baseMapper.insert(employeeFiles);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -80,7 +80,9 @@ public class EmployeeOnboardingServiceImpl implements IEmployeeOnboardingService
|
|||||||
QueryWrapper<EmployeeOnboarding> lqw =new QueryWrapper<EmployeeOnboarding>();
|
QueryWrapper<EmployeeOnboarding> lqw =new QueryWrapper<EmployeeOnboarding>();
|
||||||
lqw.eq(bo.getUserId() != null, "eo.user_id", bo.getUserId());
|
lqw.eq(bo.getUserId() != null, "eo.user_id", bo.getUserId());
|
||||||
lqw.eq(bo.getJoiningDate() != null, "eo.joining_date", bo.getJoiningDate());
|
lqw.eq(bo.getJoiningDate() != null, "eo.joining_date", bo.getJoiningDate());
|
||||||
|
lqw.eq("eo.del_flag", 0L);
|
||||||
lqw.like(bo.getNickName()!=null,"su.nick_name",bo.getNickName());
|
lqw.like(bo.getNickName()!=null,"su.nick_name",bo.getNickName());
|
||||||
|
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,9 @@ public class OaSalaryServiceImpl implements IOaSalaryService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ISysOaAttendanceService sysOaAttendanceService;
|
private ISysOaAttendanceService sysOaAttendanceService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysOaHolidayService sysOaHolidayService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询薪资管理
|
* 查询薪资管理
|
||||||
*/
|
*/
|
||||||
@@ -96,9 +99,11 @@ public class OaSalaryServiceImpl implements IOaSalaryService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询薪资管理列表
|
* 查询薪资管理列表
|
||||||
|
* 职工为一个月的固定工资 所以不需要计算日薪乘以工作日数量 所以区别于车间工人
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public TableDataInfo<OaSalaryVo> queryPageList(OaSalaryBo bo, PageQuery pageQuery) {
|
public TableDataInfo<OaSalaryVo> queryPageList(OaSalaryBo bo, PageQuery pageQuery) {
|
||||||
|
|
||||||
List<Long> userIds = sysUserRoleMapper.selectUserIdsByNotRoleId(1852970465740505090L);
|
List<Long> userIds = sysUserRoleMapper.selectUserIdsByNotRoleId(1852970465740505090L);
|
||||||
QueryWrapper<OaSalary> lqw = new QueryWrapper<>();
|
QueryWrapper<OaSalary> lqw = new QueryWrapper<>();
|
||||||
lqw.in("os.user_id",userIds);
|
lqw.in("os.user_id",userIds);
|
||||||
@@ -107,40 +112,53 @@ public class OaSalaryServiceImpl implements IOaSalaryService {
|
|||||||
Page<OaSalaryVo> result = baseMapper.selectStaffVoPage(pageQuery.build(), lqw,payTime);
|
Page<OaSalaryVo> result = baseMapper.selectStaffVoPage(pageQuery.build(), lqw,payTime);
|
||||||
if (result.getRecords().isEmpty()){
|
if (result.getRecords().isEmpty()){
|
||||||
// 判断是否有当前月的记录 没有则进行创造新的记录
|
// 判断是否有当前月的记录 没有则进行创造新的记录
|
||||||
this.importSalaryUser();
|
this.importSalaryUser(payTime);
|
||||||
result = baseMapper.selectStaffVoPage(pageQuery.build(), lqw,payTime);
|
result = baseMapper.selectStaffVoPage(pageQuery.build(), lqw,payTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 写入真实薪资 为日薪乘以工作日-罚金
|
||||||
|
for (OaSalaryVo record : result.getRecords()) {
|
||||||
|
record.setRealSalary(record.getBaseSalary()+record.getPunishSalary());
|
||||||
|
}
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TableDataInfo<OaSalaryVo> listWorker(OaSalaryBo bo, PageQuery pageQuery) {
|
public TableDataInfo<OaSalaryVo> listWorker(OaSalaryBo bo, PageQuery pageQuery) {
|
||||||
|
// 还得计算一下这个月的工作日
|
||||||
|
Date payTime = bo.getPayTime()!=null?bo.getPayTime():new Date();
|
||||||
|
Long dayNum = sysOaHolidayService.queryWorkDayNumByMonth(payTime);
|
||||||
List<Long> userIds = sysUserRoleMapper.selectUserIdsByRoleId(1852970465740505090L);
|
List<Long> userIds = sysUserRoleMapper.selectUserIdsByRoleId(1852970465740505090L);
|
||||||
QueryWrapper<OaSalary> lqw = new QueryWrapper<>();
|
QueryWrapper<OaSalary> lqw = new QueryWrapper<>();
|
||||||
lqw.in("os.user_id",userIds);
|
lqw.in("os.user_id",userIds);
|
||||||
Date payTime = bo.getPayTime()!=null?bo.getPayTime():new Date();
|
|
||||||
Page<OaSalaryVo> result = baseMapper.selectStaffVoPage(pageQuery.build(), lqw,payTime);
|
Page<OaSalaryVo> result = baseMapper.selectStaffVoPage(pageQuery.build(), lqw,payTime);
|
||||||
if (result.getRecords().isEmpty()){
|
if (result.getRecords().isEmpty()){
|
||||||
// 判断是否有当前月的记录 没有则进行创造新的记录
|
// 判断是否有当前月的记录 没有则进行创造新的记录
|
||||||
this.importSalaryUser();
|
this.importSalaryUser(payTime);
|
||||||
result = baseMapper.selectStaffVoPage(pageQuery.build(), lqw,payTime);
|
result = baseMapper.selectStaffVoPage(pageQuery.build(), lqw,payTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 写入真实薪资 为日薪乘以工作日-罚金
|
||||||
|
for (OaSalaryVo record : result.getRecords()) {
|
||||||
|
record.setRealSalary(record.getBaseSalary()*dayNum+record.getPunishSalary());
|
||||||
|
}
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public R<Void> importSalaryUser() {
|
public R<Void> importSalaryUser(Date payTime) {
|
||||||
List<SysUser> sysUsers = userService.selectUserList2();
|
List<SysUser> sysUsers = userService.selectUserList2();
|
||||||
baseMapper.delByPayTime(new Date());
|
baseMapper.delByPayTime(payTime);
|
||||||
for (SysUser user : sysUsers) {
|
for (SysUser user : sysUsers) {
|
||||||
if(Objects.nonNull(user)){
|
if(Objects.nonNull(user)){
|
||||||
OaSalary oaSalary = new OaSalary();
|
OaSalary oaSalary = new OaSalary();
|
||||||
oaSalary.setUserId(user.getUserId());
|
oaSalary.setUserId(user.getUserId());
|
||||||
oaSalary.setBaseSalary(Double.valueOf(user.getLaborCost()));
|
oaSalary.setBaseSalary(Double.valueOf(user.getLaborCost()));
|
||||||
oaSalary.setPayTime(new Date());
|
oaSalary.setPayTime(payTime);
|
||||||
baseMapper.insert(oaSalary);
|
baseMapper.insert(oaSalary);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
@@ -217,12 +235,13 @@ public class OaSalaryServiceImpl implements IOaSalaryService {
|
|||||||
// 2拿到所有的用户
|
// 2拿到所有的用户
|
||||||
Date yearMonth = StringToDate(combineYearMonth(bo.getMonthStr()));
|
Date yearMonth = StringToDate(combineYearMonth(bo.getMonthStr()));
|
||||||
// 添加去重思想 即拿到月份如果之前计算过,则将原来的全部删掉然后新增新的
|
// 添加去重思想 即拿到月份如果之前计算过,则将原来的全部删掉然后新增新的
|
||||||
baseMapper.delByPayTime(yearMonth);
|
// baseMapper.delByPayTime(yearMonth);
|
||||||
|
baseMapper.delItemByPayYearMonth(yearMonth);
|
||||||
|
|
||||||
List<SysUser> sysUsers = userService.selectUserList2();
|
List<SysUser> sysUsers = userService.selectUserList2();
|
||||||
// 3遍历user列表 拿出所有的nickName分别拿到他们的json 进行第二步分析
|
// 3遍历user列表 拿出所有的nickName分别拿到他们的json 进行第二步分析
|
||||||
for (SysUser user : sysUsers) {
|
for (SysUser user : sysUsers) {
|
||||||
OaSalary salary = baseMapper.selectVoByUserId(user.getUserId());
|
OaSalary salary = baseMapper.selectVoByUserId(user.getUserId(),yearMonth);
|
||||||
if (salary == null) {
|
if (salary == null) {
|
||||||
return jsonPath;
|
return jsonPath;
|
||||||
}
|
}
|
||||||
@@ -379,10 +398,10 @@ public class OaSalaryServiceImpl implements IOaSalaryService {
|
|||||||
List<String> days = new ArrayList<>();
|
List<String> days = new ArrayList<>();
|
||||||
for (String absentDate : res) {
|
for (String absentDate : res) {
|
||||||
String dateString = combineYearMonthAndDay(bo.getMonthStr(), absentDate);
|
String dateString = combineYearMonthAndDay(bo.getMonthStr(), absentDate);
|
||||||
Date date = StringToDate(dateString);
|
Date date = StringToDate2(dateString);
|
||||||
SysOaAttendanceBo sysOaAttendanceBo = new SysOaAttendanceBo();
|
SysOaAttendanceBo sysOaAttendanceBo = new SysOaAttendanceBo();
|
||||||
sysOaAttendanceBo.setCreateTime(date);
|
sysOaAttendanceBo.setCreateTime(date);
|
||||||
SysOaAttendanceVo sysOaAttendanceVo = sysOaAttendanceService.queryList(sysOaAttendanceBo).get(0);
|
SysOaAttendanceVo sysOaAttendanceVo = !sysOaAttendanceService.queryList(sysOaAttendanceBo).isEmpty() ?sysOaAttendanceService.queryList(sysOaAttendanceBo).get(0):null;
|
||||||
if (sysOaAttendanceVo != null && sysOaAttendanceVo.getProjectId()!=0) {
|
if (sysOaAttendanceVo != null && sysOaAttendanceVo.getProjectId()!=0) {
|
||||||
days.add(absentDate);
|
days.add(absentDate);
|
||||||
}
|
}
|
||||||
@@ -517,6 +536,21 @@ public class OaSalaryServiceImpl implements IOaSalaryService {
|
|||||||
return Date.from(instant);
|
return Date.from(instant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Date StringToDate2(String dateStr) {
|
||||||
|
System.out.println(dateStr);
|
||||||
|
// 1. 解析字符串到 YearMonth(只包含年和月)
|
||||||
|
YearMonth yearMonth = YearMonth.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||||
|
|
||||||
|
// 2. 在 YearMonth 基础上指定“日”为 1
|
||||||
|
LocalDate localDate = yearMonth.atDay(1);
|
||||||
|
|
||||||
|
// 3. 转成 Instant
|
||||||
|
Instant instant = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
|
||||||
|
|
||||||
|
// 4. 转成旧版本 Date
|
||||||
|
return Date.from(instant);
|
||||||
|
}
|
||||||
|
|
||||||
private String DateToString(Date date) {
|
private String DateToString(Date date) {
|
||||||
// 2. 构造解析器,指定格式。例如 "yyyy-MM-dd"
|
// 2. 构造解析器,指定格式。例如 "yyyy-MM-dd"
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
|||||||
@@ -234,5 +234,15 @@ public class SysOaHolidayServiceImpl implements ISysOaHolidayService {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询这个月的工作日数量
|
||||||
|
* @param payTime
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Long queryWorkDayNumByMonth(Date payTime) {
|
||||||
|
return baseMapper.queryWorkDayNumByMonth(payTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,6 +73,8 @@
|
|||||||
LEFT JOIN sys_user su
|
LEFT JOIN sys_user su
|
||||||
ON su.user_id = eo.user_id
|
ON su.user_id = eo.user_id
|
||||||
${ew.getCustomSqlSegment}
|
${ew.getCustomSqlSegment}
|
||||||
|
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
<result property="delFlag" column="del_flag"/>
|
<result property="delFlag" column="del_flag"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="nickName" column="nick_name"/>
|
<result property="nickName" column="nick_name"/>
|
||||||
|
<result property="punishSalary" column="punish_salary"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
@@ -25,51 +26,56 @@
|
|||||||
WHERE YEAR(pay_time) = YEAR(#{payTime})
|
WHERE YEAR(pay_time) = YEAR(#{payTime})
|
||||||
AND MONTH(pay_time) = MONTH(#{payTime})
|
AND MONTH(pay_time) = MONTH(#{payTime})
|
||||||
</delete>
|
</delete>
|
||||||
|
<delete id="delItemByPayYearMonth" parameterType="Date">
|
||||||
|
DELETE FROM oa_salary_item
|
||||||
|
WHERE YEAR(sign_time) = YEAR(#{payTime})
|
||||||
|
AND MONTH(sign_time) = MONTH(#{payTime})
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
|
||||||
<select id="selectStaffVoPage" resultMap="OaSalaryResult">
|
<select id="selectStaffVoPage" resultMap="OaSalaryResult">
|
||||||
SELECT
|
SELECT
|
||||||
os.salary_id,
|
os.salary_id,
|
||||||
os.user_id,
|
os.user_id,
|
||||||
os.pay_time,
|
os.pay_time,
|
||||||
(
|
|
||||||
COALESCE(SUM(
|
|
||||||
CASE
|
|
||||||
WHEN osi.flag = 1 THEN osi.price
|
|
||||||
WHEN osi.flag = 0 THEN -osi.price
|
|
||||||
ELSE 0
|
|
||||||
END
|
|
||||||
), 0)
|
|
||||||
) AS real_salary,
|
|
||||||
osi.salary_item_id,
|
|
||||||
osi.sign_time,
|
|
||||||
su.nick_name,
|
su.nick_name,
|
||||||
labor_cost as base_salary
|
os.base_salary,
|
||||||
FROM oa_salary os
|
COALESCE(
|
||||||
LEFT JOIN oa_salary_item osi
|
SUM(
|
||||||
ON osi.salary_id = os.salary_id
|
CASE
|
||||||
AND YEAR(osi.sign_time) = YEAR(#{payTime})
|
WHEN osi.flag = 1 THEN osi.price
|
||||||
AND MONTH(osi.sign_time) = MONTH(#{payTime})
|
WHEN osi.flag = 0 THEN -osi.price
|
||||||
LEFT JOIN sys_user su ON os.user_id = su.user_id
|
ELSE 0
|
||||||
|
END
|
||||||
|
),
|
||||||
|
0
|
||||||
|
) AS punish_salary
|
||||||
|
FROM oa_salary os
|
||||||
|
LEFT JOIN oa_salary_item osi
|
||||||
|
ON osi.salary_id = os.salary_id
|
||||||
|
AND YEAR(osi.sign_time) = YEAR(#{payTime})
|
||||||
|
AND MONTH(osi.sign_time) = MONTH(#{payTime})
|
||||||
|
AND osi.del_flag = '0'
|
||||||
|
LEFT JOIN sys_user su
|
||||||
|
ON os.user_id = su.user_id
|
||||||
${ew.customSqlSegment}
|
${ew.customSqlSegment}
|
||||||
and
|
AND YEAR(os.pay_time) = YEAR(#{payTime})
|
||||||
YEAR(os.pay_time) = YEAR(#{payTime})
|
AND MONTH(os.pay_time) = MONTH(#{payTime})
|
||||||
AND MONTH(os.pay_time) = MONTH(#{payTime})
|
GROUP BY
|
||||||
GROUP BY
|
|
||||||
os.salary_id,
|
os.salary_id,
|
||||||
os.user_id,
|
os.user_id,
|
||||||
os.pay_time,
|
os.pay_time,
|
||||||
os.base_salary,
|
su.nick_name,
|
||||||
osi.salary_item_id,
|
os.base_salary
|
||||||
osi.type,
|
|
||||||
osi.reason,
|
|
||||||
osi.price,
|
|
||||||
osi.sign_time
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<select id="selectVoByUserId" resultType="com.ruoyi.oa.domain.OaSalary">
|
<select id="selectVoByUserId" resultType="com.ruoyi.oa.domain.OaSalary">
|
||||||
select * from oa_salary where user_id = #{userId}
|
select * from oa_salary
|
||||||
|
where user_id = #{userId}
|
||||||
|
and YEAR(pay_time) = YEAR(#{yearMonth})
|
||||||
|
and MONTH(pay_time) = MONTH(#{yearMonth})
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectVoAndItemVoById" resultType="com.ruoyi.oa.domain.vo.OaSalaryVo">
|
<select id="selectVoAndItemVoById" resultType="com.ruoyi.oa.domain.vo.OaSalaryVo">
|
||||||
|
|||||||
@@ -38,4 +38,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="queryWorkDayNumByMonth" resultType="java.lang.Long">
|
||||||
|
SELECT
|
||||||
|
count(*)
|
||||||
|
FROM sys_oa_holiday soh
|
||||||
|
where (soh.type ='0' or soh.type ='3')
|
||||||
|
and YEAR(#{payTime}) = YEAR(soh.holiday_time)
|
||||||
|
and MONTH(#{payTime}) = MONTH(soh.holiday_time)
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user