Merge remote-tracking branch 'origin/master'

master
wanglei 6 months ago
commit 71744b8a0f

@ -49,9 +49,10 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://localhost:3307/pay?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
#url: jdbc:mysql://localhost:3307/pay?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
url: jdbc:mysql://172.16.9.9:3306/pay?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
username: root
password: hs123456
password: ruanfa
# 从库数据源
# slave:
# lazy: true
@ -102,7 +103,8 @@ spring:
spring:
redis:
# 地址
host: localhost
host: 172.16.9.9
#host: localhost
# 端口默认为6379
port: 6379
# 数据库索引

@ -18,6 +18,7 @@ import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.apache.poi.hpsf.Decimal;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
@ -160,15 +161,17 @@ public class PayButieEmplyeeController extends BaseController {
}
PayEmployeeInfoBo employeeInfo = new PayEmployeeInfoBo();
employeeInfo.setId(bo.getEmployeeId());
employeeInfo.setName(bo.getEmpName());
employeeInfo.setTenantId(bo.getTenantId());
TableDataInfo<PayEmployeeInfoVo> payEmployeeTableDataInfo = employeeInfoService.queryPageList(employeeInfo, pageQuery);
if(payEmployeeTableDataInfo.getRows()!=null&&payEmployeeTableDataInfo.getRows().size()>0){
butieSummaryVos = this.buildEmployeeInfo(payEmployeeTableDataInfo.getRows(), date);
butieSummaryVos = this.buildEmployeeInfo(payEmployeeTableDataInfo.getRows(), date,bo.getMoney());
}
return TableDataInfo.build(butieSummaryVos);
}
private List<ButieSummaryVo> buildEmployeeInfo(List<PayEmployeeInfoVo> list, String date) {
private List<ButieSummaryVo> buildEmployeeInfo(List<PayEmployeeInfoVo> list, String date,
BigDecimal qmoney) {
PayButieBo pb = new PayButieBo();
pb.setTenantId(list.get(0).getTenantId());
List<PayButieVo> sgrButies = butieService.queryList(pb);
@ -184,6 +187,7 @@ public class PayButieEmplyeeController extends BaseController {
query.setEmployeeId(emp.getId());
query.setButieId(butie.getId());
query.setDate(date);
query.setMoney(qmoney);
List<PayButieEmplyeeVo> butieEmplyeeVos = iPayButieEmplyeeService.queryList(query);
if(butieEmplyeeVos!=null&&butieEmplyeeVos.size()>0){
money=butieEmplyeeVos.get(0).getMoney();

@ -0,0 +1,68 @@
package com.ruoyi.pay.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.pay.domain.PaySalaryReport;
import com.ruoyi.pay.domain.vo.PayEmployeeInfoVo;
import com.ruoyi.pay.service.IPayEmployeeInfoService;
import com.ruoyi.pay.service.IPayHomePageService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/pay/home")
public class PayHomePageController extends BaseController {
private final IPayHomePageService homePageService;
/**
* "获取Panel数据"
* @return
*/
@GetMapping("/panel")
public R<HashMap<String, Object>> getHomePagePanelData(Long tenantId) {
return homePageService.getPanelData(tenantId);
}
/**
*
* @param date
* @return
*/
@GetMapping("/chuqin")
public R<List<Map<String, String>>> getChuQinDataList(@RequestParam("date") Date date,@RequestParam("tenantId") Long tenantId) {
return homePageService.getChuQinData(date,tenantId);
}
/**
*
*
* @return
*/
@GetMapping("/deptPay")
public TableDataInfo<PaySalaryReport> getDeptPayData(Long tenantId) {
return homePageService.getDeptPayData(tenantId);
}
/**
*
* @return
*/
@GetMapping("/monthPay")
public TableDataInfo<PaySalaryReport> getMonthPayData(Long tenantId) {
return homePageService.getMonthPayData(tenantId);
}
}

@ -97,6 +97,7 @@ public class PayWorkOrderBaohuo extends BaseEntity {
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date instorageTime;
/**
*
*/

@ -45,6 +45,10 @@ public class PayButieEmplyeeBo extends BaseEntity {
*/
@NotNull(message = "员工id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long employeeId;
/**
*
*/
private String empName;
/**
*

@ -139,6 +139,11 @@ public class PayWorkOrderBaohuoBo extends BaseEntity {
@NotNull(message = "入库时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date instorageTime;
//入库月份
@JsonFormat(pattern = "yyyy-MM")
@DateTimeFormat(pattern = "yyyy-MM")
private Date instorageDate;
/**
*
*/

@ -0,0 +1,28 @@
package com.ruoyi.pay.mapper;
import com.ruoyi.pay.domain.PaySalaryReport;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface PayHomePageMapper {
@Select("SELECT IFNULL(COUNT(*), 0) FROM pay_employee_info WHERE deleted = 0 and tenant_id=#{tenantId}")
Integer getEmpCountData(Long tenantId);
@Select("select ifnull(count(*), 0) from pay_work_order_baohuo where deleted = 0 and tenant_id=#{tenantId}")
Integer getBaoHuoCountData(Long tenantId);
@Select("select ifnull(count(*), 0) from pay_work_order_tuzhi where deleted = 0 and tenant_id=#{tenantId}")
Integer getTuZhiCountData(Long tenantId);
@Select("SELECT IFNULL(COUNT(*), 0) FROM pay_products WHERE deleted = 0 and tenant_id=#{tenantId}")
Integer getProductData(Long tenantId);
/*@Select("select s.dept_name deptName,s.day_work_hours dayWorkHours,s.overtime_work_hours overtimeWorkHours,s.banggong_pay banggongPay" +
",s.shoud_pay_money shoudPayMoney,s.actually_pay_money actuallyPayMoney from sgr_salary_report s " +
"where s.year=(select max(year) from `sgr_salary_report`) and s.`month`=(select max(month) from `sgr_salary_report`) " +
"group by s.dept_name")*/
List<PaySalaryReport> getDeptPayData(Long tenantId);
List<PaySalaryReport> getMonthPayData(Long tenantId);
}

@ -3,6 +3,11 @@ package com.ruoyi.pay.mapper;
import com.ruoyi.pay.domain.PayRequireAttendanceReport;
import com.ruoyi.pay.domain.vo.PayRequireAttendanceReportVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/**
* Mapper
@ -11,5 +16,11 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
* @date 2025-05-12
*/
public interface PayRequireAttendanceReportMapper extends BaseMapperPlus<PayRequireAttendanceReportMapper, PayRequireAttendanceReport, PayRequireAttendanceReportVo> {
@Select("SELECT `year`, `month` FROM pay_require_attendance_report WHERE tenant_id=#{tenantId} ORDER BY `year`,`month` DESC LIMIT 1")
Map<String, String> getLatestYearAndMonth(@Param("tenantId")Long tenantId);
@Select("SELECT emp_name AS `name`, avtive_days AS value FROM pay_require_attendance_report " +
"WHERE `year` = #{year} AND `month` = #{month} AND tenant_id=#{tenantId} ORDER BY avtive_days DESC")
List<Map<String, String>> selectAttendanceReportByMonth(@Param("year")String year,
@Param("month")String month,@Param("tenantId") Long tenantId);
}

@ -0,0 +1,20 @@
package com.ruoyi.pay.service;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.pay.domain.PaySalaryReport;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public interface IPayHomePageService {
R<HashMap<String, Object>> getPanelData(Long tenantId);
R<List<Map<String, String>>> getChuQinData(Date date,Long tenantId);
TableDataInfo<PaySalaryReport> getDeptPayData(Long tenantId);
TableDataInfo<PaySalaryReport> getMonthPayData(Long tenantId);
}

@ -8,6 +8,7 @@ import com.ruoyi.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* Service
@ -48,4 +49,8 @@ public interface IPayRequireAttendanceReportService {
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
String importAttendanceReport(List<PayRequireAttendanceReportVo> requireAttendanceReports, boolean updateSupport, String date,Long tenantId);
Map<String, String> getLatestYearAndMonth(Long tenantId);
List<Map<String, String>> selectAttendanceReportByMonth(String year, String month, Long tenantId);
}

@ -0,0 +1,64 @@
package com.ruoyi.pay.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.pay.domain.PaySalaryReport;
import com.ruoyi.pay.mapper.PayEmployeeInfoMapper;
import com.ruoyi.pay.mapper.PayHomePageMapper;
import com.ruoyi.pay.service.IPayHomePageService;
import com.ruoyi.pay.service.IPayRequireAttendanceReportService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RequiredArgsConstructor
@Service
public class IPayHomePageServiceImpl implements IPayHomePageService {
private final PayHomePageMapper homePageMapper;
private final IPayRequireAttendanceReportService attendanceReportService;
@Override
public R<HashMap<String, Object>> getPanelData(Long tenantId) {
HashMap<String, Object> map = new HashMap<>();
Integer empNum = homePageMapper.getEmpCountData(tenantId);
Integer baoHuoCountData = homePageMapper.getBaoHuoCountData(tenantId);
Integer tuZhiCountData = homePageMapper.getTuZhiCountData(tenantId);
Integer productData = homePageMapper.getProductData(tenantId);
map.put("empNum", empNum);
map.put("woNum", baoHuoCountData + tuZhiCountData);
map.put("prodNum", productData);
return R.ok(map);
}
@Override
public R<List<Map<String, String>>> getChuQinData(Date date,Long tenantId) {
// 获取最新的应出勤月份
Map<String, String> dateMap = attendanceReportService.getLatestYearAndMonth(tenantId);
String year = DateUtil.format(date, "yyyy");
String month = DateUtil.format(date, "MM");
if (ObjectUtil.isNotNull(dateMap) && dateMap.size() > 0) {
year = dateMap.get("year");
month = dateMap.get("month");
}
List<Map<String, String>> list = attendanceReportService.selectAttendanceReportByMonth(year, month,tenantId);
return R.ok(list);
}
@Override
public TableDataInfo<PaySalaryReport> getDeptPayData(Long tenantId) {
List<PaySalaryReport> data = homePageMapper.getDeptPayData(tenantId);
return TableDataInfo.build(data);
}
@Override
public TableDataInfo<PaySalaryReport> getMonthPayData(Long tenantId) {
return TableDataInfo.build(homePageMapper.getMonthPayData(tenantId));
}
}

@ -86,7 +86,7 @@ public class PayDayWorkHoursServiceImpl implements IPayDayWorkHoursService {
Map<String, Object> params = bo.getParams();
QueryWrapper<PayDayWorkHoursBo> lqw = Wrappers.query();;
lqw.eq(bo.getTenantId() != null, "d.tenant_id", bo.getTenantId());
lqw.eq(bo.getDeptId() != null, "dept_id", bo.getDeptId());
lqw.eq(bo.getDeptId() != null, "d.dept_id", bo.getDeptId());
lqw.like(StringUtils.isNotBlank(bo.getDeptName()), "dept_name", bo.getDeptName());
lqw.eq(bo.getEmployeeId() != null, "employee_id", bo.getEmployeeId());
lqw.like(StringUtils.isNotBlank(bo.getEmpName()), "emp_name", bo.getEmpName());

@ -204,4 +204,14 @@ public class PayRequireAttendanceReportServiceImpl implements IPayRequireAttenda
}
return successMsg.toString();
}
@Override
public Map<String, String> getLatestYearAndMonth(Long tenantId) {
return baseMapper.getLatestYearAndMonth(tenantId);
}
@Override
public List<Map<String, String>> selectAttendanceReportByMonth(String year, String month, Long tenantId) {
return baseMapper.selectAttendanceReportByMonth(year, month,tenantId);
}
}

@ -114,6 +114,7 @@ public class PaySalaryReportServiceImpl implements IPaySalaryReportService {
lqw.eq(StringUtils.isNotBlank(bo.getYear()), PaySalaryReport::getYear, bo.getYear());
lqw.eq(StringUtils.isNotBlank(bo.getMonth()), PaySalaryReport::getMonth, bo.getMonth());
lqw.eq(bo.getDeptId() != null, PaySalaryReport::getDeptId, bo.getDeptId());
lqw.eq(bo.getDeptName() != null, PaySalaryReport::getDeptName, bo.getDeptName());
lqw.like(StringUtils.isNotBlank(bo.getDeptName()), PaySalaryReport::getDeptName, bo.getDeptName());
lqw.eq(bo.getEmployeeId() != null, PaySalaryReport::getEmployeeId, bo.getEmployeeId());
lqw.like(StringUtils.isNotBlank(bo.getEmployeeName()), PaySalaryReport::getEmployeeName, bo.getEmployeeName());

@ -117,6 +117,7 @@ public class PayWorkOrderBaohuoServiceImpl implements IPayWorkOrderBaohuoService
private LambdaQueryWrapper<PayWorkOrderBaohuo> buildQueryWrapper(PayWorkOrderBaohuoBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<PayWorkOrderBaohuo> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getId() != null, PayWorkOrderBaohuo::getId, bo.getId());
lqw.eq(bo.getTenantId() != null, PayWorkOrderBaohuo::getTenantId, bo.getTenantId());
lqw.eq(StringUtils.isNotBlank(bo.getArchiveId()), PayWorkOrderBaohuo::getArchiveId, bo.getArchiveId());
lqw.eq(bo.getProductId() != null, PayWorkOrderBaohuo::getProductId, bo.getProductId());
@ -133,6 +134,7 @@ public class PayWorkOrderBaohuoServiceImpl implements IPayWorkOrderBaohuoService
lqw.like(StringUtils.isNotBlank(bo.getQualityName()), PayWorkOrderBaohuo::getQualityName, bo.getQualityName());
lqw.eq(StringUtils.isNotBlank(bo.getQualityRemark()), PayWorkOrderBaohuo::getQualityRemark, bo.getQualityRemark());
lqw.eq(bo.getInstorageTime() != null, PayWorkOrderBaohuo::getInstorageTime, bo.getInstorageTime());
lqw.apply(bo.getInstorageDate()!= null, "DATE_FORMAT (instorage_time,'%Y-%m')={0}",DateUtil.format(bo.getInstorageDate(),"yyyy-MM"));
lqw.like(StringUtils.isNotBlank(bo.getInstorageName()), PayWorkOrderBaohuo::getInstorageName, bo.getInstorageName());
lqw.eq(bo.getInstorageNum() != null, PayWorkOrderBaohuo::getInstorageNum, bo.getInstorageNum());
lqw.like(StringUtils.isNotBlank(bo.getManagerName()), PayWorkOrderBaohuo::getManagerName, bo.getManagerName());

@ -0,0 +1,57 @@
<?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.PayHomePageMapper">
<resultMap type="PaySalaryReport" id="PaySalaryReportResult">
<result property="id" column="id" />
<result property="year" column="year" />
<result property="month" column="month" />
<result property="deptId" column="dept_id" />
<result property="deptName" column="dept_name" />
<result property="employeeId" column="employee_id" />
<result property="employeeName" column="employee_name" />
<result property="basicSalary" column="basic_salary" />
<result property="actuallyDays" column="actually_days" />
<result property="actuallyHours" column="actually_hours" />
<result property="dayWorkHours" column="day_work_hours" />
<result property="workOrderHours" column="work_order_hours" />
<result property="overtimeWorkHours" column="overtime_work_hours" />
<result property="dayWorkPay" column="day_work_pay" />
<result property="workOrderPay" column="work_order_pay" />
<result property="overtime" column="overtime" />
<result property="banggongPay" column="banggong_pay" />
<result property="zhibanOrLahuo" column="zhiban_or_lahuo" />
<result property="holiday" column="holiday" />
<result property="post" column="post" />
<result property="phoneCharge" column="phone_charge" />
<result property="contract" column="contract" />
<result property="fullTime" column="full_time" />
<result property="diffOfLastMonth" column="diff_of_last_month" />
<result property="shoudPayMoney" column="shoud_pay_money" />
<result property="late" column="late" />
<result property="insurance" column="insurance" />
<result property="actuallyPayMoney" column="actually_pay_money" />
<result property="allButieData" column="all_butie_data" />
<result property="note" column="note" />
</resultMap>
<sql id="selectPaySalaryReportVo">
select id, year, month, dept_id, dept_name, employee_id, employee_name, basic_salary, actually_days, actually_hours, day_work_hours, work_order_hours, overtime_work_hours, day_work_pay, work_order_pay, zhiban_or_lahuo, overtime,banggong_pay, holiday, post, phone_charge, contract, full_time, diff_of_last_month, shoud_pay_money, late, insurance, actually_pay_money,all_butie_data, note from pay_salary_report
</sql>
<select id="getDeptPayData" resultMap="PaySalaryReportResult">
<!--<include refid="selectSgrSalaryReportVo"/> s-->
select year,month,dept_name,SUM(day_work_hours) day_work_hours,SUM(actually_pay_money) actually_pay_money from pay_salary_report s
where s.year=(select max(year) from `pay_salary_report` where tenant_id=#{tenantId}) and s.`month`=(select max(month) from `pay_salary_report` where `year`=(select max(year) from `pay_salary_report` where tenant_id=#{tenantId}))
and tenant_id=#{tenantId}
group by s.dept_name
</select>
<select id="getMonthPayData" resultMap="PaySalaryReportResult">
SELECT s.`year`, s.`month`, SUM(actually_pay_money) actually_pay_money from `pay_salary_report` s where s.year=(select max(year) from `pay_salary_report` where tenant_id=#{tenantId}) and tenant_id=#{tenantId} group by s.`month`
</select>
</mapper>
Loading…
Cancel
Save