package cn.com.basic.face.service; import android.graphics.Bitmap; import android.util.Base64; import org.xutils.http.RequestParams; import org.xutils.x; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; import cn.com.basic.face.base.BaseApplication; import cn.com.basic.face.discern.common.BaseCommonCallBack; import cn.com.basic.face.discern.common.CommonVariables; import cn.com.basic.face.discern.query.item.SurveillanceQueryItem; import cn.com.basic.face.fragment.RegisterFragment; import cn.com.basic.face.fragment.SurveillanceFragment; import cn.com.basic.face.util.AppApi; import cn.com.basic.face.util.Constant; public class SurveillanceMng { private static SurveillanceMng instance = new SurveillanceMng(); public static SurveillanceMng getInstance() { return instance; } public void findSurveillanceBottomList(final boolean isVisit) { if (!BaseApplication.deviceAvailable) { return; } RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.Query.SURVEILLANCE_QUERY); params.addBodyParameter(CommonVariables.Page.PAGE_NUM, "1"); params.addBodyParameter(CommonVariables.Page.PAGE_SIZE, "10"); x.http().post(params, new BaseCommonCallBack() { public void success() { List list = getList(SurveillanceQueryItem.class); if (isVisit) { int i = 0; for (SurveillanceQueryItem item : list) { if (i % 5 == 0) { item.setType(CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE); } else { item.setType(CommonVariables.Surveillance.VISIT_CHECK_IN_ITEM_TYPE); } i++; } List doubleList = new ArrayList(); fillBlank(list, doubleList); SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visit_list_view().show(doubleList, true); } else { SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_attendance_list_view().show(list, true); } } }); } public void addBitmap(final List bitmapList, byte[] byteArray, int len) { if (!BaseApplication.deviceAvailable) { return; } RequestParams params = new RequestParams(AppApi.BASE_URL +AppApi.SURVEILLANCE_UPLOAD); params.addBodyParameter("base64Photo", Base64.encodeToString(byteArray, 0, len, Base64.DEFAULT)); params.addBodyParameter("deviceCompanyId", BaseApplication.getInstance().getDevice().getDeviceCompanyId()); params.addBodyParameter("deviceId", BaseApplication.getInstance().getDevice().getDeviceId()); params.addBodyParameter("enterOrExit", CommonVariables.EnterOrExit.ENTER+""); x.http().post(params, new BaseCommonCallBack() { public void success() { SurveillanceQueryItem item = getBean(SurveillanceQueryItem.class); if (item.getType() == CommonVariables.Surveillance.VISIT_REGISTER_ITEM_TYPE || item.getType() == CommonVariables.Surveillance.VISIT_CHECK_IN_ITEM_TYPE ) { if (bitmapList != null && bitmapList.size() > 0) { item.setBitmap(bitmapList.get(0)); } List doubleList = new ArrayList(); List list = SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visit_list_view().getPrevList(); list.add(0, item); fillBlank(list, doubleList); SurveillanceFragment.getInstance().get_fragment_supervisory_bottom_visit_list_view().show(doubleList, true); } } }); } private void fillBlank(List list, List doubleList) { doubleList.clear(); List registerList = new ArrayList(); List checkInList = new ArrayList(); for (SurveillanceQueryItem item : list) { if (item.getType() == Constant.Surveillance.VISIT_REGISTER_ITEM_TYPE) { registerList.add(item); } if (item.getType() == Constant.Surveillance.VISIT_CHECK_IN_ITEM_TYPE) { checkInList.add(item); } } int max = registerList.size() > checkInList.size() ? registerList.size() : checkInList.size(); int m = 0, n = 0; for (int i = 0; i < max * 2; i++) { SurveillanceQueryItem item; if (i % 2 == 0) { if (m < registerList.size()) { item = registerList.get(m); } else { item = getBlankItem(); } m++; } else { if (n < checkInList.size()) { item = checkInList.get(n); } else { item = getBlankItem(); } n++; } doubleList.add(item); } } private SurveillanceQueryItem getBlankItem() { SurveillanceQueryItem blankItem = new SurveillanceQueryItem(); blankItem.setType(Constant.Surveillance.VISIT_BLANK_ITEM_TYPE); return blankItem; } }