修改bug

This commit is contained in:
guoshengxiong 2025-08-14 09:12:17 +08:00
parent 4d1938005f
commit 3663e7d5d2
14 changed files with 375 additions and 21 deletions

View File

@ -1,17 +1,15 @@
package com.zhgd.xmgl.modules.ocr.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
* @Description: ocr识别模块位置
@ -65,4 +63,9 @@ public class OcrModulePlace implements Serializable {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
/**
* 配置json
*/
@ApiModelProperty(value = "配置json")
private java.lang.String configJson;
}

View File

@ -1,30 +1,42 @@
package com.zhgd.xmgl.modules.worker.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.annotation.OperLog;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
import com.zhgd.xmgl.modules.worker.entity.SjEnterpriseInfo;
import com.zhgd.xmgl.modules.worker.entity.TeamInfo;
import com.zhgd.xmgl.modules.worker.entity.vo.EnterpriseDepartmentTeamTreeVo;
import com.zhgd.xmgl.modules.worker.entity.vo.StatsEnterpriseWeekVo;
import com.zhgd.xmgl.modules.worker.service.IDepartmentInfoService;
import com.zhgd.xmgl.modules.worker.service.IEnterpriseInfoService;
import com.zhgd.xmgl.modules.worker.service.ITeamInfoService;
import com.zhgd.xmgl.util.ListUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -41,6 +53,12 @@ import java.util.Map;
public class EnterpriseInfoController {
@Autowired
private IEnterpriseInfoService enterpriseInfoService;
@Lazy
@Autowired
private IDepartmentInfoService departmentInfoService;
@Lazy
@Autowired
private ITeamInfoService teamInfoService;
/**
* 列表查询
@ -177,7 +195,6 @@ public class EnterpriseInfoController {
return enterpriseInfoService.deleteSj(enterpriseInfo);
}
/**
* 通过id查询
*
@ -195,7 +212,6 @@ public class EnterpriseInfoController {
return Result.success(enterpriseInfoService.getEnterpriseInfoById(map));
}
@OperLog(operModul = "劳务公司管理", operType = "查询", operDesc = "通过社会统一信用代码查询劳务公司")
@ApiOperation(value = "通过社会统一信用代码查询劳务公司", notes = "通过社会统一信用代码查询劳务公司", httpMethod = "POST")
@ApiImplicitParams({
@ -248,4 +264,62 @@ public class EnterpriseInfoController {
public Result<StatsEnterpriseWeekVo> statsEnterpriseWeek(@ApiIgnore @RequestBody Map<String, Object> param) {
return Result.success(enterpriseInfoService.statsEnterpriseWeek(param));
}
@ApiOperation(value = "查询单位部门班组tree列表", notes = "查询单位部门班组tree列表", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "enterpriseTypeId", value = "企业类型", paramType = "body", required = false, dataType = "String"),
@ApiImplicitParam(name = "name", value = "名称", paramType = "body", required = false, dataType = "String"),
})
@PostMapping(value = "/getEnterpriseDepartmentTeamTree")
public Result<List<EnterpriseDepartmentTeamTreeVo>> getEnterpriseDepartmentTeamTree(@ApiIgnore @RequestBody Map<String, Object> param) {
String projectSn = MapUtils.getString(param, "projectSn");
String name = MapUtils.getString(param, "name");
List<EnterpriseDepartmentTeamTreeVo> all = new ArrayList<>();
List<DepartmentInfo> departmentInfos = departmentInfoService.list(new LambdaQueryWrapper<DepartmentInfo>()
.eq(DepartmentInfo::getProjectSn, projectSn));
List<TeamInfo> teamInfoList = teamInfoService.list(new LambdaQueryWrapper<TeamInfo>()
.eq(TeamInfo::getProjectSn, projectSn));
Map<Long, String> enterpriseId2UniqueIdMap = new HashMap<>();
List<EnterpriseDepartmentTeamTreeVo> enterprises = enterpriseInfoService.getEnterpriseInfos(param).stream().map(e -> {
enterpriseId2UniqueIdMap.put(e.getId(), e.getId() + "");
EnterpriseDepartmentTeamTreeVo vo = new EnterpriseDepartmentTeamTreeVo();
vo.setUniqueId(e.getId() + "");
vo.setParentId(e.getParentEnterpriseId() + "");
vo.setName(e.getEnterpriseName());
vo.setOriginalId(e.getId() + "");
vo.setTypeName(e.getCompanyTypeName());
vo.setCategory(1);
return vo;
}).collect(Collectors.toList());
List<EnterpriseDepartmentTeamTreeVo> departments = departmentInfos.stream().filter(d -> Objects.nonNull(enterpriseId2UniqueIdMap.get(d.getEnterpriseId()))).map(d -> {
EnterpriseDepartmentTeamTreeVo vo = new EnterpriseDepartmentTeamTreeVo();
vo.setUniqueId(IdUtil.randomUUID());
vo.setParentId(enterpriseId2UniqueIdMap.get(d.getEnterpriseId()));
vo.setName(d.getDepartmentName());
vo.setOriginalId(d.getId() + "");
vo.setTypeName("部门");
vo.setCategory(2);
return vo;
}).collect(Collectors.toList());
List<EnterpriseDepartmentTeamTreeVo> teams = teamInfoList.stream().filter(t -> Objects.nonNull(enterpriseId2UniqueIdMap.get(t.getEnterpriseId()))).map(t -> {
EnterpriseDepartmentTeamTreeVo vo = new EnterpriseDepartmentTeamTreeVo();
vo.setUniqueId(IdUtil.randomUUID());
vo.setParentId(enterpriseId2UniqueIdMap.get(t.getEnterpriseId()));
vo.setName(t.getTeamName());
vo.setOriginalId(t.getId() + "");
vo.setTypeName("班组");
vo.setCategory(3);
return vo;
}).collect(Collectors.toList());
all.addAll(enterprises);
all.addAll(departments);
all.addAll(teams);
if (StrUtil.isNotBlank(name)) {
all = all.stream().filter(vo -> vo.getName().contains(name)).collect(Collectors.toList());
}
List<EnterpriseDepartmentTeamTreeVo> vos = BeanUtil.copyToList(ListUtils.listToTree(JSONArray.parseArray(JSON.toJSONString(all)), "uniqueId", "parentId", "children"), EnterpriseDepartmentTeamTreeVo.class);
return Result.success(vos);
}
}

View File

@ -2,11 +2,13 @@ package com.zhgd.xmgl.modules.worker.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.stream.StreamUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -23,10 +25,7 @@ import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
import com.zhgd.xmgl.modules.worker.entity.WorkerDailyAttendanceStatisticsV2;
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
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.ExceptionHourStatisticsListVo;
import com.zhgd.xmgl.modules.worker.entity.vo.StatisticsListVo;
import com.zhgd.xmgl.modules.worker.entity.vo.WorkerDailyAttendanceStatisticsV2Vo;
import com.zhgd.xmgl.modules.worker.entity.vo.*;
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
import com.zhgd.xmgl.modules.worker.service.IWorkerDailyAttendanceStatisticsV2Service;
import com.zhgd.xmgl.modules.worker.service.impl.WorkerInfoServiceImpl;
@ -484,5 +483,147 @@ public class WorkerDailyAttendanceStatisticsV2Controller {
return Result.success(workerDailyAttendanceStatisticsV2Service.countWorkerDailyAttendanceStatisticsV2ByDate(param));
}
@ApiOperation(value = "查询考勤日报列表", notes = "查询考勤日报列表", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "attendanceDate", value = "考勤日期yyyy-MM-dd", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/getWorkerDailyAttendancesByDate")
public Result<IPage<WorkerDailyAttendancesByDateVo>> getWorkerDailyAttendancesByDate(@RequestBody HashMap<String, Object> param) {
String projectSn = MapUtils.getString(param, "projectSn");
String attendanceDate = MapUtils.getString(param, "attendanceDate");
param.put("addTime_end", attendanceDate);
IPage<WorkerInfo> workerInfoList = workerInfoService.selectWorkerInfoList(param);
Map<String, WorkerDailyAttendanceStatisticsV2Vo> personSnMap = workerDailyAttendanceStatisticsV2Service.queryList(param).stream()
.collect(Collectors.toMap(WorkerDailyAttendanceStatisticsV2::getPersonSn, Function.identity()));
Map<String, List<WorkerAttendance>> personSn2AttendancesMap = workerAttendanceService.list(new LambdaQueryWrapper<WorkerAttendance>()
.eq(WorkerAttendance::getProjectSn, projectSn)
.ge(WorkerAttendance::getCreateTime, attendanceDate)
.le(WorkerAttendance::getCreateTime, DateUtil.formatDateTime(DateUtil.endOfDay(DateUtil.parseDate(attendanceDate)))))
.stream().collect(Collectors.groupingBy(WorkerAttendance::getPersonSn));
List<WorkerDailyAttendancesByDateVo> vos = new ArrayList<>();
for (WorkerInfo workerInfo : workerInfoList.getRecords()) {
WorkerDailyAttendanceStatisticsV2Vo voDb = personSnMap.get(workerInfo.getPersonSn());
WorkerDailyAttendancesByDateVo vo = new WorkerDailyAttendancesByDateVo();
if (voDb != null) {
BeanUtil.copyProperties(vo, voDb);
} else {
vo.setPersonType(workerInfo.getPersonType());
vo.setEnterpriseName(workerInfo.getEnterpriseName());
vo.setWorkerName(workerInfo.getWorkerName());
vo.setDeptName(workerInfo.getDepartmentName());
vo.setProjectSn(workerInfo.getProjectSn());
vo.setPersonSn(workerInfo.getPersonSn());
vo.setAttendanceDate(DateUtil.parseDate(attendanceDate));
vo.setHourVal(new BigDecimal("0"));
vo.setDayVal(new BigDecimal("0"));
vo.setIsAttendance(0);
vo.setOvertimeHourVal(new BigDecimal("0"));
vo.setOvertimeDayVal(new BigDecimal("0"));
vo.setInserviceType(workerInfo.getInserviceType());
}
List<WorkerAttendance> attendances = personSn2AttendancesMap.get(workerInfo.getPersonSn());
if (Objects.equals(vo.getIsAttendance(), 1) && CollUtil.isNotEmpty(attendances)) {
String firstInTime = attendances.stream().filter(w -> Objects.equals(w.getPassType(), 1)).min(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime).orElse(null);
String endOutTime = attendances.stream().filter(w -> Objects.equals(w.getPassType(), 2)).max(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime).orElse(null);
vo.setFirstInTime(firstInTime);
vo.setEndOutTime(endOutTime);
String firstTimeAm = attendances.stream().filter(w -> DateUtil.compare(DateUtil.parseDateTime(w.getCreateTime()), DateUtil.parseDateTime(attendanceDate + " 12:00:00")) < 0).min(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime).orElse(null);
vo.setFirstTimeAm(firstTimeAm);
String endTimePm = attendances.stream().filter(w -> DateUtil.compare(DateUtil.parseDateTime(w.getCreateTime()), DateUtil.parseDateTime(attendanceDate + " 12:00:00")) >= 0).max(Comparator.comparing(WorkerAttendance::getCreateTime)).map(WorkerAttendance::getCreateTime).orElse(null);
vo.setEndTimePm(endTimePm);
}
vos.add(vo);
}
IPage<WorkerDailyAttendancesByDateVo> p = new Page<>();
p.setTotal(workerInfoList.getTotal());
p.setRecords(vos);
p.setCurrent(workerInfoList.getCurrent());
p.setSize(workerInfoList.getSize());
return Result.success(p);
}
@ApiOperation(value = "统计考勤日报", notes = "统计考勤日报", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "attendanceDate", value = "考勤日期yyyy-MM-dd", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/countWorkerDailyAttendancesStaticsByDate")
public Result<CountWorkerDailyAttendancesStaticsByDateVo> countWorkerDailyAttendancesStaticsByDate(@RequestBody HashMap<String, Object> param) {
String projectSn = MapUtils.getString(param, "projectSn");
String attendanceDate = MapUtils.getString(param, "attendanceDate");
param.put("addTime_end", attendanceDate);
List<WorkerDailyAttendanceStatisticsV2Vo> vos = workerDailyAttendanceStatisticsV2Service.queryList(param);
CountWorkerDailyAttendancesStaticsByDateVo vo = new CountWorkerDailyAttendancesStaticsByDateVo();
vo.setInServiceCount((int) vos.stream().filter(v -> Objects.equals(v.getInserviceType(), 1)).count());
vo.setAttendanceCount((int) vos.stream().filter(v -> Objects.equals(v.getIsAttendance(), 1)).count());
vo.setAbsentCount((int) vos.stream().filter(v -> Objects.equals(v.getIsAttendance(), 0)).count());
vo.setAttendanceRate(Objects.nonNull(vo.getInServiceCount()) ? NumberUtil.mul(NumberUtil.div(vo.getAttendanceCount(), vo.getInServiceCount(), 4), new BigDecimal("100")) : null);
param.put("addTime_end", null);
param.put("exitDate_begin", attendanceDate);
param.put("exitDate_end", attendanceDate);
IPage<WorkerInfo> workerInfoList = workerInfoService.selectWorkerInfoList(param);
vo.setLeftCount((int) workerInfoList.getTotal());
return Result.success(vo);
}
@ApiOperation(value = "导出考勤日报excel记录", notes = "导出考勤日报excel记录", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
@ApiImplicitParam(name = "downloadType", value = "1上下午打卡2进出场打卡", paramType = "body", required = true, dataType = "String"),
})
@PostMapping(value = "/exportWorkerDailyAttendancesStaticsByDateXls")
public void exportXls(HttpServletResponse response, @RequestBody HashMap<String, Object> param) {
// String templateUrl = null;
// try {
// String sn = MapUtils.getString(param, "sn");
//// String libraryId = MapUtils.getString(param, "libraryId");
// List<String> detailIdList = JSON.parseArray(JSON.toJSONString(param.get("detailIdList")), String.class);
// // Step.1 组装查询条件
// param.put("pageNo", 1);
// param.put("pageSize", -1);
// List<Map<String, Object>> listMap = new ArrayList<>();
// Map<String, Object> firstSheetMap = new HashMap<>();
// List<RiskListDetail> details = riskListDetailService.list(new LambdaQueryWrapper<RiskListDetail>()
//// .eq(RiskListDetail::getLibraryId, libraryId)
// .in(RiskListDetail::getId, detailIdList)
// );
// Map<String, DictionaryItem> factorTypeMap = dictionaryItemService.getDictList("risk_factor_type", null).stream().collect(Collectors.toMap(DictionaryItem::getData, Function.identity(), (o1, o2) -> o1));
// Map<Long, RiskListPotentialAccidentType> accidentTypeMap = riskListPotentialAccidentTypeService.list(new LambdaQueryWrapper<RiskListPotentialAccidentType>()
// .eq(RiskListPotentialAccidentType::getSn, sn)).stream().collect(Collectors.toMap(RiskListPotentialAccidentType::getId, Function.identity(), (o1, o2) -> o1));
// for (RiskListDetail detail : details) {
// Map<String, Object> map = new HashMap<>();
// map.put("riskDescription", detail.getRiskDescription());
// map.put("accidentType", Optional.ofNullable(accidentTypeMap.get(detail.getAccidentTypeId())).map(RiskListPotentialAccidentType::getType).orElse(""));
// map.put("riskFactorType", Optional.ofNullable(factorTypeMap.get(detail.getRiskFactorType())).map(DictionaryItem::getName).orElse(""));
// List<String> levels = Arrays.asList("重大风险", "较大风险", "一般风险", "低风险");
// map.put("riskLevel", Optional.ofNullable(detail.getRiskLevel()).map(m -> levels.get(m - 1)).orElse(""));
// map.put("engineeringMeasure", detail.getEngineeringMeasure());
// map.put("managementMeasure", detail.getManagementMeasure());
// map.put("personalProtection", detail.getPersonalProtection());
// map.put("emergencyMeasure", detail.getEmergencyMeasure());
// map.put("educationalMeasure", detail.getEducationalMeasure());
// listMap.add(map);
// }
// //将项目清单集合添加到map中
// firstSheetMap.put("listMap", listMap);
// Map<Integer, Map<String, Object>> root = new HashMap<>(4);
// root.put(0, firstSheetMap);
// putOtherSheets(sn, root);
// templateUrl = Fileutils.getExportTemplateFile("excel/风险清单详情导出模板.xlsx").getAbsolutePath();
//// templateUrl = new File("C:\\Users\\Administrator\\IdeaProjects\\wisdomisite-with-flowjar\\tmp\\风险清单详情导出模板.xlsx").getAbsolutePath();
// TemplateExportParams params = new TemplateExportParams(templateUrl, root.keySet().toArray(new Integer[]{}));
// Workbook workbook = ExcelExportUtil.exportExcel(root, params);
// //设置下拉
// ExcelUtils.downLoadExcel("风险清单详情导出模板.xlsx", response, workbook);
// } catch (IOException e) {
// log.error("", e);
// throw new OpenAlertException("系统错误");
// } finally {
// if (templateUrl != null) {
// FileUtil.deleteFile(templateUrl);
// }
// }
}
}

View File

@ -72,4 +72,9 @@ public class WorkerDailyAttendanceStatisticsV2 implements Serializable {
*/
@ApiModelProperty(value = "加班工日")
private java.math.BigDecimal overtimeDayVal;
/**
* 在职状态 1在职 2离职
*/
@ApiModelProperty(value = "在职状态 1在职 2离职")
private java.lang.Integer inserviceType;
}

View File

@ -0,0 +1,35 @@
package com.zhgd.xmgl.modules.worker.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class CountWorkerDailyAttendancesStaticsByDateVo {
/**
* 当日在职
*/
@ApiModelProperty("当日在职")
private Integer inServiceCount;
/**
* 当日出勤
*/
@ApiModelProperty("当日出勤")
private Integer attendanceCount;
/**
* 当日缺勤
*/
@ApiModelProperty("当日缺勤")
private Integer absentCount;
/**
* 出勤率
*/
@ApiModelProperty("出勤率")
private BigDecimal attendanceRate;
/**
* 当日退场
*/
@ApiModelProperty("当日退场")
private Integer leftCount;
}

View File

@ -0,0 +1,45 @@
package com.zhgd.xmgl.modules.worker.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class EnterpriseDepartmentTeamTreeVo {
/**
* 唯一id
*/
@ApiModelProperty("唯一id")
private String uniqueId;
/**
* parentId
*/
@ApiModelProperty("parentId")
private String parentId;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 原始id
*/
@ApiModelProperty("原始id")
private String originalId;
/**
* 类型名称
*/
@ApiModelProperty("类型名称")
private String typeName;
/**
* 1单位2部门3班组
*/
@ApiModelProperty("1单位2部门3班组")
private Integer category;
/**
* children
*/
@ApiModelProperty("children")
private List<EnterpriseDepartmentTeamTreeVo> children;
}

View File

@ -1,7 +1,12 @@
package com.zhgd.xmgl.modules.worker.entity.vo;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
import lombok.Data;
import java.util.List;
@Data
public class EnterpriseInfoVo {
public class EnterpriseInfoVo extends EnterpriseInfo {
private List<EnterpriseInfoVo> children;
private String enterpriseId;
}

View File

@ -0,0 +1,28 @@
package com.zhgd.xmgl.modules.worker.entity.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class WorkerDailyAttendancesByDateVo extends WorkerDailyAttendanceStatisticsV2Vo {
/**
* 进场打卡(首次)
*/
@ApiModelProperty(value = "进场打卡(首次)")
private String firstInTime;
/**
* 出场打卡(末次)
*/
@ApiModelProperty(value = "出场打卡(末次)")
private String endOutTime;
/**
* 上午打卡(首次)
*/
@ApiModelProperty(value = "上午打卡(首次)")
private String firstTimeAm;
/**
* 下午打卡(未次)
*/
@ApiModelProperty(value = "下午打卡(未次)")
private String endTimePm;
}

View File

@ -11,7 +11,7 @@
,en.enterprise_name
,if(a.person_type=1,b.team_name,c.department_name) as dept_name
from worker_daily_attendance_statistics_v2 t
LEFT JOIN worker_info a on t.person_sn=a.person_sn
JOIN worker_info a on t.person_sn=a.person_sn
LEFT JOIN team_info b ON a.team_id = b.id and a.person_type = 1
LEFT JOIN department_info c ON a.department_id = c.id and a.person_type = 2
LEFT JOIN worker_type wt ON b.worker_type_id = wt.id and a.person_type = 1

View File

@ -257,6 +257,12 @@
<if test="param.workerInfos != null and param.workerInfos != ''">
and FIND_IN_SET(a.id, #{param.workerInfos})
</if>
<if test="param.addTime_begin != null and param.addTime_begin != ''">
and a.add_time >= #{param.addTime_begin}
</if>
<if test="param.addTime_end != null and param.addTime_end != ''">
and a.add_time &lt;= CONCAT(DATE_FORMAT(#{param.addTime_end}, '%Y-%m-%d'), ' 23:59:59')
</if>
<choose>
<when test="param.orderBy == '1'.toString()">
order by a.exit_date desc

View File

@ -9,6 +9,7 @@ import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.base.CompanyVo;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
import com.zhgd.xmgl.modules.worker.entity.SjEnterpriseInfo;
import com.zhgd.xmgl.modules.worker.entity.vo.EnterpriseInfoVo;
import com.zhgd.xmgl.modules.worker.entity.vo.StatsEnterpriseWeekVo;
import java.util.List;
@ -23,11 +24,14 @@ import java.util.Map;
public interface IEnterpriseInfoService extends IService<EnterpriseInfo> {
/**
* 列表查询劳务公司信息
*
* @param map
* @return
*/
List<EntityMap> getEnterpriseInfoList(Map<String, Object> map);
List<EnterpriseInfoVo> getEnterpriseInfos(Map<String, Object> map);
/**
* 添加劳务公司信息
* @param enterpriseInfo

View File

@ -76,12 +76,13 @@ public interface IWorkerDailyAttendanceStatisticsV2Service extends IService<Work
*
* @param projectSn
* @param personSn
* @param inserviceType
* @param date
* @param ruleV2
* @param attendances
* @param allAttendances
*/
void calAndSaveStatistics(String projectSn, String personSn, DateTime date, WorkerAttendanceRuleV2 ruleV2, List<CalAttendanceBo> attendances, List<CalAttendanceBo> allAttendances);
void calAndSaveStatistics(String projectSn, String personSn, Integer inserviceType, DateTime date, WorkerAttendanceRuleV2 ruleV2, List<CalAttendanceBo> attendances, List<CalAttendanceBo> allAttendances);
/**
* 重新统计考勤

View File

@ -42,6 +42,7 @@ import com.zhgd.xmgl.modules.quality.enums.QualityInspectionRecordStatusEnum;
import com.zhgd.xmgl.modules.quality.service.IQualityInspectionRecordService;
import com.zhgd.xmgl.modules.quality.service.IQualityRegionService;
import com.zhgd.xmgl.modules.worker.entity.*;
import com.zhgd.xmgl.modules.worker.entity.vo.EnterpriseInfoVo;
import com.zhgd.xmgl.modules.worker.entity.vo.StatsEnterpriseWeekVo;
import com.zhgd.xmgl.modules.worker.mapper.DepartmentInfoMapper;
import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper;
@ -190,6 +191,12 @@ public class EnterpriseInfoServiceImpl extends ServiceImpl<EnterpriseInfoMapper,
}
}
@Override
public List<EnterpriseInfoVo> getEnterpriseInfos(Map<String, Object> map) {
List<EntityMap> enterpriseInfoList = getEnterpriseInfoList(map);
return BeanUtil.copyToList(enterpriseInfoList, EnterpriseInfoVo.class);
}
@Override
public List<EntityMap> getSupplierEnterprises(Map<String, Object> map) {

View File

@ -188,7 +188,7 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
}
@Override
public void calAndSaveStatistics(String projectSn, String personSn, DateTime date, WorkerAttendanceRuleV2 ruleV2, List<CalAttendanceBo> attendances, List<CalAttendanceBo> allAttendances) {
public void calAndSaveStatistics(String projectSn, String personSn, Integer inserviceType, DateTime date, WorkerAttendanceRuleV2 ruleV2, List<CalAttendanceBo> attendances, List<CalAttendanceBo> allAttendances) {
attendances = attendances.stream().filter(o -> Objects.equals(o.getPersonSn(), personSn) &&
(DateUtil.isSameDay(DateUtil.offsetDay(date, -1), o.getDate())
|| DateUtil.isSameDay(date, o.getDate())
@ -209,6 +209,7 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
hour = getCalHour(personSn, date, ruleV2, attendances, allAttendances, null, null);
}
sta.setHourVal(hour);
sta.setInserviceType(inserviceType);
//2.计算工日
BigDecimal day = null;
@ -428,7 +429,6 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
String projectSn = MapUtils.getString(map, "projectSn");
List<WorkerInfo> workerInfos = workerInfoService.list(new LambdaQueryWrapper<WorkerInfo>()
.eq(WorkerInfo::getProjectSn, projectSn)
.eq(WorkerInfo::getInserviceType, 1)
);
Map<Long, WorkerAttendanceRuleV2> groupToRuleMap = workerAttendanceRuleV2Service.list(new LambdaQueryWrapper<WorkerAttendanceRuleV2>().eq(WorkerAttendanceRuleV2::getProjectSn, projectSn))
.stream().collect(Collectors.toMap(WorkerAttendanceRuleV2::getGroupV2Id, Function.identity(), (o1, o2) -> o1));
@ -450,7 +450,7 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
for (DateTime dateTime : range) {
for (WorkerInfo worker : workerInfos) {
WorkerAttendanceRuleV2 ruleV2 = Optional.ofNullable(worker.getAttendanceGroupV2Id()).map(groupToRuleMap::get).orElse(null);
this.calAndSaveStatistics(worker.getProjectSn(), worker.getPersonSn(), dateTime, ruleV2, attendances, allAttendances);
this.calAndSaveStatistics(worker.getProjectSn(), worker.getPersonSn(), worker.getInserviceType(), dateTime, ruleV2, attendances, allAttendances);
}
}
}