From 01aa1a9ae8eb4e624a2a5349039730351dfba297 Mon Sep 17 00:00:00 2001 From: hshansha Date: Tue, 10 Jun 2025 10:15:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=89=80=E6=9C=89=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/controller/PayHomePageController.java | 68 +++++++++++++++++++ .../ruoyi/pay/mapper/PayHomePageMapper.java | 28 ++++++++ .../PayRequireAttendanceReportMapper.java | 11 +++ .../pay/service/IPayHomePageService.java | 20 ++++++ .../IPayRequireAttendanceReportService.java | 5 ++ .../service/impl/IPayHomePageServiceImpl.java | 64 +++++++++++++++++ ...PayRequireAttendanceReportServiceImpl.java | 10 +++ .../mapper/pay/PayHomePageMapper.xml | 57 ++++++++++++++++ 8 files changed, 263 insertions(+) create mode 100644 ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayHomePageController.java create mode 100644 ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayHomePageMapper.java create mode 100644 ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayHomePageService.java create mode 100644 ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/IPayHomePageServiceImpl.java create mode 100644 ruoyi-pay/src/main/resources/mapper/pay/PayHomePageMapper.xml diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayHomePageController.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayHomePageController.java new file mode 100644 index 0000000..6c6d08a --- /dev/null +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/controller/PayHomePageController.java @@ -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> getHomePagePanelData(Long tenantId) { + return homePageService.getPanelData(tenantId); + } + + /** + * 个人出勤工时列表 + * @param date + * @return + */ + @GetMapping("/chuqin") + public R>> getChuQinDataList(@RequestParam("date") Date date,@RequestParam("tenantId") Long tenantId) { + return homePageService.getChuQinData(date,tenantId); + } + + /** + * 获取按部门最近一个月的数据 + * 获取部门的 出勤工时,加班工时,帮工工资,应付工资,实发工资 + * @return + */ + @GetMapping("/deptPay") + public TableDataInfo getDeptPayData(Long tenantId) { + return homePageService.getDeptPayData(tenantId); + } + /** + * 获取年度每个月份的工资支出情况 + * @return + */ + @GetMapping("/monthPay") + public TableDataInfo getMonthPayData(Long tenantId) { + return homePageService.getMonthPayData(tenantId); + } + +} diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayHomePageMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayHomePageMapper.java new file mode 100644 index 0000000..9719032 --- /dev/null +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayHomePageMapper.java @@ -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 getDeptPayData(Long tenantId); + + List getMonthPayData(Long tenantId); +} diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayRequireAttendanceReportMapper.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayRequireAttendanceReportMapper.java index 16bd0fd..0ac4c93 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayRequireAttendanceReportMapper.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/mapper/PayRequireAttendanceReportMapper.java @@ -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 { + @Select("SELECT `year`, `month` FROM pay_require_attendance_report WHERE tenant_id=#{tenantId} ORDER BY `year`,`month` DESC LIMIT 1") + Map 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> selectAttendanceReportByMonth(@Param("year")String year, + @Param("month")String month,@Param("tenantId") Long tenantId); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayHomePageService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayHomePageService.java new file mode 100644 index 0000000..29f2cfa --- /dev/null +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayHomePageService.java @@ -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> getPanelData(Long tenantId); + + R>> getChuQinData(Date date,Long tenantId); + + TableDataInfo getDeptPayData(Long tenantId); + + TableDataInfo getMonthPayData(Long tenantId); +} diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayRequireAttendanceReportService.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayRequireAttendanceReportService.java index a775ca2..d852a66 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayRequireAttendanceReportService.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/IPayRequireAttendanceReportService.java @@ -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 ids, Boolean isValid); String importAttendanceReport(List requireAttendanceReports, boolean updateSupport, String date,Long tenantId); + + Map getLatestYearAndMonth(Long tenantId); + + List> selectAttendanceReportByMonth(String year, String month, Long tenantId); } diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/IPayHomePageServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/IPayHomePageServiceImpl.java new file mode 100644 index 0000000..4186ecf --- /dev/null +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/IPayHomePageServiceImpl.java @@ -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> getPanelData(Long tenantId) { + HashMap 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>> getChuQinData(Date date,Long tenantId) { + // 获取最新的应出勤月份 + Map 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> list = attendanceReportService.selectAttendanceReportByMonth(year, month,tenantId); + return R.ok(list); + } + + @Override + public TableDataInfo getDeptPayData(Long tenantId) { + List data = homePageMapper.getDeptPayData(tenantId); + return TableDataInfo.build(data); + } + + @Override + public TableDataInfo getMonthPayData(Long tenantId) { + return TableDataInfo.build(homePageMapper.getMonthPayData(tenantId)); + } +} diff --git a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayRequireAttendanceReportServiceImpl.java b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayRequireAttendanceReportServiceImpl.java index f887dab..1c6d15d 100644 --- a/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayRequireAttendanceReportServiceImpl.java +++ b/ruoyi-pay/src/main/java/com/ruoyi/pay/service/impl/PayRequireAttendanceReportServiceImpl.java @@ -204,4 +204,14 @@ public class PayRequireAttendanceReportServiceImpl implements IPayRequireAttenda } return successMsg.toString(); } + + @Override + public Map getLatestYearAndMonth(Long tenantId) { + return baseMapper.getLatestYearAndMonth(tenantId); + } + + @Override + public List> selectAttendanceReportByMonth(String year, String month, Long tenantId) { + return baseMapper.selectAttendanceReportByMonth(year, month,tenantId); + } } diff --git a/ruoyi-pay/src/main/resources/mapper/pay/PayHomePageMapper.xml b/ruoyi-pay/src/main/resources/mapper/pay/PayHomePageMapper.xml new file mode 100644 index 0000000..1943443 --- /dev/null +++ b/ruoyi-pay/src/main/resources/mapper/pay/PayHomePageMapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + +