Commit a781e5e7 authored by hywang's avatar hywang

1.新增诊疗记录功能

2.新增免疫记录功能
parent 3baff11b
......@@ -28,6 +28,7 @@
android:networkSecurityConfig="@xml/network_security_config"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:process=":remote"
android:supportsRtl="true"
android:theme="@style/AppTheme"
>
......@@ -86,6 +87,12 @@
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateHidden|adjustResize" />
<activity
android:name=".ui.setting.SyncActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateHidden|adjustResize" />
<service
......
......@@ -12,12 +12,15 @@ import com.phlx.anchorcollect.ui.fragment.vm.BasicsCollectVM;
import com.phlx.anchorcollect.ui.fragment.vm.BreedingRecordVM;
import com.phlx.anchorcollect.ui.fragment.vm.CollectListVM;
import com.phlx.anchorcollect.ui.fragment.vm.CollectVM;
import com.phlx.anchorcollect.ui.fragment.vm.ImmunRecordVM;
import com.phlx.anchorcollect.ui.fragment.vm.MedicalRecordVM;
import com.phlx.anchorcollect.ui.fragment.vm.PerformanceVM;
import com.phlx.anchorcollect.ui.home.HomeVM;
import com.phlx.anchorcollect.ui.info.CattleVM;
import com.phlx.anchorcollect.ui.login.LoginVM;
import com.phlx.anchorcollect.ui.main.MainVM;
import com.phlx.anchorcollect.ui.setting.SettingVM;
import com.phlx.anchorcollect.ui.setting.SyncVM;
import com.phlx.anchorcollect.ui.splash.SplashVM;
......@@ -81,6 +84,12 @@ public class VMFactory extends ViewModelProvider.NewInstanceFactory {
} else if (modelClass.isAssignableFrom(PerformanceVM.class)) {
return (T) new PerformanceVM(mApplication, repository);
} else if (modelClass.isAssignableFrom(MedicalRecordVM.class)) {
return (T) new MedicalRecordVM(mApplication, repository);
} else if (modelClass.isAssignableFrom(ImmunRecordVM.class)) {
return (T) new ImmunRecordVM(mApplication, repository);
} else if (modelClass.isAssignableFrom(BreedingRecordVM.class)) {
return (T) new BreedingRecordVM(mApplication, repository);
......@@ -94,6 +103,9 @@ public class VMFactory extends ViewModelProvider.NewInstanceFactory {
return (T) new CattleVM(mApplication, repository);
} else if (modelClass.isAssignableFrom(SettingVM.class)) {
return (T) new SettingVM(mApplication, repository);
} else if (modelClass.isAssignableFrom(SyncVM.class)) {
return (T) new SyncVM(mApplication, repository);
}
throw new IllegalArgumentException("Unknown ViewModel class: " + modelClass.getName());
}
......
......@@ -18,7 +18,7 @@ public class DictEntity extends BaseObservable implements Parcelable {
private static final long serialVersionUID = 1L;
/** 字典编码 */
@Id(autoincrement = false)
// @Id(autoincrement = false)
private String dictCode;
/** 字典排序 */
......
......@@ -49,16 +49,24 @@ public class GenTableColumn extends BaseObservable implements Parcelable {
/** 是否必填(1是) */
private String isRequired;
/** 是否为插入字段(1是) */
/**
* 是否为插入字段(1是)新增时是否显示字段
*/
private String isInsert;
/** 是否编辑字段(1是) */
/**
* 是否编辑字段(1是)修改时是否可编辑
*/
private String isEdit;
/** 是否列表字段(1是) */
/**
* 是否列表字段(1是)表头是否显示
*/
private String isList;
/** 是否查询字段(1是) */
/**
* 是否查询字段(1是)暂时保留
*/
private String isQuery;
/** 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围) */
......
......@@ -115,7 +115,8 @@ public class RetrofitClient {
Request authorised = originalRequest.newBuilder()
.header("token", SPUtils.getInstance().getString("token"))
.header("imei", DeviceIdUtils.getDeviceId(Utils.getContext()))
.header("deptid", SPUtils.getInstance().getString(Configs.SP_DEPT_ID))
.header("deptid", SPUtils.getInstance().getString(Configs.SP_DEPT_ID))
.header("eqType", "iPad")//iPad app
.build();
return chain.proceed(authorised);
}
......
......@@ -2,7 +2,9 @@ package com.phlx.anchorcollect.ui.fragment;
import android.Manifest;
import android.app.Dialog;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.text.InputType;
import android.util.Log;
import android.view.Gravity;
......@@ -24,6 +26,9 @@ import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnTimeSelectChangeListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.TimePickerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.kongzue.dialogx.datepicker.DatePickerDialog;
import com.kongzue.dialogx.datepicker.interfaces.OnDateSelected;
import com.kongzue.dialogx.dialogs.BottomMenu;
......@@ -49,6 +54,7 @@ import com.phlx.anchorcollect.util.TextUtil;
import com.phlx.anchorcollect.widget.SpaceItemDecoration;
import com.tbruyelle.rxpermissions2.RxPermissions;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
......@@ -200,6 +206,25 @@ public class BasicsCollectFragment extends BaseFragment<FragmentBasicsCollectBin
gtc.notifyChange();
}
viewModel.remarkParamEntity.notifyChange();
File[] files;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
files = getContext().getExternalFilesDirs(Environment.MEDIA_MOUNTED);
for(File file:files){
Log.e("main",file.getPath());
}
}
Glide.with(getContext())
.load(viewModel.imgUrl)
.apply(
new RequestOptions()
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.error(R.drawable.no_image)
.fallback(R.drawable.no_image)
)
.into(binding.ivCattlePhoto);
binding.rvCollect.getAdapter().notifyDataSetChanged();
}
});
......@@ -271,6 +296,7 @@ public class BasicsCollectFragment extends BaseFragment<FragmentBasicsCollectBin
inputType = InputType.TYPE_CLASS_TEXT;
}
int finalInputType = inputType;
new MaterialDialog.Builder(getActivity())
.title(uiParamEntity.getColumnComment())
// .iconRes(R.drawable.ic_logo)
......@@ -291,9 +317,16 @@ public class BasicsCollectFragment extends BaseFragment<FragmentBasicsCollectBin
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
// dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false);
viewModel.currentParamEntity.setShowName(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.setContent(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.notifyChange();
String inputStr = dialog.getInputEditText().getText().toString();
if (finalInputType == InputType.TYPE_CLASS_TEXT && inputStr.length() > 10) {
dialog.getInputEditText().setText(inputStr.subSequence(0, 10));
ToastUtils.showShort("输入长度超长");
} else {
viewModel.currentParamEntity.setShowName(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.setContent(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.notifyChange();
}
}
})
.show();
......
......@@ -242,7 +242,7 @@ public class BreedingRecordFragment extends BaseFragment<FragmentBreedingRecordB
} else if (uiParamEntity.getJavaType().equals("String")) {
inputType = InputType.TYPE_CLASS_TEXT;
}
int finalInputType = inputType;
new MaterialDialog.Builder(getActivity())
.title(uiParamEntity.getColumnComment())
// .iconRes(R.drawable.ic_logo)
......@@ -263,9 +263,15 @@ public class BreedingRecordFragment extends BaseFragment<FragmentBreedingRecordB
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
// dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false);
viewModel.currentParamEntity.setShowName(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.setContent(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.notifyChange();
String inputStr = dialog.getInputEditText().getText().toString();
if (finalInputType == InputType.TYPE_CLASS_TEXT && inputStr.length() > 10) {
dialog.getInputEditText().setText(inputStr.subSequence(0, 10));
ToastUtils.showShort("输入长度超长");
} else {
viewModel.currentParamEntity.setShowName(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.setContent(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.notifyChange();
}
}
})
.show();
......
package com.phlx.anchorcollect.ui.fragment;
import android.Manifest;
import android.app.Dialog;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.FrameLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnTimeSelectChangeListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.TimePickerView;
import com.phlx.anchorcollect.BR;
import com.phlx.anchorcollect.Configs;
import com.phlx.anchorcollect.R;
import com.phlx.anchorcollect.data.VMFactory;
import com.phlx.anchorcollect.databinding.FragmentImmunRecordBinding;
import com.phlx.anchorcollect.entity.DictEntity;
import com.phlx.anchorcollect.entity.GenTableColumn;
import com.phlx.anchorcollect.ui.fragment.vm.ImmunRecordVM;
import com.phlx.anchorcollect.ui.fragment.vm.PerformanceVM;
import com.phlx.anchorcollect.util.DictUtils;
import com.phlx.anchorcollect.util.ImagePicker;
import com.phlx.anchorcollect.widget.SpaceItemDecoration;
import com.tbruyelle.rxpermissions2.RxPermissions;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseFragment;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.utils.StringUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
public class ImmunRecordFragment extends BaseFragment<FragmentImmunRecordBinding, ImmunRecordVM> {
private TimePickerView pvTime;
private ImagePicker mImagePicker;
private static class SingletonClassInstance {
private static final ImmunRecordFragment instance = new ImmunRecordFragment();
}
private ImmunRecordFragment() {
}
public static ImmunRecordFragment getInstance() {
return ImmunRecordFragment.SingletonClassInstance.instance;
}
@Override
public int initContentView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return R.layout.fragment_immun_record;
}
@Override
public int initVariableId() {
return BR.viewModel;
}
@Override
public void initParam() {
super.initParam();
}
@Override
public ImmunRecordVM initViewModel() {
VMFactory factory = VMFactory.getInstance(getActivity().getApplication());
return ViewModelProviders.of(this, factory).get(ImmunRecordVM.class);
}
@Override
public void initData() {
super.initData();
viewModel.initGen();
binding.rvCollect.addItemDecoration(new SpaceItemDecoration(10));
initTimePicker();
}
@Override
public void initViewObservable() {
super.initViewObservable();
viewModel.onCardClickEvent.observe(getActivity(), new Observer<Boolean>() {
@Override
public void onChanged(Boolean aBoolean) {
if (viewModel.currentParamEntity != null) {
switch (viewModel.currentParamEntity.getHtmlType()) {
case "checkbox":
showCheckboxDialog(viewModel.currentParamEntity);
break;
case "input":
case "textarea":
showInputDialog(viewModel.currentParamEntity);
break;
case "datetime":
showSelectDateDialog(viewModel.currentParamEntity);
break;
case "select":
case "radio":
showSpinnerDialog(viewModel.currentParamEntity);
break;
case "photo":
if (viewModel.tag.get().equals("")) {
ToastUtils.showShort("请先输入可视耳标号");
} else {
showPhotoDialog(viewModel.currentParamEntity);
}
break;
}
}
}
});
viewModel.onNotifyAllEvent.observe(getActivity(), new Observer<Boolean>() {
@Override
public void onChanged(Boolean aBoolean) {
if (aBoolean)
viewModel.clearParamList();
for (GenTableColumn gtc : viewModel.uiList) {
gtc.notifyChange();
}
viewModel.remarkParamEntity.notifyChange();
binding.rvCollect.getAdapter().notifyDataSetChanged();
}
});
viewModel.onShowDialogEvent.observe(getActivity(), new Observer<String>() {
@Override
public void onChanged(String s) {
new MaterialDialog.Builder(getActivity()).title("系统提示").content(s).positiveText("确定").onAny(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
if (which == DialogAction.POSITIVE) {
}
}
}).show();
}
});
}
//选择框
private void showSpinnerDialog(GenTableColumn uiParamEntity) {
new MaterialDialog.Builder(getActivity())
.title("标题")
// .positiveText("确认")
// .negativeText("取消")
.items(DictUtils.getDistNameList(uiParamEntity.getDictType()))
.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
Toast.makeText(getActivity(), which + ":" + text.toString(), Toast.LENGTH_SHORT).show();
viewModel.currentParamEntity.setShowName(text.toString());
List<DictEntity> distTypeList = DictUtils.getDistList(uiParamEntity.getDictType());
viewModel.currentParamEntity.setContent(distTypeList.get(which).getDictValue());
viewModel.currentParamEntity.notifyChange();
}
})
.show();
}
//多选框
private void showCheckboxDialog(GenTableColumn uiParamEntity) {
new MaterialDialog.Builder(getActivity()).title("系统信息").content("请选择!!!")
.cancelable(false).canceledOnTouchOutside(false)
.positiveText("确定")
.items(DictUtils.getDistNameList(uiParamEntity.getDictType()))
.itemsCallbackMultiChoice(null, new MaterialDialog.ListCallbackMultiChoice() {
@Override
public boolean onSelection(MaterialDialog dialog, Integer[] which, CharSequence[] text) {
String showName = "";
String content = "";
List<DictEntity> distTypeList = DictUtils.getDistList(uiParamEntity.getDictType());
if (which != null && which.length > 0) {
for (Integer i : which) {
showName += distTypeList.get(i).getDictLabel();
showName += ",";
content += distTypeList.get(i).getDictValue();
content += ",";
}
}
viewModel.currentParamEntity.setShowName(showName);
viewModel.currentParamEntity.setContent(content);
viewModel.currentParamEntity.notifyChange();
return true;
}
}).show();
}
//输入框
private void showInputDialog(GenTableColumn uiParamEntity) {
int inputType = 0;
if (uiParamEntity.getJavaType().equals("Long") || uiParamEntity.getJavaType().equals("Integer")) {
inputType = InputType.TYPE_CLASS_NUMBER;
} else if (uiParamEntity.getJavaType().equals("BigDecimal") || uiParamEntity.getJavaType().equals("Duoble")) {
inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED;
;
} else if (uiParamEntity.getJavaType().equals("String")) {
inputType = InputType.TYPE_CLASS_TEXT;
}
int finalInputType = inputType;
new MaterialDialog.Builder(getActivity())
.title(uiParamEntity.getColumnComment())
// .iconRes(R.drawable.ic_logo)
.content("请输入")
// .widgetColor(Color.BLUE)//输入框光标的颜色
.inputType(inputType)//可以输入的类型
//前2个一个是hint一个是预输入的文字
.input("输入" + uiParamEntity.getColumnComment(), uiParamEntity.getShowName(), new MaterialDialog.InputCallback() {
@Override
public void onInput(@NonNull MaterialDialog dialog, CharSequence input) {
Log.i("scan", "输入的是:" + input);
}
})
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
// dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false);
String inputStr = dialog.getInputEditText().getText().toString();
if (finalInputType == InputType.TYPE_CLASS_TEXT && inputStr.length() > 10) {
dialog.getInputEditText().setText(inputStr.subSequence(0, 10));
ToastUtils.showShort("输入长度超长");
} else {
viewModel.currentParamEntity.setShowName(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.setContent(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.notifyChange();
}
}
})
.show();
}
//拍照
private void showPhotoDialog(GenTableColumn uiParamEntity) {
RxPermissions rxPermissions = new RxPermissions(getActivity());
rxPermissions.request(Manifest.permission.CAMERA, Manifest.permission
.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean) {
mImagePicker.show(getActivity());
} else {
ToastUtils.showShort("权限被拒绝");
}
}
});
}
//时间选择
private void showSelectDateDialog(GenTableColumn uiParamEntity) {
pvTime.show(binding.card99);
}
private void initTimePicker() {//Dialog
pvTime = new TimePickerBuilder(getActivity(), new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
viewModel.currentParamEntity.setContent(dateFormat.format(date));
viewModel.currentParamEntity.setShowName(dateFormat.format(date));
viewModel.currentParamEntity.notifyChange();
}
})
.setTimeSelectChangeListener(new OnTimeSelectChangeListener() {
@Override
public void onTimeSelectChanged(Date date) {
}
})
.setType(new boolean[]{true, true, true, false, false, false})
.isDialog(true) //默认设置false ,内部实现将DecorView 作为它的父控件。
.addOnCancelClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("pvTime", "onCancelClickListener");
}
})
.setItemVisibleCount(5) //若设置偶数,实际值会加1(比如设置6,则最大可见条目为7)
.setLineSpacingMultiplier(2.0f)
.isAlphaGradient(true)
.build();
Dialog mDialog = pvTime.getDialog();
if (mDialog != null) {
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
Gravity.CENTER);
params.leftMargin = 0;
params.rightMargin = 0;
pvTime.getDialogContainerLayout().setLayoutParams(params);
Window dialogWindow = mDialog.getWindow();
if (dialogWindow != null) {
dialogWindow.setWindowAnimations(com.bigkoo.pickerview.R.style.picker_view_slide_anim);//修改动画样式
dialogWindow.setGravity(Gravity.CENTER);//改成Bottom,底部显示
dialogWindow.setDimAmount(0.3f);
}
}
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (this != null && !hidden) {
viewModel.clearParamList();
//说明是列表跳转的
if(!StringUtils.isEmpty(Configs.resumeId)){
viewModel.isModify = true;
viewModel.queryImmuneBatch();
}else{
//清除一下数据
viewModel.isModify = false;
binding.rvCollect.getAdapter().notifyDataSetChanged();
}
}
}
}
package com.phlx.anchorcollect.ui.fragment;
import android.Manifest;
import android.app.Dialog;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.FrameLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.bigkoo.pickerview.builder.TimePickerBuilder;
import com.bigkoo.pickerview.listener.OnTimeSelectChangeListener;
import com.bigkoo.pickerview.listener.OnTimeSelectListener;
import com.bigkoo.pickerview.view.TimePickerView;
import com.phlx.anchorcollect.Configs;
import com.phlx.anchorcollect.R;
import com.phlx.anchorcollect.data.VMFactory;
import com.phlx.anchorcollect.databinding.FragmentMedicalRecordBinding;
import com.phlx.anchorcollect.entity.DictEntity;
import com.phlx.anchorcollect.entity.GenTableColumn;
import com.phlx.anchorcollect.ui.fragment.vm.MedicalRecordVM;
import com.phlx.anchorcollect.ui.fragment.vm.PerformanceVM;
import com.phlx.anchorcollect.util.DictUtils;
import com.phlx.anchorcollect.util.ImagePicker;
import com.phlx.anchorcollect.widget.SpaceItemDecoration;
import com.tbruyelle.rxpermissions2.RxPermissions;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseFragment;
import me.goldze.mvvmhabit.utils.StringUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
import me.tatarka.bindingcollectionadapter2.BR;
public class MedicalRecordFragment extends BaseFragment<FragmentMedicalRecordBinding, MedicalRecordVM> {
private TimePickerView pvTime;
private ImagePicker mImagePicker;
private static class SingletonClassInstance {
private static final MedicalRecordFragment instance = new MedicalRecordFragment();
}
private MedicalRecordFragment() {
}
public static MedicalRecordFragment getInstance() {
return MedicalRecordFragment.SingletonClassInstance.instance;
}
@Override
public int initContentView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return R.layout.fragment_medical_record;
}
@Override
public int initVariableId() {
return BR.viewModel;
}
@Override
public void initParam() {
super.initParam();
}
@Override
public MedicalRecordVM initViewModel() {
VMFactory factory = VMFactory.getInstance(getActivity().getApplication());
return ViewModelProviders.of(this, factory).get(MedicalRecordVM.class);
}
@Override
public void initData() {
super.initData();
viewModel.initGen();
binding.rvCollect.addItemDecoration(new SpaceItemDecoration(10));
initTimePicker();
}
@Override
public void initViewObservable() {
super.initViewObservable();
viewModel.onCardClickEvent.observe(getActivity(), new Observer<Boolean>() {
@Override
public void onChanged(Boolean aBoolean) {
if (viewModel.currentParamEntity != null) {
switch (viewModel.currentParamEntity.getHtmlType()) {
case "checkbox":
showCheckboxDialog(viewModel.currentParamEntity);
break;
case "input":
case "textarea":
showInputDialog(viewModel.currentParamEntity);
break;
case "datetime":
showSelectDateDialog(viewModel.currentParamEntity);
break;
case "select":
case "radio":
showSpinnerDialog(viewModel.currentParamEntity);
break;
case "photo":
if (viewModel.tag.get().equals("")) {
ToastUtils.showShort("请先输入可视耳标号");
} else {
showPhotoDialog(viewModel.currentParamEntity);
}
break;
}
}
}
});
viewModel.onNotifyAllEvent.observe(getActivity(), new Observer<Boolean>() {
@Override
public void onChanged(Boolean aBoolean) {
if (aBoolean)
viewModel.clearParamList();
for (GenTableColumn gtc : viewModel.uiList) {
gtc.notifyChange();
}
viewModel.remarkParamEntity.notifyChange();
binding.rvCollect.getAdapter().notifyDataSetChanged();
}
});
viewModel.onShowDialogEvent.observe(getActivity(), new Observer<String>() {
@Override
public void onChanged(String s) {
new MaterialDialog.Builder(getActivity()).title("系统提示").content(s).positiveText("确定").onAny(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
if (which == DialogAction.POSITIVE) {
}
}
}).show();
}
});
}
//选择框
private void showSpinnerDialog(GenTableColumn uiParamEntity) {
new MaterialDialog.Builder(getActivity())
.title("标题")
// .positiveText("确认")
// .negativeText("取消")
.items(DictUtils.getDistNameList(uiParamEntity.getDictType()))
.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
Toast.makeText(getActivity(), which + ":" + text.toString(), Toast.LENGTH_SHORT).show();
viewModel.currentParamEntity.setShowName(text.toString());
List<DictEntity> distTypeList = DictUtils.getDistList(uiParamEntity.getDictType());
viewModel.currentParamEntity.setContent(distTypeList.get(which).getDictValue());
viewModel.currentParamEntity.notifyChange();
}
})
.show();
}
//多选框
private void showCheckboxDialog(GenTableColumn uiParamEntity) {
new MaterialDialog.Builder(getActivity()).title("系统信息").content("请选择!!!")
.cancelable(false).canceledOnTouchOutside(false)
.positiveText("确定")
.items(DictUtils.getDistNameList(uiParamEntity.getDictType()))
.itemsCallbackMultiChoice(null, new MaterialDialog.ListCallbackMultiChoice() {
@Override
public boolean onSelection(MaterialDialog dialog, Integer[] which, CharSequence[] text) {
String showName = "";
String content = "";
List<DictEntity> distTypeList = DictUtils.getDistList(uiParamEntity.getDictType());
if (which != null && which.length > 0) {
for (Integer i : which) {
showName += distTypeList.get(i).getDictLabel();
showName += ",";
content += distTypeList.get(i).getDictValue();
content += ",";
}
}
viewModel.currentParamEntity.setShowName(showName);
viewModel.currentParamEntity.setContent(content);
viewModel.currentParamEntity.notifyChange();
return true;
}
}).show();
}
//输入框
private void showInputDialog(GenTableColumn uiParamEntity) {
int inputType = 0;
if (uiParamEntity.getJavaType().equals("Long") || uiParamEntity.getJavaType().equals("Integer")) {
inputType = InputType.TYPE_CLASS_NUMBER;
} else if (uiParamEntity.getJavaType().equals("BigDecimal") || uiParamEntity.getJavaType().equals("Duoble")) {
inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED;
;
} else if (uiParamEntity.getJavaType().equals("String")) {
inputType = InputType.TYPE_CLASS_TEXT;
}
int finalInputType = inputType;
new MaterialDialog.Builder(getActivity())
.title(uiParamEntity.getColumnComment())
// .iconRes(R.drawable.ic_logo)
.content("请输入")
// .widgetColor(Color.BLUE)//输入框光标的颜色
.inputType(inputType)//可以输入的类型
//前2个一个是hint一个是预输入的文字
.input("输入" + uiParamEntity.getColumnComment(), uiParamEntity.getShowName(), new MaterialDialog.InputCallback() {
@Override
public void onInput(@NonNull MaterialDialog dialog, CharSequence input) {
Log.i("scan", "输入的是:" + input);
}
})
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
// dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false);
String inputStr = dialog.getInputEditText().getText().toString();
if (finalInputType == InputType.TYPE_CLASS_TEXT && inputStr.length() > 10) {
dialog.getInputEditText().setText(inputStr.subSequence(0, 10));
ToastUtils.showShort("输入长度超长");
} else {
viewModel.currentParamEntity.setShowName(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.setContent(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.notifyChange();
}
}
})
.show();
}
//拍照
private void showPhotoDialog(GenTableColumn uiParamEntity) {
RxPermissions rxPermissions = new RxPermissions(getActivity());
rxPermissions.request(Manifest.permission.CAMERA, Manifest.permission
.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean) {
mImagePicker.show(getActivity());
} else {
ToastUtils.showShort("权限被拒绝");
}
}
});
}
//时间选择
private void showSelectDateDialog(GenTableColumn uiParamEntity) {
pvTime.show(binding.card99);
}
private void initTimePicker() {//Dialog
pvTime = new TimePickerBuilder(getActivity(), new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
viewModel.currentParamEntity.setContent(dateFormat.format(date));
viewModel.currentParamEntity.setShowName(dateFormat.format(date));
viewModel.currentParamEntity.notifyChange();
}
})
.setTimeSelectChangeListener(new OnTimeSelectChangeListener() {
@Override
public void onTimeSelectChanged(Date date) {
}
})
.setType(new boolean[]{true, true, true, false, false, false})
.isDialog(true) //默认设置false ,内部实现将DecorView 作为它的父控件。
.addOnCancelClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("pvTime", "onCancelClickListener");
}
})
.setItemVisibleCount(5) //若设置偶数,实际值会加1(比如设置6,则最大可见条目为7)
.setLineSpacingMultiplier(2.0f)
.isAlphaGradient(true)
.build();
Dialog mDialog = pvTime.getDialog();
if (mDialog != null) {
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
Gravity.CENTER);
params.leftMargin = 0;
params.rightMargin = 0;
pvTime.getDialogContainerLayout().setLayoutParams(params);
Window dialogWindow = mDialog.getWindow();
if (dialogWindow != null) {
dialogWindow.setWindowAnimations(com.bigkoo.pickerview.R.style.picker_view_slide_anim);//修改动画样式
dialogWindow.setGravity(Gravity.CENTER);//改成Bottom,底部显示
dialogWindow.setDimAmount(0.3f);
}
}
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (this != null && !hidden) {
viewModel.clearParamList();
//说明是列表跳转的
if(!StringUtils.isEmpty(Configs.resumeId)){
viewModel.isModify = true;
viewModel.queryMedicalRecord();
}else{
//清除一下数据
viewModel.isModify = false;
binding.rvCollect.getAdapter().notifyDataSetChanged();
}
}
}
}
......@@ -230,12 +230,12 @@ public class PerformanceFragment extends BaseFragment<FragmentPerformanceBinding
} else if (uiParamEntity.getJavaType().equals("String")) {
inputType = InputType.TYPE_CLASS_TEXT;
}
int finalInputType = inputType;
new MaterialDialog.Builder(getActivity())
.title(uiParamEntity.getColumnComment())
// .iconRes(R.drawable.ic_logo)
.content("请输入")
// .widgetColor(Color.BLUE)//输入框光标的颜色
// .widgetColor(Color.BLUE)//输入框光标的颜色
.inputType(inputType)//可以输入的类型
//前2个一个是hint一个是预输入的文字
.input("输入" + uiParamEntity.getColumnComment(), uiParamEntity.getShowName(), new MaterialDialog.InputCallback() {
......@@ -251,9 +251,15 @@ public class PerformanceFragment extends BaseFragment<FragmentPerformanceBinding
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
// dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false);
viewModel.currentParamEntity.setShowName(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.setContent(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.notifyChange();
String inputStr = dialog.getInputEditText().getText().toString();
if (finalInputType == InputType.TYPE_CLASS_TEXT && inputStr.length() > 10) {
dialog.getInputEditText().setText(inputStr.subSequence(0, 10));
ToastUtils.showShort("输入长度超长");
} else {
viewModel.currentParamEntity.setShowName(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.setContent(dialog.getInputEditText().getText().toString());
viewModel.currentParamEntity.notifyChange();
}
}
})
.show();
......@@ -341,9 +347,11 @@ public class PerformanceFragment extends BaseFragment<FragmentPerformanceBinding
//说明是列表跳转的
if(!StringUtils.isEmpty(Configs.resumeId)){
viewModel.isModify = true;
viewModel.queryPerformance();
}else{
//清除一下数据
viewModel.isModify = false;
binding.rvCollect.getAdapter().notifyDataSetChanged();
}
}
......
......@@ -10,6 +10,8 @@ import com.phlx.anchorcollect.R;
import com.phlx.anchorcollect.entity.GenTableColumn;
import com.phlx.anchorcollect.ui.fragment.vm.BasicsCollectVM;
import com.phlx.anchorcollect.ui.fragment.vm.BreedingRecordVM;
import com.phlx.anchorcollect.ui.fragment.vm.ImmunRecordVM;
import com.phlx.anchorcollect.ui.fragment.vm.MedicalRecordVM;
import com.phlx.anchorcollect.ui.fragment.vm.PerformanceVM;
import cn.hutool.core.util.IdUtil;
......@@ -39,14 +41,28 @@ public class CollectGridItem extends ItemViewModel<BaseViewModel> {
private void initView(){
if("1".equals(entity.get().getIsEdit())){
titleGrayColor.set(View.GONE);
titleBlueColor.set(View.VISIBLE);
}else {
titleGrayColor.set(View.VISIBLE);
titleBlueColor.set(View.GONE);
switch (fragmentType) {
case Configs.BASE_ARCHIVES:
case Configs.WEIGHTING_MANAGE:
if("1".equals(entity.get().getIsEdit())){
titleGrayColor.set(View.GONE);
titleBlueColor.set(View.VISIBLE);
}else {
titleGrayColor.set(View.VISIBLE);
titleBlueColor.set(View.GONE);
}
break;
default:
if("1".equals(entity.get().getIsInsert())){
titleGrayColor.set(View.GONE);
titleBlueColor.set(View.VISIBLE);
}else {
titleGrayColor.set(View.VISIBLE);
titleBlueColor.set(View.GONE);
}
break;
}
}
public BindingCommand onItemClickCommand = new BindingCommand(new BindingAction() {
......@@ -64,10 +80,10 @@ public class CollectGridItem extends ItemViewModel<BaseViewModel> {
break;
case Configs.TREATMENT_RECORD:
((MedicalRecordVM)viewModel).onItemClick(entity.get());
break;
case Configs.IMMUN_RECORD:
((ImmunRecordVM)viewModel).onItemClick(entity.get());
break;
case Configs.BREEDING_RECORD:
((BreedingRecordVM)viewModel).onItemClick(entity.get());
......
......@@ -24,6 +24,7 @@ import com.phlx.anchorcollect.entity.DictEntity;
import com.phlx.anchorcollect.entity.GenTableColumn;
import com.phlx.anchorcollect.ui.fragment.list.CollectGridItem;
import com.phlx.anchorcollect.ui.setting.SettingActivity;
import com.phlx.anchorcollect.ui.setting.SyncActivity;
import com.phlx.anchorcollect.util.EntityUtils;
import org.greenrobot.greendao.query.QueryBuilder;
......@@ -44,7 +45,7 @@ public class BasicsCollectVM extends BaseViewModel<Repository> {
public Drawable drawableImg;
//照片路径
private String imgUrl;
public String imgUrl;
private File imgFile;
//存放非list控件
......@@ -74,10 +75,10 @@ public class BasicsCollectVM extends BaseViewModel<Repository> {
public void initGen() {
imgUrl = Environment.getExternalStorageDirectory().getAbsolutePath() +
"/collect/picture/"
+ "anchorCiq" + tag + ".jpg";
imgFile = new File(imgUrl);
// imgUrl = Environment.getExternalStorageDirectory().getAbsolutePath() +
// "/collect/picture/"
// + "anchorCiq" + tag + ".jpg";
// imgFile = new File(imgUrl);
int i = 0;
for (GenTableColumn gtc : Configs.cattleresume) {
......@@ -102,24 +103,19 @@ public class BasicsCollectVM extends BaseViewModel<Repository> {
public void initData(String tag) {
imgUrl = Environment.getExternalStorageDirectory().getAbsolutePath() +
"/collect/picture/"
+ "anchorCiq" + tag + ".jpg";
imgFile = new File(imgUrl);
queryCattleResume(tag);
}
public void onItemClick(GenTableColumn entity) {
if (!"1".equals(entity.getIsEdit())) return;
if (StringUtils.isEmpty(Configs.tempUnid)) {
ToastUtils.showShort("请扫描耳标或者输入耳标信息");
return;
}
if (!"1".equals(entity.getIsEdit())) return;
currentParamEntity = entity;
onCardClickEvent.call();
}
......@@ -144,6 +140,14 @@ public class BasicsCollectVM extends BaseViewModel<Repository> {
}
});
//同步数据
public BindingCommand onSyncClick = new BindingCommand(new BindingAction() {
@Override
public void call() {
startActivity(SyncActivity.class);
}
});
//当前牛信息展示
public BindingCommand onCattleInfoClick = new BindingCommand(new BindingAction() {
@Override
......@@ -154,6 +158,8 @@ public class BasicsCollectVM extends BaseViewModel<Repository> {
public void click(int id) {
if (!"1".equals(currentParamEntity.getIsEdit())) return;
if (StringUtils.isEmpty(Configs.tempUnid)) {
ToastUtils.showShort("请扫描耳标或者输入耳标信息");
return;
......@@ -166,7 +172,6 @@ public class BasicsCollectVM extends BaseViewModel<Repository> {
currentParamEntity = uiList.get(id);
}
if (!"1".equals(currentParamEntity.getIsEdit())) return;
onCardClickEvent.call();
}
......@@ -181,6 +186,11 @@ public class BasicsCollectVM extends BaseViewModel<Repository> {
if (result != null && result.size() > 0) {
imgUrl = Environment.getExternalStorageDirectory().getAbsolutePath() +
"/collect/picture/"
+ "anchorCiq" + result.get(0).getUnid() + ".jpg";
imgFile = new File(imgUrl);
Configs.tempTag = result.get(0).getIndividualNo();
Configs.tempRfid = result.get(0).getRegistrationNo();
Configs.tempUnid = result.get(0).getUnid();
......@@ -247,6 +257,7 @@ public class BasicsCollectVM extends BaseViewModel<Repository> {
public void clearParamList() {
//备注清除数据
imgUrl = "";
remarkParamEntity.setContent("");
remarkParamEntity.setShowName("");
currentParamEntity = new GenTableColumn();
......
package com.phlx.anchorcollect.ui.fragment.vm;
import android.app.Application;
import android.graphics.drawable.Drawable;
import android.os.Environment;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import androidx.databinding.ObservableList;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.phlx.anchorcollect.BR;
import com.phlx.anchorcollect.Configs;
import com.phlx.anchorcollect.R;
import com.phlx.anchorcollect.data.Repository;
import com.phlx.anchorcollect.db.DbUtil;
import com.phlx.anchorcollect.db.gen.CattleResumeEntityDao;
import com.phlx.anchorcollect.db.gen.DictEntityDao;
import com.phlx.anchorcollect.db.gen.GenTableDao;
import com.phlx.anchorcollect.db.gen.ImmuneBatchDetailEntityDao;
import com.phlx.anchorcollect.db.gen.ImmuneBatchEntityDao;
import com.phlx.anchorcollect.db.gen.PerformanceEntityDao;
import com.phlx.anchorcollect.db.interf.DbIDUCallBack;
import com.phlx.anchorcollect.db.interf.DbQueryCallBack;
import com.phlx.anchorcollect.entity.CattleResumeEntity;
import com.phlx.anchorcollect.entity.DictEntity;
import com.phlx.anchorcollect.entity.GenTable;
import com.phlx.anchorcollect.entity.GenTableColumn;
import com.phlx.anchorcollect.entity.ImmuneBatchDetailEntity;
import com.phlx.anchorcollect.entity.ImmuneBatchEntity;
import com.phlx.anchorcollect.entity.PerformanceEntity;
import com.phlx.anchorcollect.ui.fragment.list.CollectGridItem;
import com.phlx.anchorcollect.util.EntityUtils;
import com.phlx.anchorcollect.util.StringUtil;
import org.greenrobot.greendao.query.QueryBuilder;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import cn.hutool.core.util.IdUtil;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
import me.goldze.mvvmhabit.binding.command.BindingCommand;
import me.goldze.mvvmhabit.bus.event.SingleLiveEvent;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.StringUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
import me.tatarka.bindingcollectionadapter2.ItemBinding;
public class ImmunRecordVM extends BaseViewModel<Repository> {
public Drawable drawableImg;
//照片路径
private String imgUrl;
private File imgFile;
//存放非list控件
public List<GenTableColumn> uiList = new ArrayList<>();
public GenTableColumn currentParamEntity;
public GenTableColumn remarkParamEntity = new GenTableColumn();
//给RecyclerView添加ObservableList
public ObservableList<CollectGridItem> observableList = new ObservableArrayList<>();
//给RecyclerView添加ItemBinding
public ItemBinding<CollectGridItem> itemBinding = ItemBinding.of(BR.viewModel, R.layout.item_collect_grid);
public SingleLiveEvent<Boolean> onCattleClickEvent = new SingleLiveEvent<>();
public SingleLiveEvent<Boolean> onCardClickEvent = new SingleLiveEvent<>();
public SingleLiveEvent<Boolean> onTagClickEvent = new SingleLiveEvent<>();
public SingleLiveEvent<Boolean> onNotifyAllEvent = new SingleLiveEvent<>();//true是清空页面
public SingleLiveEvent<String> onShowDialogEvent = new SingleLiveEvent<>();//弹窗提示
public ObservableField<String> tag = new ObservableField<>("");
public ObservableField<String> weight = new ObservableField<>("125.5");
private long uuid;
public boolean isModify = false;
private SimpleDateFormat dateFormat;
private List<ImmuneBatchEntity> uploadData;
private List<ImmuneBatchDetailEntity> detailUploadData;
public ImmunRecordVM(@NonNull Application application, Repository model) {
super(application, model);
}
public void initGen() {
imgUrl = Environment.getExternalStorageDirectory().getAbsolutePath() +
"/collect/picture/"
+ "anchorCiq" + tag + ".jpg";
imgFile = new File(imgUrl);
for (GenTableColumn gtc : Configs.immunebatch) {
CollectGridItem cgi = new CollectGridItem(this, gtc, Configs.IMMUN_RECORD);
observableList.add(cgi);
}
//初始化一下备注
remarkParamEntity.setColumnName("备注");
remarkParamEntity.setContent("");
remarkParamEntity.setShowName("");
remarkParamEntity.setColumnComment("备注");
remarkParamEntity.setHtmlType("input");
remarkParamEntity.setJavaType("String");
}
private void initData(ImmuneBatchEntity immuneBatchEntity) {
//清除选中unid
Configs.resumeId = "";
String[] filedName = EntityUtils.getFiledName(immuneBatchEntity);
for (String name : filedName) {
for (GenTableColumn gtc : Configs.immunebatch) {
if (name.equals(gtc.getJavaField())) {
try {
Object fieldValueByName = EntityUtils.getFieldValueByName(name, immuneBatchEntity);
String value = fieldValueByName == null ? "" : fieldValueByName.toString();
// Log.e("fieldValue:", "key:" + name + " | value:" + value);
gtc.setContent(value);
String showName = value;
// 如果是选择的,查字典项
if (!StringUtils.isEmpty(gtc.getDictType())) {
QueryBuilder<DictEntity> builder =
DbUtil.getInstance().getQueryBuilder(DictEntity.class)
.where(DictEntityDao.Properties.DictType.eq(gtc.getDictType())
, DictEntityDao.Properties.DictValue.eq(value));
List<DictEntity> dictEntities = DbUtil.getInstance().queryAll(DictEntity.class, builder);
if (dictEntities != null && dictEntities.size() > 0) {
showName = dictEntities.get(0).getDictLabel();
}
}
gtc.setShowName(showName);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
onNotifyAllEvent.setValue(false);
}
}
public void queryImmuneBatch() {
QueryBuilder<ImmuneBatchEntity> builder =
DbUtil.getInstance().getQueryBuilder(ImmuneBatchEntity.class)
.where(ImmuneBatchEntityDao.Properties.Unid.eq(Configs.resumeId));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<ImmuneBatchEntity>() {
@Override
public void onSuccess(List<ImmuneBatchEntity> result) {
if (result != null && result.size() > 0) {
initData(result.get(0));
}
}
@Override
public void onFailed() {
//清除选中unid
Configs.resumeId = "";
onNotifyAllEvent.setValue(true);
ToastUtils.showShort("免疫记录-数据库查询失败");
}
}).queryAsyncAll(ImmuneBatchEntity.class, builder);
}
public void onItemClick(GenTableColumn entity) {
if (StringUtils.isEmpty(Configs.tempUnid)) {
ToastUtils.showShort("请扫描耳标或者输入耳标信息");
return;
}
if (!"1".equals(entity.getIsEdit()) && isModify) {
ToastUtils.showShort("此数据无法修改!!");
return;
}
currentParamEntity = entity;
onCardClickEvent.call();
}
public void click(int id) {
if (StringUtils.isEmpty(Configs.tempUnid)) {
ToastUtils.showShort("请扫描耳标或者输入耳标信息");
return;
}
//99备注,100照片
if (id == 99) {
currentParamEntity = remarkParamEntity;
} else {
currentParamEntity = uiList.get(id);
}
if (!"1".equals(currentParamEntity.getIsEdit())) return;
onCardClickEvent.call();
}
public BindingCommand onSaveClick = new BindingCommand(new BindingAction() {
@Override
public void call() {
saveImmunRecord();
}
});
private void saveImmunRecord() {
JsonObject jsonObject = new JsonObject();
for (GenTableColumn gtc : Configs.immunebatch) {
jsonObject.addProperty(gtc.getJavaField(), gtc.getContent());
}
Gson gson = new Gson();
ImmuneBatchEntity immuneBatchEntity = gson.fromJson(jsonObject, ImmuneBatchEntity.class);
dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (isModify) {//修改
immuneBatchEntity.setUpdateBy(SPUtils.getInstance().getString(Configs.SP_LOGIN_NAME));
immuneBatchEntity.setUpdateTime(dateFormat.format(new Date()));
} else {//新增
uuid = IdUtil.createSnowflake(3, 1).nextId();
immuneBatchEntity.setUnid(uuid + "");
immuneBatchEntity.setDeptId(SPUtils.getInstance().getString(Configs.SP_DEPT_ID));
immuneBatchEntity.setCreateBy(SPUtils.getInstance().getString(Configs.SP_LOGIN_NAME));
immuneBatchEntity.setCreateTime(dateFormat.format(new Date()));
}
immuneBatchEntity.setUploadStatus("0");
uploadData = new ArrayList<>();
detailUploadData = new ArrayList<>();
uploadData.add(immuneBatchEntity);
if (!isModify) {
//查找所有属于这个圈舍的unid
String circleNo = immuneBatchEntity.getCircleNo();
QueryBuilder<CattleResumeEntity> builder =
DbUtil.getInstance().getQueryBuilder(CattleResumeEntity.class)
.where(CattleResumeEntityDao.Properties.CircleNo.eq(circleNo));
List<CattleResumeEntity> cattleResumeEntities = DbUtil.getInstance().queryAll(CattleResumeEntity.class, builder);
for (CattleResumeEntity cre : cattleResumeEntities) {
ImmuneBatchDetailEntity immuneBatchDetailEntity = new ImmuneBatchDetailEntity();
immuneBatchDetailEntity.setUnid(IdUtil.createSnowflake(3, 1).nextId() + "");
immuneBatchDetailEntity.setCattleresumeUnid(cre.getUnid());
immuneBatchDetailEntity.setImmunebatchUnid(immuneBatchEntity.getUnid());
detailUploadData.add(immuneBatchDetailEntity);
}
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
dismissDialog();
if (result) {
if (!isModify) {
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
dismissDialog();
if (result) {
onNotifyAllEvent.setValue(true);
onShowDialogEvent.setValue("保存免疫记录成功!");
} else {
ToastUtils.showShort("保存免疫记录子表失败");
}
}
}).insertAsyncBatch(ImmuneBatchDetailEntity.class, detailUploadData);
} else {
onNotifyAllEvent.setValue(true);
onShowDialogEvent.setValue("修改免疫记录成功!");
}
} else {
ToastUtils.showShort("保存免疫记录失败");
}
}
}).insertAsyncBatch(ImmuneBatchEntity.class, uploadData);
}
//清空数据源
public void clearParamList() {
//备注清除数据
remarkParamEntity.setContent("");
remarkParamEntity.setShowName("");
currentParamEntity = new GenTableColumn();
uuid = 0;
for (GenTableColumn gtc : Configs.immunebatch) {
gtc.setShowName("");
gtc.setContent("");
}
}
}
package com.phlx.anchorcollect.ui.fragment.vm;
import android.app.Application;
import android.graphics.drawable.Drawable;
import android.os.Environment;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableArrayList;
import androidx.databinding.ObservableField;
import androidx.databinding.ObservableList;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.phlx.anchorcollect.BR;
import com.phlx.anchorcollect.Configs;
import com.phlx.anchorcollect.R;
import com.phlx.anchorcollect.data.Repository;
import com.phlx.anchorcollect.db.DbUtil;
import com.phlx.anchorcollect.db.gen.DictEntityDao;
import com.phlx.anchorcollect.db.gen.MedicalRecordEntityDao;
import com.phlx.anchorcollect.db.gen.PerformanceEntityDao;
import com.phlx.anchorcollect.db.interf.DbIDUCallBack;
import com.phlx.anchorcollect.db.interf.DbQueryCallBack;
import com.phlx.anchorcollect.entity.DictEntity;
import com.phlx.anchorcollect.entity.GenTableColumn;
import com.phlx.anchorcollect.entity.MedicalRecordEntity;
import com.phlx.anchorcollect.entity.PerformanceEntity;
import com.phlx.anchorcollect.ui.fragment.list.CollectGridItem;
import com.phlx.anchorcollect.util.EntityUtils;
import org.greenrobot.greendao.query.QueryBuilder;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import cn.hutool.core.util.IdUtil;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
import me.goldze.mvvmhabit.binding.command.BindingCommand;
import me.goldze.mvvmhabit.bus.event.SingleLiveEvent;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.StringUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;
import me.tatarka.bindingcollectionadapter2.ItemBinding;
public class MedicalRecordVM extends BaseViewModel<Repository> {
public Drawable drawableImg;
//照片路径
private String imgUrl;
private File imgFile;
//存放非list控件
public List<GenTableColumn> uiList = new ArrayList<>();
public GenTableColumn currentParamEntity;
public GenTableColumn remarkParamEntity = new GenTableColumn();
//给RecyclerView添加ObservableList
public ObservableList<CollectGridItem> observableList = new ObservableArrayList<>();
//给RecyclerView添加ItemBinding
public ItemBinding<CollectGridItem> itemBinding = ItemBinding.of(BR.viewModel, R.layout.item_collect_grid);
public SingleLiveEvent<Boolean> onCattleClickEvent = new SingleLiveEvent<>();
public SingleLiveEvent<Boolean> onCardClickEvent = new SingleLiveEvent<>();
public SingleLiveEvent<Boolean> onTagClickEvent = new SingleLiveEvent<>();
public SingleLiveEvent<Boolean> onNotifyAllEvent = new SingleLiveEvent<>();//true是清空页面
public SingleLiveEvent<String> onShowDialogEvent = new SingleLiveEvent<>();//弹窗提示
public ObservableField<String> tag = new ObservableField<>("");
public ObservableField<String> weight = new ObservableField<>("125.5");
public boolean isModify = false;
private long uuid;
private SimpleDateFormat dateFormat;
private List<MedicalRecordEntity> uploadData;
public MedicalRecordVM(@NonNull Application application, Repository model) {
super(application, model);
}
public void initGen() {
imgUrl = Environment.getExternalStorageDirectory().getAbsolutePath() +
"/collect/picture/"
+ "anchorCiq" + tag + ".jpg";
imgFile = new File(imgUrl);
for (GenTableColumn gtc : Configs.medicalrecords) {
CollectGridItem cgi = new CollectGridItem(this, gtc, Configs.TREATMENT_RECORD);
observableList.add(cgi);
}
//初始化一下备注
remarkParamEntity.setColumnName("备注");
remarkParamEntity.setContent("");
remarkParamEntity.setShowName("");
remarkParamEntity.setColumnComment("备注");
remarkParamEntity.setHtmlType("input");
remarkParamEntity.setJavaType("String");
}
private void initData(MedicalRecordEntity medicalRecordEntity) {
//清除选中unid
Configs.resumeId = "";
String[] filedName = EntityUtils.getFiledName(medicalRecordEntity);
for (String name : filedName) {
for (GenTableColumn gtc : Configs.medicalrecords) {
if (name.equals(gtc.getJavaField())) {
try {
Object fieldValueByName = EntityUtils.getFieldValueByName(name, medicalRecordEntity);
String value = fieldValueByName == null ? "" : fieldValueByName.toString();
// Log.e("fieldValue:", "key:" + name + " | value:" + value);
gtc.setContent(value);
String showName = value;
// 如果是选择的,查字典项
if (!StringUtils.isEmpty(gtc.getDictType())) {
QueryBuilder<DictEntity> builder =
DbUtil.getInstance().getQueryBuilder(DictEntity.class)
.where(DictEntityDao.Properties.DictType.eq(gtc.getDictType())
, DictEntityDao.Properties.DictValue.eq(value));
List<DictEntity> dictEntities = DbUtil.getInstance().queryAll(DictEntity.class, builder);
if (dictEntities != null && dictEntities.size() > 0) {
showName = dictEntities.get(0).getDictLabel();
}
}
gtc.setShowName(showName);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
onNotifyAllEvent.setValue(false);
}
}
public void queryMedicalRecord() {
QueryBuilder<MedicalRecordEntity> builder =
DbUtil.getInstance().getQueryBuilder(MedicalRecordEntity.class)
.where(MedicalRecordEntityDao.Properties.Unid.eq(Configs.resumeId));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<MedicalRecordEntity>() {
@Override
public void onSuccess(List<MedicalRecordEntity> result) {
if (result != null && result.size() > 0) {
initData(result.get(0));
}
}
@Override
public void onFailed() {
//清除选中unid
Configs.resumeId = "";
onNotifyAllEvent.setValue(true);
ToastUtils.showShort("诊疗记录-数据库查询失败");
}
}).queryAsyncAll(MedicalRecordEntity.class, builder);
}
public void onItemClick(GenTableColumn entity) {
if (StringUtils.isEmpty(Configs.tempUnid)) {
ToastUtils.showShort("请扫描耳标或者输入耳标信息");
return;
}
if (!"1".equals(entity.getIsEdit()) && isModify) {
ToastUtils.showShort("此数据无法修改!!");
return;
}
if (!"1".equals(entity.getIsEdit())) return;
currentParamEntity = entity;
onCardClickEvent.call();
}
public void click(int id) {
if (StringUtils.isEmpty(Configs.tempUnid)) {
ToastUtils.showShort("请扫描耳标或者输入耳标信息");
return;
}
//99备注,100照片
if (id == 99) {
currentParamEntity = remarkParamEntity;
} else {
currentParamEntity = uiList.get(id);
}
if (!"1".equals(currentParamEntity.getIsEdit())) return;
onCardClickEvent.call();
}
public BindingCommand onSaveClick = new BindingCommand(new BindingAction() {
@Override
public void call() {
saveMedicalRecord();
}
});
private void saveMedicalRecord() {
JsonObject jsonObject = new JsonObject();
for (GenTableColumn gtc : Configs.medicalrecords) {
jsonObject.addProperty(gtc.getJavaField(), gtc.getContent());
}
Gson gson = new Gson();
MedicalRecordEntity medicalRecordEntity = gson.fromJson(jsonObject, MedicalRecordEntity.class);
dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (!isModify) {//新增
uuid = IdUtil.createSnowflake(3, 1).nextId();
medicalRecordEntity.setUnid(uuid + "");
medicalRecordEntity.setCattleresumeId(Configs.tempUnid);
medicalRecordEntity.setDeptId(SPUtils.getInstance().getString(Configs.SP_DEPT_ID));
medicalRecordEntity.setCreateBy(SPUtils.getInstance().getString(Configs.SP_LOGIN_NAME));
medicalRecordEntity.setCreateTime(dateFormat.format(new Date()));
}else{
medicalRecordEntity.setUpdateBy(SPUtils.getInstance().getString(Configs.SP_LOGIN_NAME));
medicalRecordEntity.setUpdateTime(dateFormat.format(new Date()));
}
medicalRecordEntity.setUploadStatus("0");
uploadData = new ArrayList<>();
uploadData.add(medicalRecordEntity);
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
dismissDialog();
if (result) {
clearParamList();
onShowDialogEvent.setValue("保存诊疗记录成功!");
} else {
ToastUtils.showShort("保存诊疗记录失败");
}
}
}).insertAsyncBatch(MedicalRecordEntity.class, uploadData);
}
//清空数据源
public void clearParamList() {
//备注清除数据
remarkParamEntity.setContent("");
remarkParamEntity.setShowName("");
currentParamEntity = new GenTableColumn();
uuid = 0;
for (GenTableColumn gtc : Configs.medicalrecords) {
gtc.setShowName("");
gtc.setContent("");
}
}
}
......@@ -73,6 +73,7 @@ public class PerformanceVM extends BaseViewModel<Repository> {
public ObservableField<String> tag = new ObservableField<>("");
public ObservableField<String> weight = new ObservableField<>("125.5");
public boolean isModify = false;
private long uuid;
private SimpleDateFormat dateFormat;
......@@ -180,6 +181,11 @@ public class PerformanceVM extends BaseViewModel<Repository> {
return;
}
if (!"1".equals(entity.getIsEdit()) && isModify) {
ToastUtils.showShort("此数据无法修改!!");
return;
}
if (!"1".equals(entity.getIsEdit())) return;
currentParamEntity = entity;
......@@ -223,9 +229,10 @@ public class PerformanceVM extends BaseViewModel<Repository> {
PerformanceEntity performanceEntity = gson.fromJson(jsonObject, PerformanceEntity.class);
dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (uuid == 0) {//新增
if (!isModify) {//新增
uuid = IdUtil.createSnowflake(3, 1).nextId();
performanceEntity.setUnid(uuid + "");
performanceEntity.setCattleresumeId(Configs.tempUnid);
performanceEntity.setDeptId(SPUtils.getInstance().getString(Configs.SP_DEPT_ID));
performanceEntity.setCreateBy(SPUtils.getInstance().getString(Configs.SP_LOGIN_NAME));
......@@ -245,6 +252,7 @@ public class PerformanceVM extends BaseViewModel<Repository> {
dismissDialog();
if (result) {
clearParamList();
onNotifyAllEvent.setValue(true);
onShowDialogEvent.setValue("保存性能测定成功!");
} else {
ToastUtils.showShort("保存性能测定失败");
......@@ -262,7 +270,7 @@ public class PerformanceVM extends BaseViewModel<Repository> {
remarkParamEntity.setContent("");
remarkParamEntity.setShowName("");
currentParamEntity = new GenTableColumn();
uuid = IdUtil.createSnowflake(3, 1).nextId();
uuid = 0;
for (GenTableColumn gtc : Configs.performance) {
gtc.setShowName("");
gtc.setContent("");
......
......@@ -157,9 +157,9 @@ public class CattleActivity extends BaseActivity<AvtivityCattleBinding, CattleVM
}
//诊疗记录
private void initTreatmentRecordGrid() {
private void initMedicalRecordGrid() {
DataGridView mDataGridView = binding.dgvTreatmentRecord;
DataGridView mDataGridView = binding.dgvMedicalRecord;
//初始化表头
List<String> headerStr = new ArrayList<>();
......@@ -213,14 +213,17 @@ public class CattleActivity extends BaseActivity<AvtivityCattleBinding, CattleVM
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
if (which == DialogAction.POSITIVE) {
//TODO 跳转详情页
Configs.mainPosition = 3;
Configs.resumeId = rowData.getUnid();
startActivity(MainActivity.class);
finish();
}
}
}).show();
}
});
viewModel.queryTreatmentRecordList();
viewModel.queryMedicalRecordList();
}
......@@ -281,7 +284,10 @@ public class CattleActivity extends BaseActivity<AvtivityCattleBinding, CattleVM
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
if (which == DialogAction.POSITIVE) {
//TODO 跳转详情页
Configs.mainPosition = 4;
Configs.resumeId = rowData.getUnid();
startActivity(MainActivity.class);
finish();
}
}
}).show();
......@@ -369,10 +375,10 @@ public class CattleActivity extends BaseActivity<AvtivityCattleBinding, CattleVM
case 0:
refreshDataGridView = binding.dgvSignMeasure;
refreshDataGridView.setDataSource(viewModel.getPerformanceEntityList());
initTreatmentRecordGrid();
initMedicalRecordGrid();
break;
case 1:
refreshDataGridView = binding.dgvTreatmentRecord;
refreshDataGridView = binding.dgvMedicalRecord;
refreshDataGridView.setDataSource(viewModel.getMedicalRecordEntityList());
initImmunRecordGrid();
break;
......
......@@ -88,7 +88,7 @@ public class CattleVM extends BackBarVM<Repository> {
}).queryAsyncAll(PerformanceEntity.class, builder);
}
public void queryTreatmentRecordList() {
public void queryMedicalRecordList() {
QueryBuilder<MedicalRecordEntity> builder =
DbUtil.getInstance().getQueryBuilder(MedicalRecordEntity.class)
......
......@@ -66,8 +66,8 @@ public class LoginVM extends BaseViewModel<Repository> {
userName.set(model.getUserName());
password.set(model.getPassword());
userName.set("admin");
password.set("admin123");
userName.set("ry");
password.set("123456");
}
//清除用户名的点击事件
......@@ -220,9 +220,17 @@ public class LoginVM extends BaseViewModel<Repository> {
genList.addAll(DbUtil.getInstance().queryAll(GenTable.class, builder));
for (GenTable gt : genList) {
switch (gt.getBusinessName()) {
case "cattleresume":
/**
* zxgl_cattleresume 基础信息
* zxgl_performance 性能测定
* zxgl_weight_man 称重管理
* zxgl_medicalrecords 诊疗记录
* zxgl_immunebatch 免疫记录
* zxgl_cattlemating_master 配种记录主表
* zxgl_cattlemating_detaill 配种记子表
*/
switch (gt.getTableName()) {
case "zxgl_cattleresume":
QueryBuilder<GenTableColumn> builderDetaile0 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
......@@ -230,52 +238,52 @@ public class LoginVM extends BaseViewModel<Repository> {
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.cattleresume = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile0);
break;
case "performance":
case "zxgl_performance":
QueryBuilder<GenTableColumn> builderDetaile1 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.performance = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile1);
break;
case "weightMan":
case "zxgl_weight_man":
QueryBuilder<GenTableColumn> builderDetaile2 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.weightMan = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile2);
break;
case "medicalrecords":
case "zxgl_medicalrecords":
QueryBuilder<GenTableColumn> builderDetaile3 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.medicalrecords = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile3);
break;
case "immunebatch":
case "zxgl_immunebatch":
QueryBuilder<GenTableColumn> builderDetaile4 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.immunebatch = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile4);
break;
case "cattlematingMaster":
case "zxgl_cattlemating_master":
QueryBuilder<GenTableColumn> builderDetaile5 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.cattlematingMaster = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile5);
break;
case "cattlematingDetaill":
case "zxgl_cattlemating_detaill":
QueryBuilder<GenTableColumn> builderDetaile6 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.cattlematingDetaill = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile6);
break;
}
......
package com.phlx.anchorcollect.ui.main;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.KeyEvent;
......@@ -21,6 +22,8 @@ import com.phlx.anchorcollect.ui.fragment.BasicsCollectFragment;
import com.phlx.anchorcollect.ui.fragment.BreedingRecordFragment;
import com.phlx.anchorcollect.ui.fragment.CollectFragment;
import com.phlx.anchorcollect.ui.fragment.CollectListFragment;
import com.phlx.anchorcollect.ui.fragment.ImmunRecordFragment;
import com.phlx.anchorcollect.ui.fragment.MedicalRecordFragment;
import com.phlx.anchorcollect.ui.fragment.PerformanceFragment;
public class MainActivity extends BaseActivity<ActivityMainBinding, MainVM> {
......@@ -31,8 +34,23 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainVM> {
private BasicsCollectFragment _basicsCollectFragment;
private PerformanceFragment _performanceFragment;
private MedicalRecordFragment _medicalRecordFragment;
private ImmunRecordFragment _immunRecordFragment;
private BreedingRecordFragment _breedingRecordFragment;
private Drawable drwCattleOn;
private Drawable drwCattleOff;
private Drawable drwPerformanceOn;
private Drawable drwPerformanceOff;
private Drawable drwWeightManOn;
private Drawable drwWeightManOff;
private Drawable drwMedicalOn;
private Drawable drwMedicalOff;
private Drawable drwImmuneOn;
private Drawable drwImmuneOff;
private Drawable drwBreedingOn;
private Drawable drwBreedingOff;
@Override
public int initContentView(Bundle savedInstanceState) {
return R.layout.activity_main;
......@@ -72,6 +90,32 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainVM> {
viewModel.init();
drwCattleOn = getResources().getDrawable(R.mipmap.jichuxinxi2);
drwCattleOff = getResources().getDrawable(R.mipmap.jichuxinxi1);
drwPerformanceOn = getResources().getDrawable(R.mipmap.xingnengceding2);
drwPerformanceOff = getResources().getDrawable(R.mipmap.xingnengceding1);
drwWeightManOn = getResources().getDrawable(R.mipmap.chengzhong2);
drwWeightManOff = getResources().getDrawable(R.mipmap.chengzhong1);
drwMedicalOn = getResources().getDrawable(R.mipmap.zhenliaojilu2);
drwMedicalOff = getResources().getDrawable(R.mipmap.zhenliaojilu1);
drwImmuneOn = getResources().getDrawable(R.mipmap.mianyijilu2);
drwImmuneOff = getResources().getDrawable(R.mipmap.mianyijilu1);
drwBreedingOn = getResources().getDrawable(R.mipmap.peizhong2);
drwBreedingOff = getResources().getDrawable(R.mipmap.peizhong1);
drwCattleOn.setBounds(0, 0, drwCattleOn.getMinimumWidth(), drwCattleOn.getMinimumHeight());
drwCattleOff.setBounds(0, 0, drwCattleOff.getMinimumWidth(), drwCattleOff.getMinimumHeight());
drwPerformanceOn.setBounds(0, 0, drwPerformanceOn.getMinimumWidth(), drwPerformanceOn.getMinimumHeight());
drwPerformanceOff.setBounds(0, 0, drwPerformanceOff.getMinimumWidth(), drwPerformanceOff.getMinimumHeight());
drwWeightManOn.setBounds(0, 0, drwWeightManOn.getMinimumWidth(), drwWeightManOn.getMinimumHeight());
drwWeightManOff.setBounds(0, 0, drwWeightManOff.getMinimumWidth(), drwWeightManOff.getMinimumHeight());
drwMedicalOn.setBounds(0, 0, drwMedicalOn.getMinimumWidth(), drwMedicalOn.getMinimumHeight());
drwMedicalOff.setBounds(0, 0, drwMedicalOff.getMinimumWidth(), drwMedicalOff.getMinimumHeight());
drwImmuneOn.setBounds(0, 0, drwImmuneOn.getMinimumWidth(), drwImmuneOn.getMinimumHeight());
drwImmuneOff.setBounds(0, 0, drwImmuneOff.getMinimumWidth(), drwImmuneOff.getMinimumHeight());
drwBreedingOn.setBounds(0, 0, drwBreedingOn.getMinimumWidth(), drwBreedingOn.getMinimumHeight());
drwBreedingOff.setBounds(0, 0, drwBreedingOff.getMinimumWidth(), drwBreedingOff.getMinimumHeight());
//初始化标题
// viewModel.initToolbar(getTitleName());
//初始化Fragment
......@@ -98,9 +142,13 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainVM> {
_basicsCollectFragment = BasicsCollectFragment.getInstance();
_performanceFragment = PerformanceFragment.getInstance();
_medicalRecordFragment = MedicalRecordFragment.getInstance();
_immunRecordFragment = ImmunRecordFragment.getInstance();
_breedingRecordFragment = BreedingRecordFragment.getInstance();
transaction.add(R.id.frameLayout, _basicsCollectFragment);
transaction.add(R.id.frameLayout, _performanceFragment);
transaction.add(R.id.frameLayout, _medicalRecordFragment);
transaction.add(R.id.frameLayout, _immunRecordFragment);
transaction.add(R.id.frameLayout, _breedingRecordFragment);
transaction.commit();
labelSwitching(Configs.mainPosition);
......@@ -111,36 +159,55 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainVM> {
transaction = getSupportFragmentManager().beginTransaction();
transaction.hide(_basicsCollectFragment);
transaction.hide(_performanceFragment);
transaction.hide(_medicalRecordFragment);
transaction.hide(_immunRecordFragment);
transaction.hide(_breedingRecordFragment);
binding.tvTab0.setTextColor(getResources().getColor(R.color.color_font_non_focus));
binding.tvTab1.setTextColor(getResources().getColor(R.color.color_font_non_focus));
binding.tvTab2.setTextColor(getResources().getColor(R.color.color_font_non_focus));
binding.tvTab3.setTextColor(getResources().getColor(R.color.color_font_non_focus));
binding.tvTab4.setTextColor(getResources().getColor(R.color.color_font_non_focus));
binding.tvTab5.setTextColor(getResources().getColor(R.color.color_font_non_focus));
binding.tvTab0.setCompoundDrawables(null, drwCattleOff, null, null);
binding.tvTab1.setCompoundDrawables(null, drwPerformanceOff, null, null);
binding.tvTab2.setCompoundDrawables(null, drwWeightManOff, null, null);
binding.tvTab3.setCompoundDrawables(null, drwMedicalOff, null, null);
binding.tvTab4.setCompoundDrawables(null, drwImmuneOff, null, null);
binding.tvTab5.setCompoundDrawables(null, drwBreedingOff, null, null);
switch (position) {
case 0:
transaction.show(_basicsCollectFragment);
binding.tvTab0.setTextColor(getResources().getColor(R.color.colorPrimary));
binding.tvTab0.setTextColor(getResources().getColor(R.color.white));
binding.tvTab0.setCompoundDrawables(null, drwCattleOn, null, null);
break;
case 1:
Bundle args = new Bundle();
args.putString("id", "-1");
transaction.show(_performanceFragment);
binding.tvTab1.setTextColor(getResources().getColor(R.color.colorPrimary));
binding.tvTab1.setTextColor(getResources().getColor(R.color.white));
binding.tvTab1.setCompoundDrawables(null, drwPerformanceOn, null, null);
break;
case 2:
// transaction.show(_performanceFragment);
// binding.tvTab1.setTextColor(getResources().getColor(R.color.colorPrimary));
// binding.tvTab2.setTextColor(getResources().getColor(R.color.white));
// binding.tvTab2.setCompoundDrawables(null, drwWeightManOn,null, null);
break;
case 3:
// transaction.show(_performanceFragment);
// binding.tvTab1.setTextColor(getResources().getColor(R.color.colorPrimary));
transaction.show(_medicalRecordFragment);
binding.tvTab3.setTextColor(getResources().getColor(R.color.white));
binding.tvTab3.setCompoundDrawables(null, drwMedicalOn, null, null);
break;
case 4:
// transaction.show(_performanceFragment);
// binding.tvTab1.setTextColor(getResources().getColor(R.color.colorPrimary));
transaction.show(_immunRecordFragment);
binding.tvTab4.setTextColor(getResources().getColor(R.color.white));
binding.tvTab4.setCompoundDrawables(null, drwImmuneOn, null, null);
break;
case 5:
transaction.show(_breedingRecordFragment);
binding.tvTab5.setTextColor(getResources().getColor(R.color.colorPrimary));
binding.tvTab5.setTextColor(getResources().getColor(R.color.white));
binding.tvTab5.setCompoundDrawables(null, drwBreedingOn, null, null);
break;
}
......@@ -171,7 +238,6 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainVM> {
// })
// ;
new MaterialDialog.Builder(this).title("系统提示").content("是否退出程序?").positiveText("确定").negativeText("取消").onAny(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
......
......@@ -75,7 +75,7 @@ public class MainVM extends MainBarVM<Repository> {
});
//诊疗记录
public BindingCommand OnTreatmentRecordClickCommand = new BindingCommand(new BindingAction() {
public BindingCommand OnMedicalRecordClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
if(StringUtils.isEmpty(Configs.tempUnid)){
......
......@@ -8,6 +8,7 @@ import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
......@@ -47,6 +48,7 @@ import com.phlx.anchorcollect.entity.WeightManEntity;
import com.phlx.anchorcollect.params.CollectResponse;
import com.phlx.anchorcollect.params.ListResponse;
import com.phlx.anchorcollect.rfid.InventoryManger;
import com.phlx.anchorcollect.util.BaseImageUtils;
import com.phlx.anchorcollect.util.TextUtil;
import com.uhf.structures.InventoryData;
import com.uhf.structures.InventoryParams;
......@@ -104,14 +106,6 @@ public class SettingVM extends BaseViewModel<Repository> implements DiscoveryLis
//错误提示
public SingleLiveEvent<String> errorEvent = new SingleLiveEvent<>();
public ObservableField<String> cattleresumeCount = new ObservableField<>("0");
public ObservableField<String> performanceCount = new ObservableField<>("0");
public ObservableField<String> weightManCount = new ObservableField<>("0");
public ObservableField<String> medicalrecordsCount = new ObservableField<>("0");
public ObservableField<String> immunebatchCount = new ObservableField<>("0");
public ObservableField<String> cattlematingMasterCount = new ObservableField<>("0");
public ObservableField<String> cattlematingDetaillCount = new ObservableField<>("0");
public SettingVM(@NonNull Application application, Repository model) {
super(application, model);
......@@ -120,27 +114,11 @@ public class SettingVM extends BaseViewModel<Repository> implements DiscoveryLis
App.getInstance().getLinkage().setOnInventoryListener(this);
initData();
}
private void initData() {
}
QueryBuilder<PerformanceEntity> builder =
DbUtil.getInstance().getQueryBuilder(PerformanceEntity.class)
.where(PerformanceEntityDao.Properties.UploadStatus.eq("0"));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<PerformanceEntity>() {
@Override
public void onSuccess(List<PerformanceEntity> result) {
if (result != null && result.size() > 0) {
performanceCount.set(result.size() + "");
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询性能测定数量失败!");
dismissDialog();
}
}).queryAsyncAll(PerformanceEntity.class, builder);
private void initData() {
}
......@@ -227,61 +205,6 @@ public class SettingVM extends BaseViewModel<Repository> implements DiscoveryLis
}
});
public BindingCommand OnBaseArchivesSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
requestBaseArchives();
}
});
public BindingCommand OnSignMeasureSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
querySignMeasure();
}
});
public BindingCommand OnWeightingManageSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
queryWeightMan();
}
});
public BindingCommand OnTreatmentRecordSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
queryMedicalRecord();
}
});
public BindingCommand OnImmunRecordSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
queryImmuneBatch();
}
});
public BindingCommand OnImmunRecordDetailSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
queryImmuneBatchDetail();
}
});
public BindingCommand OnBreedingRecordSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
queryBreedingRecord();
}
});
public BindingCommand OnBreedingRecordDetailSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
queryBreedingRecordDetail();
}
});
public void itemOnClick(BluetoothEntity btEntity) {
BTManager.getInstance().stopDiscovery();
......@@ -435,1240 +358,6 @@ public class SettingVM extends BaseViewModel<Repository> implements DiscoveryLis
}
};
/**===========================================基础数据================================================= */
/**
* 下载基础数据
*/
private void requestBaseArchives() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<CattleResumeEntity> queryList = DbUtil.getInstance().queryAll(CattleResumeEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadCattleList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步基础数据..."))
.subscribe((Consumer<ListResponse<CattleResumeEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--CattleResumeEntity--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (CattleResumeEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestBaseArchivesSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存基础数据失败!");
}
}
}).insertAsyncBatch(CattleResumeEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
dismissDialog();
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
KLog.e(throwable.message);
})
);
}
/**
* 返回-基础数据-成功
*/
private void requestBaseArchivesSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadCattleListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步基础数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
KLog.e("requestBaseArchivesSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步基础数据成功!");
requestBaseArchives();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================性能测定================================================= */
/**
* 下载-性能测定
*/
private void requestSignMeasure() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<PerformanceEntity> queryList = DbUtil.getInstance().queryAll(PerformanceEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadPerformanceList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步性能测定数据..."))
.subscribe((Consumer<ListResponse<PerformanceEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--PerformanceEntity--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (PerformanceEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestSignMeasureSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存性能测定数据失败!");
}
}
}).insertAsyncBatch(PerformanceEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
querySignMeasure();
KLog.e(throwable.message);
})
);
}
/**
* 同步-性能测定-成功
*/
private void requestSignMeasureSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadPerformanceListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步基础数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
KLog.e("requestSignMeasureSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步性能测定数据成功!");
requestSignMeasure();
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
dismissDialog();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-性能测定
*/
private void querySignMeasure() {
QueryBuilder<PerformanceEntity> builder =
DbUtil.getInstance().getQueryBuilder(PerformanceEntity.class)
.where(PerformanceEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<PerformanceEntity>() {
@Override
public void onSuccess(List<PerformanceEntity> result) {
if (result != null && result.size() > 0) {
uploadSignMeasure(result);
} else {
requestSignMeasure();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询性能测定失败!");
dismissDialog();
}
}).queryAsyncAll(PerformanceEntity.class, builder);
}
/**
* 上传-性能测定
*/
private void uploadSignMeasure(List<PerformanceEntity> performanceEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(performanceEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadPerformanceList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步性能测定数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestSignMeasureSync", response.toString());
for (PerformanceEntity pe : performanceEntities) {
pe.setUploadStatus("1");
}
if (response.getCode() == 0) {
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传性能测定数据成功!");
querySignMeasure();
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改性能测定数据失败");
}
}
}).updateAsyncBatch(PerformanceEntity.class, performanceEntities);
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestSignMeasure();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================配种记录================================================= */
/**
* 下载-配种记录主表-
*/
private void requestBreedingRecord() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<BreedingRecordEntity> queryList = DbUtil.getInstance().queryAll(BreedingRecordEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadBreedingRecordList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步配种记录主表数据..."))
.subscribe((Consumer<ListResponse<BreedingRecordEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--BreedingRecordEntity--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (BreedingRecordEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestBreedingRecordSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存配种记录主表数据失败!");
}
}
}).insertAsyncBatch(BreedingRecordEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-配种记录主表-成功
*/
private void requestBreedingRecordSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadBreedingRecordListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步基础数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("downloadBreedingRecordListSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步配种主表数据成功!");
requestBreedingRecord();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-配种记录主表-
*/
private void queryBreedingRecord() {
QueryBuilder<BreedingRecordEntity> builder =
DbUtil.getInstance().getQueryBuilder(BreedingRecordEntity.class)
.where(BreedingRecordEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<BreedingRecordEntity>() {
@Override
public void onSuccess(List<BreedingRecordEntity> result) {
if (result != null && result.size() > 0) {
uploadBreedingRecord(result);
} else {
requestBreedingRecord();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-配种记录主表-失败!");
dismissDialog();
}
}).queryAsyncAll(BreedingRecordEntity.class, builder);
}
/**
* 上传-配种记录主表-
*/
private void uploadBreedingRecord(List<BreedingRecordEntity> breedingRecordEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(breedingRecordEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadBreedingRecordList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-配种记录主表-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadBreedingRecord", response.toString());
for (BreedingRecordEntity pe : breedingRecordEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryBreedingRecord();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-配种记录主表-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-配种记录主表-数据失败");
}
}
}).updateAsyncBatch(BreedingRecordEntity.class, breedingRecordEntities);
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestBreedingRecord();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================配种记录-子表================================================= */
/**
* 下载-配种记录子表-
*/
private void requestBreedingRecordDetail() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<BreedingRecordDetailEntity> queryList = DbUtil.getInstance().queryAll(BreedingRecordDetailEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadBreedingRecordDetailList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步配种记录主表数据..."))
.subscribe((Consumer<ListResponse<BreedingRecordDetailEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--BreedingRecordDetailEntity--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (BreedingRecordDetailEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestBreedingRecordDetailSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存配种记录子表数据失败!");
}
}
}).insertAsyncBatch(BreedingRecordDetailEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-配种记录子表-成功
*/
private void requestBreedingRecordDetailSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadBreedingRecordDetailListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步基础数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestBreedingRecordDetailSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步配种记录子表数据成功!");
queryBreedingRecordDetail();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-配种记录子表-
*/
private void queryBreedingRecordDetail() {
QueryBuilder<BreedingRecordDetailEntity> builder =
DbUtil.getInstance().getQueryBuilder(BreedingRecordDetailEntity.class)
.where(BreedingRecordDetailEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<BreedingRecordDetailEntity>() {
@Override
public void onSuccess(List<BreedingRecordDetailEntity> result) {
if (result != null && result.size() > 0) {
uploadBreedingRecordDetail(result);
} else {
requestBreedingRecordDetail();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-配种记录子表-失败!");
dismissDialog();
}
}).queryAsyncAll(BreedingRecordDetailEntity.class, builder);
}
/**
* 上传-配种记录子表-
*/
private void uploadBreedingRecordDetail(List<BreedingRecordDetailEntity> breedingRecordDetailEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(breedingRecordDetailEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadBreedingRecordDetailList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-配种记录子表-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadBreedingRecordDetail", response.toString());
for (BreedingRecordDetailEntity pe : breedingRecordDetailEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryBreedingRecordDetail();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-配种记录子表-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-配种记录子表-数据失败");
}
}
}).updateAsyncBatch(BreedingRecordDetailEntity.class, breedingRecordDetailEntities);
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestBreedingRecordDetail();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================称重管理================================================= */
/**
* 下载-称重管理-
*/
private void requestWeightMan() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<WeightManEntity> queryList = DbUtil.getInstance().queryAll(WeightManEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadWeightManList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步称重管理数据..."))
.subscribe((Consumer<ListResponse<WeightManEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--requestWeightManDetail--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (WeightManEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestWeightManSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存称重管理数据失败!");
}
}
}).insertAsyncBatch(WeightManEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-称重管理-成功
*/
private void requestWeightManSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadWeightManListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步称重管理数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestWeightManSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步称重管理数据成功!");
queryWeightMan();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-称重管理-
*/
private void queryWeightMan() {
QueryBuilder<WeightManEntity> builder =
DbUtil.getInstance().getQueryBuilder(WeightManEntity.class)
.where(WeightManEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<WeightManEntity>() {
@Override
public void onSuccess(List<WeightManEntity> result) {
if (result != null && result.size() > 0) {
uploadWeightMan(result);
} else {
requestWeightMan();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-称重管理-失败!");
dismissDialog();
}
}).queryAsyncAll(WeightManEntity.class, builder);
}
/**
* 上传-称重管理-
*/
private void uploadWeightMan(List<WeightManEntity> weightManEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(weightManEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadWeightManList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-称重管理-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadWeightMan", response.toString());
for (WeightManEntity pe : weightManEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryWeightMan();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-称重管理-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-称重管理-数据失败");
}
}
}).updateAsyncBatch(WeightManEntity.class, weightManEntities);
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestWeightMan();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================诊疗记录================================================= */
/**
* 下载-诊疗记录-
*/
private void requestMedicalRecord() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<MedicalRecordEntity> queryList = DbUtil.getInstance().queryAll(MedicalRecordEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadMedicalRecordList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步诊疗记录数据..."))
.subscribe((Consumer<ListResponse<MedicalRecordEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--requestMedicalRecord--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (MedicalRecordEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestMedicalRecordSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存诊疗记录数据失败!");
}
}
}).insertAsyncBatch(MedicalRecordEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-诊疗记录-成功
*/
private void requestMedicalRecordSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadMedicalRecordListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步称重管理数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestMedicalRecordSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步诊疗记录数据成功!");
queryMedicalRecord();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-诊疗记录-
*/
private void queryMedicalRecord() {
QueryBuilder<MedicalRecordEntity> builder =
DbUtil.getInstance().getQueryBuilder(MedicalRecordEntity.class)
.where(MedicalRecordEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<MedicalRecordEntity>() {
@Override
public void onSuccess(List<MedicalRecordEntity> result) {
if (result != null && result.size() > 0) {
uploadMedicalRecord(result);
} else {
requestMedicalRecord();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-诊疗记录-失败!");
dismissDialog();
}
}).queryAsyncAll(MedicalRecordEntity.class, builder);
}
/**
* 上传-诊疗记录-
*/
private void uploadMedicalRecord(List<MedicalRecordEntity> medicalRecordEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(medicalRecordEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadMedicalRecordList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-诊疗记录-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadMedicalRecord", response.toString());
for (MedicalRecordEntity pe : medicalRecordEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryMedicalRecord();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-诊疗记录-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-诊疗记录-数据失败");
}
}
}).updateAsyncBatch(MedicalRecordEntity.class, medicalRecordEntities);
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestMedicalRecord();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================免疫记录-主表================================================= */
/**
* 下载-免疫记录-主表
*/
private void requestImmuneBatch() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<ImmuneBatchEntity> queryList = DbUtil.getInstance().queryAll(ImmuneBatchEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadImmuneBatchList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步免疫记录-主表数据..."))
.subscribe((Consumer<ListResponse<ImmuneBatchEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--requestImmuneBatch--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (ImmuneBatchEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestImmuneBatchSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存免疫记录-主表数据失败!");
}
}
}).insertAsyncBatch(ImmuneBatchEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-免疫记录-主表-成功
*/
private void requestImmuneBatchSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadImmuneBatchListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步免疫记录-主表数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestImmuneBatchSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步免疫记录-主表数据成功!");
queryImmuneBatch();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-免疫记录-主表
*/
private void queryImmuneBatch() {
QueryBuilder<ImmuneBatchEntity> builder =
DbUtil.getInstance().getQueryBuilder(ImmuneBatchEntity.class)
.where(ImmuneBatchEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<ImmuneBatchEntity>() {
@Override
public void onSuccess(List<ImmuneBatchEntity> result) {
if (result != null && result.size() > 0) {
uploadImmuneBatch(result);
} else {
requestImmuneBatch();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-免疫记录-主表-失败!");
dismissDialog();
}
}).queryAsyncAll(ImmuneBatchEntity.class, builder);
}
/**
* 上传-免疫记录-主表
*/
private void uploadImmuneBatch(List<ImmuneBatchEntity> immuneBatchEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(immuneBatchEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadImmuneBatchList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-免疫记录-主表-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadImmuneBatch", response.toString());
for (ImmuneBatchEntity pe : immuneBatchEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryImmuneBatch();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-免疫记录-主表-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-免疫记录-主表-数据失败");
}
}
}).updateAsyncBatch(ImmuneBatchEntity.class, immuneBatchEntities);
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestImmuneBatch();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================免疫记录-子表================================================= */
/**
* 下载-免疫记录-子表
*/
private void requestImmuneBatchDetail() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<ImmuneBatchDetailEntity> queryList = DbUtil.getInstance().queryAll(ImmuneBatchDetailEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadImmuneBatchDetailList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步免疫记录数据..."))
.subscribe((Consumer<ListResponse<ImmuneBatchDetailEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--requestImmuneBatchDetail--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (ImmuneBatchDetailEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestImmuneBatchDetailSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存免疫记录-子表数据失败!");
}
}
}).insertAsyncBatch(ImmuneBatchDetailEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-免疫记录-子表-成功
*/
private void requestImmuneBatchDetailSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadImmuneBatchDetailListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步免疫记录-子表数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestImmuneBatchDetailSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步免疫记录-子表数据成功!");
queryImmuneBatchDetail();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-免疫记录-子表
*/
private void queryImmuneBatchDetail() {
QueryBuilder<ImmuneBatchDetailEntity> builder =
DbUtil.getInstance().getQueryBuilder(ImmuneBatchDetailEntity.class)
.where(ImmuneBatchDetailEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<ImmuneBatchDetailEntity>() {
@Override
public void onSuccess(List<ImmuneBatchDetailEntity> result) {
if (result != null && result.size() > 0) {
uploadImmuneBatchDetail(result);
} else {
requestImmuneBatchDetail();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-免疫记录-子表-失败!");
dismissDialog();
}
}).queryAsyncAll(ImmuneBatchDetailEntity.class, builder);
}
/**
* 上传-免疫记录-子表
*/
private void uploadImmuneBatchDetail(List<ImmuneBatchDetailEntity> immuneBatchEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(immuneBatchEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadImmuneBatchDetailList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-免疫记录-子表-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadImmuneBatchDetail", response.toString());
for (ImmuneBatchDetailEntity pe : immuneBatchEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryImmuneBatchDetail();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-免疫记录-子表-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-免疫记录-子表-数据失败");
}
}
}).updateAsyncBatch(ImmuneBatchDetailEntity.class, immuneBatchEntities);
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestImmuneBatchDetail();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
}
package com.phlx.anchorcollect.ui.setting;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.phlx.anchorcollect.R;
import com.phlx.anchorcollect.data.VMFactory;
import com.phlx.anchorcollect.databinding.ActivitySyncBinding;
import com.phlx.anchorcollect.ui.base.BaseActivity;
import me.tatarka.bindingcollectionadapter2.BR;
public class SyncActivity extends BaseActivity<ActivitySyncBinding,SyncVM> {
@Override
public int initContentView(Bundle savedInstanceState) {
return R.layout.activity_sync;
}
@Override
public int initVariableId() {
return BR.viewModel;
}
@Override
public void initParam() {
super.initParam();
}
@Override
public SyncVM initViewModel() {
VMFactory factory = VMFactory.getInstance(getApplication());
return ViewModelProviders.of(this, factory).get(SyncVM.class);
}
@Override
public void initData() {
super.initData();
}
@Override
public void initViewObservable() {
super.initViewObservable();
viewModel.errorEvent.observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
showTip(s);
}
});
}
private void showTip(String content) {
new MaterialDialog.Builder(this).title("系统信息").content(content)
.cancelable(false).canceledOnTouchOutside(false)
.positiveText("退出").onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
if (which == DialogAction.POSITIVE) {
dialog.dismiss();
finish();
}
}
}).show();
}
}
package com.phlx.anchorcollect.ui.setting;
import android.app.Application;
import android.os.Environment;
import android.os.Handler;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableField;
import com.google.gson.Gson;
import com.phlx.anchorcollect.data.Repository;
import com.phlx.anchorcollect.db.DbUtil;
import com.phlx.anchorcollect.db.gen.BreedingRecordDetailEntityDao;
import com.phlx.anchorcollect.db.gen.BreedingRecordEntityDao;
import com.phlx.anchorcollect.db.gen.CattleResumeEntityDao;
import com.phlx.anchorcollect.db.gen.ImmuneBatchDetailEntityDao;
import com.phlx.anchorcollect.db.gen.ImmuneBatchEntityDao;
import com.phlx.anchorcollect.db.gen.MedicalRecordEntityDao;
import com.phlx.anchorcollect.db.gen.PerformanceEntityDao;
import com.phlx.anchorcollect.db.gen.WeightManEntityDao;
import com.phlx.anchorcollect.db.interf.DbIDUCallBack;
import com.phlx.anchorcollect.db.interf.DbQueryCallBack;
import com.phlx.anchorcollect.entity.BreedingRecordDetailEntity;
import com.phlx.anchorcollect.entity.BreedingRecordEntity;
import com.phlx.anchorcollect.entity.CattleResumeEntity;
import com.phlx.anchorcollect.entity.ImmuneBatchDetailEntity;
import com.phlx.anchorcollect.entity.ImmuneBatchEntity;
import com.phlx.anchorcollect.entity.MedicalRecordEntity;
import com.phlx.anchorcollect.entity.PerformanceEntity;
import com.phlx.anchorcollect.entity.WeightManEntity;
import com.phlx.anchorcollect.params.CollectResponse;
import com.phlx.anchorcollect.params.ListResponse;
import com.phlx.anchorcollect.util.BaseImageUtils;
import org.greenrobot.greendao.query.QueryBuilder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.wandersnail.commons.util.ToastUtils;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
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 okhttp3.MediaType;
import okhttp3.RequestBody;
public class SyncVM extends BaseViewModel<Repository> {
//错误提示
public SingleLiveEvent<String> errorEvent = new SingleLiveEvent<>();
public ObservableField<String> cattleresumeCount = new ObservableField<>("0");
public ObservableField<String> performanceCount = new ObservableField<>("0");
public ObservableField<String> weightManCount = new ObservableField<>("0");
public ObservableField<String> medicalrecordsCount = new ObservableField<>("0");
public ObservableField<String> immunebatchCount = new ObservableField<>("0");
public ObservableField<String> immunebatchDetailCount = new ObservableField<>("0");
public ObservableField<String> cattlematingMasterCount = new ObservableField<>("0");
public ObservableField<String> cattlematingDetaillCount = new ObservableField<>("0");
//照片路径
private String imgUrl;
public SyncVM(@NonNull Application application, Repository model) {
super(application, model);
queryUpload();
}
public BindingCommand OnBaseArchivesSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
requestBaseArchives();
}
});
public BindingCommand OnSignMeasureSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
showDialog("正在同步性能测定数据...");
querySignMeasure();
}
});
public BindingCommand OnWeightingManageSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
showDialog("正在同步称重管理数据...");
queryWeightMan();
}
});
public BindingCommand OnMedicalRecordSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
showDialog("正在同步诊疗记录数据...");
queryMedicalRecord();
}
});
public BindingCommand OnImmunRecordSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
showDialog("正在同步免疫记录-主表数据...");
queryImmuneBatch();
}
});
public BindingCommand OnImmunRecordDetailSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
showDialog("正在同步免疫记录-子表数据...");
queryImmuneBatchDetail();
}
});
public BindingCommand OnBreedingRecordSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
showDialog("正在同步配种记录-主表数据...");
queryBreedingRecord();
}
});
public BindingCommand OnBreedingRecordDetailSyncClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
showDialog("正在同步配种记录-子表数据...");
queryBreedingRecordDetail();
}
});
/**===========================================基础数据================================================= */
/**
* 下载基础数据
*/
private void requestBaseArchives() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<CattleResumeEntity> queryList = DbUtil.getInstance().queryAll(CattleResumeEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadCattleList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步基础数据..."))
.subscribe((Consumer<ListResponse<CattleResumeEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--CattleResumeEntity--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (CattleResumeEntity cre : response.getData()) {
imgUrl = Environment.getExternalStorageDirectory().getAbsolutePath() +
"/collect/picture/"
+ "anchorCiq" + cre.getUnid() + ".jpg";
BaseImageUtils.saveBaseImage(cre.getPhoto(), imgUrl);
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestBaseArchivesSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存基础数据失败!");
}
}
}).insertAsyncBatch(CattleResumeEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
dismissDialog();
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
KLog.e(throwable.message);
})
);
}
/**
* 返回-基础数据-成功
*/
private void requestBaseArchivesSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadCattleListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步基础数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
KLog.e("requestBaseArchivesSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步基础数据成功!");
requestBaseArchives();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================性能测定================================================= */
/**
* 下载-性能测定
*/
private void requestSignMeasure() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<PerformanceEntity> queryList = DbUtil.getInstance().queryAll(PerformanceEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadPerformanceList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步性能测定数据..."))
.subscribe((Consumer<ListResponse<PerformanceEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--PerformanceEntity--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (PerformanceEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestSignMeasureSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存性能测定数据失败!");
}
}
}).insertAsyncBatch(PerformanceEntity.class, response.getData());
} else {
dismissDialog();
ToastUtils.showShort("性能测定数据同步完成!");
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
dismissDialog();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
KLog.e(throwable.message);
})
);
}
/**
* 同步-性能测定-成功
*/
private void requestSignMeasureSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadPerformanceListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步基础数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
KLog.e("requestSignMeasureSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步性能测定数据成功!");
requestSignMeasure();
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
dismissDialog();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-性能测定
*/
private void querySignMeasure() {
QueryBuilder<PerformanceEntity> builder =
DbUtil.getInstance().getQueryBuilder(PerformanceEntity.class)
.where(PerformanceEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<PerformanceEntity>() {
@Override
public void onSuccess(List<PerformanceEntity> result) {
if (result != null && result.size() > 0) {
uploadSignMeasure(result);
} else {
requestSignMeasure();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询性能测定失败!");
dismissDialog();
}
}).queryAsyncAll(PerformanceEntity.class, builder);
}
/**
* 上传-性能测定
*/
private void uploadSignMeasure(List<PerformanceEntity> performanceEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(performanceEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadPerformanceList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步性能测定数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestSignMeasureSync", response.toString());
for (PerformanceEntity pe : performanceEntities) {
pe.setUploadStatus("1");
}
if (response.getCode() == 0) {
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传性能测定数据成功!");
querySignMeasure();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改性能测定数据失败");
}
}
}).updateAsyncBatch(PerformanceEntity.class, performanceEntities);
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestSignMeasure();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================配种记录================================================= */
/**
* 下载-配种记录主表-
*/
private void requestBreedingRecord() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<BreedingRecordEntity> queryList = DbUtil.getInstance().queryAll(BreedingRecordEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadBreedingRecordList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步配种记录主表数据..."))
.subscribe((Consumer<ListResponse<BreedingRecordEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--BreedingRecordEntity--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (BreedingRecordEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestBreedingRecordSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存配种记录主表数据失败!");
}
}
}).insertAsyncBatch(BreedingRecordEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-配种记录主表-成功
*/
private void requestBreedingRecordSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadBreedingRecordListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步基础数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("downloadBreedingRecordListSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步配种主表数据成功!");
requestBreedingRecord();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-配种记录主表-
*/
private void queryBreedingRecord() {
QueryBuilder<BreedingRecordEntity> builder =
DbUtil.getInstance().getQueryBuilder(BreedingRecordEntity.class)
.where(BreedingRecordEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<BreedingRecordEntity>() {
@Override
public void onSuccess(List<BreedingRecordEntity> result) {
if (result != null && result.size() > 0) {
uploadBreedingRecord(result);
} else {
requestBreedingRecord();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-配种记录主表-失败!");
dismissDialog();
}
}).queryAsyncAll(BreedingRecordEntity.class, builder);
}
/**
* 上传-配种记录主表-
*/
private void uploadBreedingRecord(List<BreedingRecordEntity> breedingRecordEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(breedingRecordEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadBreedingRecordList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-配种记录主表-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadBreedingRecord", response.toString());
for (BreedingRecordEntity pe : breedingRecordEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryBreedingRecord();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-配种记录主表-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-配种记录主表-数据失败");
}
}
}).updateAsyncBatch(BreedingRecordEntity.class, breedingRecordEntities);
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestBreedingRecord();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================配种记录-子表================================================= */
/**
* 下载-配种记录子表-
*/
private void requestBreedingRecordDetail() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<BreedingRecordDetailEntity> queryList = DbUtil.getInstance().queryAll(BreedingRecordDetailEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadBreedingRecordDetailList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步配种记录主表数据..."))
.subscribe((Consumer<ListResponse<BreedingRecordDetailEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--BreedingRecordDetailEntity--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (BreedingRecordDetailEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestBreedingRecordDetailSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存配种记录子表数据失败!");
}
}
}).insertAsyncBatch(BreedingRecordDetailEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-配种记录子表-成功
*/
private void requestBreedingRecordDetailSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadBreedingRecordDetailListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步基础数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestBreedingRecordDetailSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步配种记录子表数据成功!");
queryBreedingRecordDetail();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-配种记录子表-
*/
private void queryBreedingRecordDetail() {
QueryBuilder<BreedingRecordDetailEntity> builder =
DbUtil.getInstance().getQueryBuilder(BreedingRecordDetailEntity.class)
.where(BreedingRecordDetailEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<BreedingRecordDetailEntity>() {
@Override
public void onSuccess(List<BreedingRecordDetailEntity> result) {
if (result != null && result.size() > 0) {
uploadBreedingRecordDetail(result);
} else {
requestBreedingRecordDetail();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-配种记录子表-失败!");
dismissDialog();
}
}).queryAsyncAll(BreedingRecordDetailEntity.class, builder);
}
/**
* 上传-配种记录子表-
*/
private void uploadBreedingRecordDetail(List<BreedingRecordDetailEntity> breedingRecordDetailEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(breedingRecordDetailEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadBreedingRecordDetailList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-配种记录子表-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadBreedingRecordDetail", response.toString());
for (BreedingRecordDetailEntity pe : breedingRecordDetailEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryBreedingRecordDetail();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-配种记录子表-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-配种记录子表-数据失败");
}
}
}).updateAsyncBatch(BreedingRecordDetailEntity.class, breedingRecordDetailEntities);
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestBreedingRecordDetail();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================称重管理================================================= */
/**
* 下载-称重管理-
*/
private void requestWeightMan() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<WeightManEntity> queryList = DbUtil.getInstance().queryAll(WeightManEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadWeightManList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步称重管理数据..."))
.subscribe((Consumer<ListResponse<WeightManEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--requestWeightManDetail--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (WeightManEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestWeightManSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存称重管理数据失败!");
}
}
}).insertAsyncBatch(WeightManEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-称重管理-成功
*/
private void requestWeightManSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadWeightManListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步称重管理数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestWeightManSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步称重管理数据成功!");
queryWeightMan();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-称重管理-
*/
private void queryWeightMan() {
QueryBuilder<WeightManEntity> builder =
DbUtil.getInstance().getQueryBuilder(WeightManEntity.class)
.where(WeightManEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<WeightManEntity>() {
@Override
public void onSuccess(List<WeightManEntity> result) {
if (result != null && result.size() > 0) {
uploadWeightMan(result);
} else {
requestWeightMan();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-称重管理-失败!");
dismissDialog();
}
}).queryAsyncAll(WeightManEntity.class, builder);
}
/**
* 上传-称重管理-
*/
private void uploadWeightMan(List<WeightManEntity> weightManEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(weightManEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadWeightManList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-称重管理-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadWeightMan", response.toString());
for (WeightManEntity pe : weightManEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryWeightMan();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-称重管理-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-称重管理-数据失败");
}
}
}).updateAsyncBatch(WeightManEntity.class, weightManEntities);
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestWeightMan();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================诊疗记录================================================= */
/**
* 下载-诊疗记录-
*/
private void requestMedicalRecord() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<MedicalRecordEntity> queryList = DbUtil.getInstance().queryAll(MedicalRecordEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadMedicalRecordList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步诊疗记录数据..."))
.subscribe((Consumer<ListResponse<MedicalRecordEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--requestMedicalRecord--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (MedicalRecordEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestMedicalRecordSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存诊疗记录数据失败!");
}
}
}).insertAsyncBatch(MedicalRecordEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-诊疗记录-成功
*/
private void requestMedicalRecordSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadMedicalRecordListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步称重管理数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestMedicalRecordSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步诊疗记录数据成功!");
queryMedicalRecord();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-诊疗记录-
*/
private void queryMedicalRecord() {
QueryBuilder<MedicalRecordEntity> builder =
DbUtil.getInstance().getQueryBuilder(MedicalRecordEntity.class)
.where(MedicalRecordEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<MedicalRecordEntity>() {
@Override
public void onSuccess(List<MedicalRecordEntity> result) {
if (result != null && result.size() > 0) {
uploadMedicalRecord(result);
} else {
requestMedicalRecord();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-诊疗记录-失败!");
dismissDialog();
}
}).queryAsyncAll(MedicalRecordEntity.class, builder);
}
/**
* 上传-诊疗记录-
*/
private void uploadMedicalRecord(List<MedicalRecordEntity> medicalRecordEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(medicalRecordEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadMedicalRecordList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-诊疗记录-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadMedicalRecord", response.toString());
for (MedicalRecordEntity pe : medicalRecordEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryMedicalRecord();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-诊疗记录-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-诊疗记录-数据失败");
}
}
}).updateAsyncBatch(MedicalRecordEntity.class, medicalRecordEntities);
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestMedicalRecord();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================免疫记录-主表================================================= */
/**
* 下载-免疫记录-主表
*/
private void requestImmuneBatch() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<ImmuneBatchEntity> queryList = DbUtil.getInstance().queryAll(ImmuneBatchEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadImmuneBatchList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步免疫记录-主表数据..."))
.subscribe((Consumer<ListResponse<ImmuneBatchEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--requestImmuneBatch--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (ImmuneBatchEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestImmuneBatchSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存免疫记录-主表数据失败!");
}
}
}).insertAsyncBatch(ImmuneBatchEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
dismissDialog();
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
KLog.e(throwable.message);
})
);
}
/**
* 上传-免疫记录-主表-成功
*/
private void requestImmuneBatchSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadImmuneBatchListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步免疫记录-主表数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestImmuneBatchSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步免疫记录-主表数据成功!");
queryImmuneBatch();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-免疫记录-主表
*/
private void queryImmuneBatch() {
QueryBuilder<ImmuneBatchEntity> builder =
DbUtil.getInstance().getQueryBuilder(ImmuneBatchEntity.class)
.where(ImmuneBatchEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<ImmuneBatchEntity>() {
@Override
public void onSuccess(List<ImmuneBatchEntity> result) {
if (result != null && result.size() > 0) {
uploadImmuneBatch(result);
} else {
requestImmuneBatch();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-免疫记录-主表-失败!");
dismissDialog();
}
}).queryAsyncAll(ImmuneBatchEntity.class, builder);
}
/**
* 上传-免疫记录-主表
*/
private void uploadImmuneBatch(List<ImmuneBatchEntity> immuneBatchEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(immuneBatchEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadImmuneBatchList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-免疫记录-主表-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadImmuneBatch", response.toString());
for (ImmuneBatchEntity pe : immuneBatchEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryImmuneBatch();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-免疫记录-主表-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-免疫记录-主表-数据失败");
}
}
}).updateAsyncBatch(ImmuneBatchEntity.class, immuneBatchEntities);
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestImmuneBatch();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**===========================================免疫记录-子表================================================= */
/**
* 下载-免疫记录-子表
*/
private void requestImmuneBatchDetail() {
//SyncState 0根据记录更新,1重新更新
Map<String, String> requestParam = new HashMap<>();
List<ImmuneBatchDetailEntity> queryList = DbUtil.getInstance().queryAll(ImmuneBatchDetailEntity.class);
if (queryList == null || queryList.size() == 0)
requestParam.put("SyncState", "1");
else
requestParam.put("SyncState", "0");
addSubscribe(model.downloadImmuneBatchDetailList(requestParam)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步免疫记录数据..."))
.subscribe((Consumer<ListResponse<ImmuneBatchDetailEntity>>) response -> {
if (response.getCode() == 0) {
if (response.getData() != null && response.getData().size() > 0) {
KLog.e("--requestImmuneBatchDetail--" + response.getData().size());
List<String> ids = new ArrayList<>();
for (ImmuneBatchDetailEntity cre : response.getData()) {
cre.setUploadStatus("1");
ids.add(cre.getUnid());
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
requestImmuneBatchDetailSync(ids);
} else {
dismissDialog();
errorEvent.setValue("保存免疫记录-子表数据失败!");
}
}
}).insertAsyncBatch(ImmuneBatchDetailEntity.class, response.getData());
} else {
dismissDialog();
}
} else {
errorEvent.setValue("服务器 :" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
KLog.e(throwable.message);
})
);
}
/**
* 上传-免疫记录-子表-成功
*/
private void requestImmuneBatchDetailSync(List<String> ids) {
// Map<String, String> syncParam = new HashMap<>();
// syncParam.put("ids", new Gson().toJson(ids).toString());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(ids));
// KLog.e("label", postParams.toString());
addSubscribe(model.downloadImmuneBatchDetailListSync(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
// .doOnSubscribe(disposable -> showDialog("正在同步免疫记录-子表数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
dismissDialog();
KLog.e("requestImmuneBatchDetailSync", response.toString());
if (response.getCode() == 0) {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("同步免疫记录-子表数据成功!");
queryImmuneBatchDetail();
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
/**
* 查询-免疫记录-子表
*/
private void queryImmuneBatchDetail() {
QueryBuilder<ImmuneBatchDetailEntity> builder =
DbUtil.getInstance().getQueryBuilder(ImmuneBatchDetailEntity.class)
.where(ImmuneBatchDetailEntityDao.Properties.UploadStatus.eq("0"))
.limit(10);
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<ImmuneBatchDetailEntity>() {
@Override
public void onSuccess(List<ImmuneBatchDetailEntity> result) {
if (result != null && result.size() > 0) {
uploadImmuneBatchDetail(result);
} else {
requestImmuneBatchDetail();
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询-免疫记录-子表-失败!");
dismissDialog();
}
}).queryAsyncAll(ImmuneBatchDetailEntity.class, builder);
}
/**
* 上传-免疫记录-子表
*/
private void uploadImmuneBatchDetail(List<ImmuneBatchDetailEntity> immuneBatchEntities) {
RequestBody body = RequestBody.create(MediaType.parse("application/json"), new Gson().toJson(immuneBatchEntities));
// KLog.e("label", postParams.toString());
addSubscribe(model.uploadImmuneBatchDetailList(body)
.compose(RxUtils.bindToLifecycle(getLifecycleProvider()))
.compose(RxUtils.schedulersTransformer())
.compose(RxUtils.exceptionTransformer())
.doOnSubscribe(disposable -> showDialog("正在同步-免疫记录-子表-数据..."))
.subscribe((Consumer<CollectResponse>) response -> {
if (response.getCode() == 0) {
KLog.e("uploadImmuneBatchDetail", response.toString());
for (ImmuneBatchDetailEntity pe : immuneBatchEntities) {
pe.setUploadStatus("1");
}
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
if (result) {
queryImmuneBatchDetail();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("上传-免疫记录-子表-数据成功!");
} else {
me.goldze.mvvmhabit.utils.ToastUtils.showShort("修改-免疫记录-子表-数据失败");
}
}
}).updateAsyncBatch(ImmuneBatchDetailEntity.class, immuneBatchEntities);
} else {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort("服务器:" + response.getMsg());
requestImmuneBatchDetail();
}
}, (Consumer<ResponseThrowable>) throwable -> {
dismissDialog();
me.goldze.mvvmhabit.utils.ToastUtils.showShort(throwable.message);
})
);
}
private void queryUpload() {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
queryCattleResumeUpload();
}
}, 2000);
handler.postDelayed(new Runnable() {
@Override
public void run() {
queryPerformanceUpload();
}
}, 4000);
handler.postDelayed(new Runnable() {
@Override
public void run() {
queryWeightManUpload();
}
}, 6000);
handler.postDelayed(new Runnable() {
@Override
public void run() {
queryMedicalRecordUpload();
}
}, 8000);
handler.postDelayed(new Runnable() {
@Override
public void run() {
queryImmuneBatchUpload();
}
}, 10000);
handler.postDelayed(new Runnable() {
@Override
public void run() {
queryImmuneBatchDetailUpload();
}
}, 12000);
handler.postDelayed(new Runnable() {
@Override
public void run() {
queryBreedingRecordUpload();
}
}, 14000);
handler.postDelayed(new Runnable() {
@Override
public void run() {
queryBreedingRecordDetailUpload();
}
}, 16000);
}
/**
* 基础数据
*/
private void queryCattleResumeUpload() {
QueryBuilder<CattleResumeEntity> builder0 =
DbUtil.getInstance().getQueryBuilder(CattleResumeEntity.class)
.where(CattleResumeEntityDao.Properties.UploadStatus.eq("0"));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<CattleResumeEntity>() {
@Override
public void onSuccess(List<CattleResumeEntity> result) {
if (result != null && result.size() > 0) {
performanceCount.set(result.size() + "");
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询基础数据数量失败!");
dismissDialog();
}
}).queryAsyncAll(CattleResumeEntity.class, builder0);
}
/**
* 性能测定
*/
private void queryPerformanceUpload() {
QueryBuilder<PerformanceEntity> builder1 =
DbUtil.getInstance().getQueryBuilder(PerformanceEntity.class)
.where(PerformanceEntityDao.Properties.UploadStatus.eq("0"));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<PerformanceEntity>() {
@Override
public void onSuccess(List<PerformanceEntity> result) {
if (result != null && result.size() > 0) {
performanceCount.set(result.size() + "");
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询性能测定数量失败!");
dismissDialog();
}
}).queryAsyncAll(PerformanceEntity.class, builder1);
}
/**
* 称重管理
*/
private void queryWeightManUpload() {
QueryBuilder<WeightManEntity> builder2 =
DbUtil.getInstance().getQueryBuilder(WeightManEntity.class)
.where(WeightManEntityDao.Properties.UploadStatus.eq("0"));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<WeightManEntity>() {
@Override
public void onSuccess(List<WeightManEntity> result) {
if (result != null && result.size() > 0) {
weightManCount.set(result.size() + "");
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询称重管理数量失败!");
dismissDialog();
}
}).queryAsyncAll(WeightManEntity.class, builder2);
}
/**
* 诊疗记录
*/
private void queryMedicalRecordUpload() {
QueryBuilder<MedicalRecordEntity> builder3 =
DbUtil.getInstance().getQueryBuilder(MedicalRecordEntity.class)
.where(MedicalRecordEntityDao.Properties.UploadStatus.eq("0"));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<MedicalRecordEntity>() {
@Override
public void onSuccess(List<MedicalRecordEntity> result) {
if (result != null && result.size() > 0) {
medicalrecordsCount.set(result.size() + "");
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询诊疗记录数量失败!");
dismissDialog();
}
}).queryAsyncAll(MedicalRecordEntity.class, builder3);
}
/**
* 免疫记录-主表
*/
private void queryImmuneBatchUpload() {
QueryBuilder<ImmuneBatchEntity> builder4 =
DbUtil.getInstance().getQueryBuilder(ImmuneBatchEntity.class)
.where(ImmuneBatchEntityDao.Properties.UploadStatus.eq("0"));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<ImmuneBatchEntity>() {
@Override
public void onSuccess(List<ImmuneBatchEntity> result) {
if (result != null && result.size() > 0) {
immunebatchCount.set(result.size() + "");
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询免疫记录-主表数量失败!");
dismissDialog();
}
}).queryAsyncAll(ImmuneBatchEntity.class, builder4);
}
/**
* 免疫记录-子表
*/
private void queryImmuneBatchDetailUpload() {
QueryBuilder<ImmuneBatchDetailEntity> builder5 =
DbUtil.getInstance().getQueryBuilder(ImmuneBatchDetailEntity.class)
.where(ImmuneBatchDetailEntityDao.Properties.UploadStatus.eq("0"));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<ImmuneBatchDetailEntity>() {
@Override
public void onSuccess(List<ImmuneBatchDetailEntity> result) {
if (result != null && result.size() > 0) {
immunebatchDetailCount.set(result.size() + "");
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询免疫记录-子表数量失败!");
dismissDialog();
}
}).queryAsyncAll(ImmuneBatchDetailEntity.class, builder5);
}
/**
* 配种记录-主表
*/
private void queryBreedingRecordUpload() {
QueryBuilder<BreedingRecordEntity> builder6 =
DbUtil.getInstance().getQueryBuilder(BreedingRecordEntity.class)
.where(BreedingRecordEntityDao.Properties.UploadStatus.eq("0"));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<BreedingRecordEntity>() {
@Override
public void onSuccess(List<BreedingRecordEntity> result) {
if (result != null && result.size() > 0) {
cattlematingMasterCount.set(result.size() + "");
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询配种记录-主表数量失败!");
dismissDialog();
}
}).queryAsyncAll(BreedingRecordEntity.class, builder6);
}
/**
* 配种记录-子表
*/
private void queryBreedingRecordDetailUpload() {
QueryBuilder<BreedingRecordDetailEntity> builder7 =
DbUtil.getInstance().getQueryBuilder(BreedingRecordDetailEntity.class)
.where(BreedingRecordDetailEntityDao.Properties.UploadStatus.eq("0"));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<BreedingRecordDetailEntity>() {
@Override
public void onSuccess(List<BreedingRecordDetailEntity> result) {
if (result != null && result.size() > 0) {
cattlematingDetaillCount.set(result.size() + "");
}
}
@Override
public void onFailed() {
ToastUtils.showShort("查询配种记录-子表数量失败!");
dismissDialog();
}
}).queryAsyncAll(BreedingRecordDetailEntity.class, builder7);
}
}
......@@ -156,61 +156,70 @@ public class SplashVM extends MainBarVM<Repository> {
for (GenTable gt : genList) {
switch (gt.getBusinessName()) {
case "cattleresume":
/**
* zxgl_cattleresume 基础信息
* zxgl_performance 性能测定
* zxgl_weight_man 称重管理
* zxgl_medicalrecords 诊疗记录
* zxgl_immunebatch 免疫记录
* zxgl_cattlemating_master 配种记录主表
* zxgl_cattlemating_detaill 配种记子表
*/
switch (gt.getTableName()) {
case "zxgl_cattleresume":
QueryBuilder<GenTableColumn> builderDetaile0 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.cattleresume = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile0);
break;
case "performance":
case "zxgl_performance":
QueryBuilder<GenTableColumn> builderDetaile1 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.performance = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile1);
break;
case "weightMan":
case "zxgl_weight_man":
QueryBuilder<GenTableColumn> builderDetaile2 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.weightMan = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile2);
break;
case "medicalrecords":
case "zxgl_medicalrecords":
QueryBuilder<GenTableColumn> builderDetaile3 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.medicalrecords = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile3);
break;
case "immunebatch":
case "zxgl_immunebatch":
QueryBuilder<GenTableColumn> builderDetaile4 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.immunebatch = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile4);
break;
case "cattlematingMaster":
case "zxgl_cattlemating_master":
QueryBuilder<GenTableColumn> builderDetaile5 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.cattlematingMaster = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile5);
break;
case "cattlematingDetaill":
case "zxgl_cattlemating_detaill":
QueryBuilder<GenTableColumn> builderDetaile6 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
.orderAsc(GenTableColumnDao.Properties.Sort);
Configs.cattlematingDetaill = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile6);
break;
}
......
......@@ -18,7 +18,8 @@
android:layout_width="50dp"
android:layout_height="@dimen/dp_0"
android:orientation="vertical"
android:background="@color/white"
android:paddingTop="20dp"
android:background="@color/colorPrimary"
binding:layout_constraintBottom_toBottomOf="parent"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintTop_toTopOf="parent">
......@@ -30,9 +31,10 @@
android:layout_weight="1"
android:ems="1"
android:gravity="center"
android:drawablePadding="-10dp"
android:text="@string/base_archives"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/sp_10"
android:textColor="@color/color_font_non_focus"
android:textSize="@dimen/sp_8"
binding:onClickCommand="@{viewModel.OnBaseArchivesClickCommand}"
/>
......@@ -43,9 +45,10 @@
android:layout_weight="1"
android:ems="1"
android:gravity="center"
android:drawablePadding="-10dp"
android:text="@string/sign_measure"
android:textColor="@color/color_font_non_focus"
android:textSize="@dimen/sp_10"
android:textSize="@dimen/sp_8"
binding:onClickCommand="@{viewModel.OnSignMeasureClickCommand}"
/>
......@@ -56,9 +59,10 @@
android:layout_weight="1"
android:ems="1"
android:gravity="center"
android:drawablePadding="-10dp"
android:text="@string/weighting_manage"
android:textColor="@color/color_font_non_focus"
android:textSize="@dimen/sp_10"
android:textSize="@dimen/sp_8"
binding:onClickCommand="@{viewModel.OnWeightingManageClickCommand}"
/>
......@@ -69,10 +73,11 @@
android:layout_weight="1"
android:ems="1"
android:gravity="center"
android:drawablePadding="-10dp"
android:text="@string/treatment_record"
android:textColor="@color/color_font_non_focus"
android:textSize="@dimen/sp_10"
binding:onClickCommand="@{viewModel.OnTreatmentRecordClickCommand}"
android:textSize="@dimen/sp_8"
binding:onClickCommand="@{viewModel.OnMedicalRecordClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
......@@ -83,8 +88,9 @@
android:ems="1"
android:gravity="center"
android:text="@string/immun_record"
android:drawablePadding="-10dp"
android:textColor="@color/color_font_non_focus"
android:textSize="@dimen/sp_10"
android:textSize="@dimen/sp_8"
binding:onClickCommand="@{viewModel.OnImmunRecordClickCommand}"
/>
......@@ -95,9 +101,10 @@
android:layout_weight="1"
android:ems="1"
android:gravity="center"
android:drawablePadding="-10dp"
android:text="@string/breeding_record"
android:textColor="@color/color_font_non_focus"
android:textSize="@dimen/sp_10"
android:textSize="@dimen/sp_8"
binding:onClickCommand="@{viewModel.OnBreedingRecordClickCommand}"
/>
</LinearLayout>
......
......@@ -70,287 +70,5 @@
binding:layout_constraintRight_toLeftOf="@+id/guideline_vertical"
binding:layout_constraintTop_toBottomOf="@+id/ll_button" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
binding:layout_constraintLeft_toRightOf="@+id/guideline_vertical"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toTopOf="parent"
binding:layout_constraintBottom_toBottomOf="parent"
>
<!-- base_archives -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_base_archives_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="@string/base_archives"
binding:layout_constraintTop_toTopOf="parent"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintBottom_toTopOf="@+id/btn_sign_measure_sync"
binding:onClickCommand="@{viewModel.OnBaseArchivesSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_base_archives_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="(0)"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_base_archives_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_base_archives_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_base_archives_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="111111111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_base_archives_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_base_archives_sync"
/>
<!-- sign_measure -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_sign_measure_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_measure"
binding:layout_constraintTop_toBottomOf="@+id/btn_base_archives_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toTopOf="@+id/btn_weighting_manage_sync"
binding:onClickCommand="@{viewModel.OnSignMeasureSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_sign_measure_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="(0)"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_sign_measure_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_sign_measure_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_sign_measure_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="11111111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_sign_measure_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_sign_measure_sync"
/>
<!-- weighting_manage -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_weighting_manage_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/weighting_manage"
binding:layout_constraintTop_toBottomOf="@+id/btn_sign_measure_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toTopOf="@+id/btn_treatment_record_sync"
binding:onClickCommand="@{viewModel.OnWeightingManageSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_weighting_manage_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="(0)"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_weighting_manage_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_weighting_manage_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_weighting_manage_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="11111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_weighting_manage_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_weighting_manage_sync"
/>
<!-- treatment_record -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_treatment_record_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/treatment_record"
binding:layout_constraintTop_toBottomOf="@+id/btn_weighting_manage_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toTopOf="@+id/btn_immun_record_sync"
binding:onClickCommand="@{viewModel.OnTreatmentRecordSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_treatment_record_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="(0)"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_treatment_record_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_treatment_record_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_treatment_record_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="1111111111111111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_treatment_record_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_treatment_record_sync"
/>
<!-- immun_record -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_immun_record_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/immun_record"
binding:layout_constraintTop_toBottomOf="@+id/btn_treatment_record_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toTopOf="@+id/btn_immun_record_detail_sync"
binding:onClickCommand="@{viewModel.OnImmunRecordSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_immun_record_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="(0)"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_immun_record_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_immun_record_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_immun_record_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_immun_record_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_immun_record_sync"
/>
<!-- immun_record_detail -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_immun_record_detail_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/immun_record_detail"
binding:layout_constraintTop_toBottomOf="@+id/btn_immun_record_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toTopOf="@+id/btn_breeding_record_sync"
binding:onClickCommand="@{viewModel.OnImmunRecordDetailSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_immun_record_detail_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="(0)"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_immun_record_detail_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_immun_record_detail_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_immun_record_detail_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_immun_record_detail_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_immun_record_detail_sync"
/>
<!-- breeding_record -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_breeding_record_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/breeding_record"
binding:layout_constraintTop_toBottomOf="@+id/btn_immun_record_detail_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toTopOf="@+id/btn_breeding_record_detail_sync"
binding:onClickCommand="@{viewModel.OnBreedingRecordSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_breeding_record_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="(0)"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_breeding_record_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_breeding_record_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_breeding_record_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="222"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_breeding_record_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_breeding_record_sync"
/>
<!-- breeding_record_detail -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_breeding_record_detail_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/breeding_record_detail"
binding:layout_constraintTop_toBottomOf="@+id/btn_breeding_record_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toBottomOf="parent"
binding:onClickCommand="@{viewModel.OnBreedingRecordDetailSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_breeding_record_detail_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="(0)"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_breeding_record_detail_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_breeding_record_detail_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_breeding_record_detail_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="222"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_breeding_record_detail_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/tv_breeding_record_detail_count"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:binding="http://schemas.android.com/apk/res-auto">
<data>
<import type="me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter" />
<import type="me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LayoutManagers" />
<variable
name="viewModel"
type="com.phlx.anchorcollect.ui.setting.SyncVM" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/home_bg">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_vertical_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
binding:layout_constraintGuide_percent="0.10" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_vertical_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
binding:layout_constraintGuide_percent="0.60" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
binding:layout_constraintLeft_toRightOf="@+id/guideline_vertical_left"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toTopOf="parent"
binding:layout_constraintBottom_toBottomOf="parent"
>
<!-- base_archives -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_base_archives_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="@string/base_archives"
binding:layout_constraintTop_toTopOf="parent"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintBottom_toTopOf="@+id/btn_sign_measure_sync"
binding:onClickCommand="@{viewModel.OnBaseArchivesSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_base_archives_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@{viewModel.cattleresumeCount}"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_base_archives_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_base_archives_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_base_archives_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="111111111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_base_archives_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_base_archives_sync"
/>
<!-- sign_measure -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_sign_measure_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_measure"
binding:layout_constraintTop_toBottomOf="@+id/btn_base_archives_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toTopOf="@+id/btn_weighting_manage_sync"
binding:onClickCommand="@{viewModel.OnSignMeasureSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_sign_measure_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@{viewModel.performanceCount}"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_sign_measure_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_sign_measure_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_sign_measure_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="11111111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_sign_measure_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_sign_measure_sync"
/>
<!-- weighting_manage -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_weighting_manage_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/weighting_manage"
binding:layout_constraintTop_toBottomOf="@+id/btn_sign_measure_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toTopOf="@+id/btn_treatment_record_sync"
binding:onClickCommand="@{viewModel.OnWeightingManageSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_weighting_manage_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@{viewModel.weightManCount}"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_weighting_manage_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_weighting_manage_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_weighting_manage_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="11111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_weighting_manage_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_weighting_manage_sync"
/>
<!-- treatment_record -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_treatment_record_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/treatment_record"
binding:layout_constraintTop_toBottomOf="@+id/btn_weighting_manage_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toBottomOf="parent"
binding:onClickCommand="@{viewModel.OnMedicalRecordSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_treatment_record_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@{viewModel.medicalrecordsCount}"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_treatment_record_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_treatment_record_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_treatment_record_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="1111111111111111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_treatment_record_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_treatment_record_sync"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
binding:layout_constraintLeft_toRightOf="@+id/guideline_vertical_right"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toTopOf="parent"
binding:layout_constraintBottom_toBottomOf="parent"
>
<!-- immun_record -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_immun_record_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/immun_record"
binding:layout_constraintTop_toTopOf="parent"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintBottom_toTopOf="@+id/btn_immun_record_detail_sync"
binding:onClickCommand="@{viewModel.OnImmunRecordSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_immun_record_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@{viewModel.immunebatchCount}"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_immun_record_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_immun_record_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_immun_record_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_immun_record_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_immun_record_sync"
/>
<!-- immun_record_detail -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_immun_record_detail_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/immun_record_detail"
binding:layout_constraintTop_toBottomOf="@+id/btn_immun_record_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_immun_record_sync"
binding:layout_constraintBottom_toTopOf="@+id/btn_breeding_record_sync"
binding:onClickCommand="@{viewModel.OnImmunRecordDetailSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_immun_record_detail_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@{viewModel.immunebatchDetailCount}"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_immun_record_detail_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_immun_record_detail_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_immun_record_detail_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="111"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_immun_record_detail_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_immun_record_detail_sync"
/>
<!-- breeding_record -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_breeding_record_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/breeding_record"
binding:layout_constraintTop_toBottomOf="@+id/btn_immun_record_detail_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_immun_record_sync"
binding:layout_constraintBottom_toTopOf="@+id/btn_breeding_record_detail_sync"
binding:onClickCommand="@{viewModel.OnBreedingRecordSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_breeding_record_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@{viewModel.cattlematingMasterCount}"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_breeding_record_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_breeding_record_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_breeding_record_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="222"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_breeding_record_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_breeding_record_sync"
/>
<!-- breeding_record_detail -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_breeding_record_detail_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/breeding_record_detail"
binding:layout_constraintTop_toBottomOf="@+id/btn_breeding_record_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_immun_record_sync"
binding:layout_constraintBottom_toBottomOf="parent"
binding:onClickCommand="@{viewModel.OnBreedingRecordDetailSyncClickCommand}"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_breeding_record_detail_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="@{viewModel.cattlematingDetaillCount}"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/btn_breeding_record_detail_sync"
binding:layout_constraintBaseline_toBaselineOf="@+id/btn_breeding_record_detail_sync"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_breeding_record_detail_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="222"
android:textColor="@color/white"
binding:layout_constraintLeft_toRightOf="@+id/tv_breeding_record_detail_count"
binding:layout_constraintBaseline_toBaselineOf="@+id/tv_breeding_record_detail_count"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
......@@ -78,7 +78,7 @@
android:textSize="@dimen/sp_12" />
<com.lingber.mycontrol.datagridview.DataGridView
android:id="@+id/dgv_treatment_record"
android:id="@+id/dgv_medical_record"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:dividerSize="1"
......
......@@ -325,11 +325,22 @@
android:id="@+id/iv_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:src="@mipmap/ic_set"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toTopOf="parent"
binding:onClickCommand="@{viewModel.onSettingClick}" />
<ImageView
android:id="@+id/iv_sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:src="@mipmap/ic_set"
binding:layout_constraintRight_toLeftOf="@+id/iv_setting"
binding:layout_constraintTop_toTopOf="parent"
binding:onClickCommand="@{viewModel.onSyncClick}" />
<!--右侧表格区-->
<androidx.core.widget.NestedScrollView
android:id="@+id/nsv_right_content"
......
<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.ui.fragment.vm.ImmunRecordVM" />
<variable
name="spinnerAdapter"
type="android.widget.ArrayAdapter" />
<variable
name="adapter"
type="BindingRecyclerViewAdapter" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_bg"
android:padding="5dp">
<TextView
android:id="@+id/tv_rfid_text"
android:layout_width="0dp"
android:layout_height="@dimen/dp_32"
android:background="@drawable/bg_radius_stroke_white_5"
android:gravity="center"
android:hint="未扫到电子耳标"
android:text=""
android:textColor="@color/white"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_collect"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="5dp"
android:layout_marginLeft="-5dp"
binding:adapter="@{adapter}"
binding:itemBinding="@{viewModel.itemBinding}"
binding:items="@{viewModel.observableList}"
binding:layoutManager="@{LayoutManagers.grid(5)}"
binding:layout_constraintBottom_toTopOf="@+id/card_99"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toBottomOf="@+id/tv_rfid_text" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/card_99"
android:layout_width="0dp"
android:layout_height="37dp"
android:background="@drawable/bg_radius_white_5"
android:onClick="@{() ->viewModel.click(99)}"
android:orientation="vertical"
android:padding="5dp"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toLeftOf="@+id/card_save"
binding:layout_constraintBottom_toBottomOf="parent"
>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="备注"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/sp_8" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:text="@{viewModel.remarkParamEntity.showName}"
android:textColor="@color/black"
android:textSize="@dimen/sp_8" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/card_save"
android:layout_width="100dp"
android:layout_height="37dp"
android:layout_marginLeft="5dp"
android:background="@drawable/bg_radius_white_5"
binding:layout_constraintBottom_toBottomOf="parent"
binding:layout_constraintRight_toRightOf="parent"
>
<!-- binding:onClickCommand="@{viewModel.onCardSaveClick}"-->
<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"
binding:onClickCommand="@{viewModel.onSaveClick}"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
<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.ui.fragment.vm.MedicalRecordVM" />
<variable
name="spinnerAdapter"
type="android.widget.ArrayAdapter" />
<variable
name="adapter"
type="BindingRecyclerViewAdapter" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_bg"
android:padding="5dp">
<TextView
android:id="@+id/tv_rfid_text"
android:layout_width="0dp"
android:layout_height="@dimen/dp_32"
android:background="@drawable/bg_radius_stroke_white_5"
android:gravity="center"
android:hint="未扫到电子耳标"
android:text=""
android:textColor="@color/white"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_collect"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="5dp"
android:layout_marginLeft="-5dp"
binding:adapter="@{adapter}"
binding:itemBinding="@{viewModel.itemBinding}"
binding:items="@{viewModel.observableList}"
binding:layoutManager="@{LayoutManagers.grid(5)}"
binding:layout_constraintBottom_toTopOf="@+id/card_99"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toBottomOf="@+id/tv_rfid_text" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/card_99"
android:layout_width="0dp"
android:layout_height="37dp"
android:background="@drawable/bg_radius_white_5"
android:onClick="@{() ->viewModel.click(99)}"
android:orientation="vertical"
android:padding="5dp"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toLeftOf="@+id/card_save"
binding:layout_constraintBottom_toBottomOf="parent"
>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title_16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="备注"
android:textColor="@color/colorPrimary"
android:textSize="@dimen/sp_8" />
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:text="@{viewModel.remarkParamEntity.showName}"
android:textColor="@color/black"
android:textSize="@dimen/sp_8" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/card_save"
android:layout_width="100dp"
android:layout_height="37dp"
android:layout_marginLeft="5dp"
android:background="@drawable/bg_radius_white_5"
binding:layout_constraintBottom_toBottomOf="parent"
binding:layout_constraintRight_toRightOf="parent"
>
<!-- binding:onClickCommand="@{viewModel.onCardSaveClick}"-->
<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"
binding:onClickCommand="@{viewModel.onSaveClick}"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
......@@ -8,7 +8,7 @@
<!--主背景色-->
<color name="color_bg">#ecf0ff</color>
<color name="color_font_non_focus">#999999</color>
<color name="color_font_non_focus">#9DB0FF</color>
<color name="color_font_null">#cccccc</color>
......
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