三表一册

This commit is contained in:
马三炮 2025-09-19 10:31:59 +08:00
parent d0f725f02f
commit 9709fc39a1
10 changed files with 728 additions and 11 deletions

View File

@ -3,6 +3,9 @@ package com.bonus.bmw.controller;
import com.bonus.bmw.domain.po.BmSubContract;
import com.bonus.bmw.domain.po.PmProject;
import com.bonus.bmw.domain.vo.PmProjectVo;
import com.bonus.bmw.domain.vo.ProMonthTable;
import com.bonus.bmw.domain.vo.ProMonthTableRosterVo;
import com.bonus.bmw.domain.vo.UserSalaryApprovalVo;
import com.bonus.bmw.service.PmProjectService;
import com.bonus.common.core.utils.poi.ExcelUtil;
import com.bonus.common.core.web.controller.BaseController;
@ -44,7 +47,7 @@ public class PmProjectController extends BaseController {
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pm:project:list"))
@GetMapping("/list")
@SysLog(title = "标段工程", businessType = OperaType.QUERY, logType = 0, module = "标段工程->标段工程列表")
@SysLog(title = "标段工程", businessType = OperaType.QUERY, module = "标段工程->标段工程列表")
public TableDataInfo list(PmProject pmProject) {
try {
Map<String,String> map = dealWithPermission();
@ -66,7 +69,7 @@ public class PmProjectController extends BaseController {
*/
/* @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pm:company:edit"))*/
@PostMapping("/addOrUpdateProject")
@SysLog(title = "标段工程", businessType = OperaType.UPDATE, logType = 0, module = "标段工程->新增和修改标段工程")
@SysLog(title = "标段工程", businessType = OperaType.UPDATE, module = "标段工程->新增和修改标段工程")
public AjaxResult addOrUpdateProject(@Validated @RequestBody PmProject pmProject) {
try {
int res = pmProjectService.addOrUpdateProject(pmProject);
@ -87,7 +90,7 @@ public class PmProjectController extends BaseController {
*/
/*@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pm:company:del"))*/
@PostMapping("/delProject")
@SysLog(title = "标段工程", businessType = OperaType.UPDATE, logType = 0, module = "标段工程->删除标段工程")
@SysLog(title = "标段工程", businessType = OperaType.UPDATE, module = "标段工程->删除标段工程")
public AjaxResult delProject(@Validated @RequestBody PmProject pmProject) {
try {
int res = pmProjectService.delProject(pmProject);
@ -107,7 +110,7 @@ public class PmProjectController extends BaseController {
* 导出标段工程
*/
@PostMapping("/export")
@SysLog(title = "标段工程", businessType = OperaType.EXPORT, logType = 0, module = "标段工程->导出标段工程")
@SysLog(title = "标段工程", businessType = OperaType.EXPORT, module = "标段工程->导出标段工程")
public void export(HttpServletResponse response, PmProject pmProject) {
try {
List<PmProjectVo> list = pmProjectService.selectProjectList(pmProject);
@ -122,7 +125,7 @@ public class PmProjectController extends BaseController {
* 标段工程下拉框
*/
@GetMapping("/listAll")
@SysLog(title = "标段工程", businessType = OperaType.QUERY, logType = 0, module = "标段工程->标段工程列表")
@SysLog(title = "标段工程", businessType = OperaType.QUERY, module = "标段工程->标段工程列表")
public TableDataInfo listAll(PmProject pmProject) {
try {
List<PmProjectVo> list = pmProjectService.selectProjectListAll(pmProject);
@ -137,7 +140,7 @@ public class PmProjectController extends BaseController {
* 根据分包商id获取标段工程列表
*/
@GetMapping("/listAllBySubId")
@SysLog(title = "标段工程", businessType = OperaType.QUERY, logType = 0, module = "标段工程->标段工程列表")
@SysLog(title = "标段工程", businessType = OperaType.QUERY, module = "标段工程->标段工程列表")
public TableDataInfo listAllBySubId(BmSubContract bmSubContract) {
try {
List<PmProjectVo> list = pmProjectService.listAllBySubId(bmSubContract);
@ -153,7 +156,7 @@ public class PmProjectController extends BaseController {
*/
/*@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pm:company:del"))*/
@PostMapping("/getPeoNum")
@SysLog(title = "标段工程", businessType = OperaType.UPDATE, logType = 0, module = "标段工程->获取班组人员出入场信息")
@SysLog(title = "标段工程", businessType = OperaType.UPDATE, module = "标段工程->获取班组人员出入场信息")
public AjaxResult getPeoNum(@Validated @RequestBody BmSubContract bmSubContract) {
try {
Map<String, Object> res = pmProjectService.getPeoNum(bmSubContract);
@ -163,4 +166,104 @@ public class PmProjectController extends BaseController {
}
return error("系统异常,请联系管理员");
}
/**
* 三表一册
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pro:month:list"))
@GetMapping("/getThreeForms")
@SysLog(title = "三表一册", businessType = OperaType.UPDATE, module = "三表一册->三表一册列表")
public AjaxResult getThreeForms(ProMonthTable proMonthTable) {
try {
startPage();
List<ProMonthTable> res = pmProjectService.getThreeForms(proMonthTable);
return success(res);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
/**
* 每月数据
*/
// @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pro:month:list"))
@GetMapping("/getProMonthTableList")
@SysLog(title = "三表一册", businessType = OperaType.UPDATE, module = "三表一册->每月数据")
public AjaxResult getProMonthTableList(BmSubContract bmSubContract) {
try {
startPage();
List<PmProjectVo> res = pmProjectService.getProMonthTableList(bmSubContract);
return success(res);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
/**
* 获取项目详情
*/
// @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pro:month:list"))
@GetMapping("/getProjectById")
@SysLog(title = "三表一册", businessType = OperaType.UPDATE, module = "三表一册->获取项目详情")
public AjaxResult getProjectById(BmSubContract bmSubContract) {
try {
PmProjectVo res = pmProjectService.getProjectById(bmSubContract);
return success(res);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
/**
* 农民工花名册
*/
// @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pro:month:list"))
@GetMapping("/getProMonthTableRosterList")
@SysLog(title = "三表一册", businessType = OperaType.UPDATE, module = "三表一册->农民工花名册")
public AjaxResult getProMonthTableRosterList(ProMonthTableRosterVo proMonthTableRosterVo) {
try {
List<ProMonthTableRosterVo> res = pmProjectService.getProMonthTableRosterList(proMonthTableRosterVo);
return success(res);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
/**
* 农民工实名制工资信息报审
*/
// @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pro:month:list"))
@GetMapping("/getUserSalaryApprovalList")
@SysLog(title = "三表一册", businessType = OperaType.UPDATE, module = "三表一册->农民工实名制工资信息报审")
public AjaxResult getUserSalaryApprovalList(UserSalaryApprovalVo userSalaryApprovalVo) {
try {
List<UserSalaryApprovalVo> res = pmProjectService.getUserSalaryApprovalList(userSalaryApprovalVo);
return success(res);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
/**
* 分包人员考勤明细
*/
// @RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("pro:month:list"))
@GetMapping("/getUserAttendanceList")
@SysLog(title = "三表一册", businessType = OperaType.UPDATE, module = "三表一册->分包人员考勤明细")
public AjaxResult getUserAttendanceList(UserSalaryApprovalVo userSalaryApprovalVo) {
try {
List<UserSalaryApprovalVo> res = pmProjectService.getUserAttendanceList(userSalaryApprovalVo);
return success(res);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
}

View File

@ -0,0 +1,113 @@
package com.bonus.bmw.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author 马三炮
* @date 2025/9/18
*/
@Data
public class ProMonthTable {
/**
* 主键
*/
private Long id;
/**
* 工程id
*/
private Long proId;
/**
* 工程名称
*/
private String proName;
/**
* 分公司名称
*/
private String subComName;
/**
* 月份
*/
private String tableMonth;
/**
* 花名册人数
*/
private Integer rosterNum;
/**
* 考勤打卡天数
*/
private Integer attendanceNum;
/**
* 考勤补卡天数
*/
private Integer repairNum;
/**
* 工资填报人数
*/
private Integer salaryNum;
/**
* 分包单位数量
*/
private Integer subNum;
/**
* 应发工资
*/
private BigDecimal grossSalary;
/**
* 实发工资
*/
private BigDecimal netSalary;
/**
* 状态 0进行中 1待封档 2已封档
*/
private String status;
/**
* 封单时间
*/
private String blockTime;
/**
* 回传单上传状态 0未上传 1已上传
*/
private String refundStatus;
/**
* 班组数量
*/
private Integer teamNum;
/**
* 上传人
*/
private Integer refundUser;
/**
* 上传时间
*/
private String refundTime;
/**
* 是否有数据需要更新
*/
private String isUpdate;
/**
* 发放人员人次
*/
private Integer payNum;
}

View File

@ -0,0 +1,121 @@
package com.bonus.bmw.domain.vo;
import lombok.Data;
/**
* @author 马三炮
* @date 2025/9/19
*/
@Data
public class ProMonthTableRosterVo {
/**
*主键
*/
private Long id;
/**
*工程id
*/
private Long proId;
/**
*月份
*/
private String proMonth;
/**
*月度id
*/
private Long monthId;
/**
*分包单位id
*/
private Long subId;
/**
*分包单位名称
*/
private String subName;
/**
*班组id
*/
private Long teamId;
/**
*班组名称
*/
private String teamName;
/**
*用户id
*/
private Long userId;
/**
*用户名称
*/
private String userName;
/**
*性别 0 1男
*/
private String sex;
/**
*工种
*/
private String workId;
/**
*工种名称
*/
private String workName;
/**
*发证单位及编号
*/
private String unitAndCode;
/**
*有效期
*/
private String period;
/**
*身份证号码
*/
private String idCard;
/**
*户籍所在地
*/
private String residence;
/**
*手机号
*/
private String phone;
/**
*备注
*/
private String remark;
/**
*出场时间
*/
private String outTime;
/**
*在岗情况
*/
private String onDuty;
/**
*入场时间
*/
private String inTime;
}

View File

@ -0,0 +1,96 @@
package com.bonus.bmw.domain.vo;
import lombok.Data;
/**
* @author 马三炮
* @date 2025/9/19
*/
@Data
public class UserAttendanceVo {
/**
* 主键
*/
private Long id;
/**
* 月度id
*/
private Long monthId;
/**
* 工程id
*/
private Long proId;
/**
* 月份
*/
private String month;
/**
* 工程名称
*/
private String proName;
/**
* 月天数
*/
private Integer monthDay;
/**
* 花名册id
*/
private Long rosterId;
/**
* 分包id
*/
private Long subId;
/**
* 分包名称
*/
private String subName;
/**
* 姓名
*/
private String userName;
/**
* 身份证号码
*/
private String idCard;
/**
* 工种名称
*/
private String workName;
/**
* 工种id
*/
private String workId;
/**
* 考勤信息(json)[{status:1,type:0}](主要存储 是否补卡 和是否考勤
*/
private String attendanceDay;
/**
* 打卡天数
*/
private int checkDay;
/**
* 补卡天数
*/
private int repairNum;
/**
* 考勤天数=打卡+补卡天数
*/
private int attendanceNum;
}

View File

@ -0,0 +1,118 @@
package com.bonus.bmw.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author 马三炮
* @date 2025/9/19
*/
@Data
public class UserSalaryApprovalVo {
/**
* 主键
*/
private Long id;
/**
* 花名册id
*/
private Long rosterId;
/**
* 工程id
*/
private Long proId;
/**
* 月度id
*/
private Long monthId;
/**
* 月份
*/
private String month;
/**
* 班组id
*/
private Long teamId;
/**
* 班组名称
*/
private String teamName;
/**
* 姓名
*/
private String userName;
/**
* 用户id
*/
private Long userId;
/**
* 身份证号码
*/
private String idCard;
/**
* 联系方式
*/
private String phone;
/**
* 分包id
*/
private Long subId;
/**
* 分包名称
*/
private String subName;
/**
* 开户银行
*/
private String bankName;
/**
* 银行卡号
*/
private String bankCode;
/**
* 收款银行联行号
*/
private String bankNum;
/**
* 收款银行联行号
*/
private Long consId;
/**
* 工资标准
*/
private BigDecimal priceWage;
/**
* 支付周期
*/
private String payment;
/**
* 支付日期
*/
private String payDay;
/**
* 备注
*/
private String remark;
}

View File

@ -4,6 +4,9 @@ import com.bonus.bmw.domain.po.BmSubContract;
import com.bonus.bmw.domain.po.PmProject;
import com.bonus.bmw.domain.po.PmSubCompany;
import com.bonus.bmw.domain.vo.PmProjectVo;
import com.bonus.bmw.domain.vo.ProMonthTable;
import com.bonus.bmw.domain.vo.ProMonthTableRosterVo;
import com.bonus.bmw.domain.vo.UserSalaryApprovalVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -73,4 +76,29 @@ public interface PmProjectMapper {
* @return
*/
Integer getPeoNum(BmSubContract bmSubContract);
/**
* 三表一册
*/
List<ProMonthTable> getThreeForms(ProMonthTable proMonthTable);
/**
* 获取项目详情
*/
PmProjectVo getProjectById(BmSubContract bmSubContract);
/**
* 每月数据
*/
List<PmProjectVo> getProMonthTableList(BmSubContract bmSubContract);
/**
* 农民工花名册
*/
List<ProMonthTableRosterVo> getProMonthTableRosterList(ProMonthTableRosterVo proMonthTableRosterVo);
/**
* 农民工实名制工资信息报审
*/
List<UserSalaryApprovalVo> getUserSalaryApprovalList(UserSalaryApprovalVo userSalaryApprovalVo);
}

View File

@ -3,6 +3,9 @@ package com.bonus.bmw.service;
import com.bonus.bmw.domain.po.BmSubContract;
import com.bonus.bmw.domain.po.PmProject;
import com.bonus.bmw.domain.vo.PmProjectVo;
import com.bonus.bmw.domain.vo.ProMonthTable;
import com.bonus.bmw.domain.vo.ProMonthTableRosterVo;
import com.bonus.bmw.domain.vo.UserSalaryApprovalVo;
import java.util.List;
import java.util.Map;
@ -43,4 +46,31 @@ public interface PmProjectService {
* @return
*/
Map<String, Object> getPeoNum(BmSubContract bmSubContract);
/**
* 三表一册
*/
List<ProMonthTable> getThreeForms(ProMonthTable proMonthTable);
/**
* 获取项目详情
*/
PmProjectVo getProjectById(BmSubContract bmSubContract);
/**
* 每月数据
*/
List<PmProjectVo> getProMonthTableList(BmSubContract bmSubContract);
/**
* 农民工花名册
*/
List<ProMonthTableRosterVo> getProMonthTableRosterList(ProMonthTableRosterVo proMonthTableRosterVo);
/**
* 农民工实名制工资信息报审
*/
List<UserSalaryApprovalVo> getUserSalaryApprovalList(UserSalaryApprovalVo userSalaryApprovalVo);
List<UserSalaryApprovalVo> getUserAttendanceList(UserSalaryApprovalVo userSalaryApprovalVo);
}

View File

@ -3,8 +3,7 @@ package com.bonus.bmw.service.impl;
import com.bonus.bmw.domain.po.BmSubContract;
import com.bonus.bmw.domain.po.PmProject;
import com.bonus.bmw.domain.po.PmSubCompany;
import com.bonus.bmw.domain.vo.BmSubContractVo;
import com.bonus.bmw.domain.vo.PmProjectVo;
import com.bonus.bmw.domain.vo.*;
import com.bonus.bmw.mapper.BmSubContractMapper;
import com.bonus.bmw.mapper.PmProjectMapper;
import com.bonus.bmw.service.PmProjectService;
@ -147,4 +146,50 @@ public class PmProjectServiceImpl implements PmProjectService {
map.put("perNum",perNum);
return map;
}
/**
* 三表一册
*/
@Override
public List<ProMonthTable> getThreeForms(ProMonthTable proMonthTable) {
return pmProjectMapper.getThreeForms(proMonthTable);
}
/**
* 获取项目详情
*/
@Override
public PmProjectVo getProjectById(BmSubContract bmSubContract) {
return pmProjectMapper.getProjectById(bmSubContract);
}
/**
* 每月数据
*/
@Override
public List<PmProjectVo> getProMonthTableList(BmSubContract bmSubContract) {
return pmProjectMapper.getProMonthTableList(bmSubContract);
}
/**
* 农民工花名册
*/
@Override
public List<ProMonthTableRosterVo> getProMonthTableRosterList(ProMonthTableRosterVo proMonthTableRosterVo) {
return pmProjectMapper.getProMonthTableRosterList(proMonthTableRosterVo);
}
/**
* 农民工实名制工资信息报审
*/
@Override
public List<UserSalaryApprovalVo> getUserSalaryApprovalList(UserSalaryApprovalVo userSalaryApprovalVo) {
return pmProjectMapper.getUserSalaryApprovalList(userSalaryApprovalVo);
}
@Override
public List<UserSalaryApprovalVo> getUserAttendanceList(UserSalaryApprovalVo userSalaryApprovalVo) {
return null;
}
}

View File

@ -179,4 +179,67 @@
<select id="getPeoNum" resultType="java.lang.Integer">
select count(1) from bm_worker_ein_pro_record where is_active='1' and pro_id = #{proId} and ein_status!=2
</select>
<select id="getThreeForms" resultType="com.bonus.bmw.domain.vo.ProMonthTable">
select psc.sub_company_name as subComName,
pp.pro_name as proName,
tpmt.pro_id as proId,
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
from tb_pro_month_table tpmt
left join pm_project pp on pp.id = tpmt.pro_id
left join pm_sub_company psc on pp.sub_com_id = psc.id
where 1=1
<if test="proName != null">
and pp.pro_name LIKE CONCAT('%', #{proName}, '%')
</if>
<if test="proStatus != null">
and pp.pro_status = #{proStatus}
</if>
</select>
<select id="getProjectById" resultType="com.bonus.bmw.domain.vo.PmProjectVo">
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,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
from tb_pro_month_table where pro_id = #{proId}
</select>
<select id="getProMonthTableRosterList" resultType="com.bonus.bmw.domain.vo.ProMonthTableRosterVo">
select id,pro_id,pro_month,month_id,sub_id,sub_name,team_id,team_name,user_id,user_name,sex,
work_id,work_name,unit_and_code,period,id_card,residence,phone,remark,out_time,on_duty,in_time
from tb_pro_month_table_roster where month_id =#{monthId}
<if test="subName != null">
and sub_name LIKE CONCAT('%', #{subName}, '%')
</if>
<if test="teamName != null">
and team_name LIKE CONCAT('%', #{teamName}, '%')
</if>
<if test="workName != null">
and work_name LIKE CONCAT('%', #{workName}, '%')
</if>
<if test="on_duty != null">
and on_duty = #{onDuty}
</if>
</select>
<select id="getUserSalaryApprovalList" resultType="com.bonus.bmw.domain.vo.UserSalaryApprovalVo">
select id,roster_id,pro_id,month_id,month,team_id,team_name,user_name,user_id,id_card,phone,sub_id,
sub_name,bank_name,bank_code,bank_num,cons_id,price_wage,payment,pay_day,remark
from tb_user_salary_approval where month_id = #{monthId}
<if test="bankCode != null">
and bank_code LIKE CONCAT('%', #{bankCode}, '%')
</if>
<if test="teamName != null">
and team_name LIKE CONCAT('%', #{teamName}, '%')
</if>
<if test="userName != null">
and user_name LIKE CONCAT('%', #{userName}, '%')
</if>
</select>
</mapper>

View File

@ -83,7 +83,7 @@ public class SysFileController
* @param objectKey除mongodb 存fileid之外其他均存上传文件的网络路径
*/
@GetMapping("/download")
public void downloadFile(HttpServletResponse response, @RequestParam String objectKey) throws IOException {
public void downloadFile(HttpServletResponse response, @RequestParam("objectKey") String objectKey) throws IOException {
try {
String fileUrl = Base64Utils.decodeUrl(URLDecoder.decode(objectKey));
sysFileService.downloadFile(response, fileUrl);
@ -165,4 +165,4 @@ public class SysFileController
return AjaxResult.success("文件夹删除成功");
}
}
}