From 3fa04e45817b2cf0e4713453326ea69b3c960d7e Mon Sep 17 00:00:00 2001
From: liux <963924687@qq.com>
Date: Wed, 26 Mar 2025 16:44:36 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B5=E9=9D=A2?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=92=8Cmq=E8=BF=9E=E6=8E=A5=E6=8F=90?=
=?UTF-8?q?=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 3 +
app/src/main/AndroidManifest.xml | 4 +
.../activity/InitializationActivity.java | 299 ++++++++++-
.../adapter/menu/utils/OkHttpService.java | 2 +-
.../com/bonus/canteen/db/AppDatabase.java | 28 +-
.../canteen/db/beans/base/DateListBean.java | 34 ++
.../canteen/db/beans/base/IntervalBean.java | 69 +++
.../canteen/db/beans/base/ProductBean.java | 53 ++
.../canteen/db/dao/base/CookBookDao.java | 33 ++
.../canteen/db/dao/base/CookIntervalDao.java | 34 ++
.../canteen/db/dao/base/CustPhotoFulDao.java | 42 ++
.../canteen/db/dao/base/DeviceBaseDao.java | 35 ++
.../canteen/db/dao/base/MealTimeDao.java | 38 ++
.../canteen/db/dao/user/CustInfoDao.java | 8 +-
.../canteen/db/entity/base/CookBookInfo.java | 476 ++++++++++++++++++
.../db/entity/base/CookIntervalInfo.java | 162 ++++++
.../db/entity/base/CustPhotoFulInfo.java | 66 +++
.../db/entity/base/DeviceBaseInfo.java | 142 ++++++
.../canteen/db/entity/base/MealTimeInfo.java | 83 +++
.../utils/rabbitmq/RabbitMqMqttHelper.java | 134 +++++
.../initialization_upper_navigation.xml | 1 +
21 files changed, 1727 insertions(+), 19 deletions(-)
create mode 100644 app/src/main/java/com/bonus/canteen/db/beans/base/DateListBean.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/beans/base/IntervalBean.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/beans/base/ProductBean.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/dao/base/CookBookDao.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/dao/base/CookIntervalDao.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/dao/base/CustPhotoFulDao.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/dao/base/DeviceBaseDao.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/dao/base/MealTimeDao.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/entity/base/CookBookInfo.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/entity/base/CookIntervalInfo.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/entity/base/CustPhotoFulInfo.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/entity/base/DeviceBaseInfo.java
create mode 100644 app/src/main/java/com/bonus/canteen/db/entity/base/MealTimeInfo.java
create mode 100644 app/src/main/java/com/bonus/canteen/utils/rabbitmq/RabbitMqMqttHelper.java
diff --git a/app/build.gradle b/app/build.gradle
index 8f19acd..3feec2e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -142,6 +142,9 @@ dependencies {
implementation "androidx.room:room-runtime:2.3.0" // Room 库
annotationProcessor "androidx.room:room-compiler:2.3.0" // 注解处理器(Java)
+ implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'
+ implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
+
}
//自动添加X-Library依赖
apply from: 'x-library.gradle'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a43559b..73a194d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -192,6 +192,10 @@
android:name="design_height_in_dp"
android:value="800" />
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/bonus/canteen/activity/InitializationActivity.java b/app/src/main/java/com/bonus/canteen/activity/InitializationActivity.java
index 35e057e..65f22ae 100644
--- a/app/src/main/java/com/bonus/canteen/activity/InitializationActivity.java
+++ b/app/src/main/java/com/bonus/canteen/activity/InitializationActivity.java
@@ -23,9 +23,10 @@ import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.LayoutInflater;
+import android.widget.Button;
import android.widget.ListView;
+import android.widget.TextView;
-import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.bonus.canteen.R;
import com.bonus.canteen.adapter.initialization.IniListAdapter;
@@ -36,9 +37,18 @@ import com.bonus.canteen.adapter.menu.utils.WorkConfig;
import com.bonus.canteen.core.BaseActivity;
import com.bonus.canteen.databinding.InitializationMainBinding;
import com.bonus.canteen.db.AppDatabase;
+import com.bonus.canteen.db.beans.base.DateListBean;
+import com.bonus.canteen.db.beans.base.IntervalBean;
+import com.bonus.canteen.db.beans.base.ProductBean;
+import com.bonus.canteen.db.entity.base.CookBookInfo;
+import com.bonus.canteen.db.entity.base.CookIntervalInfo;
+import com.bonus.canteen.db.entity.base.CustPhotoFulInfo;
+import com.bonus.canteen.db.entity.base.DeviceBaseInfo;
+import com.bonus.canteen.db.entity.base.MealTimeInfo;
import com.bonus.canteen.db.entity.base.SecretKeyInfo;
import com.bonus.canteen.db.entity.user.CustInfo;
import com.bonus.canteen.utils.MemoryUtils;
+import com.bonus.canteen.utils.rabbitmq.RabbitMqMqttHelper;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.hjq.permissions.OnPermissionCallback;
@@ -78,11 +88,19 @@ public class InitializationActivity extends BaseActivity {
+ //模拟点击事件 后面需去掉
+ mqttHelper.publish("test/topic", "Hello RabbitMQ MQTT");
+ });
+ }
+ private void getCustPhoto(){
+ ThreadPoolManager.getExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ CustPhotoFulInfo bb = AppDatabase.getDatabase(InitializationActivity.this).custPhotoFulDao().getOneCustPhoto();
+
+ JSONObject json = new JSONObject();
+ if(bb !=null){
+ json.put("updateId",bb.getUpdateId());
+ }else{
+ json.put("updateId",1);
+ }
+ json.put("pagesize",100);
+ String jsonString = json.toString();
+ Log.i("getCustPhoto jsonString", jsonString);
+ // 定义 JSON 的 MediaType
+ MediaType JSON = MediaType.parse("application/json; charset=utf-8");
+ // 创建 RequestBody
+ RequestBody body = RequestBody.create(JSON, jsonString);
+ String url = WorkConfig.getBaseUrl() + "/api/v4/device/common/person/feature-list";
+ Request request = new Request.Builder().url(url)
+ .addHeader("Authorization", OkHttpService.getToken())
+ .addHeader("MERCHANT-ID", "378915229716713472")
+ .addHeader("face-ver", "3288")
+ .post(body).build();
+ try {
+ String result = service.httpPost(url, body, InitializationActivity.this,request);
+ if(!"[]".equals(result)){
+ Gson gson = new Gson();
+ List custPhotoFulInfoList = gson.fromJson(result, new TypeToken>() {
+ }.getType());
+ if(custPhotoFulInfoList !=null && custPhotoFulInfoList.size()>0){
+ AppDatabase.getDatabase(InitializationActivity.this).custPhotoFulDao().insertAll(custPhotoFulInfoList);
+ personFaceNum = personFaceNum+custPhotoFulInfoList.size();
+ getCustPhoto();
+ }else{
+ sendMessage("获取人脸信息成功!更新"+personFaceNum+"条数据", 0);
+ }
+
+ }else {
+ sendMessage("人脸信息更新成功!", 0);
+ }
+ Log.i("getCustPhoto result", jsonString);
+ Log.i("getCustPhoto result", result);
+ }catch (Exception e){
+ Log.e("getCustPhoto",""+e.toString());
+ sendMessage("获取人脸信息失败!", 1);
+ }
+ }
+ });
+
+ }
+ private void getCookBook(){
+ ThreadPoolManager.getExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ JSONObject json = new JSONObject();
+ String jsonString = json.toString();
+ Log.i("getCookBook jsonString", jsonString);
+ // 定义 JSON 的 MediaType
+ MediaType JSON = MediaType.parse("application/json; charset=utf-8");
+ // 创建 RequestBody
+ RequestBody body = RequestBody.create(JSON, jsonString);
+ String url = WorkConfig.getBaseUrl() + "/api/v4/device/common/menu/bind-info-config";
+
+ Request request = new Request.Builder().url(url)
+ .addHeader("Authorization", OkHttpService.getToken())
+ .addHeader("MERCHANT-ID", "378915229716713472")
+ .addHeader("machine-sn", "2AD2435000620350")
+ .post(body).build();
+ try {
+ String result = service.httpPost(url, body, InitializationActivity.this,request);
+ Log.i("getCookBook result", jsonString);
+ JSONObject firstJson = JSONObject.parseObject(result);
+ if(firstJson.containsKey("dateList") && firstJson.containsKey("mealList")){
+ AppDatabase.getDatabase(InitializationActivity.this).cookIntervalDao().deleteAll();
+ AppDatabase.getDatabase(InitializationActivity.this).cookBookDao().deleteAll();
+ String mealList = firstJson.getString("mealList");
+ Gson gson = new Gson();
+ List cookBookInfoList = gson.fromJson(mealList, new TypeToken>() {
+ }.getType());
+ for (CookBookInfo beab:cookBookInfoList){
+ AppDatabase.getDatabase(InitializationActivity.this).cookBookDao().insert(beab);
+ }
+ String dateList = firstJson.getString("dateList");
+ List intervalList = gson.fromJson(dateList, new TypeToken>() {
+ }.getType());
+ String recipeId = firstJson.getString("recipeId");
+ String recipeType = firstJson.getString("recipeType");
+ String uptime = firstJson.getString("uptime");
+ for(DateListBean bean : intervalList){
+ String applyDate = bean.getApplyDate();
+ List intervalBeanList = bean.getIntervalList();
+ for (IntervalBean intervalBean:intervalBeanList){
+ CookIntervalInfo cookIntervalInfo = new CookIntervalInfo();
+ String intervalId = intervalBean.getIntervalId();
+ String intervalName = intervalBean.getIntervalName();
+ String startTime = intervalBean.getStartTime();
+ String endTime = intervalBean.getEndTime();
+ List productBeanList = intervalBean.getProductList();
+ cookIntervalInfo.setRecipeId(recipeId);
+ cookIntervalInfo.setRecipeType(recipeType);
+ cookIntervalInfo.setUptime(uptime);
+ cookIntervalInfo.setIntervalId(intervalId);
+ cookIntervalInfo.setIntervalName(intervalName);
+ cookIntervalInfo.setStartTime(startTime);
+ cookIntervalInfo.setEndTime(endTime);
+ cookIntervalInfo.setApplyDate(applyDate);
+ if(productBeanList !=null && productBeanList.size()>0){
+ for(ProductBean productBean:productBeanList){
+ String detailId = productBean.getDetailId();
+ String dishesId = productBean.getDishesId();
+ String prefPrice = productBean.getPrefPrice();
+ String salePrice = productBean.getSalePrice();
+ cookIntervalInfo.setDetailId(detailId);
+ cookIntervalInfo.setDishesId(dishesId);
+ cookIntervalInfo.setPrefPrice(prefPrice);
+ cookIntervalInfo.setSalePrice(salePrice);
+ AppDatabase.getDatabase(InitializationActivity.this).cookIntervalDao().insert(cookIntervalInfo);
+ }
+ }
+
+ }
+ }
+ sendMessage("获取菜谱信息成功!", 0);
+ }else{
+ sendMessage("获取菜谱信息失败!", 1);
+ }
+
+ }catch (Exception e){
+ Log.e("获取菜谱信息失败e",""+e.toString());
+ sendMessage("获取菜谱信息失败!", 1);
+ }
+ }
+ });
}
+ private void getDeviceBase(){
+ ThreadPoolManager.getExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ JSONObject json = new JSONObject();
+ String jsonString = json.toString();
+ Log.i("getSecretKey jsonString", jsonString);
+ // 定义 JSON 的 MediaType
+ MediaType JSON = MediaType.parse("application/json; charset=utf-8");
+ // 创建 RequestBody
+ RequestBody body = RequestBody.create(JSON, jsonString);
+ String url = WorkConfig.getBaseUrl() + "/api/v4/device/common/base/config";
+
+ Request request = new Request.Builder().url(url)
+ .addHeader("Authorization", OkHttpService.getToken())
+ .addHeader("MERCHANT-ID", "378915229716713472")
+ .addHeader("machine-sn", "2AD2435000620350")
+ .post(body).build();
+ try {
+ String result = service.httpPost(url, body, InitializationActivity.this,request);
+ Log.i("getDeviceBase result", jsonString);
+ JSONObject firstJson = JSONObject.parseObject(result);
+ if(firstJson.containsKey("deviceInfoVO")){
+ AppDatabase.getDatabase(InitializationActivity.this).deviceBaseDao().deleteAll();
+ DeviceBaseInfo deviceBaseInfo = new DeviceBaseInfo();
+ String systemCardInfoStr = firstJson.getString("systemCardInfo");
+ deviceBaseInfo.setSystemCardInfo(systemCardInfoStr);
+ String deviceInfoVOStr = firstJson.getString("deviceInfoVO");
+ JSONObject deviceInfoJson = JSONObject.parseObject(deviceInfoVOStr);
+ String deviceMetadata = deviceInfoJson.getString("deviceMetadata");
+ String canteenId = deviceInfoJson.getString("canteenId");
+ String shopstallId = deviceInfoJson.getString("shopstallId");
+ String canteenName = deviceInfoJson.getString("canteenName");
+ String shopstallName = deviceInfoJson.getString("shopstallName");
+ String recipeId = deviceInfoJson.getString("recipeId");
+ String devicePwd = deviceInfoJson.getString("devicePwd");
+ String deviceNum = deviceInfoJson.getString("deviceNum");
+ String deviceName = deviceInfoJson.getString("deviceName");
+ deviceBaseInfo.setDeviceMetadata(deviceMetadata);
+ deviceBaseInfo.setCanteenId(canteenId);
+ deviceBaseInfo.setShopstallId(shopstallId);
+ deviceBaseInfo.setCanteenName(canteenName);
+ deviceBaseInfo.setShopstallName(shopstallName);
+ deviceBaseInfo.setRecipeId(recipeId);
+ deviceBaseInfo.setDevicePwd(devicePwd);
+ deviceBaseInfo.setDeviceNum(deviceNum);
+ deviceBaseInfo.setDeviceName(deviceName);
+ AppDatabase.getDatabase(InitializationActivity.this).deviceBaseDao().insert(deviceBaseInfo);
+ sendMessage("获取设备基础信息、系统卡信息、设备自定义信息成功!", 0);
+ }else{
+ sendMessage("获取设备基础信息、系统卡信息、设备自定义信息失败!", 1);
+ }
+
+ }catch (Exception e){
+ sendMessage("获取设备基础信息、系统卡信息、设备自定义信息失败!", 1);
+ }
+ }
+ });
+ }
+
+ private void getMealTime(){
+ ThreadPoolManager.getExecutor().execute(new Runnable() {
+ @Override
+ public void run() {
+ JSONObject json = new JSONObject();
+ String jsonString = json.toString();
+ Log.i("getMealTime jsonString", jsonString);
+ // 定义 JSON 的 MediaType
+ MediaType JSON = MediaType.parse("application/json; charset=utf-8");
+ // 创建 RequestBody
+ RequestBody body = RequestBody.create(JSON, jsonString);
+ String url = WorkConfig.getBaseUrl() + "/api/v4/device/common/base/interval-config";
+ Request request = new Request.Builder().url(url)
+ .addHeader("Authorization", OkHttpService.getToken())
+ .addHeader("MERCHANT-ID", "378915229716713472")
+ .addHeader("machine-sn", "2AD2435000620350")
+ .post(body).build();
+ try {
+ String result = service.httpPost(url, body, InitializationActivity.this,request);
+ Log.i("getMealTime result", jsonString);
+ JSONObject firstJson = JSONObject.parseObject(result);
+ if(firstJson.containsKey("basicsTimeIntervals")){
+ String basicsTimeIntervalsStr = firstJson.getString("basicsTimeIntervals");
+ AppDatabase.getDatabase(InitializationActivity.this).mealTimeDao().deleteAll();
+ Gson gson = new Gson();
+ List mealTimeList = gson.fromJson(basicsTimeIntervalsStr, new TypeToken>() {
+ }.getType());
+ for (MealTimeInfo bean : mealTimeList){
+ AppDatabase.getDatabase(InitializationActivity.this).mealTimeDao().insert(bean);
+ };
+ sendMessage("获取餐次信息成功!", 0);
+ }else{
+ sendMessage("获取餐次信息失败!", 1);
+ }
+
+ Log.i("getMealTime result", result);
+ }catch (Exception e){
+ sendMessage("获取餐次信息失败!", 1);
+ }
+ }
+ });
+
+ }
+
+ //获取设备登录信息
private void getDeviceLogin(String encryptionSn,SecretKeyInfo secretKeyInfo){
List dbList = AppDatabase.getDatabase(InitializationActivity.this).SecretKeyDao().geSecretKey();
@@ -140,19 +414,19 @@ public class InitializationActivity extends BaseActivity dbList = AppDatabase.getDatabase(InitializationActivity.this).custInfoDao().getCustInfo();
- Log.i("getPersonMessage dbList", dbList.size() + "");
+ CustInfo custBean= AppDatabase.getDatabase(InitializationActivity.this).custInfoDao().getOneCustInfo();
JSONObject json = new JSONObject();
- if (dbList != null && dbList.size() > 0) {
- json.put("updateId", dbList.get(dbList.size() - 1).getUpdateId());
+ if (custBean != null) {
+ Log.i("getPersonMessage custInfo", custBean.toString() + "");
+ json.put("updateId", custBean.getUpdateId());
} else {
json.put("updateId", 1);
}
@@ -241,12 +515,13 @@ public class InitializationActivity extends BaseActivity intervalList;
+
+
+ public String getApplyDate() {
+ return applyDate;
+ }
+
+ public void setApplyDate(String applyDate) {
+ this.applyDate = applyDate;
+ }
+
+ public List getIntervalList() {
+ return intervalList;
+ }
+
+ public void setIntervalList(List intervalList) {
+ this.intervalList = intervalList;
+ }
+
+ @Override
+ public String toString() {
+ return "DateListBean{" +
+ "applyDate='" + applyDate + '\'' +
+ ", intervalList=" + intervalList +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/beans/base/IntervalBean.java b/app/src/main/java/com/bonus/canteen/db/beans/base/IntervalBean.java
new file mode 100644
index 0000000..a020a1a
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/beans/base/IntervalBean.java
@@ -0,0 +1,69 @@
+package com.bonus.canteen.db.beans.base;
+
+import java.util.List;
+
+public class IntervalBean {
+
+ private String intervalId;
+
+ private String intervalName;
+
+ private String startTime;
+
+ private String endTime;
+
+ private List productList;
+
+
+ public String getIntervalId() {
+ return intervalId;
+ }
+
+ public void setIntervalId(String intervalId) {
+ this.intervalId = intervalId;
+ }
+
+ public String getIntervalName() {
+ return intervalName;
+ }
+
+ public void setIntervalName(String intervalName) {
+ this.intervalName = intervalName;
+ }
+
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
+ public String getEndTime() {
+ return endTime;
+ }
+
+ public void setEndTime(String endTime) {
+ this.endTime = endTime;
+ }
+
+ public List getProductList() {
+ return productList;
+ }
+
+ public void setProductList(List productList) {
+ this.productList = productList;
+ }
+
+
+ @Override
+ public String toString() {
+ return "IntervalBean{" +
+ "intervalId='" + intervalId + '\'' +
+ ", intervalName='" + intervalName + '\'' +
+ ", startTime='" + startTime + '\'' +
+ ", endTime='" + endTime + '\'' +
+ ", productList=" + productList +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/beans/base/ProductBean.java b/app/src/main/java/com/bonus/canteen/db/beans/base/ProductBean.java
new file mode 100644
index 0000000..9e782aa
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/beans/base/ProductBean.java
@@ -0,0 +1,53 @@
+package com.bonus.canteen.db.beans.base;
+
+public class ProductBean {
+
+ private String detailId;
+ private String dishesId;
+
+ private String prefPrice;
+
+ private String salePrice;
+
+ public String getDetailId() {
+ return detailId;
+ }
+
+ public void setDetailId(String detailId) {
+ this.detailId = detailId;
+ }
+
+ public String getDishesId() {
+ return dishesId;
+ }
+
+ public void setDishesId(String dishesId) {
+ this.dishesId = dishesId;
+ }
+
+ public String getPrefPrice() {
+ return prefPrice;
+ }
+
+ public void setPrefPrice(String prefPrice) {
+ this.prefPrice = prefPrice;
+ }
+
+ public String getSalePrice() {
+ return salePrice;
+ }
+
+ public void setSalePrice(String salePrice) {
+ this.salePrice = salePrice;
+ }
+
+ @Override
+ public String toString() {
+ return "ProductBean{" +
+ "detailId='" + detailId + '\'' +
+ ", dishesId='" + dishesId + '\'' +
+ ", prefPrice='" + prefPrice + '\'' +
+ ", salePrice='" + salePrice + '\'' +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/dao/base/CookBookDao.java b/app/src/main/java/com/bonus/canteen/db/dao/base/CookBookDao.java
new file mode 100644
index 0000000..d258ee5
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/dao/base/CookBookDao.java
@@ -0,0 +1,33 @@
+package com.bonus.canteen.db.dao.base;
+
+import com.bonus.canteen.db.entity.base.CookBookInfo;
+
+import java.util.List;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.Query;
+import androidx.room.Update;
+
+@Dao
+public interface CookBookDao {
+
+ @Query("select * from cook_book_info where dishesId=:dishesId")
+ CookBookInfo getCookBookById(String dishesId);
+
+ @Query("select * from cook_book_info")
+ List getCookBook();
+
+ @Insert
+ void insert(CookBookInfo device); // 插入数据
+
+ @Update
+ void update(CookBookInfo device); // 更新数据
+
+ @Delete
+ void delete(CookBookInfo device); // 删除数据
+
+ @Query("delete from cook_book_info ")
+ void deleteAll(); // 删除数据
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/dao/base/CookIntervalDao.java b/app/src/main/java/com/bonus/canteen/db/dao/base/CookIntervalDao.java
new file mode 100644
index 0000000..733a622
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/dao/base/CookIntervalDao.java
@@ -0,0 +1,34 @@
+package com.bonus.canteen.db.dao.base;
+
+
+import com.bonus.canteen.db.entity.base.CookIntervalInfo;
+
+import java.util.List;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.Query;
+import androidx.room.Update;
+
+@Dao
+public interface CookIntervalDao {
+ @Query("select * from cook_interval_info where id =:id")
+ CookIntervalInfo getCookBookById(int id);
+
+ @Query("select * from cook_interval_info")
+ List getCookInterval();
+
+ @Insert
+ void insert(CookIntervalInfo intervalInfo); // 插入数据
+
+ @Update
+ void update(CookIntervalInfo intervalInfo); // 更新数据
+
+ @Delete
+ void delete(CookIntervalInfo intervalInfo); // 删除数据
+
+ @Query("delete from cook_interval_info ")
+ void deleteAll(); // 删除数据
+
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/dao/base/CustPhotoFulDao.java b/app/src/main/java/com/bonus/canteen/db/dao/base/CustPhotoFulDao.java
new file mode 100644
index 0000000..309d5ee
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/dao/base/CustPhotoFulDao.java
@@ -0,0 +1,42 @@
+package com.bonus.canteen.db.dao.base;
+
+
+import com.bonus.canteen.db.entity.base.CustPhotoFulInfo;
+
+import java.util.List;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+import androidx.room.Update;
+
+@Dao
+public interface CustPhotoFulDao {
+
+ @Query("select * from cust_photo_ful where custId =:custId")
+ CustPhotoFulInfo getCustPhotoById(int custId);
+
+ @Query("select * from cust_photo_ful")
+ List getCustPhoto();
+
+ @Query("select * from cust_photo_ful order by updateId desc limit 1")
+ CustPhotoFulInfo getOneCustPhoto();
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ void insert(CustPhotoFulInfo custPhotoFulInfo); // 插入数据
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ void insertAll(List custPhotoFulInfoList);
+
+ @Update
+ void update(CustPhotoFulInfo custPhotoFulInfo); // 更新数据
+
+ @Delete
+ void delete(CustPhotoFulInfo custPhotoFulInfo); // 删除数据
+
+ @Query("delete from cust_photo_ful ")
+ void deleteAll(); // 删除数据
+
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/dao/base/DeviceBaseDao.java b/app/src/main/java/com/bonus/canteen/db/dao/base/DeviceBaseDao.java
new file mode 100644
index 0000000..88592c1
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/dao/base/DeviceBaseDao.java
@@ -0,0 +1,35 @@
+package com.bonus.canteen.db.dao.base;
+
+
+import com.bonus.canteen.db.entity.base.DeviceBaseInfo;
+
+import java.util.List;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.Query;
+import androidx.room.Update;
+
+@Dao
+public interface DeviceBaseDao {
+
+ @Query("select * from device_base where canteenId=:canteenId")
+ DeviceBaseInfo getDeviceBaseById(String canteenId);
+
+ @Query("select * from device_base")
+ List getDeviceBase();
+
+ @Insert
+ void insert(DeviceBaseInfo device); // 插入数据
+
+ @Update
+ void update(DeviceBaseInfo device); // 更新数据
+
+ @Delete
+ void delete(DeviceBaseInfo device); // 删除数据
+
+ @Query("delete from device_base ")
+ void deleteAll(); // 删除数据
+
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/dao/base/MealTimeDao.java b/app/src/main/java/com/bonus/canteen/db/dao/base/MealTimeDao.java
new file mode 100644
index 0000000..8760303
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/dao/base/MealTimeDao.java
@@ -0,0 +1,38 @@
+package com.bonus.canteen.db.dao.base;
+
+
+import com.bonus.canteen.db.entity.base.MealTimeInfo;
+
+import java.util.List;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.Query;
+import androidx.room.Update;
+
+/**
+ * @A
+ */
+@Dao
+public interface MealTimeDao {
+
+ @Query("select * from meal_time_info where intervalId=:intervalId")
+ MealTimeInfo getMealTimeById(String intervalId);
+
+ @Query("select * from meal_time_info")
+ List getMealTime();
+
+ @Insert
+ void insert(MealTimeInfo meal); // 插入数据
+
+ @Update
+ void update(MealTimeInfo meal); // 更新数据
+
+ @Delete
+ void delete(MealTimeInfo meal); // 删除数据
+
+ @Query("delete from meal_time_info")
+ void deleteAll(); // 删除数据
+
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/dao/user/CustInfoDao.java b/app/src/main/java/com/bonus/canteen/db/dao/user/CustInfoDao.java
index d12649e..4a02aab 100644
--- a/app/src/main/java/com/bonus/canteen/db/dao/user/CustInfoDao.java
+++ b/app/src/main/java/com/bonus/canteen/db/dao/user/CustInfoDao.java
@@ -7,6 +7,7 @@ import java.util.List;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import androidx.room.Update;
@@ -16,10 +17,13 @@ public interface CustInfoDao {
@Query("select * from cust_info where custId = :custId")
CustInfo getCustInfoByCustId(String custId);
- @Query("select * from cust_info")
+ @Query("select * from cust_info ORDER BY updateId ")
List getCustInfo();
- @Insert
+ @Query("select * from cust_info ORDER BY updateId desc limit 1")
+ CustInfo getOneCustInfo();
+
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(CustInfo user); // 插入数据
@Update
diff --git a/app/src/main/java/com/bonus/canteen/db/entity/base/CookBookInfo.java b/app/src/main/java/com/bonus/canteen/db/entity/base/CookBookInfo.java
new file mode 100644
index 0000000..e857951
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/entity/base/CookBookInfo.java
@@ -0,0 +1,476 @@
+package com.bonus.canteen.db.entity.base;
+
+import org.jetbrains.annotations.NotNull;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+@Entity(tableName = "cook_book_info")
+public class CookBookInfo {
+
+ @PrimaryKey
+ @NotNull
+ private String dishesId;
+
+ @ColumnInfo
+ private String customId;
+
+ @ColumnInfo
+ private String productName;
+
+ @ColumnInfo
+ private String originalPrice;
+
+ @ColumnInfo
+ private String salseMode;
+
+ @ColumnInfo
+ private String weightDeviation;
+
+ @ColumnInfo
+ private String weight;
+
+ @ColumnInfo
+ private String typeId;
+
+ @ColumnInfo
+ private String typeName;
+
+ @ColumnInfo
+ private String pinyinInitials;
+
+ @ColumnInfo
+ private String pinyinFull;
+
+ @ColumnInfo
+ private String purine;
+
+ @ColumnInfo
+ private String iodine;
+
+ @ColumnInfo
+ private String initialScore;
+
+ @ColumnInfo
+ private String calories;
+
+ @ColumnInfo
+ private String protein;
+
+ @ColumnInfo
+ private String fat;
+
+ @ColumnInfo
+ private String carbohydrate;
+
+ @ColumnInfo
+ private String dietaryFiber;
+
+ @ColumnInfo
+ private String cholesterol;
+
+ @ColumnInfo
+ private String calcium;
+
+ @ColumnInfo
+ private String sodium;
+
+ @ColumnInfo
+ private String caloriesNrv;
+
+ @ColumnInfo
+ private String proteinNrv;
+
+ @ColumnInfo
+ private String fatNrv;
+
+ @ColumnInfo
+ private String carbohydrateNrv;
+
+ @ColumnInfo
+ private String dietaryFiberNrv;
+
+ @ColumnInfo
+ private String cholesterolNrv;
+
+ @ColumnInfo
+ private String calciumNrv;
+
+ @ColumnInfo
+ private String sodiumNrv;
+
+ @ColumnInfo
+ private String foodImage;
+
+ @ColumnInfo
+ private String intro;
+
+ @ColumnInfo
+ private String labelList;
+
+ @ColumnInfo
+ private String mainList;
+
+ @ColumnInfo
+ private String auxList;
+
+ @ColumnInfo
+ private String dosList;
+
+ @ColumnInfo
+ private String monthlySales;
+
+ @ColumnInfo
+ private String goodProbability;
+
+
+ @NotNull
+ public String getDishesId() {
+ return dishesId;
+ }
+
+ public void setDishesId(@NotNull String dishesId) {
+ this.dishesId = dishesId;
+ }
+
+ public String getCustomId() {
+ return customId;
+ }
+
+ public void setCustomId(String customId) {
+ this.customId = customId;
+ }
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public String getOriginalPrice() {
+ return originalPrice;
+ }
+
+ public void setOriginalPrice(String originalPrice) {
+ this.originalPrice = originalPrice;
+ }
+
+ public String getSalseMode() {
+ return salseMode;
+ }
+
+ public void setSalseMode(String salseMode) {
+ this.salseMode = salseMode;
+ }
+
+ public String getWeightDeviation() {
+ return weightDeviation;
+ }
+
+ public void setWeightDeviation(String weightDeviation) {
+ this.weightDeviation = weightDeviation;
+ }
+
+ public String getWeight() {
+ return weight;
+ }
+
+ public void setWeight(String weight) {
+ this.weight = weight;
+ }
+
+ public String getTypeId() {
+ return typeId;
+ }
+
+ public void setTypeId(String typeId) {
+ this.typeId = typeId;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+
+ public void setTypeName(String typeName) {
+ this.typeName = typeName;
+ }
+
+ public String getPinyinInitials() {
+ return pinyinInitials;
+ }
+
+ public void setPinyinInitials(String pinyinInitials) {
+ this.pinyinInitials = pinyinInitials;
+ }
+
+ public String getPinyinFull() {
+ return pinyinFull;
+ }
+
+ public void setPinyinFull(String pinyinFull) {
+ this.pinyinFull = pinyinFull;
+ }
+
+ public String getPurine() {
+ return purine;
+ }
+
+ public void setPurine(String purine) {
+ this.purine = purine;
+ }
+
+ public String getIodine() {
+ return iodine;
+ }
+
+ public void setIodine(String iodine) {
+ this.iodine = iodine;
+ }
+
+ public String getInitialScore() {
+ return initialScore;
+ }
+
+ public void setInitialScore(String initialScore) {
+ this.initialScore = initialScore;
+ }
+
+ public String getCalories() {
+ return calories;
+ }
+
+ public void setCalories(String calories) {
+ this.calories = calories;
+ }
+
+ public String getProtein() {
+ return protein;
+ }
+
+ public void setProtein(String protein) {
+ this.protein = protein;
+ }
+
+ public String getFat() {
+ return fat;
+ }
+
+ public void setFat(String fat) {
+ this.fat = fat;
+ }
+
+ public String getCarbohydrate() {
+ return carbohydrate;
+ }
+
+ public void setCarbohydrate(String carbohydrate) {
+ this.carbohydrate = carbohydrate;
+ }
+
+ public String getDietaryFiber() {
+ return dietaryFiber;
+ }
+
+ public void setDietaryFiber(String dietaryFiber) {
+ this.dietaryFiber = dietaryFiber;
+ }
+
+ public String getCholesterol() {
+ return cholesterol;
+ }
+
+ public void setCholesterol(String cholesterol) {
+ this.cholesterol = cholesterol;
+ }
+
+ public String getCalcium() {
+ return calcium;
+ }
+
+ public void setCalcium(String calcium) {
+ this.calcium = calcium;
+ }
+
+ public String getSodium() {
+ return sodium;
+ }
+
+ public void setSodium(String sodium) {
+ this.sodium = sodium;
+ }
+
+ public String getCaloriesNrv() {
+ return caloriesNrv;
+ }
+
+ public void setCaloriesNrv(String caloriesNrv) {
+ this.caloriesNrv = caloriesNrv;
+ }
+
+ public String getProteinNrv() {
+ return proteinNrv;
+ }
+
+ public void setProteinNrv(String proteinNrv) {
+ this.proteinNrv = proteinNrv;
+ }
+
+ public String getFatNrv() {
+ return fatNrv;
+ }
+
+ public void setFatNrv(String fatNrv) {
+ this.fatNrv = fatNrv;
+ }
+
+ public String getCarbohydrateNrv() {
+ return carbohydrateNrv;
+ }
+
+ public void setCarbohydrateNrv(String carbohydrateNrv) {
+ this.carbohydrateNrv = carbohydrateNrv;
+ }
+
+ public String getDietaryFiberNrv() {
+ return dietaryFiberNrv;
+ }
+
+ public void setDietaryFiberNrv(String dietaryFiberNrv) {
+ this.dietaryFiberNrv = dietaryFiberNrv;
+ }
+
+ public String getCholesterolNrv() {
+ return cholesterolNrv;
+ }
+
+ public void setCholesterolNrv(String cholesterolNrv) {
+ this.cholesterolNrv = cholesterolNrv;
+ }
+
+ public String getCalciumNrv() {
+ return calciumNrv;
+ }
+
+ public void setCalciumNrv(String calciumNrv) {
+ this.calciumNrv = calciumNrv;
+ }
+
+ public String getSodiumNrv() {
+ return sodiumNrv;
+ }
+
+ public void setSodiumNrv(String sodiumNrv) {
+ this.sodiumNrv = sodiumNrv;
+ }
+
+ public String getFoodImage() {
+ return foodImage;
+ }
+
+ public void setFoodImage(String foodImage) {
+ this.foodImage = foodImage;
+ }
+
+ public String getIntro() {
+ return intro;
+ }
+
+ public void setIntro(String intro) {
+ this.intro = intro;
+ }
+
+ public String getLabelList() {
+ return labelList;
+ }
+
+ public void setLabelList(String labelList) {
+ this.labelList = labelList;
+ }
+
+ public String getMainList() {
+ return mainList;
+ }
+
+ public void setMainList(String mainList) {
+ this.mainList = mainList;
+ }
+
+ public String getAuxList() {
+ return auxList;
+ }
+
+ public void setAuxList(String auxList) {
+ this.auxList = auxList;
+ }
+
+ public String getDosList() {
+ return dosList;
+ }
+
+ public void setDosList(String dosList) {
+ this.dosList = dosList;
+ }
+
+ public String getMonthlySales() {
+ return monthlySales;
+ }
+
+ public void setMonthlySales(String monthlySales) {
+ this.monthlySales = monthlySales;
+ }
+
+ public String getGoodProbability() {
+ return goodProbability;
+ }
+
+ public void setGoodProbability(String goodProbability) {
+ this.goodProbability = goodProbability;
+ }
+
+ @Override
+ public String toString() {
+ return "CookBookInfo{" +
+ "dishesId='" + dishesId + '\'' +
+ ", customId='" + customId + '\'' +
+ ", productName='" + productName + '\'' +
+ ", originalPrice='" + originalPrice + '\'' +
+ ", salseMode='" + salseMode + '\'' +
+ ", weightDeviation='" + weightDeviation + '\'' +
+ ", weight='" + weight + '\'' +
+ ", typeId='" + typeId + '\'' +
+ ", typeName='" + typeName + '\'' +
+ ", pinyinInitials='" + pinyinInitials + '\'' +
+ ", pinyinFull='" + pinyinFull + '\'' +
+ ", purine='" + purine + '\'' +
+ ", iodine='" + iodine + '\'' +
+ ", initialScore='" + initialScore + '\'' +
+ ", calories='" + calories + '\'' +
+ ", protein='" + protein + '\'' +
+ ", fat='" + fat + '\'' +
+ ", carbohydrate='" + carbohydrate + '\'' +
+ ", dietaryFiber='" + dietaryFiber + '\'' +
+ ", cholesterol='" + cholesterol + '\'' +
+ ", calcium='" + calcium + '\'' +
+ ", sodium='" + sodium + '\'' +
+ ", caloriesNrv='" + caloriesNrv + '\'' +
+ ", proteinNrv='" + proteinNrv + '\'' +
+ ", fatNrv='" + fatNrv + '\'' +
+ ", carbohydrateNrv='" + carbohydrateNrv + '\'' +
+ ", dietaryFiberNrv='" + dietaryFiberNrv + '\'' +
+ ", cholesterolNrv='" + cholesterolNrv + '\'' +
+ ", calciumNrv='" + calciumNrv + '\'' +
+ ", sodiumNrv='" + sodiumNrv + '\'' +
+ ", foodImage='" + foodImage + '\'' +
+ ", intro='" + intro + '\'' +
+ ", labelList='" + labelList + '\'' +
+ ", mainList='" + mainList + '\'' +
+ ", auxList='" + auxList + '\'' +
+ ", dosList='" + dosList + '\'' +
+ ", monthlySales='" + monthlySales + '\'' +
+ ", goodProbability='" + goodProbability + '\'' +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/entity/base/CookIntervalInfo.java b/app/src/main/java/com/bonus/canteen/db/entity/base/CookIntervalInfo.java
new file mode 100644
index 0000000..8611c80
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/entity/base/CookIntervalInfo.java
@@ -0,0 +1,162 @@
+package com.bonus.canteen.db.entity.base;
+
+import org.jetbrains.annotations.NotNull;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+@Entity(tableName = "cook_interval_info")
+public class CookIntervalInfo {
+
+ @PrimaryKey(autoGenerate = true)
+ @NotNull
+ private int id;
+ @ColumnInfo
+ private String recipeId;
+ @ColumnInfo
+ private String recipeType;
+ @ColumnInfo
+ private String uptime;
+ @ColumnInfo
+ private String applyDate;
+ @ColumnInfo
+ private String intervalId;
+ @ColumnInfo
+ private String intervalName;
+ @ColumnInfo
+ private String startTime;
+ @ColumnInfo
+ private String endTime;
+ @ColumnInfo
+ private String detailId;
+ @ColumnInfo
+ private String dishesId;
+ @ColumnInfo
+ private String prefPrice;
+ @ColumnInfo
+ private String salePrice;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getRecipeId() {
+ return recipeId;
+ }
+
+ public void setRecipeId(String recipeId) {
+ this.recipeId = recipeId;
+ }
+
+ public String getRecipeType() {
+ return recipeType;
+ }
+
+ public void setRecipeType(String recipeType) {
+ this.recipeType = recipeType;
+ }
+
+ public String getApplyDate() {
+ return applyDate;
+ }
+
+ public void setApplyDate(String applyDate) {
+ this.applyDate = applyDate;
+ }
+
+ public String getIntervalId() {
+ return intervalId;
+ }
+
+ public void setIntervalId(String intervalId) {
+ this.intervalId = intervalId;
+ }
+
+ public String getIntervalName() {
+ return intervalName;
+ }
+
+ public void setIntervalName(String intervalName) {
+ this.intervalName = intervalName;
+ }
+
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
+ public String getEndTime() {
+ return endTime;
+ }
+
+ public void setEndTime(String endTime) {
+ this.endTime = endTime;
+ }
+
+ public String getDetailId() {
+ return detailId;
+ }
+
+ public void setDetailId(String detailId) {
+ this.detailId = detailId;
+ }
+
+ public String getDishesId() {
+ return dishesId;
+ }
+
+ public void setDishesId(String dishesId) {
+ this.dishesId = dishesId;
+ }
+
+ public String getPrefPrice() {
+ return prefPrice;
+ }
+
+ public void setPrefPrice(String prefPrice) {
+ this.prefPrice = prefPrice;
+ }
+
+ public String getSalePrice() {
+ return salePrice;
+ }
+
+ public void setSalePrice(String salePrice) {
+ this.salePrice = salePrice;
+ }
+
+ public String getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(String uptime) {
+ this.uptime = uptime;
+ }
+
+ @Override
+ public String toString() {
+ return "CookIntervalInfo{" +
+ "id=" + id +
+ ", recipeId='" + recipeId + '\'' +
+ ", recipeType='" + recipeType + '\'' +
+ ", uptime='" + uptime + '\'' +
+ ", applyDate='" + applyDate + '\'' +
+ ", intervalId='" + intervalId + '\'' +
+ ", intervalName='" + intervalName + '\'' +
+ ", startTime='" + startTime + '\'' +
+ ", endTime='" + endTime + '\'' +
+ ", detailId='" + detailId + '\'' +
+ ", dishesId='" + dishesId + '\'' +
+ ", prefPrice='" + prefPrice + '\'' +
+ ", salePrice='" + salePrice + '\'' +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/entity/base/CustPhotoFulInfo.java b/app/src/main/java/com/bonus/canteen/db/entity/base/CustPhotoFulInfo.java
new file mode 100644
index 0000000..8fb6ed0
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/entity/base/CustPhotoFulInfo.java
@@ -0,0 +1,66 @@
+package com.bonus.canteen.db.entity.base;
+
+import org.jetbrains.annotations.NotNull;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+@Entity(tableName = "cust_photo_ful")
+public class CustPhotoFulInfo {
+
+ @PrimaryKey
+ @NotNull
+ private String custId;
+ @ColumnInfo
+ private String updateId;
+
+ @ColumnInfo
+ private String features;
+
+ @ColumnInfo
+ private String custPhotoUrl;
+
+ @NotNull
+ public String getCustId() {
+ return custId;
+ }
+
+ public void setCustId(@NotNull String custId) {
+ this.custId = custId;
+ }
+
+ public String getUpdateId() {
+ return updateId;
+ }
+
+ public void setUpdateId(String updateId) {
+ this.updateId = updateId;
+ }
+
+ public String getFeatures() {
+ return features;
+ }
+
+ public void setFeatures(String features) {
+ this.features = features;
+ }
+
+ public String getCustPhotoUrl() {
+ return custPhotoUrl;
+ }
+
+ public void setCustPhotoUrl(String custPhotoUrl) {
+ this.custPhotoUrl = custPhotoUrl;
+ }
+
+ @Override
+ public String toString() {
+ return "CustPhotoFulInfo{" +
+ "custId='" + custId + '\'' +
+ ", updateId='" + updateId + '\'' +
+ ", features='" + features + '\'' +
+ ", custPhotoUrl='" + custPhotoUrl + '\'' +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/entity/base/DeviceBaseInfo.java b/app/src/main/java/com/bonus/canteen/db/entity/base/DeviceBaseInfo.java
new file mode 100644
index 0000000..5c13918
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/entity/base/DeviceBaseInfo.java
@@ -0,0 +1,142 @@
+package com.bonus.canteen.db.entity.base;
+
+import org.jetbrains.annotations.NotNull;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+@Entity(tableName = "device_base")
+public class DeviceBaseInfo {
+ @ColumnInfo
+ private String systemCardInfo;
+ @ColumnInfo
+ private String deviceMetadata;
+ @ColumnInfo
+ private String recipeList;
+
+ @PrimaryKey
+ @NotNull
+ private String canteenId;
+ @ColumnInfo
+ private String shopstallId;
+ @ColumnInfo
+ private String canteenName;
+ @ColumnInfo
+ private String shopstallName;
+ @ColumnInfo
+ private String recipeId;
+ @ColumnInfo
+ private String devicePwd;
+ @ColumnInfo
+ private String deviceNum;
+ @ColumnInfo
+ private String deviceName;
+
+ public String getSystemCardInfo() {
+ return systemCardInfo;
+ }
+
+ public void setSystemCardInfo(String systemCardInfo) {
+ this.systemCardInfo = systemCardInfo;
+ }
+
+ public String getDeviceMetadata() {
+ return deviceMetadata;
+ }
+
+ public void setDeviceMetadata(String deviceMetadata) {
+ this.deviceMetadata = deviceMetadata;
+ }
+
+ public String getRecipeList() {
+ return recipeList;
+ }
+
+ public void setRecipeList(String recipeList) {
+ this.recipeList = recipeList;
+ }
+
+ @NotNull
+ public String getCanteenId() {
+ return canteenId;
+ }
+
+ public void setCanteenId(@NotNull String canteenId) {
+ this.canteenId = canteenId;
+ }
+
+ public String getShopstallId() {
+ return shopstallId;
+ }
+
+ public void setShopstallId(String shopstallId) {
+ this.shopstallId = shopstallId;
+ }
+
+ public String getCanteenName() {
+ return canteenName;
+ }
+
+ public void setCanteenName(String canteenName) {
+ this.canteenName = canteenName;
+ }
+
+ public String getShopstallName() {
+ return shopstallName;
+ }
+
+ public void setShopstallName(String shopstallName) {
+ this.shopstallName = shopstallName;
+ }
+
+ public String getRecipeId() {
+ return recipeId;
+ }
+
+ public void setRecipeId(String recipeId) {
+ this.recipeId = recipeId;
+ }
+
+ public String getDevicePwd() {
+ return devicePwd;
+ }
+
+ public void setDevicePwd(String devicePwd) {
+ this.devicePwd = devicePwd;
+ }
+
+ public String getDeviceNum() {
+ return deviceNum;
+ }
+
+ public void setDeviceNum(String deviceNum) {
+ this.deviceNum = deviceNum;
+ }
+
+ public String getDeviceName() {
+ return deviceName;
+ }
+
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DeviceBaseInfo{" +
+ "systemCardInfo='" + systemCardInfo + '\'' +
+ ", deviceMetadata='" + deviceMetadata + '\'' +
+ ", recipeList='" + recipeList + '\'' +
+ ", canteenId='" + canteenId + '\'' +
+ ", shopstallId='" + shopstallId + '\'' +
+ ", canteenName='" + canteenName + '\'' +
+ ", shopstallName='" + shopstallName + '\'' +
+ ", recipeId='" + recipeId + '\'' +
+ ", devicePwd='" + devicePwd + '\'' +
+ ", deviceNum='" + deviceNum + '\'' +
+ ", deviceName='" + deviceName + '\'' +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/bonus/canteen/db/entity/base/MealTimeInfo.java b/app/src/main/java/com/bonus/canteen/db/entity/base/MealTimeInfo.java
new file mode 100644
index 0000000..cff2bc1
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/db/entity/base/MealTimeInfo.java
@@ -0,0 +1,83 @@
+package com.bonus.canteen.db.entity.base;
+
+import org.jetbrains.annotations.NotNull;
+
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+/**餐次信息
+ *
+ */
+@Entity(tableName = "meal_time_info")
+public class MealTimeInfo {
+
+ @PrimaryKey
+ @NotNull
+ private String intervalId;
+
+ @ColumnInfo
+ private String intervalName;
+
+ @ColumnInfo
+ private String startTime;
+
+ @ColumnInfo
+ private String endTime;
+
+ @ColumnInfo
+ private String ifUse;
+
+
+ @NotNull
+ public String getIntervalId() {
+ return intervalId;
+ }
+
+ public void setIntervalId(@NotNull String intervalId) {
+ this.intervalId = intervalId;
+ }
+
+ public String getIntervalName() {
+ return intervalName;
+ }
+
+ public void setIntervalName(String intervalName) {
+ this.intervalName = intervalName;
+ }
+
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
+ public String getEndTime() {
+ return endTime;
+ }
+
+ public void setEndTime(String endTime) {
+ this.endTime = endTime;
+ }
+
+ public String getIfUse() {
+ return ifUse;
+ }
+
+ public void setIfUse(String ifUse) {
+ this.ifUse = ifUse;
+ }
+
+ @Override
+ public String toString() {
+ return "MealTimeInfo{" +
+ "intervalId='" + intervalId + '\'' +
+ ", intervalName='" + intervalName + '\'' +
+ ", startTime='" + startTime + '\'' +
+ ", endTime='" + endTime + '\'' +
+ ", ifUse='" + ifUse + '\'' +
+ '}';
+ }
+}
diff --git a/app/src/main/java/com/bonus/canteen/utils/rabbitmq/RabbitMqMqttHelper.java b/app/src/main/java/com/bonus/canteen/utils/rabbitmq/RabbitMqMqttHelper.java
new file mode 100644
index 0000000..47daaaa
--- /dev/null
+++ b/app/src/main/java/com/bonus/canteen/utils/rabbitmq/RabbitMqMqttHelper.java
@@ -0,0 +1,134 @@
+package com.bonus.canteen.utils.rabbitmq;
+import android.content.Context;
+import android.util.Log;
+import org.eclipse.paho.android.service.MqttAndroidClient;
+import org.eclipse.paho.android.service.MqttTraceHandler;
+import org.eclipse.paho.client.mqttv3.*;
+
+public class RabbitMqMqttHelper {
+ private static final String TAG = "RabbitMqMqttHelper";
+
+ private MqttAndroidClient mqttAndroidClient;
+ // RabbitMQ 默认MQTT端口是1883,带SSL是8883
+ private String serverUri = "tcp://192.168.0.244:1883";
+ private String clientId = "AndroidClient_" + System.currentTimeMillis();
+ private String subscriptionTopic = "test/topic";
+
+ // RabbitMQ 认证使用AMQP的用户名密码
+ private String username = "admin"; // RabbitMQ管理用户
+ private String password = "Bonus@admin123!";
+
+ public RabbitMqMqttHelper(Context context) {
+ mqttAndroidClient = new MqttAndroidClient(context, serverUri, clientId);
+ }
+
+ public void connect() {
+ MqttConnectOptions options = new MqttConnectOptions();
+ options.setAutomaticReconnect(true);
+ options.setCleanSession(true);
+
+ // RabbitMQ 特定设置
+ options.setConnectionTimeout(30);
+ options.setKeepAliveInterval(60);
+ options.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1_1);
+
+ // 使用RabbitMQ的虚拟主机(如果需要)
+ // options.setWill("/vhost1/will", "disconnected".getBytes(), 2, true);
+
+ if (username != null && password != null) {
+ options.setUserName(username);
+ options.setPassword(password.toCharArray());
+ }
+
+ try {
+ mqttAndroidClient.connect(options, null, new IMqttActionListener() {
+ @Override
+ public void onSuccess(IMqttToken asyncActionToken) {
+ Log.d(TAG, "Connected to RabbitMQ MQTT");
+ subscribeToTopic();
+ }
+
+ @Override
+ public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
+ Log.e(TAG, "Connection failed: " + exception.getMessage());
+ }
+ });
+
+ mqttAndroidClient.setCallback(new MqttCallback() {
+ @Override
+ public void connectionLost(Throwable cause) {
+ Log.e(TAG, "Connection lost: " + cause.getMessage());
+ }
+
+ @Override
+ public void messageArrived(String topic, MqttMessage message) {
+ String payload = new String(message.getPayload());
+ Log.d(TAG, "Received: " + topic + " => " + payload);
+ }
+
+ @Override
+ public void deliveryComplete(IMqttDeliveryToken token) {
+ Log.d(TAG, "Message delivered");
+ }
+ });
+ mqttAndroidClient.setTraceCallback(new MqttTraceHandler() {
+ @Override
+ public void traceDebug(String source, String message) {
+ Log.d("MQTT_TRACE", source + ": " + message);
+ }
+
+ @Override
+ public void traceError(String source, String message) {
+ Log.e("MQTT_TRACE", source + ": " + message);
+ }
+
+ @Override
+ public void traceException(String source, String message, Exception e) {
+ Log.e("MQTT_TRACE", source + ": " + message, e);
+ }
+ });
+
+
+ } catch (MqttException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void subscribeToTopic() {
+ try {
+ mqttAndroidClient.subscribe(subscriptionTopic, 1, null, new IMqttActionListener() {
+ @Override
+ public void onSuccess(IMqttToken asyncActionToken) {
+ Log.d(TAG, "Subscribed to " + subscriptionTopic);
+ }
+
+ @Override
+ public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
+ Log.e(TAG, "Subscribe failed: " + exception.getMessage());
+ }
+ });
+ } catch (MqttException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void publish(String topic, String message) {
+ try {
+ MqttMessage mqttMessage = new MqttMessage(message.getBytes());
+ mqttMessage.setQos(1);
+ mqttAndroidClient.publish(topic, mqttMessage);
+ Log.d(TAG, "Message published to " + topic);
+ } catch (MqttException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void disconnect() {
+ try {
+ mqttAndroidClient.disconnect();
+ Log.d(TAG, "Disconnected from RabbitMQ");
+ } catch (MqttException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/app/src/main/res/layout/initialization_upper_navigation.xml b/app/src/main/res/layout/initialization_upper_navigation.xml
index e9a394a..fba9885 100644
--- a/app/src/main/res/layout/initialization_upper_navigation.xml
+++ b/app/src/main/res/layout/initialization_upper_navigation.xml
@@ -21,6 +21,7 @@
android:gravity="center">