| | |
| | | import java.sql.Connection; |
| | | import java.sql.SQLException; |
| | | import java.sql.Statement; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | @Service |
| | | public class MsiWebapiJsonServiceImpl extends ServiceImpl<MsiWebapiJsonMapper, MsiWebapiJsonEntity> implements IMsiWebapiJsonService { |
| | |
| | | } |
| | | List<String> listStatus = new ArrayList<>(); |
| | | List<String> listParameter = new ArrayList<>(); |
| | | |
| | | // 用于记录前一条记录的状态值 |
| | | String prevRunningStatus = null; |
| | | |
| | | for (MachineEquipentInfo machineInfo : data) { |
| | | System.out.println(machineInfo); |
| | | |
| | | // 获取当前记录的runningStatus值 |
| | | String currentRunningStatus = null; |
| | | for (DetailedListVo item : machineInfo.getItemList()) { |
| | | if ("runningStatus".equals(item.getItemName())) { |
| | | currentRunningStatus = item.getItemValue(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // 如果当前状态与前一条相同,则跳过 |
| | | if (currentRunningStatus != null && currentRunningStatus.equals(prevRunningStatus)) { |
| | | continue; |
| | | } |
| | | |
| | | // 更新前一条记录的状态值 |
| | | prevRunningStatus = currentRunningStatus; |
| | | |
| | | // 生成SQL |
| | | String stutus = listSqls(machineInfo); |
| | | if (stutus != null && !stutus.equals("")) { |
| | | listStatus.add(stutus); |
| | |
| | | // 执行状态数据SQL |
| | | try { |
| | | executeBatchSql(listStatus); |
| | | executeBatchSql(listParameter); |
| | | if (!listParameter.isEmpty()) { |
| | | executeBatchSql(listParameter); |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | log.error("执行SQL批量插入失败", e); |
| | |
| | | //EquipmentName |
| | | sql = sql + null + ", "; |
| | | //CollectTime |
| | | if (machineInfo.getEndTime() != null) { |
| | | sql = sql + "'" + DateUtils.formattedDate(machineInfo.getEndTime(),DateUtils.STR_DD_MM_YYYY,DateUtils.STR_DATE_TIME_SMALL) + "', "; |
| | | // 假设 endTime 是 "MM/dd/yyyy HH:mm:ss" 格式的字符串 |
| | | if (machineInfo.getEndTime() != null && !machineInfo.getEndTime().isEmpty()) { |
| | | try { |
| | | // 1. 将字符串解析为 Date 对象 |
| | | SimpleDateFormat inputFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); |
| | | Date endDate = inputFormat.parse(machineInfo.getEndTime()); |
| | | |
| | | // 2. 将 Date 格式化为目标 SQL 格式(如 "yyyy-MM-dd HH:mm:ss") |
| | | SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | sql = sql + "'" + outputFormat.format(endDate) + "', "; |
| | | } catch (ParseException e) { |
| | | // 处理解析失败的情况(如日志记录或抛出异常) |
| | | throw new RuntimeException("Invalid end time format: " + machineInfo.getEndTime(), e); |
| | | } |
| | | } else { |
| | | sql = sql + "'" + DateUtils.format(DateUtils.getDate(),DateUtils.STR_DATE_TIME) + "', "; |
| | | // 如果 endTime 为 null 或空,使用当前时间 |
| | | sql = sql + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "', "; |
| | | } |
| | | //runningStatus |
| | | if (itemMap.containsKey("runningStatus")) { |