bug修改
This commit is contained in:
parent
7a4acb5a45
commit
31d2d1bdf2
@ -11,4 +11,12 @@ public class SeriesItem {
|
|||||||
private String name;
|
private String name;
|
||||||
@ApiModelProperty("图例数据")
|
@ApiModelProperty("图例数据")
|
||||||
private List<Number> data;
|
private List<Number> data;
|
||||||
|
|
||||||
|
public SeriesItem() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public SeriesItem(String name, List<Number> data) {
|
||||||
|
this.name = name;
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,4 +71,17 @@ public class WorkerAttendanceVo {
|
|||||||
@ApiModelProperty(value = "区域名称")
|
@ApiModelProperty(value = "区域名称")
|
||||||
private String regionName;
|
private String regionName;
|
||||||
|
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String teamName;
|
||||||
|
private String departmentTeamId;
|
||||||
|
private Integer workerClassify;
|
||||||
|
private Integer codeState;
|
||||||
|
private Integer isMock;
|
||||||
|
private String fieldAcquisitionUrl;
|
||||||
|
private String departmentTeamName;
|
||||||
|
private String mockTime;
|
||||||
|
private String enterpriseId;
|
||||||
|
private String enterpriseName;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -76,7 +76,7 @@ public class SafetyHatDataDailyStatisticsServiceImpl extends ServiceImpl<SafetyH
|
|||||||
.eq(SafetyHatDev::getProjectSn, projectSn)).stream().collect(Collectors.toMap(SafetyHatDev::getDevSn, SafetyHatDev::getWorkerInfoId, (o1, o2) -> o1));
|
.eq(SafetyHatDev::getProjectSn, projectSn)).stream().collect(Collectors.toMap(SafetyHatDev::getDevSn, SafetyHatDev::getWorkerInfoId, (o1, o2) -> o1));
|
||||||
//实时计算
|
//实时计算
|
||||||
ArrayList<SafetyHatDataDailyStatisticsVo> vos = new ArrayList<>();
|
ArrayList<SafetyHatDataDailyStatisticsVo> vos = new ArrayList<>();
|
||||||
List<SafetyHatFence> fences = safetyHatFenceService.list(new LambdaQueryWrapper<SafetyHatFence>().eq(SafetyHatFence::getProjectSn, project.getProjectSn()));
|
List<SafetyHatFence> fences = safetyHatFenceService.list(new LambdaQueryWrapper<SafetyHatFence>().eq(SafetyHatFence::getProjectSn, projectSn));
|
||||||
Map<Long, List<SafetyHatData>> worker2Datas = safetyHatDataService.list(new LambdaQueryWrapper<SafetyHatData>()
|
Map<Long, List<SafetyHatData>> worker2Datas = safetyHatDataService.list(new LambdaQueryWrapper<SafetyHatData>()
|
||||||
.eq(SafetyHatData::getProjectSn, projectSn)
|
.eq(SafetyHatData::getProjectSn, projectSn)
|
||||||
.ge(SafetyHatData::getUploadTime, date)
|
.ge(SafetyHatData::getUploadTime, date)
|
||||||
|
|||||||
@ -138,9 +138,10 @@ public class WorkerAttendanceController {
|
|||||||
@ApiImplicitParam(name = "devSn", value = "设备SN", dataType = "String", paramType = "body", required = false),
|
@ApiImplicitParam(name = "devSn", value = "设备SN", dataType = "String", paramType = "body", required = false),
|
||||||
@ApiImplicitParam(name = "groupId", value = "门禁设备分组id", paramType = "body", required = false, dataType = "String"),
|
@ApiImplicitParam(name = "groupId", value = "门禁设备分组id", paramType = "body", required = false, dataType = "String"),
|
||||||
@ApiImplicitParam(name = "devSnList", value = "门禁设备sn列表", paramType = "body", required = false, dataType = "String"),
|
@ApiImplicitParam(name = "devSnList", value = "门禁设备sn列表", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "containEnterpriseId", value = "包含下级的单位的人员的单位id", paramType = "body", required = false, dataType = "String"),
|
||||||
})
|
})
|
||||||
@PostMapping(value = "/list")
|
@PostMapping(value = "/list")
|
||||||
public Result<IPage<EntityMap>> queryPageList(@RequestBody Map<String, Object> map) {
|
public Result<IPage<WorkerAttendanceVo>> queryPageList(@RequestBody Map<String, Object> map) {
|
||||||
return Result.success(workerAttendanceService.selectWorkerAttendancePage(map));
|
return Result.success(workerAttendanceService.selectWorkerAttendancePage(map));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -456,18 +456,19 @@ public class WorkerDailyAttendanceStatisticsV2Controller {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@OperLog(operModul = "员工每日的考勤统计记录v2管理", operType = "", operDesc = "考勤总览")
|
@OperLog(operModul = "员工每日的考勤统计记录v2管理", operType = "", operDesc = "考勤总览(统计)")
|
||||||
@ApiOperation(value = "考勤总览", notes = "考勤总览", httpMethod = "POST")
|
@ApiOperation(value = "考勤总览(统计)", notes = "考勤总览(统计)", httpMethod = "POST")
|
||||||
@ApiImplicitParams({
|
@ApiImplicitParams({
|
||||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = false, dataType = "String"),
|
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
|
||||||
@ApiImplicitParam(name = "enterpriseTypeId", value = "企业类型id", paramType = "body", required = false, dataType = "String"),
|
|
||||||
@ApiImplicitParam(name = "enterpriseId", value = "所属企业id", paramType = "body", required = false, dataType = "String"),
|
|
||||||
@ApiImplicitParam(name = "teamId", value = "班组ID", paramType = "body", required = false, dataType = "String"),
|
|
||||||
@ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "body", required = false, dataType = "String"),
|
|
||||||
@ApiImplicitParam(name = "startMonth", value = "开始时间,格式2020-08(startMonth和endMonth或startDate和endDate至少传其中一组)", dataType = "String", paramType = "body", required = true),
|
@ApiImplicitParam(name = "startMonth", value = "开始时间,格式2020-08(startMonth和endMonth或startDate和endDate至少传其中一组)", dataType = "String", paramType = "body", required = true),
|
||||||
@ApiImplicitParam(name = "endMonth", value = "结束时间,格式2020-08", dataType = "String", paramType = "body", required = true),
|
@ApiImplicitParam(name = "endMonth", value = "结束时间,格式2020-08", dataType = "String", paramType = "body", required = true),
|
||||||
@ApiImplicitParam(name = "startDate", value = "开始时间,yyyy-MM-dd", paramType = "body", dataType = "String", required = true),
|
@ApiImplicitParam(name = "startDate", value = "开始时间,yyyy-MM-dd", paramType = "body", dataType = "String", required = true),
|
||||||
@ApiImplicitParam(name = "endDate", value = "结束时间,yyyy-MM-dd", paramType = "body", dataType = "String", required = true),
|
@ApiImplicitParam(name = "endDate", value = "结束时间,yyyy-MM-dd", paramType = "body", dataType = "String", required = true),
|
||||||
|
@ApiImplicitParam(name = "personSn", value = "考勤人员唯一标识", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "enterpriseTypeId", value = "企业类型id", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "enterpriseId", value = "所属企业id", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "teamId", value = "班组ID", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "body", required = false, dataType = "String"),
|
||||||
})
|
})
|
||||||
@PostMapping(value = "/countWorkerDailyAttendanceStatisticsV2")
|
@PostMapping(value = "/countWorkerDailyAttendanceStatisticsV2")
|
||||||
public Result<CountWorkerDailyAttendanceStatisticsV2Vo> countWorkerDailyAttendanceStatisticsV2(@RequestBody Map<String, Object> param) {
|
public Result<CountWorkerDailyAttendanceStatisticsV2Vo> countWorkerDailyAttendanceStatisticsV2(@RequestBody Map<String, Object> param) {
|
||||||
@ -530,7 +531,7 @@ public class WorkerDailyAttendanceStatisticsV2Controller {
|
|||||||
.eq(WorkerAttendance::getProjectSn, projectSn)
|
.eq(WorkerAttendance::getProjectSn, projectSn)
|
||||||
.ge(WorkerAttendance::getCreateTime, attendanceDate)
|
.ge(WorkerAttendance::getCreateTime, attendanceDate)
|
||||||
.le(WorkerAttendance::getCreateTime, DateUtil.formatDateTime(DateUtil.endOfDay(DateUtil.parseDate(attendanceDate)))))
|
.le(WorkerAttendance::getCreateTime, DateUtil.formatDateTime(DateUtil.endOfDay(DateUtil.parseDate(attendanceDate)))))
|
||||||
.stream().collect(Collectors.groupingBy(WorkerAttendance::getPersonSn));
|
.stream().filter(w -> Objects.nonNull(w.getPersonSn())).collect(Collectors.groupingBy(WorkerAttendance::getPersonSn));
|
||||||
List<WorkerDailyAttendancesByDateVo> vos = new ArrayList<>();
|
List<WorkerDailyAttendancesByDateVo> vos = new ArrayList<>();
|
||||||
for (WorkerInfo workerInfo : workerInfoList.getRecords()) {
|
for (WorkerInfo workerInfo : workerInfoList.getRecords()) {
|
||||||
WorkerDailyAttendanceStatisticsV2Vo voDb = personSnMap.get(workerInfo.getPersonSn());
|
WorkerDailyAttendanceStatisticsV2Vo voDb = personSnMap.get(workerInfo.getPersonSn());
|
||||||
@ -711,4 +712,23 @@ public class WorkerDailyAttendanceStatisticsV2Controller {
|
|||||||
public Result<IPage<WorkerDailyAttendanceStatisticsV2Vo>> getWorkerDailyAttendancePageForWorkerByDate(@RequestBody HashMap<String, Object> param) {
|
public Result<IPage<WorkerDailyAttendanceStatisticsV2Vo>> getWorkerDailyAttendancePageForWorkerByDate(@RequestBody HashMap<String, Object> param) {
|
||||||
return Result.success(workerDailyAttendanceStatisticsV2Service.getWorkerDailyAttendancePageForWorkerByDate(param));
|
return Result.success(workerDailyAttendanceStatisticsV2Service.getWorkerDailyAttendancePageForWorkerByDate(param));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "统计每日的工时/工日", notes = "统计每日的工时/工日", httpMethod = "POST")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "startDate", value = "开始日期(yyyy-MM-dd)", paramType = "body", required = true, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "endDate", value = "结束日期(yyyy-MM-dd)", paramType = "body", required = true, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "workerName", value = "人员姓名", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "enterpriseTypeId", value = "企业类型id", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "enterpriseId", value = "所属企业id", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "teamId", value = "班组ID", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "departmentId", value = "部门ID", paramType = "body", required = false, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "inserviceType", value = "在职状态 1在职 2离职", paramType = "body", required = false, dataType = "Integer"),
|
||||||
|
@ApiImplicitParam(name = "containEnterpriseId", value = "包含下级的单位的人员的单位id", paramType = "body", required = false, dataType = "String"),
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/countWorkerDailyAttendanceByDate")
|
||||||
|
public Result<List<CountWorkerDailyAttendanceByDateVo>> countWorkerDailyAttendanceByDate(@RequestBody HashMap<String, Object> param) {
|
||||||
|
return Result.success(workerDailyAttendanceStatisticsV2Service.countWorkerDailyAttendanceByDate(param));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.zhgd.xmgl.modules.worker.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CountWorkerDailyAttendanceByDateVo {
|
||||||
|
/**
|
||||||
|
* 日期
|
||||||
|
*/
|
||||||
|
private String date;
|
||||||
|
/**
|
||||||
|
* 总工时
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "总工时")
|
||||||
|
private java.math.BigDecimal hourValTotal;
|
||||||
|
/**
|
||||||
|
* 总工日
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "总工日")
|
||||||
|
private java.math.BigDecimal dayValTotal;
|
||||||
|
}
|
||||||
@ -13,4 +13,9 @@ public class CountWorkerDailyAttendanceStatisticsV2Vo {
|
|||||||
private Integer totalInServiceNum;
|
private Integer totalInServiceNum;
|
||||||
@ApiModelProperty("平均出勤率")
|
@ApiModelProperty("平均出勤率")
|
||||||
private BigDecimal attendanceRateAvg;
|
private BigDecimal attendanceRateAvg;
|
||||||
|
/**
|
||||||
|
* 总工时
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "总工时")
|
||||||
|
private java.math.BigDecimal hourValTotal;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,4 +63,14 @@ public class WorkerDailyAttendanceStatisticsV2Vo extends WorkerDailyAttendanceSt
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "出场打卡(末次)")
|
@ApiModelProperty(value = "出场打卡(末次)")
|
||||||
private String endOutTime;
|
private String endOutTime;
|
||||||
|
/**
|
||||||
|
* 上午打卡(首次)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "上午打卡(首次)")
|
||||||
|
private String firstTimeAm;
|
||||||
|
/**
|
||||||
|
* 下午打卡(未次)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "下午打卡(未次)")
|
||||||
|
private String endTimePm;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,7 +55,7 @@ public interface WorkerAttendanceMapper extends BaseMapper<WorkerAttendance> {
|
|||||||
* @param map
|
* @param map
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Page<EntityMap> selectWorkerAttendancePage(Page<EntityMap> page, @Param("param") Map<String, Object> map);
|
Page<WorkerAttendanceVo> selectWorkerAttendancePage(Page<WorkerAttendanceVo> page, @Param("param") Map<String, Object> map);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 列表查询人员考勤信息
|
* 列表查询人员考勤信息
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.bo.CountWorkerDailyAttendanceStatisticsV2ByDateBo;
|
import com.zhgd.xmgl.modules.worker.entity.bo.CountWorkerDailyAttendanceStatisticsV2ByDateBo;
|
||||||
|
import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceByDateVo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceStatisticsV2Vo;
|
import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceStatisticsV2Vo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
@ -53,9 +54,22 @@ public interface WorkerDailyAttendanceStatisticsV2Mapper extends BaseMapper<Work
|
|||||||
*/
|
*/
|
||||||
WorkerDailyAttendanceStatisticsV2Vo queryById(String id);
|
WorkerDailyAttendanceStatisticsV2Vo queryById(String id);
|
||||||
|
|
||||||
String getMaxTaskAttendanceDate();
|
|
||||||
|
|
||||||
CountWorkerDailyAttendanceStatisticsV2Vo countWorkerDailyAttendanceStatisticsV2(Map<String, Object> param);
|
CountWorkerDailyAttendanceStatisticsV2Vo countWorkerDailyAttendanceStatisticsV2(Map<String, Object> param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 统计每月/日出勤/在职人数统计
|
||||||
|
*
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
List<CountWorkerDailyAttendanceStatisticsV2ByDateBo> countWorkerDailyAttendanceStatisticsV2ByDate(Map<String, Object> param);
|
List<CountWorkerDailyAttendanceStatisticsV2ByDateBo> countWorkerDailyAttendanceStatisticsV2ByDate(Map<String, Object> param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 统计每日的工时/工日
|
||||||
|
*
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<CountWorkerDailyAttendanceByDateVo> countWorkerDailyAttendanceByDate(HashMap<String, Object> param);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,7 +40,8 @@
|
|||||||
]]>
|
]]>
|
||||||
ORDER BY create_time DESC
|
ORDER BY create_time DESC
|
||||||
</select>
|
</select>
|
||||||
<select id="selectWorkerAttendancePage" resultType="com.zhgd.jeecg.common.mybatis.EntityMap">
|
<select id="selectWorkerAttendancePage"
|
||||||
|
resultType="com.zhgd.xmgl.modules.realnamestatistics.entity.vo.WorkerAttendanceVo">
|
||||||
SELECT a.*,
|
SELECT a.*,
|
||||||
IF(a.image_url IS NOT NULL, a.image_url, b.id_card_big_photo_url) image_url,
|
IF(a.image_url IS NOT NULL, a.image_url, b.id_card_big_photo_url) image_url,
|
||||||
code_state,
|
code_state,
|
||||||
@ -60,6 +61,11 @@
|
|||||||
LEFT JOIN department_info d ON b.department_id = d.id
|
LEFT JOIN department_info d ON b.department_id = d.id
|
||||||
LEFT JOIN enterprise_info ei on ei.id=b.enterprise_id
|
LEFT JOIN enterprise_info ei on ei.id=b.enterprise_id
|
||||||
WHERE a.project_sn = #{param.projectSn}
|
WHERE a.project_sn = #{param.projectSn}
|
||||||
|
<if test="param.containEnterpriseId != null and param.containEnterpriseId != '' and param.projectSn != null and param.projectSn != ''">
|
||||||
|
and (b.enterprise_id = #{param.containEnterpriseId} OR b.enterprise_id IN ( SELECT t.enterprise_id FROM
|
||||||
|
project_enterprise t WHERE find_in_set((select id from project_enterprise where enterprise_id =
|
||||||
|
#{param.containEnterpriseId} and project_sn = #{param.projectSn}), ancestors)))
|
||||||
|
</if>
|
||||||
<if test="param.isMock == '1'.toString()">
|
<if test="param.isMock == '1'.toString()">
|
||||||
and a.is_mock = 1
|
and a.is_mock = 1
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@ -54,6 +54,7 @@
|
|||||||
select
|
select
|
||||||
count(*) as total_in_service_num
|
count(*) as total_in_service_num
|
||||||
,ifnull(sum(t.is_attendance),0) as total_attendance_num
|
,ifnull(sum(t.is_attendance),0) as total_attendance_num
|
||||||
|
,ifnull(sum(t.hour_val),0) as hour_val_total
|
||||||
from worker_daily_attendance_statistics_v2 t
|
from worker_daily_attendance_statistics_v2 t
|
||||||
JOIN worker_info a on t.person_sn=a.person_sn
|
JOIN worker_info a on t.person_sn=a.person_sn
|
||||||
JOIN team_info b ON a.team_id = b.id and a.person_type = 1
|
JOIN team_info b ON a.team_id = b.id and a.person_type = 1
|
||||||
@ -62,6 +63,9 @@
|
|||||||
JOIN enterprise_info en ON en.id = a.enterprise_id
|
JOIN enterprise_info en ON en.id = a.enterprise_id
|
||||||
INNER JOIN project_enterprise pe ON a.id = pe.enterprise_id and pe.project_sn=t.project_sn
|
INNER JOIN project_enterprise pe ON a.id = pe.enterprise_id and pe.project_sn=t.project_sn
|
||||||
where t.project_sn=#{projectSn}
|
where t.project_sn=#{projectSn}
|
||||||
|
<if test="personSn != null and personSn != ''">
|
||||||
|
and a.person_sn = #{personSn}
|
||||||
|
</if>
|
||||||
<if test="enterpriseTypeId != null and enterpriseTypeId != ''">
|
<if test="enterpriseTypeId != null and enterpriseTypeId != ''">
|
||||||
and pe.enterprise_type_id = #{enterpriseTypeId}
|
and pe.enterprise_type_id = #{enterpriseTypeId}
|
||||||
</if>
|
</if>
|
||||||
@ -139,4 +143,47 @@
|
|||||||
group by x_name
|
group by x_name
|
||||||
)t
|
)t
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="countWorkerDailyAttendanceByDate"
|
||||||
|
resultType="com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceByDateVo">
|
||||||
|
select
|
||||||
|
date_format(t.attendance_date, '%Y-%m-%d') as date
|
||||||
|
,ifnull(sum(t.hour_val),0) as hour_val_total
|
||||||
|
,ifnull(sum(t.day_val),0) as day_val_total
|
||||||
|
from worker_daily_attendance_statistics_v2 t
|
||||||
|
JOIN worker_info a on t.person_sn=a.person_sn
|
||||||
|
JOIN team_info b ON a.team_id = b.id and a.person_type = 1
|
||||||
|
JOIN department_info c ON a.department_id = c.id and a.person_type = 2
|
||||||
|
JOIN worker_type wt ON b.worker_type_id = wt.id and a.person_type = 1
|
||||||
|
JOIN enterprise_info en ON en.id = a.enterprise_id
|
||||||
|
INNER JOIN project_enterprise pe ON a.id = pe.enterprise_id and pe.project_sn=t.project_sn
|
||||||
|
where t.project_sn=#{projectSn}
|
||||||
|
<if test="enterpriseTypeId != null and enterpriseTypeId != ''">
|
||||||
|
and pe.enterprise_type_id = #{enterpriseTypeId}
|
||||||
|
</if>
|
||||||
|
<if test="enterpriseId != null and enterpriseId != ''">
|
||||||
|
and b.enterprise_id = #{enterpriseId}
|
||||||
|
</if>
|
||||||
|
<if test="teamId != null and teamId != ''">
|
||||||
|
and a.team_id=#{teamId}
|
||||||
|
</if>
|
||||||
|
<if test="departmentId != null and departmentId != ''">
|
||||||
|
and a.department_id=#{departmentId}
|
||||||
|
</if>
|
||||||
|
<if test="startDate != null and startDate != ''">
|
||||||
|
and t.attendance_date >= #{startDate}
|
||||||
|
</if>
|
||||||
|
<if test="endDate != null and endDate != ''">
|
||||||
|
and t.attendance_date <![CDATA[<=]]> concat(#{endDate},' 23:59:59')
|
||||||
|
</if>
|
||||||
|
<if test="workerName != null and workerName != ''">
|
||||||
|
and a.worker_name like CONCAT(CONCAT('%', #{workerName}), '%')
|
||||||
|
</if>
|
||||||
|
<if test="containEnterpriseId != null and containEnterpriseId != '' and projectSn != null and projectSn != ''">
|
||||||
|
and (a.enterprise_id = #{containEnterpriseId} OR a.enterprise_id IN ( SELECT t.enterprise_id FROM
|
||||||
|
project_enterprise t WHERE find_in_set((select id from project_enterprise where enterprise_id =
|
||||||
|
#{containEnterpriseId} and project_sn = #{projectSn}), ancestors)))
|
||||||
|
</if>
|
||||||
|
group by date
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@ -60,7 +60,7 @@ public interface IWorkerAttendanceService extends IService<WorkerAttendance> {
|
|||||||
* @param map
|
* @param map
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
IPage<EntityMap> selectWorkerAttendancePage(Map<String, Object> map);
|
IPage<WorkerAttendanceVo> selectWorkerAttendancePage(Map<String, Object> map);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 列表查询人员考勤信息
|
* 列表查询人员考勤信息
|
||||||
|
|||||||
@ -8,9 +8,7 @@ import com.zhgd.xmgl.modules.worker.entity.WorkerAttendanceRuleV2;
|
|||||||
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.bo.CalAttendanceBo;
|
import com.zhgd.xmgl.modules.worker.entity.bo.CalAttendanceBo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.dto.WorkerDailyAttendanceStatisticsV2Dto;
|
import com.zhgd.xmgl.modules.worker.entity.dto.WorkerDailyAttendanceStatisticsV2Dto;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceStatisticsV2Vo;
|
import com.zhgd.xmgl.modules.worker.entity.vo.*;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
|
||||||
import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendancesByDateVo;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -97,4 +95,7 @@ public interface IWorkerDailyAttendanceStatisticsV2Service extends IService<Work
|
|||||||
ChartDataVo countWorkerDailyAttendanceStatisticsV2ByDate(Map<String, Object> param);
|
ChartDataVo countWorkerDailyAttendanceStatisticsV2ByDate(Map<String, Object> param);
|
||||||
|
|
||||||
IPage<WorkerDailyAttendanceStatisticsV2Vo> getWorkerDailyAttendancePageForWorkerByDate(HashMap<String, Object> param);
|
IPage<WorkerDailyAttendanceStatisticsV2Vo> getWorkerDailyAttendancePageForWorkerByDate(HashMap<String, Object> param);
|
||||||
|
|
||||||
|
List<CountWorkerDailyAttendanceByDateVo> countWorkerDailyAttendanceByDate(HashMap<String, Object> param);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -254,7 +254,7 @@ public class WorkerAttendanceServiceImpl extends ServiceImpl<WorkerAttendanceMap
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<EntityMap> selectWorkerAttendancePage(Map<String, Object> map) {
|
public IPage<WorkerAttendanceVo> selectWorkerAttendancePage(Map<String, Object> map) {
|
||||||
String groupId = MapUtils.getString(map, "groupId");
|
String groupId = MapUtils.getString(map, "groupId");
|
||||||
if (StrUtil.isNotBlank(groupId)) {
|
if (StrUtil.isNotBlank(groupId)) {
|
||||||
List<String> devSnList = ufaceDevService.getDevSnListByGroupId(groupId).stream().map(UfaceDev::getDevSn).collect(Collectors.toList());
|
List<String> devSnList = ufaceDevService.getDevSnListByGroupId(groupId).stream().map(UfaceDev::getDevSn).collect(Collectors.toList());
|
||||||
@ -265,8 +265,8 @@ public class WorkerAttendanceServiceImpl extends ServiceImpl<WorkerAttendanceMap
|
|||||||
}
|
}
|
||||||
int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString());
|
int pageNo = Integer.parseInt(map.getOrDefault("pageNo", 1).toString());
|
||||||
int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString());
|
int pageSize = Integer.parseInt(map.getOrDefault("pageSize", 10).toString());
|
||||||
Page<EntityMap> page = new Page<>(pageNo, pageSize);
|
Page<WorkerAttendanceVo> page = new Page<>(pageNo, pageSize);
|
||||||
Page<EntityMap> pageList = workerAttendanceMapper.selectWorkerAttendancePage(page, map);
|
Page<WorkerAttendanceVo> pageList = workerAttendanceMapper.selectWorkerAttendancePage(page, map);
|
||||||
return pageList;
|
return pageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,6 +22,7 @@ import com.zhgd.xmgl.modules.worker.entity.bo.CalAttendanceBo;
|
|||||||
import com.zhgd.xmgl.modules.worker.entity.bo.CountWorkerDailyAttendanceStatisticsV2ByDateBo;
|
import com.zhgd.xmgl.modules.worker.entity.bo.CountWorkerDailyAttendanceStatisticsV2ByDateBo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.bo.Hour2dayJsonBo;
|
import com.zhgd.xmgl.modules.worker.entity.bo.Hour2dayJsonBo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.dto.WorkerDailyAttendanceStatisticsV2Dto;
|
import com.zhgd.xmgl.modules.worker.entity.dto.WorkerDailyAttendanceStatisticsV2Dto;
|
||||||
|
import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceByDateVo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceStatisticsV2Vo;
|
import com.zhgd.xmgl.modules.worker.entity.vo.CountWorkerDailyAttendanceStatisticsV2Vo;
|
||||||
import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
|
||||||
import com.zhgd.xmgl.modules.worker.mapper.WorkerDailyAttendanceStatisticsV2Mapper;
|
import com.zhgd.xmgl.modules.worker.mapper.WorkerDailyAttendanceStatisticsV2Mapper;
|
||||||
@ -501,12 +502,16 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
|
|||||||
)
|
)
|
||||||
));
|
));
|
||||||
for (WorkerDailyAttendanceStatisticsV2Vo vo : pageList.getRecords()) {
|
for (WorkerDailyAttendanceStatisticsV2Vo vo : pageList.getRecords()) {
|
||||||
String firstInTime = Optional.ofNullable(personSn2DateMap.get(vo.getPersonSn())).map(m -> m.get(DateUtil.formatDate(vo.getAttendanceDate())))
|
String date = DateUtil.formatDate(vo.getAttendanceDate());
|
||||||
.map(m -> m.stream().filter(w -> Objects.equals(w.getPassType(), 1)).min(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime).orElse(null)).orElse(null);
|
Optional<List<WorkerAttendance>> workerAttendancesOpt = Optional.ofNullable(personSn2DateMap.get(vo.getPersonSn())).map(m -> m.get(date));
|
||||||
String endOutTime = Optional.ofNullable(personSn2DateMap.get(vo.getPersonSn())).map(m -> m.get(DateUtil.formatDate(vo.getAttendanceDate())))
|
String firstInTime = workerAttendancesOpt.flatMap(m -> m.stream().filter(w -> Objects.equals(w.getPassType(), 1)).min(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime)).orElse(null);
|
||||||
.map(m -> m.stream().filter(w -> Objects.equals(w.getPassType(), 2)).max(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime).orElse(null)).orElse(null);
|
String endOutTime = workerAttendancesOpt.flatMap(m -> m.stream().filter(w -> Objects.equals(w.getPassType(), 2)).max(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime)).orElse(null);
|
||||||
vo.setFirstInTime(firstInTime);
|
vo.setFirstInTime(firstInTime);
|
||||||
vo.setEndOutTime(endOutTime);
|
vo.setEndOutTime(endOutTime);
|
||||||
|
String firstTimeAm = workerAttendancesOpt.flatMap(m -> m.stream().filter(w -> DateUtil.compare(DateUtil.parseDateTime(w.getCreateTime()), DateUtil.parseDateTime(date + " 12:00:00")) < 0).min(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime)).orElse(null);
|
||||||
|
vo.setFirstTimeAm(firstTimeAm);
|
||||||
|
String endTimePm = workerAttendancesOpt.flatMap(m -> m.stream().filter(w -> DateUtil.compare(DateUtil.parseDateTime(w.getCreateTime()), DateUtil.parseDateTime(date + " 12:00:00")) >= 0).max(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime)).orElse(null);
|
||||||
|
vo.setEndTimePm(endTimePm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pageList;
|
return pageList;
|
||||||
@ -528,4 +533,21 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
|
|||||||
item.setData(data);
|
item.setData(data);
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<CountWorkerDailyAttendanceByDateVo> countWorkerDailyAttendanceByDate(HashMap<String, Object> param) {
|
||||||
|
List<String> dateTimeStrList = DateUtil.rangeToList(DateUtil.parseDate(MapUtils.getString(param, "startDate")), DateUtil.parseDate(MapUtils.getString(param, "endDate")), DateField.DAY_OF_YEAR)
|
||||||
|
.stream().map(dateTime -> DateUtil.format(dateTime, "yyyy-MM-dd")).collect(Collectors.toList());
|
||||||
|
List<CountWorkerDailyAttendanceByDateVo> all = baseMapper.countWorkerDailyAttendanceByDate(param);
|
||||||
|
Map<String, CountWorkerDailyAttendanceByDateVo> allMap = all.stream().collect(Collectors.toMap(CountWorkerDailyAttendanceByDateVo::getDate, Function.identity()));
|
||||||
|
List<CountWorkerDailyAttendanceByDateVo> list = dateTimeStrList.stream().map(date -> {
|
||||||
|
CountWorkerDailyAttendanceByDateVo vo = new CountWorkerDailyAttendanceByDateVo();
|
||||||
|
vo.setDate(date);
|
||||||
|
vo.setHourValTotal(Optional.ofNullable(allMap.get(date)).map(CountWorkerDailyAttendanceByDateVo::getHourValTotal).orElse(null));
|
||||||
|
vo.setDayValTotal(new BigDecimal("0"));
|
||||||
|
return vo;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user