fix: 批量提交功能初始化

This commit is contained in:
XiaoYan 2021-07-27 10:03:56 +08:00
parent eeee746a22
commit ba6364d55b
2 changed files with 119 additions and 44 deletions

View File

@ -1278,6 +1278,9 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View.
if (responseBodyStr!=null) { if (responseBodyStr!=null) {
Gson gson = new Gson(); Gson gson = new Gson();
ChargingPileSaveBean chargingPileSaveBean = gson.fromJson(responseBodyStr, ChargingPileSaveBean.class); ChargingPileSaveBean chargingPileSaveBean = gson.fromJson(responseBodyStr, ChargingPileSaveBean.class);
if (chargingPileSaveBean.getCode()!=200) {
return;
}
chargingPileEntity.setBodyId(chargingPileSaveBean.getBody()); chargingPileEntity.setBodyId(chargingPileSaveBean.getBody());
InsertAndUpdateUtils.getInstance().insertOrUpdateChargingPile(getActivity(), chargingPileEntity); // 更新当前充电桩的bodyId InsertAndUpdateUtils.getInstance().insertOrUpdateChargingPile(getActivity(), chargingPileEntity); // 更新当前充电桩的bodyId
} }

View File

@ -36,6 +36,7 @@ import java.util.List;
* */ * */
public class PoiSaveUtils { public class PoiSaveUtils {
private Activity mContext; private Activity mContext;
private Gson gson;
private static PoiSaveUtils instance; private static PoiSaveUtils instance;
public static PoiSaveUtils getInstance(Activity mContext) { public static PoiSaveUtils getInstance(Activity mContext) {
@ -47,35 +48,64 @@ public class PoiSaveUtils {
private PoiSaveUtils(Activity mContext) { private PoiSaveUtils(Activity mContext) {
this.mContext = mContext; this.mContext = mContext;
this.gson = new Gson();
} }
/** /**
* 保存数据到本地保存后taskStatus为2 * 批量上传数据到服务端
* */ * */
public void savePoiLocal(PoiEntity poiEntity) { public void uploadPoiEntityBatch(List<PoiEntity> poiEntityList) {
if (poiEntity!=null) { if (poiEntityList==null||poiEntityList.isEmpty()) {
XXPermissions.with(mContext) return;
//读写权限
.permission(Permission.MANAGE_EXTERNAL_STORAGE)
.request(new OnPermissionCallback() {
@Override
public void onGranted(List<String> permissions, boolean all) {
poiEntity.setTaskStatus(2);
InsertAndUpdateUtils.getInstance().insertOrUpdate(mContext, poiEntity);
}
@Override
public void onDenied(List<String> permissions, boolean never) {
}
});
} }
new Thread(new Runnable() {
@Override
public void run() {
for (PoiEntity poiEntity: poiEntityList) {
if (poiEntity.getType() == 2) { // 如果是充电站数据首先检查子充电桩的状态
if (saveChargingPileByChargingStation(poiEntity)) {
if (savePoiNet(poiEntity) == 200) { // 网络保存成功
// 开始上传流程
}
}
} else {
if (savePoiNet(poiEntity) == 200) { // 网络保存成功
}
}
}
}
}).start();
} }
// /**
// * 保存数据到本地保存后taskStatus为2
// * */
// public void savePoiLocal(PoiEntity poiEntity) {
// if (poiEntity!=null) {
// XXPermissions.with(mContext)
// //读写权限
// .permission(Permission.MANAGE_EXTERNAL_STORAGE)
// .request(new OnPermissionCallback() {
// @Override
// public void onGranted(List<String> permissions, boolean all) {
// poiEntity.setTaskStatus(2);
// InsertAndUpdateUtils.getInstance().insertOrUpdate(mContext, poiEntity);
// }
//
// @Override
// public void onDenied(List<String> permissions, boolean never) {
//
// }
// });
// }
// }
/** /**
* 保存数据到服务 * 保存数据到服务
* */ * */
public void savePoiNet(PoiEntity poiEntity) { public int savePoiNet(PoiEntity poiEntity) {
HttpParams httpParams = new HttpParams(); HttpParams httpParams = new HttpParams();
httpParams.put("taskId", poiEntity.getTaskId()); httpParams.put("taskId", poiEntity.getTaskId());
httpParams.put("name", poiEntity.getName()); httpParams.put("name", poiEntity.getName());
@ -83,32 +113,56 @@ public class PoiSaveUtils {
httpParams.put("existence", poiEntity.getExistence()); httpParams.put("existence", poiEntity.getExistence());
httpParams.put("geo", poiEntity.getGeoWkt()); httpParams.put("geo", poiEntity.getGeoWkt());
httpParams.put("memo", poiEntity.getMemo()); httpParams.put("memo", poiEntity.getMemo());
OkGoBuilder.getInstance()
.Builder(mContext)
.url(HttpInterface.SUBMIT_POI_TASK)
.method(OkGoBuilder.GET)
.cls(PoiSaveBean.class)
.params(httpParams)
.callback(new Callback<PoiSaveBean>() {
@Override
public void onSuccess(PoiSaveBean poiSaveBean, int id) {
Integer body = poiSaveBean.getBody();
poiEntity.setBodyId(body);
poiEntity.setTaskStatus(3);
InsertAndUpdateUtils.getInstance().insertOrUpdate(mContext, poiEntity);
Toast.makeText(mContext, "保存成功", Toast.LENGTH_SHORT).show();
}
@Override try {
public void onError(Throwable e, int id) { okhttp3.Response execute = OkGo.<String>get(HttpInterface.SUBMIT_POI_TASK)
Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_SHORT).show(); .tag(PoiSaveUtils.this)
Log.d("TAG", "onError: " + e.getMessage()); .params(httpParams)
} .execute();
}).build(); if (execute.code()!=200) {
return execute.code();
}
String bodyStr = execute.body().string();
if (bodyStr == null) {
return -1;
}
PoiSaveBean poiSaveBean = gson.fromJson(bodyStr, PoiSaveBean.class);
if (poiSaveBean.getCode() == 200) {
poiEntity.setTaskStatus(3);
} else {
return poiSaveBean.getCode();
}
InsertAndUpdateUtils.getInstance().insertOrUpdate(mContext, poiEntity);
} catch (IOException e) {
e.printStackTrace();
}
return 200;
// OkGoBuilder.getInstance()
// .Builder(mContext)
// .url(HttpInterface.SUBMIT_POI_TASK)
// .method(OkGoBuilder.GET)
// .cls(PoiSaveBean.class)
// .params(httpParams)
// .callback(new Callback<PoiSaveBean>() {
// @Override
// public void onSuccess(PoiSaveBean poiSaveBean, int id) {
// Integer body = poiSaveBean.getBody();
// poiEntity.setBodyId(body);
// poiEntity.setTaskStatus(3);
// InsertAndUpdateUtils.getInstance().insertOrUpdate(mContext, poiEntity);
// Toast.makeText(mContext, "保存成功", Toast.LENGTH_SHORT).show();
// }
//
// @Override
// public void onError(Throwable e, int id) {
// Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_SHORT).show();
// Log.d("TAG", "onError: " + e.getMessage());
// }
// }).build();
} }
/** /**
* 最终上传数据到服务 * 最终上传POI数据到服务
* */ * */
public void uploadPoiNet(PoiEntity poiEntity, ArrayList<File> poiPicList) { public void uploadPoiNet(PoiEntity poiEntity, ArrayList<File> poiPicList) {
if (poiEntity == null) { if (poiEntity == null) {
@ -148,23 +202,31 @@ public class PoiSaveUtils {
/** /**
* 根据充电站数据检查充电桩数据如果没有网络保存则批量网络保存 * 根据充电站数据检查充电桩数据如果没有网络保存则批量网络保存
* */ * */
private void saveChargingPileByChargingStation(PoiEntity chargingStationPoiEntity) { private boolean saveChargingPileByChargingStation(PoiEntity chargingStationPoiEntity) {
boolean result = true;
if (chargingStationPoiEntity != null) { if (chargingStationPoiEntity != null) {
List<ChargingPileEntity> chargingPileEntityList = PoiDatabase.getInstance(mContext).getChargingPileDao().getChargingPileByStationId(chargingStationPoiEntity.getId()); List<ChargingPileEntity> chargingPileEntityList = PoiDatabase.getInstance(mContext).getChargingPileDao().getChargingPileByStationId(chargingStationPoiEntity.getId());
if (chargingPileEntityList!=null&&!chargingPileEntityList.isEmpty()) { if (chargingPileEntityList!=null&&!chargingPileEntityList.isEmpty()) {
// 依次上传充电桩数据如果有一条数据未上传成功则返回false
for (ChargingPileEntity pileEntity: chargingPileEntityList) { for (ChargingPileEntity pileEntity: chargingPileEntityList) {
if (pileEntity.getBodyId()==0) { if (pileEntity.getBodyId()==0) {
saveChargingPileByWork(pileEntity); int saveResult = saveChargingPile2NetWork(pileEntity);
if (saveResult == 200){
result = result&true;
} else {
result = result&false;
}
} }
} }
} }
} }
return result;
} }
/** /**
* 上传充电桩数据到服务端 * 上传充电桩数据到服务端
* */ * */
private void saveChargingPileByWork(ChargingPileEntity chargingPileEntity) { private int saveChargingPile2NetWork(ChargingPileEntity chargingPileEntity) {
HttpParams httpParams = new HttpParams(); HttpParams httpParams = new HttpParams();
httpParams.put("taskId", chargingPileEntity.getTaskId()); httpParams.put("taskId", chargingPileEntity.getTaskId());
httpParams.put("name", chargingPileEntity.getName()); httpParams.put("name", chargingPileEntity.getName());
@ -183,15 +245,25 @@ public class PoiSaveUtils {
.params(httpParams) .params(httpParams)
.tag(PoiSaveUtils.this) .tag(PoiSaveUtils.this)
.execute(); .execute();
if (execute.code()!=200) {
return execute.code();
}
String responseBodyStr = execute.body().string(); String responseBodyStr = execute.body().string();
if (responseBodyStr == null) {
return -1;
}
if (responseBodyStr!=null) { if (responseBodyStr!=null) {
Gson gson = new Gson(); Gson gson = new Gson();
ChargingPileSaveBean chargingPileSaveBean = gson.fromJson(responseBodyStr, ChargingPileSaveBean.class); ChargingPileSaveBean chargingPileSaveBean = gson.fromJson(responseBodyStr, ChargingPileSaveBean.class);
if (chargingPileSaveBean.getCode() != 200) {
return chargingPileSaveBean.getCode();
}
chargingPileEntity.setBodyId(chargingPileSaveBean.getBody()); chargingPileEntity.setBodyId(chargingPileSaveBean.getBody());
InsertAndUpdateUtils.getInstance().insertOrUpdateChargingPile(mContext, chargingPileEntity); // 更新当前充电桩的bodyId InsertAndUpdateUtils.getInstance().insertOrUpdateChargingPile(mContext, chargingPileEntity); // 更新当前充电桩的bodyId
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
return 200;
} }
} }