塔吊-人员考勤
This commit is contained in:
parent
263f7ef12d
commit
78b34e41a4
@ -0,0 +1,161 @@
|
|||||||
|
package com.zhgd.xmgl.modules.bigdevice.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkerAttendance;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.service.ITowerWorkerAttendanceService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiImplicitParams;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.net.URLDecoder;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import com.zhgd.jeecg.common.api.vo.Result;
|
||||||
|
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||||
|
import com.zhgd.jeecg.common.util.oConvertUtils;
|
||||||
|
import org.apache.commons.collections.MapUtils;
|
||||||
|
|
||||||
|
import org.simpleframework.xml.core.Validate;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
||||||
|
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
|
||||||
|
import org.jeecgframework.poi.excel.entity.ExportParams;
|
||||||
|
import org.jeecgframework.poi.excel.entity.ImportParams;
|
||||||
|
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Title: Controller
|
||||||
|
* @Description: 塔吊-人员考勤
|
||||||
|
* @author: pds
|
||||||
|
* @date: 2024-03-08
|
||||||
|
* @version: V1.0
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/xmgl/towerWorkerAttendance")
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags = "塔吊-人员考勤相关Api")
|
||||||
|
public class TowerWorkerAttendanceController {
|
||||||
|
@Autowired
|
||||||
|
private ITowerWorkerAttendanceService towerWorkerAttendanceService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页列表查询
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "分页列表查询塔吊-人员考勤信息", notes = "分页列表查询塔吊-人员考勤信息", httpMethod = "GET")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
|
||||||
|
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
|
||||||
|
})
|
||||||
|
@GetMapping(value = "/page")
|
||||||
|
public Result<IPage<TowerWorkerAttendance>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
|
||||||
|
return Result.success(towerWorkerAttendanceService.queryPageList(paramMap));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列表查询
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "列表查询塔吊-人员考勤信息", notes = "列表查询塔吊-人员考勤信息", httpMethod = "GET")
|
||||||
|
@GetMapping(value = "/list")
|
||||||
|
public Result<List<TowerWorkerAttendance>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
|
||||||
|
return Result.success(towerWorkerAttendanceService.queryList(paramMap));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加
|
||||||
|
*
|
||||||
|
* @param towerWorkerAttendance
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "添加塔吊-人员考勤信息", notes = "添加塔吊-人员考勤信息", httpMethod = "POST")
|
||||||
|
@PostMapping(value = "/add")
|
||||||
|
public Result<TowerWorkerAttendance> add(@RequestBody @Validate TowerWorkerAttendance towerWorkerAttendance) {
|
||||||
|
towerWorkerAttendanceService.add(towerWorkerAttendance);
|
||||||
|
return Result.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑
|
||||||
|
*
|
||||||
|
* @param towerWorkerAttendance
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "编辑塔吊-人员考勤信息", notes = "编辑塔吊-人员考勤信息", httpMethod = "POST")
|
||||||
|
@PostMapping(value = "/edit")
|
||||||
|
public Result<TowerWorkerAttendance> edit(@RequestBody TowerWorkerAttendance towerWorkerAttendance) {
|
||||||
|
towerWorkerAttendanceService.edit(towerWorkerAttendance);
|
||||||
|
return Result.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过id删除
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "删除塔吊-人员考勤信息", notes = "删除塔吊-人员考勤信息", httpMethod = "POST")
|
||||||
|
@ApiImplicitParam(name = "id", value = "塔吊-人员考勤ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}")
|
||||||
|
@PostMapping(value = "/delete")
|
||||||
|
public Result<TowerWorkerAttendance> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
|
||||||
|
String id = MapUtils.getString(map, "id");
|
||||||
|
Result<TowerWorkerAttendance> result = new Result<TowerWorkerAttendance>();
|
||||||
|
TowerWorkerAttendance towerWorkerAttendance = towerWorkerAttendanceService.getById(id);
|
||||||
|
if (towerWorkerAttendance == null) {
|
||||||
|
result.error500("未找到对应实体");
|
||||||
|
} else {
|
||||||
|
boolean ok = towerWorkerAttendanceService.removeById(id);
|
||||||
|
if (ok) {
|
||||||
|
result.success("删除成功!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过id查询
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation(value = "通过id查询塔吊-人员考勤信息", notes = "通过id查询塔吊-人员考勤信息", httpMethod = "GET")
|
||||||
|
@ApiImplicitParam(name = "id", value = "塔吊-人员考勤ID", paramType = "query", required = true, dataType = "Integer")
|
||||||
|
@GetMapping(value = "/queryById")
|
||||||
|
public Result<TowerWorkerAttendance> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||||
|
Result<TowerWorkerAttendance> result = new Result<TowerWorkerAttendance>();
|
||||||
|
TowerWorkerAttendance towerWorkerAttendance = towerWorkerAttendanceService.getById(id);
|
||||||
|
if (towerWorkerAttendance == null) {
|
||||||
|
result.error500("未找到对应实体");
|
||||||
|
} else {
|
||||||
|
result.setResult(towerWorkerAttendance);
|
||||||
|
result.setSuccess(true);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,105 @@
|
|||||||
|
package com.zhgd.xmgl.modules.bigdevice.entity;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 塔吊-人员考勤
|
||||||
|
* @author: pds
|
||||||
|
* @date: 2024-03-08
|
||||||
|
* @version: V1.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("tower_worker_attendance")
|
||||||
|
@ApiModel(value = "TowerWorkerAttendance实体类", description = "TowerWorkerAttendance")
|
||||||
|
public class TowerWorkerAttendance implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
@ApiModelProperty(value = "id")
|
||||||
|
private java.lang.Long id;
|
||||||
|
/**
|
||||||
|
* 塔吊设备sn
|
||||||
|
*/
|
||||||
|
@Excel(name = "塔吊设备sn", width = 15)
|
||||||
|
@ApiModelProperty(value = "塔吊设备sn")
|
||||||
|
private java.lang.String towerDevSn;
|
||||||
|
/**
|
||||||
|
* 识别类型
|
||||||
|
*/
|
||||||
|
@Excel(name = "识别类型", width = 15)
|
||||||
|
@ApiModelProperty(value = "识别类型")
|
||||||
|
private java.lang.String recognitionType;
|
||||||
|
/**
|
||||||
|
* 匹配百分比
|
||||||
|
*/
|
||||||
|
@Excel(name = "匹配百分比", width = 15)
|
||||||
|
@ApiModelProperty(value = "匹配百分比")
|
||||||
|
private java.lang.String recgRercentage;
|
||||||
|
/**
|
||||||
|
* 驾驶员id
|
||||||
|
*/
|
||||||
|
@Excel(name = "驾驶员id", width = 15)
|
||||||
|
@ApiModelProperty(value = "驾驶员id")
|
||||||
|
private java.lang.String driverId;
|
||||||
|
/**
|
||||||
|
* 驾驶员名称
|
||||||
|
*/
|
||||||
|
@Excel(name = "驾驶员名称", width = 15)
|
||||||
|
@ApiModelProperty(value = "驾驶员名称")
|
||||||
|
private java.lang.String driverName;
|
||||||
|
/**
|
||||||
|
* 驾驶员身份证号码
|
||||||
|
*/
|
||||||
|
@Excel(name = "驾驶员身份证号码", width = 15)
|
||||||
|
@ApiModelProperty(value = "驾驶员身份证号码")
|
||||||
|
private java.lang.String idCardNo;
|
||||||
|
/**
|
||||||
|
* 考勤时间
|
||||||
|
*/
|
||||||
|
@Excel(name = "考勤时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ApiModelProperty(value = "考勤时间")
|
||||||
|
private java.util.Date systemTime;
|
||||||
|
/**
|
||||||
|
* 创建时间 yyyy-MM-dd HH:mm:ss
|
||||||
|
*/
|
||||||
|
@Excel(name = "创建时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ApiModelProperty(value = "创建时间 yyyy-MM-dd HH:mm:ss")
|
||||||
|
private java.util.Date createTime;
|
||||||
|
/**
|
||||||
|
* 更新时间 yyyy-MM-dd HH:mm:ss
|
||||||
|
*/
|
||||||
|
@Excel(name = "更新时间 yyyy-MM-dd HH:mm:ss", width = 20, format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ApiModelProperty(value = "更新时间 yyyy-MM-dd HH:mm:ss")
|
||||||
|
private java.util.Date updateTime;
|
||||||
|
/**
|
||||||
|
* 项目sn
|
||||||
|
*/
|
||||||
|
@Excel(name = "项目sn", width = 15)
|
||||||
|
@ApiModelProperty(value = "项目sn")
|
||||||
|
private java.lang.String projectSn;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
@ApiModelProperty(value = "塔吊名称")
|
||||||
|
private String towerName;
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package com.zhgd.xmgl.modules.bigdevice.mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkerAttendance;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.entity.vo.DriverVO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 塔吊-人员考勤
|
||||||
|
* @author: pds
|
||||||
|
* @date: 2024-03-08
|
||||||
|
* @version: V1.0
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface TowerWorkerAttendanceMapper extends BaseMapper<TowerWorkerAttendance> {
|
||||||
|
|
||||||
|
List<TowerWorkerAttendance> queryList(@Param(Constants.WRAPPER) QueryWrapper<TowerWorkerAttendance> queryWrapper);
|
||||||
|
|
||||||
|
IPage<TowerWorkerAttendance> queryList(Page<TowerWorkerAttendance> page, @Param(Constants.WRAPPER) QueryWrapper<TowerWorkerAttendance> queryWrapper);
|
||||||
|
|
||||||
|
TowerWorkerAttendance getNewestOne(String devSn);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前司机信息
|
||||||
|
*
|
||||||
|
* @param devSn
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
DriverVO getNewestWorkerInfo(String devSn);
|
||||||
|
}
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
<?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.TowerWorkerAttendanceMapper">
|
||||||
|
<select id="queryList" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkerAttendance">
|
||||||
|
select
|
||||||
|
twa.id,
|
||||||
|
twa.tower_dev_sn,
|
||||||
|
twa.recognition_type,
|
||||||
|
twa.recg_rercentage,
|
||||||
|
twa.driver_id,
|
||||||
|
wi.worker_name driverName,
|
||||||
|
wi.id_card idCardNo,
|
||||||
|
twa.system_time,
|
||||||
|
twa.create_time,
|
||||||
|
twa.update_time,
|
||||||
|
twa.project_sn,
|
||||||
|
t.dev_name as towerName
|
||||||
|
from tower_worker_attendance twa
|
||||||
|
join tower t on twa.project_sn = t.project_sn and twa.tower_dev_sn=t.dev_sn
|
||||||
|
join worker_info wi on wi.id_card = twa.id_card_no
|
||||||
|
${ew.customSqlSegment}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getNewestOne" resultType="com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkerAttendance">
|
||||||
|
select *
|
||||||
|
from tower_worker_attendance
|
||||||
|
where tower_dev_sn=#{devSn}
|
||||||
|
order by system_time desc
|
||||||
|
limit 1
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getNewestWorkerInfo" 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 = 98
|
||||||
|
ORDER BY effect_time DESC
|
||||||
|
LIMIT 1) special_certificate_number,
|
||||||
|
wi.field_acquisition_url as imageUrl,
|
||||||
|
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.dev_sn = twa.tower_dev_sn
|
||||||
|
order by a.add_time desc
|
||||||
|
limit 1) continuous_working_time,
|
||||||
|
wi.id_card,
|
||||||
|
wi.add_time
|
||||||
|
from tower_worker_attendance twa
|
||||||
|
join worker_info wi on twa.project_sn = wi.project_sn and twa.id_card_no=wi.id_card
|
||||||
|
where twa.tower_dev_sn=#{devSn}
|
||||||
|
order by twa.system_time desc
|
||||||
|
limit 1
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
package com.zhgd.xmgl.modules.bigdevice.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkerAttendance;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 塔吊-人员考勤
|
||||||
|
* @author: pds
|
||||||
|
* @date: 2024-03-08
|
||||||
|
* @version: V1.0
|
||||||
|
*/
|
||||||
|
public interface ITowerWorkerAttendanceService extends IService<TowerWorkerAttendance> {
|
||||||
|
|
||||||
|
IPage<TowerWorkerAttendance> queryPageList(HashMap<String, Object> paramMap);
|
||||||
|
|
||||||
|
List<TowerWorkerAttendance> queryList(HashMap<String, Object> paramMap);
|
||||||
|
|
||||||
|
void add(TowerWorkerAttendance towerWorkerAttendance);
|
||||||
|
|
||||||
|
void edit(TowerWorkerAttendance towerWorkerAttendance);
|
||||||
|
}
|
||||||
@ -36,6 +36,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.sql.Struct;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -53,6 +54,8 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
|
|||||||
@Autowired
|
@Autowired
|
||||||
private TowerMapper towerMapper;
|
private TowerMapper towerMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private TowerWorkerAttendanceMapper towerWorkerAttendanceMapper;
|
||||||
|
@Autowired
|
||||||
private BigDeviceDriverRecordMapper bigDeviceDriverRecordMapper;
|
private BigDeviceDriverRecordMapper bigDeviceDriverRecordMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private BigDeviceVideoMapper bigDeviceVideoMapper;
|
private BigDeviceVideoMapper bigDeviceVideoMapper;
|
||||||
@ -257,6 +260,9 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
|
|||||||
List<EntityMap> videoList = bigDeviceVideoMapper.selectTowerVideoList(map);
|
List<EntityMap> videoList = bigDeviceVideoMapper.selectTowerVideoList(map);
|
||||||
List<EntityMap> driverList = bigDeviceDriverRecordMapper.selectTowerDriverList(map);
|
List<EntityMap> driverList = bigDeviceDriverRecordMapper.selectTowerDriverList(map);
|
||||||
DriverVO driverVO = towerWorkCycleMapper.getCurrentDriver(map);
|
DriverVO driverVO = towerWorkCycleMapper.getCurrentDriver(map);
|
||||||
|
if (driverVO == null) {
|
||||||
|
driverVO = towerWorkerAttendanceMapper.getNewestWorkerInfo(tower.getDevSn());
|
||||||
|
}
|
||||||
TowerBySnVo vo = new TowerBySnVo();
|
TowerBySnVo vo = new TowerBySnVo();
|
||||||
vo.setVideoList(videoList);
|
vo.setVideoList(videoList);
|
||||||
vo.setDriverList(driverList);
|
vo.setDriverList(driverList);
|
||||||
@ -501,7 +507,9 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
|
|||||||
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());
|
String driverName = driver.getDriverName();
|
||||||
|
if (StrUtil.isNotBlank(driverName)) {
|
||||||
|
driverVO.setWorkerName(driverName);
|
||||||
driverVO.setPhoneNumber(driver.getDriverPhone());
|
driverVO.setPhoneNumber(driver.getDriverPhone());
|
||||||
driverVO.setSpecialCertificateNumber(driver.getCertificateNumber());
|
driverVO.setSpecialCertificateNumber(driver.getCertificateNumber());
|
||||||
driverVO.setImageUrl(driver.getImageUrl());
|
driverVO.setImageUrl(driver.getImageUrl());
|
||||||
@ -510,10 +518,14 @@ public class TowerServiceImpl extends ServiceImpl<TowerMapper, Tower> implements
|
|||||||
driverVO.setContinuousWorkingTime(driver.getContinuousWorkingTime());
|
driverVO.setContinuousWorkingTime(driver.getContinuousWorkingTime());
|
||||||
driverVO.setContinuousWorkingTimeName(TimeUtil.toHourMinSecond(driver.getContinuousWorkingTime()));
|
driverVO.setContinuousWorkingTimeName(TimeUtil.toHourMinSecond(driver.getContinuousWorkingTime()));
|
||||||
driverVO.setIdCard(driver.getDriverIdCard());
|
driverVO.setIdCard(driver.getDriverIdCard());
|
||||||
|
} else {
|
||||||
|
//从塔吊-人员考勤里面获取人员信息
|
||||||
|
driverVO = towerWorkerAttendanceMapper.getNewestWorkerInfo(driver.getDevSn());
|
||||||
|
driverVO.setContinuousWorkingTimeName(TimeUtil.toHourMinSecond(driver.getContinuousWorkingTime()));
|
||||||
|
}
|
||||||
return driverVO;
|
return driverVO;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
DevWorkerVO devWorker = new DevWorkerVO(tower.getDevName(), tower.getDevSn(), tower.getRegistNo(), tower.getFactoryName(), null, driverList, null);
|
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());
|
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())
|
||||||
|
|||||||
@ -0,0 +1,69 @@
|
|||||||
|
package com.zhgd.xmgl.modules.bigdevice.service.impl;
|
||||||
|
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkerAttendance;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.mapper.TowerWorkerAttendanceMapper;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.service.ITowerWorkerAttendanceService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.zhgd.jeecg.common.system.query.QueryGenerator;
|
||||||
|
import com.zhgd.xmgl.util.PageUtil;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.zhgd.xmgl.util.RefUtil;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 塔吊-人员考勤
|
||||||
|
* @author: pds
|
||||||
|
* @date: 2024-03-08
|
||||||
|
* @version: V1.0
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class TowerWorkerAttendanceServiceImpl extends ServiceImpl<TowerWorkerAttendanceMapper, TowerWorkerAttendance> implements ITowerWorkerAttendanceService {
|
||||||
|
@Autowired
|
||||||
|
private TowerWorkerAttendanceMapper towerWorkerAttendanceMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<TowerWorkerAttendance> queryPageList(HashMap<String, Object> paramMap) {
|
||||||
|
QueryWrapper<TowerWorkerAttendance> queryWrapper = getQueryWrapper(paramMap);
|
||||||
|
Page<TowerWorkerAttendance> page = PageUtil.getPage(paramMap);
|
||||||
|
IPage<TowerWorkerAttendance> pageList = baseMapper.queryList(page, queryWrapper);
|
||||||
|
pageList.setRecords(dealList(pageList.getRecords()));
|
||||||
|
return pageList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<TowerWorkerAttendance> queryList(HashMap<String, Object> paramMap) {
|
||||||
|
QueryWrapper<TowerWorkerAttendance> queryWrapper = getQueryWrapper(paramMap);
|
||||||
|
return dealList(baseMapper.queryList(queryWrapper));
|
||||||
|
}
|
||||||
|
|
||||||
|
private QueryWrapper<TowerWorkerAttendance> getQueryWrapper(HashMap<String, Object> paramMap) {
|
||||||
|
String alias = "twa.";
|
||||||
|
QueryWrapper<TowerWorkerAttendance> queryWrapper = QueryGenerator.initPageQueryWrapper(TowerWorkerAttendance.class, paramMap, alias);
|
||||||
|
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(TowerWorkerAttendance::getId));
|
||||||
|
return queryWrapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<TowerWorkerAttendance> dealList(List<TowerWorkerAttendance> list) {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void add(TowerWorkerAttendance towerWorkerAttendance) {
|
||||||
|
towerWorkerAttendance.setId(null);
|
||||||
|
baseMapper.insert(towerWorkerAttendance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void edit(TowerWorkerAttendance towerWorkerAttendance) {
|
||||||
|
baseMapper.updateById(towerWorkerAttendance);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -26,6 +26,8 @@ import org.springframework.beans.factory.annotation.Value;
|
|||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
@ -42,6 +44,7 @@ import java.util.stream.Collectors;
|
|||||||
**/
|
**/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
|
@RestController("/xmgl/task")
|
||||||
public class EnvironmentDevTask {
|
public class EnvironmentDevTask {
|
||||||
@Autowired
|
@Autowired
|
||||||
private EnvironmentDevMapper environmentDevMapper;
|
private EnvironmentDevMapper environmentDevMapper;
|
||||||
@ -134,6 +137,7 @@ public class EnvironmentDevTask {
|
|||||||
*/
|
*/
|
||||||
@SchedulerLock(name = "getEnvironmentDustData", lockAtMostFor = 1000 * 60 * 5, lockAtLeastFor = 1000 * 60 * 3)
|
@SchedulerLock(name = "getEnvironmentDustData", lockAtMostFor = 1000 * 60 * 5, lockAtLeastFor = 1000 * 60 * 3)
|
||||||
@Scheduled(cron = "0 0/5 * * * ?")
|
@Scheduled(cron = "0 0/5 * * * ?")
|
||||||
|
@GetMapping("dustData")
|
||||||
public void getEnvironmentDustData() {
|
public void getEnvironmentDustData() {
|
||||||
log.info("获取扬尘数据(携稳)开始任务");
|
log.info("获取扬尘数据(携稳)开始任务");
|
||||||
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>()
|
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>()
|
||||||
|
|||||||
133
src/main/java/com/zhgd/xmgl/task/TowerWorkerAttendanceTask.java
Normal file
133
src/main/java/com/zhgd/xmgl/task/TowerWorkerAttendanceTask.java
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
package com.zhgd.xmgl.task;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.gexin.fastjson.JSON;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.entity.Tower;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.entity.TowerWorkerAttendance;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.mapper.TowerMapper;
|
||||||
|
import com.zhgd.xmgl.modules.bigdevice.mapper.TowerWorkerAttendanceMapper;
|
||||||
|
import com.zhgd.xmgl.modules.environment.entity.DustNoiseData;
|
||||||
|
import com.zhgd.xmgl.modules.environment.mapper.DustNoiseDataMapper;
|
||||||
|
import com.zhgd.xmgl.modules.project.entity.Project;
|
||||||
|
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||||
|
import com.zhgd.xmgl.task.dto.EnvironmentDustDataDto;
|
||||||
|
import com.zhgd.xmgl.task.dto.TowerWorkerAttendanceDataDto;
|
||||||
|
import com.zhgd.xmgl.util.WindDirectionUtils;
|
||||||
|
import com.zhgd.xmgl.util.XiwonUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||||
|
import org.apache.commons.lang.math.NumberUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @program: wisdomSite
|
||||||
|
* @description: 塔吊-人员考勤
|
||||||
|
* @author: Mr.Peng
|
||||||
|
* @create: 2021-07-12 13:41
|
||||||
|
**/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(("/xmgl/task"))
|
||||||
|
public class TowerWorkerAttendanceTask {
|
||||||
|
@Autowired
|
||||||
|
private TowerMapper towerMapper;
|
||||||
|
@Autowired
|
||||||
|
private DustNoiseDataMapper dustNoiseDataMapper;
|
||||||
|
@Autowired
|
||||||
|
private ProjectMapper projectMapper;
|
||||||
|
@Autowired
|
||||||
|
private TowerWorkerAttendanceMapper towerWorkerAttendanceMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private XiwonUtil xiwonUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取塔吊-人员考勤数据(携稳) 每5分钟触发任务
|
||||||
|
*/
|
||||||
|
@SchedulerLock(name = "getTowerWorkerAttendanceData", lockAtMostFor = 1000 * 60 * 5, lockAtLeastFor = 1000 * 60 * 3)
|
||||||
|
@Scheduled(cron = "0 0/5 * * * ?")
|
||||||
|
@GetMapping("getTowerWorkerAttendanceData")
|
||||||
|
public void getTowerWorkerAttendanceData() {
|
||||||
|
log.info("获取塔吊-人员考勤数据(携稳)开始任务");
|
||||||
|
List<Project> projects = projectMapper.selectList(new LambdaQueryWrapper<Project>()
|
||||||
|
.isNotNull(Project::getXiwonAppId)
|
||||||
|
.isNotNull(Project::getXiwonAppSecret)
|
||||||
|
);
|
||||||
|
for (Project project : projects) {
|
||||||
|
// 获取设备列表
|
||||||
|
List<Tower> devList = towerMapper.selectList(new LambdaQueryWrapper<Tower>()
|
||||||
|
.eq(Tower::getProjectSn, project.getProjectSn()));
|
||||||
|
devList.forEach(dev -> CompletableFuture.runAsync(() -> {
|
||||||
|
doGetTowerWorkerAttendanceData(dev, project);
|
||||||
|
}).exceptionally(throwable -> {
|
||||||
|
log.error("err", throwable);
|
||||||
|
return null;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doGetTowerWorkerAttendanceData(Tower dev, Project project) {
|
||||||
|
// 设备sn
|
||||||
|
String devSn = dev.getDevSn();
|
||||||
|
log.info("doGetTowerWorkerAttendanceData设备sn:{}", devSn);
|
||||||
|
TowerWorkerAttendance newestData = towerWorkerAttendanceMapper.getNewestOne(dev.getDevSn());
|
||||||
|
// 请求参数
|
||||||
|
Map<String, Object> map = new HashMap<>(4);
|
||||||
|
map.put("pageSize", "10");
|
||||||
|
map.put("pageNum", "1");
|
||||||
|
JSONObject realTimeData = xiwonUtil.postForm("/tower/attendance", project.getXiwonAppId(), project.getXiwonAppSecret(), map, JSONObject.class, (() -> {
|
||||||
|
map.put("deviceSn", devSn);
|
||||||
|
if (newestData != null && newestData.getSystemTime() != null) {
|
||||||
|
map.put("startTime", DateUtil.formatDateTime(newestData.getSystemTime()));
|
||||||
|
}
|
||||||
|
map.put("endTime", DateUtil.formatDateTime(new Date()));
|
||||||
|
return map;
|
||||||
|
}));
|
||||||
|
log.info("携稳接口响应数据(塔吊-人员考勤):devSn:{},rs:{}", devSn, JSON.toJSONString(realTimeData));
|
||||||
|
Integer code = realTimeData.getInteger("code");
|
||||||
|
// code校验是否成功请求
|
||||||
|
if (code == HttpStatus.OK.value()) {
|
||||||
|
JSONArray dataArray = realTimeData.getJSONArray("data");
|
||||||
|
if (CollUtil.isNotEmpty(dataArray)) {
|
||||||
|
// 解析请求到的参数,保存到我们的数据库
|
||||||
|
for (Object o : dataArray) {
|
||||||
|
TowerWorkerAttendanceDataDto dto = BeanUtil.toBean(o, TowerWorkerAttendanceDataDto.class);
|
||||||
|
TowerWorkerAttendance data = new TowerWorkerAttendance();
|
||||||
|
data.setTowerDevSn(devSn);
|
||||||
|
data.setRecognitionType(dto.getRecognitionType());
|
||||||
|
data.setRecgRercentage(Convert.toStr(dto.getRecgRercentage()));
|
||||||
|
data.setDriverId(dto.getDriverId());
|
||||||
|
data.setDriverName(dto.getDriverName());
|
||||||
|
data.setIdCardNo(dto.getIdCardNo());
|
||||||
|
data.setSystemTime(DateUtil.parse(dto.getSystemTime()));
|
||||||
|
data.setProjectSn(dev.getProjectSn());
|
||||||
|
towerWorkerAttendanceMapper.insert(data);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.info("设备sn:{},当前无数据!", devSn);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.error("设备sn:{},请求失败!当前code:{},msg:{}", devSn, code, realTimeData.getString("msg"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
package com.zhgd.xmgl.task.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class TowerWorkerAttendanceDataDto {
|
||||||
|
@JsonProperty("blackBoxId")
|
||||||
|
private String blackBoxId;
|
||||||
|
@JsonProperty("towerCraneId")
|
||||||
|
private Long towerCraneId;
|
||||||
|
@JsonProperty("recognitionType")
|
||||||
|
private String recognitionType;
|
||||||
|
@JsonProperty("recgRercentage")
|
||||||
|
private Long recgRercentage;
|
||||||
|
@JsonProperty("driverId")
|
||||||
|
private String driverId;
|
||||||
|
@JsonProperty("driverName")
|
||||||
|
private String driverName;
|
||||||
|
@JsonProperty("idCardNo")
|
||||||
|
private String idCardNo;
|
||||||
|
@JsonProperty("systemTime")
|
||||||
|
private String systemTime;
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user