Commit f9235109 authored by hywang's avatar hywang

1.增加换绑标签功能

parent 10459ada
......@@ -9,8 +9,8 @@ android {
applicationId "com.phlx.anchorcollect_p"
minSdkVersion 21
targetSdkVersion 29
versionCode 12
versionName "2.0.6"
versionCode 14
versionName "2.0.8"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
......
......@@ -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
......
......@@ -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);
......
......@@ -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();
}
}
......@@ -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);
}
});
}
//选择框
......
......@@ -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() {
startActivity(SettingActivity.class);
// 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) {
initDataForRfid(epc);
} else if (scanFunction == 1) {
setRfidValueEvent.setValue(epc);
switch (scanFunction) {
case 0:
initDataForRfid(epc);
break;
case 1:
setRfidValueEvent.setValue(epc);
break;
case 2:
setChangeLabelRfidValueEvent.setValue(epc);
break;
}
}
......
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);
}
}
<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
......@@ -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="10dp"
android:layout_marginTop="20dp"
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="100dp"
android:layout_width="75dp"
android:layout_height="37dp"
android:layout_marginLeft="5dp"
android:background="@drawable/bg_radius_white_5"
......
......@@ -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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment