Commit 429a4804 authored by hywang's avatar hywang

增加配种记录功能

parent 199e5b54
......@@ -78,6 +78,7 @@ dependencies {
implementation 'com.contrarywind:Android-PickerView:4.1.9'
implementation project(':mvvmhabit')
implementation project(':appupdateX')
implementation project(':mycontrol')
implementation files('libs/uhf.jar')
//生成主键
......@@ -105,4 +106,7 @@ dependencies {
//ToastUtils
implementation 'com.github.getActivity:ToastUtils:9.2'
//表格
// implementation 'com.github.Lingber:Android_DataGridView:1.01'
}
\ No newline at end of file
......@@ -71,6 +71,7 @@ public class Configs {
public static final String TREATMENT_RECORD = "treatment_record";
public static final String IMMUN_RECORD = "immun_record";
public static final String BREEDING_RECORD = "breeding_record";
public static final String BREEDING_RECORD_DETAIL = "breeding_record_detail";
//0 高频,1低频
public static String FREQUENCY_CONFIG = "1";
......
......@@ -5,10 +5,13 @@ import androidx.annotation.NonNull;
import com.phlx.anchorcollect.data.http.HttpDataSource;
import com.phlx.anchorcollect.data.local.LocalDataSource;
import com.phlx.anchorcollect.entity.BreedingRecordDetailEntity;
import com.phlx.anchorcollect.entity.BreedingRecordEntity;
import com.phlx.anchorcollect.entity.CattleResumeEntity;
import com.phlx.anchorcollect.entity.DictEntity;
import com.phlx.anchorcollect.entity.GenData;
import com.phlx.anchorcollect.entity.LoginData;
import com.phlx.anchorcollect.entity.PerformanceEntity;
import com.phlx.anchorcollect.params.CollectResponse;
import com.phlx.anchorcollect.params.ListResponse;
......@@ -78,9 +81,50 @@ public class Repository extends BaseModel implements HttpDataSource, LocalDataSo
return mHttpDataSource.downloadDict();
}
@Override
public Observable<ListResponse<PerformanceEntity>> downloadPerformanceList(Map<String, String> map) {
return mHttpDataSource.downloadPerformanceList(map);
}
@Override
public Observable<CollectResponse> downloadPerformanceListSync(RequestBody body) {
return mHttpDataSource.downloadPerformanceListSync(body);
}
@Override
public Observable<CollectResponse> uploadPerformanceList(RequestBody body) {
return mHttpDataSource.uploadPerformanceList(body);
}
@Override
public Observable<ListResponse<BreedingRecordEntity>> downloadBreedingRecordList(Map<String, String> map) {
return mHttpDataSource.downloadBreedingRecordList(map);
}
@Override
public Observable<CollectResponse> downloadBreedingRecordListSync(RequestBody body) {
return mHttpDataSource.downloadBreedingRecordListSync(body);
}
@Override
public Observable<CollectResponse> uploadBreedingRecordList(RequestBody body) {
return mHttpDataSource.uploadBreedingRecordList(body);
}
@Override
public Observable<ListResponse<BreedingRecordDetailEntity>> downloadBreedingRecordDetailList(Map<String, String> map) {
return mHttpDataSource.downloadBreedingRecordDetailList(map);
}
@Override
public Observable<CollectResponse> downloadBreedingRecordDetailListSync(RequestBody body) {
return mHttpDataSource.downloadBreedingRecordDetailListSync(body);
}
@Override
public Observable<CollectResponse> uploadBreedingRecordDetailList(RequestBody body) {
return mHttpDataSource.uploadBreedingRecordDetailList(body);
}
/****************************************************************************/
......
......@@ -9,6 +9,7 @@ import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
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.PerformanceVM;
......@@ -80,6 +81,9 @@ public class VMFactory extends ViewModelProvider.NewInstanceFactory {
} else if (modelClass.isAssignableFrom(PerformanceVM.class)) {
return (T) new PerformanceVM(mApplication, repository);
} else if (modelClass.isAssignableFrom(BreedingRecordVM.class)) {
return (T) new BreedingRecordVM(mApplication, repository);
} else if (modelClass.isAssignableFrom(CollectVM.class)) {
......
package com.phlx.anchorcollect.data.http;
import com.phlx.anchorcollect.entity.BreedingRecordDetailEntity;
import com.phlx.anchorcollect.entity.BreedingRecordEntity;
import com.phlx.anchorcollect.entity.CattleResumeEntity;
import com.phlx.anchorcollect.entity.DictEntity;
import com.phlx.anchorcollect.entity.GenData;
import com.phlx.anchorcollect.entity.LoginData;
import com.phlx.anchorcollect.entity.PerformanceEntity;
import com.phlx.anchorcollect.params.CollectResponse;
import com.phlx.anchorcollect.params.ListResponse;
......@@ -53,6 +56,12 @@ public interface ApiService {
@GET("/api/gen/list")
Observable<CollectResponse<GenData>> genGet();
/**
* 获取字典项列表
*/
@POST("/api/dict/data/list")
Observable<ListResponse<DictEntity>> downloadDict();
/**
* 获取基础信息列表
* SyncState 0根据记录更新,1重新更新
......@@ -70,10 +79,70 @@ public interface ApiService {
Observable<CollectResponse> downloadCattleListSync(@Body RequestBody body);
/**
* 获取字典项列表
* 获取性能测定列表
* SyncState 0根据记录更新,1重新更新
*/
@POST("/api/dict/data/list")
Observable<ListResponse<DictEntity>> downloadDict();
@FormUrlEncoded
@POST("/api/performance/list")
Observable<ListResponse<PerformanceEntity>> downloadPerformanceList(@FieldMap Map<String, String> map);
/**
* 获取性能测定列表-返回
*/
@Headers({"Content-Type: application/json", "Accept: application/json"})
@POST("/api/performance/sync/add")
Observable<CollectResponse> downloadPerformanceListSync(@Body RequestBody body);
/**
* 上传性能测定列表
*/
@Headers({"Content-Type: application/json", "Accept: application/json"})
@POST("/api/performance/add")
Observable<CollectResponse> uploadPerformanceList(@Body RequestBody body);
/**
* 获取-配种记录主表-列表
* SyncState 0根据记录更新,1重新更新
*/
@FormUrlEncoded
@POST("/api/cattlematingMaster/list")
Observable<ListResponse<BreedingRecordEntity>> downloadBreedingRecordList(@FieldMap Map<String, String> map);
/**
* 获取-配种记录主表-列表-返回
*/
@Headers({"Content-Type: application/json", "Accept: application/json"})
@POST("/api/cattlematingMaster/sync/add")
Observable<CollectResponse> downloadBreedingRecordListSync(@Body RequestBody body);
/**
* 上传-配种记录主表-列表
*/
@Headers({"Content-Type: application/json", "Accept: application/json"})
@POST("/api/cattlematingMaster/add")
Observable<CollectResponse> uploadBreedingRecordList(@Body RequestBody body);
/**
* 获取-配种记录子表-列表
* SyncState 0根据记录更新,1重新更新
*/
@FormUrlEncoded
@POST("/api/cattlematingDetaill/list")
Observable<ListResponse<BreedingRecordDetailEntity>> downloadBreedingRecordDetailList(@FieldMap Map<String, String> map);
/**
* 获取-配种记录子表-列表-返回
*/
@Headers({"Content-Type: application/json", "Accept: application/json"})
@POST("/api/cattlematingDetaill/sync/add")
Observable<CollectResponse> downloadBreedingRecordDetailListSync(@Body RequestBody body);
/**
* 上传-配种记录子表-列表
*/
@Headers({"Content-Type: application/json", "Accept: application/json"})
@POST("/api/cattlematingDetaill/add")
Observable<CollectResponse> uploadBreedingRecordDetailList(@Body RequestBody body);
......
package com.phlx.anchorcollect.data.http;
import com.phlx.anchorcollect.entity.BreedingRecordDetailEntity;
import com.phlx.anchorcollect.entity.BreedingRecordEntity;
import com.phlx.anchorcollect.entity.CattleResumeEntity;
import com.phlx.anchorcollect.entity.DictEntity;
import com.phlx.anchorcollect.entity.GenData;
import com.phlx.anchorcollect.entity.LoginData;
import com.phlx.anchorcollect.entity.PerformanceEntity;
import com.phlx.anchorcollect.params.CollectResponse;
import com.phlx.anchorcollect.params.ListResponse;
......@@ -16,6 +19,7 @@ import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Headers;
import retrofit2.http.POST;
/**
......@@ -60,6 +64,52 @@ public interface HttpDataSource {
*/
Observable<ListResponse<DictEntity>> downloadDict();
/**
* 获取性能测定列表
* SyncState 0根据记录更新,1重新更新
*/
Observable<ListResponse<PerformanceEntity>> downloadPerformanceList(@FieldMap Map<String, String> map);
/**
* 获取性能测定列表-返回
*/
Observable<CollectResponse> downloadPerformanceListSync(@Body RequestBody body);
/**
* 上传性能测定列表
*/
Observable<CollectResponse> uploadPerformanceList(@Body RequestBody body);
/**
* 获取-配种记录主表-列表
* SyncState 0根据记录更新,1重新更新
*/
Observable<ListResponse<BreedingRecordEntity>> downloadBreedingRecordList(@FieldMap Map<String, String> map);
/**
* 获取-配种记录主表-列表-返回
*/
Observable<CollectResponse> downloadBreedingRecordListSync(@Body RequestBody body);
/**
* 上传-配种记录主表-列表
*/
Observable<CollectResponse> uploadBreedingRecordList(@Body RequestBody body);
/**
* 获取-配种记录子表-列表
* SyncState 0根据记录更新,1重新更新
*/
Observable<ListResponse<BreedingRecordDetailEntity>> downloadBreedingRecordDetailList(@FieldMap Map<String, String> map);
/**
* 获取-配种记录子表-列表-返回
*/
Observable<CollectResponse> downloadBreedingRecordDetailListSync(@Body RequestBody body);
/**
* 上传-配种记录子表-列表
*/
Observable<CollectResponse> uploadBreedingRecordDetailList(@Body RequestBody body);
}
package com.phlx.anchorcollect.data.http;
import com.phlx.anchorcollect.entity.BreedingRecordDetailEntity;
import com.phlx.anchorcollect.entity.BreedingRecordEntity;
import com.phlx.anchorcollect.entity.CattleResumeEntity;
import com.phlx.anchorcollect.entity.DictEntity;
import com.phlx.anchorcollect.entity.GenData;
import com.phlx.anchorcollect.entity.LoginData;
import com.phlx.anchorcollect.entity.PerformanceEntity;
import com.phlx.anchorcollect.params.CollectResponse;
import com.phlx.anchorcollect.params.ListResponse;
......@@ -67,4 +70,49 @@ public class HttpDataSourceImpl implements HttpDataSource {
public Observable<ListResponse<DictEntity>> downloadDict() {
return apiService.downloadDict();
}
@Override
public Observable<ListResponse<PerformanceEntity>> downloadPerformanceList(Map<String, String> map) {
return apiService.downloadPerformanceList(map);
}
@Override
public Observable<CollectResponse> downloadPerformanceListSync(RequestBody body) {
return apiService.downloadPerformanceListSync(body);
}
@Override
public Observable<CollectResponse> uploadPerformanceList(RequestBody body) {
return apiService.uploadPerformanceList(body);
}
@Override
public Observable<ListResponse<BreedingRecordEntity>> downloadBreedingRecordList(Map<String, String> map) {
return apiService.downloadBreedingRecordList(map);
}
@Override
public Observable<CollectResponse> downloadBreedingRecordListSync(RequestBody body) {
return apiService.downloadBreedingRecordListSync(body);
}
@Override
public Observable<CollectResponse> uploadBreedingRecordList(RequestBody body) {
return apiService.uploadBreedingRecordList(body);
}
@Override
public Observable<ListResponse<BreedingRecordDetailEntity>> downloadBreedingRecordDetailList(Map<String, String> map) {
return apiService.downloadBreedingRecordDetailList(map);
}
@Override
public Observable<CollectResponse> downloadBreedingRecordDetailListSync(RequestBody body) {
return apiService.downloadBreedingRecordDetailListSync(body);
}
@Override
public Observable<CollectResponse> uploadBreedingRecordDetailList(RequestBody body) {
return apiService.uploadBreedingRecordDetailList(body);
}
}
......@@ -22,8 +22,11 @@ public class DaoMaster extends AbstractDaoMaster {
/** Creates underlying database table using DAOs. */
public static void createAllTables(Database db, boolean ifNotExists) {
AncestryinfoEntityDao.createTable(db, ifNotExists);
BreedingRecordDetailEntityDao.createTable(db, ifNotExists);
BreedingRecordEntityDao.createTable(db, ifNotExists);
CardEntityDao.createTable(db, ifNotExists);
CattleResumeEntityDao.createTable(db, ifNotExists);
DictEntityDao.createTable(db, ifNotExists);
GenTableDao.createTable(db, ifNotExists);
GenTableColumnDao.createTable(db, ifNotExists);
ImmuneEntityDao.createTable(db, ifNotExists);
......@@ -31,14 +34,16 @@ public class DaoMaster extends AbstractDaoMaster {
PerformanceEntityDao.createTable(db, ifNotExists);
UserRoleEntityDao.createTable(db, ifNotExists);
WeightingEntityDao.createTable(db, ifNotExists);
DictEntityDao.createTable(db, ifNotExists);
}
/** Drops underlying database table using DAOs. */
public static void dropAllTables(Database db, boolean ifExists) {
AncestryinfoEntityDao.dropTable(db, ifExists);
BreedingRecordDetailEntityDao.dropTable(db, ifExists);
BreedingRecordEntityDao.dropTable(db, ifExists);
CardEntityDao.dropTable(db, ifExists);
CattleResumeEntityDao.dropTable(db, ifExists);
DictEntityDao.dropTable(db, ifExists);
GenTableDao.dropTable(db, ifExists);
GenTableColumnDao.dropTable(db, ifExists);
ImmuneEntityDao.dropTable(db, ifExists);
......@@ -46,7 +51,6 @@ public class DaoMaster extends AbstractDaoMaster {
PerformanceEntityDao.dropTable(db, ifExists);
UserRoleEntityDao.dropTable(db, ifExists);
WeightingEntityDao.dropTable(db, ifExists);
DictEntityDao.dropTable(db, ifExists);
}
/**
......@@ -66,8 +70,11 @@ public class DaoMaster extends AbstractDaoMaster {
public DaoMaster(Database db) {
super(db, SCHEMA_VERSION);
registerDaoClass(AncestryinfoEntityDao.class);
registerDaoClass(BreedingRecordDetailEntityDao.class);
registerDaoClass(BreedingRecordEntityDao.class);
registerDaoClass(CardEntityDao.class);
registerDaoClass(CattleResumeEntityDao.class);
registerDaoClass(DictEntityDao.class);
registerDaoClass(GenTableDao.class);
registerDaoClass(GenTableColumnDao.class);
registerDaoClass(ImmuneEntityDao.class);
......@@ -75,7 +82,6 @@ public class DaoMaster extends AbstractDaoMaster {
registerDaoClass(PerformanceEntityDao.class);
registerDaoClass(UserRoleEntityDao.class);
registerDaoClass(WeightingEntityDao.class);
registerDaoClass(DictEntityDao.class);
}
public DaoSession newSession() {
......
......@@ -9,8 +9,11 @@ import org.greenrobot.greendao.identityscope.IdentityScopeType;
import org.greenrobot.greendao.internal.DaoConfig;
import com.phlx.anchorcollect.entity.AncestryinfoEntity;
import com.phlx.anchorcollect.entity.BreedingRecordDetailEntity;
import com.phlx.anchorcollect.entity.BreedingRecordEntity;
import com.phlx.anchorcollect.entity.CardEntity;
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.ImmuneEntity;
......@@ -18,11 +21,13 @@ import com.phlx.anchorcollect.entity.MedicalEntity;
import com.phlx.anchorcollect.entity.PerformanceEntity;
import com.phlx.anchorcollect.entity.UserRoleEntity;
import com.phlx.anchorcollect.entity.WeightingEntity;
import com.phlx.anchorcollect.entity.DictEntity;
import com.phlx.anchorcollect.db.gen.AncestryinfoEntityDao;
import com.phlx.anchorcollect.db.gen.BreedingRecordDetailEntityDao;
import com.phlx.anchorcollect.db.gen.BreedingRecordEntityDao;
import com.phlx.anchorcollect.db.gen.CardEntityDao;
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.GenTableColumnDao;
import com.phlx.anchorcollect.db.gen.ImmuneEntityDao;
......@@ -30,7 +35,6 @@ import com.phlx.anchorcollect.db.gen.MedicalEntityDao;
import com.phlx.anchorcollect.db.gen.PerformanceEntityDao;
import com.phlx.anchorcollect.db.gen.UserRoleEntityDao;
import com.phlx.anchorcollect.db.gen.WeightingEntityDao;
import com.phlx.anchorcollect.db.gen.DictEntityDao;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
......@@ -42,8 +46,11 @@ import com.phlx.anchorcollect.db.gen.DictEntityDao;
public class DaoSession extends AbstractDaoSession {
private final DaoConfig ancestryinfoEntityDaoConfig;
private final DaoConfig breedingRecordDetailEntityDaoConfig;
private final DaoConfig breedingRecordEntityDaoConfig;
private final DaoConfig cardEntityDaoConfig;
private final DaoConfig cattleResumeEntityDaoConfig;
private final DaoConfig dictEntityDaoConfig;
private final DaoConfig genTableDaoConfig;
private final DaoConfig genTableColumnDaoConfig;
private final DaoConfig immuneEntityDaoConfig;
......@@ -51,11 +58,13 @@ public class DaoSession extends AbstractDaoSession {
private final DaoConfig performanceEntityDaoConfig;
private final DaoConfig userRoleEntityDaoConfig;
private final DaoConfig weightingEntityDaoConfig;
private final DaoConfig dictEntityDaoConfig;
private final AncestryinfoEntityDao ancestryinfoEntityDao;
private final BreedingRecordDetailEntityDao breedingRecordDetailEntityDao;
private final BreedingRecordEntityDao breedingRecordEntityDao;
private final CardEntityDao cardEntityDao;
private final CattleResumeEntityDao cattleResumeEntityDao;
private final DictEntityDao dictEntityDao;
private final GenTableDao genTableDao;
private final GenTableColumnDao genTableColumnDao;
private final ImmuneEntityDao immuneEntityDao;
......@@ -63,7 +72,6 @@ public class DaoSession extends AbstractDaoSession {
private final PerformanceEntityDao performanceEntityDao;
private final UserRoleEntityDao userRoleEntityDao;
private final WeightingEntityDao weightingEntityDao;
private final DictEntityDao dictEntityDao;
public DaoSession(Database db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig>
daoConfigMap) {
......@@ -72,12 +80,21 @@ public class DaoSession extends AbstractDaoSession {
ancestryinfoEntityDaoConfig = daoConfigMap.get(AncestryinfoEntityDao.class).clone();
ancestryinfoEntityDaoConfig.initIdentityScope(type);
breedingRecordDetailEntityDaoConfig = daoConfigMap.get(BreedingRecordDetailEntityDao.class).clone();
breedingRecordDetailEntityDaoConfig.initIdentityScope(type);
breedingRecordEntityDaoConfig = daoConfigMap.get(BreedingRecordEntityDao.class).clone();
breedingRecordEntityDaoConfig.initIdentityScope(type);
cardEntityDaoConfig = daoConfigMap.get(CardEntityDao.class).clone();
cardEntityDaoConfig.initIdentityScope(type);
cattleResumeEntityDaoConfig = daoConfigMap.get(CattleResumeEntityDao.class).clone();
cattleResumeEntityDaoConfig.initIdentityScope(type);
dictEntityDaoConfig = daoConfigMap.get(DictEntityDao.class).clone();
dictEntityDaoConfig.initIdentityScope(type);
genTableDaoConfig = daoConfigMap.get(GenTableDao.class).clone();
genTableDaoConfig.initIdentityScope(type);
......@@ -99,12 +116,12 @@ public class DaoSession extends AbstractDaoSession {
weightingEntityDaoConfig = daoConfigMap.get(WeightingEntityDao.class).clone();
weightingEntityDaoConfig.initIdentityScope(type);
dictEntityDaoConfig = daoConfigMap.get(DictEntityDao.class).clone();
dictEntityDaoConfig.initIdentityScope(type);
ancestryinfoEntityDao = new AncestryinfoEntityDao(ancestryinfoEntityDaoConfig, this);
breedingRecordDetailEntityDao = new BreedingRecordDetailEntityDao(breedingRecordDetailEntityDaoConfig, this);
breedingRecordEntityDao = new BreedingRecordEntityDao(breedingRecordEntityDaoConfig, this);
cardEntityDao = new CardEntityDao(cardEntityDaoConfig, this);
cattleResumeEntityDao = new CattleResumeEntityDao(cattleResumeEntityDaoConfig, this);
dictEntityDao = new DictEntityDao(dictEntityDaoConfig, this);
genTableDao = new GenTableDao(genTableDaoConfig, this);
genTableColumnDao = new GenTableColumnDao(genTableColumnDaoConfig, this);
immuneEntityDao = new ImmuneEntityDao(immuneEntityDaoConfig, this);
......@@ -112,11 +129,13 @@ public class DaoSession extends AbstractDaoSession {
performanceEntityDao = new PerformanceEntityDao(performanceEntityDaoConfig, this);
userRoleEntityDao = new UserRoleEntityDao(userRoleEntityDaoConfig, this);
weightingEntityDao = new WeightingEntityDao(weightingEntityDaoConfig, this);
dictEntityDao = new DictEntityDao(dictEntityDaoConfig, this);
registerDao(AncestryinfoEntity.class, ancestryinfoEntityDao);
registerDao(BreedingRecordDetailEntity.class, breedingRecordDetailEntityDao);
registerDao(BreedingRecordEntity.class, breedingRecordEntityDao);
registerDao(CardEntity.class, cardEntityDao);
registerDao(CattleResumeEntity.class, cattleResumeEntityDao);
registerDao(DictEntity.class, dictEntityDao);
registerDao(GenTable.class, genTableDao);
registerDao(GenTableColumn.class, genTableColumnDao);
registerDao(ImmuneEntity.class, immuneEntityDao);
......@@ -124,13 +143,15 @@ public class DaoSession extends AbstractDaoSession {
registerDao(PerformanceEntity.class, performanceEntityDao);
registerDao(UserRoleEntity.class, userRoleEntityDao);
registerDao(WeightingEntity.class, weightingEntityDao);
registerDao(DictEntity.class, dictEntityDao);
}
public void clear() {
ancestryinfoEntityDaoConfig.clearIdentityScope();
breedingRecordDetailEntityDaoConfig.clearIdentityScope();
breedingRecordEntityDaoConfig.clearIdentityScope();
cardEntityDaoConfig.clearIdentityScope();
cattleResumeEntityDaoConfig.clearIdentityScope();
dictEntityDaoConfig.clearIdentityScope();
genTableDaoConfig.clearIdentityScope();
genTableColumnDaoConfig.clearIdentityScope();
immuneEntityDaoConfig.clearIdentityScope();
......@@ -138,13 +159,20 @@ public class DaoSession extends AbstractDaoSession {
performanceEntityDaoConfig.clearIdentityScope();
userRoleEntityDaoConfig.clearIdentityScope();
weightingEntityDaoConfig.clearIdentityScope();
dictEntityDaoConfig.clearIdentityScope();
}
public AncestryinfoEntityDao getAncestryinfoEntityDao() {
return ancestryinfoEntityDao;
}
public BreedingRecordDetailEntityDao getBreedingRecordDetailEntityDao() {
return breedingRecordDetailEntityDao;
}
public BreedingRecordEntityDao getBreedingRecordEntityDao() {
return breedingRecordEntityDao;
}
public CardEntityDao getCardEntityDao() {
return cardEntityDao;
}
......@@ -153,6 +181,10 @@ public class DaoSession extends AbstractDaoSession {
return cattleResumeEntityDao;
}
public DictEntityDao getDictEntityDao() {
return dictEntityDao;
}
public GenTableDao getGenTableDao() {
return genTableDao;
}
......@@ -181,8 +213,4 @@ public class DaoSession extends AbstractDaoSession {
return weightingEntityDao;
}
public DictEntityDao getDictEntityDao() {
return dictEntityDao;
}
}
package com.phlx.anchorcollect.entity;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.databinding.BaseObservable;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import java.util.Date;
import org.greenrobot.greendao.annotation.Generated;
/**
* 配种记子对象 zxgl_cattlemating_detaill
*
* @author phlx
* @date 2022-01-10
*/
@Entity
public class BreedingRecordDetailEntity extends BaseObservable implements Parcelable {
/**
* unid
*/
@Id(autoincrement = false)
private String unid;
/**
* 主表ID
*/
private String fUnid;
/**
* 配种方式;(本交,受精)
*/
private String matingStyle;
/**
* 种畜耳标号
*/
private String cattleresumeId;
/**
* 冻精批次号
*/
private String frozenSemenBatch;
/**
* 配种日期
*/
private String matingDate;
/**
* 是否返情
*/
private String isReturn;
/**
* 返情日期
*/
private String backLoveDate;
/**
* 预产日期
*/
private String dueDate;
/**
* 配种成功
*/
private String pregnancy;
/**
* 部门id
*/
private String deptId;
/** 是否上传 0未上传,1已上传 */
private String uploadStatus;
/** 搜索值 */
private String searchValue;
/** 创建者 */
private String createBy;
/** 创建时间 */
private String createTime;
/** 更新者 */
private String updateBy;
/** 更新时间 */
private String updateTime;
/** 备注 */
private String remark;
public BreedingRecordDetailEntity() {
}
protected BreedingRecordDetailEntity(Parcel in) {
unid = in.readString();
fUnid = in.readString();
matingStyle = in.readString();
cattleresumeId = in.readString();
frozenSemenBatch = in.readString();
matingDate = in.readString();
isReturn = in.readString();
backLoveDate = in.readString();
dueDate = in.readString();
pregnancy = in.readString();
deptId = in.readString();
uploadStatus = in.readString();
searchValue = in.readString();
createBy = in.readString();
createTime = in.readString();
updateBy = in.readString();
updateTime = in.readString();
remark = in.readString();
}
@Generated(hash = 2062840275)
public BreedingRecordDetailEntity(String unid, String fUnid, String matingStyle, String cattleresumeId,
String frozenSemenBatch, String matingDate, String isReturn, String backLoveDate, String dueDate,
String pregnancy, String deptId, String uploadStatus, String searchValue, String createBy,
String createTime, String updateBy, String updateTime, String remark) {
this.unid = unid;
this.fUnid = fUnid;
this.matingStyle = matingStyle;
this.cattleresumeId = cattleresumeId;
this.frozenSemenBatch = frozenSemenBatch;
this.matingDate = matingDate;
this.isReturn = isReturn;
this.backLoveDate = backLoveDate;
this.dueDate = dueDate;
this.pregnancy = pregnancy;
this.deptId = deptId;
this.uploadStatus = uploadStatus;
this.searchValue = searchValue;
this.createBy = createBy;
this.createTime = createTime;
this.updateBy = updateBy;
this.updateTime = updateTime;
this.remark = remark;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(unid);
dest.writeString(fUnid);
dest.writeString(matingStyle);
dest.writeString(cattleresumeId);
dest.writeString(frozenSemenBatch);
dest.writeString(matingDate);
dest.writeString(isReturn);
dest.writeString(backLoveDate);
dest.writeString(dueDate);
dest.writeString(pregnancy);
dest.writeString(deptId);
dest.writeString(uploadStatus);
dest.writeString(searchValue);
dest.writeString(createBy);
dest.writeString(createTime);
dest.writeString(updateBy);
dest.writeString(updateTime);
dest.writeString(remark);
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<BreedingRecordDetailEntity> CREATOR = new Creator<BreedingRecordDetailEntity>() {
@Override
public BreedingRecordDetailEntity createFromParcel(Parcel in) {
return new BreedingRecordDetailEntity(in);
}
@Override
public BreedingRecordDetailEntity[] newArray(int size) {
return new BreedingRecordDetailEntity[size];
}
};
public String getUnid() {
return unid;
}
public void setUnid(String unid) {
this.unid = unid;
}
public String getfUnid() {
return fUnid;
}
public void setfUnid(String fUnid) {
this.fUnid = fUnid;
}
public String getMatingStyle() {
return matingStyle;
}
public void setMatingStyle(String matingStyle) {
this.matingStyle = matingStyle;
}
public String getCattleresumeId() {
return cattleresumeId;
}
public void setCattleresumeId(String cattleresumeId) {
this.cattleresumeId = cattleresumeId;
}
public String getFrozenSemenBatch() {
return frozenSemenBatch;
}
public void setFrozenSemenBatch(String frozenSemenBatch) {
this.frozenSemenBatch = frozenSemenBatch;
}
public String getMatingDate() {
return matingDate;
}
public void setMatingDate(String matingDate) {
this.matingDate = matingDate;
}
public String getIsReturn() {
return isReturn;
}
public void setIsReturn(String isReturn) {
this.isReturn = isReturn;
}
public String getBackLoveDate() {
return backLoveDate;
}
public void setBackLoveDate(String backLoveDate) {
this.backLoveDate = backLoveDate;
}
public String getDueDate() {
return dueDate;
}
public void setDueDate(String dueDate) {
this.dueDate = dueDate;
}
public String getPregnancy() {
return pregnancy;
}
public void setPregnancy(String pregnancy) {
this.pregnancy = pregnancy;
}
public String getDeptId() {
return deptId;
}
public void setDeptId(String deptId) {
this.deptId = deptId;
}
public String getUploadStatus() {
return uploadStatus;
}
public void setUploadStatus(String uploadStatus) {
this.uploadStatus = uploadStatus;
}
public String getSearchValue() {
return searchValue;
}
public void setSearchValue(String searchValue) {
this.searchValue = searchValue;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return "BreedingRecordDetailEntity{" +
"unid='" + unid + '\'' +
", fUnid='" + fUnid + '\'' +
", matingStyle='" + matingStyle + '\'' +
", cattleresumeId='" + cattleresumeId + '\'' +
", frozenSemenBatch='" + frozenSemenBatch + '\'' +
", matingDate='" + matingDate + '\'' +
", isReturn='" + isReturn + '\'' +
", backLoveDate='" + backLoveDate + '\'' +
", dueDate='" + dueDate + '\'' +
", pregnancy='" + pregnancy + '\'' +
", deptId='" + deptId + '\'' +
", uploadStatus='" + uploadStatus + '\'' +
", searchValue='" + searchValue + '\'' +
", createBy='" + createBy + '\'' +
", createTime='" + createTime + '\'' +
", updateBy='" + updateBy + '\'' +
", updateTime='" + updateTime + '\'' +
", remark='" + remark + '\'' +
'}';
}
public String getFUnid() {
return this.fUnid;
}
public void setFUnid(String fUnid) {
this.fUnid = fUnid;
}
}
package com.phlx.anchorcollect.entity;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.databinding.BaseObservable;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import java.util.List;
import org.greenrobot.greendao.annotation.Generated;
/**
* 配种记录主对象 zxgl_cattlemating_master
*
* @author phlx
* @date 2022-01-10
*/
@Entity
public class BreedingRecordEntity extends BaseObservable implements Parcelable {
/**
* unid
*/
@Id(autoincrement = false)
private String unid;
/**
* 母畜耳标号
*/
private String cattleresumeId;
/**
* 饲养品种(利木赞;西门塔尔等)
*/
private String raiseVarieties;
/**
* 所在地
*/
private String location;
/**
* 所属种畜站
*/
private String breedingPlantId;
/** 是否上传 0未上传,1已上传 */
private String uploadStatus;
/**
* 部门id
*/
private String deptId;
/** 搜索值 */
private String searchValue;
/** 创建者 */
private String createBy;
/** 创建时间 */
private String createTime;
/** 更新者 */
private String updateBy;
/** 更新时间 */
private String updateTime;
/** 备注 */
private String remark;
public BreedingRecordEntity() {
}
protected BreedingRecordEntity(Parcel in) {
unid = in.readString();
cattleresumeId = in.readString();
raiseVarieties = in.readString();
location = in.readString();
breedingPlantId = in.readString();
uploadStatus = in.readString();
deptId = in.readString();
searchValue = in.readString();
createBy = in.readString();
createTime = in.readString();
updateBy = in.readString();
updateTime = in.readString();
remark = in.readString();
}
@Generated(hash = 1293154819)
public BreedingRecordEntity(String unid, String cattleresumeId, String raiseVarieties,
String location, String breedingPlantId, String uploadStatus, String deptId,
String searchValue, String createBy, String createTime, String updateBy, String updateTime,
String remark) {
this.unid = unid;
this.cattleresumeId = cattleresumeId;
this.raiseVarieties = raiseVarieties;
this.location = location;
this.breedingPlantId = breedingPlantId;
this.uploadStatus = uploadStatus;
this.deptId = deptId;
this.searchValue = searchValue;
this.createBy = createBy;
this.createTime = createTime;
this.updateBy = updateBy;
this.updateTime = updateTime;
this.remark = remark;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(unid);
dest.writeString(cattleresumeId);
dest.writeString(raiseVarieties);
dest.writeString(location);
dest.writeString(breedingPlantId);
dest.writeString(uploadStatus);
dest.writeString(deptId);
dest.writeString(searchValue);
dest.writeString(createBy);
dest.writeString(createTime);
dest.writeString(updateBy);
dest.writeString(updateTime);
dest.writeString(remark);
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<BreedingRecordEntity> CREATOR = new Creator<BreedingRecordEntity>() {
@Override
public BreedingRecordEntity createFromParcel(Parcel in) {
return new BreedingRecordEntity(in);
}
@Override
public BreedingRecordEntity[] newArray(int size) {
return new BreedingRecordEntity[size];
}
};
public String getUnid() {
return unid;
}
public void setUnid(String unid) {
this.unid = unid;
}
public String getCattleresumeId() {
return cattleresumeId;
}
public void setCattleresumeId(String cattleresumeId) {
this.cattleresumeId = cattleresumeId;
}
public String getRaiseVarieties() {
return raiseVarieties;
}
public void setRaiseVarieties(String raiseVarieties) {
this.raiseVarieties = raiseVarieties;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getBreedingPlantId() {
return breedingPlantId;
}
public void setBreedingPlantId(String breedingPlantId) {
this.breedingPlantId = breedingPlantId;
}
public String getUploadStatus() {
return uploadStatus;
}
public void setUploadStatus(String uploadStatus) {
this.uploadStatus = uploadStatus;
}
public String getDeptId() {
return deptId;
}
public void setDeptId(String deptId) {
this.deptId = deptId;
}
public String getSearchValue() {
return searchValue;
}
public void setSearchValue(String searchValue) {
this.searchValue = searchValue;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return "BreedingRecordEntity{" +
"unid='" + unid + '\'' +
", cattleresumeId='" + cattleresumeId + '\'' +
", raiseVarieties='" + raiseVarieties + '\'' +
", location='" + location + '\'' +
", breedingPlantId='" + breedingPlantId + '\'' +
", uploadStatus='" + uploadStatus + '\'' +
", deptId='" + deptId + '\'' +
", searchValue='" + searchValue + '\'' +
", createBy='" + createBy + '\'' +
", createTime='" + createTime + '\'' +
", updateBy='" + updateBy + '\'' +
", updateTime='" + updateTime + '\'' +
", remark='" + remark + '\'' +
'}';
}
}
......@@ -11,8 +11,6 @@ import org.greenrobot.greendao.annotation.Id;
/**
* 种畜管理_性能测定表
* 作者 : lei
* 时间 : 2018/12/3 12 : 05
*/
@Entity
public class PerformanceEntity extends BaseObservable implements Parcelable {
......@@ -20,6 +18,7 @@ public class PerformanceEntity extends BaseObservable implements Parcelable {
/**
* unid
*/
@Id(autoincrement = false)
private String unid;
/**
......@@ -127,6 +126,9 @@ public class PerformanceEntity extends BaseObservable implements Parcelable {
*/
private String immune;
/** 是否上传 0未上传,1已上传 */
private String uploadStatus;
/**
* 部门id
*/
......@@ -176,6 +178,7 @@ public class PerformanceEntity extends BaseObservable implements Parcelable {
breedRes = in.readString();
health = in.readString();
immune = in.readString();
uploadStatus = in.readString();
deptId = in.readString();
searchValue = in.readString();
createBy = in.readString();
......@@ -185,14 +188,14 @@ public class PerformanceEntity extends BaseObservable implements Parcelable {
remark = in.readString();
}
@Generated(hash = 717472496)
@Generated(hash = 1092205671)
public PerformanceEntity(String unid, String cattleresumeId, String age, String measureDate,
String height, String length, String bust, String weight, String chestWidth,
String chestDeep, String waistWidth, String crossWidth, String guanWei,
String eyeMuscleArea, String grade, String hairLength, String hairFineness, String shearing,
String backWidth, String breedRes, String health, String immune, String deptId,
String searchValue, String createBy, String createTime, String updateBy, String updateTime,
String remark) {
String backWidth, String breedRes, String health, String immune, String uploadStatus,
String deptId, String searchValue, String createBy, String createTime, String updateBy,
String updateTime, String remark) {
this.unid = unid;
this.cattleresumeId = cattleresumeId;
this.age = age;
......@@ -215,6 +218,7 @@ public class PerformanceEntity extends BaseObservable implements Parcelable {
this.breedRes = breedRes;
this.health = health;
this.immune = immune;
this.uploadStatus = uploadStatus;
this.deptId = deptId;
this.searchValue = searchValue;
this.createBy = createBy;
......@@ -248,6 +252,7 @@ public class PerformanceEntity extends BaseObservable implements Parcelable {
dest.writeString(breedRes);
dest.writeString(health);
dest.writeString(immune);
dest.writeString(uploadStatus);
dest.writeString(deptId);
dest.writeString(searchValue);
dest.writeString(createBy);
......@@ -450,6 +455,14 @@ public class PerformanceEntity extends BaseObservable implements Parcelable {
this.immune = immune;
}
public String getUploadStatus() {
return uploadStatus;
}
public void setUploadStatus(String uploadStatus) {
this.uploadStatus = uploadStatus;
}
public String getDeptId() {
return deptId;
}
......@@ -531,6 +544,7 @@ public class PerformanceEntity extends BaseObservable implements Parcelable {
", breedRes='" + breedRes + '\'' +
", health='" + health + '\'' +
", immune='" + immune + '\'' +
", uploadStatus='" + uploadStatus + '\'' +
", deptId='" + deptId + '\'' +
", searchValue='" + searchValue + '\'' +
", createBy='" + createBy + '\'' +
......
......@@ -65,9 +65,15 @@ public class BasicsCollectFragment extends BaseFragment<FragmentBasicsCollectBin
private ImagePicker mImagePicker;
public static BasicsCollectFragment newInstance() {
BasicsCollectFragment basicsCollectFragment = new BasicsCollectFragment();
return basicsCollectFragment;
private static class SingletonClassInstance {
private static final BasicsCollectFragment instance = new BasicsCollectFragment();
}
private BasicsCollectFragment() {
}
public static BasicsCollectFragment getInstance() {
return SingletonClassInstance.instance;
}
@Override
......@@ -117,7 +123,7 @@ public class BasicsCollectFragment extends BaseFragment<FragmentBasicsCollectBin
if (viewModel.currentParamEntity != null) {
switch (viewModel.currentParamEntity.getHtmlType()) {
case "checkbox":
//TODO 多选
showCheckboxDialog(viewModel.currentParamEntity);
break;
case "input":
case "textarea":
......@@ -220,6 +226,38 @@ public class BasicsCollectFragment extends BaseFragment<FragmentBasicsCollectBin
.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) {
......@@ -227,7 +265,8 @@ public class BasicsCollectFragment extends BaseFragment<FragmentBasicsCollectBin
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; ;
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;
}
......
package com.phlx.anchorcollect.ui.fragment.list;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableField;
import com.phlx.anchorcollect.Configs;
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.PerformanceVM;
import cn.hutool.core.util.IdUtil;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.base.ItemViewModel;
import me.goldze.mvvmhabit.binding.command.BindingAction;
......@@ -18,12 +24,29 @@ public class CollectGridItem extends ItemViewModel<BaseViewModel> {
public ObservableField<GenTableColumn> entity = new ObservableField<>();
public ObservableField<Integer> titleGrayColor = new ObservableField<>(View.VISIBLE);
public ObservableField<Integer> titleBlueColor = new ObservableField<>(View.GONE);
private String fragmentType;
public CollectGridItem(@NonNull BaseViewModel viewModel, GenTableColumn entity, String fragmentType) {
super(viewModel);
this.entity.set(entity);
this.fragmentType = fragmentType;
initView();
}
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);
}
}
public BindingCommand onItemClickCommand = new BindingCommand(new BindingAction() {
......@@ -35,7 +58,7 @@ public class CollectGridItem extends ItemViewModel<BaseViewModel> {
((BasicsCollectVM)viewModel).onItemClick(entity.get());
break;
case Configs.SIGN_MEASURE:
((PerformanceVM)viewModel).onItemClick(entity.get());
break;
case Configs.WEIGHTING_MANAGE:
......@@ -47,7 +70,10 @@ public class CollectGridItem extends ItemViewModel<BaseViewModel> {
break;
case Configs.BREEDING_RECORD:
((BreedingRecordVM)viewModel).onItemClick(entity.get());
break;
case Configs.BREEDING_RECORD_DETAIL:
((BreedingRecordVM)viewModel).onItemClick(entity.get());
break;
}
}
......
......@@ -15,7 +15,6 @@ import com.phlx.anchorcollect.db.DbUtil;
import com.phlx.anchorcollect.db.gen.CardEntityDao;
import com.phlx.anchorcollect.db.gen.ImmuneEntityDao;
import com.phlx.anchorcollect.db.gen.MedicalEntityDao;
import com.phlx.anchorcollect.db.gen.PerformanceEntityDao;
import com.phlx.anchorcollect.db.gen.WeightingEntityDao;
import com.phlx.anchorcollect.db.interf.DbIDUCallBack;
import com.phlx.anchorcollect.db.interf.DbQueryCallBack;
......@@ -257,53 +256,53 @@ public class CollectVM extends BaseViewModel<Repository> {
* 体征测定-查询数据库
*/
private void querySign(String tag) {
QueryBuilder<PerformanceEntity> builder =
DbUtil.getInstance().getQueryBuilder(PerformanceEntity.class).where(PerformanceEntityDao.Properties.RegistrationNo.eq(tag));
DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<PerformanceEntity>() {
@Override
public void onSuccess(List<PerformanceEntity> result) {
if (result != null && result.size() > 0) {
uiList.get(0).setValue(result.get(0).getAge());
uiList.get(0).setName(result.get(0).getAge());
uiList.get(1).setValue(result.get(0).getMeasureDate());
uiList.get(1).setName(result.get(0).getMeasureDate());
uiList.get(2).setValue(result.get(0).getHeight());
uiList.get(2).setName(result.get(0).getHeight());
uiList.get(3).setValue(result.get(0).getLength());
uiList.get(3).setName(result.get(0).getLength());
uiList.get(4).setValue(result.get(0).getBust());
uiList.get(4).setName(result.get(0).getBust());
uiList.get(5).setValue(result.get(0).getChestWidth());
uiList.get(5).setName(result.get(0).getChestWidth());
uiList.get(6).setValue(result.get(0).getChestDeep());
uiList.get(6).setName(result.get(0).getChestDeep());
uiList.get(7).setValue(result.get(0).getWaistWidth());
uiList.get(7).setName(result.get(0).getWaistWidth());
uiList.get(8).setValue(result.get(0).getCrossWidth());
uiList.get(8).setName(result.get(0).getCrossWidth());
uiList.get(9).setValue(result.get(0).getGuanWei());
uiList.get(9).setName(result.get(0).getGuanWei());
uiList.get(10).setValue(result.get(0).getHairLength());
uiList.get(10).setName(result.get(0).getHairLength());
uiList.get(11).setValue(result.get(0).getEyeMuscleArea());
uiList.get(11).setName(result.get(0).getEyeMuscleArea());
uiList.get(12).setValue(result.get(0).getBreedRes());
uiList.get(12).setName(result.get(0).getBreedRes());
onNotifyAllEvent.setValue(false);
} else {
onNotifyAllEvent.setValue(true);
}
Configs.tempTag = "";
}
@Override
public void onFailed() {
Configs.tempTag = "";
ToastUtils.showShort("体征测定数据库查询失败");
}
}).queryAsyncAll(PerformanceEntity.class, builder);
// QueryBuilder<PerformanceEntity> builder =
// DbUtil.getInstance().getQueryBuilder(PerformanceEntity.class).where(PerformanceEntityDao.Properties.RegistrationNo.eq(tag));
// DbUtil.getInstance().setDbQueryCallBack(new DbQueryCallBack<PerformanceEntity>() {
// @Override
// public void onSuccess(List<PerformanceEntity> result) {
//
// if (result != null && result.size() > 0) {
// uiList.get(0).setValue(result.get(0).getAge());
// uiList.get(0).setName(result.get(0).getAge());
// uiList.get(1).setValue(result.get(0).getMeasureDate());
// uiList.get(1).setName(result.get(0).getMeasureDate());
// uiList.get(2).setValue(result.get(0).getHeight());
// uiList.get(2).setName(result.get(0).getHeight());
// uiList.get(3).setValue(result.get(0).getLength());
// uiList.get(3).setName(result.get(0).getLength());
// uiList.get(4).setValue(result.get(0).getBust());
// uiList.get(4).setName(result.get(0).getBust());
// uiList.get(5).setValue(result.get(0).getChestWidth());
// uiList.get(5).setName(result.get(0).getChestWidth());
// uiList.get(6).setValue(result.get(0).getChestDeep());
// uiList.get(6).setName(result.get(0).getChestDeep());
// uiList.get(7).setValue(result.get(0).getWaistWidth());
// uiList.get(7).setName(result.get(0).getWaistWidth());
// uiList.get(8).setValue(result.get(0).getCrossWidth());
// uiList.get(8).setName(result.get(0).getCrossWidth());
// uiList.get(9).setValue(result.get(0).getGuanWei());
// uiList.get(9).setName(result.get(0).getGuanWei());
// uiList.get(10).setValue(result.get(0).getHairLength());
// uiList.get(10).setName(result.get(0).getHairLength());
// uiList.get(11).setValue(result.get(0).getEyeMuscleArea());
// uiList.get(11).setName(result.get(0).getEyeMuscleArea());
// uiList.get(12).setValue(result.get(0).getBreedRes());
// uiList.get(12).setName(result.get(0).getBreedRes());
// onNotifyAllEvent.setValue(false);
// } else {
// onNotifyAllEvent.setValue(true);
// }
//
// Configs.tempTag = "";
// }
//
// @Override
// public void onFailed() {
// Configs.tempTag = "";
// ToastUtils.showShort("体征测定数据库查询失败");
// }
// }).queryAsyncAll(PerformanceEntity.class, builder);
}
/**
......@@ -499,8 +498,8 @@ public class CollectVM extends BaseViewModel<Repository> {
List<PerformanceEntity> uploadData = new ArrayList<>();
PerformanceEntity _entity = new PerformanceEntity();
_entity.setUnid(Long.parseLong(tag.get()));
_entity.setRegistrationNo(tag.get());
// _entity.setUnid(Long.parseLong(tag.get()));
// _entity.setRegistrationNo(tag.get());
_entity.setWeight(weight.get());
_entity.setAge(uiList.get(0).getValue());
_entity.setMeasureDate(uiList.get(1).getValue());
......
......@@ -9,19 +9,31 @@ 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.interf.DbIDUCallBack;
import com.phlx.anchorcollect.entity.GenTableColumn;
import com.phlx.anchorcollect.entity.PerformanceEntity;
import com.phlx.anchorcollect.ui.fragment.list.CollectGridItem;
import com.phlx.anchorcollect.util.EntityUtils;
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;
......@@ -48,9 +60,18 @@ public class PerformanceVM extends BaseViewModel<Repository> {
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;
private SimpleDateFormat dateFormat;
private List<PerformanceEntity> uploadData;
public PerformanceVM(@NonNull Application application, Repository model) {
super(application, model);
}
......@@ -63,7 +84,7 @@ public class PerformanceVM extends BaseViewModel<Repository> {
imgFile = new File(imgUrl);
for (GenTableColumn gtc : Configs.performance) {
CollectGridItem cgi = new CollectGridItem(this, gtc, Configs.BASE_ARCHIVES);
CollectGridItem cgi = new CollectGridItem(this, gtc, Configs.SIGN_MEASURE);
observableList.add(cgi);
}
......@@ -75,14 +96,14 @@ public class PerformanceVM extends BaseViewModel<Repository> {
remarkParamEntity.setHtmlType("input");
remarkParamEntity.setJavaType("String");
uuid = IdUtil.createSnowflake(3, 1).nextId();
}
public void initData(String tag) {
imgUrl = Environment.getExternalStorageDirectory().getAbsolutePath() +
"/collect/picture/"
+ "anchorCiq" + tag + ".jpg";
imgFile = new File(imgUrl);
uuid = IdUtil.createSnowflake(3, 1).nextId();
queryPerformance(tag);
}
......@@ -123,5 +144,62 @@ public class PerformanceVM extends BaseViewModel<Repository> {
}
public BindingCommand onSaveClick = new BindingCommand(new BindingAction() {
@Override
public void call() {
savePerformance();
}
});
private void savePerformance() {
JsonObject jsonObject = new JsonObject();
for (GenTableColumn gtc : Configs.performance) {
jsonObject.addProperty(gtc.getJavaField(), gtc.getContent());
}
Gson gson = new Gson();
PerformanceEntity performanceEntity = gson.fromJson(jsonObject, PerformanceEntity.class);
performanceEntity.setUnid(uuid + "");
performanceEntity.setUploadStatus("0");
performanceEntity.setDeptId(SPUtils.getInstance().getString(Configs.SP_DEPT_ID));
performanceEntity.setCreateBy(SPUtils.getInstance().getString(Configs.SP_LOGIN_NAME));
dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
performanceEntity.setCreateTime(dateFormat.format(new Date()));
uploadData = new ArrayList<>();
uploadData.add(performanceEntity);
DbUtil.getInstance().setDbIDUCallBack(new DbIDUCallBack() {
@Override
public void onNotification(boolean result) {
dismissDialog();
if (result) {
clearParamList();
onShowDialogEvent.setValue("保存性能测定成功!");
} else {
ToastUtils.showShort("保存性能测定失败");
}
}
}).insertAsyncBatch(PerformanceEntity.class, uploadData);
}
//清空数据源
public void clearParamList() {
//备注清除数据
remarkParamEntity.setContent("");
remarkParamEntity.setShowName("");
currentParamEntity = new GenTableColumn();
uuid = IdUtil.createSnowflake(3, 1).nextId();
for (GenTableColumn gtc : Configs.cattleresume) {
gtc.setShowName("");
gtc.setContent("");
}
}
}
......@@ -228,43 +228,57 @@ public class LoginVM extends BaseViewModel<Repository> {
case "cattleresume":
QueryBuilder<GenTableColumn> builderDetaile0 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()));
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.cattleresume = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile0);
break;
case "performance":
QueryBuilder<GenTableColumn> builderDetaile1 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()));
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.performance = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile1);
break;
case "weightMan":
QueryBuilder<GenTableColumn> builderDetaile2 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()));
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.weightMan = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile2);
break;
case "medicalrecords":
QueryBuilder<GenTableColumn> builderDetaile3 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()));
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.medicalrecords = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile3);
break;
case "immunebatch":
QueryBuilder<GenTableColumn> builderDetaile4 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()));
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.immunebatch = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile4);
break;
case "cattlematingMaster":
QueryBuilder<GenTableColumn> builderDetaile5 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()));
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.cattlematingMaster = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile5);
break;
case "cattlematingDetaill":
QueryBuilder<GenTableColumn> builderDetaile6 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()));
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.cattlematingDetaill = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile6);
break;
}
......
package com.phlx.anchorcollect.ui.main;
import android.os.Bundle;
import android.view.KeyEvent;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
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.ActivityMainBinding;
import com.phlx.anchorcollect.rfid.ModuleManager;
import com.phlx.anchorcollect.ui.base.BaseActivity;
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.PerformanceFragment;
......@@ -25,8 +31,8 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainVM> {
private BasicsCollectFragment _basicsCollectFragment;
private PerformanceFragment _performanceFragment;
private BreedingRecordFragment _breedingRecordFragment;
private CollectListFragment _collectListFragment;
@Override
public int initContentView(Bundle savedInstanceState) {
......@@ -81,10 +87,12 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainVM> {
transaction = getSupportFragmentManager().beginTransaction();
_basicsCollectFragment = BasicsCollectFragment.newInstance();
_collectListFragment = CollectListFragment.newInstance(collectType);
_basicsCollectFragment = BasicsCollectFragment.getInstance();
_performanceFragment = PerformanceFragment.getInstance();
_breedingRecordFragment = BreedingRecordFragment.getInstance();
transaction.add(R.id.frameLayout, _basicsCollectFragment);
transaction.add(R.id.frameLayout, _collectListFragment);
transaction.add(R.id.frameLayout, _performanceFragment);
transaction.add(R.id.frameLayout, _breedingRecordFragment);
transaction.commit();
labelSwitching(0);
}
......@@ -93,23 +101,79 @@ public class MainActivity extends BaseActivity<ActivityMainBinding, MainVM> {
transaction = getSupportFragmentManager().beginTransaction();
transaction.hide(_basicsCollectFragment);
transaction.hide(_collectListFragment);
transaction.hide(_performanceFragment);
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.tvTab5.setTextColor(getResources().getColor(R.color.color_font_non_focus));
switch (position) {
case 0:
transaction.show(_basicsCollectFragment);
binding.tvTab0.setTextColor(getResources().getColor(R.color.colorPrimary));
break;
case 1:
transaction.show(_collectListFragment);
transaction.show(_performanceFragment);
binding.tvTab1.setTextColor(getResources().getColor(R.color.colorPrimary));
break;
case 2:
// transaction.show(_performanceFragment);
// binding.tvTab1.setTextColor(getResources().getColor(R.color.colorPrimary));
break;
case 3:
// transaction.show(_performanceFragment);
// binding.tvTab1.setTextColor(getResources().getColor(R.color.colorPrimary));
break;
case 4:
// transaction.show(_performanceFragment);
// binding.tvTab1.setTextColor(getResources().getColor(R.color.colorPrimary));
break;
case 5:
transaction.show(_breedingRecordFragment);
binding.tvTab5.setTextColor(getResources().getColor(R.color.colorPrimary));
break;
}
transaction.commit();
}
/**
* 监听Back键按下事件
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// MessageDialog.show("系统提示", "是否退出程序?", "确定", "取消")
// .setOkButton(new OnDialogButtonClickListener<MessageDialog>() {
// @Override
// public boolean onClick(MessageDialog baseDialog, View v) {
// ModuleManager.destroyLibSO();
// finish();
// android.os.Process.killProcess(android.os.Process.myPid());
// return false;
// }
// })
// .setCancelButton(new OnDialogButtonClickListener<MessageDialog>() {
// @Override
// public boolean onClick(MessageDialog baseDialog, View v) {
// return false;
// }
// })
// ;
new MaterialDialog.Builder(this).title("系统提示").content("是否退出程序?").positiveText("确定").negativeText("取消").onAny(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
if (which == DialogAction.POSITIVE) {
ModuleManager.destroyLibSO();
finish();
android.os.Process.killProcess(android.os.Process.myPid());
}
}
}).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
......@@ -27,6 +27,8 @@ 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;
public class MainVM extends MainBarVM<Repository> {
......@@ -65,6 +67,10 @@ public class MainVM extends MainBarVM<Repository> {
public BindingCommand OnSignMeasureClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
if(StringUtils.isEmpty(Configs.tempUnid)){
ToastUtils.showShort("请先扫描耳标");
return;
}
onTabClickEvent.setValue(1);
}
});
......@@ -73,6 +79,10 @@ public class MainVM extends MainBarVM<Repository> {
public BindingCommand OnWeightingManageClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
if(StringUtils.isEmpty(Configs.tempUnid)){
ToastUtils.showShort("请先扫描耳标");
return;
}
onTabClickEvent.setValue(2);
}
});
......@@ -81,6 +91,10 @@ public class MainVM extends MainBarVM<Repository> {
public BindingCommand OnTreatmentRecordClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
if(StringUtils.isEmpty(Configs.tempUnid)){
ToastUtils.showShort("请先扫描耳标");
return;
}
onTabClickEvent.setValue(3);
}
});
......@@ -89,6 +103,10 @@ public class MainVM extends MainBarVM<Repository> {
public BindingCommand OnImmunRecordClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
if(StringUtils.isEmpty(Configs.tempUnid)){
ToastUtils.showShort("请先扫描耳标");
return;
}
onTabClickEvent.setValue(4);
}
});
......@@ -97,6 +115,10 @@ public class MainVM extends MainBarVM<Repository> {
public BindingCommand OnBreedingRecordClickCommand = new BindingCommand(new BindingAction() {
@Override
public void call() {
if(StringUtils.isEmpty(Configs.tempUnid)){
ToastUtils.showShort("请先扫描耳标");
return;
}
onTabClickEvent.setValue(5);
}
});
......
......@@ -162,49 +162,56 @@ public class SplashVM extends MainBarVM<Repository> {
case "cattleresume":
QueryBuilder<GenTableColumn> builderDetaile0 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()))
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.cattleresume = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile0);
break;
case "performance":
QueryBuilder<GenTableColumn> builderDetaile1 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()))
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.performance = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile1);
break;
case "weightMan":
QueryBuilder<GenTableColumn> builderDetaile2 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()))
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.weightMan = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile2);
break;
case "medicalrecords":
QueryBuilder<GenTableColumn> builderDetaile3 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()))
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.medicalrecords = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile3);
break;
case "immunebatch":
QueryBuilder<GenTableColumn> builderDetaile4 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()))
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.immunebatch = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile4);
break;
case "cattlematingMaster":
QueryBuilder<GenTableColumn> builderDetaile5 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()))
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.cattlematingMaster = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile5);
break;
case "cattlematingDetaill":
QueryBuilder<GenTableColumn> builderDetaile6 =
DbUtil.getInstance().getQueryBuilder(GenTableColumn.class)
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId()))
.where(GenTableColumnDao.Properties.TableId.eq(gt.getTableId())
, GenTableColumnDao.Properties.IsQuery.eq("1"))
.orderDesc(GenTableColumnDao.Properties.Sort);
Configs.cattlematingDetaill = DbUtil.getInstance().queryAll(GenTableColumn.class, builderDetaile6);
break;
......
package com.phlx.anchorcollect.util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
public static String getYear(){
String year = "";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
year = simpleDateFormat.format(new Date());
return year;
}
}
......@@ -48,15 +48,12 @@ public class EntityUtils {
return value;
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return null;
......
package com.phlx.anchorcollect.util;
import android.widget.TextView;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
......@@ -39,7 +41,7 @@ public class StringUtil {
BigDecimal divide = new BigDecimal(32);
BigDecimal decimal = new BigDecimal(i);
String res = "";
while (BigDecimal.ZERO.compareTo(decimal) != 0){
while (BigDecimal.ZERO.compareTo(decimal) != 0) {
BigDecimal[] divRes = decimal.divideAndRemainder(divide);
decimal = divRes[0];
res = s36bit_const.charAt(divRes[1].intValue()) + res;
......@@ -54,25 +56,20 @@ public class StringUtil {
* @param hexString 16进制格式的字符串
* @return 转换后的字节数组
**/
public static byte[] stringToByte(String hexString)
{
public static byte[] stringToByte(String hexString) {
hexString = hexString.toLowerCase();
int length = hexString.length();
if (length % 2 != 0)
{
if (length % 2 != 0) {
length = length + 1;
}
final byte[] byteArray = new byte[length / 2];
int k = 0;
for (int i = 0; i < byteArray.length; i++)
{// 因为是16进制,最多只会占用4位,转换成字节需要两个16进制的字符,高位在先
for (int i = 0; i < byteArray.length; i++) {// 因为是16进制,最多只会占用4位,转换成字节需要两个16进制的字符,高位在先
byte low;
byte high = (byte) (Character.digit(hexString.charAt(k), 16) & 0xff);
if ((k + 1) == hexString.length())
{
if ((k + 1) == hexString.length()) {
low = 0;
} else
{
} else {
low = (byte) (Character.digit(hexString.charAt(k + 1), 16) & 0xff);
}
byteArray[i] = (byte) (high << 4 | low);
......@@ -81,11 +78,38 @@ public class StringUtil {
return byteArray;
}
public static List<String> strToList(String[] strings){
public static List<String> strToList(String[] strings) {
List<String> stringArrayList = new ArrayList<>();
for (String str:strings) {
for (String str : strings) {
stringArrayList.add(str);
}
return stringArrayList;
}
public static String[] listToStr(List<String> list) {
if (list == null) return null;
String[] strings = new String[list.size()];
int i = 0;
for (String str : list) {
strings[i] = str;
i++;
}
return strings;
}
public static float[] getFloats(int count) {
float[] floats = new float[count];
for(int i =0;i<count; i++){
floats[i] = 1.0f;
}
return floats;
}
public static Class[] getClasses(int count) {
Class[] textViews = new Class[count];
for(int i =0;i<count; i++){
textViews[i] = TextView.class;
}
return textViews;
}
}
......@@ -258,7 +258,7 @@
android:text="@string/breeding_record"
binding:layout_constraintTop_toBottomOf="@+id/btn_immun_record_sync"
binding:layout_constraintLeft_toLeftOf="@+id/btn_base_archives_sync"
binding:layout_constraintBottom_toBottomOf="parent"
binding:layout_constraintBottom_toTopOf="@+id/btn_breeding_record_detail_sync"
binding:onClickCommand="@{viewModel.OnBreedingRecordSyncClickCommand}"
/>
......@@ -283,6 +283,40 @@
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: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.BreedingRecordVM" />
<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">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
binding:layout_constraintTop_toTopOf="parent"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintBottom_toTopOf="@+id/card_99"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_bg"
>
<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="wrap_content"
android:layout_marginLeft="-5dp"
android:layout_marginTop="5dp"
android:nestedScrollingEnabled="false"
binding:adapter="@{adapter}"
binding:itemBinding="@{viewModel.itemBinding}"
binding:items="@{viewModel.observableList}"
binding:layoutManager="@{LayoutManagers.grid(5)}"
binding:layout_constraintBottom_toTopOf="@+id/ll_detail_title"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toBottomOf="@+id/tv_rfid_text" />
<com.lingber.mycontrol.datagridview.DataGridView
android:id="@+id/ll_detail_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:dividerSize="1"
app:row_height="50"
app:show_header="true"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toBottomOf="@+id/rv_collect">
</com.lingber.mycontrol.datagridview.DataGridView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_collect_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="-5dp"
android:layout_marginTop="5dp"
android:nestedScrollingEnabled="false"
binding:adapter="@{adapter}"
binding:itemBinding="@{viewModel.itemBinding}"
binding:items="@{viewModel.detailObservableList}"
binding:layoutManager="@{LayoutManagers.grid(5)}"
binding:layout_constraintBottom_toBottomOf="parent"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toRightOf="parent"
binding:layout_constraintTop_toBottomOf="@+id/ll_detail_title" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
<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_constraintBottom_toBottomOf="parent"
binding:layout_constraintLeft_toLeftOf="parent"
binding:layout_constraintRight_toLeftOf="@+id/card_save">
<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
......@@ -49,6 +49,7 @@
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}"
......@@ -106,7 +107,9 @@
android:gravity="center"
android:text="保存"
android:textColor="@color/white"
android:textSize="@dimen/sp_12" />
android:textSize="@dimen/sp_12"
binding:onClickCommand="@{viewModel.onSaveClick}"
/>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
......@@ -27,6 +27,18 @@
android:singleLine="true"
android:maxLines="1"
android:textColor="@color/color_font_null"
android:visibility="@{viewModel.titleGrayColor}"
android:textSize="@dimen/sp_8" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{viewModel.entity.columnComment}"
android:singleLine="true"
android:maxLines="1"
android:textColor="@color/colorPrimary"
android:visibility="@{viewModel.titleBlueColor}"
android:textSize="@dimen/sp_8" />
<androidx.appcompat.widget.AppCompatTextView
......
......@@ -23,6 +23,7 @@
<string name="treatment_record">诊疗记录</string>
<string name="immun_record">免疫记录</string>
<string name="breeding_record">配种记录</string>
<string name="breeding_record_detail">配种详情</string>
......
apply plugin: 'com.android.library'
group='com.github.Lingber'
android {
compileSdkVersion 29
buildToolsVersion '29.0.3'
defaultConfig {
minSdkVersion 16
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled=true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:design:25.+'
compile 'com.android.support:appcompat-v7:25.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
}
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in D:\android\SDK/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
package com.lingber.mycontrol;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumentation test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.lingber.mycontrol.test", appContext.getPackageName());
}
}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lingber.mycontrol">
<application android:allowBackup="true" android:label="@string/app_name"
android:supportsRtl="true">
</application>
</manifest>
package com.lingber.mycontrol.datagridview;
import java.lang.reflect.Field;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* @Author :ShuboLin
* @CreatTime: 2020-06-02 15:21.
* @Description: 工具类
*/
public class LingberUtil<T> {
/**根据字段名称获取字段值**/
public static String getFieldValueByName(String name, Object object){
if (object == null||name == null){
return null;
}
Field[] fields = object.getClass().getDeclaredFields();
String[] types1={"int","java.lang.String","boolean","char","float","double","long","short","byte"};
String[] types2={"java.lang.Integer","java.lang.String","java.lang.Boolean","java.lang.Character","java.lang.Float","java.lang.Double","java.lang.Long","java.lang.Short","java.lang.Byte"};
for (int j = 0; j < fields.length; j++) {
fields[j].setAccessible(true);
// 字段名
if(fields[j].getName().equals(name)){
// 字段值
for(int i=0;i<types1.length;i++){
if(fields[j].getType().getName().equalsIgnoreCase(types1[i])|| fields[j].getType().getName().equalsIgnoreCase(types2[i])){
try {
if(fields[j].get(object)!=null){
return fields[j].get(object)+"";
}else{
return null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
return null;
}
/**
* @author ShuboLin
* @CreatTime 2020-06-02 17:52
* @Param1 数据源
* @Param2 排第几个
* @Param3 排序方法
* @Description 排序数组
*/
public static void arrSort(List<String[]> list, final int sortIndex, final String sortType){
Collections.sort(list, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
int ret = 0;
if((o1.length==o2.length)&&sortIndex<=o1.length){
if(o1[sortIndex]!=null&&o2[sortIndex]!=null){
if(sortType!=null&&"asce".equals(sortType)){
// 升序
ret = o1[sortIndex].compareTo(o2[sortIndex]);
}else{
// 降序
ret = o2[sortIndex].compareTo(o1[sortIndex]);
}
}
}
return ret;
}
});
}
/**
* @author ShuboLin
* @CreatTime 2020-06-02 17:52
* @Param1 数据源
* @Param2 字段名
* @Param3 排序方法
* @Description 排序对象
*/
public static void objectSort(List<Object> list, final String fieldName, final String sortType){
Collections.sort(list, new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
int ret = 0;
if(sortType!=null&&fieldName!=null&&"asce".equals(sortType)){
// 升序
ret = getFieldValueByName(fieldName, o1).compareTo(LingberUtil.getFieldValueByName(fieldName, o2));
}else{
// 降序
ret = getFieldValueByName(fieldName, o2).compareTo(LingberUtil.getFieldValueByName(fieldName, o1));
}
return ret;
}
});
}
}
package com.lingber.mycontrol.datagridview.i18n;
import androidx.annotation.ArrayRes;
import androidx.annotation.StringRes;
/**
* @Author: huangtao
* @Date: 2019-07-17 19:23
* @Description: 多语言切换接口
*/
public interface ILanguageView {
String ANDROIDXML = "http://schemas.android.com/apk/res/android";
//由于setText无法被重写,需要添加以下三个必要的方法,如果你的app不需要对多语言的textview修改值(只是xml写死就够了),那就不需要实现他们
void setTextById(@StringRes int id);//手动设置textId
void setTextWithString(String text);//手动去掉textId,不然重新加载语言的时候会被重置掉
void setTextByArrayAndIndex(@ArrayRes int arrId, @StringRes int arrIndex);//手动通过TextArray设置语言
void reLoadLanguage();//修改语言时主要调用的方法
}
package com.lingber.mycontrol.datagridview.i18n.Util;
public class StringUtil {
public static int string2int(String str) {
return string2int(str, 0);
}
public static int string2int(String str, int def) {
try {
return Integer.valueOf(str);
} catch (Exception e) {
}
return def;
}
public static Double string2Double(String str){
try {
return Double.parseDouble(str);
}catch (Exception e) {
}
return 0D;
}
public static void main(String[] args) {
System.out.println(string2Double("66.546512"));
}
}
package com.lingber.mycontrol.datagridview.i18n.Util;
import android.view.View;
import android.view.ViewGroup;
import com.lingber.mycontrol.datagridview.i18n.ILanguageView;
public class ViewUtil {
public static void updateViewLanguage(View view) {
if (view instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) view;
int count = vg.getChildCount();
for (int i = 0; i < count; i++) {
updateViewLanguage(vg.getChildAt(i));
}
} else if (view instanceof ILanguageView) {
ILanguageView tv = (ILanguageView) view;
tv.reLoadLanguage();
}
}
}
<vector android:height="50dp" android:viewportHeight="1024.0"
android:viewportWidth="1024.0" android:width="50dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#2c2c2c" android:pathData="M622.7,284.9 L447.7,284.9 447.7,142.8 64,334.7l383.8,191.9L447.7,384.8l189.4,0c149.9,0 224.9,62.8 224.9,188.4 0,129.9 -77.4,194.9 -232.3,194.9L188,768.1l0,99.9L634.1,868c211.2,0 316.8,-95.1 316.8,-285.3C950.9,384.2 841.5,284.9 622.7,284.9z"/>
</vector>
<vector android:height="50dp" android:viewportHeight="1024.0"
android:viewportWidth="1024.0" android:width="50dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillAlpha=".01" android:fillColor="#2c2c2c" android:pathData="M0,0h1024v1024H0z"/>
<path android:fillColor="#2c2c2c" android:pathData="M418.7,648.8l441.1,-431a36.6,36.6 0,0 1,51.6 0.5l41.3,41.9a36.6,36.6 0,0 1,-0.6 51.9l-486.6,473.6a66.5,66.5 0,0 1,-46.7 18.9,66.5 66.5,0 0,1 -46.6,-18.9L71.2,490.1a36.6,36.6 0,0 1,1.4 -53.4l42.4,-37.6a36.6,36.6 0,0 1,49.8 1.2L418.7,648.8z"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<stroke android:width="2dp" android:color="@color/colorGray" />
<padding android:bottom="2dp" android:left="2dp" android:right="2dp" android:top="2dp" />
<corners android:topLeftRadius="14px"
android:topRightRadius="14px"
android:bottomRightRadius="14px"
android:bottomLeftRadius="14px"/>
</shape>
</item>
</selector>
\ No newline at end of file
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/lingber_ic_checkbox_selected"
android:state_checked="true"/>
<item
android:drawable="@drawable/lingber_ic_checkbox_unselected"
android:state_checked="false"/>
<item
android:drawable="@drawable/lingber_ic_checkbox_unselected"/>
</selector>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<vector android:height="24dp" android:viewportHeight="1024.0"
android:viewportWidth="1024.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M246.8,336.5h530.4a14.6,14.6 0,0 1,12.2 22.7l-265.3,397.9a14.6,14.6 0,0 1,-24.3 0L234.6,359.1a14.6,14.6 0,0 1,12.2 -22.7z"/>
</vector>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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