diff --git a/src/main/java/com/zhgd/xmgl/call/Mcs8Call.java b/src/main/java/com/zhgd/xmgl/call/Mcs8Call.java index b28b50b26..52a9883dc 100644 --- a/src/main/java/com/zhgd/xmgl/call/Mcs8Call.java +++ b/src/main/java/com/zhgd/xmgl/call/Mcs8Call.java @@ -108,7 +108,7 @@ public class Mcs8Call implements PoliceCameraManufacturer { JSONObject jsonObject = Mcs8Util.getRecordFileList(config, page, pageSize, begin, end, true); bos = BeanUtil.copyToList(jsonObject.getJSONArray("data"), Mcs8FileBo.class); for (Mcs8FileBo bo : bos) { - if (!Objects.equals(bo.getFType(), 3)) { + if (!Objects.equals(bo.getFType(),3)) { downloadFileAndSave(bo, cameraItemMap); } } diff --git a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CrawlerCraneCurrentDataServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CrawlerCraneCurrentDataServiceImpl.java index 08c49bad0..f62790a97 100644 --- a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CrawlerCraneCurrentDataServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/CrawlerCraneCurrentDataServiceImpl.java @@ -36,7 +36,8 @@ public class CrawlerCraneCurrentDataServiceImpl extends ServiceImpl> windSpeedTrend(Map map) { - if (MapUtils.getInteger(map, "selectType") == 1) { + Integer selectType = MapUtils.getInteger(map, "selectType"); + if (selectType == 1) { map.put("reportTime_begin", DateUtil.formatDateTime(DateUtil.beginOfDay(new Date()))); map.put("reportTime_end", DateUtil.formatDateTime(new Date())); } @@ -44,9 +45,9 @@ public class CrawlerCraneCurrentDataServiceImpl extends ServiceImpl list = this.list(queryWrapper); List crawlerCraneList = crawlerCraneService.list(Wrappers.lambdaQuery().eq(CrawlerCrane::getProjectSn, MapUtils.getString(map, "projectSn"))); List dayList; - if (MapUtils.getInteger(map, "selectType") == 1) { + if (selectType == 1) { dayList = DateUtils.getDateTimeStrList(100, "HH:mm"); - } else if (MapUtils.getInteger(map, "selectType") == 2){ + } else if (selectType == 2){ dayList = DateUtils.getNowFewDaysAgoList(7); } else { dayList = DateUtils.getNowFewDaysAgoList(29); @@ -56,7 +57,9 @@ public class CrawlerCraneCurrentDataServiceImpl extends ServiceImpl deviceMap = new HashMap<>(16); List> dataList = new ArrayList<>(); for (String day : dayList) { - List collect = list.stream().filter(l -> l.getDevSn().equals(crawlerCrane.getDevSn()) && DateUtil.formatDateTime(l.getReportTime()).contains(day)).collect(Collectors.toList()); + List collect = list.stream().filter(l -> l.getDevSn().equals(crawlerCrane.getDevSn()) + && ((selectType != 1 && DateUtil.formatDateTime(l.getReportTime()).contains(day)) + ||(selectType == 1 && DateUtil.format(l.getReportTime(),"HH:00").equals(day)))).collect(Collectors.toList()); Map result = new HashMap<>(16); result.put("dayTitle", day); result.put("windSpeed", collect.size() > 0 ? collect.get(0).getWindSpeed() : 0); diff --git a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/TruckCraneCurrentDataServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/TruckCraneCurrentDataServiceImpl.java index eb22c3535..7037e031a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/TruckCraneCurrentDataServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/bigdevice/service/impl/TruckCraneCurrentDataServiceImpl.java @@ -39,7 +39,8 @@ public class TruckCraneCurrentDataServiceImpl extends ServiceImpl> windSpeedTrend(Map map) { - if (MapUtils.getInteger(map, "selectType") == 1) { + Integer selectType = MapUtils.getInteger(map, "selectType"); + if (selectType == 1) { map.put("reportTime_begin", DateUtil.formatDateTime(DateUtil.beginOfDay(new Date()))); map.put("reportTime_end", DateUtil.formatDateTime(new Date())); } @@ -47,9 +48,9 @@ public class TruckCraneCurrentDataServiceImpl extends ServiceImpl list = this.list(queryWrapper); List truckCraneList = truckCraneService.list(Wrappers.lambdaQuery().eq(TruckCrane::getProjectSn, MapUtils.getString(map, "projectSn"))); List dayList; - if (MapUtils.getInteger(map, "selectType") == 1) { + if (selectType == 1) { dayList = DateUtils.getDateTimeStrList(100, "HH:mm"); - } else if (MapUtils.getInteger(map, "selectType") == 2){ + } else if (selectType == 2){ dayList = DateUtils.getNowFewDaysAgoList(7); } else { dayList = DateUtils.getNowFewDaysAgoList(29); @@ -59,7 +60,9 @@ public class TruckCraneCurrentDataServiceImpl extends ServiceImpl deviceMap = new HashMap<>(16); List> dataList = new ArrayList<>(); for (String day : dayList) { - List collect = list.stream().filter(l -> l.getDevSn().equals(truckCrane.getDevSn()) && DateUtil.formatDateTime(l.getReportTime()).contains(day)).collect(Collectors.toList()); + List collect = list.stream().filter(l -> l.getDevSn().equals(truckCrane.getDevSn()) + && ((selectType != 1 && DateUtil.formatDateTime(l.getReportTime()).contains(day)) + ||(selectType == 1 && DateUtil.format(l.getReportTime(),"HH:00").equals(day)))).collect(Collectors.toList()); Map result = new HashMap<>(16); result.put("dayTitle", day); result.put("windSpeed", collect.size() > 0 ? collect.get(0).getWindSpeed() : 0); diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/controller/PoliceCameraItemController.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/controller/PoliceCameraItemController.java index 95041204a..a08c5c505 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/controller/PoliceCameraItemController.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/controller/PoliceCameraItemController.java @@ -18,6 +18,7 @@ import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraGroup; import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraItem; import com.zhgd.xmgl.modules.policecamera.entity.ProjectPoliceCameraConfig; import com.zhgd.xmgl.modules.policecamera.entity.dto.PoliceCameraItemBatchMoveDto; +import com.zhgd.xmgl.modules.policecamera.entity.vo.CountWorkingHoursVo; import com.zhgd.xmgl.modules.policecamera.entity.vo.GroupTreeWithDevVo; import com.zhgd.xmgl.modules.policecamera.entity.vo.PoliceCameraItemVo; import com.zhgd.xmgl.modules.policecamera.entity.vo.VideoItemInfoVo; @@ -425,4 +426,15 @@ public class PoliceCameraItemController { policeCameraItemService.batchMove(dto); return Result.ok(); } + @ApiOperation(value = "统计执法记录仪每日工作时长", notes = "统计执法记录仪每日工作时长", httpMethod = "POST") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"), + @ApiImplicitParam(name = "itemId", value = "执法记录仪id", paramType = "body", required = false, 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"), + }) + @PostMapping("/countWorkingHours") + public Result> countWorkingHours(@RequestBody Map map) { + return Result.success(policeCameraItemService.countWorkingHours(map)); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/PoliceCameraItem.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/PoliceCameraItem.java index 876a50e52..d3010d17d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/PoliceCameraItem.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/PoliceCameraItem.java @@ -148,5 +148,10 @@ public class PoliceCameraItem implements Serializable { */ @ApiModelProperty(value = "设备位置") private java.lang.String devLocation; + /** + * 默认码流类型:1、子码流,2、主码流,默认子码流 + */ + @ApiModelProperty(value = "默认码流类型:1、子码流,2、主码流,默认子码流") + private Integer defaultStreamType; } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/CountWorkingHoursVo.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/CountWorkingHoursVo.java new file mode 100644 index 000000000..9ba265455 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/entity/vo/CountWorkingHoursVo.java @@ -0,0 +1,21 @@ +package com.zhgd.xmgl.modules.policecamera.entity.vo; + +import com.zhgd.xmgl.util.DateUtils; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CountWorkingHoursVo implements DateUtils.DateAware { + @ApiModelProperty(value = "工作时长中文显示") + private String workingTimeName; + /** + *日期 + */ + @ApiModelProperty("日期") + private String date; + /** + * 文件时长 + */ + @ApiModelProperty(value = "文件时长") + private java.lang.Integer duration; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/PoliceCameraItemMapper.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/PoliceCameraItemMapper.java index 0b3b3625d..25f85a37d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/PoliceCameraItemMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/PoliceCameraItemMapper.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhgd.annotation.DataScope; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraItem; +import com.zhgd.xmgl.modules.policecamera.entity.vo.CountWorkingHoursVo; import com.zhgd.xmgl.modules.policecamera.entity.vo.PoliceCameraItemVo; import com.zhgd.xmgl.modules.xz.entity.vo.CountStatusVo; import org.apache.ibatis.annotations.Mapper; @@ -85,4 +86,6 @@ public interface PoliceCameraItemMapper extends BaseMapper { * @return */ List getCameraItemIdListByTicketId(String ticketId); + + List countWorkingHours(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/PoliceCameraItemMapper.xml b/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/PoliceCameraItemMapper.xml index 6ffff8cf2..05efbd4eb 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/PoliceCameraItemMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/mapper/xml/PoliceCameraItemMapper.xml @@ -91,4 +91,26 @@ join work_ticket_camera_rel wtcr on wt.id = wtcr.work_ticket_id where wt.id = #{ticketId} + + diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/IPoliceCameraItemService.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/IPoliceCameraItemService.java index 9fa6868c8..cbc06a00b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/IPoliceCameraItemService.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/IPoliceCameraItemService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraItem; import com.zhgd.xmgl.modules.policecamera.entity.dto.PoliceCameraItemBatchMoveDto; +import com.zhgd.xmgl.modules.policecamera.entity.vo.CountWorkingHoursVo; import com.zhgd.xmgl.modules.policecamera.entity.vo.PoliceCameraItemVo; import com.zhgd.xmgl.modules.policecamera.entity.vo.VideoItemInfoVo; import com.zhgd.xmgl.modules.xz.entity.vo.CountStatusVo; @@ -105,4 +106,6 @@ public interface IPoliceCameraItemService extends IService { List getListByProjectSn(String projectSn); void batchMove(PoliceCameraItemBatchMoveDto dto); + + List countWorkingHours(Map map); } diff --git a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/PoliceCameraItemServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/PoliceCameraItemServiceImpl.java index 61f5174d4..c37e8a486 100644 --- a/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/PoliceCameraItemServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/policecamera/service/impl/PoliceCameraItemServiceImpl.java @@ -21,6 +21,11 @@ import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; import com.zhgd.xmgl.modules.policecamera.entity.*; import com.zhgd.xmgl.modules.policecamera.entity.dto.PoliceCameraItemBatchMoveDto; +import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraItem; +import com.zhgd.xmgl.modules.policecamera.entity.PoliceCameraVideoConfig; +import com.zhgd.xmgl.modules.policecamera.entity.ProjectPoliceCameraConfig; +import com.zhgd.xmgl.modules.policecamera.entity.WorkTicketCameraRel; +import com.zhgd.xmgl.modules.policecamera.entity.vo.CountWorkingHoursVo; import com.zhgd.xmgl.modules.policecamera.entity.vo.PoliceCameraItemVo; import com.zhgd.xmgl.modules.policecamera.entity.vo.VideoItemInfoVo; import com.zhgd.xmgl.modules.policecamera.entity.vo.VideoItemInfoVo.VideoInfo; @@ -369,4 +374,15 @@ public class PoliceCameraItemServiceImpl extends ServiceImpl countWorkingHours(Map map) { + List hoursVos = baseMapper.countWorkingHours(map); + for (CountWorkingHoursVo hoursVo : hoursVos) { + hoursVo.setWorkingTimeName(TimeUtil.toHourMinSecond(hoursVo.getDuration())); + } + Map hoursVoMap = hoursVos.stream().collect(Collectors.toMap(CountWorkingHoursVo::getDate, Function.identity(), (o1, o2) -> o1)); + hoursVos = DateUtils.fillDateByStartEndDate(map, hoursVoMap, CountWorkingHoursVo::new); + return hoursVos; + } + } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java index 8aa8debc2..53563758b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java @@ -357,6 +357,13 @@ public class Project implements Serializable { private String jntxAppKey; @ApiModelProperty(value = "济南拓兴appSecret") private String jntxAppSecret; + /** + * 桥梁长度(m) + */ + @Excel(name = "桥梁长度(m)", width = 15) + @ApiModelProperty(value = "桥梁长度(m)") + private java.lang.String bridgeLength; + /** * runde平台token */ diff --git a/src/main/java/com/zhgd/xmgl/modules/project/entity/ProjectConfig.java b/src/main/java/com/zhgd/xmgl/modules/project/entity/ProjectConfig.java index 295591fbb..48adc5aec 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/entity/ProjectConfig.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/entity/ProjectConfig.java @@ -76,4 +76,9 @@ public class ProjectConfig implements Serializable { private java.lang.Integer workTicketBindCamera; @ApiModelProperty(value = "1开启人脸录入时的人脸检测识别功能0不开启") private java.lang.Integer enableWorkerFaceCheck; + /** + * worker_month_attendance统计考勤时是否忽略员工打卡时的“进/出”方向标识,1忽略0不忽略 + */ + @ApiModelProperty(value = "worker_month_attendance统计考勤时是否忽略员工打卡时的“进/出”方向标识,1忽略0不忽略") + private java.lang.Integer ignoreWorkerMonthAttendanceInOut; } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerMonthAttendanceStatisticsServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerMonthAttendanceStatisticsServiceImpl.java index 56185a5f6..587e995aa 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerMonthAttendanceStatisticsServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/service/impl/WorkerMonthAttendanceStatisticsServiceImpl.java @@ -2,6 +2,7 @@ package com.zhgd.xmgl.modules.worker.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -10,7 +11,9 @@ import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.basicdata.service.impl.SystemUserServiceImpl; import com.zhgd.xmgl.modules.govtapi.GovtOpenApiService; import com.zhgd.xmgl.modules.project.entity.Project; +import com.zhgd.xmgl.modules.project.entity.ProjectConfig; import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; +import com.zhgd.xmgl.modules.project.service.IProjectConfigService; import com.zhgd.xmgl.modules.worker.entity.WorkerAttendanceRule; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.entity.WorkerMonthAttendanceDuration; @@ -21,7 +24,6 @@ import com.zhgd.xmgl.util.DateUtils; import com.zhgd.xmgl.util.EnvironmentUtil; import com.zhgd.xmgl.util.JxlExcelUtils; import com.zhgd.xmgl.util.ReflectUtils; -import lombok.extern.log4j.Log4j; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.math.NumberUtils; @@ -529,6 +531,9 @@ public class WorkerMonthAttendanceStatisticsServiceImpl extends ServiceImpl getWorkerAttendanceType(String personSn, Long workerAttendanceRuleId, String passTime) { @@ -562,11 +567,14 @@ public class WorkerMonthAttendanceStatisticsServiceImpl extends ServiceImpl list = workerAttendanceMapper.selectOneWorkerAttendance(param); if (list != null && !list.isEmpty()) { + ProjectConfig config = projectConfigService.getOne(new LambdaQueryWrapper() + .eq(ProjectConfig::getProjectSn, list.get(0).get("projectSn"))); + boolean ignoreInOut = config != null && Objects.equals(config.getIgnoreWorkerMonthAttendanceInOut(), 1); String maxTime = null; for (int i = 0; i < list.size(); i++) { EntityMap map = list.get(i); //2:出 - if (map.get("passType") != null && map.get("createTime") != null && NumberUtils.toInt(map.get("passType").toString()) == 2) { + if (map.get("createTime") != null && (ignoreInOut || (map.get("passType") != null && NumberUtils.toInt(map.get("passType").toString()) == 2))) { maxTime = map.get("createTime").toString(); break; } @@ -575,9 +583,11 @@ public class WorkerMonthAttendanceStatisticsServiceImpl extends ServiceImpl= 0; i--) { Map map = list.get(i); //1:进 - if (map.get("passType") != null && map.get("createTime") != null && NumberUtils.toInt(map.get("passType").toString()) == 1) { - minTime = map.get("createTime").toString(); - break; + if (map.get("createTime") != null && (ignoreInOut || (map.get("passType") != null && NumberUtils.toInt(map.get("passType").toString()) == 1))) { + if (!Objects.equals(maxTime, map.get("createTime").toString())) { + minTime = map.get("createTime").toString(); + break; + } } } String startTimes = null; diff --git a/src/main/java/com/zhgd/xmgl/util/DateUtils.java b/src/main/java/com/zhgd/xmgl/util/DateUtils.java index d3d5ff872..c89170cf5 100644 --- a/src/main/java/com/zhgd/xmgl/util/DateUtils.java +++ b/src/main/java/com/zhgd/xmgl/util/DateUtils.java @@ -791,7 +791,7 @@ public class DateUtils { * @param paramMap * @param dateMap * @param instanceSupplier - * @param + * @param 类要实现DateAware * @return */ public static List fillDateByStartEndDate(