package com.ectrip.cyt.ui; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.ectrip.cyt.adapter.StatisticsAdapter; import com.ectrip.cyt.base.DataTrans; import com.ectrip.cyt.callback.HttpCallback; import com.ectrip.cyt.center.PrintHandle; import com.ectrip.cyt.config.MyApp; import com.ectrip.cyt.constant.DeviceType; import com.ectrip.cyt.constant.OrderCode; import com.ectrip.cyt.response.StatisticInfos; import com.ectrip.cyt.utils.SharedPreferences2Obj; import com.ectrip.trips.check.R; import com.ectrip.trips.net.DataTool; import com.ectrip.trips.net.HttpHelper; import com.fourmob.datetimepicker.date.DatePickerDialog; /** * @author jigo 天统计 */ public class StatisticsDayActivity extends BaseActivity implements OnClickListener, DatePickerDialog.OnDateSetListener { private Integer type; // 设备类型 private StatisticsAdapter adapter; private ListView statistic_list; private View startLayout; private View endLayout; private TextView startTime; private TextView endTime; private Button searchButton; public final String DATEPICKER_TAG = "datepicker"; public final String DATEPICKER2_TAG = "datepicker2"; private Calendar calendar = null; private DatePickerDialog datePickerDialog = null; private DatePickerDialog datePickerDialog2 = null; private View errorLayout; private TextView errorInfo; private Button printBtn; private TextView title; private List> statisticsList; private final int REQUEST_STARTTime = 6; private final int REQUEST_ENDTime = 7; private String printDate; private String currentDate; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.statistics_day_activity); initView(); init(); } @Override protected void onResume() { super.onResume(); type = SharedPreferences2Obj.getInstance(StatisticsDayActivity.this) .setName("MachineType").getObject("type", Integer.class); if (printBtn != null && type != null && type == DeviceType.HANDSET.getValue()) { printBtn.setVisibility(View.GONE); } } private void initView() { title = (TextView) findViewById(R.id.title); title.setVisibility(View.VISIBLE); title.setText(R.string.statistics_day); printBtn = (Button) findViewById(R.id.printBtn); errorLayout = findViewById(R.id.errorLayout); errorInfo = (TextView) errorLayout.findViewById(R.id.errorInfo); searchButton = (Button) findViewById(R.id.searchButton); startTime = (TextView) findViewById(R.id.startTime); endTime = (TextView) findViewById(R.id.endTime); statistic_list = (ListView) findViewById(R.id.statistic_list); startLayout = findViewById(R.id.startLayout); endLayout = findViewById(R.id.endLayout); startLayout.setOnClickListener(this); endLayout.setOnClickListener(this); searchButton.setOnClickListener(this); printBtn.setOnClickListener(this); findViewById(R.id.topBack).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); } private void init() { // 日期 calendar = Calendar.getInstance(); datePickerDialog = DatePickerDialog.newInstance( StatisticsDayActivity.this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), false); datePickerDialog2 = DatePickerDialog.newInstance( StatisticsDayActivity.this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), false); if ((calendar.get(Calendar.MONTH) + 1) <= 9) { if (calendar.get(Calendar.DAY_OF_MONTH) <= 9) { currentDate = calendar.get(Calendar.YEAR) + "-" + "0" + (calendar.get(Calendar.MONTH) + 1) + "-" + "0" + calendar.get(Calendar.DAY_OF_MONTH); } else { currentDate = calendar.get(Calendar.YEAR) + "-" + "0" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH); } } else { if (calendar.get(Calendar.DAY_OF_MONTH) <= 9) { currentDate = calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + "0" + calendar.get(Calendar.DAY_OF_MONTH); } else { currentDate = calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH); } } startTime.setText(currentDate); endTime.setText(currentDate); } class MyHttpCallback extends HttpCallback { ProgressDialog dialog = null; private String signed; private String data; @Override public void onStopCallback() { } @Override public void onPreCallback() { if (dialog == null) { // 显示ProgressDialog dialog = new ProgressDialog(StatisticsDayActivity.this); dialog.setMessage(getString(R.string.obtain_statistical_information)); dialog.setCanceledOnTouchOutside(false); dialog.setCancelable(true); if (type == DeviceType.HANDSET.getValue()) { dialog.getWindow().setType( WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); } try { dialog.show(); } catch (Exception e) { e.printStackTrace(); } } else { dialog.setMessage(getString(R.string.obtain_statistical_information)); } } @Override public void onFailureCallback(String FailureStr) { if (dialog != null && dialog.isShowing()) { try { dialog.dismiss(); } catch (Exception e) { e.printStackTrace(); } catch (Throwable e) { e.printStackTrace(); } } statistic_list.setEmptyView(errorLayout); errorLayout.setVisibility(View.VISIBLE); // 错误信息提示 if (FailureStr != null) { errorInfo.setText(FailureStr); MToast(StatisticsDayActivity.this, FailureStr, Toast.LENGTH_LONG); } } @Override public void onCompletedCallback(DataTrans result) { } @Override public void onAgainParseCallback(Object parse) { if (dialog != null && dialog.isShowing()) { try { dialog.dismiss(); } catch (Exception e) { e.printStackTrace(); } catch (Throwable e) { e.printStackTrace(); } } if (parse != null) { StatisticInfos statisticInfos = (StatisticInfos) parse; String code = statisticInfos.getCode(); if (code != null && OrderCode.SUCESS.getValue().equals(code)) { if (signed.equals(DataTool.getSign(MyApp.getInstance() .getSignkey(), data))) { if (statisticInfos != null && statisticInfos.getStatistics() != null && statisticInfos.getStatistics().size() > 0) { statisticsList = statisticInfos.getStatistics(); if (adapter == null) { adapter = new StatisticsAdapter( StatisticsDayActivity.this, statisticsList); statistic_list.setAdapter(adapter); } else { adapter.notifyDataSetChanged(statisticsList); } } else { onFailureCallback(getString(R.string.no_data)); MToast(StatisticsDayActivity.this, getString(R.string.get_statistic_info_fail), Toast.LENGTH_SHORT); if (adapter != null) { statisticsList = null; adapter.notifyDataSetChanged(null); } } } else { statisticsList = null; onFailureCallback(getString(R.string.sign_not_pass)); MToast(StatisticsDayActivity.this, getString(R.string.sign_not_pass), Toast.LENGTH_SHORT); } } else { statisticsList = null; onFailureCallback(statisticInfos.getDescribe()); MToast(StatisticsDayActivity.this, statisticInfos.getDescribe(), Toast.LENGTH_SHORT); } } } @Override public void afterCompletedCallback(DataTrans result) { if (result != null) { signed = result.getSigned(); data = result.getData(); parse2(result.getData(), StatisticInfos.class,StatisticsDayActivity.this); } else { if (dialog != null && dialog.isShowing()) { try { dialog.dismiss(); } catch (Exception e) { e.printStackTrace(); } catch (Throwable e) { e.printStackTrace(); } } MToast(StatisticsDayActivity.this, getString(R.string.get_statistic_info_fail), Toast.LENGTH_LONG); } } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.startLayout: if (type != null && type == DeviceType.HANDSET.getValue()) { Intent intent = new Intent(StatisticsDayActivity.this, CannerSelectedActivity.class); intent.putExtra("mode", "7"); startActivityForResult(intent, REQUEST_STARTTime); } else { try { if (!datePickerDialog.isAdded() && !datePickerDialog.isVisible() && !datePickerDialog.isRemoving()) { datePickerDialog.setVibrate(false); datePickerDialog.setYearRange(2006, calendar.get(Calendar.YEAR)); datePickerDialog.isAdded(); datePickerDialog.show(getSupportFragmentManager(), DATEPICKER_TAG, true, endTime.getText()); } else { datePickerDialog = (DatePickerDialog) getSupportFragmentManager() .findFragmentByTag(DATEPICKER_TAG); if (datePickerDialog != null) { datePickerDialog.setOnDateSetListener(this); } } } catch (Exception e) { e.printStackTrace(); } } break; case R.id.endLayout: if (type != null && type == DeviceType.HANDSET.getValue()) { Intent intent = new Intent(StatisticsDayActivity.this, CannerSelectedActivity.class); intent.putExtra("mode", "7"); startActivityForResult(intent, REQUEST_ENDTime); } else { try { if (!datePickerDialog2.isAdded() && !datePickerDialog2.isVisible() && !datePickerDialog2.isRemoving()) { datePickerDialog2.setVibrate(false); datePickerDialog2.setYearRange(2006, calendar.get(Calendar.YEAR)); datePickerDialog2.isAdded(); datePickerDialog2.show(getSupportFragmentManager(), DATEPICKER2_TAG, false, startTime.getText()); } else { datePickerDialog2.setStartTime(startTime.getText()); datePickerDialog2 = (DatePickerDialog) getSupportFragmentManager() .findFragmentByTag(DATEPICKER2_TAG); if (datePickerDialog2 != null) { datePickerDialog2.setOnDateSetListener(this); } } } catch (Exception e) { e.printStackTrace(); } } break; case R.id.searchButton: if (startTime == null || startTime.getText() == null || startTime.getText().toString().equals("")) { MToast(StatisticsDayActivity.this, getString(R.string.please_select_start_time), Toast.LENGTH_LONG); return; } else if (endTime == null || endTime.getText() == null || endTime.getText().toString().equals("")) { MToast(StatisticsDayActivity.this, getString(R.string.please_select_end_time), Toast.LENGTH_LONG); return; } else try { int between = daysBetween(startTime.getText().toString(), endTime.getText().toString()); if (between > 31) { MToast(StatisticsDayActivity.this, getString(R.string.Two_dates_can_not_be_more_than_31_days), Toast.LENGTH_LONG); return; } if (between < 0) { MToast(StatisticsDayActivity.this, getString(R.string.The_former_time_can_not_be_greater_than_the_latter), Toast.LENGTH_LONG); return; } } catch (ParseException e) { e.printStackTrace(); return; } printDate = startTime.getText().toString() + "~" + endTime.getText().toString(); HttpHelper.getInstance(StatisticsDayActivity.this).statisticsOrder( "DAY", startTime.getText().toString(), endTime.getText().toString(), null, new MyHttpCallback()); break; case R.id.printBtn: if (statisticsList == null || statisticsList.size() == 0) { MToast(StatisticsDayActivity.this, getString(R.string.no_data_print), Toast.LENGTH_LONG); return; } if (startTime != null && startTime.getText() == null || startTime.getText().toString() == null) { MToast(StatisticsDayActivity.this, getString(R.string.please_select_start_time), Toast.LENGTH_SHORT); return; } if (endTime != null && endTime.getText() == null || endTime.getText().toString() == null) { MToast(StatisticsDayActivity.this, getString(R.string.please_select_end_time), Toast.LENGTH_SHORT); return; } PrintHandle.getInstance().print(list2Str(statisticsList), StatisticsDayActivity.this); break; default: break; } } @SuppressLint("SimpleDateFormat") public int daysBetween(String smdate, String bdate) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date sdate = sdf.parse(smdate); Date edate = sdf.parse(bdate); Calendar cal = Calendar.getInstance(); cal.setTime(sdate); long time1 = cal.getTimeInMillis(); cal.setTime(edate); long time2 = cal.getTimeInMillis(); long between_days = (time2 - time1) / (1000 * 3600 * 24); return Integer.parseInt(String.valueOf(between_days)); } @Override public void onDateSet(DatePickerDialog datePickerDialog, String date, boolean first) { if (first) { startTime.setText(date); } else { endTime.setText(date); } } @Override public void onFail(String error) { Toast.makeText(StatisticsDayActivity.this, error, Toast.LENGTH_SHORT) .show(); } private String list2Str(List> list) { StringBuffer sb = new StringBuffer(); if (list != null && list.size() > 0) { for (Map temp : list) { for (Map.Entry entry : temp.entrySet()) { if (entry != null) { // if (entry.getProduct() != null) { // sb.append("票名:" + temp.getProduct()+"\n"); // } // if (temp.getOrdercount() != null) { // sb.append("订单数:" + temp.getOrdercount() + "\n"); // } // if (temp.getPersoncount() != null) { // sb.append("人数:" + temp.getPersoncount()+ "\n"+"\n"); // } if (entry.getValue() != null) { sb.append(entry.getValue() + "\n"); } } } sb.append("\n"); } try {// 加了时间有问题 if (type != null && type == DeviceType.HANDSET.getValue()) { } else { sb.append(getString(R.string.statistic_time) + printDate + "\n"); sb.append(" " + "\n"); } } catch (Exception e) { e.printStackTrace(); } } return sb.toString(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); try { if (requestCode == REQUEST_STARTTime && resultCode == 6) { if (data != null && data.getStringExtra("result") != null) { String start = data.getStringExtra("result").split(" ")[0]; startTime.setText(start); } } else if (requestCode == REQUEST_ENDTime && resultCode == 6) { if (data != null && data.getStringExtra("result") != null) { String end = data.getStringExtra("result").split(" ")[0]; endTime.setText(end); } } } catch (Exception e) { e.printStackTrace(); } } @Override protected void onDestroy() { super.onDestroy(); PrintHandle.getInstance().printClose(); } }