人员统计

This commit is contained in:
马三炮 2025-10-11 15:24:32 +08:00
parent e1409d0470
commit 354049fcf1
11 changed files with 346 additions and 18 deletions

View File

@ -2,8 +2,11 @@ package com.bonus.bmw.controller;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.domain.vo.PmWorker;
import com.bonus.bmw.domain.vo.PmWorkerVo;
import com.bonus.bmw.service.WorkerStatisticsService;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.core.web.page.TableDataInfo;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
@ -36,7 +39,7 @@ public class WorkerStatisticsController extends BaseController {
* @param o
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth(isUser = false), requiresPermissions = @RequiresPermissions("worker:statistics:query"))
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("worker:statistics:query"))
@GetMapping("/getWorkerStatisticsTable")
@SysLog(title = "人员统计", businessType = OperaType.QUERY, logType = 0, module = "人员统计->人员统计", details = "人员统计")
public TableDataInfo getWorkerStatisticsTable(HomePagePo o) {
@ -50,4 +53,41 @@ public class WorkerStatisticsController extends BaseController {
return getDataTableError(new ArrayList<>());
}
/**
* 身份证信息
* @param pmWorker
* @return
*/
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("worker:statistics:query"))
@GetMapping("/getWorkerDetail")
@SysLog(title = "身份证信息", businessType = OperaType.QUERY, logType = 0, module = "人员统计->身份证信息", details = "身份证信息")
public AjaxResult getWorkerDetail(PmWorker pmWorker) {
try {
PmWorkerVo pmWorkerVo = service.getWorkerDetail(pmWorker);
return success(pmWorkerVo);
} catch (Exception e) {
logger.error(e.toString(), e);
return error("查询身份证信息失败!");
}
}
/* *//**
* 考勤信息
* @param pmWorker
* @return
*//*
@RequiresPermissionsOrInnerAuth(innerAuth = @InnerAuth, requiresPermissions = @RequiresPermissions("worker:statistics:query"))
@GetMapping("/getWorkerEinDayRecordDetail")
@SysLog(title = "考勤信息", businessType = OperaType.QUERY, logType = 0, module = "人员统计->考勤信息", details = "考勤信息")
public AjaxResult getWorkerEinDayRecordDetail(PmWorker pmWorker) {
try {
PmWorkerVo pmWorkerVo = service.getWorkerEinDayRecordDetail(pmWorker);
return success(pmWorkerVo);
} catch (Exception e) {
logger.error(e.toString(), e);
return error("查询身份证信息失败!");
}
}*/
}

View File

@ -0,0 +1,23 @@
package com.bonus.bmw.domain.vo;
/**
* @author 马三炮
* @date 2025/10/11
*/
public class BmWorkerEinDayRecordVo {
/**
* 考勤日期
*/
public String attDay;
/**
* 考勤状态
*/
public String attStatus;
/**
* 考勤时间
*/
public String attTime;
}

View File

@ -0,0 +1,56 @@
package com.bonus.bmw.domain.vo;
import lombok.Data;
/**
* @author 马三炮
* @date 2025/10/11
*/
@Data
public class BmWorkerEinProRecord {
/**
* 入场时间
*/
private String einTime;
/**
* 出场时间
*/
private String exitTime;
/**
* 工程名
*/
private String proName;
/**
* 分包
*/
private String subName;
/**
* 班组
*/
private String teamName;
/**
* 工种
*/
private String postName;
/**
* 手机号
*/
private String phone;
/**
* 出入场状态 1 已入场 2已出场
*/
private String einStatus;
/**
* 0 未上传 1已上传
*/
private String isUploadFile;
}

View File

@ -49,7 +49,10 @@ public class HomePageSubProVo {
private String lightStatus;
private String isAtt;
private String einTime;
private String einStatus;
private String exitTime;
private String isUploadFile;
private String idNumber;
private String daysSinceExit;

View File

@ -0,0 +1,139 @@
package com.bonus.bmw.domain.vo;
import com.bonus.common.core.annotation.Excel;
import com.bonus.system.api.model.UploadFileVo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 人员基础信息表
*/
@Data
public class PmWorkerVo {
/**
* 编号
*/
private Integer id;
/**
* 姓名
*/
@Excel(name = "姓名", sort = 2)
private String name;
/**
* 身份证
*/
@Excel(name = "身份证号", sort = 3)
private String idNumber;
/**
* 性别
*/
private String sex;
/**
* 年龄
*/
private Integer age;
/**
* 手机号
*/
private String phone;
/**
* 出生日期 生日
*/
private String birthday;
/**
* 民族
*/
@Excel(name = "民族", type = Excel.Type.IMPORT)
private String nation;
/**
* 签发机关
*/
@Excel(name = "签发机关", type = Excel.Type.IMPORT)
private String issuingAuthority;
/**
* 有效期开始时间
*/
@Excel(name = "生效日期", type = Excel.Type.IMPORT)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startTime;
/**
* 有效期结束时间
*/
@Excel(name = "失效日期", type = Excel.Type.IMPORT)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endTime;
/**
* 家庭住址
*/
@Excel(name = "身份证住址", type = Excel.Type.IMPORT)
private String address;
/**
* 人脸照片
*/
private String facePhoto;
/**
* 入场状态 0未入场 1 已入场
*/
@Excel(name = "入场状态", type = Excel.Type.EXPORT, sort = 8,readConverterExp = "1=入场,0=出场,2=出场")
private Integer einStatus;
/**
* 0 默认 1 黄灯 2 绿灯 3 失信人员
*/
private Integer lightStatus;
/**
* 创建人
*/
private String createUser;
/**
* 修改人
*/
private String updateUser;
/**
* 出入场信息
*/
private List<BmWorkerEinProRecord> bmWorkerEinProRecordList;
/**
* 合同信息
*/
private List<BmWorkerContract> bmWorkerContractList;
/**
* 工资卡信息
*/
private BmWorkerWageCard bmWorkerWageCard;
/**
* 人脸照片
*/
private List<UploadFileVo> files;
private String photoIds;
private String isShanghai;
private String facePhotoBase64;
}

View File

@ -1,7 +1,7 @@
package com.bonus.bmw.mapper;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.domain.vo.*;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -12,5 +12,12 @@ public interface WorkerStatisticsMapper {
List<HomePageSubProVo> getWorkerStatisticsTable(HomePagePo o);
PmWorkerVo getWorkerDetail(PmWorker pmWorker);
List<BmWorkerEinProRecord> getBmWorkerEinProRecordList(PmWorkerVo pmWorkerVo);
List<BmWorkerContract> getBmWorkerContractList(PmWorkerVo pmWorkerVo);
BmWorkerWageCard getBmWorkerWageCard(PmWorkerVo pmWorkerVo);
}

View File

@ -2,6 +2,8 @@ package com.bonus.bmw.service;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.domain.vo.PmWorker;
import com.bonus.bmw.domain.vo.PmWorkerVo;
import java.util.List;
@ -14,4 +16,5 @@ public interface WorkerStatisticsService {
*/
List<HomePageSubProVo> getWorkerStatisticsTable(HomePagePo o);
PmWorkerVo getWorkerDetail(PmWorker pmWorker);
}

View File

@ -1,12 +1,14 @@
package com.bonus.bmw.service.impl;
import com.bonus.bmw.domain.po.HomePagePo;
import com.bonus.bmw.domain.vo.HomePageSubProVo;
import com.bonus.bmw.domain.vo.*;
import com.bonus.bmw.mapper.WorkerStatisticsMapper;
import com.bonus.bmw.service.WorkerStatisticsService;
import com.bonus.common.core.constant.Constants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
@ -15,10 +17,40 @@ public class WorkerStatisticsServiceImpl implements WorkerStatisticsService {
@Autowired
private WorkerStatisticsMapper mapper;
@Resource
private FileUploadUtils fileUploadUtils;
@Override
public List<HomePageSubProVo> getWorkerStatisticsTable(HomePagePo o) {
return mapper.getWorkerStatisticsTable(o);
}
@Override
public PmWorkerVo getWorkerDetail(PmWorker pmWorker) {
PmWorkerVo pmWorkerVo = mapper.getWorkerDetail(pmWorker);
//获取人员照片信息
if(pmWorkerVo != null){
pmWorkerVo.setFiles(fileUploadUtils.getFileList("", pmWorkerVo.getId().toString(), Constants.FILE_UPLOAD_WORKER, ""));
}
//获取合同信息
List<BmWorkerEinProRecord> bmWorkerEinProRecordList = mapper.getBmWorkerEinProRecordList(pmWorkerVo);
pmWorkerVo.setBmWorkerEinProRecordList(bmWorkerEinProRecordList);
//获取合同信息
List<BmWorkerContract> bmWorkerContractList = mapper.getBmWorkerContractList(pmWorkerVo);
if (bmWorkerContractList.size()>0){
for (BmWorkerContract bmWorkerContract:bmWorkerContractList) {
pmWorkerVo.setFiles(fileUploadUtils.getFileList("", bmWorkerContract.getId().toString(), Constants.FILE_UPLOAD_CONTRACT, ""));
}
}
pmWorkerVo.setBmWorkerEinProRecordList(bmWorkerEinProRecordList);
//工资卡信息
BmWorkerWageCard bmWorkerWageCard = mapper.getBmWorkerWageCard(pmWorkerVo);
//获取人员照片信息
if(bmWorkerWageCard != null){
pmWorkerVo.setFiles(fileUploadUtils.getFileList("", bmWorkerWageCard.getId().toString(), Constants.FILE_UPLOAD_WAGE_CARD, ""));
}
pmWorkerVo.setBmWorkerWageCard(bmWorkerWageCard);
return pmWorkerVo;
}
}

View File

@ -11,15 +11,17 @@
<select id="getProStatisticsTable" resultType="com.bonus.bmw.domain.vo.HomePageSubProVo">
SELECT
pp.id AS pro_id,
pp.id AS proId,
pp.pro_name,
psc.sub_company_name,
pp.pro_type,
pp.vol_level,
pp.pro_status,
pp.pro_address,
pp.start_time as einTime,
pp.end_time as exitTime,
count(DISTINCT ps.id) AS subNum,
count(DISTINCT psc.id) AS teamNum,
count(DISTINCT pstc.id) AS teamNum,
count(DISTINCT bwem.worker_id) AS einNum
FROM
pm_project pp
@ -164,7 +166,7 @@
INNER JOIN pm_sub ps ON ps.id = bsc.sub_id
AND pp.is_active = 1
INNER JOIN pm_sub_team_contract pstc ON ps.id = pstc.sub_id
AND pstc.is_active = 1
AND pstc.is_active = 1 and pp.id = pstc.pro_id
INNER JOIN pm_sub_team pst ON pst.id = pstc.team_id
AND pst.is_active = 1
LEFT JOIN bm_worker_ein_msg bwem ON pp.id = bwem.pro_id
@ -197,7 +199,7 @@
SELECT
bwepr.id,
bwepr.worker_id,
pw.`name`,
pw.`name` as workerName,
pw.`id_number`,
pw.phone,
bwepr.post_id,
@ -224,7 +226,7 @@
SELECT
0 as id,
bwem.worker_id,
pw.`name`,
pw.`name` as workerName,
pw.`id_number`,
pw.phone,
bwem.post_id,
@ -248,7 +250,7 @@
) aaa
<where>
<if test="name != null">
and aaa.name = #{name}
and aaa.workerName = #{name}
</if>
<if test="postId != null">
and aaa.post_id = #{postId}
@ -274,15 +276,18 @@
SELECT
pw.`name` as workerName,
pw.id_number,
pw.phone,
bap.sub_id,
bap.sub_name,
bap.team_id,
bap.team_name,
bwepr.post_name,
count(bap.worker_id) AS attNumHis,
sum(IF(bap.is_repair = 1, 1, 0)) AS repairNumHis
FROM
bm_att_person bap
INNER JOIN pm_worker pw ON pw.id = bap.worker_id
INNER JOIN bm_worker_ein_pro_record bwepr ON pw.id = bap.worker_id
WHERE
bap.pro_id = #{proId}
<if test="name != null">
@ -295,8 +300,8 @@
and bap.sub_id = #{subId}
</if>
GROUP BY
sub_id,
team_id,
bap.sub_id,
bap.team_id,
pw.id
</select>

View File

@ -26,7 +26,7 @@
</select>
<select id="getEinNumByHis" resultType="com.bonus.bmw.domain.vo.ProStatisticsPo">
SELECT
count(DISTINCT pp.worker_id) AS einNumHis,
count(pp.worker_id) AS einNumHis,
min(pp.ein_time) as einTime,
max(pp.exit_time) as exitTime,
sum(if(ein_status=2 and is_upload_file = 1,1,0)) as exitUploadFile,
@ -161,7 +161,7 @@
SELECT
bwepr.id,
bwepr.worker_id,
pw.`name`,
pw.`name` as workerName,
pw.`id_number`,
pw.phone,
bwepr.post_id,
@ -188,7 +188,7 @@
SELECT
0 as id,
bwem.worker_id,
pw.`name`,
pw.`name` as workerName,
pw.`id_number`,
pw.phone,
bwem.post_id,
@ -212,7 +212,7 @@
) aaa
<where>
<if test="name != null">
and aaa.name = #{name}
and aaa.workerName = #{name}
</if>
<if test="postId != null">
and aaa.post_id = #{postId}
@ -236,19 +236,22 @@
SELECT
pw.`name` as workerName,
pw.id_number,
pw.phone,
bap.sub_id,
bap.sub_name,
bap.team_id,
bap.team_name,
bwepr.post_name,
count(bap.worker_id) AS attNumHis,
sum(IF(bap.is_repair = 1, 1, 0)) AS repairNumHis
FROM
bm_att_person bap
INNER JOIN pm_worker pw ON pw.id = bap.worker_id
INNER JOIN bm_worker_ein_pro_record bwepr ON pw.id = bap.worker_id
WHERE
bap.sub_id = #{subId}
<if test="name != null">
and pw.name = #{name}
and pw.workerName = #{name}
</if>
<if test="teamId != null">
and bap.team_id = #{teamId}
@ -257,8 +260,8 @@
and bap.sub_id = #{subId}
</if>
GROUP BY
pro_id,
team_id,
bap.pro_id,
bap.team_id,
pw.id
</select>
</mapper>

View File

@ -39,5 +39,22 @@
AND locate(#{workerName},pw.name)
</if>
</select>
<select id="getWorkerDetail" resultType="com.bonus.bmw.domain.vo.PmWorkerVo">
select id,name,id_number,sex,birthday,issuing_authority,nation,start_time,end_time,address,phone
from pm_worker where id = #{workerId}
</select>
<select id="getBmWorkerEinProRecordList" resultType="com.bonus.bmw.domain.vo.BmWorkerEinProRecord">
select ein_time,exit_time,pro_name,sub_name,team_name,post_name,#{phone},ein_status,is_upload_file
from bm_worker_ein_pro_record where worker_id = #{id}
</select>
<select id="getBmWorkerContractList" resultType="com.bonus.bmw.domain.vo.BmWorkerContract">
select id,contract_code,contract_term_type,is_active,contract_start_date,contract_stop_date,wage_approved_way,
wage_criterion,contract_upload_date
from bm_worker_contract where worker_id =#{id}
</select>
<select id="getBmWorkerWageCard" resultType="com.bonus.bmw.domain.vo.BmWorkerWageCard">
select id,bank_card_code,bank_name,bank_branch_name,create_time
from bm_worker_wage_card where worker_id = #{id}
</select>
</mapper>