Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in
Toggle navigation
A
AnchorCollect_p
Project
Project
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hywang
AnchorCollect_p
Commits
f9235109
Commit
f9235109
authored
Oct 31, 2023
by
hywang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.增加换绑标签功能
parent
10459ada
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
708 additions
and
19 deletions
+708
-19
build.gradle
app/build.gradle
+2
-2
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+5
-0
VMFactory.java
...rc/main/java/com/phlx/anchorcollect_p/data/VMFactory.java
+3
-0
CattleResumeEntity.java
...a/com/phlx/anchorcollect_p/entity/CattleResumeEntity.java
+40
-0
BasicsCollectFragment.java
...lx/anchorcollect_p/ui/fragment/BasicsCollectFragment.java
+69
-1
BasicsCollectVM.java
.../phlx/anchorcollect_p/ui/fragment/vm/BasicsCollectVM.java
+39
-9
LabelChangeActivity.java
...x/anchorcollect_p/ui/labelchange/LabelChangeActivity.java
+90
-0
LabelChangeVM.java
...om/phlx/anchorcollect_p/ui/labelchange/LabelChangeVM.java
+293
-0
activity_label_change.xml
app/src/main/res/layout/activity_label_change.xml
+127
-0
fragment_basics_collect.xml
app/src/main/res/layout/fragment_basics_collect.xml
+39
-7
strings.xml
app/src/main/res/values/strings.xml
+1
-0
No files found.
app/build.gradle
View file @
f9235109
...
...
@@ -9,8 +9,8 @@ android {
applicationId
"com.phlx.anchorcollect_p"
minSdkVersion
21
targetSdkVersion
29
versionCode
1
2
versionName
"2.0.
6
"
versionCode
1
4
versionName
"2.0.
8
"
testInstrumentationRunner
"androidx.test.runner.AndroidJUnitRunner"
...
...
app/src/main/AndroidManifest.xml
View file @
f9235109
...
...
@@ -92,6 +92,11 @@
android:configChanges=
"keyboardHidden|orientation|screenSize"
android:launchMode=
"singleTask"
android:windowSoftInputMode=
"stateHidden|adjustResize"
/>
<activity
android:name=
".ui.labelchange.LabelChangeActivity"
android:configChanges=
"keyboardHidden|orientation|screenSize"
android:launchMode=
"singleTask"
android:windowSoftInputMode=
"stateHidden|adjustResize"
/>
<service
...
...
app/src/main/java/com/phlx/anchorcollect_p/data/VMFactory.java
View file @
f9235109
...
...
@@ -17,6 +17,7 @@ import com.phlx.anchorcollect_p.ui.fragment.vm.PerformanceVM;
import
com.phlx.anchorcollect_p.ui.fragment.vm.WeightManVM
;
import
com.phlx.anchorcollect_p.ui.home.HomeVM
;
import
com.phlx.anchorcollect_p.ui.info.CattleVM
;
import
com.phlx.anchorcollect_p.ui.labelchange.LabelChangeVM
;
import
com.phlx.anchorcollect_p.ui.login.LoginVM
;
import
com.phlx.anchorcollect_p.ui.main.MainVM
;
import
com.phlx.anchorcollect_p.ui.setting.SettingVM
;
...
...
@@ -104,6 +105,8 @@ public class VMFactory extends ViewModelProvider.NewInstanceFactory {
return
(
T
)
new
BindVM
(
mApplication
,
repository
);
}
else
if
(
modelClass
.
isAssignableFrom
(
SettingVM
.
class
))
{
return
(
T
)
new
SettingVM
(
mApplication
,
repository
);
}
else
if
(
modelClass
.
isAssignableFrom
(
LabelChangeVM
.
class
))
{
return
(
T
)
new
LabelChangeVM
(
mApplication
,
repository
);
}
else
if
(
modelClass
.
isAssignableFrom
(
SyncVM
.
class
))
{
return
(
T
)
new
SyncVM
(
mApplication
,
repository
);
...
...
app/src/main/java/com/phlx/anchorcollect_p/entity/CattleResumeEntity.java
View file @
f9235109
...
...
@@ -634,4 +634,44 @@ public class CattleResumeEntity extends BaseObservable implements Parcelable {
", remark='"
+
remark
+
'\''
+
'}'
;
}
public
void
copyEntity
(
CattleResumeEntity
cre
)
{
this
.
unid
=
cre
.
getUnid
();
this
.
registrationNo
=
cre
.
getRegistrationNo
();
this
.
individualNo
=
cre
.
getIndividualNo
();
this
.
circleNo
=
cre
.
getCircleNo
();
this
.
raiseType
=
cre
.
getRaiseType
();
this
.
raiseVarieties
=
cre
.
getRaiseVarieties
();
this
.
birthdate
=
cre
.
getBirthdate
();
this
.
birthHeavy
=
cre
.
getBirthHeavy
();
this
.
sex
=
cre
.
getSex
();
this
.
birthDifficulty
=
cre
.
getBirthDifficulty
();
this
.
isTwins
=
cre
.
getIsTwins
();
this
.
childTime
=
cre
.
getChildTime
();
this
.
grade
=
cre
.
getGrade
();
this
.
fatherReg
=
cre
.
getFatherReg
();
this
.
motherReg
=
cre
.
getMotherReg
();
this
.
fromMilkHeavy
=
cre
.
getFromMilkHeavy
();
this
.
health
=
cre
.
getHealth
();
this
.
junHeavy
=
cre
.
getJunHeavy
();
this
.
decAppScore
=
cre
.
getDecAppScore
();
this
.
photo
=
cre
.
getPhoto
();
this
.
photoPath
=
cre
.
getPhotoPath
();
this
.
status
=
cre
.
getStatus
();
this
.
isOut
=
cre
.
getIsOut
();
this
.
age
=
cre
.
getAge
();
this
.
colour
=
cre
.
getColour
();
this
.
inputTime
=
cre
.
getInputTime
();
this
.
deptId
=
cre
.
getDeptId
();
this
.
uploadStatus
=
cre
.
getUploadStatus
();
this
.
uploadTime
=
cre
.
getUploadTime
();
this
.
createBy
=
cre
.
getCreateBy
();
this
.
createTime
=
cre
.
getCreateTime
();
this
.
updateBy
=
cre
.
getUpdateBy
();
this
.
updateTime
=
cre
.
getUpdateTime
();
this
.
remark
=
cre
.
getRemark
();
}
}
app/src/main/java/com/phlx/anchorcollect_p/ui/fragment/BasicsCollectFragment.java
View file @
f9235109
...
...
@@ -69,7 +69,7 @@ public class BasicsCollectFragment extends BaseFragment<FragmentBasicsCollectBin
private
ImagePicker
mImagePicker
;
public
MaterialDialog
scanRfidDialog
;
public
MaterialDialog
scanRfidDialog
,
scanChangeLabelDialog
;
private
static
class
SingletonClassInstance
{
private
static
final
BasicsCollectFragment
instance
=
new
BasicsCollectFragment
();
...
...
@@ -297,6 +297,74 @@ public class BasicsCollectFragment extends BaseFragment<FragmentBasicsCollectBin
}).
show
();
}
});
viewModel
.
onChangeLabelEvent
.
observe
(
getActivity
(),
new
Observer
<
String
>()
{
@Override
public
void
onChanged
(
String
s
)
{
scanChangeLabelDialog
=
new
MaterialDialog
.
Builder
(
getActivity
())
.
title
(
"请扫描或输入原耳标"
)
// .iconRes(R.drawable.ic_logo)
.
canceledOnTouchOutside
(
false
)
.
autoDismiss
(
false
)
// .content("高频耳标")
// .widgetColor(Color.BLUE)//输入框光标的颜色
//前2个一个是hint一个是预输入的文字
.
input
(
"可视耳标"
,
""
,
new
MaterialDialog
.
InputCallback
()
{
@Override
public
void
onInput
(
@NonNull
MaterialDialog
dialog
,
CharSequence
input
)
{
Log
.
i
(
"scan"
,
"输入的是:"
+
input
);
}
})
.
neutralText
(
"扫描"
)
.
onNeutral
(
new
MaterialDialog
.
SingleButtonCallback
()
{
@Override
public
void
onClick
(
@NonNull
MaterialDialog
dialog
,
@NonNull
DialogAction
which
)
{
viewModel
.
scanFunction
=
2
;
viewModel
.
scanRfid
();
}
})
.
onPositive
(
new
MaterialDialog
.
SingleButtonCallback
()
{
@Override
public
void
onClick
(
@NonNull
MaterialDialog
dialog
,
@NonNull
DialogAction
which
)
{
// dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false);
String
registrationNo
=
dialog
.
getContentView
().
getText
().
toString
();
String
individualNo
=
dialog
.
getInputEditText
().
getText
().
toString
();
if
(
StringUtils
.
isEmpty
(
registrationNo
)
&&
StringUtils
.
isEmpty
(
individualNo
))
{
ToastUtils
.
showShort
(
"请扫描或者输入耳标!"
);
return
;
}
if
(!
StringUtils
.
isEmpty
(
registrationNo
)
&&
registrationNo
.
length
()
>
50
)
{
ToastUtils
.
showShort
(
"高频耳标长度非法,请重新扫描!"
);
return
;
}
if
(!
StringUtils
.
isEmpty
(
individualNo
)
&&
individualNo
.
length
()
>
25
)
{
ToastUtils
.
showShort
(
"可视耳标超长,请填写在25位内!"
);
return
;
}
viewModel
.
forwardChangeLabel
(
registrationNo
,
individualNo
);
dialog
.
dismiss
();
}
})
.
negativeText
(
"取消"
)
.
onNegative
(
new
MaterialDialog
.
SingleButtonCallback
()
{
@Override
public
void
onClick
(
@NonNull
MaterialDialog
dialog
,
@NonNull
DialogAction
which
)
{
dialog
.
dismiss
();
}
})
.
show
();
}
});
viewModel
.
setChangeLabelRfidValueEvent
.
observe
(
getActivity
(),
new
Observer
<
String
>()
{
@Override
public
void
onChanged
(
String
s
)
{
scanChangeLabelDialog
.
setContent
(
s
);
}
});
}
//选择框
...
...
app/src/main/java/com/phlx/anchorcollect_p/ui/fragment/vm/BasicsCollectVM.java
View file @
f9235109
...
...
@@ -5,6 +5,7 @@ import android.app.Application;
import
android.graphics.drawable.Drawable
;
import
android.media.AudioManager
;
import
android.media.SoundPool
;
import
android.os.Bundle
;
import
android.os.Environment
;
import
android.os.Handler
;
import
android.os.Message
;
...
...
@@ -17,6 +18,7 @@ import androidx.databinding.ObservableArrayList;
import
androidx.databinding.ObservableField
;
import
androidx.databinding.ObservableList
;
import
com.afollestad.materialdialogs.MaterialDialog
;
import
com.google.gson.Gson
;
import
com.google.gson.JsonObject
;
import
com.phlx.anchorcollect_p.App
;
...
...
@@ -39,6 +41,7 @@ import com.phlx.anchorcollect_p.event.EventMsg;
import
com.phlx.anchorcollect_p.event.EventTag
;
import
com.phlx.anchorcollect_p.ui.bind.BindActivity
;
import
com.phlx.anchorcollect_p.ui.fragment.list.CollectGridItem
;
import
com.phlx.anchorcollect_p.ui.labelchange.LabelChangeActivity
;
import
com.phlx.anchorcollect_p.ui.setting.SettingActivity
;
import
com.phlx.anchorcollect_p.ui.setting.SyncActivity
;
import
com.phlx.anchorcollect_p.util.BaseImageUtils
;
...
...
@@ -93,6 +96,9 @@ public class BasicsCollectVM extends BaseViewModel<Repository> implements OnInve
public
SingleLiveEvent
<
Boolean
>
onNotifyAllEvent
=
new
SingleLiveEvent
<>();
//true是清空页面
public
SingleLiveEvent
<
String
>
setRfidValueEvent
=
new
SingleLiveEvent
<>();
//设置弹窗的扫到的标签epc
public
SingleLiveEvent
<
String
>
setChangeLabelRfidValueEvent
=
new
SingleLiveEvent
<>();
//设置换绑标签弹窗的扫到的标签epc
public
SingleLiveEvent
<
String
>
onChangeLabelEvent
=
new
SingleLiveEvent
<>();
//换绑标签的弹窗
public
SingleLiveEvent
<
String
>
onShowDialogEvent
=
new
SingleLiveEvent
<>();
//弹窗提示
...
...
@@ -122,7 +128,7 @@ public class BasicsCollectVM extends BaseViewModel<Repository> implements OnInve
private
List
<
CattleResumeEntity
>
uploadData
;
public
int
scanFunction
=
0
;
//0 是普通扫描耳标,1 是弹出窗的扫描耳标
public
int
scanFunction
=
0
;
//0 是普通扫描耳标,1 是弹出窗的扫描耳标
, 2 是换绑耳标的扫描耳标
public
BasicsCollectVM
(
@NonNull
Application
application
,
Repository
model
)
{
...
...
@@ -281,7 +287,18 @@ public class BasicsCollectVM extends BaseViewModel<Repository> implements OnInve
public
BindingCommand
onSettingClick
=
new
BindingCommand
(
new
BindingAction
()
{
@Override
public
void
call
()
{
// if (Configs.isOnLine) {
startActivity
(
SettingActivity
.
class
);
// } else {
// onChangeLabelEvent.call();
// }
}
});
//设置
public
BindingCommand
onLabelChangeClick
=
new
BindingCommand
(
new
BindingAction
()
{
@Override
public
void
call
()
{
onChangeLabelEvent
.
call
();
}
});
...
...
@@ -365,6 +382,15 @@ public class BasicsCollectVM extends BaseViewModel<Repository> implements OnInve
onCardClickEvent
.
call
();
}
//跳转到换绑页面
public
void
forwardChangeLabel
(
String
epc
,
String
noticeNo
)
{
Bundle
mBundle
=
new
Bundle
();
mBundle
.
putString
(
"epc"
,
epc
);
mBundle
.
putString
(
"noticeNo"
,
noticeNo
);
startActivity
(
LabelChangeActivity
.
class
,
mBundle
);
}
private
void
queryCattleResume
(
QueryBuilder
<
CattleResumeEntity
>
builder
)
{
DbUtil
.
getInstance
().
setDbQueryCallBack
(
new
DbQueryCallBack
<
CattleResumeEntity
>()
{
...
...
@@ -505,8 +531,6 @@ public class BasicsCollectVM extends BaseViewModel<Repository> implements OnInve
}
}
}).
insertAsyncBatch
(
CattleResumeEntity
.
class
,
uploadData
);
}
...
...
@@ -535,12 +559,18 @@ public class BasicsCollectVM extends BaseViewModel<Repository> implements OnInve
};
private
void
checkEpc
(
String
epc
,
String
tid
)
{
ToastUtils
.
showShort
(
"盘点到标签:"
+
epc
+
"|停止盘点"
);
//
ToastUtils.showShort("盘点到标签:" + epc + "|停止盘点");
rfidTag
=
epc
+
tid
;
if
(
scanFunction
==
0
)
{
switch
(
scanFunction
)
{
case
0
:
initDataForRfid
(
epc
);
}
else
if
(
scanFunction
==
1
)
{
break
;
case
1
:
setRfidValueEvent
.
setValue
(
epc
);
break
;
case
2
:
setChangeLabelRfidValueEvent
.
setValue
(
epc
);
break
;
}
}
...
...
app/src/main/java/com/phlx/anchorcollect_p/ui/labelchange/LabelChangeActivity.java
0 → 100644
View file @
f9235109
package
com
.
phlx
.
anchorcollect_p
.
ui
.
labelchange
;
import
android.os.Bundle
;
import
android.view.KeyEvent
;
import
androidx.annotation.NonNull
;
import
androidx.lifecycle.Observer
;
import
androidx.lifecycle.ViewModelProviders
;
import
com.afollestad.materialdialogs.DialogAction
;
import
com.afollestad.materialdialogs.MaterialDialog
;
import
com.bigkoo.pickerview.view.TimePickerView
;
import
com.phlx.anchorcollect_p.BR
;
import
com.phlx.anchorcollect_p.R
;
import
com.phlx.anchorcollect_p.data.VMFactory
;
import
com.phlx.anchorcollect_p.databinding.ActivityLabelChangeBinding
;
import
com.phlx.anchorcollect_p.rfid.ModuleManager
;
import
com.phlx.anchorcollect_p.ui.base.BaseActivity
;
import
com.phlx.anchorcollect_p.util.ImagePicker
;
public
class
LabelChangeActivity
extends
BaseActivity
<
ActivityLabelChangeBinding
,
LabelChangeVM
>
{
private
TimePickerView
pvTime
;
private
ImagePicker
markImagePicker
;
private
String
epc
,
noticeNo
;
@Override
public
int
initContentView
(
Bundle
savedInstanceState
)
{
return
R
.
layout
.
activity_label_change
;
}
@Override
public
int
initVariableId
()
{
return
BR
.
viewModel
;
}
@Override
public
void
initParam
()
{
super
.
initParam
();
Bundle
_bundle
=
getIntent
().
getExtras
();
if
(
_bundle
!=
null
)
{
epc
=
_bundle
.
getString
(
"epc"
);
noticeNo
=
_bundle
.
getString
(
"noticeNo"
);
}
}
@Override
public
LabelChangeVM
initViewModel
()
{
VMFactory
factory
=
VMFactory
.
getInstance
(
getApplication
());
return
ViewModelProviders
.
of
(
this
,
factory
).
get
(
LabelChangeVM
.
class
);
}
@Override
public
void
initData
()
{
super
.
initData
();
viewModel
.
initToolbar
(
epc
,
noticeNo
);
}
@Override
public
void
initViewObservable
()
{
super
.
initViewObservable
();
}
/**
* 监听Back键按下事件
*/
@Override
public
boolean
onKeyDown
(
int
keyCode
,
KeyEvent
event
)
{
if
(
keyCode
==
KeyEvent
.
KEYCODE_BACK
)
{
new
MaterialDialog
.
Builder
(
this
).
title
(
"系统提示"
).
content
(
"数据尚未保存,是否退出?"
).
positiveText
(
"确定"
).
negativeText
(
"取消"
).
onAny
(
new
MaterialDialog
.
SingleButtonCallback
()
{
@Override
public
void
onClick
(
@NonNull
MaterialDialog
dialog
,
@NonNull
DialogAction
which
)
{
if
(
which
==
DialogAction
.
POSITIVE
)
{
finish
();
}
}
}).
show
();
return
true
;
}
else
if
(
keyCode
==
782
)
{
// viewModel.photoOnClick.call();
}
return
super
.
onKeyDown
(
keyCode
,
event
);
}
}
app/src/main/java/com/phlx/anchorcollect_p/ui/labelchange/LabelChangeVM.java
0 → 100644
View file @
f9235109
package
com
.
phlx
.
anchorcollect_p
.
ui
.
labelchange
;
import
android.annotation.SuppressLint
;
import
android.app.Application
;
import
android.media.AudioManager
;
import
android.media.SoundPool
;
import
android.os.Handler
;
import
android.os.Message
;
import
android.util.Log
;
import
android.util.SparseIntArray
;
import
android.view.View
;
import
androidx.annotation.NonNull
;
import
androidx.databinding.ObservableField
;
import
com.phlx.anchorcollect_p.App
;
import
com.phlx.anchorcollect_p.Configs
;
import
com.phlx.anchorcollect_p.R
;
import
com.phlx.anchorcollect_p.data.Repository
;
import
com.phlx.anchorcollect_p.db.DbUtil
;
import
com.phlx.anchorcollect_p.db.interf.DbIDUCallBack
;
import
com.phlx.anchorcollect_p.db.interf.DbQueryCallBack
;
import
com.phlx.anchorcollect_p.entity.CattleResumeEntity
;
import
com.phlx.anchorcollect_p.rfid.ModuleManager
;
import
com.phlx.anchorcollect_p.ui.base.BackBarVM
;
import
com.phlx.anchorcollect_p.ui.login.LoginActivity
;
import
com.phlx.anchorcollect_p.util.TextUtil
;
import
com.uhf.structures.InventoryData
;
import
com.uhf.structures.InventoryParams
;
import
com.uhf.structures.OnInventoryListener
;
import
org.greenrobot.greendao.query.WhereCondition
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
me.goldze.mvvmhabit.binding.command.BindingCommand
;
import
me.goldze.mvvmhabit.bus.event.SingleLiveEvent
;
import
me.goldze.mvvmhabit.http.ResponseThrowable
;
import
me.goldze.mvvmhabit.utils.KLog
;
import
me.goldze.mvvmhabit.utils.RxUtils
;
import
me.goldze.mvvmhabit.utils.SPUtils
;
import
me.goldze.mvvmhabit.utils.StringUtils
;
import
me.goldze.mvvmhabit.utils.ToastUtils
;
public
class
LabelChangeVM
extends
BackBarVM
<
Repository
>
implements
OnInventoryListener
{
public
CattleResumeEntity
entity
=
new
CattleResumeEntity
();
private
List
<
CattleResumeEntity
>
uploadData
;
public
SingleLiveEvent
<
Boolean
>
initRFIDEvent
=
new
SingleLiveEvent
<>();
public
SingleLiveEvent
<
Boolean
>
uploadDataEvent
=
new
SingleLiveEvent
<>();
private
SimpleDateFormat
dateFormat
;
public
ObservableField
<
String
>
epc
=
new
ObservableField
<>();
public
ObservableField
<
String
>
noticeNo
=
new
ObservableField
<>();
private
boolean
isModify
;
private
SoundPool
soundPool
;
//盘点到标签时的提示音
private
SparseIntArray
musicId
;
private
boolean
isScan
=
false
;
//是否在扫描
private
String
tag
=
""
;
//扫描到的标记
public
LabelChangeVM
(
@NonNull
Application
application
,
Repository
model
)
{
super
(
application
,
model
);
soundPool
=
new
SoundPool
(
2
,
AudioManager
.
STREAM_MUSIC
,
5
);
musicId
=
new
SparseIntArray
();
musicId
.
put
(
1
,
soundPool
.
load
(
getApplication
(),
R
.
raw
.
readcard
,
1
));
musicId
.
put
(
2
,
soundPool
.
load
(
getApplication
(),
R
.
raw
.
failure
,
1
));
}
//初始化ToolBar
public
void
initToolbar
(
String
epc
,
String
noticeNo
)
{
setBackTitleText
(
getApplication
().
getResources
().
getString
(
R
.
string
.
label_change
));
setSettingVisibleObservable
(
View
.
GONE
);
setBackRightTextVisible
(
View
.
VISIBLE
);
setBackRightText
(
getApplication
().
getResources
().
getString
(
R
.
string
.
save
));
this
.
epc
.
set
(
epc
);
this
.
noticeNo
.
set
(
noticeNo
);
getCattleResume
();
}
@Override
public
void
onResume
()
{
super
.
onResume
();
isScan
=
false
;
tag
=
""
;
App
.
getInstance
().
getLinkage
().
setOnInventoryListener
(
this
);
}
private
void
initData
()
{
uploadData
=
new
ArrayList
<>();
epc
.
set
(
entity
.
getRegistrationNo
());
noticeNo
.
set
(
entity
.
getIndividualNo
());
// entity.notifyChange();
}
public
BindingCommand
onScanRfidClick
=
new
BindingCommand
(()
->
startInventory
());
@Override
protected
void
backRightTextOnClick
()
{
saveCattleResume
();
}
private
void
saveCattleResume
()
{
if
(
StringUtils
.
isEmpty
(
epc
.
get
())
&&
StringUtils
.
isEmpty
(
noticeNo
.
get
()))
{
ToastUtils
.
showShort
(
"请至少填一个耳标号!"
);
return
;
}
if
(!
StringUtils
.
isEmpty
(
epc
.
get
())
&&
epc
.
get
().
length
()
>
50
)
{
ToastUtils
.
showShort
(
"高频耳标长度非法,请重新扫描!"
);
return
;
}
if
(!
StringUtils
.
isEmpty
(
noticeNo
.
get
())
&&
noticeNo
.
get
().
length
()
>
25
)
{
ToastUtils
.
showShort
(
"可视耳标超长,请填写在25位内!"
);
return
;
}
int
checkResult
=
checkCattleResume
();
if
(
checkResult
!=
0
)
{
switch
(
checkResult
)
{
case
1
:
ToastUtils
.
showShort
(
"高频耳标已存在,请重新扫描!"
);
return
;
case
3
:
ToastUtils
.
showShort
(
"可视耳标已存在,请重新填写!"
);
return
;
}
}
if
(!
StringUtils
.
isEmpty
(
epc
.
get
()))
entity
.
setRegistrationNo
(
epc
.
get
());
if
(!
StringUtils
.
isEmpty
(
noticeNo
.
get
()))
entity
.
setIndividualNo
(
noticeNo
.
get
());
entity
.
setUploadStatus
(
"0"
);
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
entity
.
setUpdateBy
(
model
.
getUserName
());
entity
.
setUpdateTime
(
dateFormat
.
format
(
new
Date
(
System
.
currentTimeMillis
())));
entity
.
setDeptId
(
Long
.
parseLong
(
SPUtils
.
getInstance
().
getString
(
Configs
.
SP_DEPT_ID
)));
uploadData
.
add
(
entity
);
DbUtil
.
getInstance
().
setDbIDUCallBack
(
new
DbIDUCallBack
()
{
@Override
public
void
onNotification
(
boolean
result
)
{
if
(
result
)
{
ToastUtils
.
showShort
(
"保存"
+
getApplication
().
getResources
().
getString
(
R
.
string
.
label_change
)
+
"成功!"
);
finish
();
}
else
{
ToastUtils
.
showShort
(
"保存"
+
getApplication
().
getResources
().
getString
(
R
.
string
.
label_change
)
+
"失败!"
);
}
}
}).
insertAsyncBatch
(
CattleResumeEntity
.
class
,
uploadData
);
}
private
int
checkCattleResume
()
{
List
<
CattleResumeEntity
>
cattleResumeEntityList
=
DbUtil
.
getInstance
().
queryAll
(
CattleResumeEntity
.
class
);
if
(
cattleResumeEntityList
!=
null
&&
cattleResumeEntityList
.
size
()
>
0
)
{
for
(
CattleResumeEntity
cattleResumeEntity
:
cattleResumeEntityList
)
{
if
(
cattleResumeEntity
.
getUnid
().
equals
(
entity
.
getUnid
()))
{
continue
;
}
if
(!
StringUtils
.
isEmpty
(
epc
.
get
())
&&
epc
.
get
().
equals
(
cattleResumeEntity
.
getRegistrationNo
()))
{
return
1
;
}
if
(!
StringUtils
.
isEmpty
(
noticeNo
.
get
())
&&
noticeNo
.
get
().
equals
(
cattleResumeEntity
.
getIndividualNo
()))
{
return
3
;
}
}
return
0
;
}
else
{
return
0
;
}
}
@Override
public
void
getInventoryData
(
InventoryData
inventoryData
)
{
if
(
inventoryData
!=
null
)
{
Message
messenger
=
handler
.
obtainMessage
();
messenger
.
what
=
0x333
;
messenger
.
obj
=
inventoryData
;
handler
.
sendMessage
(
messenger
);
}
}
//开始盘点一次
public
void
startInventory
()
{
if
(!
isScan
)
{
App
.
getInstance
().
getLinkage
().
startInventory
(
1
,
0
);
tag
=
""
;
isScan
=
true
;
}
else
{
App
.
getInstance
().
getLinkage
().
stopInventory
();
isScan
=
false
;
}
}
@SuppressLint
(
"HandlerLeak"
)
private
Handler
handler
=
new
Handler
()
{
@Override
public
void
handleMessage
(
Message
msg
)
{
if
(
msg
.
what
==
0x333
)
{
InventoryData
inventoryData
=
(
InventoryData
)
msg
.
obj
;
if
(
inventoryData
.
getDataLength
()
>
0
&&
inventoryData
.
getEpcLength
()
>
0
)
{
String
epc
=
TextUtil
.
byteToHexString
(
inventoryData
.
getEPC_Data
(),
inventoryData
.
getEpcLength
()).
substring
(
1
);
String
tid
=
TextUtil
.
byteToHexString
(
inventoryData
.
getData
(),
inventoryData
.
getDataLength
());
soundPool
.
play
(
musicId
.
get
(
1
),
1
,
1
,
0
,
0
,
1
);
App
.
getInstance
().
getLinkage
().
stopInventory
();
if
(
""
.
equals
(
tag
))
checkEpc
(
epc
,
tid
);
}
}
}
};
private
void
checkEpc
(
String
epc
,
String
tid
)
{
tag
=
epc
+
tid
;
ToastUtils
.
showShort
(
epc
);
this
.
epc
.
set
(
epc
);
isScan
=
false
;
}
/**
* 查询基础信息
**/
private
void
getCattleResume
()
{
StringBuffer
sbf
=
new
StringBuffer
();
if
(!
StringUtils
.
isEmpty
(
epc
.
get
()))
sbf
.
append
(
" REGISTRATION_NO = '"
+
epc
.
get
()
+
"'"
);
if
(!
StringUtils
.
isEmpty
(
noticeNo
.
get
()))
{
if
(
sbf
.
length
()
>
0
)
sbf
.
append
(
" AND "
);
sbf
.
append
(
" INDIVIDUAL_NO= '"
+
noticeNo
.
get
()
+
"'"
);
}
String
sql
=
sbf
.
toString
();
WhereCondition
.
StringCondition
stringCondition
=
new
WhereCondition
.
StringCondition
(
sql
);
DbUtil
.
getInstance
().
setDbQueryCallBack
(
new
DbQueryCallBack
<
CattleResumeEntity
>()
{
@Override
public
void
onSuccess
(
List
<
CattleResumeEntity
>
result
)
{
if
(
result
!=
null
&&
result
.
size
()
>
0
)
{
entity
.
copyEntity
(
result
.
get
(
0
));
initData
();
}
else
{
ToastUtils
.
showShort
(
"耳标不存在,请重新扫描!"
);
finish
();
}
}
@Override
public
void
onFailed
()
{
ToastUtils
.
showShort
(
"查询数据库失败"
);
finish
();
}
}).
queryAsync
(
CattleResumeEntity
.
class
,
stringCondition
);
}
@Override
public
void
onPause
()
{
super
.
onPause
();
App
.
getInstance
().
getLinkage
().
stopInventory
();
App
.
getInstance
().
getLinkage
().
setOnInventoryListener
(
null
);
}
}
app/src/main/res/layout/activity_label_change.xml
0 → 100644
View file @
f9235109
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/tools"
xmlns:binding=
"http://schemas.android.com/apk/res-auto"
app:ignore=
"NamespaceTypo"
>
<data>
<import
type=
"me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter"
/>
<import
type=
"me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LayoutManagers"
/>
<import
type=
"me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LineManagers"
/>
<variable
name=
"viewModel"
type=
"com.phlx.anchorcollect_p.ui.labelchange.LabelChangeVM"
/>
<variable
name=
"spinnerAdapter"
type=
"android.widget.ArrayAdapter"
/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<include
android:id=
"@+id/include"
layout=
"@layout/layout_back_bar"
binding:backBarVM=
"@{viewModel.backBarVM}"
/>
<androidx.core.widget.NestedScrollView
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_0"
binding:layout_constraintBottom_toBottomOf=
"parent"
binding:layout_constraintEnd_toEndOf=
"parent"
binding:layout_constraintStart_toStartOf=
"parent"
binding:layout_constraintTop_toBottomOf=
"@+id/include"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_0"
android:layout_marginStart=
"@dimen/dp_30"
android:layout_marginTop=
"@dimen/dp_10"
android:layout_marginEnd=
"@dimen/dp_30"
>
<androidx.constraintlayout.widget.Guideline
android:id=
"@+id/marking_guideline_vertical"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
binding:layout_constraintGuide_begin=
"@dimen/dp_75"
/>
<androidx.appcompat.widget.LinearLayoutCompat
android:id=
"@+id/ll_label"
android:layout_width=
"@dimen/dp_0"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
binding:layout_constraintLeft_toLeftOf=
"parent"
binding:layout_constraintRight_toLeftOf=
"@+id/marking_guideline_vertical"
binding:layout_constraintTop_toTopOf=
"parent"
>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/high_no_desc"
android:layout_width=
"wrap_content"
android:layout_height=
"@dimen/dp_40"
android:gravity=
"center_vertical"
android:layout_marginTop=
"@dimen/dp_5"
android:text=
"高频耳标"
android:textColor=
"@color/black"
android:textSize=
"@dimen/desc_text_size"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/notice_no_desc"
android:layout_width=
"wrap_content"
android:layout_height=
"@dimen/dp_40"
android:gravity=
"center_vertical"
android:layout_marginTop=
"@dimen/dp_5"
android:text=
"可视耳标"
android:textColor=
"@color/black"
android:textSize=
"@dimen/desc_text_size"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width=
"@dimen/dp_0"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
binding:layout_constraintHorizontal_bias=
"1.0"
binding:layout_constraintLeft_toRightOf=
"@+id/marking_guideline_vertical"
binding:layout_constraintRight_toRightOf=
"parent"
binding:layout_constraintTop_toTopOf=
"parent"
>
<androidx.appcompat.widget.AppCompatTextView
android:id=
"@+id/high_no_edit"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_40"
android:gravity=
"center_vertical"
android:layout_marginTop=
"@dimen/dp_5"
android:inputType=
"number"
android:background=
"@drawable/input_frame_bg"
android:text=
"@={viewModel.epc}"
android:textSize=
"@dimen/edit_size"
binding:onClickCommand=
"@{viewModel.onScanRfidClick}"
/>
<androidx.appcompat.widget.AppCompatEditText
android:id=
"@+id/notice_no_edit"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_40"
android:gravity=
"center_vertical"
android:layout_marginTop=
"@dimen/dp_5"
android:maxLength=
"20"
android:singleLine=
"true"
android:background=
"@drawable/input_frame_bg"
android:text=
"@={viewModel.noticeNo}"
android:textSize=
"@dimen/edit_size"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/fragment_basics_collect.xml
View file @
f9235109
...
...
@@ -56,12 +56,10 @@
android:layout_margin=
"@dimen/dp_5"
android:background=
"@drawable/bg_radius_white_5"
android:orientation=
"vertical"
android:padding=
"5dp"
binding:layout_constraintBottom_toBottomOf=
"@id/card_100"
binding:layout_constraintLeft_toRightOf=
"@+id/card_100"
binding:layout_constraintRight_toRightOf=
"parent"
binding:layout_constraintTop_toBottomOf=
"@+id/tv_rfid_text"
binding:onClickCommand=
"@{viewModel.onTagInputClick}"
>
binding:layout_constraintTop_toBottomOf=
"@+id/tv_rfid_text"
>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width=
"match_parent"
...
...
@@ -70,16 +68,32 @@
android:layout_marginTop=
"10dp"
android:text=
"可视耳标"
android:textColor=
"@color/colorPrimary"
android:textSize=
"@dimen/sp_16"
/>
android:textSize=
"@dimen/sp_16"
binding:onClickCommand=
"@{viewModel.onTagInputClick}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"10dp"
android:layout_marginTop=
"
1
0dp"
android:layout_marginTop=
"
2
0dp"
android:text=
"@{viewModel.tag}"
android:textColor=
"@color/black"
android:textSize=
"@dimen/sp_18"
/>
android:textSize=
"@dimen/sp_18"
binding:onClickCommand=
"@{viewModel.onTagInputClick}"
/>
<!-- <androidx.appcompat.widget.AppCompatTextView-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="换绑标签"-->
<!-- android:layout_marginLeft="10dp"-->
<!-- android:layout_marginRight="10dp"-->
<!-- android:layout_marginTop="10dp"-->
<!-- android:paddingBottom="5dp"-->
<!-- android:paddingTop="5dp"-->
<!-- android:textColor="@color/white"-->
<!-- android:background="@drawable/bg_button_orange_gradient"-->
<!-- android:gravity="center"-->
<!-- binding:onClickCommand="@{viewModel.onLabelChangeClick}"/>-->
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
...
...
@@ -115,11 +129,29 @@
binding:layout_constraintLeft_toLeftOf=
"parent"
binding:layout_constraintRight_toRightOf=
"parent"
>
<androidx.appcompat.widget.LinearLayoutCompat
android:id=
"@+id/card_label_change"
android:layout_width=
"75dp"
android:layout_height=
"37dp"
android:background=
"@drawable/bg_radius_white_5"
binding:onClickCommand=
"@{viewModel.onLabelChangeClick}"
>
<androidx.appcompat.widget.AppCompatTextView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@drawable/bg_button_orange_gradient"
android:gravity=
"center"
android:text=
"换绑标签"
android:textColor=
"@color/white"
android:textSize=
"@dimen/sp_12"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id=
"@+id/card_99"
android:layout_width=
"wrap_content"
android:layout_height=
"37dp"
android:layout_weight=
"1"
android:layout_marginLeft=
"5dp"
android:background=
"@drawable/bg_radius_white_5"
android:onClick=
"@{() ->viewModel.click(99)}"
android:orientation=
"vertical"
...
...
@@ -144,7 +176,7 @@
<androidx.appcompat.widget.LinearLayoutCompat
android:id=
"@+id/card_save"
android:layout_width=
"
100
dp"
android:layout_width=
"
75
dp"
android:layout_height=
"37dp"
android:layout_marginLeft=
"5dp"
android:background=
"@drawable/bg_radius_white_5"
...
...
app/src/main/res/values/strings.xml
View file @
f9235109
...
...
@@ -26,6 +26,7 @@
<string
name=
"immun_record_detail"
>
免疫详情
</string>
<string
name=
"breeding_record"
>
配种记录
</string>
<string
name=
"breeding_record_detail"
>
配种详情
</string>
<string
name=
"label_change"
>
标签换绑
</string>
<string
name=
"one_click_sync"
>
一键同步
</string>
...
...
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