Commit dab26fa4 by Kim Jinsung

Task #47081【@Form】【IO帳票】(敷島製パン様)同期処理の強制化

parent a8f82182
...@@ -165,6 +165,17 @@ public abstract class ABVActivity extends Activity { ...@@ -165,6 +165,17 @@ public abstract class ABVActivity extends Activity {
} }
} }
/**
* 同期進捗のプログレスバーインジケーターが表示状態かをチェックする
* @return true:表示、false:非表示
*/
public boolean progressDialogHorizontalShowing() {
if (!isFinishing() && progressDialogHorizontal != null && !progressDialogHorizontal.isShowing()) {
return false;
}
return true;
}
public void showProgressPopup() { public void showProgressPopup() {
showProgressPopup(getResources().getString(R.string.progress)); showProgressPopup(getResources().getString(R.string.progress));
} }
......
...@@ -172,6 +172,7 @@ public class OperationListActivity extends OperationActivity { ...@@ -172,6 +172,7 @@ public class OperationListActivity extends OperationActivity {
private Uri mSelectPanoContentUri; private Uri mSelectPanoContentUri;
private final static int ABOOK_CHECK_OPERATION_PANO_CONTENT_IMAGE = 201; private final static int ABOOK_CHECK_OPERATION_PANO_CONTENT_IMAGE = 201;
private final static int DELAY_2SECONDS_OPERATION_MAX_COUNT = 10;
private Dialog mOperationSelectDialog; private Dialog mOperationSelectDialog;
private ListView mOperationSelectListView; private ListView mOperationSelectListView;
...@@ -199,6 +200,8 @@ public class OperationListActivity extends OperationActivity { ...@@ -199,6 +200,8 @@ public class OperationListActivity extends OperationActivity {
// 作業種別のサービスオプション値を保持用フラグ // 作業種別のサービスオプション値を保持用フラグ
private boolean mOperationGroupMasterServiceOperationFlg; private boolean mOperationGroupMasterServiceOperationFlg;
private boolean mAutoBatchSyncFlg;
// ビューの作成 // ビューの作成
private class ReloadHandler implements Runnable { private class ReloadHandler implements Runnable {
@Override @Override
...@@ -262,7 +265,7 @@ public class OperationListActivity extends OperationActivity { ...@@ -262,7 +265,7 @@ public class OperationListActivity extends OperationActivity {
mSelectedFixPuchMessagePosition = 0; mSelectedFixPuchMessagePosition = 0;
mSendType = 0; mSendType = 0;
mAutoBatchSyncFlg = false;
// 一括同期ボタン // 一括同期ボタン
mOperationBatchSyncButton.setOnClickListener(new View.OnClickListener() { mOperationBatchSyncButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
...@@ -449,6 +452,17 @@ public class OperationListActivity extends OperationActivity { ...@@ -449,6 +452,17 @@ public class OperationListActivity extends OperationActivity {
// ビューを作り直す // ビューを作り直す
setOperationListView(); setOperationListView();
} }
//「I/O 帳票使用」がYESのみ、新着更新処理完了後、一括同期処理を開始する。
if (ABVDataCache.getInstance().serviceOption.isUnableIOReport()) {
if (mAutoBatchSyncFlg) {
closeProgressPopup();
List<OperationDto> needSyncOperationList = mListHelper.getNeedSyncOperationList();
if (needSyncOperationList.size() != 0) {
categoryBatchSync(needSyncOperationList);
}
mAutoBatchSyncFlg = false;
}
}
} }
} }
}); });
...@@ -483,10 +497,46 @@ public class OperationListActivity extends OperationActivity { ...@@ -483,10 +497,46 @@ public class OperationListActivity extends OperationActivity {
if (operationDto != null && operationDto.needSyncFlg) { if (operationDto != null && operationDto.needSyncFlg) {
// 同期処理後、直列処理で新着更新を行う。 // 同期処理後、直列処理で新着更新を行う。
singleSyncOperation(operationId, operationDto.reportType); singleSyncOperation(operationId, operationDto.reportType);
//「I/O 帳票使用」がYESのみ、カテゴリ一括動機実施
if (ABVDataCache.getInstance().serviceOption.isUnableIOReport()) {
//同期中のインジケーター表示中には新着更新中のインジケーター表示できないので、チェックする。
while (progressDialogHorizontalShowing()) {
try {
Thread.sleep(100);
} catch (InterruptedException ie) {
Logger.e(TAG, "sleep error = " + ie.getLocalizedMessage());
}
}
//新着更新後、一括同期処理を行うため、インジケーター表示
handler.post(new Runnable() {
@Override
public void run() {
showProgressPopup(PatternStringUtil.patternToString(getApplicationContext(),
R.string.updating,
getUserPref(AppDefType.UserPrefKey.RESOURCE_PATTERN_TYPE, 0)));
}
});
mAutoBatchSyncFlg = true;
//表示作業数が10個以上の場合、2秒待機してから新着更新を行う。10個未満は1秒待機
List<OperationDto> operationList = mListHelper.getOperationList();
int delaySeconds = 1000;
if (operationList.size() >= DELAY_2SECONDS_OPERATION_MAX_COUNT) {
delaySeconds = 2000;
}
handler.postDelayed(new Runnable() {
@Override
public void run() {
dataRefresh(true);
}
}, delaySeconds);
}
} else { } else {
closeProgressPopup(); closeProgressPopup();
dataRefresh(true);
} }
dataRefresh(true);
} }
}); });
} }
...@@ -2119,7 +2169,8 @@ public class OperationListActivity extends OperationActivity { ...@@ -2119,7 +2169,8 @@ public class OperationListActivity extends OperationActivity {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); dialog.dismiss();
// 一括同期開始 // 一括同期開始
categoryBatchSync(); List<OperationDto> operationDtoList = mOperationDao.getNeedSyncOperationByGroupMasterId(getABVUIDataCache().getOperationGroupMasterId());
categoryBatchSync(operationDtoList);
} }
}); });
dialog.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { dialog.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
...@@ -2137,21 +2188,18 @@ public class OperationListActivity extends OperationActivity { ...@@ -2137,21 +2188,18 @@ public class OperationListActivity extends OperationActivity {
/** /**
* カテゴリの一括同期ボタン * カテゴリの一括同期ボタン
* @param operationDtoList 同期する作業情報配列
*/ */
public void categoryBatchSync() { public void categoryBatchSync(List<OperationDto> operationDtoList) {
Logger.i(TAG, "---batch sync start"); Logger.i(TAG, "---batch sync start");
// ネットワーク通信チェック // ネットワーク通信チェック
if (!ABVEnvironment.getInstance().networkAdapter.isNetworkConnected()) { if (!ABVEnvironment.getInstance().networkAdapter.isNetworkConnected()) {
showSimpleAlertDialog(getString(R.string.app_name), getString(R.string.request_network_connection)); showSimpleAlertDialog(getString(R.string.app_name), getString(R.string.request_network_connection));
return; return;
} }
// 作業種別に関連する作業リストを取得
List<OperationDto> operationList = mOperationDao.getNeedSyncOperationByGroupMasterId(getABVUIDataCache().getOperationGroupMasterId());
// 作業リストをスタックにセット // 作業リストをスタックにセット
Stack<OperationDto> operationDtoStack = new Stack<OperationDto>(); Stack<OperationDto> operationDtoStack = new Stack<OperationDto>();
operationDtoStack.addAll(operationList); operationDtoStack.addAll(operationDtoList);
// 一括同期を設定 // 一括同期を設定
batchSyncView = new ABVBatchSyncView(this); batchSyncView = new ABVBatchSyncView(this);
......
...@@ -266,6 +266,19 @@ public abstract class OperationListHelper { ...@@ -266,6 +266,19 @@ public abstract class OperationListHelper {
} }
/** /**
* 表示中の作業の中に同期が必要な作業のみ返す。
* @return 作業情報配列
*/
public List<OperationDto> getNeedSyncOperationList() {
List<OperationDto> needSyncOperationList = new ArrayList<>();
for (OperationDto operationDto : operationDtoList) {
if (operationDto.needSyncFlg) {
needSyncOperationList.add(operationDto);
}
}
return needSyncOperationList;
}
/**
* プロジェクトリスト取得 * プロジェクトリスト取得
* @return * @return
*/ */
......
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