bug修改

This commit is contained in:
guo 2023-07-31 15:20:41 +08:00
parent 1a1c5fe740
commit b4fe3478b7
27 changed files with 576 additions and 378 deletions

View File

@ -216,8 +216,8 @@ public class LifterAlarmController {
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = true, dataType = "String"), @ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = true, dataType = "String"),
@ApiImplicitParam(name = "devSn", value = "设备sn", paramType = "query", required = false, dataType = "String"), @ApiImplicitParam(name = "devSn", value = "设备sn", paramType = "query", required = false, dataType = "String"),
@ApiImplicitParam(name = "queryStartTime", value = "查询开始时间格式2023-05-22 18:00:00", paramType = "query", required = true, dataType = "String"), @ApiImplicitParam(name = "queryStartTime", value = "查询开始时间格式2023-05-22", paramType = "query", required = true, dataType = "String"),
@ApiImplicitParam(name = "queryEndTime", value = "查询结束时间格式2023-05-22 18:00:00", paramType = "query", required = true, dataType = "String"), @ApiImplicitParam(name = "queryEndTime", value = "查询结束时间格式2023-05-22", paramType = "query", required = true, dataType = "String"),
}) })
@PostMapping(value = "/queryAlarmsDistinguishedNumberByAlarmType") @PostMapping(value = "/queryAlarmsDistinguishedNumberByAlarmType")
public Result<AlarmsDistinguishedNumberByAlarmType> queryAlarmsDistinguishedNumberByAlarmType(@RequestBody Map<String, Object> map) { public Result<AlarmsDistinguishedNumberByAlarmType> queryAlarmsDistinguishedNumberByAlarmType(@RequestBody Map<String, Object> map) {

View File

@ -2,13 +2,9 @@ package com.zhgd.xmgl.modules.bigdevice.controller;
import com.zhgd.annotation.OperLog; import com.zhgd.annotation.OperLog;
import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.Lifter; import com.zhgd.xmgl.modules.bigdevice.entity.Lifter;
import com.zhgd.xmgl.modules.bigdevice.entity.dto.LifterDto; import com.zhgd.xmgl.modules.bigdevice.entity.dto.LifterDto;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.LifterAlarmAndDevCountVo; import com.zhgd.xmgl.modules.bigdevice.entity.vo.*;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.LifterAndDataInfoVO;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.LifterDevAlarmCountListVo;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TodayOperatingStatusStatisticsVo;
import com.zhgd.xmgl.modules.bigdevice.service.ILifterService; import com.zhgd.xmgl.modules.bigdevice.service.ILifterService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@ -118,7 +114,7 @@ public class LifterController {
@ApiOperation(value = "通过升降机设备唯一标识查询信息", notes = "通过升降机设备唯一标识查询信息", httpMethod = "POST") @ApiOperation(value = "通过升降机设备唯一标识查询信息", notes = "通过升降机设备唯一标识查询信息", httpMethod = "POST")
@ApiImplicitParam(name = "devSn", value = "升降机设备编号", paramType = "query", required = true, dataType = "Integer") @ApiImplicitParam(name = "devSn", value = "升降机设备编号", paramType = "query", required = true, dataType = "Integer")
@PostMapping(value = "/selectLifterBySn") @PostMapping(value = "/selectLifterBySn")
public Result<Map<String, Object>> selectLifterBySn(@RequestBody Map<String, Object> map) { public Result<LifterBySnVo> selectLifterBySn(@RequestBody Map<String, Object> map) {
return Result.success(lifterService.selectLifterBySn(map)); return Result.success(lifterService.selectLifterBySn(map));
} }

View File

@ -5,10 +5,7 @@ import com.zhgd.annotation.OperLog;
import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.Tower; import com.zhgd.xmgl.modules.bigdevice.entity.Tower;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerAndDataInfoVO; import com.zhgd.xmgl.modules.bigdevice.entity.vo.*;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerCurrentCountVo;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerDevAlarmCountListVo;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerNumAndAlarmCount;
import com.zhgd.xmgl.modules.bigdevice.service.ITowerService; import com.zhgd.xmgl.modules.bigdevice.service.ITowerService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
@ -143,7 +140,7 @@ public class TowerController {
@ApiOperation(value = "通过塔机设备唯一标识查询信息", notes = "通过塔机设备唯一标识查询信息", httpMethod = "POST") @ApiOperation(value = "通过塔机设备唯一标识查询信息", notes = "通过塔机设备唯一标识查询信息", httpMethod = "POST")
@ApiImplicitParam(name = "devSn", value = "塔机设备编号", paramType = "query", required = true, dataType = "String") @ApiImplicitParam(name = "devSn", value = "塔机设备编号", paramType = "query", required = true, dataType = "String")
@PostMapping(value = "/selectTowerBySn") @PostMapping(value = "/selectTowerBySn")
public Result<Map<String, Object>> selectTowerBySn(@RequestBody Map<String, Object> map) { public Result<TowerBySnVo> selectTowerBySn(@RequestBody Map<String, Object> map) {
return Result.success(towerService.selectTowerBySn(map)); return Result.success(towerService.selectTowerBySn(map));
} }

View File

@ -38,4 +38,6 @@ public class DevWorkerVO {
@ApiModelProperty(value = "驾驶员列表") @ApiModelProperty(value = "驾驶员列表")
List<DriverVO> workerList; List<DriverVO> workerList;
@ApiModelProperty(value = "当前驾驶员")
DriverVO currentWorker;
} }

View File

@ -0,0 +1,18 @@
package com.zhgd.xmgl.modules.bigdevice.entity.vo;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.Lifter;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class LifterBySnVo {
private List<EntityMap> videoList;
private Lifter lifter;
private List<EntityMap> driverList;
@ApiModelProperty(value = "当前司机")
private DriverVO currentDriver;
}

View File

@ -9,7 +9,7 @@ public class TodayOperatingStatusStatisticsVo {
private Integer workTime; private Integer workTime;
@ApiModelProperty(value = "装载次数") @ApiModelProperty(value = "装载次数")
private Integer loadingNum; private Integer loadingNum;
@ApiModelProperty(value = "装载工效") @ApiModelProperty(value = "装载工效(kg/min)")
private Integer loadingErgonomic; private Integer loadingErgonomic;
@ApiModelProperty(value = "装载重量") @ApiModelProperty(value = "装载重量")
private Integer loadingWeight; private Integer loadingWeight;

View File

@ -0,0 +1,18 @@
package com.zhgd.xmgl.modules.bigdevice.entity.vo;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.Tower;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class TowerBySnVo {
private List<EntityMap> videoList;
private List<EntityMap> driverList;
private Tower tower;
@ApiModelProperty(value = "当前司机")
private DriverVO currentDriver;
}

View File

@ -5,6 +5,7 @@ import java.util.Map;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.DriverVO;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TodayOperatingStatusStatisticsVo; import com.zhgd.xmgl.modules.bigdevice.entity.vo.TodayOperatingStatusStatisticsVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -25,4 +26,6 @@ public interface LifterWorkCycleMapper extends BaseMapper<LifterWorkCycle> {
List<EntityMap> selectLifterWorkCycleList(Map<String, Object> map); List<EntityMap> selectLifterWorkCycleList(Map<String, Object> map);
TodayOperatingStatusStatisticsVo queryTodayWorkCycleStatusStatistics(Map<String, Object> map); TodayOperatingStatusStatisticsVo queryTodayWorkCycleStatusStatistics(Map<String, Object> map);
DriverVO getCurrentDriver(Map<String, Object> map);
} }

View File

@ -2,8 +2,8 @@ package com.zhgd.xmgl.modules.bigdevice.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkCycle; import com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkCycle;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.DriverVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -40,4 +40,12 @@ public interface TowerWorkCycleMapper extends BaseMapper<TowerWorkCycle> {
List<Map<String, Object>> selectProjectTowerWorkCycleCountList(Map<String, Object> map); List<Map<String, Object>> selectProjectTowerWorkCycleCountList(Map<String, Object> map);
List<Map<String, Object>> selectAllProjectTowerWorkCycletList(Map<String, Object> map); List<Map<String, Object>> selectAllProjectTowerWorkCycletList(Map<String, Object> map);
/**
* 获取当前司机信息
*
* @param map
* @return
*/
DriverVO getCurrentDriver(Map<String, Object> map);
} }

View File

@ -332,6 +332,6 @@
from lifter_alarm la from lifter_alarm la
where la.add_time >= #{queryStartTime} where la.add_time >= #{queryStartTime}
and la.add_time <![CDATA[<=]]> and la.add_time <![CDATA[<=]]>
#{queryEndTime} DATE_FORMAT(#{queryEndTime},'%Y-%m-%d 23:59:59')
</select> </select>
</mapper> </mapper>

View File

@ -182,28 +182,20 @@
bddr.id bId, bddr.id bId,
wi.worker_name, wi.worker_name,
wi.phone_number, wi.phone_number,
(SELECT (SELECT certificate_number
certificate_number FROM `worker_certificate`
FROM WHERE worker_id = wi.id
`worker_certificate`
WHERE
worker_id = wi.id
AND certificate_type = 108 AND certificate_type = 108
ORDER BY ORDER BY effect_time DESC
effect_time DESC
LIMIT 1) special_certificate_number, LIMIT 1) special_certificate_number,
wi.field_acquisition_url, wi.field_acquisition_url,
wi.sex, wi.sex,
TIMESTAMPDIFF(YEAR, wi.birthday, CURDATE()) as age, TIMESTAMPDIFF(YEAR, wi.birthday, CURDATE()) as age,
TIMESTAMPDIFF(YEAR, wi.enter_date, CURDATE()) as workYear, TIMESTAMPDIFF(YEAR, wi.enter_date, CURDATE()) as workYear,
(SELECT (SELECT IFNULL(a.work_time, 0) continuous_working_time
IFNULL( a.work_time, 0 ) continuous_working_time FROM lifter_work_cycle a
FROM WHERE a.driver_id_card = wi.id_card
lifter_work_cycle a ORDER BY a.add_time DESC
WHERE
a.driver_id_card = wi.id_card
ORDER BY
a.add_time DESC
LIMIT 1) continuous_working_time, LIMIT 1) continuous_working_time,
wi.id_card driverIdCard wi.id_card driverIdCard
from lifter l from lifter l

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.bigdevice.mapper.LifterWorkCycleMapper"> <mapper namespace="com.zhgd.xmgl.modules.bigdevice.mapper.LifterWorkCycleMapper">
<select id="queryLifterWorkCyclePageList" resultType="com.zhgd.jeecg.common.mybatis.EntityMap"> <select id="queryLifterWorkCyclePageList" resultType="com.zhgd.jeecg.common.mybatis.EntityMap">
SELECT a.*, b.dev_name SELECT a.*, b.dev_name
FROM lifter_work_cycle a INNER JOIN lifter b ON a.dev_sn=b.dev_sn FROM lifter_work_cycle a
INNER JOIN lifter b ON a.dev_sn = b.dev_sn
WHERE a.project_sn = #{param.projectSn} WHERE a.project_sn = #{param.projectSn}
<if test="param.devSn != null and param.devSn != ''"> <if test="param.devSn != null and param.devSn != ''">
and a.dev_sn = #{param.devSn} and a.dev_sn = #{param.devSn}
@ -18,7 +18,8 @@
</select> </select>
<select id="selectLifterWorkCycleList" resultType="com.zhgd.jeecg.common.mybatis.EntityMap" parameterType="map"> <select id="selectLifterWorkCycleList" resultType="com.zhgd.jeecg.common.mybatis.EntityMap" parameterType="map">
SELECT a.*, b.dev_name SELECT a.*, b.dev_name
FROM lifter_work_cycle a INNER JOIN lifter b ON a.dev_sn=b.dev_sn FROM lifter_work_cycle a
INNER JOIN lifter b ON a.dev_sn = b.dev_sn
WHERE a.dev_sn = #{devSn} WHERE a.dev_sn = #{devSn}
<if test="startTime != null and startTime != ''"> <if test="startTime != null and startTime != ''">
AND a.start_time &gt;= CONCAT(DATE_FORMAT(#{startTime}, '%Y-%m-%d'), ' 00:00:00') AND a.start_time &gt;= CONCAT(DATE_FORMAT(#{startTime}, '%Y-%m-%d'), ' 00:00:00')
@ -31,8 +32,9 @@
<select id="queryTodayWorkCycleStatusStatistics" <select id="queryTodayWorkCycleStatusStatistics"
resultType="com.zhgd.xmgl.modules.bigdevice.entity.vo.TodayOperatingStatusStatisticsVo"> resultType="com.zhgd.xmgl.modules.bigdevice.entity.vo.TodayOperatingStatusStatisticsVo">
SELECT SELECT t.*, ROUND(avg(t.loadingWeight / t.workTime), 4) loadingErgonomic
ifnull(sum(ifnull(lw.work_time,0)),0) as workTime, from (
SELECT ifnull(round(sum(ifnull(lw.work_time / 60, 0)), 2), 0) as workTime,
count(1) as loadingNum, count(1) as loadingNum,
ifnull(sum(ifnull(lw.loading, 0)), 0) as loadingWeight ifnull(sum(ifnull(lw.loading, 0)), 0) as loadingWeight
FROM lifter_work_cycle lw FROM lifter_work_cycle lw
@ -41,5 +43,32 @@
and lw.dev_sn = #{devSn} and lw.dev_sn = #{devSn}
and lw.add_time >= curdate() and lw.add_time >= curdate()
</where> </where>
)t
</select>
<select id="getCurrentDriver" resultType="com.zhgd.xmgl.modules.bigdevice.entity.vo.DriverVO">
select wi.worker_name,
wi.phone_number,
(SELECT certificate_number
FROM `worker_certificate`
WHERE worker_id = wi.id
AND certificate_type = 108
ORDER BY effect_time DESC
LIMIT 1) special_certificate_number,
wi.field_acquisition_url image_url,
wi.sex,
TIMESTAMPDIFF(YEAR, wi.birthday, CURDATE()) as age,
TIMESTAMPDIFF(YEAR, wi.enter_date, CURDATE()) as workYear,
(SELECT IFNULL(a.work_time, 0) continuous_working_time
FROM lifter_work_cycle a
WHERE a.driver_id_card = wi.id_card
ORDER BY a.add_time DESC
LIMIT 1) continuous_working_time,
wi.id_card
from lifter_work_cycle l
left join worker_info wi on l.driver_id_card = wi.id_card
where l.dev_sn = #{devSn}
ORDER BY l.add_time desc
LIMIT 1
</select> </select>
</mapper> </mapper>

View File

@ -2,8 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.bigdevice.mapper.TowerMapper"> <mapper namespace="com.zhgd.xmgl.modules.bigdevice.mapper.TowerMapper">
<select id="selectTowerAndLifterStatisticsCount" resultType="java.util.Map" parameterType="java.util.Map"> <select id="selectTowerAndLifterStatisticsCount" resultType="java.util.Map" parameterType="java.util.Map">
SELECT SELECT IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) totalLifterNum,
IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) totalLifterNum,
IFNULL(SUM(IFNULL(d.devOnline, 0)), 0) lifterOnlineNum, IFNULL(SUM(IFNULL(d.devOnline, 0)), 0) lifterOnlineNum,
IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) - IFNULL(SUM(IFNULL(d.devOnline, 0)), 0) lifterNotOnlineNum, IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) - IFNULL(SUM(IFNULL(d.devOnline, 0)), 0) lifterNotOnlineNum,
IFNULL(SUM(IFNULL(t.totalDev, 0)), 0) totalTowerNum, IFNULL(SUM(IFNULL(t.totalDev, 0)), 0) totalTowerNum,
@ -355,14 +354,11 @@
</select> </select>
<select id="selectProjectTowerTotalCountList" resultType="java.util.Map" parameterType="map"> <select id="selectProjectTowerTotalCountList" resultType="java.util.Map" parameterType="map">
SELECT COUNT(1) devNum SELECT COUNT(1) devNum
, , IFNULL(SUM((case when w1.anticollision = 1 then 1 else 0 end)), 0) collideDevNum
IFNULL(SUM((case when w1.anticollision = 1 then 1 else 0 end)), 0) collideDevNum , IFNULL(SUM((case
,
IFNULL(SUM((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(w1.real_time)) / 60) &lt;= 30 then 1 when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(w1.real_time)) / 60) &lt;= 30 then 1
else 0 end)), 0) devOnline else 0 end)), 0) devOnline
, , IFNULL(SUM((case
IFNULL(SUM((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(w1.real_time)) / 60) &lt;= 30 and when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(w1.real_time)) / 60) &lt;= 30 and
w1.anticollision = 1 then 1 w1.anticollision = 1 then 1
else 0 end)), 0) collideDevOnline else 0 end)), 0) collideDevOnline
@ -482,8 +478,7 @@
</select> </select>
<select id="selectProjectTowerCountList" resultType="java.util.Map"> <select id="selectProjectTowerCountList" resultType="java.util.Map">
SELECT count(1) devNum SELECT count(1) devNum
, , IFNULL(SUM((case
IFNULL(SUM((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(w1.real_time)) / 60) &lt;= 30 then 1 when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(w1.real_time)) / 60) &lt;= 30 then 1
else 0 end)), 0) devOnlineNum else 0 end)), 0) devOnlineNum
<if test="companyType == '1'.toString()"> <if test="companyType == '1'.toString()">
@ -696,22 +691,20 @@
bddr.id bId, bddr.id bId,
wi.worker_name, wi.worker_name,
wi.phone_number, wi.phone_number,
(SELECT (SELECT certificate_number
certificate_number FROM `worker_certificate`
FROM WHERE worker_id = wi.id
`worker_certificate`
WHERE
worker_id = wi.id
AND certificate_type = 98 AND certificate_type = 98
ORDER BY ORDER BY effect_time DESC
effect_time DESC
LIMIT 1) special_certificate_number, LIMIT 1) special_certificate_number,
wi.field_acquisition_url, wi.field_acquisition_url,
wi.sex, wi.sex,
TIMESTAMPDIFF(YEAR, wi.birthday, CURDATE()) as age, TIMESTAMPDIFF(YEAR, wi.birthday, CURDATE()) as age,
(select IFNULL(a.work_time, 0) continuous_working_time (select IFNULL(a.work_time, 0) continuous_working_time
from tower_work_cycle a from tower_work_cycle a
where a.driver_id_card = wi.id_card order by a.add_time desc limit 1) continuous_working_time, where a.driver_id_card = wi.id_card
order by a.add_time desc
limit 1) continuous_working_time,
wi.id_card driverIdCard wi.id_card driverIdCard
from tower t from tower t
left join big_device_driver_record bddr on t.dev_sn = bddr.dev_sn and bddr.type = 1 left join big_device_driver_record bddr on t.dev_sn = bddr.dev_sn and bddr.type = 1

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.bigdevice.mapper.TowerWorkCycleMapper"> <mapper namespace="com.zhgd.xmgl.modules.bigdevice.mapper.TowerWorkCycleMapper">
<select id="queryTowerWorkCyclePageList" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkCycle"> <select id="queryTowerWorkCyclePageList" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkCycle">
SELECT a.*, (ABS(sling_start_height - sling_end_height) + max_range) work_mileage SELECT a.*, (ABS(sling_start_height - sling_end_height) + max_range) work_mileage
FROM tower_work_cycle a FROM tower_work_cycle a
@ -31,7 +30,8 @@
order by a.add_time order by a.add_time
</select> </select>
<select id="selectTowerWorkCycleCount" resultType="java.util.Map"> <select id="selectTowerWorkCycleCount" resultType="java.util.Map">
SELECT a.dev_sn devSn,count(1) cycleNum, SELECT a.dev_sn devSn,
count(1) cycleNum,
IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0) timeNum IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0) timeNum
FROM tower_work_cycle a FROM tower_work_cycle a
WHERE a.project_sn = #{projectSn} WHERE a.project_sn = #{projectSn}
@ -44,41 +44,54 @@
group by a.dev_sn group by a.dev_sn
</select> </select>
<select id="selectExcelTowerWorkCycle" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkCycle"> <select id="selectExcelTowerWorkCycle" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkCycle">
SELECT a.*,(ABS(sling_start_height-sling_end_height)+max_range) work_mileage, SELECT a.*,
(case when a.work_max_range_alarm=1 then '报警' (ABS(sling_start_height - sling_end_height) + max_range) work_mileage,
(case
when a.work_max_range_alarm = 1 then '报警'
when a.work_max_range_alarm = 2 then '预警' when a.work_max_range_alarm = 2 then '预警'
else '正常' end) work_max_range_alarm_name, else '正常' end) work_max_range_alarm_name,
(case when a.work_min_range_alarm=1 then '报警' (case
when a.work_min_range_alarm = 1 then '报警'
when a.work_min_range_alarm = 2 then '预警' when a.work_min_range_alarm = 2 then '预警'
else '正常' end) work_min_range_alarm_name, else '正常' end) work_min_range_alarm_name,
(case when a.work_height_alarm=1 then '报警' (case
when a.work_height_alarm = 1 then '报警'
when a.work_height_alarm = 2 then '预警' when a.work_height_alarm = 2 then '预警'
else '正常' end) work_height_alarm_name, else '正常' end) work_height_alarm_name,
(case when a.work_height_lower_alarm=1 then '报警' (case
when a.work_height_lower_alarm = 1 then '报警'
when a.work_height_lower_alarm = 2 then '预警' when a.work_height_lower_alarm = 2 then '预警'
else '正常' end) work_height_lower_alarm_name, else '正常' end) work_height_lower_alarm_name,
(case when a.work_pos_angle_alarm=1 then '报警' (case
when a.work_pos_angle_alarm = 1 then '报警'
when a.work_pos_angle_alarm = 2 then '预警' when a.work_pos_angle_alarm = 2 then '预警'
else '正常' end) work_pos_angle_alarm_name, else '正常' end) work_pos_angle_alarm_name,
(case when a.work_neg_angle_alarm=1 then '报警' (case
when a.work_neg_angle_alarm = 1 then '报警'
when a.work_neg_angle_alarm = 2 then '预警' when a.work_neg_angle_alarm = 2 then '预警'
else '正常' end) work_neg_angle_alarm_name, else '正常' end) work_neg_angle_alarm_name,
(case when a.work_moment_alarm=1 then '报警' (case
when a.work_moment_alarm = 1 then '报警'
when a.work_moment_alarm = 2 then '预警' when a.work_moment_alarm = 2 then '预警'
else '正常' end) work_moment_alarm_name, else '正常' end) work_moment_alarm_name,
(case when a.work_obliguity_alarm=1 then '报警' (case
when a.work_obliguity_alarm = 1 then '报警'
when a.work_obliguity_alarm = 2 then '预警' when a.work_obliguity_alarm = 2 then '预警'
else '正常' end) work_obliguity_alarm_name, else '正常' end) work_obliguity_alarm_name,
(case when a.work_environment_alarm=1 then '报警' (case
when a.work_environment_alarm = 1 then '报警'
when a.work_environment_alarm = 2 then '预警' when a.work_environment_alarm = 2 then '预警'
else '正常' end) work_environment_alarm_name, else '正常' end) work_environment_alarm_name,
(case when a.work_multi_alarm=1 then '报警' (case
when a.work_multi_alarm = 1 then '报警'
when a.work_multi_alarm = 2 then '预警' when a.work_multi_alarm = 2 then '预警'
else '正常' end) work_multi_alarm_name, else '正常' end) work_multi_alarm_name,
(case when a.work_moment_pre_alarm=1 then '报警' (case
when a.work_moment_pre_alarm = 1 then '报警'
when a.work_moment_pre_alarm = 2 then '预警' when a.work_moment_pre_alarm = 2 then '预警'
else '正常' end) work_moment_pre_alarm_name, else '正常' end) work_moment_pre_alarm_name,
(case when a.work_wind_speed_alarm=1 then '报警' (case
when a.work_wind_speed_alarm = 1 then '报警'
when a.work_wind_speed_alarm = 2 then '预警' when a.work_wind_speed_alarm = 2 then '预警'
else '正常' end) work_wind_speed_alarm_name else '正常' end) work_wind_speed_alarm_name
from tower_work_cycle a from tower_work_cycle a
@ -98,7 +111,8 @@
order by a.add_time desc order by a.add_time desc
</select> </select>
<select id="selectTowerLoadAndMileageCount" resultType="java.util.Map"> <select id="selectTowerLoadAndMileageCount" resultType="java.util.Map">
SELECT a.dev_sn devSn,count(1) cycleNum, SELECT a.dev_sn devSn,
count(1) cycleNum,
IFNULL(SUM(loading), 0) totalLoading, IFNULL(SUM(loading), 0) totalLoading,
IFNULL(SUM((ABS(sling_start_height - sling_end_height) + max_range)), 0) totalWorkMileage IFNULL(SUM((ABS(sling_start_height - sling_end_height) + max_range)), 0) totalWorkMileage
FROM tower_work_cycle a FROM tower_work_cycle a
@ -110,26 +124,28 @@
AND a.end_time &lt;= CONCAT(DATE_FORMAT(#{endTime}, '%Y-%m-%d'), ' 23:59:59') AND a.end_time &lt;= CONCAT(DATE_FORMAT(#{endTime}, '%Y-%m-%d'), ' 23:59:59')
</if> </if>
group by a.dev_sn group by a.dev_sn
</select> </select>
<select id="selectTowerRunDataCount" resultType="java.util.Map"> <select id="selectTowerRunDataCount" resultType="java.util.Map">
select count(1) cycleNum, select count(1) cycleNum,
IFNULL(SUM(loading), 0) totalLoading, IFNULL(SUM(loading), 0) totalLoading,
IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0) timeNum, IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0) timeNum,
round(IFNULL(TRUNCATE(IFNULL(SUM(loading),0)/IFNULL(SUM(TIMESTAMPDIFF(MINUTE,a.start_time,a.end_time)),0),4),0)*100,2) effectRatio round(IFNULL(TRUNCATE(IFNULL(SUM(loading), 0) /
IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0), 4), 0) * 100,
2) effectRatio
FROM tower_work_cycle a FROM tower_work_cycle a
WHERE a.project_sn = #{projectSn} WHERE a.project_sn = #{projectSn}
<if test="devSn != null and devSn != ''"> <if test="devSn != null and devSn != ''">
and a.dev_sn = #{devSn} and a.dev_sn = #{devSn}
</if> </if>
AND a.start_time &gt;= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00') AND a.start_time &gt;= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
</select> </select>
<select id="selectYesterdayTowerRunDataCount" resultType="java.util.Map"> <select id="selectYesterdayTowerRunDataCount" resultType="java.util.Map">
select count(1) cycleNum, select count(1) cycleNum,
IFNULL(SUM(loading), 0) totalLoading, IFNULL(SUM(loading), 0) totalLoading,
IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0) timeNum, IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0) timeNum,
round(IFNULL(TRUNCATE(IFNULL(SUM(loading),0)/IFNULL(SUM(TIMESTAMPDIFF(MINUTE,a.start_time,a.end_time)),0),4),0)*100,2) effectRatio round(IFNULL(TRUNCATE(IFNULL(SUM(loading), 0) /
IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0), 4), 0) * 100,
2) effectRatio
FROM tower_work_cycle a FROM tower_work_cycle a
WHERE a.project_sn = #{projectSn} WHERE a.project_sn = #{projectSn}
<if test="devSn != null and devSn != ''"> <if test="devSn != null and devSn != ''">
@ -142,12 +158,19 @@
<select id="selectTowerCycleTotalCount" resultType="java.util.Map" parameterType="map"> <select id="selectTowerCycleTotalCount" resultType="java.util.Map" parameterType="map">
select tp.*, select tp.*,
round(IFNULL(TRUNCATE((IFNULL(todayCycleNum,0)-IFNULL(yesterdayCycleNum,0))/IFNULL(yesterdayCycleNum,0),4),0)*100,2) ringRatio round(IFNULL(TRUNCATE((IFNULL(todayCycleNum, 0) - IFNULL(yesterdayCycleNum, 0)) /
IFNULL(yesterdayCycleNum, 0), 4), 0) * 100, 2) ringRatio
from ( from (
SELECT count(1) cycleNum, SELECT count(1) cycleNum,
IFNULL(SUM((CASE WHEN DATE_FORMAT(w1.start_time,'%Y-%m-%d')=DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 DAY),'%Y-%m-%d') THEN 1 ELSE 0 END)),0) yesterdayCycleNum, IFNULL(SUM((CASE
IFNULL(SUM((CASE WHEN DATE_FORMAT(w1.start_time,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d') THEN 1 ELSE 0 END)),0) todayCycleNum WHEN DATE_FORMAT(w1.start_time, '%Y-%m-%d') =
from tower_work_cycle w1 INNER JOIN project a ON w1.project_sn=a.project_sn DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y-%m-%d') THEN 1
ELSE 0 END)), 0) yesterdayCycleNum,
IFNULL(SUM((CASE
WHEN DATE_FORMAT(w1.start_time, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d') THEN 1
ELSE 0 END)), 0) todayCycleNum
from tower_work_cycle w1
INNER JOIN project a ON w1.project_sn = a.project_sn
INNER JOIN company cp ON a.company_sn = cp.company_sn INNER JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id INNER JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id Left JOIN company f ON b.parent_id = f.company_id
@ -172,7 +195,8 @@
<select id="selectWeekTowerCycleList" resultType="java.util.Map" parameterType="map"> <select id="selectWeekTowerCycleList" resultType="java.util.Map" parameterType="map">
SELECT count(1) cycleNum, DATE_FORMAT(w1.start_time, "%Y-%m-%d") titleName SELECT count(1) cycleNum, DATE_FORMAT(w1.start_time, "%Y-%m-%d") titleName
from tower_work_cycle w1 INNER JOIN project a ON w1.project_sn=a.project_sn from tower_work_cycle w1
INNER JOIN project a ON w1.project_sn = a.project_sn
INNER JOIN company cp ON a.company_sn = cp.company_sn INNER JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id INNER JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id Left JOIN company f ON b.parent_id = f.company_id
@ -198,21 +222,27 @@
<select id="selectProjectTowerWorkCycleCountList" resultType="java.util.Map"> <select id="selectProjectTowerWorkCycleCountList" resultType="java.util.Map">
SELECT count(1) cycleNum SELECT count(1) cycleNum
<if test="companyType == '1'.toString()"> <if test="companyType == '1'.toString()">
,f.company_name name,f.company_sn sn , f.company_name name
, f.company_sn sn
</if> </if>
<if test="companyType == '2'.toString()"> <if test="companyType == '2'.toString()">
,b.company_name name,b.company_sn sn , b.company_name name
, b.company_sn sn
</if> </if>
<if test="companyType == '3'.toString()"> <if test="companyType == '3'.toString()">
,cp.company_name name,cp.company_sn sn , cp.company_name name
, cp.company_sn sn
</if> </if>
<if test="companyType == '4'.toString()"> <if test="companyType == '4'.toString()">
,a.project_name name,a.project_sn sn , a.project_name name
, a.project_sn sn
</if> </if>
<if test="companyType == '5'.toString()"> <if test="companyType == '5'.toString()">
,a.project_name name,a.project_sn sn , a.project_name name
, a.project_sn sn
</if> </if>
from tower_work_cycle w1 INNER JOIN project a ON w1.project_sn=a.project_sn from tower_work_cycle w1
INNER JOIN project a ON w1.project_sn = a.project_sn
INNER JOIN company cp ON a.company_sn = cp.company_sn INNER JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id INNER JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id Left JOIN company f ON b.parent_id = f.company_id
@ -226,6 +256,7 @@
GROUP BY b.company_id GROUP BY b.company_id
</if> </if>
<if test="companyType == '3'.toString()"> <if test="companyType == '3'.toString()">
and b.company_sn=#{sn} and b.company_sn=#{sn}
GROUP BY cp.company_id GROUP BY cp.company_id
</if> </if>
@ -241,8 +272,10 @@
</select> </select>
<select id="selectAllProjectTowerWorkCycletList" resultType="java.util.Map"> <select id="selectAllProjectTowerWorkCycletList" resultType="java.util.Map">
SELECT count(1) cycleNum SELECT count(1) cycleNum
,a.project_name name,a.project_sn sn , a.project_name name
from tower_work_cycle w1 INNER JOIN project a ON w1.project_sn=a.project_sn , a.project_sn sn
from tower_work_cycle w1
INNER JOIN project a ON w1.project_sn = a.project_sn
INNER JOIN company cp ON a.company_sn = cp.company_sn INNER JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id INNER JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id Left JOIN company f ON b.parent_id = f.company_id
@ -265,4 +298,31 @@
group by w1.project_sn group by w1.project_sn
order by cycleNum desc order by cycleNum desc
</select> </select>
<select id="getCurrentDriver" resultType="com.zhgd.xmgl.modules.bigdevice.entity.vo.DriverVO">
select
wi.worker_name,
wi.phone_number,
(SELECT certificate_number
FROM `worker_certificate`
WHERE worker_id = wi.id
AND certificate_type = 108
ORDER BY effect_time DESC
LIMIT 1) special_certificate_number,
wi.field_acquisition_url image_url,
wi.sex,
TIMESTAMPDIFF(YEAR, wi.birthday, CURDATE()) as age,
TIMESTAMPDIFF(YEAR, wi.enter_date, CURDATE()) as workYear,
(SELECT IFNULL(a.work_time, 0) continuous_working_time
FROM lifter_work_cycle a
WHERE a.driver_id_card = wi.id_card
ORDER BY a.add_time DESC
LIMIT 1) continuous_working_time,
wi.id_card
from tower_work_cycle l
left join worker_info wi on l.driver_id_card = wi.id_card
where l.dev_sn = #{devSn}
ORDER BY l.add_time desc
LIMIT 1
</select>
</mapper> </mapper>

View File

@ -1,15 +1,11 @@
package com.zhgd.xmgl.modules.bigdevice.service; package com.zhgd.xmgl.modules.bigdevice.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.Lifter; import com.zhgd.xmgl.modules.bigdevice.entity.Lifter;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterAlarm; import com.zhgd.xmgl.modules.bigdevice.entity.LifterAlarm;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterViolation; import com.zhgd.xmgl.modules.bigdevice.entity.LifterViolation;
import com.zhgd.xmgl.modules.bigdevice.entity.dto.LifterDto; import com.zhgd.xmgl.modules.bigdevice.entity.dto.LifterDto;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.LifterAlarmAndDevCountVo; import com.zhgd.xmgl.modules.bigdevice.entity.vo.*;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.LifterAndDataInfoVO;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.LifterDevAlarmCountListVo;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TodayOperatingStatusStatisticsVo;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -30,7 +26,7 @@ public interface ILifterService extends IService<Lifter> {
Lifter queryById(String id); Lifter queryById(String id);
Map<String, Object> selectLifterBySn(Map<String, Object> map); LifterBySnVo selectLifterBySn(Map<String, Object> map);
void updateLifterCoordinate(List<Lifter> list); void updateLifterCoordinate(List<Lifter> list);

View File

@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.Tower; import com.zhgd.xmgl.modules.bigdevice.entity.Tower;
import com.zhgd.xmgl.modules.bigdevice.entity.TowerAlarm; import com.zhgd.xmgl.modules.bigdevice.entity.TowerAlarm;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerAndDataInfoVO; import com.zhgd.xmgl.modules.bigdevice.entity.vo.*;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerCurrentCountVo;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerDevAlarmCountListVo;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerNumAndAlarmCount;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -33,7 +30,7 @@ public interface ITowerService extends IService<Tower> {
Tower queryById(String id); Tower queryById(String id);
Map<String, Object> selectTowerBySn(Map<String, Object> map); TowerBySnVo selectTowerBySn(Map<String, Object> map);
List<EntityMap> selectTowerList(Map<String, Object> map); List<EntityMap> selectTowerList(Map<String, Object> map);

View File

@ -203,7 +203,7 @@ public class LifterAlarmServiceImpl extends ServiceImpl<LifterAlarmMapper, Lifte
@Override @Override
public AlarmsDistinguishedNumberByAlarmType queryAlarmsDistinguishedNumberByAlarmType(Map<String, Object> map) { public AlarmsDistinguishedNumberByAlarmType queryAlarmsDistinguishedNumberByAlarmType(Map<String, Object> map) {
String queryEndTime = map.getOrDefault("queryEndTime", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")).toString(); String queryEndTime = map.getOrDefault("queryEndTime", DateUtil.format(new Date(), "yyyy-MM-dd")).toString();
String queryStartTime = map.getOrDefault("queryStartTime", DateUtil.offsetDay(new Date(), -7)).toString(); String queryStartTime = map.getOrDefault("queryStartTime", DateUtil.offsetDay(new Date(), -7)).toString();
map.putIfAbsent("queryEndTime", queryEndTime); map.putIfAbsent("queryEndTime", queryEndTime);
map.putIfAbsent("queryStartTime", queryStartTime); map.putIfAbsent("queryStartTime", queryStartTime);

View File

@ -1,8 +1,11 @@
package com.zhgd.xmgl.modules.bigdevice.service.impl; package com.zhgd.xmgl.modules.bigdevice.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.NumberUtil; 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.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -29,7 +32,10 @@ import org.springframework.util.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -42,6 +48,8 @@ import java.util.stream.Collectors;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Slf4j @Slf4j
public class LifterServiceImpl extends ServiceImpl<LifterMapper, Lifter> implements ILifterService { public class LifterServiceImpl extends ServiceImpl<LifterMapper, Lifter> implements ILifterService {
@Autowired
private TowerWorkCycleMapper towerWorkCycleMapper;
@Autowired @Autowired
private LifterViolationMapper lifterViolationMapper; private LifterViolationMapper lifterViolationMapper;
@Autowired @Autowired
@ -176,15 +184,17 @@ public class LifterServiceImpl extends ServiceImpl<LifterMapper, Lifter> impleme
} }
@Override @Override
public Map<String, Object> selectLifterBySn(Map<String, Object> map) { public LifterBySnVo selectLifterBySn(Map<String, Object> map) {
Map<String, Object> data = new HashMap<>();
Lifter lifter = lifterMapper.selectLifterByDevSn(map); Lifter lifter = lifterMapper.selectLifterByDevSn(map);
data.put("lifter", lifter);
List<EntityMap> videoList = bigDeviceVideoMapper.selectLifterVideoList(map); List<EntityMap> videoList = bigDeviceVideoMapper.selectLifterVideoList(map);
List<EntityMap> driverList = bigDeviceDriverRecordMapper.selectLifterDriverList(map); List<EntityMap> driverList = bigDeviceDriverRecordMapper.selectLifterDriverList(map);
data.put("videoList", videoList); DriverVO currentDriver = lifterWorkCycleMapper.getCurrentDriver(map);
data.put("driverList", driverList); LifterBySnVo vo = new LifterBySnVo();
return data; vo.setVideoList(videoList);
vo.setLifter(lifter);
vo.setDriverList(driverList);
vo.setCurrentDriver(currentDriver);
return vo;
} }
@Override @Override
@ -318,17 +328,12 @@ public class LifterServiceImpl extends ServiceImpl<LifterMapper, Lifter> impleme
@Override @Override
public LifterAndDataInfoVO getRelatedInfo(String devSn) { public LifterAndDataInfoVO getRelatedInfo(String devSn) {
log.info("调用getRelatedInfo方法请求参数{}", devSn); log.info("调用getRelatedInfo方法请求参数{}", devSn);
Lifter lifter = lifterMapper.getLifterAndDriverInfo(devSn); Lifter lifter = lifterMapper.getLifterAndDriverInfo(devSn);
log.info("getRelatedInfo升降机信息{}", lifter); log.info("getRelatedInfo升降机信息{}", lifter);
if (lifter == null) { if (lifter == null) {
log.error("无对应升降机编号设备!设备编号为:{}", devSn); log.error("无对应升降机编号设备!设备编号为:{}", devSn);
throw new NullPointerException("无对应升降机编号设备!!"); throw new NullPointerException("无对应升降机编号设备!!");
} }
LifterCurrentData newData = redisRepository.getOrSet("lifterCurrentData" + lifter.getProjectSn() + lifter.getDevSn(), (() -> lifterCurrentDataMapper.getNewData(devSn))); LifterCurrentData newData = redisRepository.getOrSet("lifterCurrentData" + lifter.getProjectSn() + lifter.getDevSn(), (() -> lifterCurrentDataMapper.getNewData(devSn)));
log.info("getRelatedInfo升降机实时数据信息{}", newData); log.info("getRelatedInfo升降机实时数据信息{}", newData);
List<DriverVO> driverList = lifter.getDriverList().stream().map(driver -> { List<DriverVO> driverList = lifter.getDriverList().stream().map(driver -> {
@ -343,9 +348,30 @@ public class LifterServiceImpl extends ServiceImpl<LifterMapper, Lifter> impleme
driverVO.setImageUrl(driver.getImageUrl()); driverVO.setImageUrl(driver.getImageUrl());
return driverVO; return driverVO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
DevWorkerVO devWorker = new DevWorkerVO(lifter.getDevName(), lifter.getDevSn(), lifter.getRegistNo(), lifter.getFactoryName(), lifter.getMaxLoad(), driverList); DevWorkerVO devWorker = new DevWorkerVO(lifter.getDevName(), lifter.getDevSn(), lifter.getRegistNo(), lifter.getFactoryName(), lifter.getMaxLoad(), driverList, null);
LifterDataInfoDTO lifterDataInfo = new LifterDataInfoDTO().setTotalFloor(lifter.getTotalFloor()).setHeight(lifter.getMaxHeight()); LifterDataInfoDTO lifterDataInfo = new LifterDataInfoDTO().setTotalFloor(lifter.getTotalFloor()).setHeight(lifter.getMaxHeight());
setLifterDataInfoDTO(lifter, newData, lifterDataInfo);
setCurrentWorker(devWorker);
return new LifterAndDataInfoVO(lifterDataInfo, devWorker);
}
private void setCurrentWorker(DevWorkerVO devWorker) {
LifterWorkCycle lwc = lifterWorkCycleMapper.selectOne(new LambdaQueryWrapper<LifterWorkCycle>()
.eq(LifterWorkCycle::getDevSn, devWorker.getDevSn())
.orderByDesc(LifterWorkCycle::getAddTime)
.last("limit 1"));
if (lwc != null && StrUtil.isNotBlank(lwc.getDriverIdCard())) {
List<DriverVO> workerList = devWorker.getWorkerList();
if (CollUtil.isNotEmpty(workerList)) {
for (DriverVO driverVO : workerList) {
devWorker.setCurrentWorker(driverVO);
break;
}
}
}
}
private void setLifterDataInfoDTO(Lifter lifter, LifterCurrentData newData, LifterDataInfoDTO lifterDataInfo) {
if (newData != null) { if (newData != null) {
if (newData.getHeightRatio() != null) { if (newData.getHeightRatio() != null) {
lifterDataInfo.setHeightRatio(newData.getHeightRatio()); lifterDataInfo.setHeightRatio(newData.getHeightRatio());
@ -368,7 +394,6 @@ public class LifterServiceImpl extends ServiceImpl<LifterMapper, Lifter> impleme
.setSpeed(newDataSpeed).setReciveTime(newData.getReciveTime()).setWindSpeed(newData.getWindSpeed()) .setSpeed(newDataSpeed).setReciveTime(newData.getReciveTime()).setWindSpeed(newData.getWindSpeed())
.setLoading(newData.getLoading()).setFallAlarm(newData.getFallAlarm()).setBottomAlarm(newData.getBottomAlarm()); .setLoading(newData.getLoading()).setFallAlarm(newData.getFallAlarm()).setBottomAlarm(newData.getBottomAlarm());
} }
return new LifterAndDataInfoVO(lifterDataInfo, devWorker);
} }
@Override @Override

View File

@ -1,5 +1,6 @@
package com.zhgd.xmgl.modules.bigdevice.service.impl; package com.zhgd.xmgl.modules.bigdevice.service.impl;
import cn.hutool.core.date.DateUnit;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -61,6 +62,15 @@ public class LifterWorkCycleServiceImpl extends ServiceImpl<LifterWorkCycleMappe
if (lifter == null) { if (lifter == null) {
throw new OpenAlertException(MessageUtil.get("EquipmentNumIncorrectErr")); throw new OpenAlertException(MessageUtil.get("EquipmentNumIncorrectErr"));
} }
String st = lifterWorkCycle.getStartTime();
String et = lifterWorkCycle.getEndTime();
if (StringUtils.isNotBlank(st) && StringUtils.isNotBlank(et)) {
Date startTime = DateUtil.parseDateTime(st);
Date endTime = DateUtil.parseDateTime(et);
if (StringUtils.isBlank(lifterWorkCycle.getWorkTime())) {
lifterWorkCycle.setWorkTime(String.valueOf(DateUtil.between(startTime, endTime, DateUnit.SECOND)));
}
}
lifterWorkCycle.setDevName(lifter.getDevName()); lifterWorkCycle.setDevName(lifter.getDevName());
lifterWorkCycle.setAddTime(new Date()); lifterWorkCycle.setAddTime(new Date());
lifterWorkCycle.setProjectSn(lifter.getProjectSn()); lifterWorkCycle.setProjectSn(lifter.getProjectSn());

View File

@ -1,6 +1,7 @@
package com.zhgd.xmgl.modules.bigdevice.service.impl; package com.zhgd.xmgl.modules.bigdevice.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -149,39 +150,51 @@ public class TowerCurrentDataServiceImpl extends ServiceImpl<TowerCurrentDataMap
} }
/** /**
* 获取报警预警名称 * 获取报警预警名称
* *
* @param towerCurrentData * @param towerCurrentData
* @param type * @param type
* @return * @return
*/ */
private String getAlarmName(TowerCurrentData towerCurrentData, Integer type) { private String getAlarmName(TowerCurrentData towerCurrentData, Integer type) {
String rs = ""; List<String> rsList = new ArrayList<>();
if (Objects.equals(towerCurrentData.getMomentAlarm(), type)) { if (Objects.equals(towerCurrentData.getMomentAlarm(), type)) {
rs = "力矩"; rsList.add("力矩");
} else if (Objects.equals(towerCurrentData.getWindSpeedAlarm(), type)) { }
rs = "风速"; if (Objects.equals(towerCurrentData.getWindSpeedAlarm(), type)) {
} else if (Objects.equals(towerCurrentData.getHeightAlarm(), type)) { rsList.add("风速");
rs = "高度上限位"; }
} else if (Objects.equals(towerCurrentData.getHeightLowerAlarm(), type)) { if (Objects.equals(towerCurrentData.getHeightAlarm(), type)) {
rs = "高度下限位"; rsList.add("高度上限位");
} else if (Objects.equals(towerCurrentData.getMinRangeAlarm(), type)) { }
rs = "幅度内限位"; if (Objects.equals(towerCurrentData.getHeightLowerAlarm(), type)) {
} else if (Objects.equals(towerCurrentData.getMaxRangeAlarm(), type)) { rsList.add("高度下限位");
rs = "幅度外限位"; }
} else if (Objects.equals(towerCurrentData.getPosAngleAlarm(), type)) { if (Objects.equals(towerCurrentData.getMinRangeAlarm(), type)) {
rs = "顺时针回转限位"; rsList.add("幅度内限位");
} else if (Objects.equals(towerCurrentData.getNegAngleAlarm(), type)) { }
rs = "逆时针回转限位"; if (Objects.equals(towerCurrentData.getMaxRangeAlarm(), type)) {
} else if (Objects.equals(towerCurrentData.getObliguityAlarm(), type)) { rsList.add("幅度外限位");
rs = "倾角"; }
} else if (Objects.equals(towerCurrentData.getObliguityXAlarm(), type)) { if (Objects.equals(towerCurrentData.getPosAngleAlarm(), type)) {
rs = "倾角X"; rsList.add("顺时针回转限位");
} else if (Objects.equals(towerCurrentData.getObliguityYAlarm(), type)) { }
rs = "倾角Y"; if (Objects.equals(towerCurrentData.getNegAngleAlarm(), type)) {
} else { rsList.add("逆时针回转限位");
}
if (Objects.equals(towerCurrentData.getObliguityAlarm(), type)) {
rsList.add("倾角");
}
if (Objects.equals(towerCurrentData.getObliguityXAlarm(), type)) {
rsList.add("倾角X");
}
if (Objects.equals(towerCurrentData.getObliguityYAlarm(), type)) {
rsList.add("倾角Y");
}
if (CollUtil.isEmpty(rsList)) {
return null; return null;
} }
String rs = CollUtil.join(rsList, "");
if (type == 1) { if (type == 1) {
rs += "报警"; rs += "报警";
} else if (type == 2) { } else if (type == 2) {

View File

@ -2,7 +2,9 @@ package com.zhgd.xmgl.modules.bigdevice.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -227,17 +229,17 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
} }
@Override @Override
public Map<String, Object> selectTowerBySn(Map<String, Object> map) { public TowerBySnVo selectTowerBySn(Map<String, Object> map) {
Map<String, Object> data = new HashMap<>();
/*QueryWrapper<Tower> queryWrapper=new QueryWrapper<>();
queryWrapper.lambda().eq(Tower::getDevSn, MapUtils.getString(map,"devSn"));*/
Tower tower = towerMapper.selectTowerBySN(map); Tower tower = towerMapper.selectTowerBySN(map);
data.put("tower", tower);
List<EntityMap> videoList = bigDeviceVideoMapper.selectTowerVideoList(map); List<EntityMap> videoList = bigDeviceVideoMapper.selectTowerVideoList(map);
List<EntityMap> driverList = bigDeviceDriverRecordMapper.selectTowerDriverList(map); List<EntityMap> driverList = bigDeviceDriverRecordMapper.selectTowerDriverList(map);
data.put("videoList", videoList); DriverVO driverVO = towerWorkCycleMapper.getCurrentDriver(map);
data.put("driverList", driverList); TowerBySnVo vo = new TowerBySnVo();
return data; vo.setVideoList(videoList);
vo.setDriverList(driverList);
vo.setTower(tower);
vo.setCurrentDriver(driverVO);
return vo;
} }
@Override @Override
@ -465,17 +467,13 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
@Override @Override
public TowerAndDataInfoVO getRelatedInfo(String devSn) { public TowerAndDataInfoVO getRelatedInfo(String devSn) {
log.info("调用getRelatedInfo方法请求参数{}", devSn); log.info("调用getRelatedInfo方法请求参数{}", devSn);
Tower tower = towerMapper.getTowerAndDriverInfo(devSn); Tower tower = towerMapper.getTowerAndDriverInfo(devSn);
if (tower == null) { if (tower == null) {
log.error("无对应塔吊编号设备!设备编号为:{}", devSn); log.error("无对应塔吊编号设备!设备编号为:{}", devSn);
throw new NullPointerException("无对应塔吊编号设备!!"); throw new NullPointerException("无对应塔吊编号设备!!");
} }
TowerCurrentData newData = redisRepository.getOrSet("towerCurrentData" + tower.getProjectSn() + tower.getDevSn(), (() -> towerCurrentDataMapper.getNewData(devSn))); TowerCurrentData newData = redisRepository.getOrSet("towerCurrentData" + tower.getProjectSn() + tower.getDevSn(), (() -> towerCurrentDataMapper.getNewData(devSn)));
log.info("getRelatedInfo塔吊实时数据信息{}", newData); log.info("getRelatedInfo塔吊实时数据信息{}", newData);
List<DriverVO> driverList = tower.getDriverList().stream().map(driver -> { List<DriverVO> driverList = tower.getDriverList().stream().map(driver -> {
DriverVO driverVO = new DriverVO(); DriverVO driverVO = new DriverVO();
driverVO.setWorkerName(driver.getDriverName()); driverVO.setWorkerName(driver.getDriverName());
@ -488,19 +486,33 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
driverVO.setIdCard(driver.getDriverIdCard()); driverVO.setIdCard(driver.getDriverIdCard());
return driverVO; return driverVO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
DevWorkerVO devWorker = new DevWorkerVO(tower.getDevName(), tower.getDevSn(), tower.getRegistNo(), tower.getFactoryName(), null, driverList); DevWorkerVO devWorker = new DevWorkerVO(tower.getDevName(), tower.getDevSn(), tower.getRegistNo(), tower.getFactoryName(), null, driverList, null);
// double towerHeight = (tower.getTowerHeight() == null ? 0 : tower.getTowerHeight()) + (tower.getReferenceHeight() == null ? 0 : tower.getReferenceHeight()); // double towerHeight = (tower.getTowerHeight() == null ? 0 : tower.getTowerHeight()) + (tower.getReferenceHeight() == null ? 0 : tower.getReferenceHeight());
TowerDataInfoDTO towerDataInfo = new TowerDataInfoDTO().setForearmLength(tower.getForearmLength()).setTowerHeight(tower.getTowerHeight()); TowerDataInfoDTO towerDataInfo = new TowerDataInfoDTO().setForearmLength(tower.getForearmLength()).setTowerHeight(tower.getTowerHeight());
if (newData != null) { if (newData != null) {
towerDataInfo.setLoading(newData.getLoading()).setRanger(newData.getRanger()).setCurrentHeight(newData.getHeight()) towerDataInfo.setLoading(newData.getLoading()).setRanger(newData.getRanger()).setCurrentHeight(newData.getHeight())
.setAngle(newData.getAngle()).setTorqueRatio(newData.getTorqueRatio()).setLoadRatio(newData.getLoadRatio()).setReciveTime(newData.getReciveTime()) .setAngle(newData.getAngle()).setTorqueRatio(newData.getTorqueRatio()).setLoadRatio(newData.getLoadRatio()).setReciveTime(newData.getReciveTime())
.setObliguityX(newData.getObliguityX()).setObliguityY(newData.getObliguityY()).setWindspeed(newData.getWindspeed()).setTorque(newData.getTorque()); .setObliguityX(newData.getObliguityX()).setObliguityY(newData.getObliguityY()).setWindspeed(newData.getWindspeed()).setTorque(newData.getTorque());
} }
setCurrentWorker(devWorker);
return new TowerAndDataInfoVO(towerDataInfo, devWorker); return new TowerAndDataInfoVO(towerDataInfo, devWorker);
} }
private void setCurrentWorker(DevWorkerVO devWorker) {
TowerWorkCycle lwc = towerWorkCycleMapper.selectOne(new LambdaQueryWrapper<TowerWorkCycle>()
.eq(TowerWorkCycle::getDevSn, devWorker.getDevSn())
.orderByDesc(TowerWorkCycle::getAddTime)
.last("limit 1"));
if (lwc != null && StrUtil.isNotBlank(lwc.getDriverIdCard())) {
List<DriverVO> workerList = devWorker.getWorkerList();
if (CollUtil.isNotEmpty(workerList)) {
for (DriverVO driverVO : workerList) {
devWorker.setCurrentWorker(driverVO);
break;
}
}
}
}
} }

View File

@ -1,6 +1,7 @@
package com.zhgd.xmgl.modules.bigdevice.service.impl; package com.zhgd.xmgl.modules.bigdevice.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUnit;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -72,6 +73,11 @@ public class TowerWorkCycleServiceImpl extends ServiceImpl<TowerWorkCycleMapper,
} }
towerWorkCycle.setDevName(tower.getDevName()); towerWorkCycle.setDevName(tower.getDevName());
towerWorkCycle.setAddTime(new Date()); towerWorkCycle.setAddTime(new Date());
Date startTime = towerWorkCycle.getStartTime();
Date endTime = towerWorkCycle.getEndTime();
if (StringUtils.isBlank(towerWorkCycle.getWorkTime()) && startTime != null && endTime != null) {
towerWorkCycle.setWorkTime(String.valueOf(DateUtil.between(startTime, endTime, DateUnit.SECOND)));
}
towerWorkCycle.setProjectSn(tower.getProjectSn()); towerWorkCycle.setProjectSn(tower.getProjectSn());
towerWorkCycleMapper.insert(towerWorkCycle); towerWorkCycleMapper.insert(towerWorkCycle);
} }

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -38,7 +39,6 @@ public class VideoItem implements Serializable {
*/ */
@Excel(name = "视频所属配置id", width = 15) @Excel(name = "视频所属配置id", width = 15)
@ApiModelProperty(value = "视频所属配置id") @ApiModelProperty(value = "视频所属配置id")
private java.lang.Long videoId; private java.lang.Long videoId;
/** /**
* 视频设备名称 * 视频设备名称

View File

@ -202,9 +202,11 @@ public class WorkerAttendanceController {
return Result.success(workerAttendanceService.queryTodayAttendanceTrend(map)); return Result.success(workerAttendanceService.queryTodayAttendanceTrend(map));
} }
@ApiOperation(value = "查询最近一周的出勤人数趋势", notes = "查询最近一周的出勤人数趋势", httpMethod = "GET") @ApiOperation(value = "查询最近一周的出勤人数趋势", notes = "查询最近一周的出勤人数趋势(时间不传就默认查一周的)", httpMethod = "GET")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目唯一标识", dataType = "String", paramType = "query", required = true), @ApiImplicitParam(name = "projectSn", value = "项目唯一标识", dataType = "String", paramType = "query", required = true),
@ApiImplicitParam(name = "queryStartTime", value = "查询开始时间格式2023-05-22", paramType = "query", required = true, dataType = "String"),
@ApiImplicitParam(name = "queryEndTime", value = "查询结束时间格式2023-05-22", paramType = "query", required = true, dataType = "String"),
}) })
@GetMapping(value = "/queryAttendanceTrendOfTheLastWeek") @GetMapping(value = "/queryAttendanceTrendOfTheLastWeek")
public Result<List<NumberTimeTableVo>> queryAttendanceTrendOfTheLastWeek(@RequestParam Map<String, Object> map) { public Result<List<NumberTimeTableVo>> queryAttendanceTrendOfTheLastWeek(@RequestParam Map<String, Object> map) {

View File

@ -772,20 +772,24 @@
</select> </select>
<select id="queryAttendanceTrendOfTheLastWeek" resultType="com.zhgd.xmgl.entity.vo.NumberTimeTableVo"> <select id="queryAttendanceTrendOfTheLastWeek" resultType="com.zhgd.xmgl.entity.vo.NumberTimeTableVo">
SELECT count(t1.daytime) num, t1.daytime time SELECT count(t1.daytime) num, DATE_FORMAT(t1.daytime, '%m-%d') time
FROM ( FROM (
SELECT wa.create_time, SELECT wa.create_time,
DATE_FORMAT(wa.create_time, '%m-%d') daytime, DATE_FORMAT(wa.create_time,'%Y-%m-%d') daytime,
wa.person_sn wa.person_sn
FROM worker_attendance wa FROM worker_attendance wa
JOIN worker_info wi ON wi.person_sn = wa.person_sn JOIN worker_info wi ON wi.person_sn = wa.person_sn
WHERE DATE_FORMAT(wa.create_time, '%Y-%m-%d') >= #{beforeSevenDay} WHERE 1 = 1
and DATE_FORMAT(wa.create_time, '%Y-%m-%d') <![CDATA[<=]]> #{today} <if test="queryStartTime != null and queryStartTime != ''">
and DATE_FORMAT(wa.create_time, '%Y-%m-%d') >= #{queryStartTime}
</if>
<if test="queryEndTime != null and queryEndTime != ''">
and DATE_FORMAT(wa.create_time, '%Y-%m-%d') <![CDATA[<=]]> #{queryEndTime}
</if>
and wa.project_sn = #{projectSn} and wa.project_sn = #{projectSn}
AND wi.inService_type = 1 AND wi.inService_type = 1
GROUP BY DATE_FORMAT( GROUP BY daytime, wa.person_sn
wa.create_time, ORDER BY daytime
'%Y-%m-%d'), wa.person_sn
) t1 ) t1
GROUP BY t1.daytime GROUP BY t1.daytime
</select> </select>

View File

@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.api.vo.Result; import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.async.AsyncSendAttendance; import com.zhgd.xmgl.async.AsyncSendAttendance;
import com.zhgd.xmgl.entity.vo.AttendanceOfEachCompanyVo; import com.zhgd.xmgl.entity.vo.AttendanceOfEachCompanyVo;
@ -1027,16 +1028,29 @@ status 状态码 String 1表示成功其余表示失败
@Override @Override
public List<NumberTimeTableVo> queryAttendanceTrendOfTheLastWeek(Map<String, Object> map) { public List<NumberTimeTableVo> queryAttendanceTrendOfTheLastWeek(Map<String, Object> map) {
Date now = new Date(); if (StringUtils.isBlank(MapUtils.getString(map, "queryStartTime")) || StringUtils.isBlank(MapUtils.getString(map, "queryEndTime"))) {
String beforeSevenDay = DateUtil.format(DateUtil.offsetDay(now, -7), "yyyy-MM-dd"); throw new OpenAlertException("queryStartTime和queryEndTime都不能为空");
String today = DateUtil.format(now, "yyyy-MM-dd"); }
map.put("beforeSevenDay", beforeSevenDay);
map.put("today", today);
List<NumberTimeTableVo> attendances = workerAttendanceMapper.queryAttendanceTrendOfTheLastWeek(map); List<NumberTimeTableVo> attendances = workerAttendanceMapper.queryAttendanceTrendOfTheLastWeek(map);
completeData(attendances); completeData(attendances, map);
return attendances; return attendances;
} }
private void completeData(List<NumberTimeTableVo> attendances, Map<String, Object> map) {
Map<String, NumberTimeTableVo> timeMap = attendances.stream().collect(Collectors.toMap(NumberTimeTableVo::getTime, o -> o));
attendances.clear();
List<String> daysBetweenLastWeekWithoutYear = DateUtil.getBetweenDays(MapUtils.getString(map, "queryStartTime"), MapUtils.getString(map, "queryEndTime"));
for (String day : daysBetweenLastWeekWithoutYear) {
NumberTimeTableVo vo = timeMap.get(day);
if (vo == null) {
vo = new NumberTimeTableVo();
vo.setNum(0);
vo.setTime(day);
}
attendances.add(vo);
}
}
@Override @Override
public AttendanceOfEachCompanyVo queryAttendanceOfEachCompany(Map<String, Object> map) { public AttendanceOfEachCompanyVo queryAttendanceOfEachCompany(Map<String, Object> map) {
//统计各企业出勤人数 //统计各企业出勤人数
@ -1048,21 +1062,6 @@ status 状态码 String 1表示成功其余表示失败
return vo; return vo;
} }
private void completeData(List<NumberTimeTableVo> attendances) {
Map<String, NumberTimeTableVo> timeMap = attendances.stream().collect(Collectors.toMap(NumberTimeTableVo::getTime, o -> o));
attendances.clear();
List<String> daysBetweenLastWeekWithoutYear = DateUtil.getDaysBetweenLastWeekWithoutYear();
for (String day : daysBetweenLastWeekWithoutYear) {
NumberTimeTableVo vo = timeMap.get(day);
if (vo == null) {
vo = new NumberTimeTableVo();
vo.setNum(null);
vo.setTime(day);
}
attendances.add(vo);
}
}
public WorkerInfo getWorkerInfoByImage(String personImage, String projectSn) { public WorkerInfo getWorkerInfoByImage(String personImage, String projectSn) {
WorkerInfo info = null; WorkerInfo info = null;
File file = null; File file = null;

View File

@ -483,6 +483,24 @@ public class DateUtil extends cn.hutool.core.date.DateUtil {
return rtList; return rtList;
} }
/**
* 查询指定天数内所有天数列表, 返回[07-30, 07-31]
*
* @param queryStartTime 2023-07-31
* @param queryEndTime 2023-07-31
* @return
*/
public static List<String> getBetweenDays(String queryStartTime, String queryEndTime) {
ArrayList<String> rtList = new ArrayList<>();
DateTime beginDate = DateUtil.parseDate(queryStartTime);
DateTime endDate = DateUtil.parseDate(queryEndTime);
long offset = cn.hutool.core.date.DateUtil.betweenDay(beginDate, endDate, true);
for (int i = 0; i < offset + 1; i++) {
rtList.add(cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetDay(beginDate, i), "MM-dd"));
}
return rtList;
}
/** /**
* 查询一个周前内所有天数06-10到06-17 * 查询一个周前内所有天数06-10到06-17
* *
@ -516,6 +534,6 @@ public class DateUtil extends cn.hutool.core.date.DateUtil {
} }
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(getHoursListLastDay()); System.out.println(getBetweenDays("2023-07-30", "2023-07-31"));
} }
} }