|
|
|
package com.zhonglai.luhui.smart.feeder.service;
|
|
|
|
|
|
|
|
import com.zhonglai.luhui.dao.service.PublicService;
|
|
|
|
import com.zhonglai.luhui.smart.feeder.dto.ConfigurationParameter;
|
|
|
|
import com.zhonglai.luhui.smart.feeder.dto.FishCurveControlCondition;
|
|
|
|
import com.zhonglai.luhui.smart.feeder.dto.SerialPortConfig;
|
|
|
|
import com.zhonglai.luhui.smart.feeder.mapper.AbsValueCommandMapper;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
@Service
|
|
|
|
public class SqliteService {
|
|
|
|
|
|
|
|
private static Logger logger = LoggerFactory.getLogger(SqliteService.class);
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private PublicService publicService;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private AbsValueCommandMapper absValueCommandMapper;
|
|
|
|
|
|
|
|
@Value("${spring.datasource.druid.master.url}")
|
|
|
|
private String masterUrl;
|
|
|
|
|
|
|
|
@PostConstruct
|
|
|
|
private void init()
|
|
|
|
{
|
|
|
|
initDb();
|
|
|
|
initSysConfig();
|
|
|
|
initAbsValueCommand();
|
|
|
|
initGearCommand();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 数据库
|
|
|
|
*/
|
|
|
|
private void initDb()
|
|
|
|
{
|
|
|
|
logger.info("检查数据库文件");
|
|
|
|
File dbFile = new File(masterUrl.replace("jdbc:sqlite:",""));
|
|
|
|
if (!dbFile.exists()) {
|
|
|
|
logger.info("数据库文件不存在自动创建");
|
|
|
|
try {
|
|
|
|
// 创建新的数据库文件
|
|
|
|
boolean created = dbFile.createNewFile();
|
|
|
|
if (created) {
|
|
|
|
System.out.println("成功创建数据库文件my.db");
|
|
|
|
// 进行其他初始化操作,如创建表格等
|
|
|
|
} else {
|
|
|
|
System.out.println("创建数据库文件my.db失败");
|
|
|
|
}
|
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 配置表
|
|
|
|
*/
|
|
|
|
private void initSysConfig()
|
|
|
|
{
|
|
|
|
logger.info("检查配置表");
|
|
|
|
Long ct = publicService.selectCountBySql("SELECT count(*) ct FROM sqlite_master WHERE type='table' AND `name`='sys_config'");
|
|
|
|
if (0==ct)
|
|
|
|
{
|
|
|
|
logger.info("配置表不存在自动创建");
|
|
|
|
publicService.updateBySql("CREATE TABLE \"sys_config\" (\n" +
|
|
|
|
" \"parameter_name\" TEXT NOT NULL,\n" +
|
|
|
|
" \"parameter_value\" TEXT NOT NULL,\n" +
|
|
|
|
" \"describe\" TEXT,\n" +
|
|
|
|
" PRIMARY KEY (\"parameter_name\"),\n" +
|
|
|
|
" CONSTRAINT \"名称唯一\" UNIQUE (\"parameter_name\" ASC)\n" +
|
|
|
|
")");
|
|
|
|
|
|
|
|
logger.info("初始化置表数据");
|
|
|
|
publicService.updateBySql("INSERT INTO \"sys_config\" VALUES ('ifVeiw', 'false', '是否显示');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('captureNumber', '0', '摄像头编号');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('reflectionThreshold', '100', '反光阈值');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('kernelSize', '3', '去噪调整内核大小,用来消除小的物体或噪声');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('maxValue', '255.0', '最大反光阈值');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('VeiwDto_isFrame', 'false', '是否显示原图');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('VeiwDto_isBinaryImage', 'false', '是否显示临时图');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('VeiwDto_isSize', 'false', '是否显示面积');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('VeiwDto_isAbsValue', 'false', '是否显示斜率');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('absValue', '0', '是否显示斜率');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('FishGroupImageRecognition', 'true', '鱼群图像识别是否开启');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('FeedingControl', 'true', '鱼群图像识别投料控制是否开启');\n" +
|
|
|
|
"INSERT INTO \"sys_config\" VALUES ('SerialPortConfig', '{\"portName\": \"COM6\",\"baudrate\": 9600,\"dataBits\": 8,\"stopBits\": 0,\"parity\": 0}', '串口配置');\n" +
|
|
|
|
"\n" );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void initAbsValueCommand() {
|
|
|
|
logger.info("检查斜率范围对应的档位表");
|
|
|
|
Long ct = publicService.selectCountBySql("SELECT count(*) ct FROM sqlite_master WHERE type='table' AND name='absValue_command'");
|
|
|
|
if (0 == ct)
|
|
|
|
{
|
|
|
|
logger.info("斜率范围对应的档位不存在自动创建");
|
|
|
|
publicService.updateBySql("CREATE TABLE \"absValue_command\" (\n" +
|
|
|
|
" \"sartAbsValue\" integer,\n" +
|
|
|
|
" \"gear\" integer NOT NULL,\n" +
|
|
|
|
" PRIMARY KEY (\"gear\"),\n" +
|
|
|
|
" CONSTRAINT \"档位唯一\" UNIQUE (\"gear\" ASC)\n" +
|
|
|
|
")");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void initGearCommand() {
|
|
|
|
logger.info("检查档位对应的指令表");
|
|
|
|
Long ct = publicService.selectCountBySql("SELECT count(*) ct FROM sqlite_master WHERE type='table' AND name='gear_command'");
|
|
|
|
if (0 == ct)
|
|
|
|
{
|
|
|
|
logger.info("档位对应的指令不存在自动创建");
|
|
|
|
publicService.updateBySql("CREATE TABLE \"gear_command\" (\n" +
|
|
|
|
" \"gear\" integer NOT NULL,\n" +
|
|
|
|
" \"command\" TEXT NOT NULL,\n" +
|
|
|
|
" PRIMARY KEY (\"gear\")\n" +
|
|
|
|
")");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<Map<String,Object>> getAllSysConfig()
|
|
|
|
{
|
|
|
|
return publicService.getObjectListBySQL("SELECT * FROM sys_config");
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<FishCurveControlCondition> getAllAbsValueCommand()
|
|
|
|
{
|
|
|
|
return absValueCommandMapper.getFishCurveControlConditionList("SELECT * FROM absValue_command");
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<Map<String,Object>> getAllGearCommand()
|
|
|
|
{
|
|
|
|
return publicService.getObjectListBySQL("SELECT * FROM gear_command");
|
|
|
|
}
|
|
|
|
|
|
|
|
public void updateConfigurationParameter(ConfigurationParameter key,Object value)
|
|
|
|
{
|
|
|
|
switch (key)
|
|
|
|
{
|
|
|
|
case gear_command:
|
|
|
|
Map<Integer,String> map = (Map<Integer, String>) value;
|
|
|
|
// publicService.updateBySql("update set ")
|
|
|
|
break;
|
|
|
|
case absValue_command:
|
|
|
|
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void updateSysConfig(ConfigurationParameter key,String value)
|
|
|
|
{
|
|
|
|
publicService.updateBySql("delete from sys_config where parameter_name='"+key.name()+"'");
|
|
|
|
publicService.updateBySql("insert into sys_config('"+key.name()+"','"+value+"')");
|
|
|
|
}
|
|
|
|
|
|
|
|
public void updateGearCommand(Integer gear,String command)
|
|
|
|
{
|
|
|
|
publicService.updateBySql("delete from gear_command where gear="+gear+"");
|
|
|
|
publicService.updateBySql("insert into gear_command("+gear+",'"+command+"')");
|
|
|
|
}
|
|
|
|
|
|
|
|
public void updateabsValueCommand(Integer gear,Integer sartAbsValue)
|
|
|
|
{
|
|
|
|
publicService.updateBySql("delete from absValue_command where gear="+gear+"");
|
|
|
|
publicService.updateBySql("insert into absValue_command("+gear+",'"+sartAbsValue+"')");
|
|
|
|
}
|
|
|
|
|
|
|
|
} |
...
|
...
|
|