20 changed files with 436 additions and 62 deletions
-
8README.md
-
18src/main/java/a8k/appbean/AppErrorCode.java
-
42src/main/java/a8k/controller/TmpTestController.java
-
9src/main/java/a8k/service/A8kStateMgrService.java
-
18src/main/java/a8k/service/appdb/dao/AppUsrDao.java
-
13src/main/java/a8k/service/appdb/entity/AppSettingIterm.java
-
37src/main/java/a8k/service/appdb/entity/AppUsr.java
-
5src/main/java/a8k/service/ctrl_service/ConsumableLoadingService.java
-
31src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java
-
8src/main/java/a8k/service/ctrl_service/DeviceShutdowCtrlService.java
-
9src/main/java/a8k/service/data_service/AppSettingService.java
-
76src/main/java/a8k/service/data_service/UsrMgrService.java
-
2src/main/java/a8k/service/db/dao/SamplesPreProcessModuleCtrlParamsService.java
-
1src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java
-
5src/main/java/a8k/service/state_service/A8kState.java
-
19src/main/java/a8k/service/state_service/A8kStateDB.java
-
140src/main/java/a8k/service/state_service/A8kStateMgrService.java
-
15src/main/resources/application-zhaohe_pc.yml
-
BINzhaohe_app.db
@ -1,9 +0,0 @@ |
|||
package a8k.service; |
|||
|
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class A8kStateMgrService { |
|||
|
|||
|
|||
} |
@ -0,0 +1,18 @@ |
|||
package a8k.service.appdb.dao; |
|||
|
|||
import a8k.service.appdb.entity.AppUsr; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
@Component |
|||
public class AppUsrDao { |
|||
List<AppUsr> getAllUsr() { |
|||
return null; |
|||
} |
|||
|
|||
AppUsr getAppUsr() { |
|||
return null; |
|||
} |
|||
} |
@ -1,4 +1,17 @@ |
|||
package a8k.service.appdb.entity; |
|||
import com.iflytop.uf.UfActiveRecordField; |
|||
|
|||
public class AppSettingIterm { |
|||
@UfActiveRecordField |
|||
public String key; |
|||
@UfActiveRecordField |
|||
public String serviceName; //常量"AppSetting" |
|||
@UfActiveRecordField |
|||
public String valType; |
|||
@UfActiveRecordField |
|||
public String val; |
|||
|
|||
public static String getTableName() { |
|||
return "HardwareServiceSetting" + "Table"; |
|||
} |
|||
} |
@ -0,0 +1,37 @@ |
|||
package a8k.service.appdb.entity; |
|||
|
|||
import com.iflytop.uf.UfActiveRecordField; |
|||
|
|||
public class AppUsr { |
|||
|
|||
/* |
|||
* |
|||
* 内置用户有两个 |
|||
* admin |
|||
* |
|||
* |
|||
* isMgr: |
|||
* 可以删除其他用户 |
|||
* 允许打开设备调试页面,用户通过电脑访问设备调试网页,需要登录,且此时只有isMgr用户可以登录。 |
|||
* |
|||
*/ |
|||
|
|||
@UfActiveRecordField |
|||
public String name; |
|||
|
|||
@UfActiveRecordField |
|||
public String passwd; |
|||
|
|||
@UfActiveRecordField |
|||
public Boolean builtInSser; //如果为true,该用户不允许被删除,不允许被修改名字 |
|||
|
|||
@UfActiveRecordField |
|||
public Boolean isMgr; //如果为true, 该用户为管理员权限 |
|||
|
|||
@UfActiveRecordField |
|||
public Boolean isDisplay; //是否显示在前端 |
|||
|
|||
public static String getTableName() { |
|||
return "AppUsr" + "Table"; |
|||
} |
|||
} |
@ -0,0 +1,31 @@ |
|||
package a8k.service.ctrl_service; |
|||
|
|||
import a8k.appbean.AppErrorCode; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class DeviceInitializationCtrlService { |
|||
public static final Logger logger = LoggerFactory.getLogger(DeviceInitializationCtrlService.class); |
|||
|
|||
/* |
|||
* |
|||
* 初始化设备: |
|||
* 1. 检查试管转移通道是否畅通 |
|||
* 2. 检查摇匀模组的各个组件是否在指定位置 |
|||
* 1.抓手升降 |
|||
* 2.试管夹紧 |
|||
* 3.抓手平移 |
|||
* 4.抓手 |
|||
* |
|||
*/ |
|||
|
|||
|
|||
public AppErrorCode initializeDevice() { |
|||
logger.info("Initializing device ..."); |
|||
return AppErrorCode.Success; |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,8 @@ |
|||
package a8k.service.ctrl_service; |
|||
|
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class DeviceShutdowCtrlService { |
|||
|
|||
} |
@ -0,0 +1,9 @@ |
|||
package a8k.service.data_service; |
|||
|
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class AppSettingService { |
|||
|
|||
|
|||
} |
@ -0,0 +1,76 @@ |
|||
package a8k.service.data_service; |
|||
|
|||
import a8k.appbean.AppErrorCode; |
|||
import a8k.service.appdb.dao.AppUsrDao; |
|||
import a8k.service.appdb.entity.AppUsr; |
|||
import a8k.service.state_service.A8kStateMgrService; |
|||
import jakarta.annotation.Resource; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Component |
|||
public class UsrMgrService { |
|||
|
|||
|
|||
static final int LOGIN_TYPE_APP = 1; //正常页面,用户登录 |
|||
static final int LOGIN_TYPE_DEBUG_PAGE = 2; //调试页面,用户登录 |
|||
|
|||
@Resource |
|||
AppUsrDao appUsrDao; |
|||
|
|||
@Resource |
|||
A8kStateMgrService state; |
|||
|
|||
/* |
|||
* 数据库更删改查 |
|||
*/ |
|||
|
|||
//TODO |
|||
public List<AppUsr> getUsr() { |
|||
return null; |
|||
} |
|||
|
|||
//TODO |
|||
public AppErrorCode addUsr(AppUsr usr) { |
|||
return AppErrorCode.Success; |
|||
} |
|||
|
|||
//TODO |
|||
public AppErrorCode updateUsr(String uname, String passwd) { |
|||
return AppErrorCode.Success; |
|||
} |
|||
|
|||
|
|||
/** |
|||
* |
|||
* @param loginType 登录类型 LOGIN_TYPE_APP,LOGIN_TYPE_DEBUG_PAGE |
|||
* @param uname 用户名称 |
|||
* @param passwd 密码 |
|||
* @return Success or PasswdError or UserDoesNotExist |
|||
* |
|||
* |
|||
*/ |
|||
public AppErrorCode verifyAndLoginAppUsr(Integer loginType, String uname, String passwd) { |
|||
/* |
|||
*TODO |
|||
* 实现描述: |
|||
* 1. 校验成功,则调用A8kStateMgrService.loginAppUsr 或者 A8kStateMgrService.loginDebugPageUsr |
|||
*/ |
|||
return AppErrorCode.UserDoesNotExist; |
|||
} |
|||
|
|||
|
|||
/** |
|||
* @param loginType 登录类型 LOGIN_TYPE_APP,LOGIN_TYPE_DEBUG_PAGE |
|||
*/ |
|||
public void unloginAppUsr(Integer loginType) { |
|||
if (loginType == LOGIN_TYPE_APP) { |
|||
state.unloginAppUsr(); |
|||
} else if (loginType == LOGIN_TYPE_DEBUG_PAGE) { |
|||
state.unloginAppUsr(); |
|||
} |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,5 @@ |
|||
package a8k.service.state_service; |
|||
|
|||
public class A8kState { |
|||
public Boolean devicePoweredOffNormally = false; //设备是否正常关机 |
|||
} |
@ -0,0 +1,19 @@ |
|||
package a8k.service.state_service; |
|||
|
|||
import com.fasterxml.jackson.core.JsonProcessingException; |
|||
import com.fasterxml.jackson.databind.ObjectMapper; |
|||
import com.iflytop.uf.UfActiveRecord; |
|||
import com.iflytop.uf.UfActiveRecordField; |
|||
|
|||
public class A8kStateDB extends UfActiveRecord { |
|||
|
|||
@UfActiveRecordField |
|||
public String stateJson; //A8k状态Json |
|||
|
|||
public static String getTableName() { |
|||
return "A8kStateDB" + "Table"; |
|||
} |
|||
|
|||
|
|||
|
|||
} |
@ -0,0 +1,140 @@ |
|||
package a8k.service.state_service; |
|||
|
|||
import a8k.service.appdb.entity.AppUsr; |
|||
import com.fasterxml.jackson.core.JsonProcessingException; |
|||
import com.fasterxml.jackson.databind.ObjectMapper; |
|||
import com.iflytop.uf.UfActiveRecord; |
|||
import com.iflytop.uf.util.UfJsonHelper; |
|||
import jakarta.annotation.PostConstruct; |
|||
import org.jetbrains.annotations.NotNull; |
|||
import org.slf4j.Logger; |
|||
import org.slf4j.LoggerFactory; |
|||
import org.springframework.boot.json.JacksonJsonParser; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
@Component |
|||
public class A8kStateMgrService { |
|||
/* |
|||
* 该服务约定: |
|||
* 1. 前端只能读取该服务中的状态,不能设置,设置只能通过其他服务进行设置 |
|||
* |
|||
* |
|||
*/ |
|||
|
|||
public static final Logger logger = LoggerFactory.getLogger(A8kStateMgrService.class); |
|||
|
|||
|
|||
AppUsr appusr; //用户是否登录 |
|||
AppUsr debugPageUsr; //调试页面用户是否登录 |
|||
|
|||
Boolean deviceInited = false; //设备是否初始化过 |
|||
Boolean devicePoweredOffNormally = false; //设备是否正常关机 |
|||
|
|||
@PostConstruct |
|||
public void init() { |
|||
// var one = UfActiveRecord.find(A8kStateDB.class).get(0); |
|||
// if (one == null) { |
|||
// updateA8kState(new A8kState()); |
|||
// } |
|||
} |
|||
|
|||
// |
|||
// 用户状态 |
|||
// |
|||
public void loginAppUsr(@NotNull AppUsr appusr) { |
|||
this.appusr = appusr; |
|||
} |
|||
|
|||
public void unloginAppUsr() { |
|||
this.appusr = null; |
|||
} |
|||
|
|||
public boolean isAppUsrLogin() { |
|||
return appusr != null; |
|||
} |
|||
|
|||
|
|||
public void loginDebugPageUsr(@NotNull AppUsr debugPageUsr) { |
|||
this.debugPageUsr = debugPageUsr; |
|||
} |
|||
|
|||
public void unloginDebugPageUsr() { |
|||
this.debugPageUsr = null; |
|||
} |
|||
|
|||
public boolean isDebugPageUsrLogin() { |
|||
return debugPageUsr != null; |
|||
} |
|||
|
|||
// |
|||
// 设备初始化状态 |
|||
// |
|||
|
|||
/** |
|||
* 机器是否初始化过 |
|||
* @return 机器是否初始化过 |
|||
*/ |
|||
public boolean isDeviceInited() { |
|||
return deviceInited; |
|||
} |
|||
|
|||
/** |
|||
* @return 返回上一次设备是否正常关机 |
|||
*/ |
|||
public boolean isTheDevicePoweredOffNormally() { |
|||
return devicePoweredOffNormally; |
|||
} |
|||
|
|||
/** |
|||
* 设备初始化完成,开机后设备初始化完成时候,调用该方法 |
|||
*/ |
|||
public void setDeviceInited() { |
|||
this.deviceInited = true; |
|||
this.devicePoweredOffNormally = false; |
|||
|
|||
A8kState state = getA8kState(); |
|||
state.devicePoweredOffNormally = false; |
|||
updateA8kState(state); |
|||
} |
|||
|
|||
public void setDevicePoweredOffNormally() { |
|||
this.devicePoweredOffNormally = true; |
|||
|
|||
A8kState state = getA8kState(); |
|||
state.devicePoweredOffNormally = true; |
|||
updateA8kState(state); |
|||
} |
|||
|
|||
|
|||
A8kState getA8kState() { |
|||
var one = UfActiveRecord.find(A8kStateDB.class).get(0); |
|||
assert one != null; |
|||
|
|||
ObjectMapper mapper = new ObjectMapper(); |
|||
try { |
|||
return mapper.readValue(one.stateJson, A8kState.class); |
|||
} catch (JsonProcessingException e) { |
|||
assert false; |
|||
return null; |
|||
} |
|||
} |
|||
|
|||
void updateA8kState(A8kState state) { |
|||
var one = UfActiveRecord.find(A8kStateDB.class).get(0); |
|||
|
|||
if (one == null) { |
|||
one = new A8kStateDB(); |
|||
} |
|||
|
|||
ObjectMapper mapper = new ObjectMapper(); |
|||
|
|||
try { |
|||
one.stateJson = mapper.writeValueAsString(state); |
|||
one.save(); |
|||
} catch (JsonProcessingException e) { |
|||
throw new RuntimeException(e); |
|||
} |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,15 @@ |
|||
server : |
|||
port : 80 |
|||
|
|||
spring: |
|||
datasource: |
|||
url: jdbc:sqlite:D:/java_workspace/a8000/zhaohe_app.db |
|||
driver-class-name: org.sqlite.JDBC |
|||
|
|||
device: |
|||
connections: |
|||
- name : zcancmder |
|||
key : zcancmder |
|||
enable : true |
|||
type : ZcancmderWebsocket |
|||
uri: ws://192.168.8.10:19005 |
Write
Preview
Loading…
Cancel
Save
Reference in new issue