日工工时、薪资核算部分接口修改

master 20
hshansha 7 months ago
parent cb836ffddd
commit 45f825b88b

@ -1,14 +1,19 @@
package com.ruoyi.pay.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.pay.domain.vo.ExportBaohuoVo;
import com.ruoyi.pay.domain.PayDayWorkHoursQuery;
import com.ruoyi.pay.domain.PayDwHoursContrast;
import com.ruoyi.pay.domain.vo.PayDayWorkHoursExport;
import com.ruoyi.pay.domain.vo.PayDayWorkHoursQuery2;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
@ -18,7 +23,6 @@ import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.core.validate.QueryGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.pay.domain.vo.PayDayWorkHoursVo;
@ -46,7 +50,7 @@ public class PayDayWorkHoursController extends BaseController {
@SaCheckPermission("pay:dayWorkHours:list")
@GetMapping("/list")
public TableDataInfo<PayDayWorkHoursVo> list(PayDayWorkHoursBo bo, PageQuery pageQuery) {
return iPayDayWorkHoursService.queryPageList(bo, pageQuery);
return iPayDayWorkHoursService.queryPageList2(bo, pageQuery);
}
/**
@ -55,9 +59,39 @@ public class PayDayWorkHoursController extends BaseController {
@SaCheckPermission("pay:dayWorkHours:export")
@Log(title = "日工工时", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(PayDayWorkHoursBo bo, HttpServletResponse response) {
List<PayDayWorkHoursVo> list = iPayDayWorkHoursService.queryList(bo);
ExcelUtil.exportExcel(list, "日工工时", PayDayWorkHoursVo.class, response);
public void export(PayDayWorkHoursQuery payDayWorkHoursQuery, HttpServletResponse response) {
List<PayDayWorkHoursQuery> list = iPayDayWorkHoursService.selectPayDayWorkHoursList2(payDayWorkHoursQuery);
List<PayDayWorkHoursExport> result = new ArrayList<>();
for(PayDayWorkHoursQuery query :list){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/* StringBuffer sTime=new StringBuffer("");
StringBuffer eTime=new StringBuffer("");
StringBuffer hours=new StringBuffer("");
StringBuffer ishelper=new StringBuffer("");
StringBuffer salesman=new StringBuffer("");*/
for(PayDwHoursContrast dwhours:query.getDwHoursContrasts()){
//创建每行的对象
PayDayWorkHoursExport export = new PayDayWorkHoursExport();
BeanUtils.copyProperties(query,export);
export.setStartTime(format.format(dwhours.getStartTime()));
export.setEndTime(format.format(dwhours.getEndTime()));
export.setHours(dwhours.getHours().doubleValue());
if(dwhours.getIsHelper()==1){
export.setIsHelper("是") ;
}else{
export.setIsHelper("否") ;
}
if(dwhours.getSalesman()==null){
export.setSalesman("") ;
}else{
export.setSalesman(dwhours.getSalesman()) ;
}
result.add(export);
}
}
ExcelUtil.exportExcel(result, "日工工时", PayDayWorkHoursExport.class, response);
}
/**
@ -79,8 +113,8 @@ public class PayDayWorkHoursController extends BaseController {
@Log(title = "日工工时", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody PayDayWorkHoursBo bo) {
return toAjax(iPayDayWorkHoursService.insertByBo(bo));
public R<Void> add(@Validated(AddGroup.class) @RequestBody PayDayWorkHoursQuery2 payDayWorkHoursQuery2) {
return iPayDayWorkHoursService.insertByBo(payDayWorkHoursQuery2);
}
/**
@ -90,8 +124,8 @@ public class PayDayWorkHoursController extends BaseController {
@Log(title = "日工工时", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PayDayWorkHoursBo bo) {
return toAjax(iPayDayWorkHoursService.updateByBo(bo));
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PayDayWorkHoursQuery bo) {
return iPayDayWorkHoursService.updateByBo(bo);
}
/**

@ -4,6 +4,7 @@ import java.util.List;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
import com.ruoyi.pay.domain.PaySalaryReport;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
@ -45,6 +46,10 @@ public class PaySalaryReportController extends BaseController {
@SaCheckPermission("pay:salaryReport:list")
@GetMapping("/list")
public TableDataInfo<PaySalaryReportVo> list(PaySalaryReportBo bo, PageQuery pageQuery) {
//默认查询最近一个月的工资
if(bo.getYear()==null&&bo.getMonth()==null&&bo.getDeptId()==null&&bo.getEmployeeId()==null){
return iPaySalaryReportService.queryLastMonthReport(bo.getTenantId(), pageQuery);
}
return iPaySalaryReportService.queryPageList(bo, pageQuery);
}
@ -92,6 +97,16 @@ public class PaySalaryReportController extends BaseController {
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PaySalaryReportBo bo) {
return toAjax(iPaySalaryReportService.updateByBo(bo));
}
/**
*
*/
@SaCheckPermission("pay:salaryReport:edit")
@Log(title = "工资明细总", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/onoff")
public R<Void> onOff( @RequestBody PaySalaryReport entity) {
return toAjax(iPaySalaryReportService.updateByBo2(entity));
}
/**
*

@ -0,0 +1,48 @@
package com.ruoyi.pay.domain.vo;
public class PayDayWorkEmps {
private Long deptId;
//** 员工部门名称 *//*
private String deptName;
//** 员工id *//*
private Long employeeId;
//** 员工姓名 *//*
//@Excel(name = "员工姓名")
private String empName;
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public Long getEmployeeId() {
return employeeId;
}
public void setEmployeeId(Long employeeId) {
this.employeeId = employeeId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
}

@ -0,0 +1,205 @@
package com.ruoyi.pay.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
public class PayDayWorkHoursExport {
/** 主键 */
private Long id;
/** 员工部门id */
// @ExcelProperty(value= "员工部门id")
private Long deptId;
/** 员工部门名称 */
@ExcelProperty(value= "员工部门名称")
private String deptName;
/** 员工id */
//@ExcelProperty(value= "员工id")
private Long employeeId;
/** 员工姓名 */
@ExcelProperty(value= "员工姓名")
private String empName;
/** 日工日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@ExcelProperty(value= "日工日期")
private Date date;
/** 日工年月 */
// @ExcelProperty(value= "日工年月")
private String dwYearMonth;
/** 备注 */
// @ExcelProperty(value= "备注")
private String note;
/**
*
*/
/** 开始时间 */
@ExcelProperty(value= "开始时间")
private String startTime;
/** 结束时间 */
@ExcelProperty(value= "结束时间")
private String endTime;
/** 时长 */
@ExcelProperty(value= "时长")
private Double hours;
/** 业务员 */
@ExcelProperty(value= "业务员")
private String salesman;
/** 是否帮工 (0:否 1:是) */
@ExcelProperty(value= "是否帮工")
private String isHelper;
/** 工时部门 */
//@ExcelProperty(value= "工时部门")
private String deptName2;
public String getDeptName2() {
return deptName2;
}
public void setDeptName2(String deptName2) {
this.deptName2 = deptName2;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public Double getHours() {
return hours;
}
public void setHours(Double hours) {
this.hours = hours;
}
public String getIsHelper() {
return isHelper;
}
public void setIsHelper(String isHelper) {
this.isHelper = isHelper;
}
public String getSalesman() {
return salesman;
}
public void setSalesman(String salesman) {
this.salesman = salesman;
}
public String getDwYearMonth() {
return dwYearMonth;
}
public void setDwYearMonth(String dwYearMonth) {
this.dwYearMonth = dwYearMonth;
}
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setDeptId(Long deptId)
{
this.deptId = deptId;
}
public Long getDeptId()
{
return deptId;
}
public void setDeptName(String deptName)
{
this.deptName = deptName;
}
public String getDeptName()
{
return deptName;
}
public void setEmployeeId(Long employeeId)
{
this.employeeId = employeeId;
}
public Long getEmployeeId()
{
return employeeId;
}
public void setEmpName(String empName)
{
this.empName = empName;
}
public String getEmpName()
{
return empName;
}
public void setDate(Date date)
{
this.date = date;
}
public Date getDate()
{
return date;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("deptId", getDeptId())
.append("deptName", getDeptName())
.append("employeeId", getEmployeeId())
.append("empName", getEmpName())
.append("date", getDate())
.append("dwYearMonth", getDwYearMonth())
.append("note", getNote())
.toString();
}
}

@ -0,0 +1,122 @@
package com.ruoyi.pay.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.pay.domain.PayDwHoursContrast;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
import java.util.List;
public class PayDayWorkHoursQuery2 {
private static final long serialVersionUID = 1L;
/* *//** 员工部门id *//*
@Excel(name = "员工部门id")
private Long deptId;
*//** 员工部门名称 *//*
@Excel(name = "员工部门名称")
private String deptName;
*//** 员工id *//*
@Excel(name = "员工id")
private Long employeeId;
*//** 员工姓名 *//*
@Excel(name = "员工姓名")
private String empName;*/
/**
*
*/
private List<PayDayWorkEmps> empInfos;
/** 日工日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@ExcelProperty(value = "日工日期")
private Date date;
/** 日工年月 */
@ExcelProperty(value = "日工年月")
private String dwYearMonth;
/** 备注 */
@ExcelProperty(value = "备注")
private String note;
/**
* 便
*/
private String salesman;
public String getSalesman() {
return salesman;
}
public void setSalesman(String salesman) {
this.salesman = salesman;
}
/**
*
*/
private List<PayDwHoursContrast> dwHoursContrasts;
public String getDwYearMonth() {
return dwYearMonth;
}
public void setDwYearMonth(String dwYearMonth) {
this.dwYearMonth = dwYearMonth;
}
public List<PayDayWorkEmps> getEmpInfos() {
return empInfos;
}
public void setEmpInfos(List<PayDayWorkEmps> empInfos) {
this.empInfos = empInfos;
}
public List<PayDwHoursContrast> getDwHoursContrasts() {
return dwHoursContrasts;
}
public void setDwHoursContrasts(List<PayDwHoursContrast> dwHoursContrasts) {
this.dwHoursContrasts = dwHoursContrasts;
}
public void setDate(Date date)
{
this.date = date;
}
public Date getDate()
{
return date;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
/* .append("id", getId())
.append("deptId", getDeptId())
.append("deptName", getDeptName())
.append("employeeId", getEmployeeId())
.append("empName", getEmpName())*/
.append("date", getDate())
.append("dwYearMonth", getDwYearMonth())
.append("note", getNote())
.append("dwHoursContrasts", getDwHoursContrasts())
.append("empInfos",getEmpInfos())
.toString();
}
}

@ -1,9 +1,13 @@
package com.ruoyi.pay.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.pay.domain.PayDayWorkHours;
import com.ruoyi.pay.domain.PayDayWorkHoursQuery;
import com.ruoyi.pay.domain.vo.PayDayWorkHoursVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -16,4 +20,6 @@ import java.util.List;
public interface PayDayWorkHoursMapper extends BaseMapperPlus<PayDayWorkHoursMapper, PayDayWorkHours, PayDayWorkHoursVo> {
List<PayDayWorkHoursQuery> selectPayDayWorkHoursList2(PayDayWorkHoursQuery sgrDayWorkHoursQuery);
Page<PayDayWorkHoursVo> selectVoPage2(@Param("page") Page<Object> page, @Param(Constants.WRAPPER)LambdaQueryWrapper<PayDayWorkHours> ew);
}

@ -3,6 +3,7 @@ package com.ruoyi.pay.mapper;
import com.ruoyi.pay.domain.PayDwHoursContrast;
import com.ruoyi.pay.domain.vo.PayDwHoursContrastVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Delete;
/**
* Mapper
@ -11,5 +12,6 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
* @date 2025-05-12
*/
public interface PayDwHoursContrastMapper extends BaseMapperPlus<PayDwHoursContrastMapper, PayDwHoursContrast, PayDwHoursContrastVo> {
@Delete("delete from pay_dw_hours_contrast where dw_hours_id = #{id}")
int deleteSgrDwHoursContrastByDwHoursId(Long id);
}

@ -1,8 +1,12 @@
package com.ruoyi.pay.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.pay.domain.PaySalaryReport;
import com.ruoyi.pay.domain.vo.PaySalaryReportVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
@ -12,4 +16,5 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
*/
public interface PaySalaryReportMapper extends BaseMapperPlus<PaySalaryReportMapper, PaySalaryReport, PaySalaryReportVo> {
Page<PaySalaryReportVo> queryLastMonthReport(@Param("page") Page<Object> page, @Param(Constants.WRAPPER)LambdaQueryWrapper<PaySalaryReport> ew);
}

@ -1,6 +1,9 @@
package com.ruoyi.pay.service;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.pay.domain.PayDayWorkHours;
import com.ruoyi.pay.domain.PayDayWorkHoursQuery;
import com.ruoyi.pay.domain.vo.PayDayWorkHoursQuery2;
import com.ruoyi.pay.domain.vo.PayDayWorkHoursVo;
import com.ruoyi.pay.domain.bo.PayDayWorkHoursBo;
import com.ruoyi.common.core.page.TableDataInfo;
@ -35,15 +38,19 @@ public interface IPayDayWorkHoursService {
/**
*
*/
Boolean insertByBo(PayDayWorkHoursBo bo);
R<Void> insertByBo(PayDayWorkHoursQuery2 payDayWorkHoursQuery2);
/**
*
*/
Boolean updateByBo(PayDayWorkHoursBo bo);
R<Void> updateByBo(PayDayWorkHoursQuery sgrDayWorkHoursQuery);
/**
*
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
public List<PayDayWorkHoursQuery> selectPayDayWorkHoursList2(PayDayWorkHoursQuery sgrDayWorkHoursQuery);
TableDataInfo<PayDayWorkHoursVo> queryPageList2(PayDayWorkHoursBo bo, PageQuery pageQuery);
}

@ -42,8 +42,13 @@ public interface IPaySalaryReportService {
*/
Boolean updateByBo(PaySalaryReportBo bo);
Boolean updateByBo2(PaySalaryReport entity);
/**
*
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
TableDataInfo<PaySalaryReportVo> queryLastMonthReport(Long tenantId, PageQuery pageQuery);
}

@ -1,24 +1,33 @@
package com.ruoyi.pay.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.pay.domain.PayDayWorkHoursQuery;
import com.ruoyi.pay.domain.*;
import com.ruoyi.pay.domain.bo.PayAttendanceBo;
import com.ruoyi.pay.domain.bo.PayBaohuoWorktimeBo;
import com.ruoyi.pay.domain.bo.PayWorkTimeBo;
import com.ruoyi.pay.domain.vo.*;
import com.ruoyi.pay.mapper.PayAttendanceMapper;
import com.ruoyi.pay.mapper.PayDwHoursContrastMapper;
import com.ruoyi.pay.service.IPayAttendanceService;
import com.ruoyi.pay.service.IPayBaohuoWorktimeService;
import com.ruoyi.pay.service.IPayWorkTimeService;
import com.ruoyi.pay.util.DateCompareUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.pay.domain.bo.PayDayWorkHoursBo;
import com.ruoyi.pay.domain.vo.PayDayWorkHoursVo;
import com.ruoyi.pay.domain.PayDayWorkHours;
import com.ruoyi.pay.mapper.PayDayWorkHoursMapper;
import com.ruoyi.pay.service.IPayDayWorkHoursService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* Service
@ -31,6 +40,10 @@ import java.util.Collection;
public class PayDayWorkHoursServiceImpl implements IPayDayWorkHoursService {
private final PayDayWorkHoursMapper baseMapper;
private final IPayAttendanceService attendanceService;
private final IPayWorkTimeService workTimeService;
private final IPayBaohuoWorktimeService baohuoWorktimeService;
private final PayDwHoursContrastMapper dwHoursContrastMapper;
/**
*
@ -49,6 +62,15 @@ public class PayDayWorkHoursServiceImpl implements IPayDayWorkHoursService {
Page<PayDayWorkHoursVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*/
@Override
public TableDataInfo<PayDayWorkHoursVo> queryPageList2(PayDayWorkHoursBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<PayDayWorkHours> lqw = buildQueryWrapper(bo);
Page<PayDayWorkHoursVo> result = baseMapper.selectVoPage2(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
@ -77,24 +99,131 @@ public class PayDayWorkHoursServiceImpl implements IPayDayWorkHoursService {
*
*/
@Override
public Boolean insertByBo(PayDayWorkHoursBo bo) {
PayDayWorkHours add = BeanUtil.toBean(bo, PayDayWorkHours.class);
@Transactional
public R<Void> insertByBo(PayDayWorkHoursQuery2 payDayWorkHoursQuery2) {
//先拆分员工 然后每个员工信息存储到SgrDayWorkHoursQuery集合中
List<PayDayWorkHoursQuery> querys = new ArrayList<>();
for(PayDayWorkEmps emp :payDayWorkHoursQuery2.getEmpInfos()){
PayDayWorkHoursQuery payDayWorkHoursQuery = new PayDayWorkHoursQuery();
payDayWorkHoursQuery.setEmpName(emp.getEmpName());
payDayWorkHoursQuery.setEmployeeId(emp.getEmployeeId());
payDayWorkHoursQuery.setDeptId(emp.getDeptId());
payDayWorkHoursQuery.setDeptName(emp.getDeptName());
payDayWorkHoursQuery.setDwHoursContrasts(payDayWorkHoursQuery2.getDwHoursContrasts());
payDayWorkHoursQuery.setDwYearMonth(payDayWorkHoursQuery2.getDwYearMonth());
payDayWorkHoursQuery.setDate(payDayWorkHoursQuery2.getDate());
querys.add(payDayWorkHoursQuery);
}
//验证每个员工信息是否符合添加条件 不符合则提示退出
for(PayDayWorkHoursQuery sgrDayWorkHoursQuery:querys){
//1.已有该员工该日期的工时工单
String rigongDate = new SimpleDateFormat("yyyy-MM-dd").format(sgrDayWorkHoursQuery.getDate());
PayDayWorkHoursBo payDayWorkHours = new PayDayWorkHoursBo();
payDayWorkHours.setDate(sgrDayWorkHoursQuery.getDate());
payDayWorkHours.setEmployeeId(sgrDayWorkHoursQuery.getEmployeeId());
List<PayDayWorkHoursVo> sgrDayWorkHourss = this.queryList(payDayWorkHours);
if (sgrDayWorkHourss != null && sgrDayWorkHourss.size() > 0) {
//return AjaxResult.error("已有员工该日期的工时信息");
return R.fail(("新增失败,已有"+sgrDayWorkHoursQuery.getEmpName()+"员工"+rigongDate+"的工时信息"));
}
Integer cmresult = compareTimes(sgrDayWorkHoursQuery);
switch (cmresult) {
case 0:
break;
/* case -1:
return AjaxResult.error("喷塑生产,"+sgrDayWorkHoursQuery.getEmpName()+"考勤需要有上午上班时间和下午下班时间");*/
case -2:
return R.fail("新增失败," + sgrDayWorkHoursQuery.getEmpName() + "考勤时间录入不全");
case -3:
return R.fail("新增失败,请先录入" + sgrDayWorkHoursQuery.getEmpName() + "考勤信息");
case -4:
return R.fail("新增失败," + sgrDayWorkHoursQuery.getEmpName() + "工时时间段不在考勤范围内");
case -5:
return R.fail("新增失败," + sgrDayWorkHoursQuery.getEmpName() + "工时时间段与流程卡工单时间段重叠");
case -6:
return R.fail("新增失败," + sgrDayWorkHoursQuery.getEmpName() + "工时时间段与包活工单时间段重叠");
}
}
//遍历存储员工信息
for(PayDayWorkHoursQuery sgrDayWorkHoursQuery:querys){
//保存员工工时信息
sgrDayWorkHoursQuery.setDwYearMonth(getYearMonth(sgrDayWorkHoursQuery));
PayDayWorkHours payDayWorkHour = BeanUtil.toBean(sgrDayWorkHoursQuery, PayDayWorkHours.class);
int result = baseMapper.insert(payDayWorkHour);
//存员工当日工作时间段
if (result > 0) {
List<PayDwHoursContrast> sgrDwHoursContrasts = sgrDayWorkHoursQuery.getDwHoursContrasts();
sgrDwHoursContrasts.parallelStream().forEachOrdered(sgrDwHoursContrast -> {
sgrDwHoursContrast.setDwHoursId(sgrDayWorkHoursQuery.getId());
if (sgrDwHoursContrast.getIsHelper() == 0) {//当不是帮工时 直接存员工的部门
sgrDwHoursContrast.setDeptId(sgrDayWorkHoursQuery.getDeptId());
sgrDwHoursContrast.setDeptName(sgrDayWorkHoursQuery.getDeptName());
}
sgrDwHoursContrast.setHours(DateCompareUtil.getDatePoor(sgrDwHoursContrast.getStartTime(),sgrDwHoursContrast.getEndTime()));
dwHoursContrastMapper.insert(sgrDwHoursContrast);
});
}else{
return R.ok("系统存储数据库过程中出现故障!");
}
}
/*PayDayWorkHours add = BeanUtil.toBean(bo, PayDayWorkHours.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}*/
return R.ok();
}
/**
*
*/
@Override
public Boolean updateByBo(PayDayWorkHoursBo bo) {
PayDayWorkHours update = BeanUtil.toBean(bo, PayDayWorkHours.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
@Transactional
public R<Void> updateByBo(PayDayWorkHoursQuery sgrDayWorkHoursQuery) {
Integer cmresult = compareTimes(sgrDayWorkHoursQuery);
switch (cmresult) {
case 0:
break;
/* case -1://喷塑生产特殊情况1天只打2次卡 在此时间段完成校验
return AjaxResult.error("喷塑生产,"+sgrDayWorkHoursQuery.getEmpName()+"考勤需要有上午上班时间和下午下班时间");*/
case -2:
return R.fail("修改失败,"+sgrDayWorkHoursQuery.getEmpName()+"考勤时间录入不全");
case -3:
return R.fail("修改失败,请先录入"+sgrDayWorkHoursQuery.getEmpName()+"考勤信息");
case -4:
return R.fail("修改失败,"+sgrDayWorkHoursQuery.getEmpName()+"工时时间段不在考勤范围内");
case -5:
return R.fail("修改失败,"+sgrDayWorkHoursQuery.getEmpName()+"工时时间段与流程卡工单时间段重叠");
case -6:
return R.fail("修改失败,"+sgrDayWorkHoursQuery.getEmpName()+"工时时间段与包活工单时间段重叠");
}
//保存工时信息
sgrDayWorkHoursQuery.setDwYearMonth(getYearMonth(sgrDayWorkHoursQuery));
PayDayWorkHours payDayWorkHour = BeanUtil.toBean(sgrDayWorkHoursQuery, PayDayWorkHours.class);
int result = baseMapper.insert(payDayWorkHour);
//存员工当日工作时间段
if (result > 0) {
//采用先删除对应的时间段,然后重新添加的方式
int delNum = dwHoursContrastMapper.deleteSgrDwHoursContrastByDwHoursId(sgrDayWorkHoursQuery.getId());
if (delNum <= 0) {
return R.fail("操作失败"); //删除失败直接返回
}
//重新插入时间段
List<PayDwHoursContrast> sgrDwHoursContrasts = sgrDayWorkHoursQuery.getDwHoursContrasts();
sgrDwHoursContrasts.parallelStream().forEachOrdered(sgrDwHoursContrast -> {
sgrDwHoursContrast.setDwHoursId(sgrDayWorkHoursQuery.getId());
if (sgrDwHoursContrast.getIsHelper() == 0) {//当不是帮工时 直接存员工的部门
sgrDwHoursContrast.setDeptId(sgrDayWorkHoursQuery.getDeptId());
sgrDwHoursContrast.setDeptName(sgrDayWorkHoursQuery.getDeptName());
}
sgrDwHoursContrast.setHours(DateCompareUtil.getDatePoor(sgrDwHoursContrast.getStartTime(),sgrDwHoursContrast.getEndTime()));
dwHoursContrastMapper.insert(sgrDwHoursContrast);
});
}
return R.ok();
}
/**
@ -114,8 +243,122 @@ public class PayDayWorkHoursServiceImpl implements IPayDayWorkHoursService {
}
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public List<PayDayWorkHoursQuery> selectPayDayWorkHoursList2(PayDayWorkHoursQuery sgrDayWorkHoursQuery) {
return baseMapper.selectPayDayWorkHoursList2(sgrDayWorkHoursQuery);
}
/**
*
* @param sgrDayWorkHoursQuery
* @return
*/
public int compareTimes(PayDayWorkHoursQuery sgrDayWorkHoursQuery) {
//日工工时时间段与考勤时间比较,与包活时间比较 不能重复
boolean ispentu = false; //标记是否为喷塑生产部门
Date kqStartAm = null;
Date kqEndAm = null;
Date kqStartPm = null;
Date kqEndPm = null;
//获取员工当日的考勤记录
PayAttendanceBo attendance = new PayAttendanceBo();
attendance.setKaoqinDate(sgrDayWorkHoursQuery.getDate());
attendance.setEmpName(sgrDayWorkHoursQuery.getEmpName());
List<PayAttendanceVo> kaoqins = attendanceService.queryList(attendance);
//根据员工
if (kaoqins != null && kaoqins.size() > 0) {
kqStartAm = kaoqins.get(0).getAmStartTime();
kqEndAm = kaoqins.get(0).getAmEndTime();
kqStartPm = kaoqins.get(0).getPmStartTime();
kqEndPm = kaoqins.get(0).getPmEndTime();
//喷塑生产部门一天只打两次卡校验 (第二次修改为喷塑生产不校验考勤)
if(sgrDayWorkHoursQuery.getDeptName().equals("喷塑生产")){
ispentu=true;
/*if(kqStartAm == null||kqEndPm == null){
return -1;
}*/
}else if ((kqStartAm == null || kqEndAm == null) && (kqStartPm == null || kqEndPm == null)) {
//return AjaxResult.error("考勤时间录入不全,无法比对");
return -2;
}
} else {
//return AjaxResult.error("不能做时间比对,请先录入考勤信息");
return -3;
}
//获取包活及流程卡当日的时间段信息
PayWorkTimeBo workTime = new PayWorkTimeBo();
workTime.setEmpId(sgrDayWorkHoursQuery.getEmployeeId());
workTime.setDate(sgrDayWorkHoursQuery.getDate());
List<PayWorkTimeVo> sgrWorkTimes = workTimeService.queryList(workTime);
PayBaohuoWorktimeBo bhworkTime = new PayBaohuoWorktimeBo();
bhworkTime.setEmpId(sgrDayWorkHoursQuery.getEmployeeId());
bhworkTime.setDate(sgrDayWorkHoursQuery.getDate());
List<PayBaohuoWorktimeVo> bhworkTimes =baohuoWorktimeService.queryList(bhworkTime);
//开始比对
List<PayDwHoursContrast> dwHoursContrasts = sgrDayWorkHoursQuery.getDwHoursContrasts();
for (PayDwHoursContrast dwHours : dwHoursContrasts) {
Date start2 = dwHours.getStartTime();
Date end2 = dwHours.getEndTime();
boolean contain = true; //默认包含
if(ispentu){
//后来修改为喷涂生产不校验考勤时间
/*if (!DateCompareUtil.isContain(kqStartAm, kqEndPm, start2, end2)) {
contain = false;
}*/
}else{
//判断时间段是否为上午包含 还是 下午包含
if (kqStartAm != null && kqEndAm != null) {
if (!DateCompareUtil.isContain(kqStartAm, kqEndAm, start2, end2)) {
contain = false;
}
}
//当上午考勤都为null时
if(kqStartAm == null || kqEndAm == null){
contain = false;
}
if (!contain) {
if (kqStartPm != null && kqEndPm != null) {
if (DateCompareUtil.isContain(kqStartPm, kqEndPm, start2, end2)) {
contain = true;
}
}
}
}
if (!contain) {
//return AjaxResult.error("工时时间段不在考勤范围内");
return -4;
} else {
//获取该员工当天的流程卡信息 做时间重叠比对
if (sgrWorkTimes != null && sgrWorkTimes.size() > 0) {
for (PayWorkTimeVo wtime : sgrWorkTimes) {
if (DateCompareUtil.isOverlapping(start2, end2, wtime.getStime(), wtime.getEtime())) {
//return AjaxResult.error("工时时间段与流程卡工单时间段重叠");
return -5;
}
}
}
//获取该员工当天的包活信息 做时间重叠比对
if (bhworkTimes != null && bhworkTimes.size() > 0) {
for (PayBaohuoWorktimeVo bhtime : bhworkTimes) {
if (DateCompareUtil.isOverlapping(start2, end2, bhtime.getStime(), bhtime.getEtime())) {
//return AjaxResult.error("工时时间段与包活工单时间段重叠");
return -6;
}
}
}
}
}
return 0;
}
public String getYearMonth(PayDayWorkHoursQuery payDayWorkHoursQuery){
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM");
Calendar cal = Calendar.getInstance();
cal.setTime(payDayWorkHoursQuery.getDate());
return ft.format(cal.getTime());
}
}

@ -1,6 +1,7 @@
package com.ruoyi.pay.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;
@ -49,6 +50,17 @@ public class PaySalaryReportServiceImpl implements IPaySalaryReportService {
return TableDataInfo.build(result);
}
/**
*
*/
@Override
public TableDataInfo<PaySalaryReportVo> queryLastMonthReport(Long tenantId, PageQuery pageQuery) {
LambdaQueryWrapper<PaySalaryReport> lqw = new LambdaQueryWrapper<>();
lqw.eq(tenantId != null, PaySalaryReport::getTenantId, tenantId);
Page<PaySalaryReportVo> result = baseMapper.queryLastMonthReport(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*/
@ -119,6 +131,14 @@ public class PaySalaryReportServiceImpl implements IPaySalaryReportService {
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
@Override
public Boolean updateByBo2(PaySalaryReport entity) {
PaySalaryReportBo bo = BeanUtil.toBean(entity, PaySalaryReportBo.class);
UpdateWrapper<PaySalaryReport> upw =new UpdateWrapper<>();
upw.set(bo.getEmpQuery() != null,"emp_query",bo.getEmpQuery())
.eq("year",entity.getYear()).eq("month",entity.getMonth());
return baseMapper.update(entity,upw) > 0;
}
/**
*
@ -137,4 +157,5 @@ public class PaySalaryReportServiceImpl implements IPaySalaryReportService {
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

@ -53,12 +53,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="note != null and note != ''"> and note = #{note}</if>
</where>
</select>
<!-- <select id="selectVoPage2" parameterType="PayDayWorkHoursBo" resultMap="PayDayWorkHoursQueryResult">
<select id="selectVoPage2" resultMap="PayDayWorkHoursQueryResult">
select d.*,c.start_time con_start,c.end_time con_end,c.is_helper con_helper,c.hours con_hours,c.salesman con_salesman from pay_day_work_hours d join pay_dw_hours_contrast c
on d.id=c.dw_hours_id
${ew.customSqlSegment}
</select>-->
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

@ -40,5 +40,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="empQuery" column="emp_query"/>
</resultMap>
<select id="queryLastMonthReport" resultMap="PaySalaryReportResult">
SELECT * FROM `pay_salary_report` s
where s.year=(select max(year) maxYear from `pay_salary_report` ${ew.customSqlSegment})
and s.`month`=(select max(month) from `pay_salary_report` where `year`= select max(year) maxYear from `pay_salary_report` ${ew.customSqlSegment})
${ew.customSqlSegment}
</select>
</mapper>

Loading…
Cancel
Save