Commit f310fae4 by 吴春元

增加离线盘点模块

parent 6bf598ee
{
"version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.sxyz.rfid",
"variantName": "release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 17,
"versionName": "1.0.0",
"outputFile": "rfid_1.0.0.apk"
}
],
"elementType": "File"
}
\ No newline at end of file
...@@ -37,6 +37,9 @@ ...@@ -37,6 +37,9 @@
<activity android:name=".ui.out.OutboundDetailListActivity" /> <activity android:name=".ui.out.OutboundDetailListActivity" />
<activity android:name=".ui.review.ReviewDetailActivity" /> <activity android:name=".ui.review.ReviewDetailActivity" />
<activity android:name=".ui.review.ReviewTaskActivity" /> <activity android:name=".ui.review.ReviewTaskActivity" />
<activity android:name=".ui.review.offline.ReviewOfflineActivity" />
<activity android:name="com.sxyz.rfid.ui.review.offline.ReviewOfflineDetailActivity" />
<activity android:name="com.sxyz.rfid.ui.review.offline.ReviewOfflineTaskActivity" />
</application> </application>
<!-- Android 10+ 需要添加 --> <!-- Android 10+ 需要添加 -->
......
...@@ -16,7 +16,6 @@ import androidx.multidex.MultiDexApplication; ...@@ -16,7 +16,6 @@ import androidx.multidex.MultiDexApplication;
import com.orhanobut.hawk.Hawk; import com.orhanobut.hawk.Hawk;
import com.sxyz.rfid.greendao.GreenDaoManager; import com.sxyz.rfid.greendao.GreenDaoManager;
import com.sxyz.rfid.utils.L;
import com.sxyz.rfid.widgets.MyActivityLifecycle; import com.sxyz.rfid.widgets.MyActivityLifecycle;
import com.ubx.usdk.RFIDSDKManager; import com.ubx.usdk.RFIDSDKManager;
import com.ubx.usdk.rfid.RfidManager; import com.ubx.usdk.rfid.RfidManager;
...@@ -53,7 +52,7 @@ public class App extends MultiDexApplication { ...@@ -53,7 +52,7 @@ public class App extends MultiDexApplication {
Hawk.init(getApplicationContext()).build(); Hawk.init(getApplicationContext()).build();
ip = Hawk.get(AppConfig.Ip.IP); ip = Hawk.get(AppConfig.Ip.IP);
port = Hawk.get(AppConfig.Ip.PORT); port = Hawk.get(AppConfig.Ip.PORT);
// initRfid(); initRfid();
initScan(); initScan();
initGreenDao(); initGreenDao();
registerActivityLifecycleCallbacks(new MyActivityLifecycle(getContext())); registerActivityLifecycleCallbacks(new MyActivityLifecycle(getContext()));
...@@ -125,23 +124,19 @@ public class App extends MultiDexApplication { ...@@ -125,23 +124,19 @@ public class App extends MultiDexApplication {
} }
public void initRfid() { public void initRfid() {
SoundTool.getInstance(getApplicationContext()); //初始化音效SDK
SoundTool.getInstance(App.getContext());
//初始化SDK
// 在异步回调中拿到RFID实例 // 在异步回调中拿到RFID实例
RFIDSDKManager.getInstance().power(true); RFIDSDKManager.getInstance().power(true);
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { new Handler(Looper.getMainLooper()).postDelayed(() -> {
@Override
public void run() {
boolean connect = RFIDSDKManager.getInstance().connect(); boolean connect = RFIDSDKManager.getInstance().connect();
if (connect) { if (connect) {
L.i("initRfid() success.");
RFID_INIT_STATUS = true; RFID_INIT_STATUS = true;
readerType = RFIDSDKManager.getInstance().getRfidManager().getReaderType();//80为短距,其他为长距 readerType = RFIDSDKManager.getInstance().getRfidManager().getReaderType();//80为短距,其他为长距
mRfidManager = RFIDSDKManager.getInstance().getRfidManager(); mRfidManager = RFIDSDKManager.getInstance().getRfidManager();
mRfidManager.setScanInterval(0);//设置扫描间隔,单位毫秒,默认1000ms
String firmware = RFIDSDKManager.getInstance().getRfidManager().getFirmwareVersion(); String firmware = RFIDSDKManager.getInstance().getRfidManager().getFirmwareVersion();
L.i("initRfid: GetReaderType() = " + readerType);
} else {
L.i("initRfid fail.");
}
} }
}, 1500); }, 1500);
} }
......
package com.sxyz.rfid.greendao; package com.sxyz.rfid.greendao;
import android.content.Context; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build; import android.os.Build;
import android.os.Environment; import android.os.Environment;
import com.sxyz.rfid.BuildConfig; import com.sxyz.rfid.BuildConfig;
import com.sxyz.rfid.utils.L;
import org.greenrobot.greendao.identityscope.IdentityScopeType;
import org.greenrobot.greendao.query.QueryBuilder; import org.greenrobot.greendao.query.QueryBuilder;
import java.io.File; import java.io.File;
...@@ -13,29 +16,17 @@ import java.io.File; ...@@ -13,29 +16,17 @@ import java.io.File;
import sql.com.yz.db.DaoMaster; import sql.com.yz.db.DaoMaster;
import sql.com.yz.db.DaoSession; import sql.com.yz.db.DaoSession;
/**
* @Description: java类作用描述
* @Author: chunyuan.wu
* @CreateDate: 5/12/23 5:31 PM
* @Version: 1.0
*/
public class GreenDaoManager { public class GreenDaoManager {
private static final String TAG = GreenDaoManager.class.getSimpleName(); private static final String TAG = GreenDaoManager.class.getSimpleName();
private static final String DB_NAME = "rfid.db"; public static final String DB_NAME = "wms_data.db";
private Context context; private Context context;
//多线程中要被共享的使用volatile关键字修饰
private volatile static GreenDaoManager manager = new GreenDaoManager(); private volatile static GreenDaoManager manager = new GreenDaoManager();
private static DaoMaster sDaoMaster; private DaoMaster sDaoMaster;
private static DaoMaster.DevOpenHelper sHelper; private DaoMaster.DevOpenHelper sHelper;
private static DaoSession sDaoSession; private DaoSession sDaoSession;
private String currentDbPath; // 记录当前数据库路径
/**
* 单例模式获得操作数据库对象
*
* @return
*/
public static GreenDaoManager getInstance() { public static GreenDaoManager getInstance() {
return manager; return manager;
} }
...@@ -46,62 +37,146 @@ public class GreenDaoManager { ...@@ -46,62 +37,146 @@ public class GreenDaoManager {
public void init(Context context) { public void init(Context context) {
this.context = context; this.context = context;
// 初始化时记录数据库路径
File dbFile = getDatabaseFile(context);
this.currentDbPath = dbFile.getAbsolutePath();
} }
/** /**
* 判断是否有存在数据库,如果没有则创建 * 获取数据库文件
*
* @return
*/ */
public DaoMaster getDaoMaster() { public File getDatabaseFile(Context context) {
if (sDaoMaster == null) {
// 获取外部存储的数据库目录
File dbDir = getExternalDatabaseDir(context); File dbDir = getExternalDatabaseDir(context);
// 确保目录存在
if (!dbDir.exists()) { if (!dbDir.exists()) {
dbDir.mkdirs(); dbDir.mkdirs();
} }
// 数据库文件路径 return new File(dbDir, DB_NAME);
File dbFile = new File(dbDir, DB_NAME);
// /storage/emulated/0/Android/data/com.sxyz.rfid/files/databases/rfid.db
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, dbFile.getAbsolutePath(), null);
// DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, DB_NAME, null);
// DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "/mnt/sdcard/Android/data/com.sxyz.rfid/databases/" + DB_NAME, null);
// DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "/data/data/com.sxyz.rfid/databases/" + DB_NAME, null);
sDaoMaster = new DaoMaster(helper.getWritableDatabase());
}
return sDaoMaster;
} }
private static File getExternalDatabaseDir(Context context) { private static File getExternalDatabaseDir(Context context) {
// Android 10 以下版本 // Android 10 以下版本
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
return new File(Environment.getExternalStorageDirectory(), return new File(Environment.getExternalStorageDirectory(), "Android/data/" + context.getPackageName() + "/files/databases/" + DB_NAME);
"Android/data/" + context.getPackageName() + "/databases");
} }
// Android 10 及以上版本 - 使用应用专属外部存储 // Android 10 及以上版本 - 使用应用专属外部存储
return new File(context.getExternalFilesDir(null), "databases"); return new File(context.getExternalFilesDir(null), "databases");
} }
/**
* 重置数据库连接 - 关键方法
*/
public void resetConnection() {
closeConnection();
sDaoMaster = null;
sDaoSession = null;
sHelper = null;
}
/** /**
* 完成对数据库的添加、删除、修改、查询操作,仅仅是一个接口 * 检查是否需要重新创建连接
*
* @return
*/ */
private boolean needRecreateConnection() {
if (sDaoMaster == null || sDaoSession == null) {
return true;
}
// 检查数据库文件是否存在
File dbFile = getDatabaseFile(context);
boolean fileExists = dbFile.exists();
// 如果文件不存在但连接存在,需要重置
if (!fileExists && sDaoMaster != null) {
return true;
}
// 检查路径是否变化
if (currentDbPath != null && !currentDbPath.equals(dbFile.getAbsolutePath())) {
return true;
}
return false;
}
public DaoMaster getDaoMaster() {
// 每次获取前检查是否需要重建连接
if (needRecreateConnection()) {
resetConnection();
}
if (sDaoMaster == null) {
File dbFile = getDatabaseFile(context);
currentDbPath = dbFile.getAbsolutePath();
if (dbFile.exists()) {
try {
// 检查数据库是否可以正常打开
SQLiteDatabase db = SQLiteDatabase.openDatabase(dbFile.getPath(), null, SQLiteDatabase.OPEN_READWRITE);
sDaoMaster = new DaoMaster(db);
} catch (Exception e) {
L.i("打开数据库失败===>" + dbFile.getAbsolutePath());
// 删除损坏的数据库文件
if (dbFile.exists()) {
dbFile.delete();
}
resetConnection();
return null;
}
} else {
// 数据库文件不存在,返回null
L.i("数据库文件不存在===>" + dbFile.getAbsolutePath());
return null;
}
}
return sDaoMaster;
}
public DaoSession getDaoSession() { public DaoSession getDaoSession() {
resetConnection();
if (needRecreateConnection()) {
resetConnection();
}
if (sDaoSession == null) { if (sDaoSession == null) {
if (sDaoMaster == null) { DaoMaster daoMaster = getDaoMaster();
sDaoMaster = getDaoMaster(); if (daoMaster != null) {
sDaoSession = daoMaster.newSession(IdentityScopeType.None);
} }
sDaoSession = sDaoMaster.newSession();
} }
return sDaoSession; return sDaoSession;
} }
/** /**
* 删除数据库文件的完整方法
*/
public boolean deleteDatabaseFile() {
resetConnection(); // 先关闭所有连接
File dbFile = getDatabaseFile(context);
if (dbFile.exists()) {
boolean deleted = dbFile.delete();
if (deleted) {
// 清除所有缓存
resetConnection();
// 也删除数据库的journal文件等
File journalFile = new File(dbFile.getPath() + "-journal");
if (journalFile.exists()) {
journalFile.delete();
}
File walFile = new File(dbFile.getPath() + "-wal");
if (walFile.exists()) {
walFile.delete();
}
File shmFile = new File(dbFile.getPath() + "-shm");
if (shmFile.exists()) {
shmFile.delete();
}
return true;
}
}
return false;
}
// 其他方法保持不变...
/**
* 打开输出日志,默认关闭 * 打开输出日志,默认关闭
*/ */
public void setDebug() { public void setDebug() {
......
package com.sxyz.rfid.greendao;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.Environment;
import android.util.Log;
import com.sxyz.rfid.BuildConfig;
import org.greenrobot.greendao.query.QueryBuilder;
import java.io.File;
import sql.com.yz.db.DaoMaster;
import sql.com.yz.db.DaoSession;
/**
* @Description: java类作用描述
* @Author: chunyuan.wu
* @CreateDate: 5/12/23 5:31 PM
* @Version: 1.0
*/
public class GreenDaoManager1122 {
private static final String TAG = GreenDaoManager1122.class.getSimpleName();
public static final String DB_NAME = "wms_data.db";
private Context context;
//多线程中要被共享的使用volatile关键字修饰
private volatile static GreenDaoManager1122 manager = new GreenDaoManager1122();
private static DaoMaster sDaoMaster;
private static DaoMaster.DevOpenHelper sHelper;
private static DaoSession sDaoSession;
/**
* 单例模式获得操作数据库对象
*
* @return
*/
public static GreenDaoManager1122 getInstance() {
return manager;
}
private GreenDaoManager1122() {
setDebug();
}
public void init(Context context) {
this.context = context;
}
/**
* 判断是否有存在数据库,如果没有则创建
*
* @return
*/
public DaoMaster getDaoMaster() {
if (sDaoMaster == null) {
// 获取外部存储的数据库目录
File dbDir = getExternalDatabaseDir(context);
// 确保目录存在
if (!dbDir.exists()) {
dbDir.mkdirs();
}
// 数据库文件路径
File dbFile = new File(dbDir, DB_NAME);
// /storage/emulated/0/Android/data/com.sxyz.rfid/files/databases/rfid.db
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, dbFile.getAbsolutePath(), null);
if (dbFile.exists()) {
// 文件已经存在,使用只读方式打开或特殊处理
SQLiteDatabase db = SQLiteDatabase.openDatabase(dbFile.getPath(), null, SQLiteDatabase.OPEN_READWRITE);
// 数据库文件已存在
sDaoMaster = new DaoMaster(db);
} else {
// 数据库文件不存在,创建数据库文件
// sDaoMaster = new DaoMaster(helper.getWritableDatabase());
// String msg = "数据库" + DB_NAME + "文件不存在,请连接电脑同步数据库文件";
// ToastUtil.showShort(msg);
// TipsDialog mTipsDialog = new TipsDialog(context);
// mTipsDialog.init(R.layout.dialog_offline_tips, msg);
// mTipsDialog.show();
// new AlertDialogUtil(context).builder()
// .setTitle("提示")
// .setMsg("数据库" + DB_NAME + "文件不存在,请连接电脑同步数据库文件")
// .setPositiveButton("确定", null)
// .show();
}
}
return sDaoMaster;
}
public static boolean isFileExist(Context context) {
try {
// 方法1:使用 Environment.getExternalStorageDirectory()(Android 10以下)
String path;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// Android 10+ 使用 Scoped Storage
path = context.getExternalFilesDir(null) + "/databases/wms_data.db";
} else {
// Android 10以下
path = Environment.getExternalStorageDirectory() + "/Android/data/" + context.getPackageName() + "/files/databases/wms_data.db";
}
File dbFile = new File(path);
return dbFile.exists();
} catch (Exception e) {
Log.e("FileCheck", "检查文件出错", e);
return false;
}
}
private static File getExternalDatabaseDir(Context context) {
// Android 10 以下版本
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
return new File(Environment.getExternalStorageDirectory(), "Android/data/" + context.getPackageName() + "/files/databases/wms_data.db");
}
// Android 10 及以上版本 - 使用应用专属外部存储
return new File(context.getExternalFilesDir(null), "databases");
}
/**
* 完成对数据库的添加、删除、修改、查询操作,仅仅是一个接口
*
* @return
*/
public DaoSession getDaoSession() {
if (sDaoSession == null) {
if (sDaoMaster == null) {
sDaoMaster = getDaoMaster();
}
sDaoSession = sDaoMaster.newSession();
}
return sDaoSession;
}
/**
* 打开输出日志,默认关闭
*/
public void setDebug() {
if (BuildConfig.DEBUG) {
QueryBuilder.LOG_SQL = true;
QueryBuilder.LOG_VALUES = true;
}
}
/**
* 关闭所有的操作,数据库开启后,使用完毕要关闭
*/
public void closeConnection() {
closeHelper();
closeDaoSession();
}
public void closeHelper() {
if (sHelper != null) {
sHelper.close();
sHelper = null;
}
}
public void closeDaoSession() {
if (sDaoSession != null) {
sDaoSession.clear();
sDaoSession = null;
}
}
}
package com.sxyz.rfid.greendao.model;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Generated;
/**
* @Description: java类作用描述
* @Author: chunyuan.wu
* @CreateDate: 5/12/23 5:54 PM
* @Version: 1.0
*/
//@Entity 表明这个实体类会在数据库中生成一个与之相对应的表
@Entity
public class Out {
//@Id 对应数据表中的 Id 字段
@Id(autoincrement = true)
private Long id;//这里的坑要注意,如果id自增的话,必须必须定义id类型为大写的Long,小写的会报错。
// @Index(unique = true)
private String name;
private String type;
@Generated(hash = 577857007)
public Out(Long id, String name, String type) {
this.id = id;
this.name = name;
this.type = type;
}
@Generated(hash = 1304904767)
public Out() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return this.type;
}
public void setType(String type) {
this.type = type;
}
}
package com.sxyz.rfid.greendao.model;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Property;
import java.io.Serializable;
/**
* 主要功能: 库区表
*
* @Description:
* @Project: rfid-app
* @Package: com.sxyz.rfid.greendao.model
* @author: chunyuanwu
* @date: 2026年01月16日 14:59
* @version: 1.0.0
*/
@Entity(nameInDb = "wms_area")
public class WmsArea implements Serializable {
private static final long serialVersionUID = 1L;
@Property(nameInDb = "area_id")
private Long areaId;
@Property(nameInDb = "area_code")
private String areaCode;
@Property(nameInDb = "area_name")
private String areaName;
@Property(nameInDb = "warehouse_id")
private Integer warehouseId;
@Property(nameInDb = "parent_id")
private Integer parentId;
@Property(nameInDb = "area_type")
private String areaType;
@Property(nameInDb = "temperature_range")
private String temperatureRange;
@Property(nameInDb = "humidity_range")
private String humidityRange;
@Property(nameInDb = "capacity")
private Float capacity;
@Property(nameInDb = "sort_order")
private Integer sortOrder;
@Property(nameInDb = "status")
private String status;
@Property(nameInDb = "create_by")
private String createBy;
@Property(nameInDb = "create_time")
private String createTime;
@Property(nameInDb = "update_by")
private String updateBy;
@Property(nameInDb = "update_time")
private String updateTime;
@Property(nameInDb = "remark")
private String remark;
@Property(nameInDb = "del_flag")
private String delFlag;
@Generated(hash = 1099105956)
public WmsArea(Long areaId, String areaCode, String areaName,
Integer warehouseId, Integer parentId, String areaType,
String temperatureRange, String humidityRange, Float capacity,
Integer sortOrder, String status, String createBy, String createTime,
String updateBy, String updateTime, String remark, String delFlag) {
this.areaId = areaId;
this.areaCode = areaCode;
this.areaName = areaName;
this.warehouseId = warehouseId;
this.parentId = parentId;
this.areaType = areaType;
this.temperatureRange = temperatureRange;
this.humidityRange = humidityRange;
this.capacity = capacity;
this.sortOrder = sortOrder;
this.status = status;
this.createBy = createBy;
this.createTime = createTime;
this.updateBy = updateBy;
this.updateTime = updateTime;
this.remark = remark;
this.delFlag = delFlag;
}
@Generated(hash = 630738442)
public WmsArea() {
}
public Long getAreaId() {
return this.areaId;
}
public void setAreaId(Long areaId) {
this.areaId = areaId;
}
public String getAreaCode() {
return this.areaCode;
}
public void setAreaCode(String areaCode) {
this.areaCode = areaCode;
}
public String getAreaName() {
return this.areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public Integer getWarehouseId() {
return this.warehouseId;
}
public void setWarehouseId(Integer warehouseId) {
this.warehouseId = warehouseId;
}
public Integer getParentId() {
return this.parentId;
}
public void setParentId(Integer parentId) {
this.parentId = parentId;
}
public String getAreaType() {
return this.areaType;
}
public void setAreaType(String areaType) {
this.areaType = areaType;
}
public String getTemperatureRange() {
return this.temperatureRange;
}
public void setTemperatureRange(String temperatureRange) {
this.temperatureRange = temperatureRange;
}
public String getHumidityRange() {
return this.humidityRange;
}
public void setHumidityRange(String humidityRange) {
this.humidityRange = humidityRange;
}
public Float getCapacity() {
return this.capacity;
}
public void setCapacity(Float capacity) {
this.capacity = capacity;
}
public Integer getSortOrder() {
return this.sortOrder;
}
public void setSortOrder(Integer sortOrder) {
this.sortOrder = sortOrder;
}
public String getStatus() {
return this.status;
}
public void setStatus(String status) {
this.status = status;
}
public String getCreateBy() {
return this.createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public String getCreateTime() {
return this.createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return this.updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public String getUpdateTime() {
return this.updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getDelFlag() {
return this.delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
}
package com.sxyz.rfid.greendao.model;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Property;
import java.io.Serializable;
/**
* 主要功能: 库存表
*
* @Description:
* @Project: rfid-app
* @Package: com.sxyz.rfid.greendao.model
* @author: chunyuanwu
* @date: 2026年01月16日 14:24
* @version: 1.0.0
*/
@Entity(nameInDb = "wms_inventory")
public class WmsInventory implements Serializable {
private static final long serialVersionUID = 1L;
//主键
@Id(autoincrement = true)
@Property(nameInDb = "inventory_id")
private Long inventoryId;
@Property(nameInDb = "material_id")
private Integer materialId;
@Property(nameInDb = "warehouse_id")
private Integer warehouseId;
@Property(nameInDb = "area_id")
private Integer areaId;
@Property(nameInDb = "location_id")
private Integer locationId;
@Property(nameInDb = "batch_no")
private String batchNo;
@Property(nameInDb = "lot_no")
private String lotNo;
@Property(nameInDb = "production_date")
private String productionDate;
@Property(nameInDb = "expiration_date")
private String expirationDate;
@Property(nameInDb = "quantity")
private Float quantity;
@Property(nameInDb = "available_quantity")
private Float availableQuantity;
@Property(nameInDb = "locked_quantity")
private Float lockedQuantity;
@Property(nameInDb = "unit_cost")
private Float unitCost;
@Property(nameInDb = "total_cost")
private Float totalCost;
@Property(nameInDb = "quality_status")
private String qualityStatus;
@Property(nameInDb = "inventory_status")
private String inventoryStatus;
@Property(nameInDb = "last_inbound_time")
private String lastInboundTime;
@Property(nameInDb = "last_outbound_time")
private String lastOutboundTime;
@Property(nameInDb = "rfid_tag")
private String rfidTag;
@Property(nameInDb = "barcode")
private String barcode;
@Property(nameInDb = "is_fifo")
private String isFifo;
@Property(nameInDb = "rfid_binding_count")
private Integer rfidBindingCount;
@Property(nameInDb = "last_rfid_detect_time")
private String lastRfidDetectTime;
@Property(nameInDb = "rfid_coverage_rate")
private Float rfidCoverageRate;
@Property(nameInDb = "del_flag")
private String delFlag;
@Property(nameInDb = "create_time")
private String createTime;
@Property(nameInDb = "update_time")
private String updateTime;
@Property(nameInDb = "remark")
private String remark;
@Generated(hash = 1153757393)
public WmsInventory(Long inventoryId, Integer materialId, Integer warehouseId,
Integer areaId, Integer locationId, String batchNo, String lotNo,
String productionDate, String expirationDate, Float quantity,
Float availableQuantity, Float lockedQuantity, Float unitCost,
Float totalCost, String qualityStatus, String inventoryStatus,
String lastInboundTime, String lastOutboundTime, String rfidTag,
String barcode, String isFifo, Integer rfidBindingCount,
String lastRfidDetectTime, Float rfidCoverageRate, String delFlag,
String createTime, String updateTime, String remark) {
this.inventoryId = inventoryId;
this.materialId = materialId;
this.warehouseId = warehouseId;
this.areaId = areaId;
this.locationId = locationId;
this.batchNo = batchNo;
this.lotNo = lotNo;
this.productionDate = productionDate;
this.expirationDate = expirationDate;
this.quantity = quantity;
this.availableQuantity = availableQuantity;
this.lockedQuantity = lockedQuantity;
this.unitCost = unitCost;
this.totalCost = totalCost;
this.qualityStatus = qualityStatus;
this.inventoryStatus = inventoryStatus;
this.lastInboundTime = lastInboundTime;
this.lastOutboundTime = lastOutboundTime;
this.rfidTag = rfidTag;
this.barcode = barcode;
this.isFifo = isFifo;
this.rfidBindingCount = rfidBindingCount;
this.lastRfidDetectTime = lastRfidDetectTime;
this.rfidCoverageRate = rfidCoverageRate;
this.delFlag = delFlag;
this.createTime = createTime;
this.updateTime = updateTime;
this.remark = remark;
}
@Generated(hash = 787522309)
public WmsInventory() {
}
public Long getInventoryId() {
return this.inventoryId;
}
public void setInventoryId(Long inventoryId) {
this.inventoryId = inventoryId;
}
public Integer getMaterialId() {
return this.materialId;
}
public void setMaterialId(Integer materialId) {
this.materialId = materialId;
}
public Integer getWarehouseId() {
return this.warehouseId;
}
public void setWarehouseId(Integer warehouseId) {
this.warehouseId = warehouseId;
}
public Integer getAreaId() {
return this.areaId;
}
public void setAreaId(Integer areaId) {
this.areaId = areaId;
}
public Integer getLocationId() {
return this.locationId;
}
public void setLocationId(Integer locationId) {
this.locationId = locationId;
}
public String getBatchNo() {
return this.batchNo;
}
public void setBatchNo(String batchNo) {
this.batchNo = batchNo;
}
public String getLotNo() {
return this.lotNo;
}
public void setLotNo(String lotNo) {
this.lotNo = lotNo;
}
public String getProductionDate() {
return this.productionDate;
}
public void setProductionDate(String productionDate) {
this.productionDate = productionDate;
}
public String getExpirationDate() {
return this.expirationDate;
}
public void setExpirationDate(String expirationDate) {
this.expirationDate = expirationDate;
}
public Float getQuantity() {
return this.quantity;
}
public void setQuantity(Float quantity) {
this.quantity = quantity;
}
public Float getAvailableQuantity() {
return this.availableQuantity;
}
public void setAvailableQuantity(Float availableQuantity) {
this.availableQuantity = availableQuantity;
}
public Float getLockedQuantity() {
return this.lockedQuantity;
}
public void setLockedQuantity(Float lockedQuantity) {
this.lockedQuantity = lockedQuantity;
}
public Float getUnitCost() {
return this.unitCost;
}
public void setUnitCost(Float unitCost) {
this.unitCost = unitCost;
}
public Float getTotalCost() {
return this.totalCost;
}
public void setTotalCost(Float totalCost) {
this.totalCost = totalCost;
}
public String getQualityStatus() {
return this.qualityStatus;
}
public void setQualityStatus(String qualityStatus) {
this.qualityStatus = qualityStatus;
}
public String getInventoryStatus() {
return this.inventoryStatus;
}
public void setInventoryStatus(String inventoryStatus) {
this.inventoryStatus = inventoryStatus;
}
public String getLastInboundTime() {
return this.lastInboundTime;
}
public void setLastInboundTime(String lastInboundTime) {
this.lastInboundTime = lastInboundTime;
}
public String getLastOutboundTime() {
return this.lastOutboundTime;
}
public void setLastOutboundTime(String lastOutboundTime) {
this.lastOutboundTime = lastOutboundTime;
}
public String getRfidTag() {
return this.rfidTag;
}
public void setRfidTag(String rfidTag) {
this.rfidTag = rfidTag;
}
public String getBarcode() {
return this.barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getIsFifo() {
return this.isFifo;
}
public void setIsFifo(String isFifo) {
this.isFifo = isFifo;
}
public Integer getRfidBindingCount() {
return this.rfidBindingCount;
}
public void setRfidBindingCount(Integer rfidBindingCount) {
this.rfidBindingCount = rfidBindingCount;
}
public String getLastRfidDetectTime() {
return this.lastRfidDetectTime;
}
public void setLastRfidDetectTime(String lastRfidDetectTime) {
this.lastRfidDetectTime = lastRfidDetectTime;
}
public Float getRfidCoverageRate() {
return this.rfidCoverageRate;
}
public void setRfidCoverageRate(Float rfidCoverageRate) {
this.rfidCoverageRate = rfidCoverageRate;
}
public String getDelFlag() {
return this.delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getCreateTime() {
return this.createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return this.updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.sxyz.rfid.greendao.model;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Property;
import java.io.Serializable;
/**
* 主要功能: 库存结果表
*
* @Description:
* @Project: rfid-app
* @Package: com.sxyz.rfid.greendao.model
* @author: chunyuanwu
* @date: 2026年01月16日 12:55
* @version: 1.0.0
*/
@Entity(nameInDb = "wms_inventory_result")
public class WmsInventoryResult implements Serializable {
private static final long serialVersionUID = 1L;
//主键
@Id(autoincrement = true)
@Property(nameInDb = "result_id")
private Long resultId;
@Property(nameInDb = "task_id")
private Integer taskId;
@Property(nameInDb = "plan_id")
private Integer planId;
@Property(nameInDb = "warehouse_id")
private Integer warehouseId;
@Property(nameInDb = "warehouse_name")
private String warehouseName;
@Property(nameInDb = "area_ids")
private String areaIds;
@Property(nameInDb = "area_name")
private String areaName;
@Property(nameInDb = "checker_id")
private Integer checkerId;
@Property(nameInDb = "checker_name")
private String checkerName;
@Property(nameInDb = "start_time")
private String startTime;
@Property(nameInDb = "end_time")
private String endTime;
@Property(nameInDb = "total_items")
private Integer totalItems;
@Property(nameInDb = "counted_items")
private Integer countedItems;
@Property(nameInDb = "surplus_items")
private Integer surplusItems;
@Property(nameInDb = "deficit_items")
private Integer deficitItems;
@Property(nameInDb = "total_surplus")
private Double totalSurplus;
@Property(nameInDb = "total_deficit")
private Double totalDeficit;
@Property(nameInDb = "total_difference_value")
private Double totalDifferenceValue;
@Property(nameInDb = "difference_rate")
private Double differenceRate;
@Property(nameInDb = "result_status")
private String resultStatus;
@Property(nameInDb = "audit_status")
private String auditStatus;
@Property(nameInDb = "auditor_id")
private Integer auditorId;
@Property(nameInDb = "auditor_name")
private String auditorName;
@Property(nameInDb = "audit_time")
private String auditTime;
@Property(nameInDb = "audit_opinion")
private String auditOpinion;
@Property(nameInDb = "del_flag")
private String delFlag;
@Property(nameInDb = "create_time")
private String createTime;
@Property(nameInDb = "update_time")
private String updateTime;
@Property(nameInDb = "remark")
private String remark;
@Generated(hash = 1827251151)
public WmsInventoryResult(Long resultId, Integer taskId, Integer planId,
Integer warehouseId, String warehouseName, String areaIds,
String areaName, Integer checkerId, String checkerName,
String startTime, String endTime, Integer totalItems,
Integer countedItems, Integer surplusItems, Integer deficitItems,
Double totalSurplus, Double totalDeficit, Double totalDifferenceValue,
Double differenceRate, String resultStatus, String auditStatus,
Integer auditorId, String auditorName, String auditTime,
String auditOpinion, String delFlag, String createTime,
String updateTime, String remark) {
this.resultId = resultId;
this.taskId = taskId;
this.planId = planId;
this.warehouseId = warehouseId;
this.warehouseName = warehouseName;
this.areaIds = areaIds;
this.areaName = areaName;
this.checkerId = checkerId;
this.checkerName = checkerName;
this.startTime = startTime;
this.endTime = endTime;
this.totalItems = totalItems;
this.countedItems = countedItems;
this.surplusItems = surplusItems;
this.deficitItems = deficitItems;
this.totalSurplus = totalSurplus;
this.totalDeficit = totalDeficit;
this.totalDifferenceValue = totalDifferenceValue;
this.differenceRate = differenceRate;
this.resultStatus = resultStatus;
this.auditStatus = auditStatus;
this.auditorId = auditorId;
this.auditorName = auditorName;
this.auditTime = auditTime;
this.auditOpinion = auditOpinion;
this.delFlag = delFlag;
this.createTime = createTime;
this.updateTime = updateTime;
this.remark = remark;
}
@Generated(hash = 1423742613)
public WmsInventoryResult() {
}
public Long getResultId() {
return this.resultId;
}
public void setResultId(Long resultId) {
this.resultId = resultId;
}
public Integer getTaskId() {
return this.taskId;
}
public void setTaskId(Integer taskId) {
this.taskId = taskId;
}
public Integer getPlanId() {
return this.planId;
}
public void setPlanId(Integer planId) {
this.planId = planId;
}
public Integer getWarehouseId() {
return this.warehouseId;
}
public void setWarehouseId(Integer warehouseId) {
this.warehouseId = warehouseId;
}
public String getWarehouseName() {
return this.warehouseName;
}
public void setWarehouseName(String warehouseName) {
this.warehouseName = warehouseName;
}
public String getAreaIds() {
return this.areaIds;
}
public void setAreaIds(String areaIds) {
this.areaIds = areaIds;
}
public String getAreaName() {
return this.areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public Integer getCheckerId() {
return this.checkerId;
}
public void setCheckerId(Integer checkerId) {
this.checkerId = checkerId;
}
public String getCheckerName() {
return this.checkerName;
}
public void setCheckerName(String checkerName) {
this.checkerName = checkerName;
}
public String getStartTime() {
return this.startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return this.endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public Integer getTotalItems() {
return this.totalItems;
}
public void setTotalItems(Integer totalItems) {
this.totalItems = totalItems;
}
public Integer getCountedItems() {
return this.countedItems;
}
public void setCountedItems(Integer countedItems) {
this.countedItems = countedItems;
}
public Integer getSurplusItems() {
return this.surplusItems;
}
public void setSurplusItems(Integer surplusItems) {
this.surplusItems = surplusItems;
}
public Integer getDeficitItems() {
return this.deficitItems;
}
public void setDeficitItems(Integer deficitItems) {
this.deficitItems = deficitItems;
}
public Double getTotalSurplus() {
return this.totalSurplus;
}
public void setTotalSurplus(Double totalSurplus) {
this.totalSurplus = totalSurplus;
}
public Double getTotalDeficit() {
return this.totalDeficit;
}
public void setTotalDeficit(Double totalDeficit) {
this.totalDeficit = totalDeficit;
}
public Double getTotalDifferenceValue() {
return this.totalDifferenceValue;
}
public void setTotalDifferenceValue(Double totalDifferenceValue) {
this.totalDifferenceValue = totalDifferenceValue;
}
public Double getDifferenceRate() {
return this.differenceRate;
}
public void setDifferenceRate(Double differenceRate) {
this.differenceRate = differenceRate;
}
public String getResultStatus() {
return this.resultStatus;
}
public void setResultStatus(String resultStatus) {
this.resultStatus = resultStatus;
}
public String getAuditStatus() {
return this.auditStatus;
}
public void setAuditStatus(String auditStatus) {
this.auditStatus = auditStatus;
}
public Integer getAuditorId() {
return this.auditorId;
}
public void setAuditorId(Integer auditorId) {
this.auditorId = auditorId;
}
public String getAuditorName() {
return this.auditorName;
}
public void setAuditorName(String auditorName) {
this.auditorName = auditorName;
}
public String getAuditTime() {
return this.auditTime;
}
public void setAuditTime(String auditTime) {
this.auditTime = auditTime;
}
public String getAuditOpinion() {
return this.auditOpinion;
}
public void setAuditOpinion(String auditOpinion) {
this.auditOpinion = auditOpinion;
}
public String getDelFlag() {
return this.delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getCreateTime() {
return this.createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return this.updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.sxyz.rfid.greendao.model;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Property;
import java.io.Serializable;
/**
* 主要功能: 库存任务表
*
* @Description:
* @Project: rfid-app
* @Package: com.sxyz.rfid.greendao.model
* @author: chunyuanwu
* @date: 2026年01月15日 14:13
* @version: 1.0.0
*/
//@Entity 表明这个实体类会在数据库中生成一个与之相对应的表
@Entity(nameInDb = "wms_inventory_task")
public class WmsInventoryTask implements Serializable {
private static final long serialVersionUID = 1L;
//主键
@Id(autoincrement = true)
@Property(nameInDb = "task_id")
private Long taskId;
@Property(nameInDb = "plan_id")
private Integer planId;
@Property(nameInDb = "task_no")
private String taskNo;
@Property(nameInDb = "task_name")
private String taskName;
@Property(nameInDb = "warehouse_id")
private Integer warehouseId;
@Property(nameInDb = "warehouse_name")
private String warehouseName;
@Property(nameInDb = "area_ids")
private String areaIds;
@Property(nameInDb = "area_name")
private String areaName;
@Property(nameInDb = "material_ids")
private String materialIds;
@Property(nameInDb = "location_range")
private String locationRange;
@Property(nameInDb = "assignee_id")
private Integer assigneeId;
@Property(nameInDb = "assistant_ids")
private String assistantIds;
@Property(nameInDb = "task_status")
private String taskStatus;
@Property(nameInDb = "start_time")
private String startTime;
@Property(nameInDb = "end_time")
private String endTime;
@Property(nameInDb = "total_items")
private Integer totalItems;
@Property(nameInDb = "counted_items")
private Integer countedItems;
@Property(nameInDb = "inventory_device")
private String inventoryDevice;
@Property(nameInDb = "del_flag")
private String delFlag;
@Property(nameInDb = "create_time")
private String createTime;
@Property(nameInDb = "update_time")
private String updateTime;
@Property(nameInDb = "remark")
private String remark;
@Generated(hash = 1984916082)
public WmsInventoryTask(Long taskId, Integer planId, String taskNo,
String taskName, Integer warehouseId, String warehouseName,
String areaIds, String areaName, String materialIds,
String locationRange, Integer assigneeId, String assistantIds,
String taskStatus, String startTime, String endTime, Integer totalItems,
Integer countedItems, String inventoryDevice, String delFlag,
String createTime, String updateTime, String remark) {
this.taskId = taskId;
this.planId = planId;
this.taskNo = taskNo;
this.taskName = taskName;
this.warehouseId = warehouseId;
this.warehouseName = warehouseName;
this.areaIds = areaIds;
this.areaName = areaName;
this.materialIds = materialIds;
this.locationRange = locationRange;
this.assigneeId = assigneeId;
this.assistantIds = assistantIds;
this.taskStatus = taskStatus;
this.startTime = startTime;
this.endTime = endTime;
this.totalItems = totalItems;
this.countedItems = countedItems;
this.inventoryDevice = inventoryDevice;
this.delFlag = delFlag;
this.createTime = createTime;
this.updateTime = updateTime;
this.remark = remark;
}
@Generated(hash = 950900997)
public WmsInventoryTask() {
}
public Long getTaskId() {
return this.taskId;
}
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
public Integer getPlanId() {
return this.planId;
}
public void setPlanId(Integer planId) {
this.planId = planId;
}
public String getTaskNo() {
return this.taskNo;
}
public void setTaskNo(String taskNo) {
this.taskNo = taskNo;
}
public String getTaskName() {
return this.taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName;
}
public Integer getWarehouseId() {
return this.warehouseId;
}
public void setWarehouseId(Integer warehouseId) {
this.warehouseId = warehouseId;
}
public String getWarehouseName() {
return this.warehouseName;
}
public void setWarehouseName(String warehouseName) {
this.warehouseName = warehouseName;
}
public String getAreaIds() {
return this.areaIds;
}
public void setAreaIds(String areaIds) {
this.areaIds = areaIds;
}
public String getAreaName() {
return this.areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public String getMaterialIds() {
return this.materialIds;
}
public void setMaterialIds(String materialIds) {
this.materialIds = materialIds;
}
public String getLocationRange() {
return this.locationRange;
}
public void setLocationRange(String locationRange) {
this.locationRange = locationRange;
}
public Integer getAssigneeId() {
return this.assigneeId;
}
public void setAssigneeId(Integer assigneeId) {
this.assigneeId = assigneeId;
}
public String getAssistantIds() {
return this.assistantIds;
}
public void setAssistantIds(String assistantIds) {
this.assistantIds = assistantIds;
}
public String getTaskStatus() {
return this.taskStatus;
}
public void setTaskStatus(String taskStatus) {
this.taskStatus = taskStatus;
}
public String getStartTime() {
return this.startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return this.endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public Integer getTotalItems() {
return this.totalItems;
}
public void setTotalItems(Integer totalItems) {
this.totalItems = totalItems;
}
public Integer getCountedItems() {
return this.countedItems;
}
public void setCountedItems(Integer countedItems) {
this.countedItems = countedItems;
}
public String getInventoryDevice() {
return this.inventoryDevice;
}
public void setInventoryDevice(String inventoryDevice) {
this.inventoryDevice = inventoryDevice;
}
public String getDelFlag() {
return this.delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getCreateTime() {
return this.createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return this.updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.sxyz.rfid.greendao.model;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Property;
import org.greenrobot.greendao.annotation.Transient;
import java.io.Serializable;
/**
* 主要功能: 盘点任务明细信息
*
* @Description:
* @Project: rfid-app
* @Package: com.sxyz.rfid.greendao.model
* @author: chunyuanwu
* @date: 2026年01月15日 16:01
* @version: 1.0.0
*/
@Entity(nameInDb = "wms_inventory_task_detail")
public class WmsInventoryTaskDetail implements Serializable {
private static final long serialVersionUID = 1L;
//主键
@Id(autoincrement = true)
@Property(nameInDb = "detail_id")
private Long detailId;
@Property(nameInDb = "task_id")
private Integer taskId;
@Property(nameInDb = "inventory_id")
private Integer inventoryId;
@Property(nameInDb = "material_id")
private Integer materialId;
@Property(nameInDb = "warehouse_id")
private Integer warehouseId;
@Property(nameInDb = "warehouse_name")
private String warehouseName;
@Property(nameInDb = "area_id")
private Integer areaId;
@Property(nameInDb = "area_name")
private String areaName;
@Property(nameInDb = "location_id")
private Integer locationId;
@Property(nameInDb = "location_name")
private String locationName;
@Property(nameInDb = "batch_no")
private String batchNo;
@Property(nameInDb = "system_quantity")
private Float systemQty;
@Property(nameInDb = "actual_quantity")
private Float actualQty;
@Property(nameInDb = "difference_rate")
private Float diffQty;
@Property(nameInDb = "difference_reason")
private String diffReason;
@Property(nameInDb = "check_status")
private String checkStatus;
@Property(nameInDb = "checker_id")
private Integer checkerId;
@Property(nameInDb = "checker_name")
private String checkerName;
@Property(nameInDb = "check_time")
private String checkTime;
@Property(nameInDb = "rfid_tag")
private String rfidTag;
@Property(nameInDb = "barcode")
private String barcode;
@Property(nameInDb = "is_blind_zone")
private String isBlindZone;
@Property(nameInDb = "quality_status")
private String qualityStatus;
@Property(nameInDb = "del_flag")
private String delFlag;
@Property(nameInDb = "create_time")
private String createTime;
@Property(nameInDb = "update_time")
private String updateTime;
@Property(nameInDb = "remark")
private String remark;
//一对一联表WmsInventoryResult
// @ToOne(joinProperty = "taskId")
// private WmsInventoryResult wmsInventoryResult;
//不映射到数据库字段 用于展开收起状态
@Transient
private boolean isExpanded;
@Generated(hash = 745553459)
public WmsInventoryTaskDetail(Long detailId, Integer taskId, Integer inventoryId, Integer materialId,
Integer warehouseId, String warehouseName, Integer areaId, String areaName, Integer locationId,
String locationName, String batchNo, Float systemQty, Float actualQty, Float diffQty, String diffReason,
String checkStatus, Integer checkerId, String checkerName, String checkTime, String rfidTag, String barcode,
String isBlindZone, String qualityStatus, String delFlag, String createTime, String updateTime, String remark) {
this.detailId = detailId;
this.taskId = taskId;
this.inventoryId = inventoryId;
this.materialId = materialId;
this.warehouseId = warehouseId;
this.warehouseName = warehouseName;
this.areaId = areaId;
this.areaName = areaName;
this.locationId = locationId;
this.locationName = locationName;
this.batchNo = batchNo;
this.systemQty = systemQty;
this.actualQty = actualQty;
this.diffQty = diffQty;
this.diffReason = diffReason;
this.checkStatus = checkStatus;
this.checkerId = checkerId;
this.checkerName = checkerName;
this.checkTime = checkTime;
this.rfidTag = rfidTag;
this.barcode = barcode;
this.isBlindZone = isBlindZone;
this.qualityStatus = qualityStatus;
this.delFlag = delFlag;
this.createTime = createTime;
this.updateTime = updateTime;
this.remark = remark;
}
public boolean isExpanded() {
return isExpanded;
}
public void setExpanded(boolean expanded) {
isExpanded = expanded;
}
@Generated(hash = 1405986565)
public WmsInventoryTaskDetail() {
}
public Long getDetailId() {
return this.detailId;
}
public void setDetailId(Long detailId) {
this.detailId = detailId;
}
public Integer getTaskId() {
return this.taskId;
}
public void setTaskId(Integer taskId) {
this.taskId = taskId;
}
public Integer getInventoryId() {
return this.inventoryId;
}
public void setInventoryId(Integer inventoryId) {
this.inventoryId = inventoryId;
}
public Integer getMaterialId() {
return this.materialId;
}
public void setMaterialId(Integer materialId) {
this.materialId = materialId;
}
public Integer getWarehouseId() {
return this.warehouseId;
}
public void setWarehouseId(Integer warehouseId) {
this.warehouseId = warehouseId;
}
public String getWarehouseName() {
return this.warehouseName;
}
public void setWarehouseName(String warehouseName) {
this.warehouseName = warehouseName;
}
public Integer getAreaId() {
return this.areaId;
}
public void setAreaId(Integer areaId) {
this.areaId = areaId;
}
public String getAreaName() {
return this.areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public Integer getLocationId() {
return this.locationId;
}
public void setLocationId(Integer locationId) {
this.locationId = locationId;
}
public String getLocationName() {
return this.locationName;
}
public void setLocationName(String locationName) {
this.locationName = locationName;
}
public String getBatchNo() {
return this.batchNo;
}
public void setBatchNo(String batchNo) {
this.batchNo = batchNo;
}
public Float getSystemQty() {
return this.systemQty;
}
public void setSystemQty(Float systemQty) {
this.systemQty = systemQty;
}
public Float getActualQty() {
return this.actualQty;
}
public void setActualQty(Float actualQty) {
this.actualQty = actualQty;
}
public Float getDiffQty() {
return this.diffQty;
}
public void setDiffQty(Float diffQty) {
this.diffQty = diffQty;
}
public String getDiffReason() {
return this.diffReason;
}
public void setDiffReason(String diffReason) {
this.diffReason = diffReason;
}
public String getCheckStatus() {
return this.checkStatus;
}
public void setCheckStatus(String checkStatus) {
this.checkStatus = checkStatus;
}
public Integer getCheckerId() {
return this.checkerId;
}
public void setCheckerId(Integer checkerId) {
this.checkerId = checkerId;
}
public String getCheckerName() {
return this.checkerName;
}
public void setCheckerName(String checkerName) {
this.checkerName = checkerName;
}
public String getCheckTime() {
return this.checkTime;
}
public void setCheckTime(String checkTime) {
this.checkTime = checkTime;
}
public String getRfidTag() {
return this.rfidTag;
}
public void setRfidTag(String rfidTag) {
this.rfidTag = rfidTag;
}
public String getBarcode() {
return this.barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public String getIsBlindZone() {
return this.isBlindZone;
}
public void setIsBlindZone(String isBlindZone) {
this.isBlindZone = isBlindZone;
}
public String getQualityStatus() {
return this.qualityStatus;
}
public void setQualityStatus(String qualityStatus) {
this.qualityStatus = qualityStatus;
}
public String getDelFlag() {
return this.delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getCreateTime() {
return this.createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return this.updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.sxyz.rfid.greendao.model;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Property;
import java.io.Serializable;
import org.greenrobot.greendao.annotation.Generated;
/**
* 主要功能:
*
* @Description: 库位表
* @Project: rfid-app
* @Package: com.sxyz.rfid.greendao.model
* @author: chunyuanwu
* @date: 2026年01月16日 15:01
* @version: 1.0.0
*/
@Entity(nameInDb = "wms_location")
public class WmsLocation implements Serializable {
private static final long serialVersionUID = 1L;
@Property(nameInDb = "location_id")
private Long locationId;
@Property(nameInDb = "location_code")
private String locationCode;
@Property(nameInDb = "location_name")
private String locationName;
@Property(nameInDb = "area_id")
private Integer areaId;
@Property(nameInDb = "location_type")
private String locationType;
@Property(nameInDb = "x_coordinate")
private Integer xCoordinate;
@Property(nameInDb = "y_coordinate")
private Integer yCoordinate;
@Property(nameInDb = "z_coordinate")
private Integer zCoordinate;
@Property(nameInDb = "max_capacity")
private Float maxCapacity;
@Property(nameInDb = "current_capacity")
private Float currentCapacity;
@Property(nameInDb = "weight_limit")
private Float weightLimit;
@Property(nameInDb = "length")
private Float length;
@Property(nameInDb = "width")
private Float width;
@Property(nameInDb = "height")
private Float height;
@Property(nameInDb = "status")
private String status;
@Property(nameInDb = "rfid_antenna_id")
private String rfidAntennaId;
@Property(nameInDb = "last_inventory_time")
private String lastInventoryTime;
@Property(nameInDb = "del_flag")
private String delFlag;
@Property(nameInDb = "create_time")
private String createTime;
@Property(nameInDb = "update_time")
private String updateTime;
@Property(nameInDb = "remark")
private String remark;
@Generated(hash = 1635717656)
public WmsLocation(Long locationId, String locationCode, String locationName,
Integer areaId, String locationType, Integer xCoordinate,
Integer yCoordinate, Integer zCoordinate, Float maxCapacity,
Float currentCapacity, Float weightLimit, Float length, Float width,
Float height, String status, String rfidAntennaId,
String lastInventoryTime, String delFlag, String createTime,
String updateTime, String remark) {
this.locationId = locationId;
this.locationCode = locationCode;
this.locationName = locationName;
this.areaId = areaId;
this.locationType = locationType;
this.xCoordinate = xCoordinate;
this.yCoordinate = yCoordinate;
this.zCoordinate = zCoordinate;
this.maxCapacity = maxCapacity;
this.currentCapacity = currentCapacity;
this.weightLimit = weightLimit;
this.length = length;
this.width = width;
this.height = height;
this.status = status;
this.rfidAntennaId = rfidAntennaId;
this.lastInventoryTime = lastInventoryTime;
this.delFlag = delFlag;
this.createTime = createTime;
this.updateTime = updateTime;
this.remark = remark;
}
@Generated(hash = 1501780407)
public WmsLocation() {
}
public Long getLocationId() {
return this.locationId;
}
public void setLocationId(Long locationId) {
this.locationId = locationId;
}
public String getLocationCode() {
return this.locationCode;
}
public void setLocationCode(String locationCode) {
this.locationCode = locationCode;
}
public String getLocationName() {
return this.locationName;
}
public void setLocationName(String locationName) {
this.locationName = locationName;
}
public Integer getAreaId() {
return this.areaId;
}
public void setAreaId(Integer areaId) {
this.areaId = areaId;
}
public String getLocationType() {
return this.locationType;
}
public void setLocationType(String locationType) {
this.locationType = locationType;
}
public Integer getXCoordinate() {
return this.xCoordinate;
}
public void setXCoordinate(Integer xCoordinate) {
this.xCoordinate = xCoordinate;
}
public Integer getYCoordinate() {
return this.yCoordinate;
}
public void setYCoordinate(Integer yCoordinate) {
this.yCoordinate = yCoordinate;
}
public Integer getZCoordinate() {
return this.zCoordinate;
}
public void setZCoordinate(Integer zCoordinate) {
this.zCoordinate = zCoordinate;
}
public Float getMaxCapacity() {
return this.maxCapacity;
}
public void setMaxCapacity(Float maxCapacity) {
this.maxCapacity = maxCapacity;
}
public Float getCurrentCapacity() {
return this.currentCapacity;
}
public void setCurrentCapacity(Float currentCapacity) {
this.currentCapacity = currentCapacity;
}
public Float getWeightLimit() {
return this.weightLimit;
}
public void setWeightLimit(Float weightLimit) {
this.weightLimit = weightLimit;
}
public Float getLength() {
return this.length;
}
public void setLength(Float length) {
this.length = length;
}
public Float getWidth() {
return this.width;
}
public void setWidth(Float width) {
this.width = width;
}
public Float getHeight() {
return this.height;
}
public void setHeight(Float height) {
this.height = height;
}
public String getStatus() {
return this.status;
}
public void setStatus(String status) {
this.status = status;
}
public String getRfidAntennaId() {
return this.rfidAntennaId;
}
public void setRfidAntennaId(String rfidAntennaId) {
this.rfidAntennaId = rfidAntennaId;
}
public String getLastInventoryTime() {
return this.lastInventoryTime;
}
public void setLastInventoryTime(String lastInventoryTime) {
this.lastInventoryTime = lastInventoryTime;
}
public String getDelFlag() {
return this.delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getCreateTime() {
return this.createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return this.updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.sxyz.rfid.greendao.model;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Generated;
import org.greenrobot.greendao.annotation.Property;
import java.io.Serializable;
/**
* 主要功能: 仓库表
*
* @Description:
* @Project: rfid-app
* @Package: com.sxyz.rfid.greendao.model
* @author: chunyuanwu
* @date: 2026年01月16日 14:26
* @version: 1.0.0
*/
@Entity(nameInDb = "wms_warehouse")
public class WmsWarehouse implements Serializable {
private static final long serialVersionUID = 1L;
@Property(nameInDb = "warehouse_id")
private Long warehouseId;
@Property(nameInDb = "warehouse_code")
private String warehouseCode;
@Property(nameInDb = "warehouse_name")
private String warehouseName;
@Property(nameInDb = "warehouse_type")
private String warehouseType;
@Property(nameInDb = "area")
private Float area;
@Property(nameInDb = "capacity")
private Float capacity;
@Property(nameInDb = "location")
private String location;
@Property(nameInDb = "manager_id")
private Long managerId;
@Property(nameInDb = "status")
private String status;
@Property(nameInDb = "del_flag")
private String delFlag;
@Property(nameInDb = "create_time")
private String createTime;
@Property(nameInDb = "update_time")
private String updateTime;
@Property(nameInDb = "remark")
private String remark;
@Generated(hash = 410946761)
public WmsWarehouse(Long warehouseId, String warehouseCode,
String warehouseName, String warehouseType, Float area, Float capacity,
String location, Long managerId, String status, String delFlag,
String createTime, String updateTime, String remark) {
this.warehouseId = warehouseId;
this.warehouseCode = warehouseCode;
this.warehouseName = warehouseName;
this.warehouseType = warehouseType;
this.area = area;
this.capacity = capacity;
this.location = location;
this.managerId = managerId;
this.status = status;
this.delFlag = delFlag;
this.createTime = createTime;
this.updateTime = updateTime;
this.remark = remark;
}
@Generated(hash = 775569255)
public WmsWarehouse() {
}
public Long getWarehouseId() {
return this.warehouseId;
}
public void setWarehouseId(Long warehouseId) {
this.warehouseId = warehouseId;
}
public String getWarehouseCode() {
return this.warehouseCode;
}
public void setWarehouseCode(String warehouseCode) {
this.warehouseCode = warehouseCode;
}
public String getWarehouseName() {
return this.warehouseName;
}
public void setWarehouseName(String warehouseName) {
this.warehouseName = warehouseName;
}
public String getWarehouseType() {
return this.warehouseType;
}
public void setWarehouseType(String warehouseType) {
this.warehouseType = warehouseType;
}
public Float getArea() {
return this.area;
}
public void setArea(Float area) {
this.area = area;
}
public Float getCapacity() {
return this.capacity;
}
public void setCapacity(Float capacity) {
this.capacity = capacity;
}
public String getLocation() {
return this.location;
}
public void setLocation(String location) {
this.location = location;
}
public Long getManagerId() {
return this.managerId;
}
public void setManagerId(Long managerId) {
this.managerId = managerId;
}
public String getStatus() {
return this.status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDelFlag() {
return this.delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getCreateTime() {
return this.createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return this.updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return this.remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
...@@ -28,6 +28,8 @@ import com.ubx.usdk.USDKManager; ...@@ -28,6 +28,8 @@ import com.ubx.usdk.USDKManager;
import com.ubx.usdk.rfid.RfidManager; import com.ubx.usdk.rfid.RfidManager;
import com.ubx.usdk.util.SoundTool; import com.ubx.usdk.util.SoundTool;
import sql.com.yz.db.DaoSession;
/** /**
* 主要功能: 首页 * 主要功能: 首页
* *
...@@ -47,6 +49,7 @@ public class MainActivity extends BaseActivity<ActivityMainBinding> implements I ...@@ -47,6 +49,7 @@ public class MainActivity extends BaseActivity<ActivityMainBinding> implements I
public RfidManager mRfidManager;//RFID实例 public RfidManager mRfidManager;//RFID实例
public int readerType = 0;//阅读器类型 public int readerType = 0;//阅读器类型
private ILoginPresenter mILoginPresenter; private ILoginPresenter mILoginPresenter;
private DaoSession daoSession;
@Override @Override
public void initParms(Bundle mBundle) { public void initParms(Bundle mBundle) {
...@@ -68,6 +71,11 @@ public class MainActivity extends BaseActivity<ActivityMainBinding> implements I ...@@ -68,6 +71,11 @@ public class MainActivity extends BaseActivity<ActivityMainBinding> implements I
// mBinding.bottombar.setMode(BottomNavigationBar.MODE_DEFAULT); // mBinding.bottombar.setMode(BottomNavigationBar.MODE_DEFAULT);
// mBinding.bottombar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_RIPPLE);//设置Mode和BackgroundStyle // mBinding.bottombar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_RIPPLE);//设置Mode和BackgroundStyle
mBinding.bottombar.addItem(new BottomNavigationItem(imageViewArray[0], strings[0]).setActiveColorResource(R.color.purple_200)).addItem(new BottomNavigationItem(imageViewArray[1], strings[1]).setActiveColorResource(R.color.purple_200)).addItem(new BottomNavigationItem(imageViewArray[2], strings[2]).setActiveColorResource(R.color.purple_200)).setFirstSelectedPosition(0).setBarBackgroundColor(R.color.c_f9f9fc).initialise(); mBinding.bottombar.addItem(new BottomNavigationItem(imageViewArray[0], strings[0]).setActiveColorResource(R.color.purple_200)).addItem(new BottomNavigationItem(imageViewArray[1], strings[1]).setActiveColorResource(R.color.purple_200)).addItem(new BottomNavigationItem(imageViewArray[2], strings[2]).setActiveColorResource(R.color.purple_200)).setFirstSelectedPosition(0).setBarBackgroundColor(R.color.c_f9f9fc).initialise();
// Out model = new Out();
// model.setName("111");
// daoSession = GreenDaoManager.getInstance().getDaoSession();
// daoSession.insert(model);
} }
......
...@@ -27,6 +27,7 @@ import com.sxyz.rfid.presenter.model.UserInfoModel; ...@@ -27,6 +27,7 @@ import com.sxyz.rfid.presenter.model.UserInfoModel;
import com.sxyz.rfid.presenter.view.ILoginView; import com.sxyz.rfid.presenter.view.ILoginView;
import com.sxyz.rfid.ui.MainActivity; import com.sxyz.rfid.ui.MainActivity;
import com.sxyz.rfid.ui.login.bean.UserBean; import com.sxyz.rfid.ui.login.bean.UserBean;
import com.sxyz.rfid.ui.review.offline.ReviewOfflineActivity;
import com.sxyz.rfid.utils.LocalUtils; import com.sxyz.rfid.utils.LocalUtils;
import com.sxyz.rfid.utils.ToastUtil; import com.sxyz.rfid.utils.ToastUtil;
import com.sxyz.rfid.widgets.DialogUtil; import com.sxyz.rfid.widgets.DialogUtil;
...@@ -74,6 +75,7 @@ public class LoginActivity extends BaseActivity<ActivityLoginBinding> implements ...@@ -74,6 +75,7 @@ public class LoginActivity extends BaseActivity<ActivityLoginBinding> implements
mBinding.ivEye.setOnClickListener(this); mBinding.ivEye.setOnClickListener(this);
mBinding.tvLogin.setOnClickListener(this); mBinding.tvLogin.setOnClickListener(this);
mBinding.txtWellcome.setOnClickListener(this); mBinding.txtWellcome.setOnClickListener(this);
mBinding.tvOffline.setOnClickListener(this);
} }
@Override @Override
...@@ -119,6 +121,10 @@ public class LoginActivity extends BaseActivity<ActivityLoginBinding> implements ...@@ -119,6 +121,10 @@ public class LoginActivity extends BaseActivity<ActivityLoginBinding> implements
if (!AppConfig.DEBUG) { if (!AppConfig.DEBUG) {
continuousClick(COUNTS, DURATION); continuousClick(COUNTS, DURATION);
} }
}
break;
case R.id.tvOffline: {//离线执行盘点列表
startActivity(ReviewOfflineActivity.class);//跳转离线执行盘点列表
break; break;
} }
} }
......
...@@ -42,6 +42,8 @@ import java.util.List; ...@@ -42,6 +42,8 @@ import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import sql.com.yz.db.DaoSession;
/** /**
* 主要功能: 出库 * 主要功能: 出库
* *
...@@ -53,7 +55,7 @@ import java.util.stream.Collectors; ...@@ -53,7 +55,7 @@ import java.util.stream.Collectors;
* @version: 1.0.0 * @version: 1.0.0
*/ */
public class OutboundActivity extends BaseActivity<ActivityOutboundBinding> implements IOutBoundView { public class OutboundActivity extends BaseActivity<ActivityOutboundBinding> implements IOutBoundView {
// private DaoSession daoSession; private DaoSession daoSession;
private OutBoundDetailsAdapter mOutBoundAdapter; private OutBoundDetailsAdapter mOutBoundAdapter;
private List<OutBoundDetailModel.RowsBean> list = new ArrayList<>(); private List<OutBoundDetailModel.RowsBean> list = new ArrayList<>();
private List<OutboundFridModel.RowsBean> outBoundFridList = new ArrayList<>(); private List<OutboundFridModel.RowsBean> outBoundFridList = new ArrayList<>();
......
...@@ -3,9 +3,6 @@ package com.sxyz.rfid.ui.out; ...@@ -3,9 +3,6 @@ package com.sxyz.rfid.ui.out;
import static android.view.View.GONE; import static android.view.View.GONE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
import android.Manifest;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
...@@ -16,38 +13,23 @@ import androidx.fragment.app.Fragment; ...@@ -16,38 +13,23 @@ import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import com.chad.library.adapter.base.listener.OnLoadMoreListener; import com.chad.library.adapter.base.listener.OnLoadMoreListener;
import com.hjq.permissions.OnPermission;
import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
import com.sxyz.rfid.R; import com.sxyz.rfid.R;
import com.sxyz.rfid.base.BaseFragment; import com.sxyz.rfid.base.BaseFragment;
import com.sxyz.rfid.databinding.FragmentOutboundBinding; import com.sxyz.rfid.databinding.FragmentOutboundBinding;
import com.sxyz.rfid.greendao.GreenDaoManager;
import com.sxyz.rfid.greendao.model.Out;
import com.sxyz.rfid.presenter.IDictPresenter;
import com.sxyz.rfid.presenter.IOutBoundPresenter; import com.sxyz.rfid.presenter.IOutBoundPresenter;
import com.sxyz.rfid.presenter.imp.DictPresenterImpl;
import com.sxyz.rfid.presenter.imp.OutBoundPresenterImpl; import com.sxyz.rfid.presenter.imp.OutBoundPresenterImpl;
import com.sxyz.rfid.presenter.model.DictModel;
import com.sxyz.rfid.presenter.model.OutBoundDetailModel; import com.sxyz.rfid.presenter.model.OutBoundDetailModel;
import com.sxyz.rfid.presenter.model.OutboundFlowingWaterModel; import com.sxyz.rfid.presenter.model.OutboundFlowingWaterModel;
import com.sxyz.rfid.presenter.model.OutboundFridModel; import com.sxyz.rfid.presenter.model.OutboundFridModel;
import com.sxyz.rfid.presenter.model.OutboundModel; import com.sxyz.rfid.presenter.model.OutboundModel;
import com.sxyz.rfid.presenter.view.IDictView;
import com.sxyz.rfid.presenter.view.IOutBoundView; import com.sxyz.rfid.presenter.view.IOutBoundView;
import com.sxyz.rfid.ui.MainActivity;
import com.sxyz.rfid.ui.out.adapter.OutBoundAdapter; import com.sxyz.rfid.ui.out.adapter.OutBoundAdapter;
import com.sxyz.rfid.utils.L;
import com.sxyz.rfid.utils.StringUtil; import com.sxyz.rfid.utils.StringUtil;
import com.sxyz.rfid.widgets.CustomLoadMoreView; import com.sxyz.rfid.widgets.CustomLoadMoreView;
import org.greenrobot.greendao.query.QueryBuilder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import sql.com.yz.db.DaoSession;
/** /**
* 主要功能: * 主要功能:
* *
......
...@@ -8,26 +8,16 @@ import androidx.recyclerview.widget.LinearLayoutManager; ...@@ -8,26 +8,16 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.blankj.utilcode.util.StringUtils; import com.blankj.utilcode.util.StringUtils;
import com.sxyz.rfid.R; import com.sxyz.rfid.R;
import com.sxyz.rfid.base.BaseActivity; import com.sxyz.rfid.base.BaseActivity;
import com.sxyz.rfid.databinding.ActivityOutboundDetailBinding;
import com.sxyz.rfid.databinding.ActivityReviewDetailBinding; import com.sxyz.rfid.databinding.ActivityReviewDetailBinding;
import com.sxyz.rfid.presenter.IOutBoundPresenter;
import com.sxyz.rfid.presenter.IReviewPresenter; import com.sxyz.rfid.presenter.IReviewPresenter;
import com.sxyz.rfid.presenter.imp.OutBoundPresenterImpl;
import com.sxyz.rfid.presenter.imp.ReviewPresenterImpl; import com.sxyz.rfid.presenter.imp.ReviewPresenterImpl;
import com.sxyz.rfid.presenter.model.OutBoundDetailModel;
import com.sxyz.rfid.presenter.model.OutboundFlowingWaterModel;
import com.sxyz.rfid.presenter.model.OutboundFridModel;
import com.sxyz.rfid.presenter.model.OutboundModel;
import com.sxyz.rfid.presenter.model.ReviewDetailListModel; import com.sxyz.rfid.presenter.model.ReviewDetailListModel;
import com.sxyz.rfid.presenter.model.ReviewDetailModel; import com.sxyz.rfid.presenter.model.ReviewDetailModel;
import com.sxyz.rfid.presenter.model.ReviewModel; import com.sxyz.rfid.presenter.model.ReviewModel;
import com.sxyz.rfid.presenter.model.ReviewResultModel; import com.sxyz.rfid.presenter.model.ReviewResultModel;
import com.sxyz.rfid.presenter.model.ReviewRfidTaskCheckModel; import com.sxyz.rfid.presenter.model.ReviewRfidTaskCheckModel;
import com.sxyz.rfid.presenter.view.IOutBoundView;
import com.sxyz.rfid.presenter.view.IReviewView; import com.sxyz.rfid.presenter.view.IReviewView;
import com.sxyz.rfid.ui.out.OutboundDetailListActivity; import com.sxyz.rfid.ui.review.adapter.ReviewDetailAdapter;
import com.sxyz.rfid.ui.out.adapter.OutBoundDetailAdapter;
import com.sxyz.rfid.ui.out.adapter.ReviewDetailAdapter;
import com.sxyz.rfid.utils.StringUtil; import com.sxyz.rfid.utils.StringUtil;
import java.util.ArrayList; import java.util.ArrayList;
......
...@@ -29,7 +29,7 @@ import com.sxyz.rfid.presenter.model.ReviewResultModel; ...@@ -29,7 +29,7 @@ import com.sxyz.rfid.presenter.model.ReviewResultModel;
import com.sxyz.rfid.presenter.model.ReviewRfidTaskCheckModel; import com.sxyz.rfid.presenter.model.ReviewRfidTaskCheckModel;
import com.sxyz.rfid.presenter.model.ReviewTaskCheck; import com.sxyz.rfid.presenter.model.ReviewTaskCheck;
import com.sxyz.rfid.presenter.view.IReviewView; import com.sxyz.rfid.presenter.view.IReviewView;
import com.sxyz.rfid.ui.out.adapter.ReviewDetailAdapter; import com.sxyz.rfid.ui.review.adapter.ReviewDetailAdapter;
import com.sxyz.rfid.utils.L; import com.sxyz.rfid.utils.L;
import com.sxyz.rfid.utils.LocalUtils; import com.sxyz.rfid.utils.LocalUtils;
import com.sxyz.rfid.utils.StringUtil; import com.sxyz.rfid.utils.StringUtil;
......
package com.sxyz.rfid.ui.out.adapter; package com.sxyz.rfid.ui.review.adapter;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
...@@ -13,9 +13,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter; ...@@ -13,9 +13,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.module.LoadMoreModule; import com.chad.library.adapter.base.module.LoadMoreModule;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.sxyz.rfid.R; import com.sxyz.rfid.R;
import com.sxyz.rfid.presenter.model.OutBoundDetailModel;
import com.sxyz.rfid.presenter.model.ReviewDetailListModel; import com.sxyz.rfid.presenter.model.ReviewDetailListModel;
import com.sxyz.rfid.presenter.model.ReviewModel;
import java.util.List; import java.util.List;
......
package com.sxyz.rfid.ui.review.offline;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.sxyz.rfid.R;
import com.sxyz.rfid.base.BaseActivity;
import com.sxyz.rfid.databinding.ActivityReviewOfflineBinding;
import com.sxyz.rfid.greendao.GreenDaoManager;
import com.sxyz.rfid.greendao.model.WmsInventoryTask;
import com.sxyz.rfid.ui.review.offline.adapter.ReviewOfflineAdapter;
import com.sxyz.rfid.utils.StringUtil;
import java.util.ArrayList;
import java.util.List;
import sql.com.yz.db.DaoSession;
import sql.com.yz.db.WmsInventoryTaskDao;
/**
* 主要功能: 离线执行盘点列表
*
* @Description: 离线执行盘点列表
* @Project: rfid-app
* @Package: com.sxyz.rfid.ui.review.offline
* @author: chunyuanwu
* @date: 2026年01月15日 13:54
* @version: 1.0.0
*/
public class ReviewOfflineActivity extends BaseActivity<ActivityReviewOfflineBinding> {
private DaoSession daoSession;
private List<WmsInventoryTask> mList = new ArrayList<>();
private ReviewOfflineAdapter mAdapter;
@Override
public void initParms(Bundle mBundle) {
}
@Override
protected ActivityReviewOfflineBinding getViewBinding() {
return ActivityReviewOfflineBinding.inflate(getLayoutInflater());
}
@Override
protected void initView() {
initToolBar("执行盘点列表");
mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
mAdapter = new ReviewOfflineAdapter(R.layout.item_offline_review, mList);
mBinding.recyclerView.setAdapter(mAdapter);
}
@Override
protected void setListener() {
mBinding.swipeRefreshLayout.setOnRefreshListener(this::getData);
mBinding.searchEtInput.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 0) {
mBinding.ivSearch.setVisibility(VISIBLE);
} else {
mBinding.ivSearch.setVisibility(GONE);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
mBinding.ivSearch.setOnClickListener(v -> {
mBinding.searchEtInput.setText("");
getData();
});
mBinding.searchEtInput.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
getData();
return true;
}
return false;
});
mAdapter.setOnItemClickListener(new ReviewOfflineAdapter.OnItemClickListener() {
@Override
public void onDeleteClick(int position, WmsInventoryTask item) {
//离线版不做删除操作
}
@Override
public void onItemClick(int position, WmsInventoryTask item) {
// 处理详情点击事件
Bundle bundle = new Bundle();
bundle.putSerializable("item", item);
startActivity(ReviewOfflineDetailActivity.class, bundle);
}
@Override
public void onCopyClick(int position, WmsInventoryTask item) {
StringUtil.copyToClipboard(mActivity, item.getTaskNo());
}
@Override
public void onReviewTaskClick(int position, WmsInventoryTask item) {
// 处理出库点击事件
Bundle bundle = new Bundle();
bundle.putSerializable("item", item);
startActivity(ReviewOfflineTaskActivity.class, bundle);
}
// 处理结束盘点点击事件
@Override
public void onStopTaskClick(int position, WmsInventoryTask item) {
// new AlertDialog.Builder(mActivity).setTitle("提示").setMessage("确定结束该盘点任务吗?").setPositiveButton("确定", (dialog, which) -> {
// mPresenter.doStopReviewTask(ReviewFragment.this, item.getTaskId());
// }).setNegativeButton("取消", null).show();
}
});
}
@Override
protected void onResume() {
super.onResume();
//刷新数据
getData();
}
protected void getData() {
daoSession = GreenDaoManager.getInstance().getDaoSession();
if (daoSession == null) {
//数据库不存在
mList.clear();
mAdapter.notifyDataSetChanged();
mBinding.includedNoDb.llNoDb.setVisibility(View.VISIBLE);
} else {
//根据任务编号查询所有盘点任务
mList = daoSession.queryBuilder(WmsInventoryTask.class).where(WmsInventoryTaskDao.Properties.TaskNo.like("%" + mBinding.searchEtInput.getText().toString() + "%")).build().forCurrentThread().list();
//设置新的数据集
mAdapter.setNewInstance(mList);
//隐藏暂无数据布局
mBinding.includedNoDb.llNoDb.setVisibility(View.GONE);
//判断是否为空 如果为空 则显示暂无数据 否则 隐藏暂无数据
if (mList.isEmpty()) {
mBinding.includedNothing.llNothing.setVisibility(View.VISIBLE);
} else {
mBinding.includedNothing.llNothing.setVisibility(View.GONE);
}
}
//关闭刷新动画
mBinding.swipeRefreshLayout.setRefreshing(false);
}
@Override
protected void initData() {
}
@Override
protected void onDestroy() {
super.onDestroy();
if (daoSession != null) {
try {
daoSession.clear();
GreenDaoManager.getInstance().closeConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package com.sxyz.rfid.ui.review.offline;
import android.os.Bundle;
import android.view.View;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.blankj.utilcode.util.StringUtils;
import com.google.gson.Gson;
import com.sxyz.rfid.R;
import com.sxyz.rfid.base.BaseActivity;
import com.sxyz.rfid.databinding.ActivityReviewDetailBinding;
import com.sxyz.rfid.greendao.GreenDaoManager;
import com.sxyz.rfid.greendao.model.WmsInventoryTask;
import com.sxyz.rfid.greendao.model.WmsInventoryTaskDetail;
import com.sxyz.rfid.ui.review.offline.adapter.ReviewOfflineDetailAdapter;
import com.sxyz.rfid.utils.L;
import com.sxyz.rfid.utils.StringUtil;
import java.util.ArrayList;
import java.util.List;
import sql.com.yz.db.DaoSession;
import sql.com.yz.db.WmsInventoryTaskDetailDao;
/**
* 主要功能: 盘点详情 、 任务基础信息、任务明细信息
*
* @Description: 盘点详情 、 任务基础信息、任务明细信息
* @Project: rfid-app
* @Package: com.sxyz.rfid.ui.review
* @author: chunyuanwu
* @date: 2025年12月29日 18:18
* @version: 1.0.0
*/
public class ReviewOfflineDetailActivity extends BaseActivity<ActivityReviewDetailBinding> {
private WmsInventoryTask item;
private ReviewOfflineDetailAdapter mAdapter;
private List<WmsInventoryTaskDetail> mList = new ArrayList<>();
private DaoSession daoSession;
@Override
public void initParms(Bundle mBundle) {
item = (WmsInventoryTask) mBundle.getSerializable("item");
}
@Override
protected ActivityReviewDetailBinding getViewBinding() {
return ActivityReviewDetailBinding.inflate(getLayoutInflater());
}
@Override
protected void initView() {
initToolBar("盘点详情");
mBinding.rvOutboundDetails.setLayoutManager(new LinearLayoutManager(mActivity));
mAdapter = new ReviewOfflineDetailAdapter(R.layout.item_review_detail, mList);
mBinding.rvOutboundDetails.setAdapter(mAdapter);
}
@Override
protected void setListener() {
//复制按钮点击事件
mBinding.tvTaskNo.setOnClickListener(v -> {
StringUtil.copyToClipboard(this, item.getTaskNo());
});
//出库明细点击事件
mAdapter.setOnItemClickListener(new ReviewOfflineDetailAdapter.OnItemClickListener() {
@Override
public void onCopy1ItemClick(int position, WmsInventoryTaskDetail item) {
StringUtil.copyToClipboard(mActivity, item.getBatchNo());
}
@Override
public void onCopy2ItemClick(int position, WmsInventoryTaskDetail item) {
StringUtil.copyToClipboard(mActivity, item.getRfidTag());
}
});
}
@Override
protected void initData() {
//任务编号
mBinding.tvTaskNo.setText(item.getTaskNo());
switch (item.getTaskStatus()) {
case "0":
mBinding.tvTaskStatus.setText("未完成");
mBinding.tvTaskStatus.setBackground(ContextCompat.getDrawable(this, R.drawable.status_red_bg));
mBinding.tvTaskStatus.setTextColor(ContextCompat.getColor(this, R.color.red));
break;
case "1":
mBinding.tvTaskStatus.setText("进行中");
mBinding.tvTaskStatus.setBackground(ContextCompat.getDrawable(this, R.drawable.status_org_bg));
mBinding.tvTaskStatus.setTextColor(ContextCompat.getColor(this, R.color.text_orange3));
break;
case "2":
mBinding.tvTaskStatus.setText("已完成");
mBinding.tvTaskStatus.setBackground(ContextCompat.getDrawable(this, R.drawable.status_green_bg));
mBinding.tvTaskStatus.setTextColor(ContextCompat.getColor(this, R.color.green));
break;
case "3":
mBinding.tvTaskStatus.setText("已结束");
mBinding.tvTaskStatus.setBackground(ContextCompat.getDrawable(this, R.drawable.status_gray_bg));
mBinding.tvTaskStatus.setTextColor(ContextCompat.getColor(this, R.color.c_6666));
break;
default:
mBinding.tvTaskStatus.setText("-");
mBinding.tvTaskStatus.setBackground(ContextCompat.getDrawable(this, R.drawable.status_gray_bg));
mBinding.tvTaskStatus.setTextColor(ContextCompat.getColor(this, R.color.c_6666));
break;
}
//任务名称
mBinding.tvTaskName.setText(!StringUtils.isEmpty(item.getTaskName()) ? item.getTaskName() : "-");
//仓库名称
mBinding.txtWarehouseName.setText(!StringUtils.isEmpty(item.getWarehouseName()) ? item.getWarehouseName() : "-");
//已盘数
mBinding.txtReviewNumber.setText(item.getCountedItems() + "");
//总盘点数
mBinding.txtTotalNumber.setText(item.getTotalItems() + "");
//出库人
mBinding.txtRemark.setText(!StringUtils.isEmpty(item.getRemark()) ? item.getRemark() : "-");
daoSession = GreenDaoManager.getInstance().getDaoSession();
if (daoSession == null) {
//数据库不存在
mList.clear();
mAdapter.notifyDataSetChanged();
mBinding.includedNoDb.llNoDb.setVisibility(View.VISIBLE);
} else {
//根据item.getTaskId()查询任务明细
mList = daoSession.getWmsInventoryTaskDetailDao().queryBuilder()
.where(WmsInventoryTaskDetailDao.Properties.TaskId.eq(item.getTaskId()))
.list();
//设置新的数据集
mAdapter.setNewInstance(mList);
//隐藏暂无数据布局
mBinding.includedNoDb.llNoDb.setVisibility(View.GONE);
//判断是否为空 如果为空 则显示暂无数据 否则 隐藏暂无数据
if (mList.isEmpty()) {
mBinding.includedNothing.llNothing.setVisibility(View.VISIBLE);
} else {
mBinding.includedNothing.llNothing.setVisibility(View.GONE);
}
}
L.i("list ======\n " + new Gson().toJson(mList));
}
@Override
protected void onDestroy() {
super.onDestroy();
if (daoSession != null) {
try {
daoSession.clear();
GreenDaoManager.getInstance().closeConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package com.sxyz.rfid.ui.review.offline.adapter;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import com.blankj.utilcode.util.StringUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.sxyz.rfid.R;
import com.sxyz.rfid.greendao.model.WmsInventoryTask;
import com.sxyz.rfid.utils.ToastUtil;
import java.util.List;
/**
* 盘点适配器
*
* @author chunyuanwu
* @version 1.0.0
* @date 2025年12月27日 16:40
*/
public class ReviewOfflineAdapter extends BaseQuickAdapter<WmsInventoryTask, BaseViewHolder> {
public ReviewOfflineAdapter(int layoutResId, List<WmsInventoryTask> data) {
super(layoutResId, data);
}
@Override
protected void convert(@NonNull BaseViewHolder baseViewHolder, WmsInventoryTask dataBean) {
//出库单号
baseViewHolder.setText(R.id.tv_task_no, !StringUtils.isEmpty(dataBean.getTaskNo()) ? dataBean.getTaskNo() : "-");
//任务名称
baseViewHolder.setText(R.id.tv_task_name, !StringUtils.isEmpty(dataBean.getTaskName()) ? dataBean.getTaskName() : "-");
//仓库名称
baseViewHolder.setText(R.id.txt_warehouse_name, !StringUtils.isEmpty(dataBean.getWarehouseName()) ? dataBean.getWarehouseName() : "-");
//总盘点数
baseViewHolder.setText(R.id.txt_total_number, dataBean.getTotalItems() + "");
//已盘数
baseViewHolder.setText(R.id.txt_review_number, dataBean.getCountedItems() + "");
TextView reviewButton = baseViewHolder.getView(R.id.review_button);
TextView stopButton = baseViewHolder.getView(R.id.stop_button);
//任务状态
TextView taskStatus = baseViewHolder.getView(R.id.tv_task_status);
switch (dataBean.getTaskStatus()) {
case "0":
taskStatus.setText("未完成");
taskStatus.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_red_bg));
taskStatus.setTextColor(ContextCompat.getColor(getContext(), R.color.red));
reviewButton.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.green_bg));
reviewButton.setTextColor(ContextCompat.getColor(getContext(), R.color.white));
stopButton.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_gray_bg));
stopButton.setTextColor(ContextCompat.getColor(getContext(), R.color.c_c1c1));
break;
case "1":
taskStatus.setText("进行中");
taskStatus.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_org_bg));
taskStatus.setTextColor(ContextCompat.getColor(getContext(), R.color.text_orange3));
reviewButton.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.green_bg));
reviewButton.setTextColor(ContextCompat.getColor(getContext(), R.color.white));
stopButton.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.red_bg4));
stopButton.setTextColor(ContextCompat.getColor(getContext(), R.color.white));
break;
case "2":
taskStatus.setText("已完成");
taskStatus.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_green_bg));
taskStatus.setTextColor(ContextCompat.getColor(getContext(), R.color.green));
reviewButton.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_gray_bg));
reviewButton.setTextColor(ContextCompat.getColor(getContext(), R.color.c_c1c1));
stopButton.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_gray_bg));
stopButton.setTextColor(ContextCompat.getColor(getContext(), R.color.c_c1c1));
break;
// case "3":
// taskStatus.setText("已结束");
// taskStatus.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_gray_bg));
// taskStatus.setTextColor(ContextCompat.getColor(getContext(), R.color.c_6666));
// reviewButton.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_gray_bg));
// reviewButton.setTextColor(ContextCompat.getColor(getContext(), R.color.c_c1c1));
// stopButton.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_gray_bg));
// stopButton.setTextColor(ContextCompat.getColor(getContext(), R.color.c_c1c1));
// break;
default:
taskStatus.setText("-");
taskStatus.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_gray_bg));
taskStatus.setTextColor(ContextCompat.getColor(getContext(), R.color.c_6666));
reviewButton.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_gray_bg));
reviewButton.setTextColor(ContextCompat.getColor(getContext(), R.color.c_c1c1));
stopButton.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_gray_bg));
stopButton.setTextColor(ContextCompat.getColor(getContext(), R.color.c_c1c1));
break;
}
//复制按钮
baseViewHolder.getView(R.id.tv_task_no).setOnClickListener(v -> {
if (mItemClickListener != null) {
mItemClickListener.onCopyClick(baseViewHolder.getLayoutPosition(), dataBean);
}
});
//详情按钮
baseViewHolder.getView(R.id.detail_button).setOnClickListener(v -> {
if (mItemClickListener != null) {
mItemClickListener.onItemClick(baseViewHolder.getLayoutPosition(), dataBean);
}
});
//执行盘点
reviewButton.setOnClickListener(v -> {
switch (dataBean.getTaskStatus()) {
case "0":
case "1":
if (mItemClickListener != null) {
mItemClickListener.onReviewTaskClick(baseViewHolder.getLayoutPosition(), dataBean);
}
break;
case "2":
ToastUtil.showShort("盘点已完成,无需执行盘点");
break;
// case "3":
// ToastUtil.showShort("盘点已结束,无需执行盘点");
// break;
default:
ToastUtil.showShort("未知状态,无法执行盘点");
break;
}
});
//删除按钮
// baseViewHolder.getView(R.id.delete_button).setOnClickListener(v -> {
// if (mItemClickListener != null) {
// mItemClickListener.onDeleteClick(baseViewHolder.getLayoutPosition(), dataBean);
// }
// });
//结束盘点
stopButton.setOnClickListener(v -> {
switch (dataBean.getTaskStatus()) {
case "0"://未开始
ToastUtil.showShort("盘点未开始,不能结束盘点");
break;
case "1"://已开始
if (mItemClickListener != null) {
mItemClickListener.onStopTaskClick(baseViewHolder.getLayoutPosition(), dataBean);
}
break;
case "2"://已完成
ToastUtil.showShort("盘点已完成,不能结束盘点");
break;
// case "3":
// ToastUtil.showShort("盘点已结束,不能结束盘点");
// break;
default:
ToastUtil.showShort("未知状态,无法结束盘点");
break;
}
});
}
public interface OnItemClickListener {
//删除
void onDeleteClick(int position, WmsInventoryTask item);
//详情
void onItemClick(int position, WmsInventoryTask item);
//复制按钮
void onCopyClick(int position, WmsInventoryTask item);
//执行盘点
void onReviewTaskClick(int position, WmsInventoryTask item);
//结束盘点
void onStopTaskClick(int position, WmsInventoryTask item);
}
private OnItemClickListener mItemClickListener;
public void setOnItemClickListener(OnItemClickListener mItemClickListener) {
this.mItemClickListener = mItemClickListener;
}
}
\ No newline at end of file
package com.sxyz.rfid.ui.review.offline.adapter;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import com.blankj.utilcode.util.StringUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.module.LoadMoreModule;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.sxyz.rfid.R;
import com.sxyz.rfid.greendao.model.WmsInventoryTaskDetail;
import java.util.List;
/**
* 盘点详情 适配器
*
* @author chunyuanwu
* @version 1.0.0
* @date 2025年12月27日 16:40
*/
public class ReviewOfflineDetailAdapter extends BaseQuickAdapter<WmsInventoryTaskDetail, BaseViewHolder> implements LoadMoreModule {
public ReviewOfflineDetailAdapter(int layoutResId, List<WmsInventoryTaskDetail> data) {
super(layoutResId, data);
}
@Override
protected void convert(@NonNull BaseViewHolder baseViewHolder, WmsInventoryTaskDetail dataBean) {
//批次号
baseViewHolder.setText(R.id.tv_batch_no, !StringUtils.isEmpty(dataBean.getBatchNo()) ? dataBean.getBatchNo() : "-");
//RFID标签
baseViewHolder.setText(R.id.tv_rfid_tag, !StringUtils.isEmpty(dataBean.getRfidTag()) ? dataBean.getRfidTag() : "-");
//仓库名称
baseViewHolder.setText(R.id.tv_warehouse_name, !StringUtils.isEmpty(dataBean.getWarehouseName()) ? dataBean.getWarehouseName() : "-");
//区域名称
baseViewHolder.setText(R.id.tv_area_name, !StringUtils.isEmpty(dataBean.getAreaName()) ? dataBean.getAreaName() : "-");
//位置名称
baseViewHolder.setText(R.id.tv_location_name, !StringUtils.isEmpty(dataBean.getLocationName()) ? dataBean.getLocationName() : "-");
//系统数量
baseViewHolder.setText(R.id.tv_system_quantity, !StringUtils.isEmpty(dataBean.getSystemQty() + "") ? dataBean.getSystemQty() + "" : "-");
// //实际数量
baseViewHolder.setText(R.id.tv_actual_quantity, !StringUtils.isEmpty(dataBean.getActualQty() + "") ? dataBean.getActualQty() + "" : "-");
//检查人
baseViewHolder.setText(R.id.tv_checker_name, !StringUtils.isEmpty(dataBean.getCheckerName()) ? dataBean.getCheckerName() : "-");
//检查时间
baseViewHolder.setText(R.id.tv_check_time, !StringUtils.isEmpty(dataBean.getCheckTime()) ? dataBean.getCheckTime() : "-");
//差异数量
baseViewHolder.setText(R.id.tv_difference_quantity, !StringUtils.isEmpty(dataBean.getDiffReason() + "") ? dataBean.getDiffReason() : "-");
//差异率
baseViewHolder.setText(R.id.tv_difference_rate, !StringUtils.isEmpty(dataBean.getDiffQty() + "") ? dataBean.getDiffQty() + "" : "-");
//备注
// baseViewHolder.setText(R.id.tv_remark, !StringUtils.isEmpty(dataBean.getRemark()) ? dataBean.getRemark() : "-");
//拣货状态
TextView checkStatus = baseViewHolder.getView(R.id.tv_check_status);
switch (dataBean.getCheckStatus()) {
case "0":
checkStatus.setText("待盘点");
checkStatus.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_org_bg));
checkStatus.setTextColor(ContextCompat.getColor(getContext(), R.color.text_orange3));
break;
case "1":
checkStatus.setText("已盘点");
checkStatus.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_green_bg));
checkStatus.setTextColor(ContextCompat.getColor(getContext(), R.color.green));
break;
case "2":
checkStatus.setText("差异待确认");
checkStatus.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_red_bg));
checkStatus.setTextColor(ContextCompat.getColor(getContext(), R.color.red));
break;
default:
checkStatus.setText("-");
checkStatus.setBackground(ContextCompat.getDrawable(getContext(), R.drawable.status_gray_bg));
checkStatus.setTextColor(ContextCompat.getColor(getContext(), R.color.c_6666));
break;
}
//差异原因
TextView tvDifferenceReason = baseViewHolder.getView(R.id.tv_difference_reason);
if (!StringUtils.isEmpty(dataBean.getDiffReason())) {
switch (dataBean.getDiffReason()) {
case "py":
tvDifferenceReason.setText("盘盈");
break;
case "pk":
tvDifferenceReason.setText("盘亏");
break;
case "wcy":
tvDifferenceReason.setText("无差异");
break;
default:
tvDifferenceReason.setText("-");
break;
}
} else {
tvDifferenceReason.setText("-");
}
LinearLayout ll1 = baseViewHolder.getView(R.id.ll1);
LinearLayout ll2 = baseViewHolder.getView(R.id.ll2);
TextView expandButton = baseViewHolder.getView(R.id.expand_button);
ImageView ivUp = baseViewHolder.getView(R.id.iv_up);
//展开收起按钮
baseViewHolder.getView(R.id.rl_up).setOnClickListener(v -> {
// 处理展开收起点击事件 切换展开收起状态
boolean isExpanded = dataBean.isExpanded();
if (!isExpanded) {
// 收起
ivUp.setRotation(180);
expandButton.setText("收起");
ll1.setVisibility(View.VISIBLE);
ll2.setVisibility(View.VISIBLE);
} else {
// 展开
ivUp.setRotation(0);
expandButton.setText("展开");
ll1.setVisibility(View.GONE);
ll2.setVisibility(View.GONE);
}
dataBean.setExpanded(!isExpanded);
});
//复制1按钮
baseViewHolder.getView(R.id.tv_batch_no).setOnClickListener(v -> {
if (mItemClickListener != null) {
mItemClickListener.onCopy1ItemClick(baseViewHolder.getAdapterPosition(), dataBean);
}
});
//复制2按钮
baseViewHolder.getView(R.id.tv_rfid_tag).setOnClickListener(v -> {
if (mItemClickListener != null) {
mItemClickListener.onCopy2ItemClick(baseViewHolder.getAdapterPosition(), dataBean);
}
});
}
public interface OnItemClickListener {
void onCopy1ItemClick(int position, WmsInventoryTaskDetail item);
void onCopy2ItemClick(int position, WmsInventoryTaskDetail item);
}
private OnItemClickListener mItemClickListener;
public void setOnItemClickListener(OnItemClickListener mItemClickListener) {
this.mItemClickListener = mItemClickListener;
}
}
\ No newline at end of file
package com.sxyz.rfid.widgets;
import android.app.Dialog;
import android.content.Context;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.sxyz.rfid.R;
import com.sxyz.rfid.presenter.model.OutboundFridModel;
import java.util.List;
/**
* @Description: 提示弹窗
* @Author: chunyuan.wu
* @CreateDate: 2025/12/31 16:39
* @Version: 1.0
*/
public class TipsDialog extends Dialog {
private Context mContext;
private Display display;
public TipsDialog(@NonNull Context context) {
super(context);
mContext = context;
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
display = windowManager.getDefaultDisplay();
}
public TipsDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
mContext = context;
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
display = windowManager.getDefaultDisplay();
}
protected TipsDialog(@NonNull Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
mContext = context;
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
display = windowManager.getDefaultDisplay();
}
DialogAdapter adapter;
/**
* 基本列表弹窗
*
* @param datas 内容
* @param dialogListener 位置回调
*/
public void init(int viewId, String msg) {
View v = LayoutInflater.from(mContext).inflate(viewId, null);
this.setContentView(v);
this.setCancelable(false);
LinearLayout lLayout_bg = v.findViewById(R.id.lLayout_bg);
// 调整dialog背景大小
lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display.getWidth() * 0.3), (int) (display.getHeight() * 0.5)));
//设置弹窗内容
TextView txt_msg = v.findViewById(R.id.txt_msg);
txt_msg.setText(msg);
//窗口位置
setWindow(getWindow());
}
//添加数据
public void addData(List<OutboundFridModel.RowsBean> datas) {
adapter.addData(datas);
}
/**
* 设置窗口位置
*/
private void setWindow(Window wd) {
if (wd == null) {
return;
}
WindowManager.LayoutParams params = wd.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
wd.setAttributes(params);
wd.setGravity(Gravity.BOTTOM);
}
/**
* 设置动画
*/
public void setAnim(int styleId) {
Window w = getWindow();
if (w == null) {
return;
}
w.setWindowAnimations(styleId);
}
/**
* 设置位置
*/
public void setPosition(int position) {
Window w = getWindow();
if (w == null) {
return;
}
w.setGravity(position);
}
}
...@@ -21,12 +21,24 @@ public class DaoMaster extends AbstractDaoMaster { ...@@ -21,12 +21,24 @@ public class DaoMaster extends AbstractDaoMaster {
/** Creates underlying database table using DAOs. */ /** Creates underlying database table using DAOs. */
public static void createAllTables(Database db, boolean ifNotExists) { public static void createAllTables(Database db, boolean ifNotExists) {
OutDao.createTable(db, ifNotExists); WmsAreaDao.createTable(db, ifNotExists);
WmsInventoryDao.createTable(db, ifNotExists);
WmsInventoryResultDao.createTable(db, ifNotExists);
WmsInventoryTaskDao.createTable(db, ifNotExists);
WmsInventoryTaskDetailDao.createTable(db, ifNotExists);
WmsLocationDao.createTable(db, ifNotExists);
WmsWarehouseDao.createTable(db, ifNotExists);
} }
/** Drops underlying database table using DAOs. */ /** Drops underlying database table using DAOs. */
public static void dropAllTables(Database db, boolean ifExists) { public static void dropAllTables(Database db, boolean ifExists) {
OutDao.dropTable(db, ifExists); WmsAreaDao.dropTable(db, ifExists);
WmsInventoryDao.dropTable(db, ifExists);
WmsInventoryResultDao.dropTable(db, ifExists);
WmsInventoryTaskDao.dropTable(db, ifExists);
WmsInventoryTaskDetailDao.dropTable(db, ifExists);
WmsLocationDao.dropTable(db, ifExists);
WmsWarehouseDao.dropTable(db, ifExists);
} }
/** /**
...@@ -45,7 +57,13 @@ public class DaoMaster extends AbstractDaoMaster { ...@@ -45,7 +57,13 @@ public class DaoMaster extends AbstractDaoMaster {
public DaoMaster(Database db) { public DaoMaster(Database db) {
super(db, SCHEMA_VERSION); super(db, SCHEMA_VERSION);
registerDaoClass(OutDao.class); registerDaoClass(WmsAreaDao.class);
registerDaoClass(WmsInventoryDao.class);
registerDaoClass(WmsInventoryResultDao.class);
registerDaoClass(WmsInventoryTaskDao.class);
registerDaoClass(WmsInventoryTaskDetailDao.class);
registerDaoClass(WmsLocationDao.class);
registerDaoClass(WmsWarehouseDao.class);
} }
public DaoSession newSession() { public DaoSession newSession() {
......
...@@ -8,9 +8,21 @@ import org.greenrobot.greendao.database.Database; ...@@ -8,9 +8,21 @@ import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.identityscope.IdentityScopeType; import org.greenrobot.greendao.identityscope.IdentityScopeType;
import org.greenrobot.greendao.internal.DaoConfig; import org.greenrobot.greendao.internal.DaoConfig;
import com.sxyz.rfid.greendao.model.Out; import com.sxyz.rfid.greendao.model.WmsArea;
import com.sxyz.rfid.greendao.model.WmsInventory;
import com.sxyz.rfid.greendao.model.WmsInventoryResult;
import com.sxyz.rfid.greendao.model.WmsInventoryTask;
import com.sxyz.rfid.greendao.model.WmsInventoryTaskDetail;
import com.sxyz.rfid.greendao.model.WmsLocation;
import com.sxyz.rfid.greendao.model.WmsWarehouse;
import sql.com.yz.db.OutDao; import sql.com.yz.db.WmsAreaDao;
import sql.com.yz.db.WmsInventoryDao;
import sql.com.yz.db.WmsInventoryResultDao;
import sql.com.yz.db.WmsInventoryTaskDao;
import sql.com.yz.db.WmsInventoryTaskDetailDao;
import sql.com.yz.db.WmsLocationDao;
import sql.com.yz.db.WmsWarehouseDao;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
...@@ -21,28 +33,100 @@ import sql.com.yz.db.OutDao; ...@@ -21,28 +33,100 @@ import sql.com.yz.db.OutDao;
*/ */
public class DaoSession extends AbstractDaoSession { public class DaoSession extends AbstractDaoSession {
private final DaoConfig outDaoConfig; private final DaoConfig wmsAreaDaoConfig;
private final DaoConfig wmsInventoryDaoConfig;
private final DaoConfig wmsInventoryResultDaoConfig;
private final DaoConfig wmsInventoryTaskDaoConfig;
private final DaoConfig wmsInventoryTaskDetailDaoConfig;
private final DaoConfig wmsLocationDaoConfig;
private final DaoConfig wmsWarehouseDaoConfig;
private final OutDao outDao; private final WmsAreaDao wmsAreaDao;
private final WmsInventoryDao wmsInventoryDao;
private final WmsInventoryResultDao wmsInventoryResultDao;
private final WmsInventoryTaskDao wmsInventoryTaskDao;
private final WmsInventoryTaskDetailDao wmsInventoryTaskDetailDao;
private final WmsLocationDao wmsLocationDao;
private final WmsWarehouseDao wmsWarehouseDao;
public DaoSession(Database db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig> public DaoSession(Database db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig>
daoConfigMap) { daoConfigMap) {
super(db); super(db);
outDaoConfig = daoConfigMap.get(OutDao.class).clone(); wmsAreaDaoConfig = daoConfigMap.get(WmsAreaDao.class).clone();
outDaoConfig.initIdentityScope(type); wmsAreaDaoConfig.initIdentityScope(type);
outDao = new OutDao(outDaoConfig, this); wmsInventoryDaoConfig = daoConfigMap.get(WmsInventoryDao.class).clone();
wmsInventoryDaoConfig.initIdentityScope(type);
registerDao(Out.class, outDao); wmsInventoryResultDaoConfig = daoConfigMap.get(WmsInventoryResultDao.class).clone();
wmsInventoryResultDaoConfig.initIdentityScope(type);
wmsInventoryTaskDaoConfig = daoConfigMap.get(WmsInventoryTaskDao.class).clone();
wmsInventoryTaskDaoConfig.initIdentityScope(type);
wmsInventoryTaskDetailDaoConfig = daoConfigMap.get(WmsInventoryTaskDetailDao.class).clone();
wmsInventoryTaskDetailDaoConfig.initIdentityScope(type);
wmsLocationDaoConfig = daoConfigMap.get(WmsLocationDao.class).clone();
wmsLocationDaoConfig.initIdentityScope(type);
wmsWarehouseDaoConfig = daoConfigMap.get(WmsWarehouseDao.class).clone();
wmsWarehouseDaoConfig.initIdentityScope(type);
wmsAreaDao = new WmsAreaDao(wmsAreaDaoConfig, this);
wmsInventoryDao = new WmsInventoryDao(wmsInventoryDaoConfig, this);
wmsInventoryResultDao = new WmsInventoryResultDao(wmsInventoryResultDaoConfig, this);
wmsInventoryTaskDao = new WmsInventoryTaskDao(wmsInventoryTaskDaoConfig, this);
wmsInventoryTaskDetailDao = new WmsInventoryTaskDetailDao(wmsInventoryTaskDetailDaoConfig, this);
wmsLocationDao = new WmsLocationDao(wmsLocationDaoConfig, this);
wmsWarehouseDao = new WmsWarehouseDao(wmsWarehouseDaoConfig, this);
registerDao(WmsArea.class, wmsAreaDao);
registerDao(WmsInventory.class, wmsInventoryDao);
registerDao(WmsInventoryResult.class, wmsInventoryResultDao);
registerDao(WmsInventoryTask.class, wmsInventoryTaskDao);
registerDao(WmsInventoryTaskDetail.class, wmsInventoryTaskDetailDao);
registerDao(WmsLocation.class, wmsLocationDao);
registerDao(WmsWarehouse.class, wmsWarehouseDao);
} }
public void clear() { public void clear() {
outDaoConfig.clearIdentityScope(); wmsAreaDaoConfig.clearIdentityScope();
wmsInventoryDaoConfig.clearIdentityScope();
wmsInventoryResultDaoConfig.clearIdentityScope();
wmsInventoryTaskDaoConfig.clearIdentityScope();
wmsInventoryTaskDetailDaoConfig.clearIdentityScope();
wmsLocationDaoConfig.clearIdentityScope();
wmsWarehouseDaoConfig.clearIdentityScope();
}
public WmsAreaDao getWmsAreaDao() {
return wmsAreaDao;
}
public WmsInventoryDao getWmsInventoryDao() {
return wmsInventoryDao;
}
public WmsInventoryResultDao getWmsInventoryResultDao() {
return wmsInventoryResultDao;
}
public WmsInventoryTaskDao getWmsInventoryTaskDao() {
return wmsInventoryTaskDao;
}
public WmsInventoryTaskDetailDao getWmsInventoryTaskDetailDao() {
return wmsInventoryTaskDetailDao;
}
public WmsLocationDao getWmsLocationDao() {
return wmsLocationDao;
} }
public OutDao getOutDao() { public WmsWarehouseDao getWmsWarehouseDao() {
return outDao; return wmsWarehouseDao;
} }
} }
package sql.com.yz.db;
import android.database.Cursor;
import android.database.sqlite.SQLiteStatement;
import org.greenrobot.greendao.AbstractDao;
import org.greenrobot.greendao.Property;
import org.greenrobot.greendao.internal.DaoConfig;
import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.database.DatabaseStatement;
import com.sxyz.rfid.greendao.model.Out;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
/**
* DAO for table "OUT".
*/
public class OutDao extends AbstractDao<Out, Long> {
public static final String TABLENAME = "OUT";
/**
* Properties of entity Out.<br/>
* Can be used for QueryBuilder and for referencing column names.
*/
public static class Properties {
public final static Property Id = new Property(0, Long.class, "id", true, "_id");
public final static Property Name = new Property(1, String.class, "name", false, "NAME");
public final static Property Type = new Property(2, String.class, "type", false, "TYPE");
}
public OutDao(DaoConfig config) {
super(config);
}
public OutDao(DaoConfig config, DaoSession daoSession) {
super(config, daoSession);
}
/** Creates the underlying database table. */
public static void createTable(Database db, boolean ifNotExists) {
String constraint = ifNotExists? "IF NOT EXISTS ": "";
db.execSQL("CREATE TABLE " + constraint + "\"OUT\" (" + //
"\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id
"\"NAME\" TEXT," + // 1: name
"\"TYPE\" TEXT);"); // 2: type
}
/** Drops the underlying database table. */
public static void dropTable(Database db, boolean ifExists) {
String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"OUT\"";
db.execSQL(sql);
}
@Override
protected final void bindValues(DatabaseStatement stmt, Out entity) {
stmt.clearBindings();
Long id = entity.getId();
if (id != null) {
stmt.bindLong(1, id);
}
String name = entity.getName();
if (name != null) {
stmt.bindString(2, name);
}
String type = entity.getType();
if (type != null) {
stmt.bindString(3, type);
}
}
@Override
protected final void bindValues(SQLiteStatement stmt, Out entity) {
stmt.clearBindings();
Long id = entity.getId();
if (id != null) {
stmt.bindLong(1, id);
}
String name = entity.getName();
if (name != null) {
stmt.bindString(2, name);
}
String type = entity.getType();
if (type != null) {
stmt.bindString(3, type);
}
}
@Override
public Long readKey(Cursor cursor, int offset) {
return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
}
@Override
public Out readEntity(Cursor cursor, int offset) {
Out entity = new Out( //
cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // name
cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2) // type
);
return entity;
}
@Override
public void readEntity(Cursor cursor, Out entity, int offset) {
entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
entity.setName(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1));
entity.setType(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2));
}
@Override
protected final Long updateKeyAfterInsert(Out entity, long rowId) {
entity.setId(rowId);
return rowId;
}
@Override
public Long getKey(Out entity) {
if(entity != null) {
return entity.getId();
} else {
return null;
}
}
@Override
public boolean hasKey(Out entity) {
return entity.getId() != null;
}
@Override
protected final boolean isEntityUpdateable() {
return true;
}
}
...@@ -156,6 +156,18 @@ ...@@ -156,6 +156,18 @@
android:textSize="16sp" android:textSize="16sp"
android:textStyle="bold" /> android:textStyle="bold" />
<Button
android:id="@+id/tvOffline"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:background="@drawable/gray_bg"
android:gravity="center"
android:text="离线盘点"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/MatchWrap.Vertical"> style="@style/MatchMatch.Vertical">
<include layout="@layout/toolbar_title_text" /> <include layout="@layout/toolbar_title_text" />
<ScrollView <androidx.core.widget.NestedScrollView
android:layout_width="match_parent" style="@style/MatchMatch"
android:layout_height="0dp"
android:layout_weight="1"> android:layout_weight="1">
<LinearLayout <LinearLayout
...@@ -226,9 +225,31 @@ ...@@ -226,9 +225,31 @@
android:background="@color/purple_200" /> android:background="@color/purple_200" />
</LinearLayout> </LinearLayout>
<RelativeLayout style="@style/MatchMatch">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_outbound_details" android:id="@+id/rv_outbound_details"
style="@style/RecyclerViewStyleMatchWrap" /> style="@style/RecyclerViewStyleMatchWrap" />
<LinearLayout
style="@style/WrapWrap.Vertical"
android:layout_centerInParent="true"
android:layout_marginTop="100dp"
android:gravity="center_horizontal">
<!--暂无数据-->
<include
android:id="@+id/included_nothing"
layout="@layout/include_nothing_layout" />
<!--暂无数据-->
<include
android:id="@+id/included_no_db"
layout="@layout/include_no_db_layout" />
</LinearLayout>
</RelativeLayout>
</LinearLayout> </LinearLayout>
</ScrollView> </androidx.core.widget.NestedScrollView>
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/MatchMatch.Vertical">
<include layout="@layout/toolbar_title_text" />
<RelativeLayout style="@style/MatchWrap.Horizontal">
<!-- 背景EditText -->
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/search_et_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="5dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:background="@drawable/white_bg"
android:drawableStart="@drawable/search_icon"
android:drawablePadding="10dp"
android:hint="请输入任务编号"
android:imeOptions="actionSearch"
android:inputType="text"
android:paddingVertical="10dp"
android:paddingStart="10dp"
android:paddingEnd="50dp"
android:textSize="14sp" />
<!-- 覆盖在EditText上的ImageView -->
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@id/search_et_input"
android:layout_centerVertical="true"
android:layout_marginEnd="10dp"
android:background="?actionBarItemBackground"
android:elevation="11dp"
android:padding="10dp"
android:src="@drawable/login_clear_icon"
android:visibility="gone" />
</RelativeLayout>
<RelativeLayout style="@style/MatchMatch">
<com.sxyz.rfid.widgets.AbsSwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
style="@style/MatchMatch">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
style="@style/RecyclerViewStyleMatchMatch1"
android:background="@color/c_f5f5" />
</com.sxyz.rfid.widgets.AbsSwipeRefreshLayout>
<LinearLayout
style="@style/WrapWrap.Vertical"
android:layout_centerInParent="true"
android:gravity="center_horizontal">
<!--暂无数据-->
<include
android:id="@+id/included_nothing"
layout="@layout/include_nothing_layout" />
<!--暂无数据-->
<include
android:id="@+id/included_no_db"
layout="@layout/include_no_db_layout" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lLayout_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/alert_bg"
android:orientation="vertical">
<TextView
android:id="@+id/txt_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="1111" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_no_db"
style="@style/WrapWrap.Vertical"
android:layout_centerInParent="true"
android:gravity="center"
android:visibility="visible">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/no_db" />
<TextView
android:id="@+id/tv_no_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="数据库wms_data.db文件不存在,\n请连接电脑同步数据库文件"
android:textColor="@color/c_999"
android:textSize="14sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
\ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
style="@style/WrapWrap.Vertical" style="@style/WrapWrap.Vertical"
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:gravity="center" android:gravity="center"
android:visibility="visible"> android:visibility="gone">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:layout_width="100dp" android:layout_width="100dp"
...@@ -19,4 +19,5 @@ ...@@ -19,4 +19,5 @@
android:text="暂无出库数据" android:text="暂无出库数据"
android:textColor="@color/c_999" android:textColor="@color/c_999"
android:textSize="14sp" /> android:textSize="14sp" />
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@style/MatchWrap"
android:layout_marginStart="5dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="5dp"
android:layout_marginBottom="5dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="5dp"
app:cardElevation="1dp"
app:cardUseCompatPadding="true">
<RelativeLayout style="@style/MatchWrap">
<View
android:layout_width="5dp"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/ll"
android:layout_alignBottom="@+id/ll"
android:background="@color/purple_200" />
<LinearLayout
android:id="@+id/ll"
style="@style/MatchWrap.Vertical"
android:paddingVertical="10dp"
android:paddingStart="15dp"
android:paddingEnd="10dp">
<!-- 任务编号 状态 -->
<RelativeLayout style="@style/MatchWrap">
<TextView
android:id="@+id/tv_task_no"
style="@style/WrapWrap"
android:text="-"
android:textColor="@color/purple_200"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_task_status"
style="@style/WrapWrap"
android:layout_alignParentEnd="true"
android:layout_gravity="end"
android:background="@drawable/status_green_bg"
android:paddingHorizontal="10dp"
android:paddingVertical="2dp"
android:text="-"
android:textColor="@color/purple_200"
android:textSize="12sp" />
</RelativeLayout>
<!--横线-->
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="@color/c_f5f5" />
<TextView
android:id="@+id/tv_task_name"
style="@style/WrapWrap"
android:text="-"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold" />
<LinearLayout
style="@style/MatchWrap.Horizontal"
android:layout_marginBottom="5dp"
android:paddingTop="5dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical">
<!-- 仓库 -->
<TextView
style="@style/WrapWrap"
android:text="仓库"
android:textColor="@color/c_6666"
android:textSize="12sp" />
<TextView
android:id="@+id/txt_warehouse_name"
style="@style/text_black14_ww"
android:text="-"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<!-- 已盘数 -->
<TextView
style="@style/WrapWrap"
android:layout_marginTop="5dp"
android:text="已盘数"
android:textColor="@color/c_6666"
android:textSize="12sp" />
<TextView
android:id="@+id/txt_review_number"
style="@style/text_black14_ww"
android:text="0"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<!-- 数量/金额 -->
<TextView
style="@style/WrapWrap"
android:layout_marginTop="5dp"
android:text="总盘点数"
android:textColor="@color/c_6666"
android:textSize="12sp" />
<TextView
android:id="@+id/txt_total_number"
style="@style/text_black14_ww"
android:text="0"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<!-- 操作按钮 -->
<LinearLayout
style="@style/MatchWrap.Horizontal"
android:paddingTop="8dp">
<TextView
android:id="@+id/detail_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/gray_bg"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="详情"
android:textColor="@color/purple_200" />
<TextView
android:id="@+id/review_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
android:layout_weight="1"
android:background="@drawable/green_bg"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="执行盘点"
android:textColor="@color/white" />
<TextView
android:id="@+id/stop_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp"
android:layout_weight="1"
android:background="@drawable/red_bg4"
android:gravity="center"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="结束盘点"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</androidx.cardview.widget.CardView>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment