污水bug修复

This commit is contained in:
guo 2023-12-14 09:59:19 +08:00
parent 6a9901a000
commit e6f714a184
24 changed files with 365 additions and 156 deletions

View File

@ -102,7 +102,7 @@ public class SewageAlarmController {
*/
@ApiOperation(value = "编辑污水预警信息", notes = "编辑污水预警信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<SewageAlarm> edit(@RequestBody SewageAlarm sewageAlarm) {
public Result edit(@RequestBody SewageAlarm sewageAlarm) {
if (Objects.equals(sewageAlarm.getHandleDone(), 1)) {
UserInfo userInfo = SecurityUtils.getUser();
sewageAlarm.setOperateId(userInfo.getUserId());

View File

@ -1,6 +1,7 @@
package com.zhgd.xmgl.modules.sewage.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gexin.fastjson.JSON;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.modules.sewage.entity.SewageData;
import com.zhgd.xmgl.modules.sewage.service.ISewageDataService;
@ -66,7 +67,7 @@ public class SewageDataController {
}
@ApiOperation(value = "查询污水设备和最新的一条数据信息", notes = "查询污水设备和最新的一条数据信息", httpMethod = "GET")
@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"),
@ -87,7 +88,8 @@ public class SewageDataController {
@ApiOperation(value = "添加污水数据信息", notes = "添加污水数据信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<SewageData> add(@RequestBody SewageData sewageData) {
sewageDataService.save(sewageData);
log.info("添加污水数据信息:{}", JSON.toJSONString(sewageData));
sewageDataService.add(sewageData);
return Result.ok();
}
@ -155,13 +157,11 @@ public class SewageDataController {
*/
@ApiOperation(value = "导出excel污水数据信息", notes = "导出excel污水数据信息", httpMethod = "POST")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "createDate_begin", value = "查询开始日期", paramType = "query", required = false, dataType = "String"),
@ApiImplicitParam(name = "createDate_end", value = "查询结束日期", paramType = "query", required = false, dataType = "String"),
})
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
public ModelAndView exportXls(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
//Step.2 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
List<SewageData> pageList = queryList(paramMap).getResult();

View File

@ -86,7 +86,7 @@ public class SewageDevController {
@ApiOperation(value = "添加污水设备信息", notes = "添加污水设备信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<SewageDev> add(@RequestBody SewageDev sewageDev) {
sewageDevService.save(sewageDev);
sewageDevService.add(sewageDev);
return Result.ok();
}
@ -99,7 +99,7 @@ public class SewageDevController {
@ApiOperation(value = "编辑污水设备信息", notes = "编辑污水设备信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<SewageDev> edit(@RequestBody SewageDev sewageDev) {
sewageDevService.updateById(sewageDev);
sewageDevService.edit(sewageDev);
return Result.ok();
}

View File

@ -1,39 +1,21 @@
package com.zhgd.xmgl.modules.sewage.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.modules.sewage.entity.SewageWarnThreshold;
import com.zhgd.xmgl.modules.sewage.service.ISewageWarnThresholdService;
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.List;
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 com.zhgd.xmgl.modules.sewage.service.ISewageWarnThresholdService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
/**
@ -149,37 +131,10 @@ public class SewageWarnThresholdController {
return result;
}
/**
* 导出excel
*
* @param request
* @param response
*/
@ApiOperation(value = "导出excel污水预警阈值信息", notes = "导出excel污水预警阈值信息", httpMethod = "POST")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
// Step.1 组装查询条件
QueryWrapper<SewageWarnThreshold> queryWrapper = null;
try {
String paramsStr = request.getParameter("paramsStr");
if (oConvertUtils.isNotEmpty(paramsStr)) {
String deString = URLDecoder.decode(paramsStr, "UTF-8");
SewageWarnThreshold sewageWarnThreshold = JSON.parseObject(deString, SewageWarnThreshold.class);
queryWrapper = QueryGenerator.initQueryWrapper(sewageWarnThreshold, request.getParameterMap());
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//Step.2 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
List<SewageWarnThreshold> pageList = sewageWarnThresholdService.list(queryWrapper);
//导出文件名称
mv.addObject(NormalExcelConstants.FILE_NAME, "污水预警阈值列表");
mv.addObject(NormalExcelConstants.CLASS, SewageWarnThreshold.class);
mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("污水预警阈值列表数据", "导出人:Jeecg", "导出信息"));
mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
return mv;
@ApiOperation(value = "通过devSn查询污水预警阈值信息", notes = "通过devSn查询污水预警阈值信息", httpMethod = "GET")
@ApiImplicitParam(name = "devSn", value = "devSn", paramType = "query", required = true, dataType = "String")
@GetMapping(value = "/queryByDevSn")
public Result<SewageWarnThreshold> queryByDevSn(@RequestParam(name = "devSn", required = true) String devSn) {
return Result.success(sewageWarnThresholdService.queryByDevSn(devSn));
}
}

View File

@ -3,6 +3,7 @@ package com.zhgd.xmgl.modules.sewage.entity;
import java.io.Serializable;
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;
@ -123,17 +124,21 @@ public class SewageAlarm implements Serializable {
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**
* 更新时间
*/
@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 updateTime;
/**
* 报警状态 1预警
*/
@Excel(name = "报警状态 1预警", width = 15)
@ApiModelProperty(value = "报警状态 1预警")
private java.lang.Integer alarmType;
* 更新时间
*/
@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 updateTime;
/**
* 报警状态 1预警 2告警 3正常
*/
@Excel(name = "报警状态 1预警 2告警 3正常", width = 15)
@ApiModelProperty(value = "报警状态 1预警 2告警 3正常")
private java.lang.Integer alarmType;
@TableField(exist = false)
@ApiModelProperty(value = "设备名称")
private java.lang.String devName;
}

View File

@ -2,8 +2,9 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.sewage.mapper.SewageAlarmMapper">
<select id="queryPageList" resultType="com.zhgd.xmgl.modules.sewage.entity.SewageAlarm">
select *
from sewage_alarm
select sa.*,sd.dev_name
from sewage_alarm sa
join sewage_dev sd on sd.dev_sn=sa.dev_sn
${ew.customSqlSegment}
</select>
</mapper>

View File

@ -2,19 +2,10 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhgd.xmgl.modules.sewage.mapper.SewageDataMapper">
<select id="queryDevAndNewestData" resultType="com.zhgd.xmgl.modules.sewage.entity.SewageData">
select max(d.ph_value) as ph_value,
max(d.turbidity_value) as turbidity_value,
max(d.conductivity) as conductivity,
max(d.dissolved_oxygen) as dissolved_oxygen,
max(d.water_temperature) as water_temperature,
max(d.flow_velocity) as flow_velocity,
max(d.water_level) as water_level,
sd.dev_sn,
sd.dev_name,
max(d.create_date) as create_date
from sewage_data d
right join sewage_dev sd on d.dev_sn = sd.dev_sn
select d.*, sd.dev_sn, sd.dev_name
from sewage_dev sd
left join (select * from sewage_data where id in (select max(id) from sewage_data group by dev_sn)) d
on d.dev_sn = sd.dev_sn
${ew.customSqlSegment}
group by sd.dev_sn
</select>
</mapper>

View File

@ -18,4 +18,5 @@ public interface ISewageAlarmService extends IService<SewageAlarm> {
IPage<SewageAlarm> queryPageList(HashMap<String, Object> paramMap);
List<SewageAlarm> queryList(HashMap<String, Object> paramMap);
}

View File

@ -20,4 +20,6 @@ public interface ISewageDataService extends IService<SewageData> {
List<SewageData> queryList(HashMap<String, Object> paramMap);
IPage<SewageData> queryDevAndNewestData(HashMap<String, Object> paramMap);
void add(SewageData sewageData);
}

View File

@ -18,4 +18,8 @@ public interface ISewageDevService extends IService<SewageDev> {
IPage<SewageDev> queryPageList(HashMap<String, Object> paramMap);
List<SewageDev> queryList(HashMap<String, Object> paramMap);
void add(SewageDev sewageDev);
void edit(SewageDev sewageDev);
}

View File

@ -18,4 +18,6 @@ public interface ISewageWarnThresholdService extends IService<SewageWarnThreshol
IPage<SewageWarnThreshold> queryPageList(HashMap<String, Object> paramMap);
List<SewageWarnThreshold> queryList(HashMap<String, Object> paramMap);
SewageWarnThreshold queryByDevSn(String devSn);
}

View File

@ -1,16 +1,16 @@
package com.zhgd.xmgl.modules.sewage.service.impl;
import com.zhgd.xmgl.modules.sewage.entity.SewageAlarm;
import com.zhgd.xmgl.modules.sewage.mapper.SewageAlarmMapper;
import com.zhgd.xmgl.modules.sewage.service.ISewageAlarmService;
import com.zhgd.xmgl.util.RefUtil;
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 com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.modules.sewage.entity.SewageAlarm;
import com.zhgd.xmgl.modules.sewage.mapper.SewageAlarmMapper;
import com.zhgd.xmgl.modules.sewage.service.ISewageAlarmService;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
@ -39,8 +39,9 @@ public class SewageAlarmServiceImpl extends ServiceImpl<SewageAlarmMapper, Sewag
}
private QueryWrapper<SewageAlarm> getQueryWrapper(HashMap<String, Object> paramMap) {
QueryWrapper<SewageAlarm> queryWrapper = QueryGenerator.initPageQueryWrapper(SewageAlarm.class, paramMap);
queryWrapper.orderByDesc(RefUtil.fieldNameUlc(SewageAlarm::getId));
String alias = "sa.";
QueryWrapper<SewageAlarm> queryWrapper = QueryGenerator.initPageQueryWrapper(SewageAlarm.class, paramMap, alias);
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(SewageAlarm::getId));
return queryWrapper;
}

View File

@ -1,15 +1,22 @@
package com.zhgd.xmgl.modules.sewage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.modules.sewage.entity.SewageData;
import com.zhgd.xmgl.modules.sewage.entity.SewageDev;
import com.zhgd.xmgl.modules.sewage.entity.SewageWarnThreshold;
import com.zhgd.xmgl.modules.sewage.mapper.SewageDataMapper;
import com.zhgd.xmgl.modules.sewage.mapper.SewageDevMapper;
import com.zhgd.xmgl.modules.sewage.mapper.SewageWarnThresholdMapper;
import com.zhgd.xmgl.modules.sewage.service.ISewageDataService;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
@ -23,6 +30,11 @@ import java.util.List;
*/
@Service
public class SewageDataServiceImpl extends ServiceImpl<SewageDataMapper, SewageData> implements ISewageDataService {
@Autowired
SewageDevMapper sewageDevMapper;
@Autowired
SewageWarnThresholdMapper sewageWarnThresholdMapper;
@Override
public IPage<SewageData> queryPageList(HashMap<String, Object> paramMap) {
QueryWrapper<SewageData> queryWrapper = getQueryWrapper(paramMap);
@ -45,6 +57,23 @@ public class SewageDataServiceImpl extends ServiceImpl<SewageDataMapper, SewageD
return baseMapper.queryDevAndNewestData(queryWrapper, page);
}
@Override
public void add(SewageData sd) {
SewageDev dev = sewageDevMapper.selectOne(new LambdaQueryWrapper<SewageDev>()
.eq(SewageDev::getDevSn, sd.getDevSn()));
if (dev == null) {
throw new OpenAlertException("设备编号不正确");
}
sd.setDevName(dev.getDevName());
sd.setProjectSn(dev.getProjectSn());
baseMapper.insert(sd);
//插入报警
SewageWarnThreshold threshold = sewageWarnThresholdMapper.selectOne(new LambdaQueryWrapper<SewageWarnThreshold>()
.eq(SewageWarnThreshold::getDevSn, dev.getDevSn()));
}
private QueryWrapper<SewageData> getQueryWrapperAlias(HashMap<String, Object> paramMap) {
String alias = "sd.";
QueryWrapper<SewageData> queryWrapper = QueryGenerator.initPageQueryWrapper(SewageData.class, paramMap, alias);

View File

@ -1,16 +1,21 @@
package com.zhgd.xmgl.modules.sewage.service.impl;
import com.zhgd.xmgl.modules.sewage.service.ISewageDevService;
import com.zhgd.xmgl.modules.sewage.entity.SewageDev;
import com.zhgd.xmgl.modules.sewage.mapper.SewageDevMapper;
import com.zhgd.xmgl.util.RefUtil;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.util.PageUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.modules.sewage.entity.SewageDev;
import com.zhgd.xmgl.modules.sewage.entity.SewageWarnThreshold;
import com.zhgd.xmgl.modules.sewage.mapper.SewageDevMapper;
import com.zhgd.xmgl.modules.sewage.mapper.SewageWarnThresholdMapper;
import com.zhgd.xmgl.modules.sewage.service.ISewageDevService;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
@ -23,6 +28,11 @@ import java.util.List;
*/
@Service
public class SewageDevServiceImpl extends ServiceImpl<SewageDevMapper, SewageDev> implements ISewageDevService {
@Autowired
SewageDevMapper sewageDevMapper;
@Autowired
SewageWarnThresholdMapper sewageWarnThresholdMapper;
@Override
public IPage<SewageDev> queryPageList(HashMap<String, Object> paramMap) {
QueryWrapper<SewageDev> queryWrapper = getQueryWrapper(paramMap);
@ -38,6 +48,46 @@ public class SewageDevServiceImpl extends ServiceImpl<SewageDevMapper, SewageDev
return dealList(this.list(queryWrapper));
}
@Override
public void add(SewageDev sewageDev) {
SewageDev dev = sewageDevMapper.selectOne(new LambdaQueryWrapper<SewageDev>()
.eq(SewageDev::getDevSn, sewageDev.getDevSn()));
if (dev != null) {
throw new OpenAlertException("devSn已存在");
}
baseMapper.insert(sewageDev);
insertThresholdIf(sewageDev);
}
private void insertThresholdIf(SewageDev sewageDev) {
SewageWarnThreshold threshold = sewageWarnThresholdMapper.selectOne(new LambdaQueryWrapper<SewageWarnThreshold>()
.eq(SewageWarnThreshold::getDevSn, sewageDev.getDevSn()));
SewageWarnThreshold entity = new SewageWarnThreshold();
entity.setProjectSn(sewageDev.getProjectSn());
entity.setDevSn(sewageDev.getDevSn());
if (threshold == null) {
sewageWarnThresholdMapper.insert(entity);
} else {
sewageWarnThresholdMapper.update(entity, new LambdaQueryWrapper<SewageWarnThreshold>()
.eq(SewageWarnThreshold::getDevSn, sewageDev.getDevSn()));
}
}
@Override
public void edit(SewageDev sewageDev) {
SewageDev dev = sewageDevMapper.selectOne(new LambdaQueryWrapper<SewageDev>()
.eq(SewageDev::getDevSn, sewageDev.getDevSn())
.ne(SewageDev::getId, sewageDev.getId())
);
if (dev != null) {
throw new OpenAlertException("devSn已存在");
}
baseMapper.updateById(sewageDev);
insertThresholdIf(sewageDev);
}
private QueryWrapper<SewageDev> getQueryWrapper(HashMap<String, Object> paramMap) {
QueryWrapper<SewageDev> queryWrapper = QueryGenerator.initPageQueryWrapper(SewageDev.class, paramMap);
queryWrapper.orderByDesc(RefUtil.fieldNameUlc(SewageDev::getId));

View File

@ -1,16 +1,21 @@
package com.zhgd.xmgl.modules.sewage.service.impl;
import com.zhgd.xmgl.util.RefUtil;
import com.zhgd.xmgl.modules.sewage.entity.SewageWarnThreshold;
import com.zhgd.xmgl.modules.sewage.mapper.SewageWarnThresholdMapper;
import com.zhgd.xmgl.modules.sewage.service.ISewageWarnThresholdService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.util.PageUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.modules.sewage.entity.SewageDev;
import com.zhgd.xmgl.modules.sewage.entity.SewageWarnThreshold;
import com.zhgd.xmgl.modules.sewage.mapper.SewageDevMapper;
import com.zhgd.xmgl.modules.sewage.mapper.SewageWarnThresholdMapper;
import com.zhgd.xmgl.modules.sewage.service.ISewageWarnThresholdService;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
@ -23,6 +28,11 @@ import java.util.List;
*/
@Service
public class SewageWarnThresholdServiceImpl extends ServiceImpl<SewageWarnThresholdMapper, SewageWarnThreshold> implements ISewageWarnThresholdService {
@Autowired
SewageWarnThresholdMapper sewageWarnThresholdMapper;
@Autowired
SewageDevMapper sewageDevMapper;
@Override
public IPage<SewageWarnThreshold> queryPageList(HashMap<String, Object> paramMap) {
QueryWrapper<SewageWarnThreshold> queryWrapper = getQueryWrapper(paramMap);
@ -38,6 +48,25 @@ public class SewageWarnThresholdServiceImpl extends ServiceImpl<SewageWarnThresh
return dealList(this.list(queryWrapper));
}
@Override
public SewageWarnThreshold queryByDevSn(String devSn) {
SewageWarnThreshold threshold = sewageWarnThresholdMapper.selectOne(new LambdaQueryWrapper<SewageWarnThreshold>()
.eq(SewageWarnThreshold::getDevSn, devSn));
if (threshold == null) {
SewageDev dev = sewageDevMapper.selectOne(new LambdaQueryWrapper<SewageDev>()
.eq(SewageDev::getDevSn, devSn));
if (dev == null) {
throw new OpenAlertException("devSn不存在");
}
SewageWarnThreshold entity = new SewageWarnThreshold();
entity.setDevSn(devSn);
entity.setProjectSn(dev.getProjectSn());
sewageWarnThresholdMapper.insert(entity);
threshold = entity;
}
return threshold;
}
private QueryWrapper<SewageWarnThreshold> getQueryWrapper(HashMap<String, Object> paramMap) {
QueryWrapper<SewageWarnThreshold> queryWrapper = QueryGenerator.initPageQueryWrapper(SewageWarnThreshold.class, paramMap);
queryWrapper.orderByDesc(RefUtil.fieldNameUlc(SewageWarnThreshold::getId));

View File

@ -1,8 +1,11 @@
package com.zhgd.xmgl.modules.worker.controller;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
import com.zhgd.xmgl.modules.worker.entity.dto.GetWorkerInfoByDevDto;
import com.zhgd.xmgl.modules.worker.entity.vo.GetWorkerInfoByDevVo;
import com.zhgd.xmgl.modules.worker.entity.vo.UploadAttendanceByDevDto;
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -17,6 +20,8 @@ import org.springframework.web.bind.annotation.*;
public class UfaceDevApiController {
@Autowired
IWorkerInfoService workerInfoService;
@Autowired
IWorkerAttendanceService workerAttendanceService;
@ApiOperation(value = "下载白名单(拉取允许通行人员信息)", notes = "下载白名单(拉取允许通行人员信息)", httpMethod = "GET")
@GetMapping(value = "/service-address/workers")
@ -26,8 +31,8 @@ public class UfaceDevApiController {
@ApiOperation(value = "考勤照片上传", notes = "考勤照片上传", httpMethod = "POST")
@PostMapping(value = "/service-address/photo")
public Result<GetWorkerInfoByDevVo> uploadAttendanceByDev(@RequestBody GetWorkerInfoByDevDto dto) {
return Result.success(workerInfoService.getWorkerInfoByDev(dto));
public Result<GetWorkerInfoByDevVo> uploadAttendanceByDev(@RequestBody UploadAttendanceByDevDto dto) {
return Result.success(workerAttendanceService.uploadAttendanceByDev(dto));
}

View File

@ -54,10 +54,10 @@ public class WorkerAttendance implements Serializable {
@ApiModelProperty(value = "项目sn")
private java.lang.String projectSn;
/**
* 卡类型 1 IC卡 2人脸识别 3 指纹识别 4补卡操作5二维码6蓝牙,7手机打卡,8车辆通行
* 卡类型 1 IC卡 2人脸识别 3 指纹识别 4补卡操作5二维码6蓝牙,7手机打卡,8车辆通行,9身份证
*/
@Excel(name = "卡类型 1 IC卡 2人脸识别 3 指纹识别 4补卡操作5二维码6蓝牙,7手机打卡,8车辆通行", width = 15)
@ApiModelProperty(value = "卡类型 1 IC卡 2人脸识别 3 指纹识别 4补卡操作5二维码6蓝牙,7手机打卡,8车辆通行")
@Excel(name = "卡类型 1 IC卡 2人脸识别 3 指纹识别 4补卡操作5二维码6蓝牙,7手机打卡,8车辆通行,9身份证", width = 15)
@ApiModelProperty(value = "卡类型 1 IC卡 2人脸识别 3 指纹识别 4补卡操作5二维码6蓝牙,7手机打卡,8车辆通行,9身份证")
private java.lang.Integer cardType;
/**
* 考勤图片URL
@ -83,31 +83,49 @@ public class WorkerAttendance implements Serializable {
@Excel(name = "考勤状态 1、正常 2、迟到 3、早退 4、加班5、缺卡", width = 15)
@ApiModelProperty(value = "考勤状态 1、正常 2、迟到 3、早退 4、加班5、缺卡")
private java.lang.Integer attendanceStatus;
/**
* 温度
*/
@ApiModelProperty(value = "温度")
private java.lang.String temperature;
/**
* 通行设备唯一标识
*/
@ApiModelProperty(value = "通行设备唯一标识")
private java.lang.String devSn;
/**
* 是否计入考勤统计
*/
@ApiModelProperty(value = "是否计入考勤统计")
private java.lang.Integer isStatistics;
/**
* 车牌号
*/
@ApiModelProperty(value = "车牌号")
private java.lang.String carNumber;
/**
* 健康码状态0无1红码2黄码3绿码
*/
@ApiModelProperty(value = "健康码状态0无1红码2黄码3绿码")
private java.lang.Integer healthCode;
/**
* 核酸时间
*/
@ApiModelProperty(value = "核酸时间")
private java.lang.String nucleicAcidTime;
/**
* 核酸结果 0 未知,1 阴性2 阳性
*/
@ApiModelProperty(value = "核酸结果 0 未知,1 阴性2 阳性")
private java.lang.Integer nucleicAcidResult;
/**
* 疫苗接种时间
*/
@ApiModelProperty(value = "疫苗接种时间")
private java.lang.String vaccinateTime;
/**
* 疫苗接种次数0未接种1接种一针2接种两针3接种三针
*/
@ApiModelProperty(value = "疫苗接种次数0未接种1接种一针2接种两针3接种三针")
private java.lang.Integer vaccinateState;
/**

View File

@ -31,7 +31,7 @@ public class GetWorkerInfoByDevVo {
@ApiModelProperty("身份证号,未加密明文传输")
@JsonProperty("idCardNumber")
private String idCardNumber;
@ApiModelProperty("工人编号(存身份证号)")
@ApiModelProperty("工人编号")
@JsonProperty("workerId")
private String workerId;
@ApiModelProperty("工人照片")

View File

@ -5,36 +5,70 @@ import lombok.Data;
@Data
public class UploadAttendanceByDevDto {
/*
base64 string 图片base64编码 没有文件类型的头
projectId string 项目编号
deviceId string 设备编号
fileName string 图片名称
workerId string 1系统中的人员编号 2防疫设备 身份证号或身份证后4位
time string 通行时间毫秒时间戳
temp string 体温
currentChipCode string 帽子编号
direction string 进出方向默认 in inout
type string 通行类型默认 face face 人脸 idcard 身份证 health_qr 健康码 pass_qr 通行二维码
pos_type string gps,baidugis,lbs
pos_lat sting 纬度
pos_lng sting 经度
/**
* 图片base64编码 没有文件类型的头
*/
@ApiModelProperty("")
@ApiModelProperty("图片base64编码 (没有文件类型的头)")
private String base64;
/**
* 项目编号
*/
@ApiModelProperty("项目编号")
private String projectId;
/**
* 设备编号
*/
@ApiModelProperty("设备编号")
private String deviceId;
/**
* 图片名称
*/
@ApiModelProperty("图片名称")
private String fileName;
/**
* 1系统中的人员编号 2防疫设备 身份证号或身份证后4位
*/
@ApiModelProperty("1、系统中的人员编号 2、防疫设备 身份证号或身份证后4位")
private String workerId;
/**
* 通行时间毫秒时间戳
*/
@ApiModelProperty("通行时间。毫秒时间戳")
private String time;
/**
* 体温
*/
@ApiModelProperty("体温")
private String temp;
/**
* 帽子编号
*/
@ApiModelProperty("帽子编号")
private String currentChipCode;
/**
* 进出方向默认 in inout
*/
@ApiModelProperty("进出方向。默认 in inout")
private String direction;
/**
* 通行类型默认 face face 人脸 idcard 身份证 health_qr 健康码 pass_qr 通行二维码
*/
@ApiModelProperty("通行类型。默认 face。 face 人脸, idcard 身份证, health_qr 健康码, pass_qr 通行二维码")
private String type;
/**
* gps,baidugis,lbs
*/
@ApiModelProperty("gps,baidugis,lbs")
private String pos_type;
/**
* 纬度
*/
@ApiModelProperty("纬度")
private String pos_lat;
/**
* 经度
*/
@ApiModelProperty("经度")
private String pos_lng;
}

View File

@ -9,6 +9,8 @@ import com.zhgd.xmgl.entity.vo.NumberTimeTableVo;
import com.zhgd.xmgl.modules.worker.entity.WorkerAttendance;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhgd.xmgl.modules.worker.entity.dto.GetPassRecordDto;
import com.zhgd.xmgl.modules.worker.entity.vo.GetWorkerInfoByDevVo;
import com.zhgd.xmgl.modules.worker.entity.vo.UploadAttendanceByDevDto;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@ -75,4 +77,6 @@ public interface IWorkerAttendanceService extends IService<WorkerAttendance> {
List<NumberTimeTableVo> queryAttendanceTrend(Map<String, Object> map);
AttendanceOfEachCompanyVo queryAttendanceOfEachCompany(Map<String, Object> map);
GetWorkerInfoByDevVo uploadAttendanceByDev(UploadAttendanceByDevDto dto);
}

View File

@ -123,6 +123,5 @@ public interface IWorkerInfoService extends IService<WorkerInfo> {
WorkerAgeVo statisticsWorkerAge(Map<String, Object> map);
GetWorkerInfoByDevVo getWorkerInfoByDev(GetWorkerInfoByDevDto dto);
}

View File

@ -29,7 +29,9 @@ import com.zhgd.xmgl.modules.project.mapper.ProjectUfaceConfigMapper;
import com.zhgd.xmgl.modules.worker.entity.*;
import com.zhgd.xmgl.modules.worker.entity.bo.WorkerAttendanceBo;
import com.zhgd.xmgl.modules.worker.entity.dto.GetPassRecordDto;
import com.zhgd.xmgl.modules.worker.entity.vo.GetWorkerInfoByDevVo;
import com.zhgd.xmgl.modules.worker.entity.vo.ProjectCompanyWorkTotal;
import com.zhgd.xmgl.modules.worker.entity.vo.UploadAttendanceByDevDto;
import com.zhgd.xmgl.modules.worker.mapper.*;
import com.zhgd.xmgl.modules.worker.service.IWorkerAttendanceService;
import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService;
@ -64,6 +66,8 @@ import static com.zhgd.xmgl.config.FaceRunner.faceEngine;
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class WorkerAttendanceServiceImpl extends ServiceImpl<WorkerAttendanceMapper, WorkerAttendance> implements IWorkerAttendanceService {
@Autowired
private UploadFileService uploadFileService;
@Autowired
private IWorkerInfoService workerInfoService;
@Autowired
@ -78,9 +82,6 @@ public class WorkerAttendanceServiceImpl extends ServiceImpl<WorkerAttendanceMap
private UfaceDevMapper ufaceDevMapper;
@Autowired
private IWorkerMonthAttendanceStatisticsService workerMonthAttendanceStatisticsService;
@Autowired
private UploadFileService uploadFileService;
@Autowired
private ProjectUfaceConfigMapper projectUfaceConfigMapper;
@Autowired
@ -93,9 +94,10 @@ public class WorkerAttendanceServiceImpl extends ServiceImpl<WorkerAttendanceMap
private GovtOpenApiService govtOpenApiService;
@Autowired
private EnvironmentUtil environmentUtil;
@Autowired
private ICompanyService companyService;
@Value("${serverUrl}")
private String serverUrl;
@Value("${basePath}")
private String basePath;
@Value("${imageType}")
@ -1063,6 +1065,79 @@ status 状态码 String 1表示成功其余表示失败
return vo;
}
@Override
public GetWorkerInfoByDevVo uploadAttendanceByDev(UploadAttendanceByDevDto dto) {
WorkerInfo workerInfo = workerInfoMapper.selectById(dto.getWorkerId());
if (workerInfo == null) {
throw new OpenAlertException("workerId不存在");
}
UfaceDev dev = ufaceDevMapper.selectOne(new LambdaQueryWrapper<UfaceDev>()
.eq(UfaceDev::getDevSn, dto.getDeviceId()));
if (dev == null) {
throw new OpenAlertException("deviceId不存在");
}
WorkerAttendance attendance = new WorkerAttendance();
attendance.setPersonSn(workerInfo.getPersonSn());
attendance.setPassType(getPassType(dto.getDirection()));
attendance.setCreateTime(DateUtil.formatDateTime(new Date(dto.getTime())));
attendance.setProjectSn(workerInfo.getProjectSn());
attendance.setCardType(getCardType(dto.getType()));
FileInfo fileInfo = uploadFileService.uploadFileBase64Image(dto.getBase64());
attendance.setImageUrl(fileInfo.getUrl());
attendance.setAttendanceType(1);
attendance.setPassagewayName(dev.getDevName());
attendance.setAttendanceStatus(1);
attendance.setTemperature(dto.getTemp());
attendance.setDevSn(dev.getDevSn());
attendance.setIsStatistics(1);
baseMapper.insert(attendance);
HashMap<String, String> rtMap = new HashMap<>();
rtMap.put("path", serverUrl + "/image/" + fileInfo.getUrl());
GetWorkerInfoByDevVo vo = new GetWorkerInfoByDevVo();
vo.setSuccess(true);
vo.setCode(0);
vo.setMessage("success");
vo.setTime(System.currentTimeMillis() / 1000);
vo.setData(rtMap);
vo.setEvent("photo");
return vo;
}
private Integer getCardType(String type) {
if (StringUtils.isBlank(type)) {
return null;
}
//卡类型 1 IC卡 2人脸识别 3 指纹识别 4补卡操作5二维码6蓝牙,7手机打卡,8车辆通行,9身份证
//face 人脸 idcard 身份证 health_qr 健康码 pass_qr 通行二维码
switch (type) {
case "face":
return 2;
case "idcard":
return 9;
case "health_qr":
return 5;
case "pass_qr":
return 5;
}
return null;
}
private Integer getPassType(String direction) {
if (StringUtils.isBlank(direction)) {
return null;
}
//inout
switch (direction) {
case "in":
return 1;
case "out":
return 2;
}
return null;
}
public WorkerInfo getWorkerInfoByImage(String personImage, String projectSn) {
WorkerInfo info = null;
File file = null;

View File

@ -1913,13 +1913,14 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
return getWorkerInfoByDevVo;
}
private void addDatas(List<WorkerInfo> infos, String del, ArrayList<GetWorkerInfoByDevVo.Worker> datas) {
for (WorkerInfo workerInfo : infos) {
GetWorkerInfoByDevVo.Worker worker = new GetWorkerInfoByDevVo.Worker();
worker.setUpdate(String.valueOf(workerInfo.getUpdateTime().getTime() / 1000));
worker.setName(workerInfo.getWorkerName());
worker.setIdCardNumber(workerInfo.getIdCard());
worker.setWorkerId(String.valueOf(workerInfo.getIdCard()));
worker.setWorkerId(String.valueOf(workerInfo.getId()));
if (StringUtils.isNotBlank(workerInfo.getFieldAcquisitionUrl())) {
worker.setPhoto(serverUrl + "/image/" + workerInfo.getFieldAcquisitionUrl());
}

View File

@ -271,6 +271,9 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/xmgl/smartBeamFieldMaintainData/getAvgData").permitAll()
.antMatchers("/xmgl/smartBeamFieldMakeBeamPedestal/list").permitAll()
.antMatchers("/xmgl/smartBeamFieldBeam/countSmartBeamFieldBeam").permitAll()
.antMatchers("/service-address/workers").permitAll()
.antMatchers("/service-address/photo").permitAll()
.antMatchers("/xmgl/sewageData/add").permitAll()
.antMatchers(HttpMethod.OPTIONS, "/**").anonymous()
.anyRequest().authenticated() // 剩下所有的验证都需要验证
.and()