同步丢失部分焊接数据bug修复
This commit is contained in:
parent
487687c64d
commit
bc6d97bb8d
87
src/main/java/com/zhgd/xmgl/call/SxCall.java
Normal file
87
src/main/java/com/zhgd/xmgl/call/SxCall.java
Normal file
@ -0,0 +1,87 @@
|
||||
package com.zhgd.xmgl.call;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zhgd.redis.lock.RedisRepository;
|
||||
import com.zhgd.xmgl.modules.gs.entity.GsWeldingDev;
|
||||
import com.zhgd.xmgl.modules.gs.entity.GsWeldingRecord;
|
||||
import com.zhgd.xmgl.modules.gs.entity.GsWeldingWaveform;
|
||||
import com.zhgd.xmgl.modules.gs.service.IGsWeldingDevService;
|
||||
import com.zhgd.xmgl.modules.gs.service.IGsWeldingRecordService;
|
||||
import com.zhgd.xmgl.modules.gs.service.IGsWeldingWaveformService;
|
||||
import com.zhgd.xmgl.task.GsWeldingTask;
|
||||
import com.zhgd.xmgl.task.SxHttpUtil;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class SxCall {
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IGsWeldingDevService gsWeldingDevService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private RedisRepository redisRepository;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private GsWeldingTask gsWeldingTask;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IGsWeldingRecordService gsWeldingRecordService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IGsWeldingWaveformService gsWeldingWaveformService;
|
||||
|
||||
public void fillMissSyncData(Map<String, Object> map) {
|
||||
String start = MapUtils.getString(map, "start");
|
||||
String end = MapUtils.getString(map, "end");
|
||||
String token = gsWeldingTask.getToken();
|
||||
List<GsWeldingDev> devs = gsWeldingDevService.list(null);
|
||||
Map<String, List<Date>> dev2StartTimeMap = gsWeldingRecordService.list(new LambdaQueryWrapper<GsWeldingRecord>()
|
||||
.ge(GsWeldingRecord::getDevStartWeldingTime, start)
|
||||
.le(GsWeldingRecord::getDevStartWeldingTime, end)
|
||||
).stream().collect(Collectors.groupingBy(GsWeldingRecord::getDevSn, Collectors.mapping(GsWeldingRecord::getDevStartWeldingTime, Collectors.toList())));
|
||||
List<GsWeldingRecord> addGsWeldingRecords = new ArrayList<>();
|
||||
List<GsWeldingWaveform> addGsWeldingWaveforms = new ArrayList<>();
|
||||
List<String> dates = gsWeldingTask.generateDailySameTimePoints(start, end);
|
||||
for (GsWeldingDev dev : devs) {
|
||||
List<Date> startTimes = Optional.ofNullable(dev2StartTimeMap.get(dev.getDevSn())).map(m -> m).orElse(new ArrayList<>());
|
||||
JSONObject jsonObject = SxHttpUtil.getWeldingRecords(start, end, dev.getDevSn(), token);
|
||||
List<GsWeldingRecord> records = gsWeldingTask.buildGsWeldingRecord(jsonObject, dev);
|
||||
records = records.stream().filter(r -> !startTimes.contains(r.getDevStartWeldingTime())).collect(Collectors.toList());
|
||||
if (CollUtil.isEmpty(records)) {
|
||||
continue;
|
||||
}
|
||||
addGsWeldingRecords.addAll(records);
|
||||
List<GsWeldingWaveform> weldingWaveforms = gsWeldingTask.buildGsWeldingWaveform(dates, dev, token);
|
||||
addGsWeldingWaveforms.addAll(weldingWaveforms);
|
||||
}
|
||||
saveToDb(addGsWeldingRecords, addGsWeldingWaveforms);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveToDb(List<GsWeldingRecord> addGsWeldingRecords, List<GsWeldingWaveform> addGsWeldingWaveforms) {
|
||||
if (CollUtil.isNotEmpty(addGsWeldingRecords)) {
|
||||
gsWeldingRecordService.saveBatch(addGsWeldingRecords);
|
||||
}
|
||||
Map<String, List<GsWeldingRecord>> devSn2GsWeldingRecordMap = addGsWeldingRecords.stream().collect(Collectors.groupingBy(GsWeldingRecord::getDevSn));
|
||||
for (GsWeldingWaveform waveform : addGsWeldingWaveforms) {
|
||||
List<GsWeldingRecord> records = devSn2GsWeldingRecordMap.get(waveform.getDevSn());
|
||||
records.stream().filter(o -> DateUtil.compare(o.getStartWeldingTime(), waveform.getUploadTime()) <= 0 && DateUtil.compare(o.getEndWeldingTime(), waveform.getUploadTime()) >= 0).findFirst().ifPresent(o -> {
|
||||
waveform.setWeldingRecordId(o.getId());
|
||||
});
|
||||
}
|
||||
addGsWeldingWaveforms = addGsWeldingWaveforms.stream().filter(wf -> Objects.nonNull(wf.getWeldingRecordId())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(addGsWeldingWaveforms)) {
|
||||
gsWeldingWaveformService.saveBatch(addGsWeldingWaveforms);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3,6 +3,7 @@ package com.zhgd.xmgl.modules.gs.controller;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.zhgd.annotation.OperLog;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.xmgl.call.SxCall;
|
||||
import com.zhgd.xmgl.modules.gs.entity.GsWeldingDev;
|
||||
import com.zhgd.xmgl.modules.gs.entity.dto.GsWeldingDevDto;
|
||||
import com.zhgd.xmgl.modules.gs.entity.vo.GsWeldingDevVo;
|
||||
@ -23,11 +24,11 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* @Title: Controller
|
||||
* @Description: 焊接设备
|
||||
* @author: pds
|
||||
* @date: 2025-12-01
|
||||
* @date: 2025-12-01
|
||||
* @version: V1.0
|
||||
*/
|
||||
@RestController
|
||||
@ -36,85 +37,107 @@ import java.util.List;
|
||||
@Api(tags = "焊接设备相关Api")
|
||||
public class GsWeldingDevController {
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IGsWeldingDevService gsWeldingDevService;
|
||||
@Autowired
|
||||
private IGsWeldingDevService gsWeldingDevService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private SxCall sxCall;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
* @return
|
||||
*/
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @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<GsWeldingDevVo>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
|
||||
return Result.success(gsWeldingDevService.queryPageList(param));
|
||||
}
|
||||
@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<GsWeldingDevVo>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
|
||||
return Result.success(gsWeldingDevService.queryPageList(param));
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
* @return
|
||||
*/
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "焊接设备管理", operType = "列表查询", operDesc = "列表查询焊接设备信息")
|
||||
@ApiOperation(value = "列表查询焊接设备信息", notes = "列表查询焊接设备信息", httpMethod="GET")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<GsWeldingDevVo>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
|
||||
return Result.success(gsWeldingDevService.queryList(param));
|
||||
}
|
||||
@ApiOperation(value = "列表查询焊接设备信息", notes = "列表查询焊接设备信息", httpMethod = "GET")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<GsWeldingDevVo>> queryList(@ApiIgnore @RequestParam HashMap<String, Object> param) {
|
||||
return Result.success(gsWeldingDevService.queryList(param));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
* @param gsWeldingDevDto
|
||||
* @return
|
||||
*/
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param gsWeldingDevDto
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "焊接设备管理", operType = "添加", operDesc = "添加焊接设备信息")
|
||||
@ApiOperation(value = "添加焊接设备信息", notes = "添加焊接设备信息" , httpMethod="POST")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<GsWeldingDevVo> add(@RequestBody @Validate GsWeldingDevDto gsWeldingDevDto) {
|
||||
gsWeldingDevService.add(gsWeldingDevDto);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param gsWeldingDevDto
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "焊接设备管理", operType = "编辑", operDesc = "编辑焊接设备信息")
|
||||
@ApiOperation(value = "编辑焊接设备信息", notes = "编辑焊接设备信息" , httpMethod="POST")
|
||||
@PostMapping(value = "/edit")
|
||||
public Result<GsWeldingDev> edit(@RequestBody GsWeldingDevDto gsWeldingDevDto) {
|
||||
gsWeldingDevService.edit(gsWeldingDevDto);
|
||||
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<GsWeldingDev> delete(@ApiIgnore @RequestBody HashMap<String ,Object> map) {
|
||||
gsWeldingDevService.delete(MapUtils.getString(map, "id"));
|
||||
@ApiOperation(value = "添加焊接设备信息", notes = "添加焊接设备信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<GsWeldingDevVo> add(@RequestBody @Validate GsWeldingDevDto gsWeldingDevDto) {
|
||||
gsWeldingDevService.add(gsWeldingDevDto);
|
||||
return Result.ok();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param gsWeldingDevDto
|
||||
* @return
|
||||
*/
|
||||
@OperLog(operModul = "焊接设备管理", operType = "编辑", operDesc = "编辑焊接设备信息")
|
||||
@ApiOperation(value = "编辑焊接设备信息", notes = "编辑焊接设备信息", httpMethod = "POST")
|
||||
@PostMapping(value = "/edit")
|
||||
public Result<GsWeldingDev> edit(@RequestBody GsWeldingDevDto gsWeldingDevDto) {
|
||||
gsWeldingDevService.edit(gsWeldingDevDto);
|
||||
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<GsWeldingDev> delete(@ApiIgnore @RequestBody HashMap<String, Object> map) {
|
||||
gsWeldingDevService.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<GsWeldingDevVo> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
return Result.success(gsWeldingDevService.queryById(id));
|
||||
}
|
||||
@ApiOperation(value = "通过id查询焊接设备信息", notes = "通过id查询焊接设备信息", httpMethod = "GET")
|
||||
@ApiImplicitParam(name = "id", value = "焊接设备ID", paramType = "query", required = true, dataType = "Integer")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<GsWeldingDevVo> queryById(@RequestParam(name = "id", required = true) String id) {
|
||||
return Result.success(gsWeldingDevService.queryById(id));
|
||||
}
|
||||
|
||||
@OperLog(operModul = "焊接设备管理", operType = "", operDesc = "补充漏的焊接数据")
|
||||
@ApiOperation(value = "补充漏的焊接数据", notes = "补充漏的焊接数据", httpMethod = "POST")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "start", value = "开始:yyyy-MM-dd HH:mm:ss", paramType = "query", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "end", value = "结束:yyyy-MM-dd HH:mm:ss", paramType = "query", required = true, dataType = "Integer"),
|
||||
})
|
||||
@PostMapping(value = "/fillMissSyncData")
|
||||
public Result fillMissSyncData(@ApiIgnore @RequestBody HashMap<String, Object> map) {
|
||||
sxCall.fillMissSyncData(map);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -124,5 +124,10 @@ public class GsWeldingRecord implements Serializable {
|
||||
/**预置电压(V)结束*/
|
||||
@ApiModelProperty(value="预置电压(V)结束")
|
||||
private java.math.BigDecimal presetVoltageEnd ;
|
||||
|
||||
/**设备开始焊接时间*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value="设备开始焊接时间")
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private java.util.Date devStartWeldingTime ;
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import com.zhgd.redis.lock.RedisRepository;
|
||||
import com.zhgd.xmgl.call.SxCall;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.SysConfig;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.ISysConfigService;
|
||||
import com.zhgd.xmgl.modules.gs.entity.GsWeldingDev;
|
||||
@ -55,9 +56,12 @@ public class GsWeldingTask {
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IGsWeldingWaveformService gsWeldingWaveformService;
|
||||
// @Lazy
|
||||
// @Lazy
|
||||
// @Autowired
|
||||
// private IGsWeldingDevDailyRecordService gsWeldingDevDailyRecordService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private SxCall sxCall;
|
||||
|
||||
/**
|
||||
* 定时保存焊接记录
|
||||
@ -95,7 +99,7 @@ public class GsWeldingTask {
|
||||
}
|
||||
}
|
||||
|
||||
private String getToken() {
|
||||
public String getToken() {
|
||||
return redisRepository.getOrSet(GS_WELDING_TASK_TOKEN, () -> {
|
||||
return SxHttpUtil.getToken();
|
||||
}, 60 * 60 * 2L);
|
||||
@ -117,7 +121,7 @@ public class GsWeldingTask {
|
||||
* 2025-09-05 16:00:00 (第三天同一时间)
|
||||
* 2025-09-05 17:00:01 (结束时间)
|
||||
*/
|
||||
private List<String> generateDailySameTimePoints(String start, String end) {
|
||||
public List<String> generateDailySameTimePoints(String start, String end) {
|
||||
List<String> result = new ArrayList<>();
|
||||
|
||||
// 1. 参数校验
|
||||
@ -178,7 +182,7 @@ public class GsWeldingTask {
|
||||
}
|
||||
}
|
||||
|
||||
private List<GsWeldingWaveform> buildGsWeldingWaveform(List<String> dates, GsWeldingDev dev, String token) {
|
||||
public List<GsWeldingWaveform> buildGsWeldingWaveform(List<String> dates, GsWeldingDev dev, String token) {
|
||||
List<GsWeldingWaveform> gsWeldingWaveformList = Lists.newArrayList();
|
||||
for (int i = 0; i < dates.size() - 1; i++) {
|
||||
JSONObject jsonObject = SxHttpUtil.getGsWaveforms(dates.get(i), dates.get(i + 1), dev.getDevSn(), token);
|
||||
@ -208,7 +212,7 @@ public class GsWeldingTask {
|
||||
return gsWeldingWaveformList;
|
||||
}
|
||||
|
||||
private List<GsWeldingRecord> buildGsWeldingRecord(JSONObject jsonObject, GsWeldingDev dev) {
|
||||
public List<GsWeldingRecord> buildGsWeldingRecord(JSONObject jsonObject, GsWeldingDev dev) {
|
||||
List<GsWeldingRecord> gsWeldingRecordList = Lists.newArrayList();
|
||||
checkErr(jsonObject, "请求查询设备焊接记录历史异常");
|
||||
JSONArray dataList = jsonObject.getJSONArray("dataList");
|
||||
@ -226,6 +230,7 @@ public class GsWeldingTask {
|
||||
record.setEquipmentName(dev.getDevName());
|
||||
record.setOperatorName(jo1.getString("D09"));
|
||||
record.setStartWeldingTime(DateUtil.parseDateTime(jo1.getString("D04")));
|
||||
record.setDevStartWeldingTime(record.getStartWeldingTime());
|
||||
record.setEndWeldingTime(DateUtil.parseDateTime(jo1.getString("D05")));
|
||||
record.setWeldingWireConsumption(jo1.getBigDecimal("D11"));
|
||||
record.setDuration(jo1.getBigDecimal("D12"));
|
||||
@ -245,36 +250,6 @@ public class GsWeldingTask {
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveToDb(String queryTimeKey, String end, List<GsWeldingRecord> addGsWeldingRecords, List<GsWeldingWaveform> addGsWeldingWaveforms) {
|
||||
if (CollUtil.isNotEmpty(addGsWeldingRecords)) {
|
||||
gsWeldingRecordService.saveBatch(addGsWeldingRecords);
|
||||
}
|
||||
Map<String, List<GsWeldingRecord>> devSn2GsWeldingRecordMap = addGsWeldingRecords.stream().collect(Collectors.groupingBy(GsWeldingRecord::getDevSn));
|
||||
for (GsWeldingWaveform waveform : addGsWeldingWaveforms) {
|
||||
List<GsWeldingRecord> records = devSn2GsWeldingRecordMap.get(waveform.getDevSn());
|
||||
records.stream().filter(o -> DateUtil.compare(o.getStartWeldingTime(), waveform.getUploadTime()) <= 0 && DateUtil.compare(o.getEndWeldingTime(), waveform.getUploadTime()) >= 0).findFirst().ifPresent(o -> {
|
||||
waveform.setWeldingRecordId(o.getId());
|
||||
});
|
||||
}
|
||||
if (CollUtil.isNotEmpty(addGsWeldingWaveforms)) {
|
||||
gsWeldingWaveformService.saveBatch(addGsWeldingWaveforms);
|
||||
}
|
||||
SysConfig customKey = sysConfigService.getOne(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getConfigKey, queryTimeKey));
|
||||
if (customKey == null) {
|
||||
SysConfig entity = new SysConfig();
|
||||
entity.setConfigKey(SAVE_GS_WELDING_RECORD_START_TIME);
|
||||
entity.setConfigValue(end);
|
||||
entity.setDescription("获取松下数据");
|
||||
sysConfigService.save(entity);
|
||||
} else {
|
||||
sysConfigService.update(null, new LambdaUpdateWrapper<SysConfig>()
|
||||
.set(SysConfig::getConfigValue, end)
|
||||
.eq(SysConfig::getConfigKey, queryTimeKey)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// @GetMapping("getWeldingDevDailyRecordsByRange")
|
||||
// public void getWeldingDevDailyRecordsByRange(String start, String end) {
|
||||
@ -337,6 +312,35 @@ public class GsWeldingTask {
|
||||
// }
|
||||
// }
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveToDb(String queryTimeKey, String end, List<GsWeldingRecord> addGsWeldingRecords, List<GsWeldingWaveform> addGsWeldingWaveforms) {
|
||||
if (CollUtil.isNotEmpty(addGsWeldingRecords)) {
|
||||
gsWeldingRecordService.saveBatch(addGsWeldingRecords);
|
||||
}
|
||||
Map<String, List<GsWeldingRecord>> devSn2GsWeldingRecordMap = addGsWeldingRecords.stream().collect(Collectors.groupingBy(GsWeldingRecord::getDevSn));
|
||||
for (GsWeldingWaveform waveform : addGsWeldingWaveforms) {
|
||||
List<GsWeldingRecord> records = devSn2GsWeldingRecordMap.get(waveform.getDevSn());
|
||||
records.stream().filter(o -> DateUtil.compare(o.getStartWeldingTime(), waveform.getUploadTime()) <= 0 && DateUtil.compare(o.getEndWeldingTime(), waveform.getUploadTime()) >= 0).findFirst().ifPresent(o -> {
|
||||
waveform.setWeldingRecordId(o.getId());
|
||||
});
|
||||
}
|
||||
if (CollUtil.isNotEmpty(addGsWeldingWaveforms)) {
|
||||
gsWeldingWaveformService.saveBatch(addGsWeldingWaveforms);
|
||||
}
|
||||
SysConfig customKey = sysConfigService.getOne(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getConfigKey, queryTimeKey));
|
||||
if (customKey == null) {
|
||||
SysConfig entity = new SysConfig();
|
||||
entity.setConfigKey(SAVE_GS_WELDING_RECORD_START_TIME);
|
||||
entity.setConfigValue(end);
|
||||
entity.setDescription("获取松下数据");
|
||||
sysConfigService.save(entity);
|
||||
} else {
|
||||
sysConfigService.update(null, new LambdaUpdateWrapper<SysConfig>()
|
||||
.set(SysConfig::getConfigValue, end)
|
||||
.eq(SysConfig::getConfigKey, queryTimeKey)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求设备实时数据接口
|
||||
@ -402,4 +406,18 @@ public class GsWeldingTask {
|
||||
}
|
||||
}
|
||||
|
||||
@SchedulerLock(name = "fillEmptyData", lockAtMostFor = 1000 * 60 * 2, lockAtLeastFor = 1000 * 60 * 1)
|
||||
@Scheduled(cron = "0 0 3 * * ?")
|
||||
@RequestMapping("fillEmptyData")
|
||||
public void fillEmptyData() {
|
||||
try {
|
||||
HashMap<String, Object> hashMap = new HashMap<>();
|
||||
hashMap.put("start", DateUtil.formatDateTime(DateUtil.offsetDay(new Date(), -2)));
|
||||
hashMap.put("end", DateUtil.formatDateTime(DateUtil.beginOfDay(new Date())));
|
||||
sxCall.fillMissSyncData(hashMap);
|
||||
} catch (Exception e) {
|
||||
log.error("fillEmptyData:", e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user