三表一册数据来源

This commit is contained in:
方亮 2025-09-25 14:08:57 +08:00
parent 1ac1304762
commit e67f6b8bb8
4 changed files with 102 additions and 9 deletions

View File

@ -22,6 +22,7 @@ public class ThreeTableOneRosterPo {
//1.花名册 //1.花名册
private String firstEinTime; private String firstEinTime;
private String lastExitTime; private String lastExitTime;
private String isOnJob;
//2.农民工实名制工资信息报审表 //2.农民工实名制工资信息报审表
private String bankName; private String bankName;
private String bankCardCode; private String bankCardCode;
@ -36,6 +37,7 @@ public class ThreeTableOneRosterPo {
private String einDay; private String einDay;
private String attDay; private String attDay;
private String isRepair; private String isRepair;
private Integer monthDay;
private String attendanceDay; private String attendanceDay;
private Integer checkDay; private Integer checkDay;
private Integer repairNum; private Integer repairNum;

View File

@ -77,4 +77,19 @@ public interface WorkerJobMapper {
* @return * @return
*/ */
List<ThreeTableOneRosterPo> getWorkerPayData(@Param("attMonth") String attMonth, @Param("proId") Integer proId); List<ThreeTableOneRosterPo> getWorkerPayData(@Param("attMonth") String attMonth, @Param("proId") Integer proId);
/**
* 插入数据
* @param listRoster
*/
void insertWorkerPay(List<ThreeTableOneRosterPo> listRoster);
/**
* 获取数据
* @param string
* @return
*/
boolean getThreeTableOneRosterDataByLastMonth(String string);
void deleteWorkerPay(String lastMonth);
} }

View File

@ -50,11 +50,18 @@ public class ThreeTableOneRosterTask {
// 上个月第一天先得到本月第一天再减一个月 // 上个月第一天先得到本月第一天再减一个月
LocalDate firstDayOfLastMonth = YearMonth.now().minusMonths(1).atDay(1); LocalDate firstDayOfLastMonth = YearMonth.now().minusMonths(1).atDay(1);
// 获取上一个月的天数即该月最后一天是几号
int daysInLastMonth = lastMonth.lengthOfMonth();
String startTime = firstDayOfLastMonth.format(FORMATTER)+" 00:00:00"; String startTime = firstDayOfLastMonth.format(FORMATTER)+" 00:00:00";
String endTime = firstDayOfThisMonth.format(FORMATTER)+" 00:00:00"; String endTime = firstDayOfThisMonth.format(FORMATTER)+" 00:00:00";
//先去检测上一月是否已经生成三表一册
boolean isExist = mapper.getThreeTableOneRosterDataByLastMonth(lastMonth.toString());
//查询所有有人在场的工程 //查询所有有人在场的工程
List<MapBeanVo> listPro = mapper.getAllPro(lastMonth.toString()); List<MapBeanVo> listPro = mapper.getAllPro(lastMonth.toString());
List<ThreeTableOneRosterPo> listRosterAll = new ArrayList<>();
listPro.forEach(mapBeanVo -> { listPro.forEach(mapBeanVo -> {
//每个工程去循环生成 //每个工程去循环生成
//1.花名册 //1.花名册
@ -86,6 +93,8 @@ public class ThreeTableOneRosterTask {
// 遍历listRoster填充数据 // 遍历listRoster填充数据
listRoster.forEach(roster -> { listRoster.forEach(roster -> {
String key = roster.getWorkerId() + "_" + roster.getProId(); String key = roster.getWorkerId() + "_" + roster.getProId();
roster.setIsOnJob(roster.getLastExitTime() != null && !roster.getLastExitTime().isEmpty() ? "1" : "0");
roster.setMonthDay(daysInLastMonth);
// 从listApply中查找匹配的数据 // 从listApply中查找匹配的数据
ThreeTableOneRosterPo applyData = applyMap.get(key); ThreeTableOneRosterPo applyData = applyMap.get(key);
if (applyData != null) { if (applyData != null) {
@ -96,6 +105,7 @@ public class ThreeTableOneRosterTask {
roster.setContractId(applyData.getContractId()); roster.setContractId(applyData.getContractId());
roster.setPriceWage(applyData.getPriceWage()); roster.setPriceWage(applyData.getPriceWage());
roster.setPayment(applyData.getPayment()); roster.setPayment(applyData.getPayment());
roster.setPayDay(applyData.getPayDay());
} }
// 从listAttDeal中查找匹配的数据 // 从listAttDeal中查找匹配的数据
@ -115,13 +125,15 @@ public class ThreeTableOneRosterTask {
roster.setDeductMoney(0.0); roster.setDeductMoney(0.0);
roster.setActualMoney(calculatePayMoney); roster.setActualMoney(calculatePayMoney);
}); });
listRosterAll.addAll(listRoster);
}); });
if(!listRosterAll.isEmpty()){
//插入数据
if(isExist){
//1.花名册 mapper.deleteWorkerPay(lastMonth.toString());
}
mapper.insertWorkerPay(listRosterAll);
}
}catch (Exception e){ }catch (Exception e){
logger.error("人员入场更新表失败,{}",e.getMessage()); logger.error("人员入场更新表失败,{}",e.getMessage());
} }

View File

@ -116,13 +116,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
d.team_name, d.team_name,
d.worker_id, d.worker_id,
pw.`name`, pw.`name`,
pw.sex, if(pw.sex = '男',1,0) as sex,
d.post_id, d.post_id,
d.post_name, d.post_name,
d.id_number, d.id_number,
pw.address, pw.address,
pw.phone, pw.phone,
'remark' as remark, '花名册备注' as remark,
-- 正确的最早入场时间所有与8月相关的入场中最早的 -- 正确的最早入场时间所有与8月相关的入场中最早的
MIN(p.ein_time) AS first_ein_time, MIN(p.ein_time) AS first_ein_time,
-- 获取最后一次“相关入场”的出场时间(即使为 null -- 获取最后一次“相关入场”的出场时间(即使为 null
@ -179,7 +179,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bwc.day_rate as price_wage, bwc.day_rate as price_wage,
'按月支付' AS payment, '按月支付' AS payment,
'每月20日前' AS pay_day, '每月20日前' AS pay_day,
'备注' AS remark, '工资卡备注' AS remark,
pw.phone pw.phone
FROM FROM
bm_worker_ein_day_record d bm_worker_ein_day_record d
@ -235,4 +235,68 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="getWorkerPayData" resultType="com.bonus.job.domain.ThreeTableOneRosterPo"> <select id="getWorkerPayData" resultType="com.bonus.job.domain.ThreeTableOneRosterPo">
</select> </select>
<insert id="insertWorkerPay">
insert into tb_pro_month_table_roster
(
pro_id,
pro_name,
month,
month_day,
sub_id,
sub_name,
team_id,
team_name,
user_id,
user_name,
id_card,
sex,
work_id,
work_name,
unit_and_code,
period,
residence,
phone,
remark,
in_time,
out_time,
on_duty,
bank_name,
bank_card_code,
bank_identifier_code,
contract_id,
price_wage,
payment,
pay_day,
attendance_num,
check_day,
repair_num,
attendance_day,
pay_money,
deduct_money,
actual_money
)values
<foreach item="item" collection="list" index="index" separator=",">
(#{item.proId},#{item.proName},#{item.attMonth},#{item.monthDay},#{item.subId},#{item.subName},#{item.teamId},#{item.teamName},#{item.workerId},
#{item.name},#{item.idNumber},#{item.sex},#{item.postId},#{item.postName},'','',#{item.address},#{item.phone},
#{item.remark},#{item.firstEinTime},#{item.lastExitTime},#{item.isOnJob},#{item.bankName},#{item.bankCardCode},#{item.bankIdentifierCode},
#{item.contractId},#{item.priceWage},#{item.payment},#{item.payDay},#{item.attendanceNum},#{item.checkDay},#{item.repairNum},
#{item.attendanceDay},#{item.payMoney},#{item.deductMoney},#{item.actualMoney})
</foreach>
</insert>
<select id="getThreeTableOneRosterDataByLastMonth" resultType="boolean">
SELECT
COUNT(1) AS count
FROM
tb_pro_month_table_roster
WHERE
month = #{lastMonth}
</select>
<delete id="deleteWorkerPay">
delete from tb_pro_month_table_roster where month = #{lastMonth}
</delete>
</mapper> </mapper>