From 691bcd58f4764b9bb0ac99d05c04da8e563ff39a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=A9=AC=E4=B8=89=E7=82=AE?= <15856818120@163.com>
Date: Thu, 25 Sep 2025 11:16:22 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=89=E8=A1=A8=E4=B8=80=E5=86=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../bonus/common/core/constant/Constants.java | 7 +
bonus-modules/bonus-bmw/pom.xml | 7 +-
.../bmw/controller/PmProjectController.java | 132 ++++++++++++++++--
.../bonus/bmw/domain/vo/ProMonthTable.java | 5 +
.../bmw/domain/vo/ProMonthTableRosterVo.java | 16 +++
.../bonus/bmw/domain/vo/UserAttendanceVo.java | 6 +
.../bmw/domain/vo/UserSalaryApprovalVo.java | 12 ++
.../bonus/bmw/domain/vo/UserWagePayVo.java | 17 +++
.../bonus/bmw/service/PmProjectService.java | 2 +-
.../service/impl/PmProjectServiceImpl.java | 2 +-
.../resources/mapper/bmw/PmProjectMapper.xml | 5 +-
11 files changed, 197 insertions(+), 14 deletions(-)
diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java
index 666047b..bf89665 100644
--- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java
+++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/Constants.java
@@ -196,4 +196,11 @@ public class Constants
*/
public static final String BM_WORKER_BLACK = "bm_worker_black";
+ /**
+ * 工程月度数据
+ */
+ public static final String TB_PRO_MONTH_TABLE = "tb_pro_month_table";
+
+
+
}
diff --git a/bonus-modules/bonus-bmw/pom.xml b/bonus-modules/bonus-bmw/pom.xml
index fde1dc8..4138145 100644
--- a/bonus-modules/bonus-bmw/pom.xml
+++ b/bonus-modules/bonus-bmw/pom.xml
@@ -119,6 +119,11 @@
org.springframework.boot
spring-boot-starter-websocket
+
+ com.alibaba
+ easyexcel
+ 3.1.1
+
@@ -142,4 +147,4 @@
-
\ No newline at end of file
+
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmProjectController.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmProjectController.java
index a40a855..c635d27 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmProjectController.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/controller/PmProjectController.java
@@ -1,5 +1,8 @@
package com.bonus.bmw.controller;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
import com.bonus.bmw.domain.dto.FileBasicMsgDto;
import com.bonus.bmw.domain.dto.WebFileDto;
import com.bonus.bmw.domain.po.BmSubContract;
@@ -25,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -175,15 +179,15 @@ public class PmProjectController extends BaseController {
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pro:month:list"))
@GetMapping("/getThreeForms")
@SysLog(title = "三表一册", businessType = OperaType.UPDATE, module = "三表一册->三表一册列表")
- public AjaxResult getThreeForms(ProMonthTable proMonthTable) {
+ public TableDataInfo getThreeForms(ProMonthTable proMonthTable) {
try {
startPage();
List res = pmProjectService.getThreeForms(proMonthTable);
- return success(res);
+ return getDataTable(res);
} catch (Exception e) {
logger.error(e.toString(), e);
}
- return error("系统异常,请联系管理员");
+ return getDataTableError(new ArrayList<>());
}
/**
@@ -192,15 +196,15 @@ public class PmProjectController extends BaseController {
// @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pro:month:list"))
@GetMapping("/getProMonthTableList")
@SysLog(title = "三表一册", businessType = OperaType.UPDATE, module = "三表一册->每月数据")
- public AjaxResult getProMonthTableList(BmSubContract bmSubContract) {
+ public TableDataInfo getProMonthTableList(BmSubContract bmSubContract) {
try {
startPage();
- List res = pmProjectService.getProMonthTableList(bmSubContract);
- return success(res);
+ List res = pmProjectService.getProMonthTableList(bmSubContract);
+ return getDataTable(res);
} catch (Exception e) {
logger.error(e.toString(), e);
}
- return error("系统异常,请联系管理员");
+ return getDataTableError(new ArrayList<>());
}
/**
@@ -326,7 +330,7 @@ public class PmProjectController extends BaseController {
// @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pro:month:list"))
@GetMapping("/getProMonthTableById")
@SysLog(title = "三表一册", businessType = OperaType.UPDATE, module = "三表一册->月度数据详情")
- public AjaxResult getProMonthTableById(@Validated @RequestBody ProMonthTable proMonthTable) {
+ public AjaxResult getProMonthTableById(ProMonthTable proMonthTable) {
try {
ProMonthTable res = pmProjectService.getProMonthTableById(proMonthTable);
return success(res);
@@ -335,4 +339,116 @@ public class PmProjectController extends BaseController {
}
return error("系统异常,请联系管理员");
}
+
+ /**
+ * 导出农民工花名册
+ */
+ @PostMapping("/exportProMonthTableRoster")
+ @SysLog(title = "三表一册", businessType = OperaType.EXPORT, module = "三表一册->导出农民工花名册")
+ public void exportProMonthTableRoster(HttpServletResponse response, ProMonthTableRosterVo proMonthTableRosterVo) {
+ try {
+ List res = pmProjectService.getProMonthTableRosterList(proMonthTableRosterVo);
+ ExcelUtil util = new ExcelUtil(ProMonthTableRosterVo.class);
+ util.exportExcel(response, res, "导出农民工花名册");
+ } catch (Exception e) {
+ logger.error(e.toString(), e);
+ }
+ }
+
+ /**
+ * 导出农民工实名制工资信息报审
+ */
+ @PostMapping("/exportUserSalaryApproval")
+ @SysLog(title = "三表一册", businessType = OperaType.EXPORT, module = "三表一册->导出农民工实名制工资信息报审")
+ public void exportUserSalaryApproval(HttpServletResponse response, UserSalaryApprovalVo userSalaryApprovalVo) {
+ try {
+ List res = pmProjectService.getUserSalaryApprovalList(userSalaryApprovalVo);
+ ExcelUtil util = new ExcelUtil(UserSalaryApprovalVo.class);
+ util.exportExcel(response, res, "农民工实名制工资信息报审");
+ } catch (Exception e) {
+ logger.error(e.toString(), e);
+ }
+ }
+
+ /**
+ * 导出分包人员考勤明细
+ */
+ @PostMapping("/exportUserAttendance")
+ @SysLog(title = "三表一册", businessType = OperaType.EXPORT, module = "三表一册->导出分包人员考勤明细")
+ public void exportUserAttendance(HttpServletResponse response, UserAttendanceVo userAttendanceVo) {
+ try {
+ List res = pmProjectService.getUserAttendanceList(userAttendanceVo);
+ ExcelUtil util = new ExcelUtil(UserAttendanceVo.class);
+ util.exportExcel(response, res, "分包人员考勤明细");
+ } catch (Exception e) {
+ logger.error(e.toString(), e);
+ }
+ }
+
+ /**
+ * 导出农民工工资支付表
+ */
+ @PostMapping("/exportUserWagePay")
+ @SysLog(title = "三表一册", businessType = OperaType.EXPORT, module = "三表一册->导出农民工工资支付表")
+ public void exportUserWagePay(HttpServletResponse response, UserWagePayVo userWagePayVo) {
+ try {
+ List res = pmProjectService.getUserWagePayList(userWagePayVo);
+ ExcelUtil util = new ExcelUtil(UserWagePayVo.class);
+ util.exportExcel(response, res, "农民工工资支付表");
+ } catch (Exception e) {
+ logger.error(e.toString(), e);
+ }
+ }
+
+ /**
+ * 导出三表一册
+ */
+ @PostMapping("/exportThreeAndOne")
+ @SysLog(title = "三表一册", businessType = OperaType.EXPORT, module = "三表一册->导出三表一册")
+ public void exportThreeAndOne(HttpServletResponse response, UserWagePayVo userWagePayVo) {
+ try {
+ // 设置响应头
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setCharacterEncoding("utf-8");
+ String fileName = URLEncoder.encode("三表一册", "UTF-8").replaceAll("\\+", "%20");
+ response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+ //农民工工资支付表
+ List userWagePayList = pmProjectService.getUserWagePayList(userWagePayVo);
+ //农民工实名制工资信息报审
+ UserSalaryApprovalVo userSalaryApprovalVo = new UserSalaryApprovalVo();
+ List userSalaryApprovalList = pmProjectService.getUserSalaryApprovalList(userSalaryApprovalVo);
+ //分包人员考勤明细
+ UserAttendanceVo userAttendanceVo = new UserAttendanceVo();
+ List userAttendanceList = pmProjectService.getUserAttendanceList(userAttendanceVo);
+ //农民工花名册
+ ProMonthTableRosterVo proMonthTableRosterVo = new ProMonthTableRosterVo();
+ List proMonthTableRosterList = pmProjectService.getProMonthTableRosterList(proMonthTableRosterVo);
+ // 获取ExcelWriter对象
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
+ // 第一个sheet
+ WriteSheet writeSheet1 = EasyExcel.writerSheet(0, "农民工工资支付")
+ .head(UserWagePayVo.class)
+ .build();
+ excelWriter.write(userWagePayList, writeSheet1);
+ // 第二个sheet
+ WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "农民工实名制工资信息报审")
+ .head(UserSalaryApprovalVo.class)
+ .build();
+ excelWriter.write(userSalaryApprovalList, writeSheet2);
+ // 第三个sheet
+ WriteSheet writeSheet3 = EasyExcel.writerSheet(2, "分包人员考勤明细")
+ .head(UserAttendanceVo.class)
+ .build();
+ excelWriter.write(userAttendanceList, writeSheet3);
+ // 第四个sheet
+ WriteSheet writeSheet4 = EasyExcel.writerSheet(3, "农民工花名册")
+ .head(ProMonthTableRosterVo.class)
+ .build();
+ excelWriter.write(proMonthTableRosterList, writeSheet4);
+ // 关闭流
+ excelWriter.finish();
+ } catch (Exception e) {
+ logger.error(e.toString(), e);
+ }
+ }
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/ProMonthTable.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/ProMonthTable.java
index d464ce6..49efe76 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/ProMonthTable.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/ProMonthTable.java
@@ -123,4 +123,9 @@ public class ProMonthTable {
* 文件列表
*/
List contractFile;
+
+ /**
+ * 工程状态 字典表选,但直接存值
+ */
+ private String proStatus;
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/ProMonthTableRosterVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/ProMonthTableRosterVo.java
index cda7b58..c74a52a 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/ProMonthTableRosterVo.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/ProMonthTableRosterVo.java
@@ -1,5 +1,6 @@
package com.bonus.bmw.domain.vo;
+import com.bonus.common.core.annotation.Excel;
import lombok.Data;
/**
@@ -37,6 +38,7 @@ public class ProMonthTableRosterVo {
/**
*分包单位名称
*/
+ @Excel(name = "分包单位",sort = 1)
private String subName;
/**
@@ -47,6 +49,7 @@ public class ProMonthTableRosterVo {
/**
*班组名称
*/
+ @Excel(name = "班组",sort = 2)
private String teamName;
/**
@@ -57,65 +60,78 @@ public class ProMonthTableRosterVo {
/**
*用户名称
*/
+ @Excel(name = "姓名",sort = 3)
private String userName;
/**
*性别 0 女 1男
*/
+ @Excel(name = "性别",sort = 4,readConverterExp = "0=女,1=男")
private String sex;
/**
*工种
*/
+
private String workId;
/**
*工种名称
*/
+ @Excel(name = "职务/工种",sort = 5)
private String workName;
/**
*发证单位及编号
*/
+ @Excel(name = "发证单位及证书号",sort = 6)
private String unitAndCode;
/**
*有效期
*/
+ @Excel(name = "有效期",sort = 7)
private String period;
/**
*身份证号码
*/
+ @Excel(name = "公民身份证号",sort = 8)
private String idCard;
/**
*户籍所在地
*/
+ @Excel(name = "户籍地址",sort = 9)
private String residence;
/**
*手机号
*/
+ @Excel(name = "手机号",sort = 10)
private String phone;
/**
*备注
*/
+ @Excel(name = "备注",sort = 14)
private String remark;
/**
*出场时间
*/
+ @Excel(name = "离场时间",sort = 12)
private String outTime;
/**
*在岗情况
*/
+ @Excel(name = "在岗情况",sort = 13)
private String onDuty;
/**
*入场时间
*/
+ @Excel(name = "入场时间",sort = 11)
private String inTime;
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserAttendanceVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserAttendanceVo.java
index 4756e46..0a70453 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserAttendanceVo.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserAttendanceVo.java
@@ -1,5 +1,6 @@
package com.bonus.bmw.domain.vo;
+import com.bonus.common.core.annotation.Excel;
import lombok.Data;
/**
@@ -32,6 +33,7 @@ public class UserAttendanceVo {
/**
* 工程名称
*/
+ @Excel(name = "项目名称",sort = 1)
private String proName;
/**
@@ -52,21 +54,25 @@ public class UserAttendanceVo {
/**
* 分包名称
*/
+ @Excel(name = "分包队伍全称",sort = 2)
private String subName;
/**
* 姓名
*/
+ @Excel(name = "姓名",sort = 3)
private String userName;
/**
* 身份证号码
*/
+ @Excel(name = "身份证号码",sort = 4)
private String idCard;
/**
* 工种名称
*/
+ @Excel(name = "职务/工种",sort = 5)
private String workName;
/**
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserSalaryApprovalVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserSalaryApprovalVo.java
index 922e5b8..590a929 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserSalaryApprovalVo.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserSalaryApprovalVo.java
@@ -1,5 +1,6 @@
package com.bonus.bmw.domain.vo;
+import com.bonus.common.core.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
@@ -44,11 +45,13 @@ public class UserSalaryApprovalVo {
/**
* 班组名称
*/
+ @Excel(name = "所在班组",sort = 2)
private String teamName;
/**
* 姓名
*/
+ @Excel(name = "姓名",sort = 1)
private String userName;
/**
@@ -59,11 +62,13 @@ public class UserSalaryApprovalVo {
/**
* 身份证号码
*/
+ @Excel(name = "身份证号",sort = 3)
private String idCard;
/**
* 联系方式
*/
+ @Excel(name = "联系方式",sort = 10)
private String phone;
/**
@@ -79,16 +84,19 @@ public class UserSalaryApprovalVo {
/**
* 开户银行
*/
+ @Excel(name = "开户银行",sort = 4)
private String bankName;
/**
* 银行卡号
*/
+ @Excel(name = "银行卡号",sort = 6)
private String bankCode;
/**
* 收款银行联行号
*/
+ @Excel(name = "收款银行联行号",sort = 5)
private String bankNum;
/**
@@ -99,20 +107,24 @@ public class UserSalaryApprovalVo {
/**
* 工资标准
*/
+ @Excel(name = "工资标准(元/日)",sort = 7)
private BigDecimal priceWage;
/**
* 支付周期
*/
+ @Excel(name = "支付周期",sort = 8)
private String payment;
/**
* 支付日期
*/
+ @Excel(name = "支付日期",sort = 9)
private String payDay;
/**
* 备注
*/
+ @Excel(name = "备注",sort = 11)
private String remark;
}
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserWagePayVo.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserWagePayVo.java
index 835b5ce..d5fe2c7 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserWagePayVo.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/domain/vo/UserWagePayVo.java
@@ -1,5 +1,6 @@
package com.bonus.bmw.domain.vo;
+import com.bonus.common.core.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
@@ -39,6 +40,7 @@ public class UserWagePayVo {
/**
* 人员名称
*/
+ @Excel(name = "姓名",sort = 1)
private String userName;
/**
@@ -49,6 +51,7 @@ public class UserWagePayVo {
/**
* 身份证号码
*/
+ @Excel(name = "身份证号",sort = 2)
private String idCard;
/**
@@ -59,71 +62,85 @@ public class UserWagePayVo {
/**
* 班组名称
*/
+ @Excel(name = "所在班组",sort = 3)
private String teamName;
/**
* 岗位
*/
+ @Excel(name = "岗位",sort = 4)
private String workName;
/**
* 出勤天数
*/
+ @Excel(name = "出勤天数",sort = 5)
private int attendanceNum;
/**
* 工资应发
*/
+ @Excel(name = "应发工资",sort = 6)
private BigDecimal payMoney;
/**
* 工资代扣
*/
+ @Excel(name = "其中代扣/代缴",sort = 7)
private BigDecimal deductMoney;
/**
* 实发工资
*/
+ @Excel(name = "实发工资",sort = 8)
private BigDecimal actualMoney;
/**
* 开户银行
*/
+ @Excel(name = "开户银行",sort = 9)
private String bankName;
/**
* 收款银行联行号
*/
+ @Excel(name = "收款银行联行号",sort = 10)
private String bankNum;
/**
* 银行卡号
*/
+ @Excel(name = "银行卡号",sort = 11)
private String bankCode;
/**
* 是否与劳动合同约定一致 0 否 1是
*/
+ @Excel(name = "是否与劳动合同约定一致",sort = 12,readConverterExp = "0=否,1=是")
private String isAccord;
/**
* 本人签字
*/
+ @Excel(name = "本人签字",sort = 13)
private String signature;
/**
* 备注
*/
+ @Excel(name = "备注",sort = 14)
private String remark;
/**
* 转账日期
*/
+ @Excel(name = "转账日期",sort = 15)
private String payDay;
/**
* 银行凭证号
*/
+ @Excel(name = "银行凭证号",sort = 16)
private String bankNumber;
/**
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmProjectService.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmProjectService.java
index c935987..23e7a79 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmProjectService.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/PmProjectService.java
@@ -58,7 +58,7 @@ public interface PmProjectService {
/**
* 每月数据
*/
- List getProMonthTableList(BmSubContract bmSubContract);
+ List getProMonthTableList(BmSubContract bmSubContract);
/**
* 农民工花名册
diff --git a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmProjectServiceImpl.java b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmProjectServiceImpl.java
index e22719f..b6b62ab 100644
--- a/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmProjectServiceImpl.java
+++ b/bonus-modules/bonus-bmw/src/main/java/com/bonus/bmw/service/impl/PmProjectServiceImpl.java
@@ -178,7 +178,7 @@ public class PmProjectServiceImpl implements PmProjectService {
* 每月数据
*/
@Override
- public List getProMonthTableList(BmSubContract bmSubContract) {
+ public List getProMonthTableList(BmSubContract bmSubContract) {
return pmProjectMapper.getProMonthTableList(bmSubContract);
}
diff --git a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmProjectMapper.xml b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmProjectMapper.xml
index 9301e32..9592e12 100644
--- a/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmProjectMapper.xml
+++ b/bonus-modules/bonus-bmw/src/main/resources/mapper/bmw/PmProjectMapper.xml
@@ -201,7 +201,6 @@
count(tpmt.id) as tableMonth,
sum(tpmt.sub_num) as subNum,
sum(tpmt.team_num) as teamNum,
- sum(tpmt.team_num) as teamNum,
sum(tpmt.pay_num) as payNum,
sum(tpmt.net_salary) as netSalary,
pp.pro_status as proStatus
@@ -220,7 +219,7 @@
select id,pro_name,pro_status,pro_type,vol_level,start_time,end_time,pro_address
from pm_project where id = #{proId}
-