模拟数据生成

This commit is contained in:
guoshengxiong 2025-05-27 09:14:43 +08:00
parent 9fb4d2bfea
commit d0bc30157d
25 changed files with 1253 additions and 109 deletions

View File

@ -0,0 +1,146 @@
package com.zhgd.xmgl.modules.rt.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.annotation.OperLog;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.modules.rt.entity.MockRtToolHistoryConfig;
import com.zhgd.xmgl.modules.rt.service.IMockRtToolHistoryConfigService;
import com.zhgd.xmgl.util.mysql.MysqlDataUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.simpleframework.xml.core.Validate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
/**
* @Title: Controller
* @Description: 模拟工器具历史数据配置
* @author pds
* @date 2025-05-26
* @version V1.0
*/
@RestController
@RequestMapping("/xmgl/mockRtToolHistoryConfig")
@Slf4j
@Api(tags = "模拟工器具历史数据配置相关Api")
public class MockRtToolHistoryConfigController {
@Autowired
private IMockRtToolHistoryConfigService mockRtToolHistoryConfigService;
/**
* 分页列表查询
*
* @return
*/
@OperLog(operModul = "模拟工器具历史数据配置管理", operType = "分页查询", operDesc = "分页列表查询模拟工器具历史数据配置信息")
@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<MockRtToolHistoryConfig>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
return Result.success(mockRtToolHistoryConfigService.queryPageList(param));
}
/**
* 列表查询
*
* @return
*/
@OperLog(operModul = "模拟工器具历史数据配置管理", operType = "列表查询", operDesc = "列表查询模拟工器具历史数据配置信息")
@ApiOperation(value = "列表查询模拟工器具历史数据配置信息", notes = "列表查询模拟工器具历史数据配置信息", httpMethod = "GET")
@GetMapping(value = "/list")
public Result<List<MockRtToolHistoryConfig>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
return Result.success(mockRtToolHistoryConfigService.queryList(param));
}
/**
* 添加
*
* @param mockRtToolHistoryConfig
* @return
*/
@OperLog(operModul = "模拟工器具历史数据配置管理", operType = "添加", operDesc = "添加模拟工器具历史数据配置信息")
@ApiOperation(value = "添加模拟工器具历史数据配置信息", notes = "添加模拟工器具历史数据配置信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<MockRtToolHistoryConfig> add(@RequestBody @Validate MockRtToolHistoryConfig mockRtToolHistoryConfig) {
mockRtToolHistoryConfigService.add(mockRtToolHistoryConfig);
return Result.ok();
}
/**
* 编辑
*
* @param mockRtToolHistoryConfig
* @return
*/
@OperLog(operModul = "模拟工器具历史数据配置管理", operType = "编辑", operDesc = "编辑模拟工器具历史数据配置信息")
@ApiOperation(value = "编辑模拟工器具历史数据配置信息", notes = "编辑模拟工器具历史数据配置信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<MockRtToolHistoryConfig> edit(@RequestBody MockRtToolHistoryConfig mockRtToolHistoryConfig) {
mockRtToolHistoryConfigService.edit(mockRtToolHistoryConfig);
return Result.ok();
}
/**
* 通过id删除
*
* @return
*/
@OperLog(operModul = "模拟工器具历史数据配置管理", operType = "删除", operDesc = "删除模拟工器具历史数据配置信息")
@ApiOperation(value = "删除模拟工器具历史数据配置信息", notes = "删除模拟工器具历史数据配置信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "模拟工器具历史数据配置ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}")
@PostMapping(value = "/delete")
public Result<MockRtToolHistoryConfig> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
mockRtToolHistoryConfigService.delete(MapUtils.getString(map, "id"));
return Result.ok();
}
/**
* 通过id查询
*
* @param id
* @return
*/
@OperLog(operModul = "模拟工器具历史数据配置管理", operType = "通过id查询", operDesc = "通过id查询模拟工器具历史数据配置信息")
@ApiOperation(value = "通过id查询模拟工器具历史数据配置信息", notes = "通过id查询模拟工器具历史数据配置信息", httpMethod = "GET")
@ApiImplicitParam(name = "id", value = "模拟工器具历史数据配置ID", paramType = "query", required = true, dataType = "Integer")
@GetMapping(value = "/queryById")
public Result<MockRtToolHistoryConfig> queryById(@RequestParam(name = "id", required = true) String id) {
return Result.success(mockRtToolHistoryConfigService.queryById(id));
}
@OperLog(operModul = "模拟工器具历史数据配置管理", operType = "保存", operDesc = "保存模拟工器具历史数据配置信息")
@ApiOperation(value = "保存模拟工器具历史数据配置信息", notes = "保存模拟工器具历史数据配置信息", httpMethod = "POST")
@PostMapping(value = "/save")
public Result saveEntity(@RequestBody @Validate MockRtToolHistoryConfig mockWorkerAttendanceConfig) {
mockRtToolHistoryConfigService.saveEntity(mockWorkerAttendanceConfig);
return Result.ok();
}
@OperLog(operModul = "模拟工器具历史数据配置管理", operType = "重置", operDesc = "重置模拟工器具历史数据配置信息")
@ApiOperation(value = "重置模拟工器具历史数据配置信息", notes = "重置模拟工器具历史数据配置信息", httpMethod = "POST")
@PostMapping(value = "/reset")
public Result reset(@RequestBody @Validate MockRtToolHistoryConfig mockWorkerAttendanceConfig) {
MockRtToolHistoryConfig one = mockRtToolHistoryConfigService.getOne(new LambdaQueryWrapper<MockRtToolHistoryConfig>()
.eq(MockRtToolHistoryConfig::getProjectSn, mockWorkerAttendanceConfig.getProjectSn())
);
if (one != null) {
MysqlDataUtil.setFieldsToNull(mockRtToolHistoryConfigService, MockRtToolHistoryConfig.class, one.getId());
}
return Result.ok();
}
}

View File

@ -1,27 +1,34 @@
package com.zhgd.xmgl.modules.rt.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.rt.entity.MockRtToolHistoryConfig;
import com.zhgd.xmgl.modules.rt.entity.RtTool;
import com.zhgd.xmgl.modules.rt.entity.RtToolHistory;
import com.zhgd.xmgl.modules.rt.service.IMockRtToolHistoryConfigService;
import com.zhgd.xmgl.modules.rt.service.IRtToolHistoryService;
import com.zhgd.xmgl.modules.rt.service.IRtToolService;
import com.zhgd.xmgl.util.EntityUtils;
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 io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.simpleframework.xml.core.Validate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
import com.zhgd.jeecg.common.api.vo.Result;
import org.apache.commons.collections.MapUtils;
import org.simpleframework.xml.core.Validate;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -38,6 +45,12 @@ import org.springframework.web.bind.annotation.*;
public class RtToolHistoryController {
@Autowired
private IRtToolHistoryService rtToolHistoryService;
@Lazy
@Autowired
private IMockRtToolHistoryConfigService mockRtToolHistoryConfigService;
@Lazy
@Autowired
private IRtToolService rtToolService;
/**
* 分页列表查询
@ -136,4 +149,53 @@ public class RtToolHistoryController {
return result;
}
@ApiOperation(value = "生成榕图-工器具历史数据", notes = "生成榕图-工器具历史数据", httpMethod = "POST")
@PostMapping(value = "/mockData")
public Result mockData(@RequestBody MockRtToolHistoryConfig config) {
if (config.getStartTime() == null) {
throw new OpenAlertException("开始时间不能为空");
}
if (config.getEndTime() == null) {
throw new OpenAlertException("结束时间不能为空");
}
mockRtToolHistoryConfigService.saveEntity(config);
List<String> devIdList = StrUtil.split(config.getDevSns(), ",");
ThreadLocalRandom random = ThreadLocalRandom.current();
List<RtToolHistory> datas = new ArrayList<>();
Map<String, RtTool> devSnMap = rtToolService.list(new LambdaQueryWrapper<RtTool>()
.eq(RtTool::getProjectSn, config.getProjectSn())).stream().collect(Collectors.toMap(RtTool::getDevSn, Function.identity(), (o1, o2) -> o1));
for (String devId : devIdList) {
for (int i = 0; i < config.getDevGenerateNum(); i++) {
RtToolHistory data = new RtToolHistory();
data.setDevSn(devId);
data.setToolName(Optional.ofNullable(devSnMap.get(devId)).map(RtTool::getToolName).orElse(null));
EntityUtils.setRandomIntByPoint(config.getToolStatuses(), data::setToolStatus, random);
EntityUtils.setRandomDateTime(config.getStartTime(), config.getEndTime(), data::setEntryTime, random);
EntityUtils.setRandomDateTime(data.getEntryTime(), config.getEndTime(), data::setExitTime, random);
data.setProjectSn(config.getProjectSn());
datas.add(data);
}
}
if (CollUtil.isNotEmpty(datas)) {
rtToolHistoryService.saveBatch(datas);
}
return Result.ok();
}
@ApiOperation(value = "批量删除榕图-工器具历史数据", notes = "批量删除榕图-工器具历史数据", httpMethod = "POST")
@ApiImplicitParam(name = "ids", value = "榕图-工器具历史数据ID字符串多个以,分割)", paramType = "body", required = true, dataType = "String")
@PostMapping(value = "/deleteBatch")
public Result deleteBatch(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
String ids = MapUtils.getString(paramMap, "ids");
Result result = new Result<>();
if (ids == null || "".equals(ids.trim())) {
result.error500("参数不识别!");
} else {
rtToolHistoryService.removeByIds(Arrays.asList(ids.split(",")));
Result.success("删除成功!");
}
return result;
}
}

View File

@ -0,0 +1,80 @@
package com.zhgd.xmgl.modules.rt.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
* @Description: 模拟工器具历史数据配置
* @author pds
* @date 2025-05-26
* @version V1.0
*/
@Data
@TableName("mock_rt_tool_history_config")
@ApiModel(value = "MockRtToolHistoryConfig实体类", description = "MockRtToolHistoryConfig")
public class MockRtToolHistoryConfig implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.Long id;
/**
* 所属项目SN
*/
@ApiModelProperty(value = "所属项目SN")
private java.lang.String projectSn;
/**
* 设备sn多个,分隔
*/
@ApiModelProperty(value = "设备sn多个,分隔)")
private java.lang.String devSns;
/**
* 每个设备随机生成数量
*/
@ApiModelProperty(value = "每个设备随机生成数量")
private java.lang.Integer devGenerateNum;
/**
* 开始时间
*/
@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 startTime;
/**
* 结束时间
*/
@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 endTime;
/**
* 创建时间
*/
@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 createDate;
/**
* 更新时间
*/
@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 updateDate;
/**
* 工器具状态1在场2离场多个数字,分割
*/
@ApiModelProperty(value = "工器具状态1在场2离场多个数字,分割)")
private java.lang.String toolStatuses;
}

View File

@ -1,17 +1,16 @@
package com.zhgd.xmgl.modules.rt.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
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;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
* @Description: 榕图-工器具历史数据
@ -44,10 +43,10 @@ public class RtToolHistory implements Serializable {
@ApiModelProperty(value = "工器具名称")
private java.lang.String toolName;
/**
* 工器具状态
* 工器具状态1在场2离场
*/
@Excel(name = "工器具状态", width = 15)
@ApiModelProperty(value = "工器具状态")
@Excel(name = "工器具状态1在场2离场", width = 15)
@ApiModelProperty(value = "工器具状态1在场2离场")
private java.lang.Integer toolStatus;
/**
* 进场时间
@ -87,4 +86,9 @@ public class RtToolHistory implements Serializable {
@Excel(name = "项目sn", width = 15)
@ApiModelProperty(value = "项目sn")
private java.lang.String projectSn;
@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 mockTime;
}

View File

@ -0,0 +1,51 @@
package com.zhgd.xmgl.modules.rt.mapper;
import java.util.List;
import java.util.HashMap;
import com.zhgd.xmgl.modules.rt.entity.MockRtToolHistoryConfig;
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 org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 模拟工器具历史数据配置
* @author pds
* @date 2025-05-26
* @version V1.0
*/
@Mapper
public interface MockRtToolHistoryConfigMapper extends BaseMapper<MockRtToolHistoryConfig> {
/**
* 分页列表查询模拟工器具历史数据配置信息
*
* @param page
* @param queryWrapper
* @param param
* @return
*/
IPage<MockRtToolHistoryConfig> queryList(Page<MockRtToolHistoryConfig> page, @Param(Constants.WRAPPER) QueryWrapper<MockRtToolHistoryConfig> queryWrapper, @Param("param") HashMap<String, Object> param);
/**
* 列表查询模拟工器具历史数据配置信息
*
* @param queryWrapper
* @param param
* @return
*/
List<MockRtToolHistoryConfig> queryList(@Param(Constants.WRAPPER) QueryWrapper<MockRtToolHistoryConfig> queryWrapper, @Param("param") HashMap<String, Object> param);
/**
* 通过id查询模拟工器具历史数据配置信息
*
* @param id
* @return
*/
MockRtToolHistoryConfig queryById(String id);
}

View File

@ -0,0 +1,18 @@
<?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.rt.mapper.MockRtToolHistoryConfigMapper">
<select id="queryList" resultType="com.zhgd.xmgl.modules.rt.entity.MockRtToolHistoryConfig">
select * from (
select t.*
from mock_rt_tool_history_config t
)t
${ew.customSqlSegment}
</select>
<select id="queryById" resultType="com.zhgd.xmgl.modules.rt.entity.MockRtToolHistoryConfig">
select * from (
select t.*
from mock_rt_tool_history_config t
)t
where t.id = #{id}
</select>
</mapper>

View File

@ -0,0 +1,66 @@
package com.zhgd.xmgl.modules.rt.service;
import com.zhgd.xmgl.modules.rt.entity.MockRtToolHistoryConfig;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.HashMap;
import java.util.List;
/**
* @Description: 模拟工器具历史数据配置
* @author pds
* @date 2025-05-26
* @version V1.0
*/
public interface IMockRtToolHistoryConfigService extends IService<MockRtToolHistoryConfig> {
/**
* 分页列表查询模拟工器具历史数据配置信息
*
* @param param 参数map
* @return
*/
IPage<MockRtToolHistoryConfig> queryPageList(HashMap<String, Object> param);
/**
* 列表查询模拟工器具历史数据配置信息
*
* @param param 参数map
* @return
*/
List<MockRtToolHistoryConfig> queryList(HashMap<String, Object> param);
/**
* 添加模拟工器具历史数据配置信息
*
* @param mockRtToolHistoryConfig 模拟工器具历史数据配置
* @return
*/
void add(MockRtToolHistoryConfig mockRtToolHistoryConfig);
/**
* 编辑模拟工器具历史数据配置信息
*
* @param mockRtToolHistoryConfig 模拟工器具历史数据配置
* @return
*/
void edit(MockRtToolHistoryConfig mockRtToolHistoryConfig);
/**
* 根据id删除模拟工器具历史数据配置信息
*
* @param id 模拟工器具历史数据配置的id
* @return
*/
void delete(String id);
/**
* 根据id查询模拟工器具历史数据配置信息
*
* @param id 模拟工器具历史数据配置的id
* @return
*/
MockRtToolHistoryConfig queryById(String id);
void saveEntity(MockRtToolHistoryConfig mockWorkerAttendanceConfig);
}

View File

@ -0,0 +1,104 @@
package com.zhgd.xmgl.modules.rt.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.rt.entity.MockRtToolHistoryConfig;
import com.zhgd.xmgl.modules.rt.mapper.MockRtToolHistoryConfigMapper;
import com.zhgd.xmgl.modules.rt.service.IMockRtToolHistoryConfigService;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import com.zhgd.xmgl.util.mysql.MysqlDataUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
/**
* @Description: 模拟工器具历史数据配置
* @author pds
* @date 2025-05-26
* @version V1.0
*/
@Service
public class MockRtToolHistoryConfigServiceImpl extends ServiceImpl<MockRtToolHistoryConfigMapper, MockRtToolHistoryConfig> implements IMockRtToolHistoryConfigService {
@Autowired
private MockRtToolHistoryConfigMapper mockRtToolHistoryConfigMapper;
@Override
public IPage<MockRtToolHistoryConfig> queryPageList(HashMap<String, Object> param) {
QueryWrapper<MockRtToolHistoryConfig> queryWrapper = this.getQueryWrapper(param);
Page<MockRtToolHistoryConfig> page = PageUtil.getPage(param);
IPage<MockRtToolHistoryConfig> pageList = baseMapper.queryList(page, queryWrapper, param);
pageList.setRecords(this.dealList(pageList.getRecords()));
return pageList;
}
@Override
public List<MockRtToolHistoryConfig> queryList(HashMap<String, Object> param) {
QueryWrapper<MockRtToolHistoryConfig> queryWrapper = getQueryWrapper(param);
return dealList(baseMapper.queryList(queryWrapper, param));
}
private QueryWrapper<MockRtToolHistoryConfig> getQueryWrapper(HashMap<String, Object> param) {
QueryWrapper<MockRtToolHistoryConfig> queryWrapper = QueryGenerator.initPageQueryWrapper(MockRtToolHistoryConfig.class, param, true);
queryWrapper.orderByDesc(RefUtil.fieldNameUlc(MockRtToolHistoryConfig::getId));
return queryWrapper;
}
private List<MockRtToolHistoryConfig> dealList(List<MockRtToolHistoryConfig> list) {
return list;
}
@Override
public void add(MockRtToolHistoryConfig mockRtToolHistoryConfig) {
mockRtToolHistoryConfig.setId(null);
baseMapper.insert(mockRtToolHistoryConfig);
}
@Override
public void edit(MockRtToolHistoryConfig mockRtToolHistoryConfig) {
MockRtToolHistoryConfig oldMockRtToolHistoryConfig = baseMapper.selectById(mockRtToolHistoryConfig.getId());
if (oldMockRtToolHistoryConfig == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.updateById(mockRtToolHistoryConfig);
}
@Override
public void delete(String id) {
MockRtToolHistoryConfig mockRtToolHistoryConfig = baseMapper.selectById(id);
if (mockRtToolHistoryConfig == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.deleteById(id);
}
@Override
public MockRtToolHistoryConfig queryById(String id) {
MockRtToolHistoryConfig entity = baseMapper.queryById(id);
if (entity == null) {
throw new OpenAlertException("未找到对应实体");
}
return entity;
}
@Override
public void saveEntity(MockRtToolHistoryConfig config) {
MockRtToolHistoryConfig dbConfig = this.getOne(new LambdaQueryWrapper<MockRtToolHistoryConfig>()
.eq(MockRtToolHistoryConfig::getProjectSn, config.getProjectSn()));
if (dbConfig == null) {
this.add(config);
} else {
config.setId(dbConfig.getId());
this.edit(config);
}
MysqlDataUtil.setFieldsToNull(this, config);
}
}

View File

@ -1,22 +1,23 @@
package com.zhgd.xmgl.modules.rt.service.impl;
import com.zhgd.xmgl.modules.rt.entity.RtToolHistory;
import com.zhgd.xmgl.modules.rt.mapper.RtToolHistoryMapper;
import com.zhgd.xmgl.modules.rt.service.IRtToolHistoryService;
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.rt.entity.RtToolHistory;
import com.zhgd.xmgl.modules.rt.mapper.RtToolHistoryMapper;
import com.zhgd.xmgl.modules.rt.service.IRtToolHistoryService;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
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;
import java.util.Objects;
/**
* @Description: 榕图-工器具历史数据
@ -48,7 +49,12 @@ public class RtToolHistoryServiceImpl extends ServiceImpl<RtToolHistoryMapper, R
private QueryWrapper<RtToolHistory> getQueryWrapper(HashMap<String, Object> paramMap) {
String alias = "";
QueryWrapper<RtToolHistory> queryWrapper = QueryGenerator.initPageQueryWrapper(RtToolHistory.class, paramMap, alias);
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(RtToolHistory::getId));
if (Objects.equals(MapUtils.getInteger(paramMap, "mockDesc"), 1)) {
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(RtToolHistory::getMockTime));
} else {
queryWrapper.orderByDesc(alias + RefUtil.fieldNameUlc(RtToolHistory::getId));
}
return queryWrapper;
}

View File

@ -0,0 +1,146 @@
package com.zhgd.xmgl.modules.sewage.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.annotation.OperLog;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.modules.sewage.entity.MockSewageDataConfig;
import com.zhgd.xmgl.modules.sewage.service.IMockSewageDataConfigService;
import com.zhgd.xmgl.util.mysql.MysqlDataUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.simpleframework.xml.core.Validate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
/**
* @Title: Controller
* @Description: 模拟污水数据配置
* @author pds
* @date 2025-05-26
* @version V1.0
*/
@RestController
@RequestMapping("/xmgl/mockSewageDataConfig")
@Slf4j
@Api(tags = "模拟污水数据配置相关Api")
public class MockSewageDataConfigController {
@Autowired
private IMockSewageDataConfigService mockSewageDataConfigService;
/**
* 分页列表查询
*
* @return
*/
@OperLog(operModul = "模拟污水数据配置管理", operType = "分页查询", operDesc = "分页列表查询模拟污水数据配置信息")
@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<MockSewageDataConfig>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
return Result.success(mockSewageDataConfigService.queryPageList(param));
}
/**
* 列表查询
*
* @return
*/
@OperLog(operModul = "模拟污水数据配置管理", operType = "列表查询", operDesc = "列表查询模拟污水数据配置信息")
@ApiOperation(value = "列表查询模拟污水数据配置信息", notes = "列表查询模拟污水数据配置信息", httpMethod = "GET")
@GetMapping(value = "/list")
public Result<List<MockSewageDataConfig>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
return Result.success(mockSewageDataConfigService.queryList(param));
}
/**
* 添加
*
* @param mockSewageDataConfig
* @return
*/
@OperLog(operModul = "模拟污水数据配置管理", operType = "添加", operDesc = "添加模拟污水数据配置信息")
@ApiOperation(value = "添加模拟污水数据配置信息", notes = "添加模拟污水数据配置信息", httpMethod = "POST")
@PostMapping(value = "/add")
public Result<MockSewageDataConfig> add(@RequestBody @Validate MockSewageDataConfig mockSewageDataConfig) {
mockSewageDataConfigService.add(mockSewageDataConfig);
return Result.ok();
}
/**
* 编辑
*
* @param mockSewageDataConfig
* @return
*/
@OperLog(operModul = "模拟污水数据配置管理", operType = "编辑", operDesc = "编辑模拟污水数据配置信息")
@ApiOperation(value = "编辑模拟污水数据配置信息", notes = "编辑模拟污水数据配置信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<MockSewageDataConfig> edit(@RequestBody MockSewageDataConfig mockSewageDataConfig) {
mockSewageDataConfigService.edit(mockSewageDataConfig);
return Result.ok();
}
/**
* 通过id删除
*
* @return
*/
@OperLog(operModul = "模拟污水数据配置管理", operType = "删除", operDesc = "删除模拟污水数据配置信息")
@ApiOperation(value = "删除模拟污水数据配置信息", notes = "删除模拟污水数据配置信息", httpMethod = "POST")
@ApiImplicitParam(name = "id", value = "模拟污水数据配置ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}")
@PostMapping(value = "/delete")
public Result<MockSewageDataConfig> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
mockSewageDataConfigService.delete(MapUtils.getString(map, "id"));
return Result.ok();
}
/**
* 通过id查询
*
* @param id
* @return
*/
@OperLog(operModul = "模拟污水数据配置管理", operType = "通过id查询", operDesc = "通过id查询模拟污水数据配置信息")
@ApiOperation(value = "通过id查询模拟污水数据配置信息", notes = "通过id查询模拟污水数据配置信息", httpMethod = "GET")
@ApiImplicitParam(name = "id", value = "模拟污水数据配置ID", paramType = "query", required = true, dataType = "Integer")
@GetMapping(value = "/queryById")
public Result<MockSewageDataConfig> queryById(@RequestParam(name = "id", required = true) String id) {
return Result.success(mockSewageDataConfigService.queryById(id));
}
@OperLog(operModul = "模拟污水数据配置管理", operType = "保存", operDesc = "保存模拟污水数据配置信息")
@ApiOperation(value = "保存模拟污水数据配置信息", notes = "保存模拟污水数据配置信息", httpMethod = "POST")
@PostMapping(value = "/save")
public Result saveEntity(@RequestBody @Validate MockSewageDataConfig mockWorkerAttendanceConfig) {
mockSewageDataConfigService.saveEntity(mockWorkerAttendanceConfig);
return Result.ok();
}
@OperLog(operModul = "模拟污水数据配置管理", operType = "重置", operDesc = "重置模拟污水数据配置信息")
@ApiOperation(value = "重置模拟污水数据配置信息", notes = "重置模拟污水数据配置信息", httpMethod = "POST")
@PostMapping(value = "/reset")
public Result reset(@RequestBody @Validate MockSewageDataConfig mockWorkerAttendanceConfig) {
MockSewageDataConfig one = mockSewageDataConfigService.getOne(new LambdaQueryWrapper<MockSewageDataConfig>()
.eq(MockSewageDataConfig::getProjectSn, mockWorkerAttendanceConfig.getProjectSn())
);
if (one != null) {
MysqlDataUtil.setFieldsToNull(mockSewageDataConfigService, MockSewageDataConfig.class, one.getId());
}
return Result.ok();
}
}

View File

@ -1,11 +1,17 @@
package com.zhgd.xmgl.modules.sewage.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gexin.fastjson.JSON;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.enums.ParamEnum;
import com.zhgd.xmgl.modules.sewage.entity.MockSewageDataConfig;
import com.zhgd.xmgl.modules.sewage.entity.SewageData;
import com.zhgd.xmgl.modules.sewage.service.IMockSewageDataConfigService;
import com.zhgd.xmgl.modules.sewage.service.ISewageDataService;
import com.zhgd.xmgl.util.EntityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@ -16,12 +22,13 @@ import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
import java.util.*;
import java.util.concurrent.ThreadLocalRandom;
/**
@ -38,6 +45,9 @@ import java.util.List;
public class SewageDataController {
@Autowired
private ISewageDataService sewageDataService;
@Lazy
@Autowired
private IMockSewageDataConfigService mockSewageDataConfigService;
/**
* 分页列表查询
@ -67,7 +77,6 @@ public class SewageDataController {
return Result.success(sewageDataService.queryList(paramMap));
}
@ApiOperation(value = "列表查询污水设备和最新的一条数据信息", notes = "列表查询污水设备和最新的一条数据信息", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
@ -202,4 +211,55 @@ public class SewageDataController {
return Result.success(values);
}
@ApiOperation(value = "生成污水数据", notes = "生成污水数据", httpMethod = "POST")
@PostMapping(value = "/mockData")
public Result mockData(@RequestBody MockSewageDataConfig config) {
if (config.getStartTime() == null) {
throw new OpenAlertException("开始时间不能为空");
}
if (config.getEndTime() == null) {
throw new OpenAlertException("结束时间不能为空");
}
mockSewageDataConfigService.saveEntity(config);
List<String> devIdList = StrUtil.split(config.getDevSns(), ",");
ThreadLocalRandom random = ThreadLocalRandom.current();
List<SewageData> datas = new ArrayList<>();
for (String devId : devIdList) {
for (int i = 0; i < config.getDevGenerateNum(); i++) {
SewageData data = new SewageData();
data.setDevSn(devId);
EntityUtils.setRandomDouble(config.getPhValueBegin(), config.getPhValueEnd(), data::setPhValue, 2, random);
EntityUtils.setRandomDouble(config.getTurbidityValueBegin(), config.getTurbidityValueEnd(), data::setTurbidityValue, 2, random);
EntityUtils.setRandomDouble(config.getConductivityBegin(), config.getConductivityEnd(), data::setConductivity, 2, random);
EntityUtils.setRandomDouble(config.getDissolvedOxygenBegin(), config.getDissolvedOxygenEnd(), data::setDissolvedOxygen, 2, random);
EntityUtils.setRandomDouble(config.getWaterTemperatureBegin(), config.getWaterTemperatureEnd(), data::setWaterTemperature, 2, random);
EntityUtils.setRandomDouble(config.getFlowVelocityBegin(), config.getFlowVelocityEnd(), data::setFlowVelocity, 2, random);
EntityUtils.setRandomDouble(config.getWaterLevelBegin(), config.getWaterLevelEnd(), data::setWaterLevel, 2, random);
data.setProjectSn(config.getProjectSn());
data.setCreateDate(new Date(random.nextLong(config.getStartTime().getTime(), config.getEndTime().getTime() + 1)));
datas.add(data);
}
}
if (CollUtil.isNotEmpty(datas)) {
sewageDataService.saveBatch(datas);
}
return Result.ok();
}
@ApiOperation(value = "批量删除污水数据", notes = "批量删除污水数据", httpMethod = "POST")
@ApiImplicitParam(name = "ids", value = "污水数据ID字符串多个以,分割)", paramType = "body", required = true, dataType = "String")
@PostMapping(value = "/deleteBatch")
public Result deleteBatch(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
String ids = MapUtils.getString(paramMap, "ids");
Result result = new Result<>();
if (ids == null || "".equals(ids.trim())) {
result.error500("参数不识别!");
} else {
sewageDataService.removeByIds(Arrays.asList(ids.split(",")));
Result.success("删除成功!");
}
return result;
}
}

View File

@ -0,0 +1,145 @@
package com.zhgd.xmgl.modules.sewage.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/**
* @Description: 模拟污水数据配置
* @author pds
* @date 2025-05-26
* @version V1.0
*/
@Data
@TableName("mock_sewage_data_config")
@ApiModel(value = "MockSewageDataConfig实体类", description = "MockSewageDataConfig")
public class MockSewageDataConfig implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private java.lang.Long id;
/**
* 所属项目SN
*/
@ApiModelProperty(value = "所属项目SN")
private java.lang.String projectSn;
/**
* 设备sn多个,分隔
*/
@ApiModelProperty(value = "设备sn多个,分隔)")
private java.lang.String devSns;
/**
* 每个设备随机生成数量
*/
@ApiModelProperty(value = "每个设备随机生成数量")
private java.lang.Integer devGenerateNum;
/**
* 开始时间
*/
@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 startTime;
/**
* 结束时间
*/
@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 endTime;
/**
* 创建时间
*/
@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 createDate;
/**
* 更新时间
*/
@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 updateDate;
/**
* PH值开始
*/
@ApiModelProperty(value = "PH值开始")
private java.lang.Double phValueBegin;
/**
* PH值结束
*/
@ApiModelProperty(value = "PH值结束")
private java.lang.Double phValueEnd;
/**
* 浊度值NTU开始
*/
@ApiModelProperty(value = "浊度值NTU开始")
private java.lang.Double turbidityValueBegin;
/**
* 浊度值NTU结束
*/
@ApiModelProperty(value = "浊度值NTU结束")
private java.lang.Double turbidityValueEnd;
/**
* 电导率μS/cm开始
*/
@ApiModelProperty(value = "电导率μS/cm开始")
private java.lang.Double conductivityBegin;
/**
* 电导率μS/cm结束
*/
@ApiModelProperty(value = "电导率μS/cm结束")
private java.lang.Double conductivityEnd;
/**
* 溶解氧mg/L开始
*/
@ApiModelProperty(value = "溶解氧mg/L开始")
private java.lang.Double dissolvedOxygenBegin;
/**
* 溶解氧mg/L结束
*/
@ApiModelProperty(value = "溶解氧mg/L结束")
private java.lang.Double dissolvedOxygenEnd;
/**
* 水温开始
*/
@ApiModelProperty(value = "水温(℃)开始")
private java.lang.Double waterTemperatureBegin;
/**
* 水温结束
*/
@ApiModelProperty(value = "水温(℃)结束")
private java.lang.Double waterTemperatureEnd;
/**
* 流速m/s开始
*/
@ApiModelProperty(value = "流速m/s开始")
private java.lang.Double flowVelocityBegin;
/**
* 流速m/s结束
*/
@ApiModelProperty(value = "流速m/s结束")
private java.lang.Double flowVelocityEnd;
/**
* 水位m开始
*/
@ApiModelProperty(value = "水位m开始")
private java.lang.Double waterLevelBegin;
/**
* 水位m结束
*/
@ApiModelProperty(value = "水位m结束")
private java.lang.Double waterLevelEnd;
}

View File

@ -1,18 +1,18 @@
package com.zhgd.xmgl.modules.sewage.entity;
import java.io.Serializable;
import java.util.List;
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;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.List;
/**
* @Description: 污水数据
@ -92,26 +92,30 @@ public class SewageData implements Serializable {
@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 createDate;
/**
* 更新时间 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 updateDate;
@ApiModelProperty(value = "创建时间 yyyy-MM-dd HH:mm:ss")
private java.util.Date createDate;
/**
* 更新时间 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 updateDate;
@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 mockTime;
@TableField(exist = false)
@ApiModelProperty(value = "设备名称")
private java.lang.String devName;
@TableField(exist = false)
@ApiModelProperty(value = "设备名称")
private java.lang.String devName;
@TableField(exist = false)
@ApiModelProperty(value = "time")
private java.lang.String time;
@TableField(exist = false)
@ApiModelProperty(value = "time")
private java.lang.String time;
@TableField(exist = false)
@TableField(exist = false)
@ApiModelProperty(value = "是否报警")
private java.lang.Boolean isWarning;

View File

@ -0,0 +1,51 @@
package com.zhgd.xmgl.modules.sewage.mapper;
import java.util.List;
import java.util.HashMap;
import com.zhgd.xmgl.modules.sewage.entity.MockSewageDataConfig;
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 org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 模拟污水数据配置
* @author pds
* @date 2025-05-26
* @version V1.0
*/
@Mapper
public interface MockSewageDataConfigMapper extends BaseMapper<MockSewageDataConfig> {
/**
* 分页列表查询模拟污水数据配置信息
*
* @param page
* @param queryWrapper
* @param param
* @return
*/
IPage<MockSewageDataConfig> queryList(Page<MockSewageDataConfig> page, @Param(Constants.WRAPPER) QueryWrapper<MockSewageDataConfig> queryWrapper, @Param("param") HashMap<String, Object> param);
/**
* 列表查询模拟污水数据配置信息
*
* @param queryWrapper
* @param param
* @return
*/
List<MockSewageDataConfig> queryList(@Param(Constants.WRAPPER) QueryWrapper<MockSewageDataConfig> queryWrapper, @Param("param") HashMap<String, Object> param);
/**
* 通过id查询模拟污水数据配置信息
*
* @param id
* @return
*/
MockSewageDataConfig queryById(String id);
}

View File

@ -1,6 +1,7 @@
package com.zhgd.xmgl.modules.sewage.mapper;
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 org.apache.ibatis.annotations.Mapper;
@ -25,4 +26,6 @@ public interface SewageDataMapper extends BaseMapper<SewageData> {
List<SewageData> countSewageDataTrend(HashMap<String, Object> paramMap);
SewageData queryNewestData(HashMap<String, Object> paramMap);
IPage<SewageData> queryList(Page<SewageData> page, @Param(Constants.WRAPPER) QueryWrapper<SewageData> queryWrapper);
}

View File

@ -0,0 +1,18 @@
<?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.sewage.mapper.MockSewageDataConfigMapper">
<select id="queryList" resultType="com.zhgd.xmgl.modules.sewage.entity.MockSewageDataConfig">
select * from (
select t.*
from mock_sewage_data_config t
)t
${ew.customSqlSegment}
</select>
<select id="queryById" resultType="com.zhgd.xmgl.modules.sewage.entity.MockSewageDataConfig">
select * from (
select t.*
from mock_sewage_data_config t
)t
where t.id = #{id}
</select>
</mapper>

View File

@ -51,4 +51,14 @@
order by create_date desc
limit 1
</select>
<select id="queryList" resultType="com.zhgd.xmgl.modules.sewage.entity.SewageData">
select * from (
select t.*
,sd.dev_name
from sewage_data t
left join sewage_dev sd on t.dev_sn = sd.dev_sn
)t
${ew.customSqlSegment}
</select>
</mapper>

View File

@ -0,0 +1,66 @@
package com.zhgd.xmgl.modules.sewage.service;
import com.zhgd.xmgl.modules.sewage.entity.MockSewageDataConfig;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.HashMap;
import java.util.List;
/**
* @Description: 模拟污水数据配置
* @author pds
* @date 2025-05-26
* @version V1.0
*/
public interface IMockSewageDataConfigService extends IService<MockSewageDataConfig> {
/**
* 分页列表查询模拟污水数据配置信息
*
* @param param 参数map
* @return
*/
IPage<MockSewageDataConfig> queryPageList(HashMap<String, Object> param);
/**
* 列表查询模拟污水数据配置信息
*
* @param param 参数map
* @return
*/
List<MockSewageDataConfig> queryList(HashMap<String, Object> param);
/**
* 添加模拟污水数据配置信息
*
* @param mockSewageDataConfig 模拟污水数据配置
* @return
*/
void add(MockSewageDataConfig mockSewageDataConfig);
/**
* 编辑模拟污水数据配置信息
*
* @param mockSewageDataConfig 模拟污水数据配置
* @return
*/
void edit(MockSewageDataConfig mockSewageDataConfig);
/**
* 根据id删除模拟污水数据配置信息
*
* @param id 模拟污水数据配置的id
* @return
*/
void delete(String id);
/**
* 根据id查询模拟污水数据配置信息
*
* @param id 模拟污水数据配置的id
* @return
*/
MockSewageDataConfig queryById(String id);
void saveEntity(MockSewageDataConfig mockWorkerAttendanceConfig);
}

View File

@ -0,0 +1,104 @@
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.MockSewageDataConfig;
import com.zhgd.xmgl.modules.sewage.mapper.MockSewageDataConfigMapper;
import com.zhgd.xmgl.modules.sewage.service.IMockSewageDataConfigService;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import com.zhgd.xmgl.util.mysql.MysqlDataUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
/**
* @Description: 模拟污水数据配置
* @author pds
* @date 2025-05-26
* @version V1.0
*/
@Service
public class MockSewageDataConfigServiceImpl extends ServiceImpl<MockSewageDataConfigMapper, MockSewageDataConfig> implements IMockSewageDataConfigService {
@Autowired
private MockSewageDataConfigMapper mockSewageDataConfigMapper;
@Override
public IPage<MockSewageDataConfig> queryPageList(HashMap<String, Object> param) {
QueryWrapper<MockSewageDataConfig> queryWrapper = this.getQueryWrapper(param);
Page<MockSewageDataConfig> page = PageUtil.getPage(param);
IPage<MockSewageDataConfig> pageList = baseMapper.queryList(page, queryWrapper, param);
pageList.setRecords(this.dealList(pageList.getRecords()));
return pageList;
}
@Override
public List<MockSewageDataConfig> queryList(HashMap<String, Object> param) {
QueryWrapper<MockSewageDataConfig> queryWrapper = getQueryWrapper(param);
return dealList(baseMapper.queryList(queryWrapper, param));
}
private QueryWrapper<MockSewageDataConfig> getQueryWrapper(HashMap<String, Object> param) {
QueryWrapper<MockSewageDataConfig> queryWrapper = QueryGenerator.initPageQueryWrapper(MockSewageDataConfig.class, param, true);
queryWrapper.orderByDesc(RefUtil.fieldNameUlc(MockSewageDataConfig::getId));
return queryWrapper;
}
private List<MockSewageDataConfig> dealList(List<MockSewageDataConfig> list) {
return list;
}
@Override
public void add(MockSewageDataConfig mockSewageDataConfig) {
mockSewageDataConfig.setId(null);
baseMapper.insert(mockSewageDataConfig);
}
@Override
public void edit(MockSewageDataConfig mockSewageDataConfig) {
MockSewageDataConfig oldMockSewageDataConfig = baseMapper.selectById(mockSewageDataConfig.getId());
if (oldMockSewageDataConfig == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.updateById(mockSewageDataConfig);
}
@Override
public void delete(String id) {
MockSewageDataConfig mockSewageDataConfig = baseMapper.selectById(id);
if (mockSewageDataConfig == null) {
throw new OpenAlertException("未找到对应实体");
}
baseMapper.deleteById(id);
}
@Override
public MockSewageDataConfig queryById(String id) {
MockSewageDataConfig entity = baseMapper.queryById(id);
if (entity == null) {
throw new OpenAlertException("未找到对应实体");
}
return entity;
}
@Override
public void saveEntity(MockSewageDataConfig config) {
MockSewageDataConfig dbConfig = this.getOne(new LambdaQueryWrapper<MockSewageDataConfig>()
.eq(MockSewageDataConfig::getProjectSn, config.getProjectSn()));
if (dbConfig == null) {
this.add(config);
} else {
config.setId(dbConfig.getId());
this.edit(config);
}
MysqlDataUtil.setFieldsToNull(this, config);
}
}

View File

@ -49,7 +49,7 @@ public class SewageDataServiceImpl extends ServiceImpl<SewageDataMapper, SewageD
public IPage<SewageData> queryPageList(HashMap<String, Object> paramMap) {
QueryWrapper<SewageData> queryWrapper = getQueryWrapper(paramMap);
Page<SewageData> page = PageUtil.getPage(paramMap);
IPage<SewageData> pageList = this.page(page, queryWrapper);
IPage<SewageData> pageList = baseMapper.queryList(page, queryWrapper);
pageList.setRecords(dealList(pageList.getRecords()));
return pageList;
}
@ -269,7 +269,11 @@ public class SewageDataServiceImpl extends ServiceImpl<SewageDataMapper, SewageD
private QueryWrapper<SewageData> getQueryWrapper(HashMap<String, Object> paramMap) {
QueryWrapper<SewageData> queryWrapper = QueryGenerator.initPageQueryWrapper(SewageData.class, paramMap);
queryWrapper.orderByDesc(RefUtil.fieldNameUlc(SewageData::getId));
if (Objects.equals(MapUtils.getInteger(paramMap, "mockDesc"), 1)) {
queryWrapper.orderByDesc(RefUtil.fieldNameUlc(SewageData::getMockTime));
} else {
queryWrapper.orderByDesc(RefUtil.fieldNameUlc(SewageData::getCreateDate));
}
return queryWrapper;
}

View File

@ -1,46 +1,27 @@
package com.zhgd.xmgl.modules.smarttension.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.xmgl.base.entity.vo.FlexibleBigScreenVo;
import com.zhgd.xmgl.base.entity.vo.SectorVo;
import com.zhgd.xmgl.base.entity.vo.TrendVo;
import com.zhgd.xmgl.modules.smartgrout.entity.vo.CountSmartGroutDataVo;
import com.zhgd.xmgl.modules.smarttension.entity.SmartTensionData;
import com.zhgd.xmgl.modules.smarttension.entity.vo.CountSmartTensionDataRealTimeVo;
import com.zhgd.xmgl.modules.smarttension.entity.vo.CountSmartTensionDataVo;
import com.zhgd.xmgl.modules.smarttension.service.ISmartTensionDataService;
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 org.glassfish.jersey.message.internal.Qualified;
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.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;
/**
@ -107,7 +88,7 @@ public class SmartTensionDataController {
@ApiOperation(value = "编辑智能张拉-数据信息", notes = "编辑智能张拉-数据信息", httpMethod = "POST")
@PostMapping(value = "/edit")
public Result<SmartTensionData> edit(@RequestBody SmartTensionData smartTensionData) {
smartTensionDataService.updateById(smartTensionData);
smartTensionDataService.edit(smartTensionData);
return Result.ok();
}

View File

@ -1,11 +1,9 @@
package com.zhgd.xmgl.modules.smarttension.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gexin.fastjson.TypeReference;
import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.jeecg.common.util.oConvertUtils;
import com.zhgd.xmgl.base.entity.vo.FlexibleBigScreenVo;
import com.zhgd.xmgl.base.entity.vo.TrendOneVo;
import com.zhgd.xmgl.modules.smarttension.entity.SmartTensionSteelBeamData;
@ -16,18 +14,10 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.List;
@ -145,6 +135,16 @@ public class SmartTensionSteelBeamDataController {
if (smartTensionSteelBeamData == null) {
result.error500("未找到对应实体");
} else {
String curveDataJson = smartTensionSteelBeamData.getCurveDataJson();
String tripProgressJson = smartTensionSteelBeamData.getTripProgressJson();
if (StrUtil.isNotBlank(curveDataJson)) {
smartTensionSteelBeamData.setCurveDataList(com.gexin.fastjson.JSON.parseObject(curveDataJson, new TypeReference<List<SmartTensionSteelBeamData.CurveData>>() {
}));
}
if (StrUtil.isNotBlank(tripProgressJson)) {
smartTensionSteelBeamData.setTripProgressList(com.gexin.fastjson.JSON.parseObject(tripProgressJson, new TypeReference<List<SmartTensionSteelBeamData.TripProgress>>() {
}));
}
result.setResult(smartTensionSteelBeamData);
result.setSuccess(true);
}

View File

@ -71,4 +71,6 @@ public interface ISmartTensionDataService extends IService<SmartTensionData> {
* @return
*/
SectorVo countBeamType(HashMap<String, Object> paramMap);
void edit(SmartTensionData smartTensionData);
}

View File

@ -10,7 +10,6 @@ import com.gexin.fastjson.JSON;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.base.entity.vo.*;
import com.zhgd.xmgl.modules.concretemixstation.entity.ConcreteMixStationDev;
import com.zhgd.xmgl.modules.smarttension.entity.SmartTensionData;
import com.zhgd.xmgl.modules.smarttension.entity.SmartTensionDev;
import com.zhgd.xmgl.modules.smarttension.entity.SmartTensionSteelBeamData;
@ -20,11 +19,13 @@ import com.zhgd.xmgl.modules.smarttension.mapper.SmartTensionDataMapper;
import com.zhgd.xmgl.modules.smarttension.mapper.SmartTensionDevMapper;
import com.zhgd.xmgl.modules.smarttension.mapper.SmartTensionSteelBeamDataMapper;
import com.zhgd.xmgl.modules.smarttension.service.ISmartTensionDataService;
import com.zhgd.xmgl.modules.smarttension.service.ISmartTensionSteelBeamDataService;
import com.zhgd.xmgl.util.DateUtils;
import com.zhgd.xmgl.util.PageUtil;
import com.zhgd.xmgl.util.RefUtil;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -32,7 +33,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @Description: 智能张拉-数据
@ -47,6 +47,9 @@ public class SmartTensionDataServiceImpl extends ServiceImpl<SmartTensionDataMap
private SmartTensionDevMapper smartTensionDevMapper;
@Autowired
private SmartTensionSteelBeamDataMapper smartTensionSteelBeamDataMapper;
@Lazy
@Autowired
private ISmartTensionSteelBeamDataService smartTensionSteelBeamDataService;
@Override
public IPage<SmartTensionData> queryPageList(HashMap<String, Object> paramMap) {
@ -75,6 +78,10 @@ public class SmartTensionDataServiceImpl extends ServiceImpl<SmartTensionDataMap
smartTensionData.setId(null);
smartTensionData.setProjectSn(projectSn);
save(smartTensionData);
saveSmartTensionSteelBeamDatas(smartTensionData, devSn, projectSn);
}
private void saveSmartTensionSteelBeamDatas(SmartTensionData smartTensionData, String devSn, String projectSn) {
List<SmartTensionSteelBeamData> beamDataList = smartTensionData.getBeamDataList();
if (CollUtil.isNotEmpty(beamDataList)) {
for (SmartTensionSteelBeamData beamData : beamDataList) {
@ -105,7 +112,6 @@ public class SmartTensionDataServiceImpl extends ServiceImpl<SmartTensionDataMap
return list;
}
@Override
public FlexibleBigScreenVo countStatus(HashMap<String, Object> paramMap) {
Integer type = MapUtils.getInteger(paramMap, "type");
@ -130,7 +136,6 @@ public class SmartTensionDataServiceImpl extends ServiceImpl<SmartTensionDataMap
return baseMapper.countSmartTensionData(paramMap);
}
@Override
public List<TrendVo> countQualifiedTrend(HashMap<String, Object> paramMap) {
String projectSn = MapUtils.getString(paramMap, "projectSn");
@ -167,4 +172,12 @@ public class SmartTensionDataServiceImpl extends ServiceImpl<SmartTensionDataMap
return SectorVo.getSectorVo(list);
}
@Override
public void edit(SmartTensionData smartTensionData) {
this.updateById(smartTensionData);
smartTensionSteelBeamDataService.list(new LambdaQueryWrapper<SmartTensionSteelBeamData>()
.eq(SmartTensionSteelBeamData::getSmartTensionDataId, smartTensionData.getId()));
saveSmartTensionSteelBeamDatas(smartTensionData, smartTensionData.getDevSn(), smartTensionData.getProjectSn());
}
}

View File

@ -76,7 +76,7 @@ public class EntityUtils {
/**
* 对象保存随机的Double
* egEntityUtils.setRandomDouble(config.getStopBegin(), config.getStopEnd(), data::setStop, 2, random);
* egEntityUtils.setRandomDouble(config.getXBegin(), config.getXEnd(), data::setX, 2, random);
*
* @param begin
* @param end