链接古老的SQLserver2000方式

公司有天有个业务:客户有个古老的SQLServer2000数据库, 我需要链接上对方的数据库,并做一些数据查询操作。

方式如下:  修改pom.xml文件

        <dependency>
            <groupId>net.sourceforge.jtds</groupId>
            <artifactId>jtds</artifactId>
            <version>1.3.1</version>
        </dependency>

public class SQLServerConnection {
    public static final String url = "jdbc:jtds:sqlserver://192.168.1.10:1433;DatabaseName=weight20";
    public static final String username = "sa119111";
    public static final String password = "Ac123";

}
   public Map<String, Object> sqlServerMateriaWeight(String vehicleNumber, Date outTime) {
       log.info("SQLServer2000数据库对接计量系统的方式开始===============================================================");
       List<Map<String, Object>> dataList = new ArrayList<>();
       try {
           Class.forName("net.sourceforge.jtds.jdbc.Driver");
           Connection connection = DriverManager.getConnection(SQLServerConnection.url, SQLServerConnection.username, SQLServerConnection.password);
           if (connection != null) {
               log.info("SQLServer2000数据库对接计量系统的方式:Successfully connected to the database.");
           } else {
               log.info("SQLServer2000数据库对接计量系统的方式:Failed to make connection!");
           }
           String sql = "SELECT 车号, 货名, 净重, 毛重时间, 皮重时间 FROM 称重信息 WHERE (毛重时间 IS NOT NULL OR 毛重时间 <> '') " +
                   "AND (皮重时间 IS NOT NULL OR 皮重时间 <> '') and 车号= ?";
           PreparedStatement statement = connection.prepareStatement(sql);
           statement.setString(1, vehicleNumber);
           ResultSet resultSet = statement.executeQuery();
           log.info("数据库方式计量信息查询结果========{}", resultSet);
           if (!resultSet.next()) {
               log.info("ResultSet中没有数据");
           }
           while (resultSet.next()) {
               String materiaName  = resultSet.getString("货名");
               Double netWeight = resultSet.getDouble("净重");
               Date grossWeightTime = DateUtil.parseDateTime(resultSet.getString("毛重时间"));
               Date tareWeightTime = DateUtil.parseDateTime(resultSet.getString("皮重时间"));
               log.info("SQLServer2000数据库对接计量系统的方式查询结果:货名:{}, 净重:{},毛重时间:{},皮重时间:{}",materiaName,netWeight,grossWeightTime,tareWeightTime);
               // 毛重时间和皮重时间哪个值大,就保留哪个
               // 如果date1 < date2,返回数小于0,date1==date2返回0,date1 > date2 大于0
               int compare = DateUtil.compare(grossWeightTime, tareWeightTime);
               Date time = null;
               if (compare <= 0) {
                   time = tareWeightTime;
               } else {
                   time = grossWeightTime;
               }
               log.info("比较后的time:{}",time);
               //只要距离出厂时间1小时内的称重数据
               Date czDate = Convert.toDate(time);
               double betweenHour = (double) DateUtil.between(czDate, outTime, DateUnit.SECOND, true) / 3600;
               log.info("是否1小时内的数据:betweenHour:{}",betweenHour);
               if (betweenHour <= 1) {
                   Map<String, Object> dataMap = new HashMap<>(16);
                   dataMap.put("materiaName", materiaName);
                   dataMap.put("materiaWeight", netWeight);
                   dataMap.put("cargoState", 0);
                   dataMap.put("time", time);
                   dataList.add(dataMap);
               }
           }
           resultSet.close();
           statement.close();
           connection.close();
       } catch (ClassNotFoundException | SQLException e) {
          log.error(e.getMessage(),e);
       } finally {
           Optional<Map<String, Object>> maxTimeDataMap = dataList.stream().max(Comparator.comparing(data -> (Date) data.get("time")));
           Map<String, Object> resultMap = maxTimeDataMap.orElseGet(HashMap::new);
           log.info("SQLServer2000数据库对接计量系统的方式结束,resultMap================{}",resultMap);
           return resultMap;
       }
   }



   //延迟更新货物重量(吨)、货物状态
            scheduler.schedule(() -> setMaterialWeight(dto, vehicleNumber, outTime, standingBook), 20, TimeUnit.MINUTES);


  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值