From 179c3e332f4476e2db1286a7aaaf7e67b7cabf79 Mon Sep 17 00:00:00 2001 From: hshansha Date: Thu, 29 May 2025 10:12:47 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=91=98=E5=B7=A5=E8=A1=A5=E8=B4=B4bug?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/common/core/mapper/BaseMapperPlus.java | 2 +- .../java/com/ruoyi/framework/config/MybatisPlusConfig.java | 4 ++-- .../com/ruoyi/pay/controller/PayButieEmplyeeController.java | 1 + .../ruoyi/pay/service/impl/PayButieEmplyeeServiceImpl.java | 4 +++- .../java/com/ruoyi/pay/service/impl/PayButieServiceImpl.java | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/mapper/BaseMapperPlus.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/mapper/BaseMapperPlus.java index 188d300..db1b6d5 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/mapper/BaseMapperPlus.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/mapper/BaseMapperPlus.java @@ -195,7 +195,7 @@ public interface BaseMapperPlus extends BaseMapper { * * @return 成功标志 */ - @Select("DELETE FROM pay_butie_emplyee WHERE date = #{thisMonth} and tenant_id=#{tenantId}") + @Select("DELETE FROM pay_butie_emplyee WHERE date = #{month} and tenant_id=#{tenantId}") void deleteSgrButieEmplyeeByDate(@Param("month") String month,@Param("tenantId") Long tenantId); @Select("SELECT COUNT(*) FROM pay_butie_emplyee WHERE date = #{month}") diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java index 4e214d9..a9c5b98 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java @@ -55,7 +55,7 @@ public class MybatisPlusConfig { @Override public boolean ignoreTable(String tableName) { // 判断是否登录,如果登录则过滤 - if (StpUtil.getLoginIdDefaultNull() != null) { + /* if (StpUtil.getLoginIdDefaultNull() != null) { // 判断是否平台超级管理员,如果是平台超级管理员则拥有所有数据权限 if (!LoginHelper.isAdmin(LoginHelper.getLoginUser().getUserId())) { // 需要拼接租户条件的表 @@ -88,7 +88,7 @@ public class MybatisPlusConfig { // 判断tableName是否在tenantTables中, 在的话返回false, 不在的话返回true return !list.contains(tableName.toLowerCase(Locale.ROOT)); } - } + }*/ return true; } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayButieEmplyeeController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayButieEmplyeeController.java index b4aac56..6d11058 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayButieEmplyeeController.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayButieEmplyeeController.java @@ -159,6 +159,7 @@ public class PayButieEmplyeeController extends BaseController { } PayEmployeeInfoBo employeeInfo = new PayEmployeeInfoBo(); employeeInfo.setId(bo.getEmployeeId()); + employeeInfo.setTenantId(bo.getTenantId()); TableDataInfo payEmployeeTableDataInfo = employeeInfoService.queryPageList(employeeInfo, pageQuery); List butieSummaryVos = this.buildEmployeeInfo(payEmployeeTableDataInfo.getRows(), date); return TableDataInfo.build(butieSummaryVos); diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayButieEmplyeeServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayButieEmplyeeServiceImpl.java index b791e86..98db1ab 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayButieEmplyeeServiceImpl.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayButieEmplyeeServiceImpl.java @@ -151,7 +151,9 @@ public class PayButieEmplyeeServiceImpl implements IPayButieEmplyeeService { baseMapper.deleteSgrButieEmplyeeByDate(month,tenantId); PayButieBo bo = new PayButieBo(); bo.setTenantId(tenantId); - List butieList = butieService.queryList(null); // 获取补贴列表 + PayButieBo pbt = new PayButieBo(); + pbt.setTenantId(tenantId); + List butieList = butieService.queryList(pbt); // 获取补贴列表 PayEmployeeInfoBo yg = new PayEmployeeInfoBo(); yg.setTenantId(tenantId); List employeeInfoList = employeeInfoService.queryList(yg);// 获取员工列表 diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayButieServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayButieServiceImpl.java index b77a067..86fa3e3 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayButieServiceImpl.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayButieServiceImpl.java @@ -59,7 +59,7 @@ public class PayButieServiceImpl implements IPayButieService { } private LambdaQueryWrapper buildQueryWrapper(PayButieBo bo) { - Map params = bo.getParams(); + // Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getTenantId() != null, PayButie::getTenantId, bo.getTenantId()); lqw.like(StringUtils.isNotBlank(bo.getName()), PayButie::getName, bo.getName()); From cb836ffddddf0751934af53b0dcafea1592add05 Mon Sep 17 00:00:00 2001 From: hshansha Date: Thu, 29 May 2025 11:35:40 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=8C=85=E6=B4=BB=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PayWorkOrderBaohuoController.java | 9 ++++++++- .../ruoyi/pay/mapper/PayWorkOrderBaohuoMapper.java | 4 ++++ .../pay/service/IPayWorkOrderBaohuoService.java | 3 +++ .../service/impl/PayWorkOrderBaohuoServiceImpl.java | 6 ++++++ .../mapper/pay/PayWorkOrderBaohuoMapper.xml | 13 +++++++++++++ 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderBaohuoController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderBaohuoController.java index 9034394..f1fc825 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderBaohuoController.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayWorkOrderBaohuoController.java @@ -51,7 +51,14 @@ public class PayWorkOrderBaohuoController extends BaseController { @SaCheckPermission("pay:workOrderBaohuo:list") @GetMapping("/list") public TableDataInfo list(PayWorkOrderBaohuoBo bo, PageQuery pageQuery) { - + bo.setDeleted(0); + if (ObjectUtil.isNotNull(bo.getWorkDate()) || ObjectUtil.isNotNull(bo.getEmpId())) { + HashSet woids = iPayWorkOrderBaohuoService.getWoIdSet(bo.getWorkDate(), bo.getEmpId()); + if (woids.isEmpty()) { + return TableDataInfo.build(new ArrayList<>()); + } + bo.setWoids(new ArrayList<>(woids)); + } return iPayWorkOrderBaohuoService.queryPageList(bo, pageQuery); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderBaohuoMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderBaohuoMapper.java index f18f77a..590e23b 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderBaohuoMapper.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayWorkOrderBaohuoMapper.java @@ -4,9 +4,11 @@ import com.ruoyi.pay.domain.PayWorkOrderBaohuo; import com.ruoyi.pay.domain.vo.PayWorkOrderBaohuoVo; import com.ruoyi.common.core.mapper.BaseMapperPlus; import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.Date; +import java.util.HashSet; import java.util.List; /** @@ -26,4 +28,6 @@ public interface PayWorkOrderBaohuoMapper extends BaseMapperPlus getWorkOrderListByDate(Date exportDate); + + HashSet getWoIdSet(@Param("workDate")String workDate, @Param("empId") Long empId); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderBaohuoService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderBaohuoService.java index fd0272b..ddf3a71 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderBaohuoService.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayWorkOrderBaohuoService.java @@ -10,6 +10,7 @@ import com.ruoyi.common.core.domain.PageQuery; import java.util.Collection; import java.util.Date; +import java.util.HashSet; import java.util.List; /** @@ -53,4 +54,6 @@ public interface IPayWorkOrderBaohuoService { R> baohuoSum(String date, Long deptId,Long tenantId); List getWorkOrderListByDate(Date exportDate); + + HashSet getWoIdSet(String workDate, Long empId); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayWorkOrderBaohuoServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayWorkOrderBaohuoServiceImpl.java index 0d7b0a3..5b207dd 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayWorkOrderBaohuoServiceImpl.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayWorkOrderBaohuoServiceImpl.java @@ -104,6 +104,7 @@ public class PayWorkOrderBaohuoServiceImpl implements IPayWorkOrderBaohuoService lqw.eq(bo.getInstorageNum() != null, PayWorkOrderBaohuo::getInstorageNum, bo.getInstorageNum()); lqw.like(StringUtils.isNotBlank(bo.getManagerName()), PayWorkOrderBaohuo::getManagerName, bo.getManagerName()); lqw.eq(bo.getDeleted() != null, PayWorkOrderBaohuo::getDeleted, bo.getDeleted()); + lqw.in(bo.getWoids()!=null&&bo.getWoids().size()>0,PayWorkOrderBaohuo::getId,bo.getWoids()); return lqw; } @@ -569,4 +570,9 @@ public class PayWorkOrderBaohuoServiceImpl implements IPayWorkOrderBaohuoService public List getWorkOrderListByDate(Date exportDate) { return sgrWorkOrderBaohuoMapper.getWorkOrderListByDate(exportDate); } + + @Override + public HashSet getWoIdSet(String workDate, Long empId) { + return baseMapper.getWoIdSet(workDate,empId); + } } diff --git a/ruoyi-pay/src/main/resources/mapper/pay/PayWorkOrderBaohuoMapper.xml b/ruoyi-pay/src/main/resources/mapper/pay/PayWorkOrderBaohuoMapper.xml index eb4cfa2..2e84315 100644 --- a/ruoyi-pay/src/main/resources/mapper/pay/PayWorkOrderBaohuoMapper.xml +++ b/ruoyi-pay/src/main/resources/mapper/pay/PayWorkOrderBaohuoMapper.xml @@ -58,4 +58,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE date_format(#{exportDate},'%y%m') = date_format(b.instorage_time,'%y%m') ORDER BY a.wo_id ASC + + From 45f825b88b0c646cba42a05f5f78cc4935586aa1 Mon Sep 17 00:00:00 2001 From: hshansha Date: Thu, 29 May 2025 11:44:13 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=97=A5=E5=B7=A5=E5=B7=A5=E6=97=B6?= =?UTF-8?q?=E3=80=81=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PayDayWorkHoursController.java | 56 +++- .../controller/PaySalaryReportController.java | 15 + .../ruoyi/pay/domain/vo/PayDayWorkEmps.java | 48 +++ .../pay/domain/vo/PayDayWorkHoursExport.java | 205 +++++++++++++ .../pay/domain/vo/PayDayWorkHoursQuery2.java | 122 ++++++++ .../pay/mapper/PayDayWorkHoursMapper.java | 6 + .../pay/mapper/PayDwHoursContrastMapper.java | 4 +- .../pay/mapper/PaySalaryReportMapper.java | 5 + .../pay/service/IPayDayWorkHoursService.java | 11 +- .../pay/service/IPaySalaryReportService.java | 5 + .../impl/PayDayWorkHoursServiceImpl.java | 273 +++++++++++++++++- .../impl/PaySalaryReportServiceImpl.java | 21 ++ .../mapper/pay/PayDayWorkHoursMapper.xml | 10 +- .../mapper/pay/PaySalaryReportMapper.xml | 7 +- 14 files changed, 753 insertions(+), 35 deletions(-) create mode 100644 ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkEmps.java create mode 100644 ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursExport.java create mode 100644 ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursQuery2.java diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayDayWorkHoursController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayDayWorkHoursController.java index 2f8d77a..da6338f 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayDayWorkHoursController.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayDayWorkHoursController.java @@ -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 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 list = iPayDayWorkHoursService.queryList(bo); - ExcelUtil.exportExcel(list, "日工工时", PayDayWorkHoursVo.class, response); + public void export(PayDayWorkHoursQuery payDayWorkHoursQuery, HttpServletResponse response) { + List list = iPayDayWorkHoursService.selectPayDayWorkHoursList2(payDayWorkHoursQuery); + List 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 add(@Validated(AddGroup.class) @RequestBody PayDayWorkHoursBo bo) { - return toAjax(iPayDayWorkHoursService.insertByBo(bo)); + public R 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 edit(@Validated(EditGroup.class) @RequestBody PayDayWorkHoursBo bo) { - return toAjax(iPayDayWorkHoursService.updateByBo(bo)); + public R edit(@Validated(EditGroup.class) @RequestBody PayDayWorkHoursQuery bo) { + return iPayDayWorkHoursService.updateByBo(bo); } /** diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySalaryReportController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySalaryReportController.java index 3586039..33240c2 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySalaryReportController.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PaySalaryReportController.java @@ -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 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 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 onOff( @RequestBody PaySalaryReport entity) { + return toAjax(iPaySalaryReportService.updateByBo2(entity)); + } /** * 删除工资明细总 diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkEmps.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkEmps.java new file mode 100644 index 0000000..db0555b --- /dev/null +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkEmps.java @@ -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; + } +} + diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursExport.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursExport.java new file mode 100644 index 0000000..564fa7e --- /dev/null +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursExport.java @@ -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(); + } + + +} + diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursQuery2.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursQuery2.java new file mode 100644 index 0000000..2fb0683 --- /dev/null +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayDayWorkHoursQuery2.java @@ -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 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 dwHoursContrasts; + + public String getDwYearMonth() { + return dwYearMonth; + } + + public void setDwYearMonth(String dwYearMonth) { + this.dwYearMonth = dwYearMonth; + } + + public List getEmpInfos() { + return empInfos; + } + + public void setEmpInfos(List empInfos) { + this.empInfos = empInfos; + } + + public List getDwHoursContrasts() { + return dwHoursContrasts; + } + + public void setDwHoursContrasts(List 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(); + } +} + diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDayWorkHoursMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDayWorkHoursMapper.java index 3920e56..9e75dbc 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDayWorkHoursMapper.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDayWorkHoursMapper.java @@ -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 { List selectPayDayWorkHoursList2(PayDayWorkHoursQuery sgrDayWorkHoursQuery); + + Page selectVoPage2(@Param("page") Page page, @Param(Constants.WRAPPER)LambdaQueryWrapper ew); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDwHoursContrastMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDwHoursContrastMapper.java index 2130dee..55cac06 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDwHoursContrastMapper.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayDwHoursContrastMapper.java @@ -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 { - + @Delete("delete from pay_dw_hours_contrast where dw_hours_id = #{id}") + int deleteSgrDwHoursContrastByDwHoursId(Long id); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySalaryReportMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySalaryReportMapper.java index ba61ffe..8b7bebe 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySalaryReportMapper.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PaySalaryReportMapper.java @@ -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 { + Page queryLastMonthReport(@Param("page") Page page, @Param(Constants.WRAPPER)LambdaQueryWrapper ew); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayDayWorkHoursService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayDayWorkHoursService.java index 4025a15..fa13d38 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayDayWorkHoursService.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayDayWorkHoursService.java @@ -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 insertByBo(PayDayWorkHoursQuery2 payDayWorkHoursQuery2); /** * 修改日工工时 */ - Boolean updateByBo(PayDayWorkHoursBo bo); + R updateByBo(PayDayWorkHoursQuery sgrDayWorkHoursQuery); /** * 校验并批量删除日工工时信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + public List selectPayDayWorkHoursList2(PayDayWorkHoursQuery sgrDayWorkHoursQuery); + + TableDataInfo queryPageList2(PayDayWorkHoursBo bo, PageQuery pageQuery); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySalaryReportService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySalaryReportService.java index dbff5b5..7b3606d 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySalaryReportService.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPaySalaryReportService.java @@ -42,8 +42,13 @@ public interface IPaySalaryReportService { */ Boolean updateByBo(PaySalaryReportBo bo); + Boolean updateByBo2(PaySalaryReport entity); + /** * 校验并批量删除工资明细总信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + TableDataInfo queryLastMonthReport(Long tenantId, PageQuery pageQuery); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayDayWorkHoursServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayDayWorkHoursServiceImpl.java index 74dbc44..dc5772d 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayDayWorkHoursServiceImpl.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayDayWorkHoursServiceImpl.java @@ -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 result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } + /** + * 查询日工工时列表 + */ + @Override + public TableDataInfo queryPageList2(PayDayWorkHoursBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page 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 insertByBo(PayDayWorkHoursQuery2 payDayWorkHoursQuery2) { + //先拆分员工 然后每个员工信息存储到SgrDayWorkHoursQuery集合中 + List 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 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 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 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 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 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 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 sgrWorkTimes = workTimeService.queryList(workTime); + PayBaohuoWorktimeBo bhworkTime = new PayBaohuoWorktimeBo(); + bhworkTime.setEmpId(sgrDayWorkHoursQuery.getEmployeeId()); + bhworkTime.setDate(sgrDayWorkHoursQuery.getDate()); + List bhworkTimes =baohuoWorktimeService.queryList(bhworkTime); + + //开始比对 + List 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()); + } } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PaySalaryReportServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PaySalaryReportServiceImpl.java index 8050fa6..041db49 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PaySalaryReportServiceImpl.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PaySalaryReportServiceImpl.java @@ -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 queryLastMonthReport(Long tenantId, PageQuery pageQuery) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(tenantId != null, PaySalaryReport::getTenantId, tenantId); + Page 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 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; } + } diff --git a/ruoyi-pay/src/main/resources/mapper/pay/PayDayWorkHoursMapper.xml b/ruoyi-pay/src/main/resources/mapper/pay/PayDayWorkHoursMapper.xml index 1a00446..f382dda 100644 --- a/ruoyi-pay/src/main/resources/mapper/pay/PayDayWorkHoursMapper.xml +++ b/ruoyi-pay/src/main/resources/mapper/pay/PayDayWorkHoursMapper.xml @@ -53,12 +53,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and note = #{note} - - - + + ${ew.sqlSegment} + + diff --git a/ruoyi-pay/src/main/resources/mapper/pay/PaySalaryReportMapper.xml b/ruoyi-pay/src/main/resources/mapper/pay/PaySalaryReportMapper.xml index 631d079..a77e590 100644 --- a/ruoyi-pay/src/main/resources/mapper/pay/PaySalaryReportMapper.xml +++ b/ruoyi-pay/src/main/resources/mapper/pay/PaySalaryReportMapper.xml @@ -40,5 +40,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + From 634c4a3f7897c2e05745f4027f09124e37cc8306 Mon Sep 17 00:00:00 2001 From: hshansha Date: Thu, 29 May 2025 11:57:49 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E8=A1=A5=E8=B4=B4=E5=91=98=E5=B7=A5mapper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/pay/PayButieEmplyeeMapper.xml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 ruoyi-pay/src/main/resources/mapper/pay/PayButieEmplyeeMapper.xml diff --git a/ruoyi-pay/src/main/resources/mapper/pay/PayButieEmplyeeMapper.xml b/ruoyi-pay/src/main/resources/mapper/pay/PayButieEmplyeeMapper.xml new file mode 100644 index 0000000..739fa85 --- /dev/null +++ b/ruoyi-pay/src/main/resources/mapper/pay/PayButieEmplyeeMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + +