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({
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = true, 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 = "queryEndTime", 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", paramType = "query", required = true, dataType = "String"),
})
@PostMapping(value = "/queryAlarmsDistinguishedNumberByAlarmType")
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.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.dto.LifterDto;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.LifterAlarmAndDevCountVo;
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.entity.vo.*;
import com.zhgd.xmgl.modules.bigdevice.service.ILifterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@ -118,7 +114,7 @@ public class LifterController {
@ApiOperation(value = "通过升降机设备唯一标识查询信息", notes = "通过升降机设备唯一标识查询信息", httpMethod = "POST")
@ApiImplicitParam(name = "devSn", value = "升降机设备编号", paramType = "query", required = true, dataType = "Integer")
@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));
}

View File

@ -5,10 +5,7 @@ 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.bigdevice.entity.Tower;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TowerAndDataInfoVO;
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.entity.vo.*;
import com.zhgd.xmgl.modules.bigdevice.service.ITowerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@ -143,7 +140,7 @@ public class TowerController {
@ApiOperation(value = "通过塔机设备唯一标识查询信息", notes = "通过塔机设备唯一标识查询信息", httpMethod = "POST")
@ApiImplicitParam(name = "devSn", value = "塔机设备编号", paramType = "query", required = true, dataType = "String")
@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));
}

View File

@ -38,4 +38,6 @@ public class DevWorkerVO {
@ApiModelProperty(value = "驾驶员列表")
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;
@ApiModelProperty(value = "装载次数")
private Integer loadingNum;
@ApiModelProperty(value = "装载工效")
@ApiModelProperty(value = "装载工效(kg/min)")
private Integer loadingErgonomic;
@ApiModelProperty(value = "装载重量")
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.zhgd.jeecg.common.mybatis.EntityMap;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.DriverVO;
import com.zhgd.xmgl.modules.bigdevice.entity.vo.TodayOperatingStatusStatisticsVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -25,4 +26,6 @@ public interface LifterWorkCycleMapper extends BaseMapper<LifterWorkCycle> {
List<EntityMap> selectLifterWorkCycleList(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.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.vo.DriverVO;
import org.apache.ibatis.annotations.Mapper;
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>> selectAllProjectTowerWorkCycletList(Map<String, Object> map);
/**
* 获取当前司机信息
*
* @param map
* @return
*/
DriverVO getCurrentDriver(Map<String, Object> map);
}

View File

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

View File

@ -4,11 +4,11 @@
<select id="selectLifterAlarmCurrentDayCount" resultType="java.lang.Integer" parameterType="java.util.Map">
SELECT COUNT(1) totalAlarm
from lifter_alarm 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 b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
where w1.add_time &gt;= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
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 b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
where w1.add_time &gt;= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
<if test="companyType == '1'.toString()">
and f.headquarters_sn = #{sn}
</if>
@ -36,25 +36,25 @@
where w1.project_sn = #{projectSn}
</select>
<select id="selectAllDevCount" resultType="java.util.Map">
SELECT project_sn projectSn,
COUNT(1) devNum,
SELECT project_sn projectSn,
COUNT(1) devNum,
SUM((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(real_time)) / 60) &lt;= 30 then 1
else 0 end)) devOnline
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(real_time)) / 60) &lt;= 30 then 1
else 0 end)) devOnline
FROM lifter
GROUP BY project_sn
</select>
<select id="selectLifterDevCount" resultType="java.util.Map" parameterType="map">
SELECT COUNT(1) devNum,
IFNULL(SUM((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(real_time)) / 60) &lt;= 30 then 1
else 0 end)), 0)
devOnline
IFNULL(SUM((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(real_time)) / 60) &lt;= 30 then 1
else 0 end)), 0)
devOnline
FROM lifter de
INNER JOIN project a ON de.project_sn = a.project_sn
INNER JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
INNER JOIN project a ON de.project_sn = a.project_sn
INNER JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
<where>
<if test="companyType == '1'.toString()">
and f.headquarters_sn = #{sn}
@ -76,11 +76,11 @@
<select id="selectLifterSevenDayAlarmList" resultType="java.util.Map" parameterType="map">
SELECT DATE_FORMAT(w1.add_time, "%Y-%m-%d") titleName, count(1) num
from lifter_alarm 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 b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
where w1.add_time &gt;= CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -6 DAY), '%Y-%m-%d'), ' 00:00:00')
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 b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
where w1.add_time &gt;= CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -6 DAY), '%Y-%m-%d'), ' 00:00:00')
<if test="companyType == '1'.toString()">
and f.headquarters_sn = #{sn}
</if>
@ -110,25 +110,25 @@
</select>
<select id="selectLifterById" resultType="com.zhgd.xmgl.modules.bigdevice.entity.Lifter">
SELECT w1.*,
en.enterprise_name general_contractors_name,
IFNULL(((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(real_time)) / 60) &lt;= 30 then 1
else 0 end)), 0) devOnline
en.enterprise_name general_contractors_name,
IFNULL(((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(real_time)) / 60) &lt;= 30 then 1
else 0 end)), 0) devOnline
from lifter w1
LEFT JOIN enterprise_info en ON w1.general_contractors_id = en.id
LEFT JOIN enterprise_info en ON w1.general_contractors_id = en.id
where w1.id = #{id}
</select>
<select id="selectLifterCountBySn" resultType="java.lang.Integer">
SELECT IFNULL(SUM(num), 0)
from (
SELECT COUNT(1) num
FROM lifter
WHERE dev_sn = #{devSn}
UNION all
SELECT COUNT(1) num
FROM lifter
WHERE other_dev_sn = #{devSn}
) tp
SELECT COUNT(1) num
FROM lifter
WHERE dev_sn = #{devSn}
UNION all
SELECT COUNT(1) num
FROM lifter
WHERE other_dev_sn = #{devSn}
) tp
</select>
<select id="getLifterDevCount"
@ -171,7 +171,7 @@
<select id="getLifterAndDriverInfo" resultMap="lifterAndDriverInfo">
select l.id,
l.dev_name,
l.dev_name,
l.project_sn,
l.dev_sn,
l.regist_no,
@ -182,29 +182,21 @@
bddr.id bId,
wi.worker_name,
wi.phone_number,
(SELECT
certificate_number
FROM
`worker_certificate`
WHERE
worker_id = wi.id
(SELECT certificate_number
FROM `worker_certificate`
WHERE worker_id = wi.id
AND certificate_type = 108
ORDER BY
effect_time DESC
ORDER BY effect_time DESC
LIMIT 1) special_certificate_number,
wi.field_acquisition_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,
(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 driverIdCard
from lifter l
left join big_device_driver_record bddr on l.dev_sn = bddr.dev_sn and bddr.type = 2

View File

@ -1,45 +1,74 @@
<?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">
<mapper namespace="com.zhgd.xmgl.modules.bigdevice.mapper.LifterWorkCycleMapper">
<select id="queryLifterWorkCyclePageList" resultType="com.zhgd.jeecg.common.mybatis.EntityMap">
SELECT a.*,b.dev_name
FROM lifter_work_cycle a INNER JOIN lifter b ON a.dev_sn=b.dev_sn
WHERE a.project_sn=#{param.projectSn}
<if test="param.devSn!=null and param.devSn!=''">
and a.dev_sn=#{param.devSn}
SELECT a.*, b.dev_name
FROM lifter_work_cycle a
INNER JOIN lifter b ON a.dev_sn = b.dev_sn
WHERE a.project_sn = #{param.projectSn}
<if test="param.devSn != null and param.devSn != ''">
and a.dev_sn = #{param.devSn}
</if>
<if test="param.startTime!=null and param.startTime!=''">
AND a.start_time &gt;=CONCAT(DATE_FORMAT(#{param.startTime},'%Y-%m-%d'),' 00:00:00')
<if test="param.startTime != null and param.startTime != ''">
AND a.start_time &gt;= CONCAT(DATE_FORMAT(#{param.startTime}, '%Y-%m-%d'), ' 00:00:00')
</if>
<if test="param.endTime!=null and param.endTime!=''">
AND a.end_time &lt;=CONCAT(DATE_FORMAT(#{param.endTime},'%Y-%m-%d'),' 23:59:59')
<if test="param.endTime != null and param.endTime != ''">
AND a.end_time &lt;= CONCAT(DATE_FORMAT(#{param.endTime}, '%Y-%m-%d'), ' 23:59:59')
</if>
</select>
<select id="selectLifterWorkCycleList" resultType="com.zhgd.jeecg.common.mybatis.EntityMap" parameterType="map">
SELECT a.*,b.dev_name
FROM lifter_work_cycle a INNER JOIN lifter b ON a.dev_sn=b.dev_sn
WHERE a.dev_sn=#{devSn}
SELECT a.*, b.dev_name
FROM lifter_work_cycle a
INNER JOIN lifter b ON a.dev_sn = b.dev_sn
WHERE a.dev_sn = #{devSn}
<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')
</if>
<if test="endTime != null and endTime != ''">
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>
order by a.add_time desc
</select>
<select id="queryTodayWorkCycleStatusStatistics"
resultType="com.zhgd.xmgl.modules.bigdevice.entity.vo.TodayOperatingStatusStatisticsVo">
SELECT
ifnull(sum(ifnull(lw.work_time,0)),0) as workTime,
SELECT t.*, ROUND(avg(t.loadingWeight / t.workTime), 4) loadingErgonomic
from (
SELECT ifnull(round(sum(ifnull(lw.work_time / 60, 0)), 2), 0) as workTime,
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
<where>
lw.project_sn = #{projectSn}
and lw.dev_sn = #{devSn}
and lw.add_time >= curdate()
</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>
</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">
<mapper namespace="com.zhgd.xmgl.modules.bigdevice.mapper.TowerMapper">
<select id="selectTowerAndLifterStatisticsCount" resultType="java.util.Map" parameterType="java.util.Map">
SELECT
IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) totalLifterNum,
SELECT IFNULL(SUM(IFNULL(d.totalDev, 0)), 0) totalLifterNum,
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(t.totalDev, 0)), 0) totalTowerNum,
@ -248,10 +247,10 @@
) tp
</select>
<select id="selectTowerCurrentCount" resultType="java.util.Map">
SELECT de.weight_set weightSet,
de.dev_sn devSn,
de.dev_name devName,
IFNULL(((case
SELECT de.weight_set weightSet,
de.dev_sn devSn,
de.dev_name devName,
IFNULL(((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(de.real_time)) / 60) &lt;= 30 then 1
else 0 end)), 0) devOnline,
IFNULL(tp.cycleNum, 0) cycleNum,
@ -262,7 +261,7 @@
FROM tower de
LEFT JOIN (select a.dev_sn,
count(1) cycleNum,
IFNULL(SUM(TIMESTAMPDIFF(MINUTE,a.start_time,a.end_time)),0) runMinuteTime,
IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0) runMinuteTime,
IFNULL(SUM(loading), 0) totalLoading
FROM tower_work_cycle a
WHERE a.project_sn = #{projectSn}
@ -275,13 +274,13 @@
AND add_time &gt;= CONCAT(DATE_FORMAT(NOW(), '%Y-%m-%d'), ' 00:00:00')
group by dev_sn
) tp2 ON de.dev_sn = tp2.dev_sn
LEFT JOIN (SELECT dev_sn,
IFNULL(SUM((case when alarm_type = 1 then 1 else 0 end)), 0) alarmNum,
IFNULL(SUM((case when alarm_type = 2 then 1 else 0 end)), 0) warningNum
from tower_alarm
WHERE project_sn = #{projectSn}
AND add_time &gt;= CONCAT(DATE_FORMAT(NOW(), '%Y-%m-%d'), ' 00:00:00')
group by dev_sn
LEFT JOIN (SELECT dev_sn,
IFNULL(SUM((case when alarm_type = 1 then 1 else 0 end)), 0) alarmNum,
IFNULL(SUM((case when alarm_type = 2 then 1 else 0 end)), 0) warningNum
from tower_alarm
WHERE project_sn = #{projectSn}
AND add_time &gt;= CONCAT(DATE_FORMAT(NOW(), '%Y-%m-%d'), ' 00:00:00')
group by dev_sn
) tp3 ON de.dev_sn = tp3.dev_sn
where de.project_sn = #{projectSn}
</select>
@ -355,36 +354,33 @@
</select>
<select id="selectProjectTowerTotalCountList" resultType="java.util.Map" parameterType="map">
SELECT COUNT(1) devNum
,
IFNULL(SUM((case when w1.anticollision = 1 then 1 else 0 end)), 0) collideDevNum
,
IFNULL(SUM((case
, IFNULL(SUM((case when w1.anticollision = 1 then 1 else 0 end)), 0) collideDevNum
, IFNULL(SUM((case
when round((UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(w1.real_time)) / 60) &lt;= 30 then 1
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
w1.anticollision = 1 then 1
else 0 end)), 0) collideDevOnline
<if test="companyType == '1'.toString()">
,f.company_name name
,f.company_sn sn
, f.company_name name
, f.company_sn sn
</if>
<if test="companyType == '2'.toString()">
,b.company_name name
,b.company_sn sn
, b.company_name name
, b.company_sn sn
</if>
<if test="companyType == '3'.toString()">
,cp.company_name name
,cp.company_sn sn
, cp.company_name name
, cp.company_sn sn
</if>
<if test="companyType == '4'.toString()">
,a.project_name name
,a.project_sn sn
, a.project_name name
, a.project_sn sn
</if>
<if test="companyType == '5'.toString()">
,a.project_name name
,a.project_sn sn
, a.project_name name
, a.project_sn sn
</if>
from tower w1
INNER JOIN project a ON w1.project_sn = a.project_sn
@ -482,29 +478,28 @@
</select>
<select id="selectProjectTowerCountList" resultType="java.util.Map">
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
else 0 end)), 0) devOnlineNum
<if test="companyType == '1'.toString()">
,f.company_name name
,f.company_sn sn
, f.company_name name
, f.company_sn sn
</if>
<if test="companyType == '2'.toString()">
,b.company_name name
,b.company_sn sn
, b.company_name name
, b.company_sn sn
</if>
<if test="companyType == '3'.toString()">
,cp.company_name name
,cp.company_sn sn
, cp.company_name name
, cp.company_sn sn
</if>
<if test="companyType == '4'.toString()">
,a.project_name name
,a.project_sn sn
, a.project_name name
, a.project_sn sn
</if>
<if test="companyType == '5'.toString()">
,a.project_name name
,a.project_sn sn
, a.project_name name
, a.project_sn sn
</if>
from tower w1
INNER JOIN project a ON w1.project_sn = a.project_sn
@ -535,24 +530,24 @@
<select id="selectProjectTowerVideoCountList" resultType="java.util.Map">
SELECT COUNT(1) videoNum
<if test="companyType == '1'.toString()">
,f.company_name name
,f.company_sn sn
, f.company_name name
, f.company_sn sn
</if>
<if test="companyType == '2'.toString()">
,b.company_name name
,b.company_sn sn
, b.company_name name
, b.company_sn sn
</if>
<if test="companyType == '3'.toString()">
,cp.company_name name
,cp.company_sn sn
, cp.company_name name
, cp.company_sn sn
</if>
<if test="companyType == '4'.toString()">
,a.project_name name
,a.project_sn sn
, a.project_name name
, a.project_sn sn
</if>
<if test="companyType == '5'.toString()">
,a.project_name name
,a.project_sn sn
, a.project_name name
, a.project_sn sn
</if>
FROM video_item t1
INNER JOIN project_video_config t2 ON t2.id = t1.video_id
@ -696,22 +691,20 @@
bddr.id bId,
wi.worker_name,
wi.phone_number,
(SELECT
certificate_number
FROM
`worker_certificate`
WHERE
worker_id = wi.id
(SELECT certificate_number
FROM `worker_certificate`
WHERE worker_id = wi.id
AND certificate_type = 98
ORDER BY
effect_time DESC
ORDER BY effect_time DESC
LIMIT 1) special_certificate_number,
wi.field_acquisition_url,
wi.sex,
TIMESTAMPDIFF(YEAR, wi.birthday, CURDATE()) as age,
(select IFNULL(a.work_time, 0) continuous_working_time
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
from tower t
left join big_device_driver_record bddr on t.dev_sn = bddr.dev_sn and bddr.type = 1

View File

@ -1,196 +1,220 @@
<?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">
<mapper namespace="com.zhgd.xmgl.modules.bigdevice.mapper.TowerWorkCycleMapper">
<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
WHERE a.project_sn=#{param.projectSn}
WHERE a.project_sn = #{param.projectSn}
<if test="param.devSn != null and param.devSn != ''">
and a.dev_sn=#{param.devSn}
and a.dev_sn = #{param.devSn}
</if>
<if test="param.startTime != null and param.startTime != ''">
AND a.start_time &gt;=CONCAT(DATE_FORMAT(#{param.startTime},'%Y-%m-%d'),' 00:00:00')
AND a.start_time &gt;= CONCAT(DATE_FORMAT(#{param.startTime}, '%Y-%m-%d'), ' 00:00:00')
</if>
<if test="param.endTime != null and param.endTime != ''">
AND a.end_time &lt;=CONCAT(DATE_FORMAT(#{param.endTime},'%Y-%m-%d'),' 23:59:59')
AND a.end_time &lt;= CONCAT(DATE_FORMAT(#{param.endTime}, '%Y-%m-%d'), ' 23:59:59')
</if>
order by a.add_time desc
</select>
<select id="selectTowerWorkCycleList" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkCycle"
parameterType="map">
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
WHERE a.dev_sn=#{devSn}
WHERE a.dev_sn = #{devSn}
<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')
</if>
<if test="endTime != null and endTime != ''">
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>
order by a.add_time
</select>
<select id="selectTowerWorkCycleCount" resultType="java.util.Map">
SELECT a.dev_sn devSn,count(1) cycleNum,
IFNULL(SUM(TIMESTAMPDIFF(MINUTE,a.start_time,a.end_time)),0) timeNum
SELECT a.dev_sn devSn,
count(1) cycleNum,
IFNULL(SUM(TIMESTAMPDIFF(MINUTE, a.start_time, a.end_time)), 0) timeNum
FROM tower_work_cycle a
WHERE a.project_sn=#{projectSn}
<if test="startTime!=null and startTime!=''">
AND a.start_time &gt;=CONCAT(DATE_FORMAT(#{startTime},'%Y-%m-%d'),' 00:00:00')
WHERE a.project_sn = #{projectSn}
<if test="startTime != null and startTime != ''">
AND a.start_time &gt;= CONCAT(DATE_FORMAT(#{startTime}, '%Y-%m-%d'), ' 00:00:00')
</if>
<if test="endTime!=null and endTime!=''">
AND a.end_time &lt;=CONCAT(DATE_FORMAT(#{endTime},'%Y-%m-%d'),' 23:59:59')
<if test="endTime != null and endTime != ''">
AND a.end_time &lt;= CONCAT(DATE_FORMAT(#{endTime}, '%Y-%m-%d'), ' 23:59:59')
</if>
group by a.dev_sn
</select>
<select id="selectExcelTowerWorkCycle" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkCycle">
SELECT a.*,(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 '预警'
SELECT a.*,
(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 '预警'
else '正常' end) work_max_range_alarm_name,
(case when a.work_min_range_alarm=1 then '报警'
when a.work_min_range_alarm=2 then '预警'
(case
when a.work_min_range_alarm = 1 then '报警'
when a.work_min_range_alarm = 2 then '预警'
else '正常' end) work_min_range_alarm_name,
(case when a.work_height_alarm=1 then '报警'
when a.work_height_alarm=2 then '预警'
(case
when a.work_height_alarm = 1 then '报警'
when a.work_height_alarm = 2 then '预警'
else '正常' end) work_height_alarm_name,
(case when a.work_height_lower_alarm=1 then '报警'
when a.work_height_lower_alarm=2 then '预警'
(case
when a.work_height_lower_alarm = 1 then '报警'
when a.work_height_lower_alarm = 2 then '预警'
else '正常' end) work_height_lower_alarm_name,
(case when a.work_pos_angle_alarm=1 then '报警'
when a.work_pos_angle_alarm=2 then '预警'
(case
when a.work_pos_angle_alarm = 1 then '报警'
when a.work_pos_angle_alarm = 2 then '预警'
else '正常' end) work_pos_angle_alarm_name,
(case when a.work_neg_angle_alarm=1 then '报警'
when a.work_neg_angle_alarm=2 then '预警'
(case
when a.work_neg_angle_alarm = 1 then '报警'
when a.work_neg_angle_alarm = 2 then '预警'
else '正常' end) work_neg_angle_alarm_name,
(case when a.work_moment_alarm=1 then '报警'
when a.work_moment_alarm=2 then '预警'
(case
when a.work_moment_alarm = 1 then '报警'
when a.work_moment_alarm = 2 then '预警'
else '正常' end) work_moment_alarm_name,
(case when a.work_obliguity_alarm=1 then '报警'
when a.work_obliguity_alarm=2 then '预警'
(case
when a.work_obliguity_alarm = 1 then '报警'
when a.work_obliguity_alarm = 2 then '预警'
else '正常' end) work_obliguity_alarm_name,
(case when a.work_environment_alarm=1 then '报警'
when a.work_environment_alarm=2 then '预警'
(case
when a.work_environment_alarm = 1 then '报警'
when a.work_environment_alarm = 2 then '预警'
else '正常' end) work_environment_alarm_name,
(case when a.work_multi_alarm=1 then '报警'
when a.work_multi_alarm=2 then '预警'
(case
when a.work_multi_alarm = 1 then '报警'
when a.work_multi_alarm = 2 then '预警'
else '正常' end) work_multi_alarm_name,
(case when a.work_moment_pre_alarm=1 then '报警'
when a.work_moment_pre_alarm=2 then '预警'
(case
when a.work_moment_pre_alarm = 1 then '报警'
when a.work_moment_pre_alarm = 2 then '预警'
else '正常' end) work_moment_pre_alarm_name,
(case when a.work_wind_speed_alarm=1 then '报警'
when a.work_wind_speed_alarm=2 then '预警'
(case
when a.work_wind_speed_alarm = 1 then '报警'
when a.work_wind_speed_alarm = 2 then '预警'
else '正常' end) work_wind_speed_alarm_name
from tower_work_cycle a
where a.project_sn=#{projectSn}
<if test="devSn!=null and devSn!=''">
and a.dev_sn=#{devSn}
where a.project_sn = #{projectSn}
<if test="devSn != null and devSn != ''">
and a.dev_sn = #{devSn}
</if>
<if test="alarmType!=null and alarmType!=''">
and a.alarm_type=#{alarmType}
<if test="alarmType != null and alarmType != ''">
and a.alarm_type = #{alarmType}
</if>
<if test="startTime!=null and startTime!=''">
AND a.start_time &gt;=#{startTime}
<if test="startTime != null and startTime != ''">
AND a.start_time &gt;= #{startTime}
</if>
<if test="endTime!=null and endTime!=''">
AND a.end_time &lt;=#{endTime}
<if test="endTime != null and endTime != ''">
AND a.end_time &lt;= #{endTime}
</if>
order by a.add_time desc
</select>
<select id="selectTowerLoadAndMileageCount" resultType="java.util.Map">
SELECT a.dev_sn devSn,count(1) cycleNum,
IFNULL(SUM(loading),0) totalLoading,
IFNULL(SUM((ABS(sling_start_height-sling_end_height)+max_range)),0) totalWorkMileage
SELECT a.dev_sn devSn,
count(1) cycleNum,
IFNULL(SUM(loading), 0) totalLoading,
IFNULL(SUM((ABS(sling_start_height - sling_end_height) + max_range)), 0) totalWorkMileage
FROM tower_work_cycle a
WHERE a.project_sn=#{projectSn}
<if test="startTime!=null and startTime!=''">
AND a.start_time &gt;=CONCAT(DATE_FORMAT(#{startTime},'%Y-%m-%d'),' 00:00:00')
WHERE a.project_sn = #{projectSn}
<if test="startTime != null and startTime != ''">
AND a.start_time &gt;= CONCAT(DATE_FORMAT(#{startTime}, '%Y-%m-%d'), ' 00:00:00')
</if>
<if test="endTime!=null and endTime!=''">
AND a.end_time &lt;=CONCAT(DATE_FORMAT(#{endTime},'%Y-%m-%d'),' 23:59:59')
<if test="endTime != null and endTime != ''">
AND a.end_time &lt;= CONCAT(DATE_FORMAT(#{endTime}, '%Y-%m-%d'), ' 23:59:59')
</if>
group by a.dev_sn
</select>
<select id="selectTowerRunDataCount" resultType="java.util.Map">
select count(1) cycleNum,
IFNULL(SUM(loading),0) totalLoading,
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
IFNULL(SUM(loading), 0) totalLoading,
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
FROM tower_work_cycle a
WHERE a.project_sn=#{projectSn}
<if test="devSn!=null and devSn!=''">
and a.dev_sn=#{devSn}
WHERE a.project_sn = #{projectSn}
<if test="devSn != null and devSn != ''">
and a.dev_sn = #{devSn}
</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 id="selectYesterdayTowerRunDataCount" resultType="java.util.Map">
select count(1) cycleNum,
IFNULL(SUM(loading),0) totalLoading,
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
IFNULL(SUM(loading), 0) totalLoading,
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
FROM tower_work_cycle a
WHERE a.project_sn=#{projectSn}
<if test="devSn!=null and devSn!=''">
and a.dev_sn=#{devSn}
WHERE a.project_sn = #{projectSn}
<if test="devSn != null and devSn != ''">
and a.dev_sn = #{devSn}
</if>
and a.start_time>=CONCAT(DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 DAY),'%Y-%m-%d'),' 00:00:00')
and a.start_time &lt;=CONCAT(DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 DAY),'%Y-%m-%d'),' 23:59:59')
and a.start_time >= CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y-%m-%d'), ' 00:00:00')
and a.start_time &lt;= CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y-%m-%d'), ' 23:59:59')
</select>
<select id="selectTowerCycleTotalCount" resultType="java.util.Map" parameterType="map">
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 (
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 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 b ON cp.parent_id=b.company_id
Left JOIN company f ON b.parent_id=f.company_id
where w1.start_time >=CONCAT(DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -1 DAY),'%Y-%m-%d'),' 00:00:00')
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
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 b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
where w1.start_time >= CONCAT(DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), '%Y-%m-%d'), ' 00:00:00')
<if test="companyType == '1'.toString()">
and f.headquarters_sn=#{sn}
and f.headquarters_sn = #{sn}
</if>
<if test="companyType == '2'.toString()">
and f.company_sn=#{sn}
and f.company_sn = #{sn}
</if>
<if test="companyType == '3'.toString()">
and b.company_sn=#{sn}
and b.company_sn = #{sn}
</if>
<if test="companyType == '4'.toString()">
and w1.project_sn=#{sn}
and w1.project_sn = #{sn}
</if>
<if test="companyType == '5'.toString()">
and cp.company_sn=#{sn}
and cp.company_sn = #{sn}
</if>
) tp
</select>
<select id="selectWeekTowerCycleList" resultType="java.util.Map" parameterType="map">
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
INNER JOIN company cp ON a.company_sn=cp.company_sn
INNER JOIN company b ON cp.parent_id=b.company_id
Left JOIN company f ON b.parent_id=f.company_id
where w1.start_time >=CONCAT(DATE_ADD(CURDATE(),INTERVAL -weekday(CURDATE()) day),' 00:00:00')
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
INNER JOIN company cp ON a.company_sn = cp.company_sn
INNER JOIN company b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
where w1.start_time >= CONCAT(DATE_ADD(CURDATE(), INTERVAL -weekday(CURDATE()) day), ' 00:00:00')
<if test="companyType == '1'.toString()">
and f.headquarters_sn=#{sn}
and f.headquarters_sn = #{sn}
</if>
<if test="companyType == '2'.toString()">
and f.company_sn=#{sn}
and f.company_sn = #{sn}
</if>
<if test="companyType == '3'.toString()">
and b.company_sn=#{sn}
and b.company_sn = #{sn}
</if>
<if test="companyType == '4'.toString()">
and w1.project_sn=#{sn}
and w1.project_sn = #{sn}
</if>
<if test="companyType == '5'.toString()">
and cp.company_sn=#{sn}
and cp.company_sn = #{sn}
</if>
group by titleName
order by titleName
@ -198,34 +222,41 @@
<select id="selectProjectTowerWorkCycleCountList" resultType="java.util.Map">
SELECT count(1) cycleNum
<if test="companyType == '1'.toString()">
,f.company_name name,f.company_sn sn
, f.company_name name
, f.company_sn sn
</if>
<if test="companyType == '2'.toString()">
,b.company_name name,b.company_sn sn
, b.company_name name
, b.company_sn sn
</if>
<if test="companyType == '3'.toString()">
,cp.company_name name,cp.company_sn sn
, cp.company_name name
, cp.company_sn sn
</if>
<if test="companyType == '4'.toString()">
,a.project_name name,a.project_sn sn
, a.project_name name
, a.project_sn sn
</if>
<if test="companyType == '5'.toString()">
,a.project_name name,a.project_sn sn
, a.project_name name
, a.project_sn sn
</if>
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 b ON cp.parent_id=b.company_id
Left JOIN company f ON b.parent_id=f.company_id
where w1.start_time >=CONCAT(DATE_FORMAT(now(),'%Y-%m-%d'),' 00:00:00')
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 b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
where w1.start_time >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
<if test="companyType == '1'.toString()">
and f.headquarters_sn=#{sn}
and f.headquarters_sn = #{sn}
GROUP BY f.company_id
</if>
<if test="companyType == '2'.toString()">
and f.company_sn=#{sn}
and f.company_sn = #{sn}
GROUP BY b.company_id
</if>
<if test="companyType == '3'.toString()">
and b.company_sn=#{sn}
GROUP BY cp.company_id
</if>
@ -241,28 +272,57 @@
</select>
<select id="selectAllProjectTowerWorkCycletList" resultType="java.util.Map">
SELECT count(1) cycleNum
,a.project_name name,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 b ON cp.parent_id=b.company_id
Left JOIN company f ON b.parent_id=f.company_id
where w1.start_time >=CONCAT(DATE_FORMAT(now(),'%Y-%m-%d'),' 00:00:00')
, a.project_name name
, 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 b ON cp.parent_id = b.company_id
Left JOIN company f ON b.parent_id = f.company_id
where w1.start_time >= CONCAT(DATE_FORMAT(now(), '%Y-%m-%d'), ' 00:00:00')
<if test="companyType == '1'.toString()">
and f.headquarters_sn=#{sn}
and f.headquarters_sn = #{sn}
</if>
<if test="companyType == '2'.toString()">
and f.company_sn=#{sn}
and f.company_sn = #{sn}
</if>
<if test="companyType == '3'.toString()">
and b.company_sn=#{sn}
and b.company_sn = #{sn}
</if>
<if test="companyType == '4'.toString()">
and w1.project_sn=#{sn}
and w1.project_sn = #{sn}
</if>
<if test="companyType == '5'.toString()">
and cp.company_sn=#{sn}
and cp.company_sn = #{sn}
</if>
group by w1.project_sn
order by cycleNum desc
</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>

View File

@ -1,15 +1,11 @@
package com.zhgd.xmgl.modules.bigdevice.service;
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.LifterAlarm;
import com.zhgd.xmgl.modules.bigdevice.entity.LifterViolation;
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.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.entity.vo.*;
import java.util.List;
import java.util.Map;
@ -30,7 +26,7 @@ public interface ILifterService extends IService<Lifter> {
Lifter queryById(String id);
Map<String, Object> selectLifterBySn(Map<String, Object> map);
LifterBySnVo selectLifterBySn(Map<String, Object> map);
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.xmgl.modules.bigdevice.entity.Tower;
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.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.entity.vo.*;
import java.util.List;
import java.util.Map;
@ -33,7 +30,7 @@ public interface ITowerService extends IService<Tower> {
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);

View File

@ -203,7 +203,7 @@ public class LifterAlarmServiceImpl extends ServiceImpl<LifterAlarmMapper, Lifte
@Override
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();
map.putIfAbsent("queryEndTime", queryEndTime);
map.putIfAbsent("queryStartTime", queryStartTime);

View File

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

View File

@ -1,5 +1,6 @@
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.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -61,6 +62,15 @@ public class LifterWorkCycleServiceImpl extends ServiceImpl<LifterWorkCycleMappe
if (lifter == null) {
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.setAddTime(new Date());
lifterWorkCycle.setProjectSn(lifter.getProjectSn());

View File

@ -1,6 +1,7 @@
package com.zhgd.xmgl.modules.bigdevice.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -149,39 +150,51 @@ public class TowerCurrentDataServiceImpl extends ServiceImpl<TowerCurrentDataMap
}
/**
* 获取报警预警名称
* 获取报警预警名称
*
* @param towerCurrentData
* @param type
* @return
*/
private String getAlarmName(TowerCurrentData towerCurrentData, Integer type) {
String rs = "";
List<String> rsList = new ArrayList<>();
if (Objects.equals(towerCurrentData.getMomentAlarm(), type)) {
rs = "力矩";
} else if (Objects.equals(towerCurrentData.getWindSpeedAlarm(), type)) {
rs = "风速";
} else if (Objects.equals(towerCurrentData.getHeightAlarm(), type)) {
rs = "高度上限位";
} else if (Objects.equals(towerCurrentData.getHeightLowerAlarm(), type)) {
rs = "高度下限位";
} else if (Objects.equals(towerCurrentData.getMinRangeAlarm(), type)) {
rs = "幅度内限位";
} else if (Objects.equals(towerCurrentData.getMaxRangeAlarm(), type)) {
rs = "幅度外限位";
} else if (Objects.equals(towerCurrentData.getPosAngleAlarm(), type)) {
rs = "顺时针回转限位";
} else if (Objects.equals(towerCurrentData.getNegAngleAlarm(), type)) {
rs = "逆时针回转限位";
} else if (Objects.equals(towerCurrentData.getObliguityAlarm(), type)) {
rs = "倾角";
} else if (Objects.equals(towerCurrentData.getObliguityXAlarm(), type)) {
rs = "倾角X";
} else if (Objects.equals(towerCurrentData.getObliguityYAlarm(), type)) {
rs = "倾角Y";
} else {
rsList.add("力矩");
}
if (Objects.equals(towerCurrentData.getWindSpeedAlarm(), type)) {
rsList.add("风速");
}
if (Objects.equals(towerCurrentData.getHeightAlarm(), type)) {
rsList.add("高度上限位");
}
if (Objects.equals(towerCurrentData.getHeightLowerAlarm(), type)) {
rsList.add("高度下限位");
}
if (Objects.equals(towerCurrentData.getMinRangeAlarm(), type)) {
rsList.add("幅度内限位");
}
if (Objects.equals(towerCurrentData.getMaxRangeAlarm(), type)) {
rsList.add("幅度外限位");
}
if (Objects.equals(towerCurrentData.getPosAngleAlarm(), type)) {
rsList.add("顺时针回转限位");
}
if (Objects.equals(towerCurrentData.getNegAngleAlarm(), type)) {
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;
}
String rs = CollUtil.join(rsList, "");
if (type == 1) {
rs += "报警";
} 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.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
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.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -227,17 +229,17 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
}
@Override
public Map<String, Object> 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"));*/
public TowerBySnVo selectTowerBySn(Map<String, Object> map) {
Tower tower = towerMapper.selectTowerBySN(map);
data.put("tower", tower);
List<EntityMap> videoList = bigDeviceVideoMapper.selectTowerVideoList(map);
List<EntityMap> driverList = bigDeviceDriverRecordMapper.selectTowerDriverList(map);
data.put("videoList", videoList);
data.put("driverList", driverList);
return data;
DriverVO driverVO = towerWorkCycleMapper.getCurrentDriver(map);
TowerBySnVo vo = new TowerBySnVo();
vo.setVideoList(videoList);
vo.setDriverList(driverList);
vo.setTower(tower);
vo.setCurrentDriver(driverVO);
return vo;
}
@Override
@ -465,17 +467,13 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
@Override
public TowerAndDataInfoVO getRelatedInfo(String devSn) {
log.info("调用getRelatedInfo方法请求参数{}", devSn);
Tower tower = towerMapper.getTowerAndDriverInfo(devSn);
if (tower == null) {
log.error("无对应塔吊编号设备!设备编号为:{}", devSn);
throw new NullPointerException("无对应塔吊编号设备!!");
}
TowerCurrentData newData = redisRepository.getOrSet("towerCurrentData" + tower.getProjectSn() + tower.getDevSn(), (() -> towerCurrentDataMapper.getNewData(devSn)));
log.info("getRelatedInfo塔吊实时数据信息{}", newData);
List<DriverVO> driverList = tower.getDriverList().stream().map(driver -> {
DriverVO driverVO = new DriverVO();
driverVO.setWorkerName(driver.getDriverName());
@ -488,19 +486,33 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
driverVO.setIdCard(driver.getDriverIdCard());
return driverVO;
}).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());
TowerDataInfoDTO towerDataInfo = new TowerDataInfoDTO().setForearmLength(tower.getForearmLength()).setTowerHeight(tower.getTowerHeight());
if (newData != null) {
towerDataInfo.setLoading(newData.getLoading()).setRanger(newData.getRanger()).setCurrentHeight(newData.getHeight())
.setAngle(newData.getAngle()).setTorqueRatio(newData.getTorqueRatio()).setLoadRatio(newData.getLoadRatio()).setReciveTime(newData.getReciveTime())
.setObliguityX(newData.getObliguityX()).setObliguityY(newData.getObliguityY()).setWindspeed(newData.getWindspeed()).setTorque(newData.getTorque());
}
setCurrentWorker(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;
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.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -72,6 +73,11 @@ public class TowerWorkCycleServiceImpl extends ServiceImpl<TowerWorkCycleMapper,
}
towerWorkCycle.setDevName(tower.getDevName());
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());
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.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -38,7 +39,6 @@ public class VideoItem implements Serializable {
*/
@Excel(name = "视频所属配置id", width = 15)
@ApiModelProperty(value = "视频所属配置id")
private java.lang.Long videoId;
/**
* 视频设备名称
@ -105,7 +105,7 @@ public class VideoItem implements Serializable {
private java.lang.Integer sortNum;
@ApiModelProperty(value = "分组Id'")
private java.lang.Long groupId;
@ApiModelProperty(value = "是否具有AI识别功能 0否1是")

View File

@ -202,9 +202,11 @@ public class WorkerAttendanceController {
return Result.success(workerAttendanceService.queryTodayAttendanceTrend(map));
}
@ApiOperation(value = "查询最近一周的出勤人数趋势", notes = "查询最近一周的出勤人数趋势", httpMethod = "GET")
@ApiOperation(value = "查询最近一周的出勤人数趋势", notes = "查询最近一周的出勤人数趋势(时间不传就默认查一周的)", httpMethod = "GET")
@ApiImplicitParams({
@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")
public Result<List<NumberTimeTableVo>> queryAttendanceTrendOfTheLastWeek(@RequestParam Map<String, Object> map) {

View File

@ -236,10 +236,10 @@
<select id="selectWorkerAttendanceListByDev" resultType="com.zhgd.jeecg.common.mybatis.EntityMap"
parameterType="map">
SELECT a.*,
IF(a.image_url IS NOT NULL, a.image_url, b.id_card_big_photo_url) image_url,
b.worker_name,
b.id_card,
c.team_name,
IF(a.image_url IS NOT NULL, a.image_url, b.id_card_big_photo_url) image_url,
b.worker_name,
b.id_card,
c.team_name,
d.department_name,
b.field_acquisition_url
from worker_attendance a
@ -458,10 +458,10 @@
</select>
<select id="selectWorkerAttendanceListByCarNumber" resultType="com.zhgd.jeecg.common.mybatis.EntityMap">
SELECT a.*,
IF(a.image_url IS NOT NULL, a.image_url, b.id_card_big_photo_url) image_url,
b.worker_name,
b.id_card,
c.team_name,
IF(a.image_url IS NOT NULL, a.image_url, b.id_card_big_photo_url) image_url,
b.worker_name,
b.id_card,
c.team_name,
d.department_name,
b.field_acquisition_url
from worker_attendance a
@ -772,20 +772,24 @@
</select>
<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 (
SELECT wa.create_time,
DATE_FORMAT(wa.create_time, '%m-%d') daytime,
DATE_FORMAT(wa.create_time,'%Y-%m-%d') daytime,
wa.person_sn
FROM worker_attendance wa
JOIN worker_info wi ON wi.person_sn = wa.person_sn
WHERE DATE_FORMAT(wa.create_time, '%Y-%m-%d') >= #{beforeSevenDay}
and DATE_FORMAT(wa.create_time, '%Y-%m-%d') <![CDATA[<=]]> #{today}
WHERE 1 = 1
<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 wi.inService_type = 1
GROUP BY DATE_FORMAT(
wa.create_time,
'%Y-%m-%d'), wa.person_sn
GROUP BY daytime, wa.person_sn
ORDER BY daytime
) t1
GROUP BY t1.daytime
</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.service.impl.ServiceImpl;
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.xmgl.async.AsyncSendAttendance;
import com.zhgd.xmgl.entity.vo.AttendanceOfEachCompanyVo;
@ -1027,16 +1028,29 @@ status 状态码 String 1表示成功其余表示失败
@Override
public List<NumberTimeTableVo> queryAttendanceTrendOfTheLastWeek(Map<String, Object> map) {
Date now = new Date();
String beforeSevenDay = DateUtil.format(DateUtil.offsetDay(now, -7), "yyyy-MM-dd");
String today = DateUtil.format(now, "yyyy-MM-dd");
map.put("beforeSevenDay", beforeSevenDay);
map.put("today", today);
if (StringUtils.isBlank(MapUtils.getString(map, "queryStartTime")) || StringUtils.isBlank(MapUtils.getString(map, "queryEndTime"))) {
throw new OpenAlertException("queryStartTime和queryEndTime都不能为空");
}
List<NumberTimeTableVo> attendances = workerAttendanceMapper.queryAttendanceTrendOfTheLastWeek(map);
completeData(attendances);
completeData(attendances, map);
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
public AttendanceOfEachCompanyVo queryAttendanceOfEachCompany(Map<String, Object> map) {
//统计各企业出勤人数
@ -1048,21 +1062,6 @@ status 状态码 String 1表示成功其余表示失败
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) {
WorkerInfo info = null;
File file = null;

View File

@ -483,6 +483,24 @@ public class DateUtil extends cn.hutool.core.date.DateUtil {
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
*
@ -516,6 +534,6 @@ public class DateUtil extends cn.hutool.core.date.DateUtil {
}
public static void main(String[] args) {
System.out.println(getHoursListLastDay());
System.out.println(getBetweenDays("2023-07-30", "2023-07-31"));
}
}