Commit 888e7960 by youguoqing

调整:适配UHF_U8设备

parent c77517a7
...@@ -13,7 +13,7 @@ android { ...@@ -13,7 +13,7 @@ android {
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 28 targetSdkVersion 28
versionCode 1 versionCode 1
versionName "1.1" versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true multiDexEnabled true
} }
...@@ -38,14 +38,16 @@ dependencies { ...@@ -38,14 +38,16 @@ dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.multidex:multidex:2.0.1' implementation 'androidx.multidex:multidex:2.0.1'
implementation "androidx.room:room-runtime:2.2.3" implementation "androidx.room:room-runtime:2.2.3"
annotationProcessor "androidx.room:room-compiler:2.2.3" implementation 'cn.hutool:hutool-all:5.7.19'
implementation 'com.github.bumptech.glide:glide:3.7.0' implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'com.google.code.gson:gson:2.8.9' implementation 'com.google.code.gson:gson:2.8.9'
implementation 'org.bouncycastle:bcprov-jdk15on:1.68'
implementation 'com.squareup.okhttp3:okhttp:3.14.2' implementation 'com.squareup.okhttp3:okhttp:3.14.2'
implementation 'com.squareup.okio:okio:1.17.4' implementation 'com.squareup.okio:okio:1.17.4'
implementation 'com.tencent.bugly:crashreport:3.4.4' implementation 'com.tencent.bugly:crashreport:3.4.4'
implementation 'me.jessyan:autosize:1.1.2' implementation 'me.jessyan:autosize:1.1.2'
implementation (name: 'fn_U8', ext: 'aar') implementation (name: 'fn_U8', ext: 'aar')
annotationProcessor "androidx.room:room-compiler:2.2.3"
testImplementation 'junit:junit:4.12' testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
......
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
...@@ -35,9 +35,10 @@ ...@@ -35,9 +35,10 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".page.MainActivity" android:screenOrientation="portrait" /> <activity android:name=".page.MainActivity" android:screenOrientation="portrait" />
<activity android:name=".page.TaskListActivity" android:screenOrientation="portrait" />
<activity android:name=".page.CheckTaskActivity" android:screenOrientation="portrait" /> <activity android:name=".page.CheckTaskActivity" android:screenOrientation="portrait" />
<activity android:name=".page.TaskInfoActivity" android:screenOrientation="portrait" /> <activity android:name=".page.TaskInfoActivity" android:screenOrientation="portrait" />
<activity android:name=".page.SetAndSaveActivity" android:screenOrientation="portrait" /> <!-- <activity android:name=".page.SetAndSaveActivity" android:screenOrientation="portrait" />-->
<activity android:name=".page.InventoryActivity" android:screenOrientation="portrait" /> <activity android:name=".page.InventoryActivity" android:screenOrientation="portrait" />
<activity android:name=".page.LoginActivity" android:screenOrientation="portrait" /> <activity android:name=".page.LoginActivity" android:screenOrientation="portrait" />
<activity android:name=".page.DeviceSetActivity" android:screenOrientation="portrait" /> <activity android:name=".page.DeviceSetActivity" android:screenOrientation="portrait" />
......
...@@ -44,4 +44,9 @@ public interface IUSeries { ...@@ -44,4 +44,9 @@ public interface IUSeries {
*/ */
boolean setParams(String paraName, String paraValue); boolean setParams(String paraName, String paraValue);
/**
* 获取盘点效率
*/
int getReadRate();
} }
...@@ -98,12 +98,12 @@ public class M11U8Service implements IUSeries{ ...@@ -98,12 +98,12 @@ public class M11U8Service implements IUSeries{
if (paraName.equals(PARA_POWER)) { if (paraName.equals(PARA_POWER)) {
ReturnBean returnBean = readerSeries.getPower(); ReturnBean returnBean = readerSeries.getPower();
if (returnBean.isSuccess()) { if (returnBean.isSuccess()) {
returnBean.getMsg(); return returnBean.getMsg();
} }
} else if (paraName.equals(TEMPERATURE)) { } else if (paraName.equals(TEMPERATURE)) {
ReturnBean returnBean = readerSeries.getReaderTemperature(); ReturnBean returnBean = readerSeries.getReaderTemperature();
if (returnBean.isSuccess()) { if (returnBean.isSuccess()) {
returnBean.getMsg(); return returnBean.getMsg();
} }
} else if (paraName.equals(SESSIONSTATE)) { } else if (paraName.equals(SESSIONSTATE)) {
return U8Property.getSessionState() + ""; return U8Property.getSessionState() + "";
...@@ -128,4 +128,8 @@ public class M11U8Service implements IUSeries{ ...@@ -128,4 +128,8 @@ public class M11U8Service implements IUSeries{
return false; return false;
} }
@Override
public int getReadRate() {
return readerSeries.getM_curInventoryBuffer().nReadRate;
}
} }
...@@ -19,7 +19,6 @@ import com.fn.useries.reader.HEAD; ...@@ -19,7 +19,6 @@ import com.fn.useries.reader.HEAD;
import com.fn.useries.reader.MessageTran; import com.fn.useries.reader.MessageTran;
import com.fn.useries.utils.StringTool; import com.fn.useries.utils.StringTool;
import com.fn.useries.utils.Tools; import com.fn.useries.utils.Tools;
import com.fntech.Loger;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
...@@ -94,14 +93,11 @@ public abstract class ReaderBase { ...@@ -94,14 +93,11 @@ public abstract class ReaderBase {
while (mShouldRunning) { while (mShouldRunning) {
try { try {
Log.i("yourTag", "start Read"); Log.i("yourTag", "start Read");
Loger.disk_log("Read", "start Read", "U8");
int nLenRead = mInStream.read(buff); int nLenRead = mInStream.read(buff);
Loger.disk_log("Read Count", "nLenRead == "+nLenRead, "U8");
if (nLenRead <= 0) { if (nLenRead <= 0) {
continue; continue;
} }
Log.i("yourTag", "串口原始返回 ===>" + Tools.Bytes2HexString(buff, nLenRead)); Log.i("yourTag", "串口原始返回 ===>" + Tools.Bytes2HexString(buff, nLenRead));
Loger.disk_log("Read", "串口原始返回 ===>" + Tools.Bytes2HexString(buff, nLenRead), "U8");
if (nLenRead > 0) { if (nLenRead > 0) {
System.arraycopy(buff, 0, btAryBuffer, len_have, nLenRead); System.arraycopy(buff, 0, btAryBuffer, len_have, nLenRead);
len_have += nLenRead; len_have += nLenRead;
...@@ -129,7 +125,6 @@ public abstract class ReaderBase { ...@@ -129,7 +125,6 @@ public abstract class ReaderBase {
} }
} else { } else {
Log.e("toolsdebug", "异常情况!协议头错误"); Log.e("toolsdebug", "异常情况!协议头错误");
Loger.disk_log("Read", "异常情况!协议头错误", "M10_U8");
/*btAryBuffer = new byte[4096]; /*btAryBuffer = new byte[4096];
buff = new byte[512];*/ buff = new byte[512];*/
len_have = 0; len_have = 0;
...@@ -142,7 +137,6 @@ public abstract class ReaderBase { ...@@ -142,7 +137,6 @@ public abstract class ReaderBase {
} }
} catch (Exception e) { } catch (Exception e) {
Log.e("toolsdebug", "读错误"); Log.e("toolsdebug", "读错误");
Loger.disk_log("读错误", "e=" + e.toString() + "\r\n" + e.getStackTrace(), "M10_U8");
onLostConnect(); onLostConnect();
return; return;
} }
...@@ -278,17 +272,11 @@ public abstract class ReaderBase { ...@@ -278,17 +272,11 @@ public abstract class ReaderBase {
synchronized (mOutStream) { // 防止并发 synchronized (mOutStream) { // 防止并发
mOutStream.write(btArySenderData); mOutStream.write(btArySenderData);
Log.e("yourTag", " 串口发送 ===> " + Tools.Bytes2HexString(btArySenderData, btArySenderData.length)); Log.e("yourTag", " 串口发送 ===> " + Tools.Bytes2HexString(btArySenderData, btArySenderData.length));
Loger.disk_log("Write",
StringTool.byteArrayToString(btArySenderData, 0,
btArySenderData.length), "U8");
} }
} catch (IOException e) { } catch (IOException e) {
Loger.disk_log("写错误", "e=" + e.getMessage() + "\r\n" + e.getStackTrace(), "M10_U8");
onLostConnect(); onLostConnect();
return -1; return -1;
} catch (Exception e) { } catch (Exception e) {
Loger.disk_log("写错误", "e=" + e.getMessage() + "\r\n" + e.getStackTrace(), "M10_U8");
return -1; return -1;
} }
...@@ -683,7 +671,7 @@ public abstract class ReaderBase { ...@@ -683,7 +671,7 @@ public abstract class ReaderBase {
* 读写器地址(0xFF公用地址) * 读写器地址(0xFF公用地址)
* @param btAryPassWord * @param btAryPassWord
* 标签访问密码,4字节 * 标签访问密码,4字节
* @param btMembank * @param btMemBank
* 操作的数据区域(0x01:User Memory, 0x02:TID Memory, 0x03:EPC Memory, * 操作的数据区域(0x01:User Memory, 0x02:TID Memory, 0x03:EPC Memory,
* 0x04:Access Password, 0x05:Kill Password) * 0x04:Access Password, 0x05:Kill Password)
* @param btLockType * @param btLockType
...@@ -953,7 +941,7 @@ public abstract class ReaderBase { ...@@ -953,7 +941,7 @@ public abstract class ReaderBase {
/** /**
* 发送裸数据。 * 发送裸数据。
* *
* @param btReadId * @param btAryBuf
* 读写器地址(0xFF公用地址) * 读写器地址(0xFF公用地址)
* @return 成功 :0, 失败:-1 * @return 成功 :0, 失败:-1
*/ */
......
...@@ -204,17 +204,17 @@ public class ReaderHelper { ...@@ -204,17 +204,17 @@ public class ReaderHelper {
private void refreshReaderSetting(byte btCmd, ReaderSetting curReaderSetting) { private void refreshReaderSetting(byte btCmd, ReaderSetting curReaderSetting) {
Intent itent = new Intent(BROADCAST_REFRESH_READER_SETTING); Intent itent = new Intent(BROADCAST_REFRESH_READER_SETTING);
itent.putExtra("cmd", btCmd); itent.putExtra("cmd", btCmd);
settingNotify(); // settingNotify();
mLocalBroadcastManager.sendBroadcast(itent); mLocalBroadcastManager.sendBroadcast(itent);
} }
private void settingNotify() { // private void settingNotify() {
Object object = U8Series.object; // Object object = U8Series.object;
synchronized (object) { // synchronized (object) {
U8Series.havenotify = true; // U8Series.havenotify = true;
object.notifyAll(); // object.notifyAll();
} // }
}; // };
/** /**
* 存盘标签(缓存模式),标签数据刷新。 * 存盘标签(缓存模式),标签数据刷新。
...@@ -453,18 +453,18 @@ public class ReaderHelper { ...@@ -453,18 +453,18 @@ public class ReaderHelper {
case CMD.INVENTORY: case CMD.INVENTORY:
processInventory(msgTran); processInventory(msgTran);
break; break;
case CMD.READ_TAG: // case CMD.READ_TAG:
processReadTag(msgTran); // processReadTag(msgTran);
break; // break;
case CMD.WRITE_TAG: // case CMD.WRITE_TAG:
processWriteTag(msgTran); // processWriteTag(msgTran);
break; // break;
case CMD.LOCK_TAG: // case CMD.LOCK_TAG:
processLockTag(msgTran); // processLockTag(msgTran);
break; // break;
case CMD.KILL_TAG: // case CMD.KILL_TAG:
processKillTag(msgTran); // processKillTag(msgTran);
break; // break;
case CMD.SET_ACCESS_EPC_MATCH: case CMD.SET_ACCESS_EPC_MATCH:
processSetAccessEpcMatch(msgTran); processSetAccessEpcMatch(msgTran);
break; break;
...@@ -522,7 +522,7 @@ public class ReaderHelper { ...@@ -522,7 +522,7 @@ public class ReaderHelper {
m_curReaderSetting.btReadId = msgTran.getReadId(); m_curReaderSetting.btReadId = msgTran.getReadId();
m_curReaderSetting.blnSetResult = true; m_curReaderSetting.blnSetResult = true;
writeLog(strCmd, ERROR.SUCCESS); writeLog(strCmd, ERROR.SUCCESS);
settingNotify(); // settingNotify();
return; return;
} else { } else {
strErrorCode = ERROR.format(btAryData[0]); strErrorCode = ERROR.format(btAryData[0]);
...@@ -534,7 +534,7 @@ public class ReaderHelper { ...@@ -534,7 +534,7 @@ public class ReaderHelper {
m_curReaderSetting.blnSetResult = false; m_curReaderSetting.blnSetResult = false;
m_curReaderSetting.strErrorCode = strErrorCode; m_curReaderSetting.strErrorCode = strErrorCode;
} }
settingNotify(); // settingNotify();
String strLog = strCmd + "失败,失败原因: " + strErrorCode; String strLog = strCmd + "失败,失败原因: " + strErrorCode;
writeLog(strLog, ERROR.FAIL); writeLog(strLog, ERROR.FAIL);
} }
...@@ -653,7 +653,7 @@ public class ReaderHelper { ...@@ -653,7 +653,7 @@ public class ReaderHelper {
return; return;
} else { } else {
Log.i("toolsdebug", "processGetOutputPower22222222222"); Log.i("toolsdebug", "processGetOutputPower22222222222");
settingNotify(); // settingNotify();
strErrorCode = "未知错误"; strErrorCode = "未知错误";
} }
...@@ -717,16 +717,16 @@ public class ReaderHelper { ...@@ -717,16 +717,16 @@ public class ReaderHelper {
refreshReaderSetting(btCmd, m_curReaderSetting); refreshReaderSetting(btCmd, m_curReaderSetting);
writeLog(strCmd, ERROR.SUCCESS); writeLog(strCmd, ERROR.SUCCESS);
settingNotify(); // settingNotify();
return; return;
} else if (btAryData.length == 0x01) { } else if (btAryData.length == 0x01) {
Log.i("toolsdebug", "processGetReaderTemperature22"); Log.i("toolsdebug", "processGetReaderTemperature22");
strErrorCode = ERROR.format(btAryData[0]); strErrorCode = ERROR.format(btAryData[0]);
settingNotify(); // settingNotify();
} else { } else {
Log.i("toolsdebug", "processGetReaderTemperature33"); Log.i("toolsdebug", "processGetReaderTemperature33");
strErrorCode = "未知错误"; strErrorCode = "未知错误";
settingNotify(); // settingNotify();
} }
String strLog = strCmd + "失败,失败原因: " + strErrorCode; String strLog = strCmd + "失败,失败原因: " + strErrorCode;
...@@ -904,150 +904,150 @@ public class ReaderHelper { ...@@ -904,150 +904,150 @@ public class ReaderHelper {
runLoopInventroy(); runLoopInventroy();
} }
private void processReadTag(MessageTran msgTran) { // private void processReadTag(MessageTran msgTran) {
byte btCmd = msgTran.getCmd(); // byte btCmd = msgTran.getCmd();
byte[] btAryData = msgTran.getAryData(); // byte[] btAryData = msgTran.getAryData();
String strCmd = CMD.format(btCmd); // String strCmd = CMD.format(btCmd);
String strErrorCode = ""; // String strErrorCode = "";
Object object = U8Series.readObject; // Object object = U8Series.readObject;
Intent itent = new Intent(BROADCAST_REFRESH_OPERATE_TAG); // Intent itent = new Intent(BROADCAST_REFRESH_OPERATE_TAG);
if (btAryData.length == 0x01) { // if (btAryData.length == 0x01) {
strErrorCode = ERROR.format(btAryData[0]); // strErrorCode = ERROR.format(btAryData[0]);
String strLog = strCmd + "失败,失败原因: " + strErrorCode; // String strLog = strCmd + "失败,失败原因: " + strErrorCode;
synchronized (object) { // synchronized (object) {
U8Series.getInstance().readDataString = null; // U8Series.getInstance().readDataString = null;
U8Series.errorData = strLog; // U8Series.errorData = strLog;
object.notifyAll(); // object.notifyAll();
} // }
// BROADCAST_REFRESH_OPERATE_TAG // // BROADCAST_REFRESH_OPERATE_TAG
itent.putExtra("cmd", msgTran.getCmd()); // itent.putExtra("cmd", msgTran.getCmd());
itent.putExtra("type", ERROR.FAIL); // itent.putExtra("type", ERROR.FAIL);
itent.putExtra("msg", strLog); // itent.putExtra("msg", strLog);
// 使用新接口后广播依然发送,但接收器内无逻辑 // // 使用新接口后广播依然发送,但接收器内无逻辑
mLocalBroadcastManager.sendBroadcast(itent); // mLocalBroadcastManager.sendBroadcast(itent);
// writeLog(strLog, ERROR.FAIL); // // writeLog(strLog, ERROR.FAIL);
} else { // } else {
int nLen = btAryData.length; // int nLen = btAryData.length;
int nDataLen = (btAryData[nLen - 3] & 0xFF); // int nDataLen = (btAryData[nLen - 3] & 0xFF);
int nEpcLen = (btAryData[2] & 0xFF) - nDataLen - 4; // int nEpcLen = (btAryData[2] & 0xFF) - nDataLen - 4;
//
String strPC = StringTool.byteArrayToString(btAryData, 3, 2); // String strPC = StringTool.byteArrayToString(btAryData, 3, 2);
String strEPC = StringTool.byteArrayToString(btAryData, 5, nEpcLen); // String strEPC = StringTool.byteArrayToString(btAryData, 5, nEpcLen);
String strCRC = StringTool.byteArrayToString(btAryData, 5 + nEpcLen, 2); // String strCRC = StringTool.byteArrayToString(btAryData, 5 + nEpcLen, 2);
String strData = StringTool.byteArrayToString(btAryData, 7 + nEpcLen, nDataLen); // String strData = StringTool.byteArrayToString(btAryData, 7 + nEpcLen, nDataLen);
//
byte btTemp = btAryData[nLen - 2]; // byte btTemp = btAryData[nLen - 2];
byte btAntId = (byte) ((btTemp & 0x03) + 1); // byte btAntId = (byte) ((btTemp & 0x03) + 1);
int nReadCount = btAryData[nLen - 1] & 0xFF; // int nReadCount = btAryData[nLen - 1] & 0xFF;
//
OperateTagMap tag = new OperateTagMap(); // OperateTagMap tag = new OperateTagMap();
tag.strPC = strPC; // tag.strPC = strPC;
tag.strCRC = strCRC; // tag.strCRC = strCRC;
tag.strEPC = strEPC; // tag.strEPC = strEPC;
tag.strData = strData; // tag.strData = strData;
tag.nDataLen = nDataLen; // tag.nDataLen = nDataLen;
tag.btAntId = btAntId; // tag.btAntId = btAntId;
tag.nReadCount = nReadCount; // tag.nReadCount = nReadCount;
m_curOperateTagBuffer.lsTagList.add(tag); // m_curOperateTagBuffer.lsTagList.add(tag);
// refreshOperateTag(btCmd, m_curOperateTagBuffer); // // refreshOperateTag(btCmd, m_curOperateTagBuffer);
//
synchronized (object) { // synchronized (object) {
U8Series.getInstance().readDataString = strData; // U8Series.getInstance().readDataString = strData;
//
Log.i("see", "notifyAll yes"); // Log.i("see", "notifyAll yes");
object.notifyAll(); // object.notifyAll();
} // }
itent.putExtra("cmd", msgTran.getCmd()); // itent.putExtra("cmd", msgTran.getCmd());
itent.putExtra("type", ERROR.SUCCESS); // itent.putExtra("type", ERROR.SUCCESS);
itent.putExtra("msg", strData); // itent.putExtra("msg", strData);
mLocalBroadcastManager.sendBroadcast(itent); // mLocalBroadcastManager.sendBroadcast(itent);
//
// writeLog(strCmd, ERROR.SUCCESS); // // writeLog(strCmd, ERROR.SUCCESS);
} // }
} // }
private void processWriteTag(MessageTran msgTran) {
byte btCmd = msgTran.getCmd();
byte[] btAryData = msgTran.getAryData();
String strCmd = CMD.format(btCmd);
String strErrorCode = "";
Intent itent = new Intent(BROADCAST_REFRESH_OPERATE_TAG);
if (btAryData.length == 0x01) {
strErrorCode = ERROR.format(btAryData[0]);
String strLog = strCmd + "失败,失败原因:" + strErrorCode;
synchronized (this) {
U8Series.operationTagResult = 1;
U8Series.errorData = strLog;
this.notifyAll();
}
itent.putExtra("cmd", msgTran.getCmd());
itent.putExtra("type", ERROR.FAIL);
itent.putExtra("msg", strLog);
mLocalBroadcastManager.sendBroadcast(itent);
// writeLog(strLog, ERROR.FAIL);
} else {
int nLen = btAryData.length;
int nEpcLen = (btAryData[2] & 0xFF) - 4;
if (btAryData[nLen - 3] != ERROR.SUCCESS) {
strErrorCode = ERROR.format(btAryData[nLen - 3]);
String strLog = strCmd + "失败,失败原因:" + strErrorCode;
synchronized (this) {
U8Series.operationTagResult = 1;
U8Series.errorData = strLog;
this.notifyAll();
}
itent.putExtra("cmd", msgTran.getCmd());
itent.putExtra("type", ERROR.FAIL);
itent.putExtra("msg", strLog);
mLocalBroadcastManager.sendBroadcast(itent);
// writeLog(strLog, ERROR.FAIL);
return;
}
String strPC = StringTool.byteArrayToString(btAryData, 3, 2);
String strEPC = StringTool.byteArrayToString(btAryData, 5, nEpcLen);
String strCRC = StringTool.byteArrayToString(btAryData, 5 + nEpcLen, 2);
String strData = "";
byte btTemp = btAryData[nLen - 2];
byte btAntId = (byte) ((btTemp & 0x03) + 1);
int nReadCount = btAryData[nLen - 1] & 0xFF;
OperateTagMap tag = new OperateTagMap();
tag.strPC = strPC;
tag.strCRC = strCRC;
tag.strEPC = strEPC;
tag.strData = strData;
tag.nDataLen = 0;
tag.btAntId = btAntId;
tag.nReadCount = nReadCount;
m_curOperateTagBuffer.lsTagList.add(tag);
synchronized (this) {
U8Series.operationTagResult = 0;
U8Series.errorData="success";
Log.i("toolsdebug", "3333");
this.notifyAll();
}
itent.putExtra("cmd", msgTran.getCmd()); // private void processWriteTag(MessageTran msgTran) {
itent.putExtra("type", ERROR.SUCCESS); // byte btCmd = msgTran.getCmd();
if (msgTran.getCmd() == CMD.WRITE_TAG) { // byte[] btAryData = msgTran.getAryData();
itent.putExtra("msg", "Write label success"); // String strCmd = CMD.format(btCmd);
} else if (msgTran.getCmd() == CMD.KILL_TAG) { // String strErrorCode = "";
itent.putExtra("msg", "Destruction of label success"); //
} else if (msgTran.getCmd() == CMD.LOCK_TAG) { // Intent itent = new Intent(BROADCAST_REFRESH_OPERATE_TAG);
itent.putExtra("msg", "Operation is successful!"); // if (btAryData.length == 0x01) {
} // strErrorCode = ERROR.format(btAryData[0]);
mLocalBroadcastManager.sendBroadcast(itent); // String strLog = strCmd + "失败,失败原因:" + strErrorCode;
// refreshOperateTag(btCmd, m_curOperateTagBuffer); //
// writeLog(strCmd, ERROR.SUCCESS); // synchronized (this) {
} // U8Series.operationTagResult = 1;
} // U8Series.errorData = strLog;
// this.notifyAll();
// }
//
// itent.putExtra("cmd", msgTran.getCmd());
// itent.putExtra("type", ERROR.FAIL);
// itent.putExtra("msg", strLog);
// mLocalBroadcastManager.sendBroadcast(itent);
// // writeLog(strLog, ERROR.FAIL);
// } else {
// int nLen = btAryData.length;
// int nEpcLen = (btAryData[2] & 0xFF) - 4;
//
// if (btAryData[nLen - 3] != ERROR.SUCCESS) {
// strErrorCode = ERROR.format(btAryData[nLen - 3]);
// String strLog = strCmd + "失败,失败原因:" + strErrorCode;
// synchronized (this) {
// U8Series.operationTagResult = 1;
// U8Series.errorData = strLog;
// this.notifyAll();
// }
//
// itent.putExtra("cmd", msgTran.getCmd());
// itent.putExtra("type", ERROR.FAIL);
// itent.putExtra("msg", strLog);
// mLocalBroadcastManager.sendBroadcast(itent);
// // writeLog(strLog, ERROR.FAIL);
// return;
// }
// String strPC = StringTool.byteArrayToString(btAryData, 3, 2);
// String strEPC = StringTool.byteArrayToString(btAryData, 5, nEpcLen);
// String strCRC = StringTool.byteArrayToString(btAryData, 5 + nEpcLen, 2);
// String strData = "";
//
// byte btTemp = btAryData[nLen - 2];
// byte btAntId = (byte) ((btTemp & 0x03) + 1);
// int nReadCount = btAryData[nLen - 1] & 0xFF;
//
// OperateTagMap tag = new OperateTagMap();
// tag.strPC = strPC;
// tag.strCRC = strCRC;
// tag.strEPC = strEPC;
// tag.strData = strData;
// tag.nDataLen = 0;
// tag.btAntId = btAntId;
// tag.nReadCount = nReadCount;
// m_curOperateTagBuffer.lsTagList.add(tag);
//
// synchronized (this) {
// U8Series.operationTagResult = 0;
// U8Series.errorData="success";
// Log.i("toolsdebug", "3333");
// this.notifyAll();
// }
//
// itent.putExtra("cmd", msgTran.getCmd());
// itent.putExtra("type", ERROR.SUCCESS);
// if (msgTran.getCmd() == CMD.WRITE_TAG) {
// itent.putExtra("msg", "Write label success");
// } else if (msgTran.getCmd() == CMD.KILL_TAG) {
// itent.putExtra("msg", "Destruction of label success");
// } else if (msgTran.getCmd() == CMD.LOCK_TAG) {
// itent.putExtra("msg", "Operation is successful!");
// }
// mLocalBroadcastManager.sendBroadcast(itent);
// // refreshOperateTag(btCmd, m_curOperateTagBuffer);
// // writeLog(strCmd, ERROR.SUCCESS);
// }
// }
/** /**
* processWriteTag 与 processLockTag 返回一致。 * processWriteTag 与 processLockTag 返回一致。
...@@ -1055,9 +1055,9 @@ public class ReaderHelper { ...@@ -1055,9 +1055,9 @@ public class ReaderHelper {
* @param msgTran * @param msgTran
* 消息包 * 消息包
*/ */
private void processLockTag(MessageTran msgTran) { // private void processLockTag(MessageTran msgTran) {
processWriteTag(msgTran); // processWriteTag(msgTran);
} // }
/** /**
* processKillTag 与 processLockTag 返回一致。 * processKillTag 与 processLockTag 返回一致。
...@@ -1065,9 +1065,9 @@ public class ReaderHelper { ...@@ -1065,9 +1065,9 @@ public class ReaderHelper {
* @param msgTran * @param msgTran
* 消息包 * 消息包
*/ */
private void processKillTag(MessageTran msgTran) { // private void processKillTag(MessageTran msgTran) {
processWriteTag(msgTran); // processWriteTag(msgTran);
} // }
private void processSetAccessEpcMatch(MessageTran msgTran) { private void processSetAccessEpcMatch(MessageTran msgTran) {
processSet(msgTran); processSet(msgTran);
......
package com.stm.asset.adapter; package com.stm.asset.adapter;
import android.content.Context; import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.TextView; import android.widget.TextView;
import com.fn.useries.reader.model.InventoryBuffer; import com.reader.helper.InventoryBuffer;
import com.fn.useries.utils.Tools;
import com.stm.asset.R; import com.stm.asset.R;
import com.stm.asset.utils.StringUtils; import com.stm.asset.utils.StringUtils;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -29,6 +28,7 @@ public class InventoryAdapter extends BaseAdapter { ...@@ -29,6 +28,7 @@ public class InventoryAdapter extends BaseAdapter {
public InventoryAdapter(Context context) { public InventoryAdapter(Context context) {
inflater = LayoutInflater.from(context); inflater = LayoutInflater.from(context);
dataList = new ArrayList<>();
} }
@Override @Override
...@@ -65,10 +65,12 @@ public class InventoryAdapter extends BaseAdapter { ...@@ -65,10 +65,12 @@ public class InventoryAdapter extends BaseAdapter {
InventoryBuffer.InventoryTagMap inventoryTagMap = dataList.get(position); InventoryBuffer.InventoryTagMap inventoryTagMap = dataList.get(position);
// viewHolder.idTxt.setText(String.valueOf(position+1)); // viewHolder.idTxt.setText(String.valueOf(position+1));
try { try {
String epcStr = inventoryTagMap.strEPC; // TODO 暂时特殊处理
byte[] bytes = Tools.stringToByteArray(epcStr); // String epcStr = inventoryTagMap.strEPC;
String str = new String(bytes, StandardCharsets.UTF_8); // byte[] bytes = Tools.stringToByteArray(epcStr);
viewHolder.epcTxt.setText(str); // String str = new String(bytes, StandardCharsets.UTF_8);
// viewHolder.epcTxt.setText(str);
viewHolder.epcTxt.setText(inventoryTagMap.strEPC.replaceAll(" ", ""));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -97,11 +99,14 @@ public class InventoryAdapter extends BaseAdapter { ...@@ -97,11 +99,14 @@ public class InventoryAdapter extends BaseAdapter {
if (!StringUtils.isEmptyOrNull(epcStr)) { if (!StringUtils.isEmptyOrNull(epcStr)) {
if (!hasItem(epcStr)) { if (!hasItem(epcStr)) {
try { try {
byte[] bytes = Tools.stringToByteArray(epcStr); // TODO 暂时特殊处理
String str = new String(bytes, StandardCharsets.UTF_8).trim(); Log.i("InventoryAdapter", "epcStr:" + epcStr.replaceAll(" ", ""));
if (StringUtils.isNumber(str)) {
dataList.add(item); dataList.add(item);
} // byte[] bytes = Tools.stringToByteArray(epcStr);
// String str = new String(bytes, StandardCharsets.UTF_8).replaceAll(" ", "");
// if (StringUtils.isNumber(str)) {
// dataList.add(item);
// }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
......
package com.stm.asset.adapter;
import android.annotation.SuppressLint;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.stm.asset.R;
import com.stm.asset.model.TaskInfo;
import com.stm.asset.page.TaskListActivity;
import com.stm.asset.utils.ViewUtil;
import java.util.ArrayList;
import java.util.List;
public class TaskListAdapter extends BaseAdapter {
private final LayoutInflater inflater;
private LinearLayout.LayoutParams lp1,lp2;
private TaskListActivity taskListActivity;
private List<TaskInfo> dataList;
public TaskListAdapter(TaskListActivity activity, int rightWidth) {
inflater = LayoutInflater.from(activity);
this.taskListActivity = activity;
this.lp1 = new LinearLayout.LayoutParams(ViewUtil.getScreenWidth(activity), LinearLayout.LayoutParams.MATCH_PARENT);
this.lp2 = new LinearLayout.LayoutParams(rightWidth, LinearLayout.LayoutParams.MATCH_PARENT);
}
@Override
public int getCount() {
return dataList == null ? 0 : dataList.size();
}
@Override
public Object getItem(int position) {
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@SuppressLint("InflateParams")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView =inflater.inflate(R.layout.view_task_list_item, null);
viewHolder.leftLayout = convertView.findViewById(R.id.task_left_layout);
viewHolder.rightLayout = convertView.findViewById(R.id.task_right_layout);
viewHolder.inventoryLayout = convertView.findViewById(R.id.task_right_inventory_layout);
viewHolder.nameTxt = convertView.findViewById(R.id.task_list_name_txt);
viewHolder.userTxt = convertView.findViewById(R.id.task_list_creator_txt);
viewHolder.deptTxt = convertView.findViewById(R.id.task_list_dept_txt);
viewHolder.leftLayout.setLayoutParams(lp1);
viewHolder.rightLayout.setLayoutParams(lp2);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
TaskInfo taskInfo = dataList.get(position);
viewHolder.nameTxt.setText(taskInfo.getInventoryName());
viewHolder.userTxt.setText(taskInfo.getInventoryEmpName());
viewHolder.deptTxt.setText(taskInfo.getInventoryDeptName());
viewHolder.inventoryLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
taskListActivity.gotoCheckPage(taskInfo.getId());
}
});
return convertView;
}
public void setData(List<TaskInfo> data, boolean reset) {
if (dataList == null) {
dataList = new ArrayList<>();
}
if (reset) {
dataList.clear();
}
if (data != null && data.size() > 0) {
dataList.addAll(data);
}
notifyDataSetChanged();
}
private static class ViewHolder {
private TextView nameTxt, userTxt, deptTxt;
private LinearLayout leftLayout, rightLayout, inventoryLayout;
}
}
...@@ -2,10 +2,9 @@ package com.stm.asset.base; ...@@ -2,10 +2,9 @@ package com.stm.asset.base;
public class ConfigKey { public class ConfigKey {
public final static String GATEWAYIP = "mfms.citictrust.com.cn"; public final static String GATEWAYIP = "stream.hulianmofang.cn";
public final static String GATWAYPORT = ""; public final static String GATWAYPORT = "18885";
// http://10.50.251.101 18081 测试地址 // http://stream.hulianmofang.cn 18885 演示地址
// https://fms.citictrust.com.cn 生产地址
public final static String PLAYFORM = "FMPAPP"; public final static String PLAYFORM = "FMPAPP";
// CJFKAPP 长江养老 // CJFKAPP 长江养老
...@@ -14,6 +13,6 @@ public class ConfigKey { ...@@ -14,6 +13,6 @@ public class ConfigKey {
public final static String SIGNATUREPASSWORD = "stream123"; // 测试环境请配置成stream123(生产环境具体再通知) public final static String SIGNATUREPASSWORD = "stream123"; // 测试环境请配置成stream123(生产环境具体再通知)
public final static String HTTPS_CERTIFICATION_NAME = "feiyongmofang.cer"; public final static String HTTPS_CERTIFICATION_NAME = "feiyongmofang.cer";
public final static boolean DEBUG = true; // 是否打印测试数据 public final static boolean DEBUG = true; // 是否打印测试数据
public final static boolean ISOPENHTTPS = true; // 是否开启https请求方式 public final static boolean ISOPENHTTPS = false; // 是否开启https请求方式
} }
...@@ -4,10 +4,11 @@ public class InterfaceKey { ...@@ -4,10 +4,11 @@ public class InterfaceKey {
private final static String GETWAY = "GATEWAY/"; private final static String GETWAY = "GATEWAY/";
public final static String UNIONLOGINAPP = GETWAY + "app/login"; // 登录 public final static String UNIONLOGINAPP = "FMP/" + "login"; // 登录
public final static String QURYPAGEHOMEUSERINFO = GETWAY + "app/quryPageHomeUserInfo"; // 获取用户信息 public final static String QURYPAGEHOMEUSERINFO = "FMP/" + "quryPageHomeUserInfo"; // 获取用户信息
public final static String QUERYVERSIONAPP = GETWAY + "queryAppVersionApp"; // 查询版本号 public final static String QUERYVERSIONAPP = "FMP/" + "queryAppVersionApp"; // 查询版本号
public final static String SCANINVENTORY = GETWAY + "app/ams/scanInventory"; // 上传资产编号 public final static String QUERYINVENTORYMAINPAGE = "FMP/" + "ams/inventory/queryInventoryMainPage"; // 查询盘点任务
public final static String SCANINVENTORY = "FMP/" + "ams/inventory/mergeInventoryDetailByAssetNum"; // 上传资产编号
......
...@@ -4,6 +4,8 @@ import com.stm.asset.base.InterfaceKey; ...@@ -4,6 +4,8 @@ import com.stm.asset.base.InterfaceKey;
import com.stm.asset.json.CommonMapJson; import com.stm.asset.json.CommonMapJson;
import com.stm.asset.json.CommonStringJson; import com.stm.asset.json.CommonStringJson;
import com.stm.asset.json.ListUserInfo; import com.stm.asset.json.ListUserInfo;
import com.stm.asset.json.TaskListJson;
import com.stm.asset.utils.SM2Util;
/** /**
* 类名称:HttpService * 类名称:HttpService
...@@ -26,13 +28,14 @@ public class HttpService { ...@@ -26,13 +28,14 @@ public class HttpService {
public void unionLoginApp(String accout, String password, RequestCallback<CommonStringJson> requestCallback) { public void unionLoginApp(String accout, String password, RequestCallback<CommonStringJson> requestCallback) {
RequestParams params = new RequestParams(); RequestParams params = new RequestParams();
params.addBodyParameter("username", accout); params.addBodyParameter("username", SM2Util.encrypt(accout));
params.addBodyParameter("password", password); params.addBodyParameter("password", SM2Util.encrypt(password));
HttpUtil.getInstance().sendJson(InterfaceKey.UNIONLOGINAPP, params, requestCallback); HttpUtil.getInstance().sendJson(InterfaceKey.UNIONLOGINAPP, params, requestCallback);
} }
public void quryPageHomeUserInfo(String accessToken, RequestCallback<ListUserInfo> requestCallback) { public void quryPageHomeUserInfo(String accessToken, RequestCallback<ListUserInfo> requestCallback) {
RequestParams params = new RequestParams(); RequestParams params = new RequestParams();
params.addHeader("Acess-Token", accessToken);
params.addBodyParameter("accessToken", accessToken); params.addBodyParameter("accessToken", accessToken);
HttpUtil.getInstance().sendJson(InterfaceKey.QURYPAGEHOMEUSERINFO, params, requestCallback); HttpUtil.getInstance().sendJson(InterfaceKey.QURYPAGEHOMEUSERINFO, params, requestCallback);
} }
...@@ -42,9 +45,19 @@ public class HttpService { ...@@ -42,9 +45,19 @@ public class HttpService {
HttpUtil.getInstance().sendJson(InterfaceKey.QUERYVERSIONAPP, params, requestCallback); HttpUtil.getInstance().sendJson(InterfaceKey.QUERYVERSIONAPP, params, requestCallback);
} }
public void scanInventory(String numberList, RequestCallback<CommonStringJson> requestCallback) { public void queryInventoryMainPage(int pageNum, int pageSize, RequestCallback<TaskListJson> requestCallback) {
RequestParams params = new RequestParams(); RequestParams params = new RequestParams();
params.addBodyParameter("numList", numberList); params.addBodyParameter("pageNum", String.valueOf(pageNum));
params.addBodyParameter("pageSize", String.valueOf(pageSize));
params.addBodyParameter("pageStatus", "amsInventoryExecution");
params.addBodyParameter("inventoryType", "0");
HttpUtil.getInstance().sendJson(InterfaceKey.QUERYINVENTORYMAINPAGE, params, requestCallback);
}
public void scanInventory(String mainId, String numberList, RequestCallback<CommonStringJson> requestCallback) {
RequestParams params = new RequestParams();
params.addBodyParameter("mainId", mainId);
params.addBodyParameter("assetNumListStr", numberList);
HttpUtil.getInstance().sendJson(InterfaceKey.SCANINVENTORY, params, requestCallback); HttpUtil.getInstance().sendJson(InterfaceKey.SCANINVENTORY, params, requestCallback);
} }
......
...@@ -42,10 +42,10 @@ public class HttpUtil { ...@@ -42,10 +42,10 @@ public class HttpUtil {
e.printStackTrace(); e.printStackTrace();
} }
} }
builder.callTimeout(6000, TimeUnit.MILLISECONDS); builder.callTimeout(20000, TimeUnit.MILLISECONDS);
builder.connectTimeout(6000, TimeUnit.MILLISECONDS); builder.connectTimeout(20000, TimeUnit.MILLISECONDS);
builder.readTimeout(30000, TimeUnit.MILLISECONDS); builder.readTimeout(60000, TimeUnit.MILLISECONDS);
builder.writeTimeout(30000, TimeUnit.MILLISECONDS); builder.writeTimeout(60000, TimeUnit.MILLISECONDS);
okHttpClient = builder.build(); okHttpClient = builder.build();
} }
...@@ -70,12 +70,13 @@ public class HttpUtil { ...@@ -70,12 +70,13 @@ public class HttpUtil {
Log.i("HttpUtil", String.format("请求方法: %s", url)); Log.i("HttpUtil", String.format("请求方法: %s", url));
builder.url(url); builder.url(url);
if (requestParams.getHeaders() != null && requestParams.getHeaders().size() > 0) { if (requestParams.getHeaders() != null && requestParams.getHeaders().size() > 0) {
Log.i("HttpUtil", String.format("请求参数 head:%s", new Gson().toJson(requestParams.getHeaders())));
for (Map.Entry<String, String> headerEntry : requestParams.getHeaders().entrySet()) { for (Map.Entry<String, String> headerEntry : requestParams.getHeaders().entrySet()) {
builder.header(headerEntry.getKey(), headerEntry.getValue()); builder.header(headerEntry.getKey(), headerEntry.getValue());
} }
} }
if (requestParams.getBodyParams() != null && requestParams.getBodyParams().size() > 0) { if (requestParams.getBodyParams() != null && requestParams.getBodyParams().size() > 0) {
Log.i("HttpUtil", String.format("请求参数:%s", new Gson().toJson(requestParams.getBodyParams()))); Log.i("HttpUtil", String.format("请求参数 body:%s", new Gson().toJson(requestParams.getBodyParams())));
// RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(requestParams.getBodyParams())); // RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(requestParams.getBodyParams()));
// builder.post(requestBody); // builder.post(requestBody);
FormBody.Builder bodyBuilder = new FormBody.Builder(); FormBody.Builder bodyBuilder = new FormBody.Builder();
...@@ -123,12 +124,13 @@ public class HttpUtil { ...@@ -123,12 +124,13 @@ public class HttpUtil {
Log.i("HttpUtil", String.format("请求方法: %s", url)); Log.i("HttpUtil", String.format("请求方法: %s", url));
builder.url(url); builder.url(url);
if (requestParams.getHeaders() != null && requestParams.getHeaders().size() > 0) { if (requestParams.getHeaders() != null && requestParams.getHeaders().size() > 0) {
Log.i("HttpUtil", String.format("请求参数 head:%s", new Gson().toJson(requestParams.getHeaders())));
for (Map.Entry<String, String> headerEntry : requestParams.getHeaders().entrySet()) { for (Map.Entry<String, String> headerEntry : requestParams.getHeaders().entrySet()) {
builder.header(headerEntry.getKey(), headerEntry.getValue()); builder.header(headerEntry.getKey(), headerEntry.getValue());
} }
} }
if (requestParams.getBodyParams() != null && requestParams.getBodyParams().size() > 0) { if (requestParams.getBodyParams() != null && requestParams.getBodyParams().size() > 0) {
Log.i("HttpUtil", String.format("请求参数:%s", new Gson().toJson(requestParams.getBodyParams()))); Log.i("HttpUtil", String.format("请求参数 body:%s", new Gson().toJson(requestParams.getBodyParams())));
// RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(requestParams.getBodyParams())); // RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(requestParams.getBodyParams()));
// builder.post(requestBody); // builder.post(requestBody);
FormBody.Builder bodyBuilder = new FormBody.Builder(); FormBody.Builder bodyBuilder = new FormBody.Builder();
......
...@@ -19,6 +19,7 @@ public class RequestParams { ...@@ -19,6 +19,7 @@ public class RequestParams {
private Map<String, String> bodyParams; private Map<String, String> bodyParams;
public RequestParams() { public RequestParams() {
addCommonHead();
addCommonParams(); addCommonParams();
} }
...@@ -50,21 +51,27 @@ public class RequestParams { ...@@ -50,21 +51,27 @@ public class RequestParams {
bodyParams.put(name, value); bodyParams.put(name, value);
} }
private void addCommonHead() {
if (this.headers == null) {
this.headers = new HashMap<>();
}
long currentTime = System.currentTimeMillis();
headers.put("Current-Time", String.valueOf(currentTime));
headers.put("Authenticator-Data", MD5Util.getAuthenticator(currentTime));
if (StmApplication.getInstance().getUserInfo() != null) {
headers.put("Acess-Token", PropertyUtil.getAccessToken(StmApplication.getInstance().getApplicationContext()));
}
}
private void addCommonParams(){ private void addCommonParams(){
if (bodyParams == null) { if (bodyParams == null) {
bodyParams = new HashMap<>(); bodyParams = new HashMap<>();
} }
bodyParams.put("machinecode", "h5"); bodyParams.put("machinecode", "phone");
bodyParams.put("machinetype", "h5"); bodyParams.put("machinetype", "phone");
bodyParams.put("channelcode", "APP"); bodyParams.put("channelcode", "VUE");
bodyParams.put("terminalcode", "fee"); bodyParams.put("terminalcode", "fee");
bodyParams.put("platform", PropertyUtil.getHttpPlatform(StmApplication.getInstance().getApplicationContext())); bodyParams.put("platform", PropertyUtil.getHttpPlatform(StmApplication.getInstance().getApplicationContext()));
long currentTime = System.currentTimeMillis();
bodyParams.put("currenttime", String.valueOf(currentTime));
bodyParams.put("authenticator", MD5Util.getAuthenticator(currentTime));
if (StmApplication.getInstance().getUserInfo() != null) {
bodyParams.put("accessToken", PropertyUtil.getAccessToken(StmApplication.getInstance().getApplicationContext()));
}
} }
} }
\ No newline at end of file
package com.stm.asset.json;
import com.stm.asset.model.TaskInfo;
import java.io.Serializable;
import java.util.List;
public class TaskJsonInfo implements Serializable {
private static final long serialVersionUID = 7340008696696353349L;
private String pageNum;
private String pageSize;
private String size;
private String total;
private String pages;
private List<TaskInfo> list;
public String getPageNum() {
return pageNum;
}
public void setPageNum(String pageNum) {
this.pageNum = pageNum;
}
public String getPageSize() {
return pageSize;
}
public void setPageSize(String pageSize) {
this.pageSize = pageSize;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getTotal() {
return total;
}
public void setTotal(String total) {
this.total = total;
}
public String getPages() {
return pages;
}
public void setPages(String pages) {
this.pages = pages;
}
public List<TaskInfo> getList() {
return list;
}
public void setList(List<TaskInfo> list) {
this.list = list;
}
}
package com.stm.asset.json;
import com.stm.asset.model.LoginInfo;
public class TaskListJson extends BaseInfo {
private static final long serialVersionUID = 1987319819308033456L;
private TaskJsonInfo rspData;
public void setRspData(TaskJsonInfo rspData) {
this.rspData = rspData;
}
public TaskJsonInfo getRspData() {
return rspData==null?new TaskJsonInfo():rspData;
}
}
package com.stm.asset.model;
import java.io.Serializable;
/**
* 类名称:TaskInfo
* 类描述:盘点任务实体类
* 创建人:story
* 创建时间:2023-03-27
*/
public class TaskInfo implements Serializable {
private static final long serialVersionUID = -2803924680531753060L;
private String id;
private String inventoryName; // 任务名称
private String statusName; // 任务状态
private String inventoryEmpName; // 盘点人
private String inventoryDeptName; // 盘点部门
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getInventoryName() {
return inventoryName;
}
public void setInventoryName(String inventoryName) {
this.inventoryName = inventoryName;
}
public String getStatusName() {
return statusName;
}
public void setStatusName(String statusName) {
this.statusName = statusName;
}
public String getInventoryEmpName() {
return inventoryEmpName;
}
public void setInventoryEmpName(String inventoryEmpName) {
this.inventoryEmpName = inventoryEmpName;
}
public String getInventoryDeptName() {
return inventoryDeptName;
}
public void setInventoryDeptName(String inventoryDeptName) {
this.inventoryDeptName = inventoryDeptName;
}
}
...@@ -31,6 +31,7 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl ...@@ -31,6 +31,7 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
private TaskFragment unfinishedTaskFgm; private TaskFragment unfinishedTaskFgm;
private TaskFragment finishedTaskFgm; private TaskFragment finishedTaskFgm;
private LoadingDialog loadingDialog; private LoadingDialog loadingDialog;
private String mainId = null;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
...@@ -41,12 +42,15 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl ...@@ -41,12 +42,15 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
private void initView() { private void initView() {
initTitle(); initTitle();
titleTxt.setText("盘点任务"); titleTxt.setText("资产盘点");
if (getIntent().getExtras() != null) {
mainId = getIntent().getExtras().getString("mainId");
}
findViewById(R.id.common_title_back_layout).setOnClickListener(this); findViewById(R.id.common_title_back_layout).setOnClickListener(this);
unfinishedTxt = findViewById(R.id.task_unfinished_txt); unfinishedTxt = findViewById(R.id.task_unfinished_txt);
finishedTxt = findViewById(R.id.task_finished_txt); finishedTxt = findViewById(R.id.task_finished_txt);
unfinishedTxt.setText("未盘点任务(0)"); unfinishedTxt.setText("未盘点资产(0)");
finishedTxt.setText("已完成任务"); finishedTxt.setText("已完成资产");
unfinishedTxt.setSelected(true); unfinishedTxt.setSelected(true);
finishedTxt.setSelected(false); finishedTxt.setSelected(false);
unfinishedTxt.setOnClickListener(this); unfinishedTxt.setOnClickListener(this);
...@@ -89,15 +93,19 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl ...@@ -89,15 +93,19 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
} }
public void setUnfinishedNum(int num) { public void setUnfinishedNum(int num) {
String str = "未盘点任务(" + num + ")"; String str = "未盘点资产(" + num + ")";
unfinishedTxt.setText(str); unfinishedTxt.setText(str);
} }
public void setFinishedNum(int num) { public void setFinishedNum(int num) {
String str = "已完成任务"; String str = "已完成资产";
finishedTxt.setText(str); finishedTxt.setText(str);
} }
public String getMainId() {
return mainId;
}
public LoadingDialog getLoadingDialog() { public LoadingDialog getLoadingDialog() {
return loadingDialog; return loadingDialog;
} }
......
...@@ -2,6 +2,7 @@ package com.stm.asset.page; ...@@ -2,6 +2,7 @@ package com.stm.asset.page;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -19,7 +20,9 @@ import com.fn.useries.utils.MusicPlayer; ...@@ -19,7 +20,9 @@ import com.fn.useries.utils.MusicPlayer;
import com.stm.asset.R; import com.stm.asset.R;
import com.stm.asset.base.BaseActivity; import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.StmApplication; import com.stm.asset.base.StmApplication;
import com.stm.asset.utils.StringUtils;
import com.stm.asset.utils.ViewUtil; import com.stm.asset.utils.ViewUtil;
import com.stm.asset.view.LoadingDialog;
import com.stm.asset.view.TextMoveLayout; import com.stm.asset.view.TextMoveLayout;
/** /**
...@@ -40,12 +43,15 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe ...@@ -40,12 +43,15 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private M11U8Service mUSeries; private M11U8Service mUSeries;
private int screenWidth; private int screenWidth;
private boolean firstIn = true;
private LoadingDialog loadingDialog;
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_device_set); setContentView(R.layout.activity_device_set);
initView(); initView();
loadingDialog = new LoadingDialog(this);
} }
private void initView() { private void initView() {
...@@ -61,7 +67,7 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe ...@@ -61,7 +67,7 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
powerLayout = findViewById(R.id.set_power_layout); powerLayout = findViewById(R.id.set_power_layout);
powerSb = findViewById(R.id.set_power_sb); powerSb = findViewById(R.id.set_power_sb);
powerSb.setOnSeekBarChangeListener(new OnSeekBarChangeListenerImp()); powerSb.setOnSeekBarChangeListener(new OnSeekBarChangeListenerImp());
powerSb.setMax(13); powerSb.setMax(33);
layoutParams = new ViewGroup.LayoutParams(screenWidth, 40); layoutParams = new ViewGroup.LayoutParams(screenWidth, 40);
temperatureEt = findViewById(R.id.set_temperature_et); temperatureEt = findViewById(R.id.set_temperature_et);
...@@ -81,10 +87,18 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe ...@@ -81,10 +87,18 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
mUSeries.initService(); mUSeries.initService();
powerLayout.removeAllViews(); powerLayout.removeAllViews();
powerLayout.addView(moveTextDBM, layoutParams); powerLayout.addView(moveTextDBM, layoutParams);
if (mUSeries != null) { loadingDialog.show();
if (mUSeries != null && firstIn) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
loadingDialog.dismiss();
firstIn = false;
getPower(); getPower();
getInventoryParams(); getInventoryParams();
} }
}, 1500);
}
} }
@Override @Override
...@@ -95,16 +109,14 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe ...@@ -95,16 +109,14 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private void getPower() { private void getPower() {
try { try {
Thread.sleep(800);
String outPowerSetParams = mUSeries.getParams(M11U8Service.PARA_POWER); String outPowerSetParams = mUSeries.getParams(M11U8Service.PARA_POWER);
Log.i("DeviceSetActivity", "M10_U8:getPower " + outPowerSetParams); Log.i("DeviceSetActivity", "M10_U8:getPower " + outPowerSetParams);
if (outPowerSetParams.trim().equalsIgnoreCase(ERROR.RECEVICE_INCOMPLETE)) { StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR); @Override
StmApplication.getInstance().showToastShort(getResources().getString(R.string.device_set_get_power_fail) + " " + outPowerSetParams); public void run() {
return;
}
refreshPowerView(outPowerSetParams); refreshPowerView(outPowerSetParams);
// 显示软件提示音 }
});
} catch (Exception e) { } catch (Exception e) {
Log.i("DeviceSetActivity", "M10_U8:getPowerParamsException " + e.toString()); Log.i("DeviceSetActivity", "M10_U8:getPowerParamsException " + e.toString());
} }
...@@ -137,15 +149,19 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe ...@@ -137,15 +149,19 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
temperatureEt.setText(""); temperatureEt.setText("");
try { try {
String strTemperature = mUSeries.getParams(M11U8Service.TEMPERATURE); String strTemperature = mUSeries.getParams(M11U8Service.TEMPERATURE);
if (strTemperature.trim().equalsIgnoreCase(ERROR.RECEVICE_INCOMPLETE)) {// 接收异常 Log.i("DeviceSetActivity", "M10_U8:getTemperature " + strTemperature);
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR); if (!StringUtils.isEmptyOrNull(strTemperature)) {
StmApplication.getInstance().showToastShort(ERROR.RECEVICE_INCOMPLETE); StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
return; @Override
} public void run() {
MusicPlayer.getInstance().play(MusicPlayer.Type.OK); MusicPlayer.getInstance().play(MusicPlayer.Type.OK);
temperatureEt.setText(strTemperature); temperatureEt.setText(strTemperature);
} catch (Exception e) { }
});
} else {
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR); MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
}
} catch (Exception e) {
Log.i("DeviceSetActivity", "M10_U8:getTemperatureParamsException" + e.toString()); Log.i("DeviceSetActivity", "M10_U8:getTemperatureParamsException" + e.toString());
e.printStackTrace(); e.printStackTrace();
} }
......
...@@ -2,6 +2,7 @@ package com.stm.asset.page; ...@@ -2,6 +2,7 @@ package com.stm.asset.page;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.ListView; import android.widget.ListView;
...@@ -11,9 +12,8 @@ import androidx.annotation.Nullable; ...@@ -11,9 +12,8 @@ import androidx.annotation.Nullable;
import androidx.room.Room; import androidx.room.Room;
import com.fn.useries.operation.M11U8Service; import com.fn.useries.operation.M11U8Service;
import com.fn.useries.reader.model.InventoryBuffer;
import com.fn.useries.reader.server.ReaderHelper;
import com.fn.useries.utils.Tools; import com.fn.useries.utils.Tools;
import com.reader.helper.InventoryBuffer;
import com.series.inter.InventoryInterface; import com.series.inter.InventoryInterface;
import com.stm.asset.R; import com.stm.asset.R;
import com.stm.asset.adapter.InventoryAdapter; import com.stm.asset.adapter.InventoryAdapter;
...@@ -40,13 +40,12 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe ...@@ -40,13 +40,12 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
private TextView txtCountTxt; private TextView txtCountTxt;
private M11U8Service mUSeries; private M11U8Service mUSeries;
private ReaderHelper mReaderHelper;
private InventoryBuffer m_curInventoryBuffer;
private Handler mHandler; private Handler mHandler;
private boolean isInventory; private boolean isInventory;
private long mRefreshTime; private long mRefreshTime;
private InventoryAdapter inventoryAdapter; private InventoryAdapter inventoryAdapter;
private InventoryInfoDao inventoryInfoDao; private InventoryInfoDao inventoryInfoDao;
private int inventoryTotal = 0; // 盘存到的标签数
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
...@@ -55,8 +54,6 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe ...@@ -55,8 +54,6 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
initView(); initView();
mHandler = new Handler(); mHandler = new Handler();
try { try {
mReaderHelper = ReaderHelper.getDefaultHelper();
m_curInventoryBuffer = mReaderHelper.getCurInventoryBuffer();
InventoryInfoDatabase database = Room.databaseBuilder(this, InventoryInfoDatabase.class, "inventoryInfoDemo").build(); InventoryInfoDatabase database = Room.databaseBuilder(this, InventoryInfoDatabase.class, "inventoryInfoDemo").build();
inventoryInfoDao = database.inventoryInfoDao(); inventoryInfoDao = database.inventoryInfoDao();
mUSeries = M11U8Service.getInstance(); mUSeries = M11U8Service.getInstance();
...@@ -103,14 +100,21 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe ...@@ -103,14 +100,21 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
beginBtn.setText(R.string.inventory_btn_doing); beginBtn.setText(R.string.inventory_btn_doing);
isInventory = true; isInventory = true;
mRefreshTime = new Date().getTime(); mRefreshTime = new Date().getTime();
inventoryTotal = 0;
mUSeries.startInventory(new InventoryInterface() { mUSeries.startInventory(new InventoryInterface() {
@Override @Override
public void success(Object obj) { public void success(Object obj) {
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
inventoryTotal++;
InventoryBuffer.InventoryTagMap tag = (InventoryBuffer.InventoryTagMap) obj; InventoryBuffer.InventoryTagMap tag = (InventoryBuffer.InventoryTagMap) obj;
List<InventoryBuffer.InventoryTagMap> list = new ArrayList<>(); List<InventoryBuffer.InventoryTagMap> list = new ArrayList<>();
list.add(tag); list.add(tag);
inventoryAdapter.setData(list, false); inventoryAdapter.setData(list, false);
} }
});
}
@Override @Override
public void fail(String msg) { public void fail(String msg) {
...@@ -139,11 +143,14 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe ...@@ -139,11 +143,14 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
List<InventoryInfo> insertList = new ArrayList<>(); List<InventoryInfo> insertList = new ArrayList<>();
for (InventoryBuffer.InventoryTagMap map : dataList) { for (InventoryBuffer.InventoryTagMap map : dataList) {
try { try {
String epcStr = map.strEPC; // TODO 暂时特殊处理
byte[] bytes = Tools.stringToByteArray(epcStr); // String epcStr = map.strEPC;
String str = new String(bytes, StandardCharsets.UTF_8); // byte[] bytes = Tools.stringToByteArray(epcStr);
// String str = new String(bytes, StandardCharsets.UTF_8);
// InventoryInfo inventoryInfo = new InventoryInfo();
// inventoryInfo.setNumber(str.replaceAll(" ", ""));
InventoryInfo inventoryInfo = new InventoryInfo(); InventoryInfo inventoryInfo = new InventoryInfo();
inventoryInfo.setNumber(str.trim()); inventoryInfo.setNumber(map.strEPC.replaceAll(" ", ""));
inventoryInfo.setStatus("0"); inventoryInfo.setStatus("0");
inventoryInfo.setUserName(StmApplication.getInstance().getUserInfo().getUsername()); inventoryInfo.setUserName(StmApplication.getInstance().getUserInfo().getUsername());
insertList.add(inventoryInfo); insertList.add(inventoryInfo);
...@@ -159,6 +166,7 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe ...@@ -159,6 +166,7 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
@Override @Override
public void run() { public void run() {
StmApplication.getInstance().showToastShort("保存成功"); StmApplication.getInstance().showToastShort("保存成功");
inventoryTotal = 0;
inventoryAdapter.setData(null, true); inventoryAdapter.setData(null, true);
} }
}); });
...@@ -172,21 +180,25 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe ...@@ -172,21 +180,25 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
private Runnable mRefreshRunnable = new Runnable() { private Runnable mRefreshRunnable = new Runnable() {
public void run() { public void run() {
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
refreshText(); refreshText();
mHandler.postDelayed(this, 2000); }
});
mHandler.postDelayed(this, 1000);
} }
}; };
private void refreshText() { private void refreshText() {
String countTxtFormat = InventoryActivity.this.getString(R.string.inventory_count_text); String countTxtFormat = InventoryActivity.this.getString(R.string.inventory_count_text);
long now = new Date().getTime(); long now = new Date().getTime();
String text = String.format(countTxtFormat, inventoryAdapter.getCount(), mReaderHelper.getInventoryTotal(), m_curInventoryBuffer.nReadRate, (now - mRefreshTime) / 1000); int time = (int) ((now - mRefreshTime) / 1000);
// List<InventoryBuffer.InventoryTagMap> list = m_curInventoryBuffer.lsTagList; if (time == 0) {
// if (list.size() > 0) { time = 1;
// InventoryBuffer.InventoryTagMap item = list.get(0); }
// String str = "strPC:" + item.strPC + " strCRC:" + item.strCRC + " strEPC:" + item.strEPC + " btAntId:" + item.btAntId + " strRSSI:" + item.strRSSI + " nReadCount:" + item.nReadCount + " strFreq:" + item.strFreq + " nAnt1:" + item.nAnt1 + " nAnt2:" + item.nAnt2 + " nAnt3:" + item.nAnt3 + " nAnt4:" + item.nAnt4; int rate = inventoryTotal / time;
// StmApplication.getInstance().showToastShort(str); String text = String.format(countTxtFormat, inventoryAdapter.getCount(), inventoryTotal, rate, time);
// }
txtCountTxt.setText(text); txtCountTxt.setText(text);
} }
} }
...@@ -101,7 +101,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener { ...@@ -101,7 +101,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
case R.id.main_inventory_data_layout: case R.id.main_inventory_data_layout:
if (userInfo != null) { if (userInfo != null) {
Intent gotoTaskIntent = new Intent(); Intent gotoTaskIntent = new Intent();
gotoTaskIntent.setClass(MainActivity.this, CheckTaskActivity.class); gotoTaskIntent.setClass(MainActivity.this, TaskListActivity.class);
startActivity(gotoTaskIntent); startActivity(gotoTaskIntent);
} else { } else {
Intent loginIntent = new Intent(); Intent loginIntent = new Intent();
...@@ -119,6 +119,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener { ...@@ -119,6 +119,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
loginIntent.setClass(MainActivity.this, LoginActivity.class); loginIntent.setClass(MainActivity.this, LoginActivity.class);
startActivity(loginIntent); startActivity(loginIntent);
} }
break;
case R.id.main_settings_layout: case R.id.main_settings_layout:
Intent deviceSetIntent = new Intent(); Intent deviceSetIntent = new Intent();
deviceSetIntent.setClass(MainActivity.this, DeviceSetActivity.class); deviceSetIntent.setClass(MainActivity.this, DeviceSetActivity.class);
...@@ -145,7 +146,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener { ...@@ -145,7 +146,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
} }
private void showExitDialog() { private void showExitDialog() {
int dialog_width = (int) (ViewUtil.getScreenWidth(this) * 4 / 5.0); int dialog_width = (int) (ViewUtil.getScreenWidth(this) * 3 / 5.0);
final CommonAlertDialog dialog = new CommonAlertDialog(MainActivity.this); final CommonAlertDialog dialog = new CommonAlertDialog(MainActivity.this);
dialog.setViewParams(new LinearLayout.LayoutParams(dialog_width, -2)); dialog.setViewParams(new LinearLayout.LayoutParams(dialog_width, -2));
dialog.show(); dialog.show();
......
package com.stm.asset.page;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;
import com.stm.asset.R;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.StmApplication;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import cn.fuen.xmldemo.entity.Device;
import cn.fuen.xmldemo.model.DeviceModel;
import cn.fuen.xmldemo.model.DeviceModelImp;
public class SetAndSaveActivity extends BaseActivity implements OnClickListener, OnItemSelectedListener, OnCheckedChangeListener {
public static final String _4_0_3 = "4.0.3";
public static final String _5_1_1 = "5.1.1";
public static final int M96DisplayHeight = 782;
public static final int M10ADisplayHeight = 640;
private Button btn_save;
private CheckBox cb_enable;
private Spinner spinnerModel;
private Spinner spinnerSerialPort;
private Spinner spinnerBaud;
private Context mContext;
private List<String> modelList = new ArrayList<>();
private List<String> serialPortList = new ArrayList<>();
private List<String> baudList = new ArrayList<>();
// 写入list集合
private List<Device> writeList = new ArrayList<>();
// 读取出的数据信息存储集合
private List<Device> readList = new ArrayList<>();
// 读取出的数据model存储集合
// private List<String> readModels = new ArrayList<>();
// 为方便动态设置radioGroup被选择的RadioButton位置,创建List存储
private List<RadioGroup> rgList = new ArrayList<>();
// 新建一个btnList存储radiobutton的状态
private List<String> btnList = new ArrayList<String>();
// 声明DeviceModel
private DeviceModelImp deviceModel;
// 设置一默认参数Device方便设置调用
private Device mDefaultDevice = new Device();
private List<String> mDefaultGPIOList = new ArrayList<>();
// 存储上下电区域TextView 方便动态添加及获取
private List<TextView> onTvList = new ArrayList<>();
private boolean versionCheckSucceed = true;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = getApplicationContext();
deviceModel = new DeviceModel(mContext);
setContentView(R.layout.activity_setandsave);
// reload();
initView();
if (versionCheckSucceed) {
setAdapter();
getModelType();
// 对Modelspinner及Button实现监听
setListener();
}
}
@Override
public void finish() {
// if (versionCheckSucceed)
// jumpToModel();
super.finish();
}
// private void jumpToModel() {
// // 判断是完成否已经配置
// Intent in = new Intent();
// Intent jumpIntent = getIntent();
// if (jumpIntent.getStringExtra("packageName") == null || jumpIntent.getStringExtra("activityName") == null)
// return;
// in.setClassName(jumpIntent.getStringExtra("packageName"), jumpIntent.getStringExtra("activityName"));
// startActivity(in);
// }
/**
* 获取intent传进的参数,并将当前页面
*/
private void getModelType() {
String modeName = (String) getIntent().getStringExtra("modelName");
if (modeName != null) {
spinnerModel.setSelection(modelList.indexOf(modeName));
setModelConfig(mDefaultDevice);
}
}
/**
* 设置一个默认Device参数方便调用
*/
private void setDefaultDevice(int length) {
mDefaultDevice.setSerialPort(serialPortList.get(0));
mDefaultDevice.setBaudRate(9600);
mDefaultDevice.setEnable(false);
for (int i = 0; i < length; i++) {
mDefaultGPIOList.add("无");
}
mDefaultDevice.setGpios(mDefaultGPIOList);
}
/**
* 根据形参Device刷新当前界面
*/
private void setModelConfig(Device d) {
// 设置串口spinner
for (int i = 0; i < serialPortList.size(); i++) {
if (d.getSerialPort().equals(serialPortList.get(i))) {
spinnerSerialPort.setSelection(i);
}
}
// 设置波特率spinner
for (int i = 0; i < baudList.size(); i++) {
if (d.getBaudRate() == Integer.parseInt(baudList.get(i))) {
spinnerBaud.setSelection(i);
}
}
// 设置enableCheckBox
cb_enable.setChecked(d.isEnable());
// 设置上下电参数
List<String> gpioList = d.getGpios();
Log.i("see", "gpioList de size " + gpioList.size() + "");
Log.i("see", "rgList de size " + rgList.size() + "");
for (int i = 0; i < gpioList.size(); i++) {
int index = getchildIndex(gpioList.get(i));
rgList.get(i).check(rgList.get(i).getChildAt(index).getId());
}
}
// 设置adapter
private void setAdapter() {
String[] baudsStrings = getResources().getStringArray(R.array.spinarr_baud);
List<String> baudsList = new ArrayList<>();
for (int i = 0; i < baudsStrings.length; i++) {
baudsList.add(baudsStrings[i]);
}
ArrayAdapter<String> modelAdapter = new ArrayAdapter<>(this, R.layout.spinner_item, modelList);
spinnerModel.setAdapter(modelAdapter);
ArrayAdapter<String> baudAdapter = new ArrayAdapter<>(this, R.layout.spinner_item, baudsList);
spinnerBaud.setAdapter(baudAdapter);
ArrayAdapter<String> portAdapter = new ArrayAdapter<>(this, R.layout.spinner_item, serialPortList);
spinnerSerialPort.setAdapter(portAdapter);
}
/**
* 整个界面设置监听
*/
private void setListener() {
// spinner控件的监听
spinnerModel.setOnItemSelectedListener(this);
// saveBtn的监控
btn_save.setOnClickListener(this);
// checkBox监听
cb_enable.setOnCheckedChangeListener(this);
}
/**
* 顶部spinner model切换监听
*/
// 上一次点击的position默认是0
private int lastPosition = 0;
@Override
public void onItemSelected(AdapterView<?> arg0, View v, int position, long arg3) {
if (versionCheckSucceed) {
// 判断当前点击事件位置和上一次点击事件位置是否相同 ,不同则更新writeList
if (position != lastPosition) {
updataWriteList();
}
if (writeList.size() != 0) {
// 若此次点击的model在读取到的集合中
Device device = getDeviceFromModel(modelList.get(position));
if (device != null) {
setModelConfig(device);
} else {
setModelConfig(mDefaultDevice);
}
} else {
// 若此次点击的model不在读取集合中,将各个设置项置为默认状态
setModelConfig(mDefaultDevice);
}
lastPosition = position;
}
}
/**
* 根据传进model字符串获取Device
*
* @return Device
*/
public Device getDeviceFromModel(String model) {
Device device = null;
for (Device d : writeList) {
if (d.getModel().equals(model)) {
device = d;
}
}
return device;
}
// 在切换model或点击保存时将页面信息保存到内存中
private void updataWriteList() {
// 此处判断 此次要存到内存中的Device是否之前设置过,若设置过则把之前的remove掉
Iterator<Device> iterator = writeList.iterator();
while (iterator.hasNext()) {
Device d = iterator.next();
if (d.getModel().equals(modelList.get(lastPosition))) {
iterator.remove(); // 注意这个地方
}
}
Device device = new Device();
device.setModel(modelList.get(lastPosition));
device.setEnable(cb_enable.isChecked());
device.setSerialPort(spinnerSerialPort.getSelectedItem().toString());
device.setBaudRate(Integer.parseInt(spinnerBaud.getSelectedItem().toString()));
initRadioBtn();
for (int i = 0; i < checkedRBs.size(); i++) {
btnList.add(checkedRBs.get(i).getText().toString());
}
device.setGpios(btnList);
writeList.add(device);
btnList.clear();
Log.i("writesize", writeList.size() + "");
}
// 获取GPIO状态对应的RadioGroup中的位置
private int getchildIndex(String state) {
if (state.equals("1")) {
return 0;
} else if (state.equals("0")) {
return 1;
} else if (state.equals("无")) {
return 2;
}
return -1;
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.saveBtn && versionCheckSucceed) {
updataWriteList();
// 储存writeList中的model字符串
List<String> bufList = new ArrayList<>();
for (Device d : writeList) {
bufList.add(d.getModel());
}
if (readList != null) {
for (Device rd : readList) {
Log.i("writesize", Boolean.toString(rd == null));
if (!bufList.contains(rd.getModel())) {
writeList.add(rd);
}
}
}
deviceModel.writeXML(writeList, rgList.size() / 2);
StmApplication.getInstance().showToastShort("success");
} else if (id == R.id.common_title_back_layout) {
setResult(RESULT_OK);
finish();
}
}
/**
* 动态加载GPIO区域控件
*
* @param release
*/
private void updataGPIOUI(String release) {
String[] valueStrings = new String[] { "1", "0", "无" };
if (release.equals("m10")) {
String[] m10_GPIO = getResources().getStringArray(R.array.m10_GPIO);
RelativeLayout onRelativeLayout = findViewById(R.id.relativeLayoutON_main);
addViewTo(m10_GPIO, valueStrings, onRelativeLayout, R.id.poweron);
RelativeLayout offRelativeLayout = findViewById(R.id.relativeLayoutOFF_main);
addViewTo(m10_GPIO, valueStrings, offRelativeLayout, R.id.poweroff);
} else if (release.equals("m10A")) {
String[] m10A_GPIO = getResources().getStringArray(R.array.m10A_GPIO);
RelativeLayout onRelativeLayout = findViewById(R.id.relativeLayoutON_main);
addViewTo(m10A_GPIO, valueStrings, onRelativeLayout, R.id.poweron);
RelativeLayout offRelativeLayout = findViewById(R.id.relativeLayoutOFF_main);
addViewTo(m10A_GPIO, valueStrings, offRelativeLayout, R.id.poweroff);
} else if (release.equals("m96")) {
String[] m96_GPIO = getResources().getStringArray(R.array.m96_GPIO);
RelativeLayout onRelativeLayout = findViewById(R.id.relativeLayoutON_main);
addViewTo(m96_GPIO, valueStrings, onRelativeLayout, R.id.poweron);
RelativeLayout offRelativeLayout = findViewById(R.id.relativeLayoutOFF_main);
addViewTo(m96_GPIO, valueStrings, offRelativeLayout, R.id.poweroff);
}
}
@SuppressWarnings("deprecation")
private void addViewTo(String[] m10_GPIO, String[] valueStrings, RelativeLayout relativeLayout, int startViewId) {
TextView textView1 = new TextView(mContext);
textView1.setId(R.id.special_define_set_text);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.RIGHT_OF, startViewId);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
params.setMargins(23, 0, 0, 0);
textView1.setLayoutParams(params);
textView1.setPadding(0, 15, 0, 20);
textView1.setText(m10_GPIO[0]);
textView1.setTextSize(13);
textView1.setTextColor(0xFF000000);
relativeLayout.addView(textView1);
/*********************** RadioButton ******************************/
RadioGroup radioGroup1 = new RadioGroup(mContext);
radioGroup1.setId(R.id.special_define_set_radio);
RelativeLayout.LayoutParams rgLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
rgLayoutParams.addRule(RelativeLayout.ALIGN_TOP, textView1.getId());
// rgLayoutParams.addRule(RelativeLayout.RIGHT_OF, tv.getId());
// rgLayoutParams.addRule(RelativeLayout.RIGHT_OF, textView1.getId());
rgLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
rgLayoutParams.setMargins(0, 0, 50, 0);
radioGroup1.setLayoutParams(rgLayoutParams);
radioGroup1.setOrientation(RadioGroup.HORIZONTAL);
for (int a = 0; a < valueStrings.length; a++) {
RadioButton rbButton = new RadioButton(mContext);
RadioGroup.LayoutParams rbParams = new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT);
rbButton.setLayoutParams(rbParams);
rbButton.setText(valueStrings[a]);
rbButton.setTextSize(12);
rbButton.setTextColor(0xFF000000);
rbButton.setId(1000 + a);
Bitmap b = null;
rbButton.setButtonDrawable(new BitmapDrawable(b));
Drawable drawable = getResources().getDrawable(R.drawable.abc_radio);
drawable.setBounds(0, 0, 50, 50);
rbButton.setCompoundDrawables(drawable, null, null, null);
rbButton.setPadding(5, 0, 0, 0);
radioGroup1.addView(rbButton);
if (a == 2) {
radioGroup1.check(rbButton.getId());
}
}
relativeLayout.addView(radioGroup1);
onTvList.add(textView1);
rgList.add(radioGroup1);
for (int i = 1; i < m10_GPIO.length; i++) {
// 设置
TextView textView = new TextView(mContext);
textView.setId(i);
RelativeLayout.LayoutParams tvParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
// tvParams.setMargins(15, 0, 0, 0); textView1
tvParams.addRule(RelativeLayout.ALIGN_LEFT, textView1.getId());
// Log.i("see", onTvList.size() + "");
// Log.i("see", "i-1" + " " + (i - 1) + " " + (onTvList.get(i -
// 1).getId()));
tvParams.addRule(RelativeLayout.BELOW, onTvList.get(i - 1).getId());
textView.setLayoutParams(tvParams);
textView.setPadding(0, 10, 0, 20);
textView.setText(m10_GPIO[i]);
textView.setTextSize(13);
textView.setTextColor(0xFF000000);
relativeLayout.addView(textView);
// RadioGroup
RadioGroup rGroup = new RadioGroup(mContext);
rGroup.setId(100 + i);
RelativeLayout.LayoutParams rgParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
rgParams.addRule(RelativeLayout.ALIGN_TOP, textView.getId());
// rgLayoutParams.addRule(RelativeLayout.RIGHT_OF, tv.getId());
rgParams.addRule(RelativeLayout.ALIGN_LEFT, radioGroup1.getId());
rGroup.setLayoutParams(rgParams);
rGroup.setOrientation(RadioGroup.HORIZONTAL);
for (int a = 0; a < valueStrings.length; a++) {
RadioButton rbButton = new RadioButton(mContext);
RadioGroup.LayoutParams rbParams = new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT);
rbButton.setLayoutParams(rbParams);
rbButton.setText(valueStrings[a]);
rbButton.setTextSize(12);
rbButton.setTextColor(0xFF000000);
rbButton.setId(1000 + a);
Bitmap b = null;
rbButton.setButtonDrawable(new BitmapDrawable(b));
Drawable drawable = getResources().getDrawable(R.drawable.abc_radio);
drawable.setBounds(0, 0, 50, 50);
rbButton.setCompoundDrawables(drawable, null, null, null);
rbButton.setPadding(5, 0, 0, 0);
rGroup.addView(rbButton);
if (a == 2) {
rGroup.check(rbButton.getId());
}
}
relativeLayout.addView(rGroup);
onTvList.add(textView);
rgList.add(rGroup);
}
}
/**
* 实例化页面上方xml添加的控件
*/
@SuppressWarnings("deprecation")
private void initView() {
initTitle();
titleTxt.setText("设备基本设置");
backLayout.setOnClickListener(this);
btn_save = findViewById(R.id.saveBtn);
cb_enable = findViewById(R.id.enableCheckBox);
Bitmap b = null;
cb_enable.setButtonDrawable(new BitmapDrawable(b));
Drawable drawable = getResources().getDrawable(R.drawable.abc_checkbox);
drawable.setBounds(0, 0, 60, 60);
cb_enable.setCompoundDrawables(drawable, null, null, null);
cb_enable.setPadding(5, 0, 0, 0);
spinnerSerialPort = findViewById(R.id.serialport_spinner);
spinnerBaud = findViewById(R.id.baudRate_spinner);
spinnerModel = findViewById(R.id.model_spinner);
String SystemRelease = android.os.Build.VERSION.RELEASE;
if (SystemRelease.equals(_4_0_3)) {
// 根据不同机型 重新设置界面显示
updataGPIOUI("m10");
// 设置串口spinner中数据
String[] m10SerialPort = getResources().getStringArray(R.array.m10SerialPort);
for (int i = 0; i < m10SerialPort.length; i++) {
serialPortList.add(m10SerialPort[i]);
}
setDefaultDevice(rgList.size());
String[] modelsStrings = getResources().getStringArray(R.array.m10_models);
for (int i = 0; i < modelsStrings.length; i++) {
modelList.add(modelsStrings[i]);
}
} else if (SystemRelease.equals(_5_1_1)) {
if (getWindowManager().getDefaultDisplay().getHeight() == M10ADisplayHeight) {
// 根据不同机型 重新设置界面显示
updataGPIOUI("m10A");
String[] m10ASerialPort = getResources().getStringArray(R.array.m10ASerialPort);
for (int i = 0; i < m10ASerialPort.length; i++) {
serialPortList.add(m10ASerialPort[i]);
}
setDefaultDevice(rgList.size());
String[] modelsStrings = getResources().getStringArray(R.array.m10_models);
for (int i = 0; i < modelsStrings.length; i++) {
modelList.add(modelsStrings[i]);
}
} else {
// 根据不同机型 重新设置界面显示
updataGPIOUI("m96");
String[] m10ASerialPort = getResources().getStringArray(R.array.m96SerialPort);
for (int i = 0; i < m10ASerialPort.length; i++) {
serialPortList.add(m10ASerialPort[i]);
}
setDefaultDevice(rgList.size());
String[] modelsStrings = getResources().getStringArray(R.array.m96_models);
for (int i = 0; i < modelsStrings.length; i++) {
modelList.add(modelsStrings[i]);
}
}
} else {
versionCheckSucceed = false;
StmApplication.getInstance().showToastShort("此设备系统版本异常 请与技术支持人员联系");
}
}
private List<RadioButton> checkedRBs = new ArrayList<>();
/**
* 每次调用获得点击到的radiobutton
*/
public void initRadioBtn() {
checkedRBs.clear();
for (int i = 0; i < rgList.size(); i++) {
RadioButton checkedRb = findViewById(rgList.get(i).getCheckedRadioButtonId());
checkedRBs.add(checkedRb);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
setResult(RESULT_OK);
finish();
return true;
}
return super.dispatchKeyEvent(event);
}
}
...@@ -26,6 +26,7 @@ import com.stm.asset.http.RequestCallback; ...@@ -26,6 +26,7 @@ import com.stm.asset.http.RequestCallback;
import com.stm.asset.json.CommonStringJson; import com.stm.asset.json.CommonStringJson;
import com.stm.asset.model.InventoryInfo; import com.stm.asset.model.InventoryInfo;
import com.stm.asset.utils.NetworkUtil; import com.stm.asset.utils.NetworkUtil;
import com.stm.asset.utils.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -120,7 +121,7 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener { ...@@ -120,7 +121,7 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
public void onClick(View view) { public void onClick(View view) {
switch (view.getId()) { switch (view.getId()) {
case R.id.task_upload_btn: case R.id.task_upload_btn:
if (NetworkUtil.isNetworkAvailable(checkTaskActivity)) { if (NetworkUtil.isNetworkAvailable(checkTaskActivity) && !StringUtils.isEmptyOrNull(checkTaskActivity.getMainId())) {
if (inventoryInfoList != null && inventoryInfoList.size() > 0) { if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
List<String> strList = new ArrayList<>(); List<String> strList = new ArrayList<>();
for (InventoryInfo info : inventoryInfoList) { for (InventoryInfo info : inventoryInfoList) {
...@@ -142,7 +143,7 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener { ...@@ -142,7 +143,7 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
sbf.append("]"); sbf.append("]");
} }
checkTaskActivity.getLoadingDialog().show(); checkTaskActivity.getLoadingDialog().show();
HttpService.getInstance().scanInventory(sbf.toString(), scan_cb); HttpService.getInstance().scanInventory(checkTaskActivity.getMainId(), sbf.toString(), scan_cb);
} }
} else { } else {
StmApplication.getInstance().showToastShort(getString(R.string.net_settings)); StmApplication.getInstance().showToastShort(getString(R.string.net_settings));
...@@ -207,31 +208,15 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener { ...@@ -207,31 +208,15 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
public void onSuccess(CommonStringJson responseInfo) { public void onSuccess(CommonStringJson responseInfo) {
checkTaskActivity.getLoadingDialog().dismiss(); checkTaskActivity.getLoadingDialog().dismiss();
if (responseInfo.isSucess()) { if (responseInfo.isSucess()) {
String str = responseInfo.getRspData(); StmApplication.getInstance().showToastShort("上传成功");
Map<String, Object> failedMap = new Gson().fromJson(str, new TypeToken<Map<String, Object>>(){}.getType()); // 处理盘点数据状态
if (failedMap != null && failedMap.get("numList") != null) {
List<String> numList = (List<String>) failedMap.get("numList");
if (numList != null && numList.size() > 0) {
StmApplication.getInstance().showToastShort(String.valueOf(failedMap.get("msg")));
// 处理盘点失败数据
StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() { StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
@Override @Override
public void run() { public void run() {
if (inventoryInfoList != null && inventoryInfoList.size() > 0) { if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
for (InventoryInfo inventoryInfo : inventoryInfoList) { for (InventoryInfo inventoryInfo : inventoryInfoList) {
boolean success = true;
for (String itemStr : numList) {
if (itemStr.equals(inventoryInfo.getNumber())) {
success = false;
}
}
if (success) {
inventoryInfo.setStatus("2"); inventoryInfo.setStatus("2");
inventoryInfoDao.updateInventory(inventoryInfo); inventoryInfoDao.updateInventory(inventoryInfo);
} else {
inventoryInfo.setStatus("1");
inventoryInfoDao.updateInventory(inventoryInfo);
}
} }
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() { StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override @Override
...@@ -242,12 +227,47 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener { ...@@ -242,12 +227,47 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
} }
} }
}); });
} else { // String str = responseInfo.getRspData();
StmApplication.getInstance().showToastShort("上传成功"); // Map<String, Object> failedMap = new Gson().fromJson(str, new TypeToken<Map<String, Object>>(){}.getType());
} // if (failedMap != null && failedMap.get("numList") != null) {
} else { // List<String> numList = (List<String>) failedMap.get("numList");
StmApplication.getInstance().showToastShort("上传成功"); // if (numList != null && numList.size() > 0) {
} // StmApplication.getInstance().showToastShort(String.valueOf(failedMap.get("msg")));
// // 处理盘点失败数据
// StmApplication.getInstance().getAppExecutors().diskIO().execute(new Runnable() {
// @Override
// public void run() {
// if (inventoryInfoList != null && inventoryInfoList.size() > 0) {
// for (InventoryInfo inventoryInfo : inventoryInfoList) {
// boolean success = true;
// for (String itemStr : numList) {
// if (itemStr.equals(inventoryInfo.getNumber())) {
// success = false;
// }
// }
// if (success) {
// inventoryInfo.setStatus("2");
// inventoryInfoDao.updateInventory(inventoryInfo);
// } else {
// inventoryInfo.setStatus("1");
// inventoryInfoDao.updateInventory(inventoryInfo);
// }
// }
// StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
// @Override
// public void run() {
// checkTaskActivity.refreshData();
// }
// });
// }
// }
// });
// } else {
// StmApplication.getInstance().showToastShort("上传成功");
// }
// } else {
// StmApplication.getInstance().showToastShort("上传成功");
// }
} else { } else {
StmApplication.getInstance().showToastShort(responseInfo.getRspMsg()); StmApplication.getInstance().showToastShort(responseInfo.getRspMsg());
} }
......
package com.stm.asset.page;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AbsListView;
import android.widget.RelativeLayout;
import androidx.annotation.Nullable;
import com.stm.asset.R;
import com.stm.asset.adapter.TaskListAdapter;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.StmApplication;
import com.stm.asset.http.HttpException;
import com.stm.asset.http.HttpService;
import com.stm.asset.http.RequestCallback;
import com.stm.asset.json.TaskListJson;
import com.stm.asset.utils.NetworkUtil;
import com.stm.asset.utils.ViewUtil;
import com.stm.asset.view.LoadingDialog;
import com.stm.asset.view.SwipeListView;
public class TaskListActivity extends BaseActivity {
private RelativeLayout noneLayout;
private SwipeListView listView;
private TaskListAdapter taskListAdapter;
private LoadingDialog loadingDialog;
private int pageNum = 0;
private final static int PAGE_SIZE = 10;
private boolean isLoadFinish;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_task_list);
initView();
}
private void initView() {
initTitle();
titleTxt.setText("盘点任务");
listView = findViewById(R.id.task_data_list);
listView.setRightViewWidth(ViewUtil.dip2px(this, 160));
listView.setOnScrollListener(new ListScrollListener());
taskListAdapter = new TaskListAdapter(this, listView.getRightViewWidth());
listView.setAdapter(taskListAdapter);
noneLayout = findViewById(R.id.task_data_none_layout);
loadingDialog = new LoadingDialog(this);
}
@Override
protected void onResume() {
super.onResume();
refreshData();
}
private void loadData() {
if (NetworkUtil.isNetworkAvailable(this)) {
loadingDialog.show();
StmApplication.getInstance().getAppExecutors().networkIO().execute(new Runnable() {
@Override
public void run() {
pageNum++;
HttpService.getInstance().queryInventoryMainPage(pageNum, PAGE_SIZE, queryTask_cb);
}
});
} else {
StmApplication.getInstance().showToastShort(getString(R.string.net_settings));
}
}
private void refreshData() {
pageNum = 0;
loadData();
}
public void gotoCheckPage(String id) {
listView.hiddenCurrentRight();
Intent intent = new Intent();
intent.setClass(this, CheckTaskActivity.class);
intent.putExtra("mainId", id);
startActivity(intent);
}
private RequestCallback<TaskListJson> queryTask_cb = new RequestCallback<TaskListJson>(TaskListJson.class) {
@Override
public void onSuccess(TaskListJson responseInfo) {
StmApplication.getInstance().getAppExecutors().mainThread().execute(new Runnable() {
@Override
public void run() {
loadingDialog.dismiss();
if (responseInfo.isSucess()) {
taskListAdapter.setData(responseInfo.getRspData().getList(), pageNum == 1);
isLoadFinish = (pageNum == Integer.parseInt(responseInfo.getRspData().getPages()));
} else {
StmApplication.getInstance().showToastShort(responseInfo.getRspMsg());
isLoadFinish = true;
}
if (taskListAdapter.getCount() == 0) {
noneLayout.setVisibility(View.VISIBLE);
} else {
noneLayout.setVisibility(View.GONE);
}
}
});
}
@Override
public void onFailure(HttpException error, String msg) {
loadingDialog.dismiss();
if (taskListAdapter.getCount() == 0) {
noneLayout.setVisibility(View.VISIBLE);
}
StmApplication.getInstance().showToastShort(msg);
}
};
/**
* SCROLL_STATE_FLING:开始滑动 SCROLL_STATE_TOUCH_SCROLL:正在滑动
* SCROLL_STATE_IDLE:停止滑动
*/
private class ListScrollListener implements AbsListView.OnScrollListener {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
if (view.getLastVisiblePosition() == view.getCount() - 1) {
if (!isLoadFinish)
loadData();
}
}
}
}
}
package com.stm.asset.utils;
import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.SM2;
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
/**
* SM2国密工具类
* @author LIULEI
*/
public class SM2Util {
private final static String publicKey = "043aa5e5b9b5f4f74596e964359ac229c3f6fe0ec651b46406d42b345984b6abc1d0abbe82618a8dd56df08b0e9b7fd1a363e492ff3e24f140a7d1ced1f1aa9f20";
private final static String publicQKey = "043aa5e5b9b5f4f74596e964359ac229c3f6fe0ec651b46406d42b345984b6abc1d0abbe82618a8dd56df08b0e9b7fd1a363e492ff3e24f140a7d1ced1f1aa9f20";
private final static String privateKey = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgoy5Dj/P5Dw+xhkPLz7riyylgBOkUDKmxfb0a4PzVCgigCgYIKoEcz1UBgi2hRANCAAQ6peW5tfT3RZbpZDWawinD9v4OxlG0ZAbUKzRZhLarwdCrvoJhio3VbfCLDpt/0aNj5JL/PiTxQKfRztHxqp8g";
public static void getSm2KeyPair() {
SM2 sm2 = SmUtil.sm2();
/* 公钥 */
String publicKey = sm2.getPublicKeyBase64();
System.out.println("publicKey>>【" + publicKey + "】");
/* js端公钥 JS代码实现 SM2的方案,都是直接使用的私钥的d值和公钥的q值直接进行的加解密,所以后端返回的最好是从公钥里面提取的q值,以q值作为js端的加密公钥 */
String publicQKey = HexUtil.encodeHexStr(((BCECPublicKey)sm2.getPublicKey()).getQ().getEncoded(false));
System.out.println("publicQKey>>【" + publicQKey + "】");
/* 私钥 */
String privateKey = sm2.getPrivateKeyBase64();
System.out.println("privateKey>>【" + privateKey + "】");
}
/**
* 公钥加密
* @param data
* @param publicKey
* @return
*/
public static String encrypt(String data, String publicKey) {
SM2 sm2 = SmUtil.sm2(null, publicKey);
String encryptStr = sm2.encryptBcd(data, KeyType.PublicKey);
return encryptStr;
}
/**
* 公钥加密
* @param data
* @return
*/
public static String encrypt(String data) {
return encrypt(data, publicKey);
}
/**
* 私钥解密 公钥加密密文
* @param encryptStr
* @param privateKey
* @return
*/
public static String decrypt(String encryptStr, String privateKey) {
if (!encryptStr.startsWith("04")) {
encryptStr = "04".concat(encryptStr);
}
SM2 sm2 = SmUtil.sm2(privateKey, null);
String decryptStr = StrUtil.utf8Str(sm2.decryptFromBcd(encryptStr, KeyType.PrivateKey));
return decryptStr;
}
/**
* 私钥解密 公钥加密密文
* @param encryptStr
* @return
*/
public static String decrypt(String encryptStr) {
return decrypt(encryptStr, privateKey);
}
public static void main(String[] args) {
getSm2KeyPair();
}
}
package com.stm.asset.view;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ListView;
import com.stm.asset.R;
public class SwipeListView extends ListView {
private Boolean mIsHorizontal;
private View mPreItemView;
private View mCurrentItemView;
private float mFirstX;
private float mFirstY;
private int mRightViewWidth;
private final int mDuration = 100;
private final int mDurationStep = 10;
private boolean mIsShown;
private boolean isListviewSideSlip; //整个listview是否可以侧滑
public SwipeListView(Context context) {
this(context, null);
}
public SwipeListView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public SwipeListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.swipelistviewstyle);
// 获取自定义属性和默认值
mRightViewWidth = (int) mTypedArray.getDimension(R.styleable.swipelistviewstyle_right_width, 200);
mTypedArray.recycle();
}
private int getCusRightViewWidth() {
if (mCurrentItemView != null) {
try {
int itemCount = (Integer) mCurrentItemView.getTag(R.id.right_item);
if (itemCount != 0)
return itemCount * mRightViewWidth;
return mRightViewWidth;
} catch (Exception e) {
}
}
return mRightViewWidth;
}
/**
* return true, deliver to listView. return false, deliver to child. if
* move, return true
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
float lastX = ev.getX();
float lastY = ev.getY();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mIsHorizontal = null;
mFirstX = lastX;
mFirstY = lastY;
int motionPosition = pointToPosition((int) mFirstX, (int) mFirstY);
if (motionPosition >= 0) {
View currentItemView = getChildAt(motionPosition
- getFirstVisiblePosition());
mPreItemView = mCurrentItemView;
mCurrentItemView = currentItemView;
}
break;
case MotionEvent.ACTION_MOVE:
float dx = lastX - mFirstX;
float dy = lastY - mFirstY;
if (Math.abs(dx) >= 5 && Math.abs(dy) >= 5) {
return true;
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
if (mIsShown
&& (mPreItemView != mCurrentItemView || isHitCurItemLeft(lastX))) {
/**
* 情况一: 一个Item的右边布局已经显示, 这时候点击任意一个item, 那么那个右边布局显示的item隐藏其右边布局
*/
hiddenRight(mPreItemView);
}
break;
}
return super.onInterceptTouchEvent(ev);
}
private boolean isHitCurItemLeft(float x) {
return x < getWidth() - getCusRightViewWidth();
}
/**
* @param dx
* @param dy
* @return judge if can judge scroll direction
*/
private boolean judgeScrollDirection(float dx, float dy) {
boolean canJudge = true;
if (Math.abs(dx) > 50 && Math.abs(dx) > 2 * Math.abs(dy)) {
mIsHorizontal = true;
} else if (Math.abs(dy) > 50 && Math.abs(dy) > 2 * Math.abs(dx)) {
mIsHorizontal = false;
} else {
canJudge = false;
}
return canJudge;
}
/**
* return false, can't move any direction. return true, cant't move
* vertical, can move horizontal. return super.onTouchEvent(ev), can move
* both.
*/
@SuppressLint("ResourceType")
@Override
public boolean onTouchEvent(MotionEvent ev) {
float lastX = ev.getX();
float lastY = ev.getY();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
if (mCurrentItemView != null && mCurrentItemView.getId() != 1111 && !isListviewSideSlip) {
float dx = lastX - mFirstX;
float dy = lastY - mFirstY;
if (mIsHorizontal == null) {
if (!judgeScrollDirection(dx, dy)) {
break;
}
}
if (mIsHorizontal) {
if (mIsShown && mPreItemView != mCurrentItemView) {
/**
* 情况二: 一个Item的右边布局已经显示,
* 这时候左右滑动另外一个item,那个右边布局显示的item隐藏其右边布局
* 向左滑动只触发该情况,向右滑动还会触发情况五
*/
hiddenRight(mPreItemView);
}
if (mIsShown && mPreItemView == mCurrentItemView) {
dx = dx - getCusRightViewWidth();
}
if (dx < 0 && dx > -getCusRightViewWidth()) {
mCurrentItemView.scrollTo((int) (-dx), 0);
}
return true;
} else {
if (mIsShown) {
/**
* 情况三: 一个Item的右边布局已经显示,
* 这时候上下滚动ListView,那么那个右边布局显示的item隐藏其右边布局
*/
hiddenRight(mPreItemView);
}
}
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
if (mCurrentItemView != null && mCurrentItemView.getId() != 1111 && !isListviewSideSlip) {
clearPressedState();
if (mIsShown) {
/**
* 情况四: 一个Item的右边布局已经显示, 这时候左右滑动当前一个item,那个右边布局显示的item隐藏其右边布局
*/
hiddenRight(mPreItemView);
}
if (mIsHorizontal != null && mIsHorizontal) {
if (mFirstX - lastX > getCusRightViewWidth() / 2) {
showRight(mCurrentItemView);
} else {
/**
* 情况五:
* <p>
* 向右滑动一个item,且滑动的距离超过了右边View的宽度的一半,隐藏之。
*/
hiddenRight(mCurrentItemView);
}
return true;
}
}
break;
}
return super.onTouchEvent(ev);
}
private void clearPressedState() {
try {
mCurrentItemView.setPressed(false);
setPressed(false);
refreshDrawableState();
} catch (Exception e) {
}
}
private void showRight(View view) {
Message msg = new MoveHandler().obtainMessage();
msg.obj = view;
msg.arg1 = view.getScrollX();
msg.arg2 = getCusRightViewWidth();
msg.sendToTarget();
mIsShown = true;
}
private void hiddenRight(View view) {
if (mCurrentItemView == null || view == null) {
return;
}
Message msg = new MoveHandler().obtainMessage();//
msg.obj = view;
msg.arg1 = view.getScrollX();
msg.arg2 = 0;
msg.sendToTarget();
mIsShown = false;
}
public void hiddenCurrentRight() {
hiddenRight(mPreItemView);
}
/**
* show or hide right layout animation
*/
@SuppressLint("HandlerLeak")
class MoveHandler extends Handler {
int stepX = 0;
int fromX;
int toX;
View view;
private boolean mIsInAnimation = false;
private void animatioOver() {
mIsInAnimation = false;
stepX = 0;
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (stepX == 0) {
if (mIsInAnimation) {
return;
}
mIsInAnimation = true;
view = (View) msg.obj;
fromX = msg.arg1;
toX = msg.arg2;
stepX = (int) ((toX - fromX) * mDurationStep * 1.0 / mDuration);
if (stepX < 0 && stepX > -1) {
stepX = -1;
} else if (stepX > 0 && stepX < 1) {
stepX = 1;
}
if (Math.abs(toX - fromX) < 10) {
view.scrollTo(toX, 0);
animatioOver();
return;
}
}
fromX += stepX;
boolean isLastStep = (stepX > 0 && fromX > toX)
|| (stepX < 0 && fromX < toX);
if (isLastStep) {
fromX = toX;
}
view.scrollTo(fromX, 0);
invalidate();
if (!isLastStep) {
this.sendEmptyMessageDelayed(0, mDurationStep);
} else {
animatioOver();
}
}
}
public int getRightViewWidth() {
return mRightViewWidth;
}
public void setRightViewWidth(int mRightViewWidth) {
this.mRightViewWidth = mRightViewWidth;
}
public void deleteItem(View v) {
hiddenRight(v);
}
public void setListviewSideSlip(boolean isListviewSideSlip) {
this.isListviewSideSlip = isListviewSideSlip;
}
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@color/common_layout_click_color" android:state_pressed="true"></item>
<item android:drawable="@android:color/white"></item>
</selector>
\ No newline at end of file
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/common_txt_value" android:textColor="@color/common_txt_value"
android:textSize="@dimen/normal_text_size"/> android:textSize="@dimen/msmall_text_size"/>
</HorizontalScrollView> </HorizontalScrollView>
<LinearLayout <LinearLayout
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
android:layout_marginStart="@dimen/xxlarge_padding" android:layout_marginStart="@dimen/xxlarge_padding"
android:layout_marginEnd="@dimen/xlarge_padding" android:layout_marginEnd="@dimen/xlarge_padding"
android:background="@drawable/bg_shape_btn" android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size" android:textSize="@dimen/small_text_size"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:text="@string/inventory_btn_begin"/> android:text="@string/inventory_btn_begin"/>
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
android:layout_marginStart="@dimen/xlarge_padding" android:layout_marginStart="@dimen/xlarge_padding"
android:layout_marginEnd="@dimen/xxlarge_padding" android:layout_marginEnd="@dimen/xxlarge_padding"
android:background="@drawable/bg_shape_btn" android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size" android:textSize="@dimen/small_text_size"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:text="@string/inventory_btn_finish"/> android:text="@string/inventory_btn_finish"/>
...@@ -82,17 +82,12 @@ ...@@ -82,17 +82,12 @@
android:layout_marginStart="@dimen/xlarge_padding" android:layout_marginStart="@dimen/xlarge_padding"
android:layout_marginEnd="@dimen/xxlarge_padding" android:layout_marginEnd="@dimen/xxlarge_padding"
android:background="@drawable/bg_shape_btn" android:background="@drawable/bg_shape_btn"
android:textSize="@dimen/xlarge_text_size" android:textSize="@dimen/small_text_size"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:text="@string/inventory_btn_save"/> android:text="@string/inventory_btn_save"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -3,8 +3,7 @@ ...@@ -3,8 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
tools:context=".page.SetAndSaveActivity">
<include <include
android:id="@+id/base_set_title" android:id="@+id/base_set_title"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".page.TaskListActivity">
<include
android:id="@+id/task_list_title"
layout="@layout/view_common_title"
app:layout_constraintTop_toTopOf="parent"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="@dimen/top_title_bar_height_size"
app:layout_constraintBottom_toBottomOf="parent"
android:orientation="vertical">
<com.stm.asset.view.SwipeListView
android:id="@+id/task_data_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/task_list_margin_top"
android:layout_marginBottom="@dimen/task_list_margin_bottom"
android:dividerHeight="@dimen/xxsmall_padding"
android:divider="@color/colorPrimary"
android:fadingEdge="none"
android:overScrollMode="never"
android:scrollbars="none"/>
<include
android:id="@+id/task_data_none_layout"
layout="@layout/view_common_list_none"
android:visibility="gone" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/task_left_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/normal_padding"
android:background="@drawable/bg_common_layout_click_white"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/msmall_text_size"
android:text="@string/task_list_item_name"/>
<TextView
android:id="@+id/task_list_name_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/msmall_text_size"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/msmall_text_size"
android:text="@string/task_list_item_user"/>
<TextView
android:id="@+id/task_list_creator_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/msmall_text_size"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/check_task_item_height">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textColor="@color/common_txt_key"
android:textSize="@dimen/msmall_text_size"
android:text="@string/task_list_item_dept"/>
<TextView
android:id="@+id/task_list_dept_txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textColor="@color/common_txt_value"
android:textSize="@dimen/msmall_text_size"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/task_right_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/task_list_item_lien_color"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/task_right_inventory_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/colorPrimary"
android:gravity="center">
<TextView
android:id="@+id/pos_right_edit_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/task_list_inventory_btn"
android:textColor="@android:color/white"
android:textSize="@dimen/small_text_size" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="SlidingMenu">
<attr name="mode">
<enum name="left" value="0" />
<enum name="right" value="1" />
</attr>
<attr name="viewAbove" format="reference" />
<attr name="viewBehind" format="reference" />
<attr name="behindOffset" format="dimension" />
<attr name="behindWidth" format="dimension" />
<attr name="behindScrollScale" format="float" />
<attr name="touchModeAbove">
<enum name="margin" value="0" />
<enum name="fullscreen" value="1" />
</attr>
<attr name="touchModeBehind">
<enum name="margin" value="0" />
<enum name="fullscreen" value="1" />
</attr>
<attr name="shadowDrawable" format="reference" />
<attr name="shadowWidth" format="dimension" />
<attr name="fadeEnabled" format="boolean" />
<attr name="fadeDegree" format="float" />
<attr name="selectorEnabled" format="boolean" />
<attr name="selectorDrawable" format="reference" />
</declare-styleable>
<declare-styleable name="swipelistviewstyle">
<attr name="right_width" format="dimension"></attr>
</declare-styleable>
<declare-styleable name="memoAtt">
<attr name="length" format="integer"></attr>
<attr name="hint" format="string"></attr>
<attr name="textsize" format="integer"></attr>
<attr name="minline" format="integer"></attr>
</declare-styleable>
<declare-styleable name="chatcirleview">
<attr name="bgColor" format="color" />
<attr name="textSize" format="dimension" />
<attr name="textValue" format="string" />
</declare-styleable>
<declare-styleable name="ReportView">
<attr name="storkeWidth" format="integer"></attr>
<attr name="centerTextSize" format="dimension"></attr>
<attr name="titleTextSize" format="dimension"></attr>
<attr name="backgroundColor" format="color"></attr>
<attr name="showColor" format="color"></attr>
<attr name="textColor" format="color"></attr>
<attr name="textColorSecondary" format="color"></attr>
<attr name="marginTop" format="integer"></attr>
</declare-styleable>
<declare-styleable name="SwitchButton">
<attr name="tintColor" format="reference|color" />
<attr name="thumbTintColor" format="reference|color" />
<attr name="strokeWidth" format="reference|dimension" />
<attr name="isOn" format="reference|boolean" />
</declare-styleable>
<declare-styleable name="SideBarView">
<attr name="barstring" format="string" />
</declare-styleable>
</resources>
\ No newline at end of file
...@@ -8,6 +8,10 @@ ...@@ -8,6 +8,10 @@
<color name="common_txt_value">#202020</color> <color name="common_txt_value">#202020</color>
<color name="common_txt_key">#6b6b6b</color> <color name="common_txt_key">#6b6b6b</color>
<color name="common_while_click">#E2E2E2</color> <color name="common_while_click">#E2E2E2</color>
<color name="common_layout_click_color">#E2E2E2</color>
<!-- 盘点任务列表 -->
<color name="task_list_item_lien_color">#DBDBDB</color>
<!-- 太保安全键盘 --> <!-- 太保安全键盘 -->
<color name="deepDark">#222222</color> <color name="deepDark">#222222</color>
......
...@@ -44,6 +44,10 @@ ...@@ -44,6 +44,10 @@
<dimen name="inventory_btn_margin_bottom">30dp</dimen> <dimen name="inventory_btn_margin_bottom">30dp</dimen>
<!-- 盘点任务列表页面 --> <!-- 盘点任务列表页面 -->
<dimen name="task_list_margin_top">2dp</dimen>
<dimen name="task_list_margin_bottom">8dp</dimen>
<!-- 盘点任务列表页面 -->
<dimen name="check_task_item_height">35dp</dimen> <dimen name="check_task_item_height">35dp</dimen>
<dimen name="check_task_tab_height">50dp</dimen> <dimen name="check_task_tab_height">50dp</dimen>
<dimen name="check_task_margin_bottom">20dp</dimen> <dimen name="check_task_margin_bottom">20dp</dimen>
......
...@@ -2,4 +2,32 @@ ...@@ -2,4 +2,32 @@
<resources> <resources>
<item name="special_define_set_radio" type="id" /> <item name="special_define_set_radio" type="id" />
<item name="special_define_set_text" type="id" /> <item name="special_define_set_text" type="id" />
<item name="selected_view" type="id"/>
<item type="id" name="parent_id"></item>
<item type="id" name="child_id"></item>
<item type="id" name="bill_item_key"></item>
<item type="id" name="bill_item_pindex"></item>
<item type="id" name="bill_item_mindex"></item>
<item type="id" name="bill_item_index"></item>
<item type="id" name="right_item"></item>
<item type="id" name="bill_column_index"></item>
<item type="id" name="bill_column_code"></item>
<item type="id" name="auto_focus"/>
<item type="id" name="decode"/>
<item type="id" name="decode_failed"/>
<item type="id" name="decode_succeeded"/>
<item type="id" name="encode_failed"/>
<item type="id" name="encode_succeeded"/>
<item type="id" name="launch_product_query"/>
<item type="id" name="quit"/>
<item type="id" name="restart_preview"/>
<item type="id" name="return_scan_result"/>
<item type="id" name="search_book_contents_failed"/>
<item type="id" name="search_book_contents_succeeded"/>
</resources> </resources>
\ No newline at end of file
...@@ -22,6 +22,12 @@ ...@@ -22,6 +22,12 @@
<string name="inventory_count_text" formatted="false">已盘:%d个,总数:%d条,速度:%d个/秒,耗时:%d秒</string> <string name="inventory_count_text" formatted="false">已盘:%d个,总数:%d条,速度:%d个/秒,耗时:%d秒</string>
<string name="inventory_item_epc">资产编码</string> <string name="inventory_item_epc">资产编码</string>
<!-- 后台返回盘点任务列表页面 -->
<string name="task_list_item_name">任务名称</string>
<string name="task_list_item_user">创建人</string>
<string name="task_list_item_dept">创建部门</string>
<string name="task_list_inventory_btn">盘\u3000\点</string>
<!-- 盘点任务列表页面 --> <!-- 盘点任务列表页面 -->
<string name="check_task_item_name">资产名称</string> <string name="check_task_item_name">资产名称</string>
<string name="check_task_item_number">资产编码</string> <string name="check_task_item_number">资产编码</string>
......
...@@ -3,8 +3,12 @@ ...@@ -3,8 +3,12 @@
buildscript { buildscript {
repositories { repositories {
google() google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven { url'https://maven.aliyun.com/repository/public/' }
maven { url'https://maven.aliyun.com/repository/google/' }
maven { url'https://maven.aliyun.com/repository/jcenter/' }
maven { url'https://maven.aliyun.com/repository/central/' }
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.5.2' classpath 'com.android.tools.build:gradle:3.5.2'
...@@ -17,8 +21,12 @@ buildscript { ...@@ -17,8 +21,12 @@ buildscript {
allprojects { allprojects {
repositories { repositories {
google() google()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven { url'https://maven.aliyun.com/repository/public/' }
maven { url'https://maven.aliyun.com/repository/google/' }
maven { url'https://maven.aliyun.com/repository/jcenter/' }
maven { url'https://maven.aliyun.com/repository/central/' }
jcenter() jcenter()
} }
} }
......
...@@ -17,4 +17,5 @@ org.gradle.jvmargs=-Xmx1536m ...@@ -17,4 +17,5 @@ org.gradle.jvmargs=-Xmx1536m
android.useAndroidX=true android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX # Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true android.enableJetifier=true
# SM2
android.jetifier.blacklist=bcprov-jdk15on
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