VehicleMappingServiceImpl.java 2.75 KB
package com.bsth.service.impl;

import com.bsth.entity.VehicleMapping;
import com.bsth.service.VehicleMappingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

import java.util.*;

@Service
public class VehicleMappingServiceImpl implements VehicleMappingService {

    @Autowired
    @Qualifier("msJdbcTemplate")
    private JdbcTemplate msJdbcTemplate;

    @Override
    public void save(VehicleMapping vehicleMapping) {
        StringBuilder sql = new StringBuilder();
        List<Object> params = new ArrayList<>();
        if (vehicleMapping.getId() == 0) {
            sql.append("insert into bsth_c_device_sim_mapping (device_id,relation_device_id,sim,relation_sim,ext_enabled,in_code,line_id,online_date) values (?, ?, ?, ?, ?, ?, ?, ?)");
            params.addAll(Arrays.asList(vehicleMapping.getDeviceId(), vehicleMapping.getRelationDeviceId(), vehicleMapping.getSim(), vehicleMapping.getRelationSim(), vehicleMapping.getExtEnabled(), vehicleMapping.getInCode(), vehicleMapping.getLineId(), new Date()));
        } else {
            sql.append("update bsth_c_device_sim_mapping set device_id = ?,relation_device_id = ?,sim = ?,relation_sim = ?,ext_enabled = ?,in_code = ?,line_id = ? where id = ?");
            params.addAll(Arrays.asList(vehicleMapping.getDeviceId(), vehicleMapping.getRelationDeviceId(), vehicleMapping.getSim(), vehicleMapping.getRelationSim(), vehicleMapping.getExtEnabled(), vehicleMapping.getInCode(), vehicleMapping.getLineId(), vehicleMapping.getId()));
        }
        msJdbcTemplate.update(sql.toString(), params.toArray());
    }

    @Override
    public List<VehicleMapping> findByParams(Map<String, Object> params) {
        List<Object> objs = new ArrayList<>();
        StringBuilder sql = new StringBuilder("select * from bsth_c_device_sim_mapping where 1 = 1");
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            String key = entry.getKey();
            if ("id".equals(key) || "lineId".equals(key) || "extEnabled".equals(key)) {
                sql.append(" and ").append(camelToSnake(key)).append(" = ?");
            } else {
                sql.append(" and ").append(camelToSnake(key)).append(" like concat('%',?,'%')");
            }
            objs.add(entry.getValue());
        }
        List<VehicleMapping> list = msJdbcTemplate.query(sql.toString(), objs.toArray(), BeanPropertyRowMapper.newInstance(VehicleMapping.class));
        return list;
    }

    public static String camelToSnake(String str) {
        return str.replaceAll("([a-z])([A-Z]+)", "$1_$2").toLowerCase();
    }
}