三表一册

This commit is contained in:
马三炮 2025-09-25 11:16:22 +08:00
parent c7baad9437
commit 691bcd58f4
11 changed files with 197 additions and 14 deletions

View File

@ -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";
}

View File

@ -119,6 +119,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
@ -142,4 +147,4 @@
</plugins>
</build>
</project>
</project>

View File

@ -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<ProMonthTable> 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<PmProjectVo> res = pmProjectService.getProMonthTableList(bmSubContract);
return success(res);
List<ProMonthTable> 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<ProMonthTableRosterVo> res = pmProjectService.getProMonthTableRosterList(proMonthTableRosterVo);
ExcelUtil<ProMonthTableRosterVo> util = new ExcelUtil<ProMonthTableRosterVo>(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<UserSalaryApprovalVo> res = pmProjectService.getUserSalaryApprovalList(userSalaryApprovalVo);
ExcelUtil<UserSalaryApprovalVo> util = new ExcelUtil<UserSalaryApprovalVo>(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<UserAttendanceVo> res = pmProjectService.getUserAttendanceList(userAttendanceVo);
ExcelUtil<UserAttendanceVo> util = new ExcelUtil<UserAttendanceVo>(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<UserWagePayVo> res = pmProjectService.getUserWagePayList(userWagePayVo);
ExcelUtil<UserWagePayVo> util = new ExcelUtil<UserWagePayVo>(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<UserWagePayVo> userWagePayList = pmProjectService.getUserWagePayList(userWagePayVo);
//农民工实名制工资信息报审
UserSalaryApprovalVo userSalaryApprovalVo = new UserSalaryApprovalVo();
List<UserSalaryApprovalVo> userSalaryApprovalList = pmProjectService.getUserSalaryApprovalList(userSalaryApprovalVo);
//分包人员考勤明细
UserAttendanceVo userAttendanceVo = new UserAttendanceVo();
List<UserAttendanceVo> userAttendanceList = pmProjectService.getUserAttendanceList(userAttendanceVo);
//农民工花名册
ProMonthTableRosterVo proMonthTableRosterVo = new ProMonthTableRosterVo();
List<ProMonthTableRosterVo> 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);
}
}
}

View File

@ -123,4 +123,9 @@ public class ProMonthTable {
* 文件列表
*/
List<UploadFileVo> contractFile;
/**
* 工程状态 字典表选但直接存值
*/
private String proStatus;
}

View File

@ -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;
}

View File

@ -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;
/**

View File

@ -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;
}

View File

@ -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;
/**

View File

@ -58,7 +58,7 @@ public interface PmProjectService {
/**
* 每月数据
*/
List<PmProjectVo> getProMonthTableList(BmSubContract bmSubContract);
List<ProMonthTable> getProMonthTableList(BmSubContract bmSubContract);
/**
* 农民工花名册

View File

@ -178,7 +178,7 @@ public class PmProjectServiceImpl implements PmProjectService {
* 每月数据
*/
@Override
public List<PmProjectVo> getProMonthTableList(BmSubContract bmSubContract) {
public List<ProMonthTable> getProMonthTableList(BmSubContract bmSubContract) {
return pmProjectMapper.getProMonthTableList(bmSubContract);
}

View File

@ -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}
</select>
<select id="getProMonthTableList" resultType="com.bonus.bmw.domain.vo.PmProjectVo">
<select id="getProMonthTableList" resultType="com.bonus.bmw.domain.vo.ProMonthTable">
select id,pro_id,table_month,roster_num,attendance_num,repair_num,salary_num,sub_num,
gross_salary,net_salary,status,block_time,refund_status,team_num,refund_user,
refund_time,is_update,pay_num
@ -239,7 +238,7 @@
<if test="workName != null">
and work_name LIKE CONCAT('%', #{workName}, '%')
</if>
<if test="on_duty != null">
<if test="onDuty != null">
and on_duty = #{onDuty}
</if>
</select>