Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
asset-app
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
asset-app
Commits
888e7960
Commit
888e7960
authored
Apr 04, 2023
by
youguoqing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
调整:适配UHF_U8设备
parent
c77517a7
Show whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
1449 additions
and
868 deletions
+1449
-868
app/build.gradle
+4
-2
app/release/app-release.apk
+0
-0
app/release/output.json
+2
-0
app/src/main/AndroidManifest.xml
+2
-1
app/src/main/java/com/fn/useries/operation/IUSeries.java
+5
-0
app/src/main/java/com/fn/useries/operation/M11U8Service.java
+6
-2
app/src/main/java/com/fn/useries/reader/server/ReaderBase.java
+2
-14
app/src/main/java/com/fn/useries/reader/server/ReaderHelper.java
+175
-175
app/src/main/java/com/stm/asset/adapter/InventoryAdapter.java
+16
-11
app/src/main/java/com/stm/asset/adapter/TaskListAdapter.java
+100
-0
app/src/main/java/com/stm/asset/base/ConfigKey.java
+4
-5
app/src/main/java/com/stm/asset/base/InterfaceKey.java
+5
-4
app/src/main/java/com/stm/asset/http/HttpService.java
+17
-4
app/src/main/java/com/stm/asset/http/HttpUtil.java
+8
-6
app/src/main/java/com/stm/asset/http/RequestParams.java
+16
-10
app/src/main/java/com/stm/asset/json/TaskJsonInfo.java
+65
-0
app/src/main/java/com/stm/asset/json/TaskListJson.java
+17
-0
app/src/main/java/com/stm/asset/model/TaskInfo.java
+60
-0
app/src/main/java/com/stm/asset/page/CheckTaskActivity.java
+13
-5
app/src/main/java/com/stm/asset/page/DeviceSetActivity.java
+31
-15
app/src/main/java/com/stm/asset/page/InventoryActivity.java
+30
-18
app/src/main/java/com/stm/asset/page/MainActivity.java
+3
-2
app/src/main/java/com/stm/asset/page/SetAndSaveActivity.java
+0
-553
app/src/main/java/com/stm/asset/page/TaskFragment.java
+46
-26
app/src/main/java/com/stm/asset/page/TaskListActivity.java
+142
-0
app/src/main/java/com/stm/asset/utils/SM2Util.java
+82
-0
app/src/main/java/com/stm/asset/view/SwipeListView.java
+304
-0
app/src/main/res/drawable/bg_common_layout_click_white.xml
+6
-0
app/src/main/res/layout/actitity_inventory.xml
+4
-10
app/src/main/res/layout/activity_setandsave.xml
+1
-2
app/src/main/res/layout/activity_task_list.xml
+42
-0
app/src/main/res/layout/view_task_list_item.xml
+122
-0
app/src/main/res/values/attrs.xml
+64
-0
app/src/main/res/values/colors.xml
+4
-0
app/src/main/res/values/dimens.xml
+4
-0
app/src/main/res/values/ids.xml
+29
-0
app/src/main/res/values/strings.xml
+6
-0
build.gradle
+10
-2
gradle.properties
+2
-1
No files found.
app/build.gradle
View file @
888e7960
...
...
@@ -13,7 +13,7 @@ android {
minSdkVersion
21
targetSdkVersion
28
versionCode
1
versionName
"1.
1
"
versionName
"1.
0
"
testInstrumentationRunner
"androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled
true
}
...
...
@@ -38,14 +38,16 @@ dependencies {
implementation
'androidx.legacy:legacy-support-v4:1.0.0'
implementation
'androidx.multidex:multidex:2.0.1'
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.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.okio:okio:1.17.4'
implementation
'com.tencent.bugly:crashreport:3.4.4'
implementation
'me.jessyan:autosize:1.1.2'
implementation
(
name:
'fn_U8'
,
ext:
'aar'
)
annotationProcessor
"androidx.room:room-compiler:2.2.3"
testImplementation
'junit:junit:4.12'
androidTestImplementation
'androidx.test.ext:junit:1.1.1'
androidTestImplementation
'androidx.test.espresso:espresso-core:3.2.0'
...
...
app/release/app-release.apk
0 → 100644
View file @
888e7960
File added
app/release/output.json
0 → 100644
View file @
888e7960
[{
"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
app/src/main/AndroidManifest.xml
View file @
888e7960
...
...
@@ -35,9 +35,10 @@
</intent-filter>
</activity>
<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.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.LoginActivity"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".page.DeviceSetActivity"
android:screenOrientation=
"portrait"
/>
...
...
app/src/main/java/com/fn/useries/operation/IUSeries.java
View file @
888e7960
...
...
@@ -44,4 +44,9 @@ public interface IUSeries {
*/
boolean
setParams
(
String
paraName
,
String
paraValue
);
/**
* 获取盘点效率
*/
int
getReadRate
();
}
app/src/main/java/com/fn/useries/operation/M11U8Service.java
View file @
888e7960
...
...
@@ -98,12 +98,12 @@ public class M11U8Service implements IUSeries{
if
(
paraName
.
equals
(
PARA_POWER
))
{
ReturnBean
returnBean
=
readerSeries
.
getPower
();
if
(
returnBean
.
isSuccess
())
{
returnBean
.
getMsg
();
return
return
Bean
.
getMsg
();
}
}
else
if
(
paraName
.
equals
(
TEMPERATURE
))
{
ReturnBean
returnBean
=
readerSeries
.
getReaderTemperature
();
if
(
returnBean
.
isSuccess
())
{
returnBean
.
getMsg
();
return
return
Bean
.
getMsg
();
}
}
else
if
(
paraName
.
equals
(
SESSIONSTATE
))
{
return
U8Property
.
getSessionState
()
+
""
;
...
...
@@ -128,4 +128,8 @@ public class M11U8Service implements IUSeries{
return
false
;
}
@Override
public
int
getReadRate
()
{
return
readerSeries
.
getM_curInventoryBuffer
().
nReadRate
;
}
}
app/src/main/java/com/fn/useries/reader/server/ReaderBase.java
View file @
888e7960
...
...
@@ -19,7 +19,6 @@ import com.fn.useries.reader.HEAD;
import
com.fn.useries.reader.MessageTran
;
import
com.fn.useries.utils.StringTool
;
import
com.fn.useries.utils.Tools
;
import
com.fntech.Loger
;
import
java.io.IOException
;
import
java.io.InputStream
;
...
...
@@ -94,14 +93,11 @@ public abstract class ReaderBase {
while
(
mShouldRunning
)
{
try
{
Log
.
i
(
"yourTag"
,
"start Read"
);
Loger
.
disk_log
(
"Read"
,
"start Read"
,
"U8"
);
int
nLenRead
=
mInStream
.
read
(
buff
);
Loger
.
disk_log
(
"Read Count"
,
"nLenRead == "
+
nLenRead
,
"U8"
);
if
(
nLenRead
<=
0
)
{
continue
;
}
Log
.
i
(
"yourTag"
,
"串口原始返回 ===>"
+
Tools
.
Bytes2HexString
(
buff
,
nLenRead
));
Loger
.
disk_log
(
"Read"
,
"串口原始返回 ===>"
+
Tools
.
Bytes2HexString
(
buff
,
nLenRead
),
"U8"
);
if
(
nLenRead
>
0
)
{
System
.
arraycopy
(
buff
,
0
,
btAryBuffer
,
len_have
,
nLenRead
);
len_have
+=
nLenRead
;
...
...
@@ -129,7 +125,6 @@ public abstract class ReaderBase {
}
}
else
{
Log
.
e
(
"toolsdebug"
,
"异常情况!协议头错误"
);
Loger
.
disk_log
(
"Read"
,
"异常情况!协议头错误"
,
"M10_U8"
);
/*btAryBuffer = new byte[4096];
buff = new byte[512];*/
len_have
=
0
;
...
...
@@ -142,7 +137,6 @@ public abstract class ReaderBase {
}
}
catch
(
Exception
e
)
{
Log
.
e
(
"toolsdebug"
,
"读错误"
);
Loger
.
disk_log
(
"读错误"
,
"e="
+
e
.
toString
()
+
"\r\n"
+
e
.
getStackTrace
(),
"M10_U8"
);
onLostConnect
();
return
;
}
...
...
@@ -278,17 +272,11 @@ public abstract class ReaderBase {
synchronized
(
mOutStream
)
{
// 防止并发
mOutStream
.
write
(
btArySenderData
);
Log
.
e
(
"yourTag"
,
" 串口发送 ===> "
+
Tools
.
Bytes2HexString
(
btArySenderData
,
btArySenderData
.
length
));
Loger
.
disk_log
(
"Write"
,
StringTool
.
byteArrayToString
(
btArySenderData
,
0
,
btArySenderData
.
length
),
"U8"
);
}
}
catch
(
IOException
e
)
{
Loger
.
disk_log
(
"写错误"
,
"e="
+
e
.
getMessage
()
+
"\r\n"
+
e
.
getStackTrace
(),
"M10_U8"
);
onLostConnect
();
return
-
1
;
}
catch
(
Exception
e
)
{
Loger
.
disk_log
(
"写错误"
,
"e="
+
e
.
getMessage
()
+
"\r\n"
+
e
.
getStackTrace
(),
"M10_U8"
);
return
-
1
;
}
...
...
@@ -683,7 +671,7 @@ public abstract class ReaderBase {
* 读写器地址(0xFF公用地址)
* @param btAryPassWord
* 标签访问密码,4字节
* @param btMem
b
ank
* @param btMem
B
ank
* 操作的数据区域(0x01:User Memory, 0x02:TID Memory, 0x03:EPC Memory,
* 0x04:Access Password, 0x05:Kill Password)
* @param btLockType
...
...
@@ -953,7 +941,7 @@ public abstract class ReaderBase {
/**
* 发送裸数据。
*
* @param bt
ReadId
* @param bt
AryBuf
* 读写器地址(0xFF公用地址)
* @return 成功 :0, 失败:-1
*/
...
...
app/src/main/java/com/fn/useries/reader/server/ReaderHelper.java
View file @
888e7960
...
...
@@ -204,17 +204,17 @@ public class ReaderHelper {
private
void
refreshReaderSetting
(
byte
btCmd
,
ReaderSetting
curReaderSetting
)
{
Intent
itent
=
new
Intent
(
BROADCAST_REFRESH_READER_SETTING
);
itent
.
putExtra
(
"cmd"
,
btCmd
);
settingNotify
();
//
settingNotify();
mLocalBroadcastManager
.
sendBroadcast
(
itent
);
}
private
void
settingNotify
()
{
Object
object
=
U8Series
.
object
;
synchronized
(
object
)
{
U8Series
.
havenotify
=
true
;
object
.
notifyAll
();
}
};
//
private void settingNotify() {
//
Object object = U8Series.object;
//
synchronized (object) {
//
U8Series.havenotify = true;
//
object.notifyAll();
//
}
//
};
/**
* 存盘标签(缓存模式),标签数据刷新。
...
...
@@ -453,18 +453,18 @@ public class ReaderHelper {
case
CMD
.
INVENTORY
:
processInventory
(
msgTran
);
break
;
case
CMD
.
READ_TAG
:
processReadTag
(
msgTran
);
break
;
case
CMD
.
WRITE_TAG
:
processWriteTag
(
msgTran
);
break
;
case
CMD
.
LOCK_TAG
:
processLockTag
(
msgTran
);
break
;
case
CMD
.
KILL_TAG
:
processKillTag
(
msgTran
);
break
;
//
case CMD.READ_TAG:
//
processReadTag(msgTran);
//
break;
//
case CMD.WRITE_TAG:
//
processWriteTag(msgTran);
//
break;
//
case CMD.LOCK_TAG:
//
processLockTag(msgTran);
//
break;
//
case CMD.KILL_TAG:
//
processKillTag(msgTran);
//
break;
case
CMD
.
SET_ACCESS_EPC_MATCH
:
processSetAccessEpcMatch
(
msgTran
);
break
;
...
...
@@ -522,7 +522,7 @@ public class ReaderHelper {
m_curReaderSetting
.
btReadId
=
msgTran
.
getReadId
();
m_curReaderSetting
.
blnSetResult
=
true
;
writeLog
(
strCmd
,
ERROR
.
SUCCESS
);
settingNotify
();
//
settingNotify();
return
;
}
else
{
strErrorCode
=
ERROR
.
format
(
btAryData
[
0
]);
...
...
@@ -534,7 +534,7 @@ public class ReaderHelper {
m_curReaderSetting
.
blnSetResult
=
false
;
m_curReaderSetting
.
strErrorCode
=
strErrorCode
;
}
settingNotify
();
//
settingNotify();
String
strLog
=
strCmd
+
"失败,失败原因: "
+
strErrorCode
;
writeLog
(
strLog
,
ERROR
.
FAIL
);
}
...
...
@@ -653,7 +653,7 @@ public class ReaderHelper {
return
;
}
else
{
Log
.
i
(
"toolsdebug"
,
"processGetOutputPower22222222222"
);
settingNotify
();
//
settingNotify();
strErrorCode
=
"未知错误"
;
}
...
...
@@ -717,16 +717,16 @@ public class ReaderHelper {
refreshReaderSetting
(
btCmd
,
m_curReaderSetting
);
writeLog
(
strCmd
,
ERROR
.
SUCCESS
);
settingNotify
();
//
settingNotify();
return
;
}
else
if
(
btAryData
.
length
==
0x01
)
{
Log
.
i
(
"toolsdebug"
,
"processGetReaderTemperature22"
);
strErrorCode
=
ERROR
.
format
(
btAryData
[
0
]);
settingNotify
();
//
settingNotify();
}
else
{
Log
.
i
(
"toolsdebug"
,
"processGetReaderTemperature33"
);
strErrorCode
=
"未知错误"
;
settingNotify
();
//
settingNotify();
}
String
strLog
=
strCmd
+
"失败,失败原因: "
+
strErrorCode
;
...
...
@@ -904,150 +904,150 @@ public class ReaderHelper {
runLoopInventroy
();
}
private
void
processReadTag
(
MessageTran
msgTran
)
{
byte
btCmd
=
msgTran
.
getCmd
();
byte
[]
btAryData
=
msgTran
.
getAryData
();
String
strCmd
=
CMD
.
format
(
btCmd
);
String
strErrorCode
=
""
;
Object
object
=
U8Series
.
readObject
;
Intent
itent
=
new
Intent
(
BROADCAST_REFRESH_OPERATE_TAG
);
if
(
btAryData
.
length
==
0x01
)
{
strErrorCode
=
ERROR
.
format
(
btAryData
[
0
]);
String
strLog
=
strCmd
+
"失败,失败原因: "
+
strErrorCode
;
synchronized
(
object
)
{
U8Series
.
getInstance
().
readDataString
=
null
;
U8Series
.
errorData
=
strLog
;
object
.
notifyAll
();
}
// BROADCAST_REFRESH_OPERATE_TAG
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
nDataLen
=
(
btAryData
[
nLen
-
3
]
&
0xFF
);
int
nEpcLen
=
(
btAryData
[
2
]
&
0xFF
)
-
nDataLen
-
4
;
String
strPC
=
StringTool
.
byteArrayToString
(
btAryData
,
3
,
2
);
String
strEPC
=
StringTool
.
byteArrayToString
(
btAryData
,
5
,
nEpcLen
);
String
strCRC
=
StringTool
.
byteArrayToString
(
btAryData
,
5
+
nEpcLen
,
2
);
String
strData
=
StringTool
.
byteArrayToString
(
btAryData
,
7
+
nEpcLen
,
nDataLen
);
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
=
nDataLen
;
tag
.
btAntId
=
btAntId
;
tag
.
nReadCount
=
nReadCount
;
m_curOperateTagBuffer
.
lsTagList
.
add
(
tag
);
// refreshOperateTag(btCmd, m_curOperateTagBuffer);
synchronized
(
object
)
{
U8Series
.
getInstance
().
readDataString
=
strData
;
Log
.
i
(
"see"
,
"notifyAll yes"
);
object
.
notifyAll
();
}
itent
.
putExtra
(
"cmd"
,
msgTran
.
getCmd
());
itent
.
putExtra
(
"type"
,
ERROR
.
SUCCESS
);
itent
.
putExtra
(
"msg"
,
strData
);
mLocalBroadcastManager
.
sendBroadcast
(
itent
);
// 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
();
}
// private void processReadTag(MessageTran msgTran) {
// byte btCmd = msgTran.getCmd();
// byte[] btAryData = msgTran.getAryData();
// String strCmd = CMD.format(btCmd);
// String strErrorCode = "";
// Object object = U8Series.readObject;
// Intent itent = new Intent(BROADCAST_REFRESH_OPERATE_TAG);
// if (btAryData.length == 0x01) {
// strErrorCode = ERROR.format(btAryData[0]);
// String strLog = strCmd + "失败,失败原因: " + strErrorCode;
// synchronized (object) {
// U8Series.getInstance().readDataString = null;
// U8Series.errorData = strLog;
// object.notifyAll();
// }
// // BROADCAST_REFRESH_OPERATE_TAG
// 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 nDataLen = (btAryData[nLen - 3] & 0xFF);
// int nEpcLen = (btAryData[2] & 0xFF) - nDataLen - 4;
//
// String strPC = StringTool.byteArrayToString(btAryData, 3, 2);
// String strEPC = StringTool.byteArrayToString(btAryData, 5, nEpcLen);
// String strCRC = StringTool.byteArrayToString(btAryData, 5 + nEpcLen, 2);
// String strData = StringTool.byteArrayToString(btAryData, 7 + nEpcLen, nDataLen);
//
// 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 = nDataLen;
// tag.btAntId = btAntId;
// tag.nReadCount = nReadCount;
// m_curOperateTagBuffer.lsTagList.add(tag);
// // refreshOperateTag(btCmd, m_curOperateTagBuffer);
//
// synchronized (object) {
// U8Series.getInstance().readDataString = strData;
//
// Log.i("see", "notifyAll yes");
// object.notifyAll();
// }
// itent.putExtra("cmd", msgTran.getCmd());
// itent.putExtra("type", ERROR.SUCCESS);
// itent.putExtra("msg", strData);
// mLocalBroadcastManager.sendBroadcast(itent);
//
// // writeLog(strCmd, ERROR.SUCCESS);
// }
// }
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);
}
}
// 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());
// 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 返回一致。
...
...
@@ -1055,9 +1055,9 @@ public class ReaderHelper {
* @param msgTran
* 消息包
*/
private
void
processLockTag
(
MessageTran
msgTran
)
{
processWriteTag
(
msgTran
);
}
//
private void processLockTag(MessageTran msgTran) {
//
processWriteTag(msgTran);
//
}
/**
* processKillTag 与 processLockTag 返回一致。
...
...
@@ -1065,9 +1065,9 @@ public class ReaderHelper {
* @param msgTran
* 消息包
*/
private
void
processKillTag
(
MessageTran
msgTran
)
{
processWriteTag
(
msgTran
);
}
//
private void processKillTag(MessageTran msgTran) {
//
processWriteTag(msgTran);
//
}
private
void
processSetAccessEpcMatch
(
MessageTran
msgTran
)
{
processSet
(
msgTran
);
...
...
app/src/main/java/com/stm/asset/adapter/InventoryAdapter.java
View file @
888e7960
package
com
.
stm
.
asset
.
adapter
;
import
android.content.Context
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.BaseAdapter
;
import
android.widget.TextView
;
import
com.fn.useries.reader.model.InventoryBuffer
;
import
com.fn.useries.utils.Tools
;
import
com.reader.helper.InventoryBuffer
;
import
com.stm.asset.R
;
import
com.stm.asset.utils.StringUtils
;
import
java.nio.charset.StandardCharsets
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -29,6 +28,7 @@ public class InventoryAdapter extends BaseAdapter {
public
InventoryAdapter
(
Context
context
)
{
inflater
=
LayoutInflater
.
from
(
context
);
dataList
=
new
ArrayList
<>();
}
@Override
...
...
@@ -65,10 +65,12 @@ public class InventoryAdapter extends BaseAdapter {
InventoryBuffer
.
InventoryTagMap
inventoryTagMap
=
dataList
.
get
(
position
);
// viewHolder.idTxt.setText(String.valueOf(position+1));
try
{
String
epcStr
=
inventoryTagMap
.
strEPC
;
byte
[]
bytes
=
Tools
.
stringToByteArray
(
epcStr
);
String
str
=
new
String
(
bytes
,
StandardCharsets
.
UTF_8
);
viewHolder
.
epcTxt
.
setText
(
str
);
// TODO 暂时特殊处理
// String epcStr = inventoryTagMap.strEPC;
// byte[] bytes = Tools.stringToByteArray(epcStr);
// String str = new String(bytes, StandardCharsets.UTF_8);
// viewHolder.epcTxt.setText(str);
viewHolder
.
epcTxt
.
setText
(
inventoryTagMap
.
strEPC
.
replaceAll
(
" "
,
""
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
...
...
@@ -97,11 +99,14 @@ public class InventoryAdapter extends BaseAdapter {
if
(!
StringUtils
.
isEmptyOrNull
(
epcStr
))
{
if
(!
hasItem
(
epcStr
))
{
try
{
byte
[]
bytes
=
Tools
.
stringToByteArray
(
epcStr
);
String
str
=
new
String
(
bytes
,
StandardCharsets
.
UTF_8
).
trim
();
if
(
StringUtils
.
isNumber
(
str
))
{
// TODO 暂时特殊处理
Log
.
i
(
"InventoryAdapter"
,
"epcStr:"
+
epcStr
.
replaceAll
(
" "
,
""
));
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
)
{
e
.
printStackTrace
();
}
...
...
app/src/main/java/com/stm/asset/adapter/TaskListAdapter.java
0 → 100644
View file @
888e7960
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
;
}
}
app/src/main/java/com/stm/asset/base/ConfigKey.java
View file @
888e7960
...
...
@@ -2,10 +2,9 @@ package com.stm.asset.base;
public
class
ConfigKey
{
public
final
static
String
GATEWAYIP
=
"mfms.citictrust.com.cn"
;
public
final
static
String
GATWAYPORT
=
""
;
// http://10.50.251.101 18081 测试地址
// https://fms.citictrust.com.cn 生产地址
public
final
static
String
GATEWAYIP
=
"stream.hulianmofang.cn"
;
public
final
static
String
GATWAYPORT
=
"18885"
;
// http://stream.hulianmofang.cn 18885 演示地址
public
final
static
String
PLAYFORM
=
"FMPAPP"
;
// CJFKAPP 长江养老
...
...
@@ -14,6 +13,6 @@ public class ConfigKey {
public
final
static
String
SIGNATUREPASSWORD
=
"stream123"
;
// 测试环境请配置成stream123(生产环境具体再通知)
public
final
static
String
HTTPS_CERTIFICATION_NAME
=
"feiyongmofang.cer"
;
public
final
static
boolean
DEBUG
=
true
;
// 是否打印测试数据
public
final
static
boolean
ISOPENHTTPS
=
tru
e
;
// 是否开启https请求方式
public
final
static
boolean
ISOPENHTTPS
=
fals
e
;
// 是否开启https请求方式
}
app/src/main/java/com/stm/asset/base/InterfaceKey.java
View file @
888e7960
...
...
@@ -4,10 +4,11 @@ public class InterfaceKey {
private
final
static
String
GETWAY
=
"GATEWAY/"
;
public
final
static
String
UNIONLOGINAPP
=
GETWAY
+
"app/login"
;
// 登录
public
final
static
String
QURYPAGEHOMEUSERINFO
=
GETWAY
+
"app/quryPageHomeUserInfo"
;
// 获取用户信息
public
final
static
String
QUERYVERSIONAPP
=
GETWAY
+
"queryAppVersionApp"
;
// 查询版本号
public
final
static
String
SCANINVENTORY
=
GETWAY
+
"app/ams/scanInventory"
;
// 上传资产编号
public
final
static
String
UNIONLOGINAPP
=
"FMP/"
+
"login"
;
// 登录
public
final
static
String
QURYPAGEHOMEUSERINFO
=
"FMP/"
+
"quryPageHomeUserInfo"
;
// 获取用户信息
public
final
static
String
QUERYVERSIONAPP
=
"FMP/"
+
"queryAppVersionApp"
;
// 查询版本号
public
final
static
String
QUERYINVENTORYMAINPAGE
=
"FMP/"
+
"ams/inventory/queryInventoryMainPage"
;
// 查询盘点任务
public
final
static
String
SCANINVENTORY
=
"FMP/"
+
"ams/inventory/mergeInventoryDetailByAssetNum"
;
// 上传资产编号
...
...
app/src/main/java/com/stm/asset/http/HttpService.java
View file @
888e7960
...
...
@@ -4,6 +4,8 @@ import com.stm.asset.base.InterfaceKey;
import
com.stm.asset.json.CommonMapJson
;
import
com.stm.asset.json.CommonStringJson
;
import
com.stm.asset.json.ListUserInfo
;
import
com.stm.asset.json.TaskListJson
;
import
com.stm.asset.utils.SM2Util
;
/**
* 类名称:HttpService
...
...
@@ -26,13 +28,14 @@ public class HttpService {
public
void
unionLoginApp
(
String
accout
,
String
password
,
RequestCallback
<
CommonStringJson
>
requestCallback
)
{
RequestParams
params
=
new
RequestParams
();
params
.
addBodyParameter
(
"username"
,
accout
);
params
.
addBodyParameter
(
"password"
,
password
);
params
.
addBodyParameter
(
"username"
,
SM2Util
.
encrypt
(
accout
)
);
params
.
addBodyParameter
(
"password"
,
SM2Util
.
encrypt
(
password
)
);
HttpUtil
.
getInstance
().
sendJson
(
InterfaceKey
.
UNIONLOGINAPP
,
params
,
requestCallback
);
}
public
void
quryPageHomeUserInfo
(
String
accessToken
,
RequestCallback
<
ListUserInfo
>
requestCallback
)
{
RequestParams
params
=
new
RequestParams
();
params
.
addHeader
(
"Acess-Token"
,
accessToken
);
params
.
addBodyParameter
(
"accessToken"
,
accessToken
);
HttpUtil
.
getInstance
().
sendJson
(
InterfaceKey
.
QURYPAGEHOMEUSERINFO
,
params
,
requestCallback
);
}
...
...
@@ -42,9 +45,19 @@ public class HttpService {
HttpUtil
.
getInstance
().
sendJson
(
InterfaceKey
.
QUERYVERSIONAPP
,
params
,
requestCallback
);
}
public
void
scanInventory
(
String
numberList
,
RequestCallback
<
CommonString
Json
>
requestCallback
)
{
public
void
queryInventoryMainPage
(
int
pageNum
,
int
pageSize
,
RequestCallback
<
TaskList
Json
>
requestCallback
)
{
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
);
}
...
...
app/src/main/java/com/stm/asset/http/HttpUtil.java
View file @
888e7960
...
...
@@ -42,10 +42,10 @@ public class HttpUtil {
e
.
printStackTrace
();
}
}
builder
.
callTimeout
(
6
000
,
TimeUnit
.
MILLISECONDS
);
builder
.
connectTimeout
(
6
000
,
TimeUnit
.
MILLISECONDS
);
builder
.
readTimeout
(
3
0000
,
TimeUnit
.
MILLISECONDS
);
builder
.
writeTimeout
(
3
0000
,
TimeUnit
.
MILLISECONDS
);
builder
.
callTimeout
(
20
000
,
TimeUnit
.
MILLISECONDS
);
builder
.
connectTimeout
(
20
000
,
TimeUnit
.
MILLISECONDS
);
builder
.
readTimeout
(
6
0000
,
TimeUnit
.
MILLISECONDS
);
builder
.
writeTimeout
(
6
0000
,
TimeUnit
.
MILLISECONDS
);
okHttpClient
=
builder
.
build
();
}
...
...
@@ -70,12 +70,13 @@ public class HttpUtil {
Log
.
i
(
"HttpUtil"
,
String
.
format
(
"请求方法: %s"
,
url
));
builder
.
url
(
url
);
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
())
{
builder
.
header
(
headerEntry
.
getKey
(),
headerEntry
.
getValue
());
}
}
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()));
// builder.post(requestBody);
FormBody
.
Builder
bodyBuilder
=
new
FormBody
.
Builder
();
...
...
@@ -123,12 +124,13 @@ public class HttpUtil {
Log
.
i
(
"HttpUtil"
,
String
.
format
(
"请求方法: %s"
,
url
));
builder
.
url
(
url
);
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
())
{
builder
.
header
(
headerEntry
.
getKey
(),
headerEntry
.
getValue
());
}
}
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()));
// builder.post(requestBody);
FormBody
.
Builder
bodyBuilder
=
new
FormBody
.
Builder
();
...
...
app/src/main/java/com/stm/asset/http/RequestParams.java
View file @
888e7960
...
...
@@ -19,6 +19,7 @@ public class RequestParams {
private
Map
<
String
,
String
>
bodyParams
;
public
RequestParams
()
{
addCommonHead
();
addCommonParams
();
}
...
...
@@ -50,21 +51,27 @@ public class RequestParams {
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
(){
if
(
bodyParams
==
null
)
{
bodyParams
=
new
HashMap
<>();
}
bodyParams
.
put
(
"machinecode"
,
"
h5
"
);
bodyParams
.
put
(
"machinetype"
,
"
h5
"
);
bodyParams
.
put
(
"channelcode"
,
"
APP
"
);
bodyParams
.
put
(
"machinecode"
,
"
phone
"
);
bodyParams
.
put
(
"machinetype"
,
"
phone
"
);
bodyParams
.
put
(
"channelcode"
,
"
VUE
"
);
bodyParams
.
put
(
"terminalcode"
,
"fee"
);
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
app/src/main/java/com/stm/asset/json/TaskJsonInfo.java
0 → 100644
View file @
888e7960
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
;
}
}
app/src/main/java/com/stm/asset/json/TaskListJson.java
0 → 100644
View file @
888e7960
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
;
}
}
app/src/main/java/com/stm/asset/model/TaskInfo.java
0 → 100644
View file @
888e7960
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
;
}
}
app/src/main/java/com/stm/asset/page/CheckTaskActivity.java
View file @
888e7960
...
...
@@ -31,6 +31,7 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
private
TaskFragment
unfinishedTaskFgm
;
private
TaskFragment
finishedTaskFgm
;
private
LoadingDialog
loadingDialog
;
private
String
mainId
=
null
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -41,12 +42,15 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
private
void
initView
()
{
initTitle
();
titleTxt
.
setText
(
"盘点任务"
);
titleTxt
.
setText
(
"资产盘点"
);
if
(
getIntent
().
getExtras
()
!=
null
)
{
mainId
=
getIntent
().
getExtras
().
getString
(
"mainId"
);
}
findViewById
(
R
.
id
.
common_title_back_layout
).
setOnClickListener
(
this
);
unfinishedTxt
=
findViewById
(
R
.
id
.
task_unfinished_txt
);
finishedTxt
=
findViewById
(
R
.
id
.
task_finished_txt
);
unfinishedTxt
.
setText
(
"未盘点
任务
(0)"
);
finishedTxt
.
setText
(
"已完成
任务
"
);
unfinishedTxt
.
setText
(
"未盘点
资产
(0)"
);
finishedTxt
.
setText
(
"已完成
资产
"
);
unfinishedTxt
.
setSelected
(
true
);
finishedTxt
.
setSelected
(
false
);
unfinishedTxt
.
setOnClickListener
(
this
);
...
...
@@ -89,15 +93,19 @@ public class CheckTaskActivity extends BaseFragmentActivity implements View.OnCl
}
public
void
setUnfinishedNum
(
int
num
)
{
String
str
=
"未盘点
任务
("
+
num
+
")"
;
String
str
=
"未盘点
资产
("
+
num
+
")"
;
unfinishedTxt
.
setText
(
str
);
}
public
void
setFinishedNum
(
int
num
)
{
String
str
=
"已完成
任务
"
;
String
str
=
"已完成
资产
"
;
finishedTxt
.
setText
(
str
);
}
public
String
getMainId
()
{
return
mainId
;
}
public
LoadingDialog
getLoadingDialog
()
{
return
loadingDialog
;
}
...
...
app/src/main/java/com/stm/asset/page/DeviceSetActivity.java
View file @
888e7960
...
...
@@ -2,6 +2,7 @@ package com.stm.asset.page;
import
android.graphics.Color
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.util.Log
;
import
android.view.View
;
import
android.view.ViewGroup
;
...
...
@@ -19,7 +20,9 @@ import com.fn.useries.utils.MusicPlayer;
import
com.stm.asset.R
;
import
com.stm.asset.base.BaseActivity
;
import
com.stm.asset.base.StmApplication
;
import
com.stm.asset.utils.StringUtils
;
import
com.stm.asset.utils.ViewUtil
;
import
com.stm.asset.view.LoadingDialog
;
import
com.stm.asset.view.TextMoveLayout
;
/**
...
...
@@ -40,12 +43,15 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private
M11U8Service
mUSeries
;
private
int
screenWidth
;
private
boolean
firstIn
=
true
;
private
LoadingDialog
loadingDialog
;
@Override
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_device_set
);
initView
();
loadingDialog
=
new
LoadingDialog
(
this
);
}
private
void
initView
()
{
...
...
@@ -61,7 +67,7 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
powerLayout
=
findViewById
(
R
.
id
.
set_power_layout
);
powerSb
=
findViewById
(
R
.
id
.
set_power_sb
);
powerSb
.
setOnSeekBarChangeListener
(
new
OnSeekBarChangeListenerImp
());
powerSb
.
setMax
(
1
3
);
powerSb
.
setMax
(
3
3
);
layoutParams
=
new
ViewGroup
.
LayoutParams
(
screenWidth
,
40
);
temperatureEt
=
findViewById
(
R
.
id
.
set_temperature_et
);
...
...
@@ -81,10 +87,18 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
mUSeries
.
initService
();
powerLayout
.
removeAllViews
();
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
();
getInventoryParams
();
}
},
1500
);
}
}
@Override
...
...
@@ -95,16 +109,14 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private
void
getPower
()
{
try
{
Thread
.
sleep
(
800
);
String
outPowerSetParams
=
mUSeries
.
getParams
(
M11U8Service
.
PARA_POWER
);
Log
.
i
(
"DeviceSetActivity"
,
"M10_U8:getPower "
+
outPowerSetParams
);
if
(
outPowerSetParams
.
trim
().
equalsIgnoreCase
(
ERROR
.
RECEVICE_INCOMPLETE
))
{
MusicPlayer
.
getInstance
().
play
(
MusicPlayer
.
Type
.
MUSIC_ERROR
);
StmApplication
.
getInstance
().
showToastShort
(
getResources
().
getString
(
R
.
string
.
device_set_get_power_fail
)
+
" "
+
outPowerSetParams
);
return
;
}
StmApplication
.
getInstance
().
getAppExecutors
().
mainThread
().
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
refreshPowerView
(
outPowerSetParams
);
// 显示软件提示音
}
});
}
catch
(
Exception
e
)
{
Log
.
i
(
"DeviceSetActivity"
,
"M10_U8:getPowerParamsException "
+
e
.
toString
());
}
...
...
@@ -137,15 +149,19 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
temperatureEt
.
setText
(
""
);
try
{
String
strTemperature
=
mUSeries
.
getParams
(
M11U8Service
.
TEMPERATURE
);
if
(
strTemperature
.
trim
().
equalsIgnoreCase
(
ERROR
.
RECEVICE_INCOMPLETE
))
{
// 接收异常
MusicPlayer
.
getInstance
().
play
(
MusicPlayer
.
Type
.
MUSIC_ERROR
);
StmApplication
.
getInstance
().
showToastShort
(
ERROR
.
RECEVICE_INCOMPLETE
);
return
;
}
Log
.
i
(
"DeviceSetActivity"
,
"M10_U8:getTemperature "
+
strTemperature
);
if
(!
StringUtils
.
isEmptyOrNull
(
strTemperature
))
{
StmApplication
.
getInstance
().
getAppExecutors
().
mainThread
().
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
MusicPlayer
.
getInstance
().
play
(
MusicPlayer
.
Type
.
OK
);
temperatureEt
.
setText
(
strTemperature
);
}
catch
(
Exception
e
)
{
}
});
}
else
{
MusicPlayer
.
getInstance
().
play
(
MusicPlayer
.
Type
.
MUSIC_ERROR
);
}
}
catch
(
Exception
e
)
{
Log
.
i
(
"DeviceSetActivity"
,
"M10_U8:getTemperatureParamsException"
+
e
.
toString
());
e
.
printStackTrace
();
}
...
...
app/src/main/java/com/stm/asset/page/InventoryActivity.java
View file @
888e7960
...
...
@@ -2,6 +2,7 @@ package com.stm.asset.page;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.view.View
;
import
android.widget.Button
;
import
android.widget.ListView
;
...
...
@@ -11,9 +12,8 @@ import androidx.annotation.Nullable;
import
androidx.room.Room
;
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.reader.helper.InventoryBuffer
;
import
com.series.inter.InventoryInterface
;
import
com.stm.asset.R
;
import
com.stm.asset.adapter.InventoryAdapter
;
...
...
@@ -40,13 +40,12 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
private
TextView
txtCountTxt
;
private
M11U8Service
mUSeries
;
private
ReaderHelper
mReaderHelper
;
private
InventoryBuffer
m_curInventoryBuffer
;
private
Handler
mHandler
;
private
boolean
isInventory
;
private
long
mRefreshTime
;
private
InventoryAdapter
inventoryAdapter
;
private
InventoryInfoDao
inventoryInfoDao
;
private
int
inventoryTotal
=
0
;
// 盘存到的标签数
@Override
protected
void
onCreate
(
@Nullable
Bundle
savedInstanceState
)
{
...
...
@@ -55,8 +54,6 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
initView
();
mHandler
=
new
Handler
();
try
{
mReaderHelper
=
ReaderHelper
.
getDefaultHelper
();
m_curInventoryBuffer
=
mReaderHelper
.
getCurInventoryBuffer
();
InventoryInfoDatabase
database
=
Room
.
databaseBuilder
(
this
,
InventoryInfoDatabase
.
class
,
"inventoryInfoDemo"
).
build
();
inventoryInfoDao
=
database
.
inventoryInfoDao
();
mUSeries
=
M11U8Service
.
getInstance
();
...
...
@@ -103,14 +100,21 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
beginBtn
.
setText
(
R
.
string
.
inventory_btn_doing
);
isInventory
=
true
;
mRefreshTime
=
new
Date
().
getTime
();
inventoryTotal
=
0
;
mUSeries
.
startInventory
(
new
InventoryInterface
()
{
@Override
public
void
success
(
Object
obj
)
{
StmApplication
.
getInstance
().
getAppExecutors
().
mainThread
().
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
inventoryTotal
++;
InventoryBuffer
.
InventoryTagMap
tag
=
(
InventoryBuffer
.
InventoryTagMap
)
obj
;
List
<
InventoryBuffer
.
InventoryTagMap
>
list
=
new
ArrayList
<>();
list
.
add
(
tag
);
inventoryAdapter
.
setData
(
list
,
false
);
}
});
}
@Override
public
void
fail
(
String
msg
)
{
...
...
@@ -139,11 +143,14 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
List
<
InventoryInfo
>
insertList
=
new
ArrayList
<>();
for
(
InventoryBuffer
.
InventoryTagMap
map
:
dataList
)
{
try
{
String
epcStr
=
map
.
strEPC
;
byte
[]
bytes
=
Tools
.
stringToByteArray
(
epcStr
);
String
str
=
new
String
(
bytes
,
StandardCharsets
.
UTF_8
);
// TODO 暂时特殊处理
// String epcStr = map.strEPC;
// 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
.
setNumber
(
str
.
trim
(
));
inventoryInfo
.
setNumber
(
map
.
strEPC
.
replaceAll
(
" "
,
""
));
inventoryInfo
.
setStatus
(
"0"
);
inventoryInfo
.
setUserName
(
StmApplication
.
getInstance
().
getUserInfo
().
getUsername
());
insertList
.
add
(
inventoryInfo
);
...
...
@@ -159,6 +166,7 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
@Override
public
void
run
()
{
StmApplication
.
getInstance
().
showToastShort
(
"保存成功"
);
inventoryTotal
=
0
;
inventoryAdapter
.
setData
(
null
,
true
);
}
});
...
...
@@ -172,21 +180,25 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
private
Runnable
mRefreshRunnable
=
new
Runnable
()
{
public
void
run
()
{
StmApplication
.
getInstance
().
getAppExecutors
().
mainThread
().
execute
(
new
Runnable
()
{
@Override
public
void
run
()
{
refreshText
();
mHandler
.
postDelayed
(
this
,
2000
);
}
});
mHandler
.
postDelayed
(
this
,
1000
);
}
};
private
void
refreshText
()
{
String
countTxtFormat
=
InventoryActivity
.
this
.
getString
(
R
.
string
.
inventory_count_text
);
long
now
=
new
Date
().
getTime
();
String
text
=
String
.
format
(
countTxtFormat
,
inventoryAdapter
.
getCount
(),
mReaderHelper
.
getInventoryTotal
(),
m_curInventoryBuffer
.
nReadRate
,
(
now
-
mRefreshTime
)
/
1000
);
// List<InventoryBuffer.InventoryTagMap> list = m_curInventoryBuffer.lsTagList;
// if (list.size() > 0) {
// 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;
// StmApplication.getInstance().showToastShort(str);
// }
int
time
=
(
int
)
((
now
-
mRefreshTime
)
/
1000
);
if
(
time
==
0
)
{
time
=
1
;
}
int
rate
=
inventoryTotal
/
time
;
String
text
=
String
.
format
(
countTxtFormat
,
inventoryAdapter
.
getCount
(),
inventoryTotal
,
rate
,
time
);
txtCountTxt
.
setText
(
text
);
}
}
app/src/main/java/com/stm/asset/page/MainActivity.java
View file @
888e7960
...
...
@@ -101,7 +101,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
case
R
.
id
.
main_inventory_data_layout
:
if
(
userInfo
!=
null
)
{
Intent
gotoTaskIntent
=
new
Intent
();
gotoTaskIntent
.
setClass
(
MainActivity
.
this
,
CheckTask
Activity
.
class
);
gotoTaskIntent
.
setClass
(
MainActivity
.
this
,
TaskList
Activity
.
class
);
startActivity
(
gotoTaskIntent
);
}
else
{
Intent
loginIntent
=
new
Intent
();
...
...
@@ -119,6 +119,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
loginIntent
.
setClass
(
MainActivity
.
this
,
LoginActivity
.
class
);
startActivity
(
loginIntent
);
}
break
;
case
R
.
id
.
main_settings_layout
:
Intent
deviceSetIntent
=
new
Intent
();
deviceSetIntent
.
setClass
(
MainActivity
.
this
,
DeviceSetActivity
.
class
);
...
...
@@ -145,7 +146,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
}
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
);
dialog
.
setViewParams
(
new
LinearLayout
.
LayoutParams
(
dialog_width
,
-
2
));
dialog
.
show
();
...
...
app/src/main/java/com/stm/asset/page/SetAndSaveActivity.java
deleted
100644 → 0
View file @
c77517a7
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
);
}
}
app/src/main/java/com/stm/asset/page/TaskFragment.java
View file @
888e7960
...
...
@@ -26,6 +26,7 @@ import com.stm.asset.http.RequestCallback;
import
com.stm.asset.json.CommonStringJson
;
import
com.stm.asset.model.InventoryInfo
;
import
com.stm.asset.utils.NetworkUtil
;
import
com.stm.asset.utils.StringUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -120,7 +121,7 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
public
void
onClick
(
View
view
)
{
switch
(
view
.
getId
())
{
case
R
.
id
.
task_upload_btn
:
if
(
NetworkUtil
.
isNetworkAvailable
(
checkTaskActivity
))
{
if
(
NetworkUtil
.
isNetworkAvailable
(
checkTaskActivity
)
&&
!
StringUtils
.
isEmptyOrNull
(
checkTaskActivity
.
getMainId
())
)
{
if
(
inventoryInfoList
!=
null
&&
inventoryInfoList
.
size
()
>
0
)
{
List
<
String
>
strList
=
new
ArrayList
<>();
for
(
InventoryInfo
info
:
inventoryInfoList
)
{
...
...
@@ -142,7 +143,7 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
sbf
.
append
(
"]"
);
}
checkTaskActivity
.
getLoadingDialog
().
show
();
HttpService
.
getInstance
().
scanInventory
(
sbf
.
toString
(),
scan_cb
);
HttpService
.
getInstance
().
scanInventory
(
checkTaskActivity
.
getMainId
(),
sbf
.
toString
(),
scan_cb
);
}
}
else
{
StmApplication
.
getInstance
().
showToastShort
(
getString
(
R
.
string
.
net_settings
));
...
...
@@ -207,31 +208,15 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
public
void
onSuccess
(
CommonStringJson
responseInfo
)
{
checkTaskActivity
.
getLoadingDialog
().
dismiss
();
if
(
responseInfo
.
isSucess
())
{
String
str
=
responseInfo
.
getRspData
();
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
().
showToastShort
(
"上传成功"
);
// 处理盘点数据状态
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
...
...
@@ -242,12 +227,47 @@ public class TaskFragment extends BaseFragment implements View.OnClickListener {
}
}
});
}
else
{
StmApplication
.
getInstance
().
showToastShort
(
"上传成功"
);
}
}
else
{
StmApplication
.
getInstance
().
showToastShort
(
"上传成功"
);
}
// String str = responseInfo.getRspData();
// 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() {
// @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
{
StmApplication
.
getInstance
().
showToastShort
(
responseInfo
.
getRspMsg
());
}
...
...
app/src/main/java/com/stm/asset/page/TaskListActivity.java
0 → 100644
View file @
888e7960
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
();
}
}
}
}
}
app/src/main/java/com/stm/asset/utils/SM2Util.java
0 → 100644
View file @
888e7960
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
();
}
}
app/src/main/java/com/stm/asset/view/SwipeListView.java
0 → 100644
View file @
888e7960
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
;
}
}
app/src/main/res/drawable/bg_common_layout_click_white.xml
0 → 100644
View file @
888e7960
<?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
app/src/main/res/layout/actitity_inventory.xml
View file @
888e7960
...
...
@@ -41,7 +41,7 @@
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/common_txt_value"
android:textSize=
"@dimen/
norma
l_text_size"
/>
android:textSize=
"@dimen/
msmal
l_text_size"
/>
</HorizontalScrollView>
<LinearLayout
...
...
@@ -58,7 +58,7 @@
android:layout_marginStart=
"@dimen/xxlarge_padding"
android:layout_marginEnd=
"@dimen/xlarge_padding"
android:background=
"@drawable/bg_shape_btn"
android:textSize=
"@dimen/
xlarge
_text_size"
android:textSize=
"@dimen/
small
_text_size"
android:textColor=
"@android:color/white"
android:text=
"@string/inventory_btn_begin"
/>
...
...
@@ -70,7 +70,7 @@
android:layout_marginStart=
"@dimen/xlarge_padding"
android:layout_marginEnd=
"@dimen/xxlarge_padding"
android:background=
"@drawable/bg_shape_btn"
android:textSize=
"@dimen/
xlarge
_text_size"
android:textSize=
"@dimen/
small
_text_size"
android:textColor=
"@android:color/white"
android:text=
"@string/inventory_btn_finish"
/>
...
...
@@ -82,17 +82,12 @@
android:layout_marginStart=
"@dimen/xlarge_padding"
android:layout_marginEnd=
"@dimen/xxlarge_padding"
android:background=
"@drawable/bg_shape_btn"
android:textSize=
"@dimen/
xlarge
_text_size"
android:textSize=
"@dimen/
small
_text_size"
android:textColor=
"@android:color/white"
android:text=
"@string/inventory_btn_save"
/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/activity_setandsave.xml
View file @
888e7960
...
...
@@ -3,8 +3,7 @@
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.SetAndSaveActivity"
>
android:layout_height=
"match_parent"
>
<include
android:id=
"@+id/base_set_title"
...
...
app/src/main/res/layout/activity_task_list.xml
0 → 100644
View file @
888e7960
<?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
app/src/main/res/layout/view_task_list_item.xml
0 → 100644
View file @
888e7960
<?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
app/src/main/res/values/attrs.xml
0 → 100644
View file @
888e7960
<?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
app/src/main/res/values/colors.xml
View file @
888e7960
...
...
@@ -8,6 +8,10 @@
<color
name=
"common_txt_value"
>
#202020
</color>
<color
name=
"common_txt_key"
>
#6b6b6b
</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>
...
...
app/src/main/res/values/dimens.xml
View file @
888e7960
...
...
@@ -44,6 +44,10 @@
<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_tab_height"
>
50dp
</dimen>
<dimen
name=
"check_task_margin_bottom"
>
20dp
</dimen>
...
...
app/src/main/res/values/ids.xml
View file @
888e7960
...
...
@@ -2,4 +2,32 @@
<resources>
<item
name=
"special_define_set_radio"
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>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
888e7960
...
...
@@ -22,6 +22,12 @@
<string
name=
"inventory_count_text"
formatted=
"false"
>
已盘:%d个,总数:%d条,速度:%d个/秒,耗时:%d秒
</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_number"
>
资产编码
</string>
...
...
build.gradle
View file @
888e7960
...
...
@@ -3,8 +3,12 @@
buildscript
{
repositories
{
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
()
}
dependencies
{
classpath
'com.android.tools.build:gradle:3.5.2'
...
...
@@ -17,8 +21,12 @@ buildscript {
allprojects
{
repositories
{
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
()
}
}
...
...
gradle.properties
View file @
888e7960
...
...
@@ -17,4 +17,5 @@ org.gradle.jvmargs=-Xmx1536m
android.useAndroidX
=
true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier
=
true
# SM2
android.jetifier.blacklist
=
bcprov-jdk15on
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment