From 59f651d69e3a3f1fc68dea0bb3952fc67c36bd23 Mon Sep 17 00:00:00 2001 From: hshansha Date: Fri, 23 May 2025 17:31:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=85=A5=E5=8F=82=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ruoyi/pay/mapper/PayEmployeeInfoMapper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayEmployeeInfoMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayEmployeeInfoMapper.java index 0d31e1e..abc1445 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayEmployeeInfoMapper.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayEmployeeInfoMapper.java @@ -3,6 +3,7 @@ package com.ruoyi.pay.mapper; import com.ruoyi.pay.domain.PayEmployeeInfo; import com.ruoyi.pay.domain.vo.PayEmployeeInfoVo; import com.ruoyi.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Update; /** @@ -13,5 +14,5 @@ import org.apache.ibatis.annotations.Update; */ public interface PayEmployeeInfoMapper extends BaseMapperPlus { @Update("update pay_employee_info e set e.hours_per_day = #{newHour} where e.hours_per_day = #{oldHour}") - int updateSgrEmployeeHour(String oldHour, String newHour); + int updateSgrEmployeeHour(@Param("oldHour") String oldHour, @Param("newHour")String newHour); } From 5678585a66e82b1b5902a72d2e0fc49ff6f81a9c Mon Sep 17 00:00:00 2001 From: hshansha Date: Sat, 24 May 2025 11:34:31 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=80=83=E5=8B=A4=E9=9D=9E=E7=A9=BA?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E4=BF=AE=E6=94=B9=E3=80=81=E5=8C=85=E6=B4=BB?= =?UTF-8?q?=E5=91=98=E5=B7=A5=E6=80=BB=E5=B7=A5=E6=97=B6=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PayWorkOrderBaohuoController.java | 23 +++++++ .../ruoyi/pay/domain/bo/PayAttendanceBo.java | 12 ++-- .../pay/domain/vo/PayWorkOrderBaohuoVo.java | 25 +++++-- .../pay/mapper/PayBaohuoWorktimeMapper.java | 3 + .../service/IPayWorkOrderBaohuoService.java | 4 ++ .../impl/PayWorkOrderBaohuoServiceImpl.java | 67 +++++++++++++++++-- .../mapper/pay/PayBaohuoWorktimeMapper.xml | 43 ++++++++++++ 7 files changed, 162 insertions(+), 15 deletions(-) create mode 100644 ruoyi-pay/src/main/resources/mapper/pay/PayBaohuoWorktimeMapper.xml 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 afee8e8..76ae938 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 @@ -1,9 +1,15 @@ package com.ruoyi.pay.controller; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Arrays; import java.util.concurrent.TimeUnit; +import cn.hutool.core.util.ObjectUtil; +import com.ruoyi.pay.domain.PaySalaryReport; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.*; @@ -45,9 +51,22 @@ public class PayWorkOrderBaohuoController extends BaseController { @SaCheckPermission("pay:workOrderBaohuo:list") @GetMapping("/list") public TableDataInfo list(PayWorkOrderBaohuoBo bo, PageQuery pageQuery) { + return iPayWorkOrderBaohuoService.queryPageList(bo, pageQuery); } + /** + * 查询员工总工时 + */ + @SaCheckPermission("pay:workOrderBaohuo:sum") + @GetMapping("/sum") + public R> sum(@RequestParam(name = "date")String date, + @RequestParam(name = "deptId", required = false) Long deptId, + @RequestParam(name = "tenantId", required = true) Long tenantId + ) { + return iPayWorkOrderBaohuoService.baohuoSum(date, deptId,tenantId); + } + /** * 导出包活派工单列表 */ @@ -56,6 +75,10 @@ public class PayWorkOrderBaohuoController extends BaseController { @PostMapping("/export") public void export(PayWorkOrderBaohuoBo bo, HttpServletResponse response) { List list = iPayWorkOrderBaohuoService.queryList(bo); + list.stream().parallel().forEach(vo -> { + vo.setAvgAmount(vo.getAmount().divide(new BigDecimal(vo.getWorkerNum()), 2, RoundingMode.HALF_UP)); + vo.setWorkTime(vo.getWorkTime().divide(new BigDecimal(vo.getWorkerNum()), 2,RoundingMode.HALF_UP)); + }); ExcelUtil.exportExcel(list, "包活派工单", PayWorkOrderBaohuoVo.class, response); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayAttendanceBo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayAttendanceBo.java index cfa2c64..65ce23e 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayAttendanceBo.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/bo/PayAttendanceBo.java @@ -26,7 +26,7 @@ public class PayAttendanceBo extends BaseEntity { /** * 主键 */ - @NotNull(message = "主键不能为空", groups = { EditGroup.class }) + // @NotNull(message = "主键不能为空", groups = { EditGroup.class }) private Long id; /** @@ -63,28 +63,28 @@ public class PayAttendanceBo extends BaseEntity { * 上午开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @NotNull(message = "上午开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) + // @NotNull(message = "上午开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) private Date amStartTime; /** * 上午结束时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @NotNull(message = "上午结束时间不能为空", groups = { AddGroup.class, EditGroup.class }) + // @NotNull(message = "上午结束时间不能为空", groups = { AddGroup.class, EditGroup.class }) private Date amEndTime; /** * 下午开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @NotNull(message = "下午开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) + //@NotNull(message = "下午开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) private Date pmStartTime; /** * 下午结束时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @NotNull(message = "下午结束时间不能为空", groups = { AddGroup.class, EditGroup.class }) + // @NotNull(message = "下午结束时间不能为空", groups = { AddGroup.class, EditGroup.class }) private Date pmEndTime; /** @@ -103,7 +103,7 @@ public class PayAttendanceBo extends BaseEntity { /** * 考勤机 (0:综合办 1:网机 2:围栏 3:手动添加) */ - @NotBlank(message = "考勤机 (0:综合办 1:网机 2:围栏 3:手动添加)不能为空", groups = { AddGroup.class, EditGroup.class }) + // @NotBlank(message = "考勤机 (0:综合办 1:网机 2:围栏 3:手动添加)不能为空", groups = { AddGroup.class, EditGroup.class }) private String kaoqinjiNum; diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderBaohuoVo.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderBaohuoVo.java index 9a3ffc2..f49b08a 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderBaohuoVo.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/domain/vo/PayWorkOrderBaohuoVo.java @@ -8,6 +8,8 @@ import com.alibaba.excel.annotation.ExcelProperty; import com.ruoyi.common.annotation.ExcelDictFormat; import com.ruoyi.common.convert.ExcelDictConvert; import lombok.Data; +import org.apache.poi.ss.usermodel.IndexedColors; + import java.util.Date; @@ -27,31 +29,31 @@ public class PayWorkOrderBaohuoVo { /** * 主键ID */ - @ExcelProperty(value = "主键ID") + // @ExcelProperty(value = "主键ID") private Long id; /** * 租户id */ - @ExcelProperty(value = "租户id") + // @ExcelProperty(value = "租户id") private Long tenantId; /** * 归档ID */ - @ExcelProperty(value = "归档ID") + // @ExcelProperty(value = "归档ID") private String archiveId; /** * 产品ID */ - @ExcelProperty(value = "产品ID") + //@ExcelProperty(value = "产品ID") private Long productId; /** * 部门ID */ - @ExcelProperty(value = "部门ID") + // @ExcelProperty(value = "部门ID") private Long deptId; /** @@ -96,6 +98,19 @@ public class PayWorkOrderBaohuoVo { @ExcelProperty(value = "加工总金额") private BigDecimal amount; + /** 平均工资 */ + @ExcelProperty(value = "每人包活工资") + private BigDecimal avgAmount; + + @ExcelProperty(value = "工作人数") + private Integer workerNum; + + @ExcelProperty(value = "包活工时") + private BigDecimal workTime; + + @ExcelProperty(value = "员工姓名") + private String worksName; + /** * 开始时间 */ diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoWorktimeMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoWorktimeMapper.java index 4277423..6cd8e4a 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoWorktimeMapper.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayBaohuoWorktimeMapper.java @@ -4,6 +4,8 @@ import com.ruoyi.pay.domain.PayBaohuoWorktime; import com.ruoyi.pay.domain.vo.PayBaohuoWorktimeVo; import com.ruoyi.common.core.mapper.BaseMapperPlus; +import java.util.List; + /** * 包活工单工时关联Mapper接口 * @@ -12,4 +14,5 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus; */ public interface PayBaohuoWorktimeMapper extends BaseMapperPlus { + List selectBaohuoWorktimeList(PayBaohuoWorktime bhtime); } 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 817c707..13c7ba3 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 @@ -1,5 +1,7 @@ package com.ruoyi.pay.service; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.pay.domain.PaySalaryReport; import com.ruoyi.pay.domain.PayWorkOrderBaohuo; import com.ruoyi.pay.domain.vo.PayWorkOrderBaohuoVo; import com.ruoyi.pay.domain.bo.PayWorkOrderBaohuoBo; @@ -46,4 +48,6 @@ public interface IPayWorkOrderBaohuoService { * 校验并批量删除包活派工单信息 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + R> baohuoSum(String date, Long deptId,Long tenantId); } 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 f47464a..abedd0f 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 @@ -1,12 +1,18 @@ 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.PayBaohuoWorktime; +import com.ruoyi.pay.domain.PaySalaryReport; +import com.ruoyi.pay.domain.bo.PayEmployeeInfoBo; +import com.ruoyi.pay.domain.vo.PayEmployeeInfoVo; +import com.ruoyi.pay.mapper.PayBaohuoWorktimeMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.ruoyi.pay.domain.bo.PayWorkOrderBaohuoBo; @@ -15,9 +21,10 @@ import com.ruoyi.pay.domain.PayWorkOrderBaohuo; import com.ruoyi.pay.mapper.PayWorkOrderBaohuoMapper; import com.ruoyi.pay.service.IPayWorkOrderBaohuoService; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; /** * 包活派工单Service业务层处理 @@ -30,7 +37,8 @@ import java.util.Collection; public class PayWorkOrderBaohuoServiceImpl implements IPayWorkOrderBaohuoService { private final PayWorkOrderBaohuoMapper baseMapper; - + private final PayEmployeeInfoServiceImpl payEmployeeInfoService; + private final PayBaohuoWorktimeMapper worktimeMapper; /** * 查询包活派工单 */ @@ -125,4 +133,55 @@ public class PayWorkOrderBaohuoServiceImpl implements IPayWorkOrderBaohuoService } return baseMapper.deleteBatchIds(ids) > 0; } + + @Override + public R> baohuoSum(String date, Long deptId,Long tenantId) { + //存储所有员工总工时信息 + List result = new ArrayList<>(); + + String year = date.split("-")[0]; + String month = date.split("-")[1]; + Date yearMonth; + try { + yearMonth = new SimpleDateFormat("yyyy-MM").parse(date); + } catch (ParseException e) { + e.printStackTrace(); + return R.fail("日期格式转换错误"); + } + + //1.拿到所有员工信息遍历 + PayEmployeeInfoBo payEemployeeInfo = new PayEmployeeInfoBo(); + payEemployeeInfo.setDeptId(deptId); + payEemployeeInfo.setTenantId(tenantId); + List employeeInfoList = payEmployeeInfoService.queryList(payEemployeeInfo); + for (PayEmployeeInfoVo employeeInfo : employeeInfoList) { + //创建存储员工数据的对象 + PaySalaryReport paySalaryReport = new PaySalaryReport(); + String empName = employeeInfo.getName(); + paySalaryReport.setEmployeeId(employeeInfo.getId()); + paySalaryReport.setEmployeeName(employeeInfo.getName()); + paySalaryReport.setYear(year); + paySalaryReport.setMonth(month); + // sgrSalaryReport.setBasicSalary(employeeInfo.getBasicSalary()); + paySalaryReport.setDeptId(employeeInfo.getDeptId()); + + //包活工时初始值为0 + BigDecimal baohuogongshi = BigDecimal.ZERO; + //包活工时计算 + PayBaohuoWorktime bhtime = new PayBaohuoWorktime(); + bhtime.setEmpId(employeeInfo.getId()); + bhtime.setDate(yearMonth); + bhtime.setTenantId(tenantId); + List bhtimes = worktimeMapper.selectBaohuoWorktimeList(bhtime); + if (bhtimes != null && bhtimes.size() > 0) { + for (PayBaohuoWorktime btime : bhtimes) { + baohuogongshi = baohuogongshi.add(btime.getValidHours()); + } + } + paySalaryReport.setWorkOrderHours(baohuogongshi); + result.add(paySalaryReport); + } + + return R.ok(result); + } } diff --git a/ruoyi-pay/src/main/resources/mapper/pay/PayBaohuoWorktimeMapper.xml b/ruoyi-pay/src/main/resources/mapper/pay/PayBaohuoWorktimeMapper.xml new file mode 100644 index 0000000..0be1e10 --- /dev/null +++ b/ruoyi-pay/src/main/resources/mapper/pay/PayBaohuoWorktimeMapper.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + select id, wo_id, emp_id, bhe_id, stime, etime, valid_hours, date, intime from pay_baohuo_worktime + + + + +