Merge remote-tracking branch 'origin/master'

master
wanglei 7 months ago
commit 1ea279c5db

@ -1,9 +1,15 @@
package com.ruoyi.pay.controller; 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.List;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.pay.domain.PaySalaryReport;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*; import javax.validation.constraints.*;
@ -45,9 +51,22 @@ public class PayWorkOrderBaohuoController extends BaseController {
@SaCheckPermission("pay:workOrderBaohuo:list") @SaCheckPermission("pay:workOrderBaohuo:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<PayWorkOrderBaohuoVo> list(PayWorkOrderBaohuoBo bo, PageQuery pageQuery) { public TableDataInfo<PayWorkOrderBaohuoVo> list(PayWorkOrderBaohuoBo bo, PageQuery pageQuery) {
return iPayWorkOrderBaohuoService.queryPageList(bo, pageQuery); return iPayWorkOrderBaohuoService.queryPageList(bo, pageQuery);
} }
/**
*
*/
@SaCheckPermission("pay:workOrderBaohuo:sum")
@GetMapping("/sum")
public R<List<PaySalaryReport>> 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") @PostMapping("/export")
public void export(PayWorkOrderBaohuoBo bo, HttpServletResponse response) { public void export(PayWorkOrderBaohuoBo bo, HttpServletResponse response) {
List<PayWorkOrderBaohuoVo> list = iPayWorkOrderBaohuoService.queryList(bo); List<PayWorkOrderBaohuoVo> 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); ExcelUtil.exportExcel(list, "包活派工单", PayWorkOrderBaohuoVo.class, response);
} }

@ -26,7 +26,7 @@ public class PayAttendanceBo extends BaseEntity {
/** /**
* *
*/ */
@NotNull(message = "主键不能为空", groups = { EditGroup.class }) // @NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id; private Long id;
/** /**
@ -63,28 +63,28 @@ public class PayAttendanceBo extends BaseEntity {
* *
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @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; private Date amStartTime;
/** /**
* *
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @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; private Date amEndTime;
/** /**
* *
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @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; private Date pmStartTime;
/** /**
* *
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @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; private Date pmEndTime;
/** /**
@ -103,7 +103,7 @@ public class PayAttendanceBo extends BaseEntity {
/** /**
* (0: 1: 2 3:) * (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; private String kaoqinjiNum;

@ -8,6 +8,8 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat; import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert; import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data; import lombok.Data;
import org.apache.poi.ss.usermodel.IndexedColors;
import java.util.Date; import java.util.Date;
@ -27,31 +29,31 @@ public class PayWorkOrderBaohuoVo {
/** /**
* ID * ID
*/ */
@ExcelProperty(value = "主键ID") // @ExcelProperty(value = "主键ID")
private Long id; private Long id;
/** /**
* id * id
*/ */
@ExcelProperty(value = "租户id") // @ExcelProperty(value = "租户id")
private Long tenantId; private Long tenantId;
/** /**
* ID * ID
*/ */
@ExcelProperty(value = "归档ID") // @ExcelProperty(value = "归档ID")
private String archiveId; private String archiveId;
/** /**
* ID * ID
*/ */
@ExcelProperty(value = "产品ID") //@ExcelProperty(value = "产品ID")
private Long productId; private Long productId;
/** /**
* ID * ID
*/ */
@ExcelProperty(value = "部门ID") // @ExcelProperty(value = "部门ID")
private Long deptId; private Long deptId;
/** /**
@ -96,6 +98,19 @@ public class PayWorkOrderBaohuoVo {
@ExcelProperty(value = "加工总金额") @ExcelProperty(value = "加工总金额")
private BigDecimal amount; private BigDecimal amount;
/** 平均工资 */
@ExcelProperty(value = "每人包活工资")
private BigDecimal avgAmount;
@ExcelProperty(value = "工作人数")
private Integer workerNum;
@ExcelProperty(value = "包活工时")
private BigDecimal workTime;
@ExcelProperty(value = "员工姓名")
private String worksName;
/** /**
* *
*/ */

@ -4,6 +4,8 @@ import com.ruoyi.pay.domain.PayBaohuoWorktime;
import com.ruoyi.pay.domain.vo.PayBaohuoWorktimeVo; import com.ruoyi.pay.domain.vo.PayBaohuoWorktimeVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus; import com.ruoyi.common.core.mapper.BaseMapperPlus;
import java.util.List;
/** /**
* Mapper * Mapper
* *
@ -12,4 +14,5 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
*/ */
public interface PayBaohuoWorktimeMapper extends BaseMapperPlus<PayBaohuoWorktimeMapper, PayBaohuoWorktime, PayBaohuoWorktimeVo> { public interface PayBaohuoWorktimeMapper extends BaseMapperPlus<PayBaohuoWorktimeMapper, PayBaohuoWorktime, PayBaohuoWorktimeVo> {
List<PayBaohuoWorktime> selectBaohuoWorktimeList(PayBaohuoWorktime bhtime);
} }

@ -3,6 +3,7 @@ package com.ruoyi.pay.mapper;
import com.ruoyi.pay.domain.PayEmployeeInfo; import com.ruoyi.pay.domain.PayEmployeeInfo;
import com.ruoyi.pay.domain.vo.PayEmployeeInfoVo; import com.ruoyi.pay.domain.vo.PayEmployeeInfoVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus; import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
/** /**
@ -13,5 +14,5 @@ import org.apache.ibatis.annotations.Update;
*/ */
public interface PayEmployeeInfoMapper extends BaseMapperPlus<PayEmployeeInfoMapper, PayEmployeeInfo, PayEmployeeInfoVo> { public interface PayEmployeeInfoMapper extends BaseMapperPlus<PayEmployeeInfoMapper, PayEmployeeInfo, PayEmployeeInfoVo> {
@Update("update pay_employee_info e set e.hours_per_day = #{newHour} where e.hours_per_day = #{oldHour}") @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);
} }

@ -1,5 +1,7 @@
package com.ruoyi.pay.service; 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.PayWorkOrderBaohuo;
import com.ruoyi.pay.domain.vo.PayWorkOrderBaohuoVo; import com.ruoyi.pay.domain.vo.PayWorkOrderBaohuoVo;
import com.ruoyi.pay.domain.bo.PayWorkOrderBaohuoBo; import com.ruoyi.pay.domain.bo.PayWorkOrderBaohuoBo;
@ -46,4 +48,6 @@ public interface IPayWorkOrderBaohuoService {
* *
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
R<List<PaySalaryReport>> baohuoSum(String date, Long deptId,Long tenantId);
} }

@ -1,12 +1,18 @@
package com.ruoyi.pay.service.impl; package com.ruoyi.pay.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
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 com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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 lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.pay.domain.bo.PayWorkOrderBaohuoBo; 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.mapper.PayWorkOrderBaohuoMapper;
import com.ruoyi.pay.service.IPayWorkOrderBaohuoService; import com.ruoyi.pay.service.IPayWorkOrderBaohuoService;
import java.util.List; import java.math.BigDecimal;
import java.util.Map; import java.text.ParseException;
import java.util.Collection; import java.text.SimpleDateFormat;
import java.util.*;
/** /**
* Service * Service
@ -30,7 +37,8 @@ import java.util.Collection;
public class PayWorkOrderBaohuoServiceImpl implements IPayWorkOrderBaohuoService { public class PayWorkOrderBaohuoServiceImpl implements IPayWorkOrderBaohuoService {
private final PayWorkOrderBaohuoMapper baseMapper; 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; return baseMapper.deleteBatchIds(ids) > 0;
} }
@Override
public R<List<PaySalaryReport>> baohuoSum(String date, Long deptId,Long tenantId) {
//存储所有员工总工时信息
List<PaySalaryReport> 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<PayEmployeeInfoVo> 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<PayBaohuoWorktime> 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);
}
} }

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.pay.mapper.PayBaohuoWorktimeMapper">
<resultMap type="com.ruoyi.pay.domain.PayBaohuoWorktime" id="PayBaohuoWorktimeResult">
<result property="id" column="id"/>
<result property="tenantId" column="tenant_id"/>
<result property="woId" column="wo_id"/>
<result property="empId" column="emp_id"/>
<result property="bheId" column="bhe_id"/>
<result property="stime" column="stime"/>
<result property="etime" column="etime"/>
<result property="validHours" column="valid_hours"/>
<result property="date" column="date"/>
<result property="intime" column="intime"/>
</resultMap>
<sql id="selectBaohuoWorktime">
select id, wo_id, emp_id, bhe_id, stime, etime, valid_hours, date, intime from pay_baohuo_worktime
</sql>
<select id="selectBaohuoWorktimeList" parameterType="PayBaohuoWorktime" resultMap="PayBaohuoWorktimeResult">
<include refid="selectBaohuoWorktime"/>
<where>
<if test="woId != null "> and wo_id = #{woId}</if>
<if test="empId != null "> and emp_id = #{empId}</if>
<if test="bheId != null "> and bhe_id = #{bheId}</if>
<if test="tenantId != null "> and tenant_id = #{tenantId}</if>
<if test="stime != null "> and stime = #{stime}</if>
<if test="etime != null "> and etime = #{etime}</if>
<if test="validHours != null "> and valid_hours = #{validHours}</if>
<if test="date != null ">
<![CDATA[AND (DATE_FORMAT(`date`, '%Y-%m') = DATE_FORMAT( #{date}, '%Y-%m'))]]>
</if>
<if test="intime != null ">
<![CDATA[AND (DATE_FORMAT(`intime`, '%Y-%m') = DATE_FORMAT( #{intime}, '%Y-%m'))]]>
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save