package cn.shangyu.gdxzExpert.activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AbsListView.LayoutParams; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.GridView; import android.widget.LinearLayout; import android.widget.TextView; import com.gyf.immersionbar.ImmersionBar; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.RequestParams; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack; import com.lidroid.xutils.http.client.HttpRequest.HttpMethod; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import cn.shangyu.gdxzExpert.R; import cn.shangyu.gdxzExpert.base.BaseActivity; import cn.shangyu.gdxzExpert.http.HttpHelper; import cn.shangyu.gdxzExpert.http.OnCallBackFromNet; import cn.shangyu.gdxzExpert.ui.CustomProgressDialog; import cn.shangyu.gdxzExpert.utils.Constant; import cn.shangyu.gdxzExpert.utils.LogUtil; import cn.shangyu.gdxzExpert.utils.SharePrefUtil; import cn.shangyu.gdxzExpert.utils.StringUtil; import cn.shangyu.gdxzExpert.utils.ToastUtil; import cn.shangyu.gdxzExpert.utils.UIUtils; import cn.shangyu.gdxzExpert.utils.Url; import cn.shangyu.gdxzExpert.widget.LoadingPage.ResultState; public class MyVisitsDressActivity extends BaseActivity implements OnClickListener, OnCallBackFromNet { private View view; private GridView mGv_visit; public final static int GET_CALENDAR_FROM_NET = 101; private MyVisitsDressActivity mActivity; private String startdate; private TextView mVisitnote, mVisitTime; private static String CalendarForever = Url.getupdataExpertCalendarForever;// 修改门诊日历(默认全部)接口 private static String CalendarTemporary = Url.getupdataExpertCalendarTemporary;// 修改门诊日历(当前一周) CustomProgressDialog dialog; private TextView mMon, mTue, mWed, mThu, mFri, mSat, mSun; int[] intsId = { R.id.tv_vist_mon, R.id.tv_vist_tue, R.id.tv_vist_wed, R.id.tv_vist_thu, R.id.tv_vist_fir, R.id.tv_vist_sat, R.id.tv_vist_sun }; TextView[] listsTime = { mMon, mTue, mWed, mThu, mFri, mSat, mSun }; private String expertUuid; private Button myleft; private Button myright; private LinearLayout lv_bt_dress; @Override public void setTitle() { // TODO Auto-generated method stub top_title.setText("出诊计划"); top_right_text.setVisibility(View.VISIBLE); top_right_text.setText("提交"); top_right_text.setOnClickListener(this); top_back_layout.setOnClickListener(this); } // getExpertCalendar @Override public View onCreateSuccessedView() { // TODO Auto-generated method stub ImmersionBar.with(this).keyboardEnable(true).statusBarDarkFont(true).titleBar(mToolbar).init(); expertUuid = SharePrefUtil.getString(ct, Constant.uuid, "");// 取出专家的uuid view = View.inflate(getApplicationContext(), R.layout.activity_visit_ex, null); lv_bt_dress = (LinearLayout) view.findViewById(R.id.ly_bt_exit_dress); lv_bt_dress.setOnClickListener(this); mGv_visit = (GridView) view.findViewById(R.id.gv_visity_server); mVisitnote = (TextView) view.findViewById(R.id.et_visit_note); mVisitTime = (TextView) view.findViewById(R.id.tv_visiti_date); myleft = (Button) view.findViewById(R.id.bt_visit_left); myright = (Button) view.findViewById(R.id.bt_visit_right); myleft.setOnClickListener(this); myright.setOnClickListener(this); for (int i = 0; i < listsTime.length; i++) { listsTime[i] = (TextView) view.findViewById(intsId[i]); } mActivity = this; putEmpty(); startdate = ""; dialog = new CustomProgressDialog(this, "请稍候"); getCalendarData(startdate); return view; } @Override public ResultState onLoad() { // TODO Auto-generated method stub return ResultState.STATE_SUCCESSED; } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (data == null) { return; } if (requestCode == 33) { if (data.getStringExtra("NoteDress").equals("")) { mVisitnote.setText(note); } else { mVisitnote.setText(data.getStringExtra("NoteDress")); } } }; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); } }; private long firstTime = 0; private String note; @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.top_back_layout:// 返回 finish(); break; case R.id.ly_bt_exit_dress:// 启动出诊备注地址编辑界面 Intent intent = new Intent(MyVisitsDressActivity.this, NoteDressEditActivity.class); startActivityForResult(intent, 33); break; case R.id.bt_visit_left:// 上一周 // getCalendarData(formatDate(-7)); if (formatDate(-7).equals("0")) { ToastUtil.showMessage("门诊时间已经失效"); } else { getCalendarData(formatDate(-7)); } break; case R.id.bt_visit_right:// 下一周 getCalendarData(formatDate(+7)); break; case R.id.top_right_text:// 提交 // AlertDialog对话框 // //定义列表中的选项 String dress = mVisitnote.getText().toString().trim(); if (TextUtils.isEmpty(dress)) { ToastUtil.showMessage("请填写出诊地址"); } else { final String[] items = new String[] { "适用于以后所有周", "仅适用于本周" }; // 设置列表选项 new AlertDialog.Builder(MyVisitsDressActivity.this) .setTitle("请选择适用范围") .setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub switch (which) { case 0: ExpertCalendarForever(CalendarForever);// 全部设置 break; case 1: ExpertCalendarTemporary(CalendarTemporary);// 只设置当前一周 break; } } }).setNegativeButton("取消", null).show(); } break; default: break; } } /** * * @param calendarForever * 全部按当前设置 */ private void ExpertCalendarForever(String calendarForever) { // TODO Auto-generated method stub String dress = mVisitnote.getText().toString().trim(); RequestParams params = new RequestParams(); params.addBodyParameter("expert_uuid", expertUuid); params.addBodyParameter("mon_am", String.valueOf(ints.get(0))); params.addBodyParameter("mon_pm", String.valueOf(ints.get(1))); params.addBodyParameter("tue_am", String.valueOf(ints.get(2))); params.addBodyParameter("tue_pm", String.valueOf(ints.get(3))); params.addBodyParameter("wed_am", String.valueOf(ints.get(4))); params.addBodyParameter("wed_pm", String.valueOf(ints.get(5))); params.addBodyParameter("thu_am", String.valueOf(ints.get(6))); params.addBodyParameter("thu_pm", String.valueOf(ints.get(7))); params.addBodyParameter("fri_am", String.valueOf(ints.get(8))); params.addBodyParameter("fri_pm", String.valueOf(ints.get(9))); params.addBodyParameter("sat_am", String.valueOf(ints.get(10))); params.addBodyParameter("sat_pm", String.valueOf(ints.get(11))); params.addBodyParameter("sun_am", String.valueOf(ints.get(12))); params.addBodyParameter("sun_pm", String.valueOf(ints.get(13))); params.addBodyParameter("startdate", startdate);// 起始时间(当前周的周日所对应的日期) params.addBodyParameter("note", dress); HttpHelper.loadData(HttpMethod.POST, calendarForever, params, new RequestCallBack() { @Override public void onSuccess(ResponseInfo info) { ToastUtil.showMessage("设置成功"); } @Override public void onFailure(HttpException arg0, String arg1) { LogUtil.i("数据请求失败了: " + arg1); dismissLoadingProgress(); ToastUtil.showMessage("网络请求失败,请稍候再试!"); } }); } /** * * @param calendarTemporary * 只设置本周 */ private void ExpertCalendarTemporary(String calendarTemporary) { // TODO Auto-generated method stub String dress = mVisitnote.getText().toString().trim(); RequestParams params = new RequestParams(); params.addBodyParameter("expert_uuid", expertUuid); params.addBodyParameter("mon_am", String.valueOf(ints.get(0))); params.addBodyParameter("mon_pm", String.valueOf(ints.get(1))); params.addBodyParameter("tue_am", String.valueOf(ints.get(2))); params.addBodyParameter("tue_pm", String.valueOf(ints.get(3))); params.addBodyParameter("wed_am", String.valueOf(ints.get(4))); params.addBodyParameter("wed_pm", String.valueOf(ints.get(5))); params.addBodyParameter("thu_am", String.valueOf(ints.get(6))); params.addBodyParameter("thu_pm", String.valueOf(ints.get(7))); params.addBodyParameter("fri_am", String.valueOf(ints.get(8))); params.addBodyParameter("fri_pm", String.valueOf(ints.get(9))); params.addBodyParameter("sat_am", String.valueOf(ints.get(10))); params.addBodyParameter("sat_pm", String.valueOf(ints.get(11))); params.addBodyParameter("sun_am", String.valueOf(ints.get(12))); params.addBodyParameter("sun_pm", String.valueOf(ints.get(13))); params.addBodyParameter("note", dress); params.addBodyParameter("startdate", startdate);// 起始时间(当前周的周日所对应的日期) HttpHelper.loadData(HttpMethod.POST, calendarTemporary, params, new RequestCallBack() { @Override public void onSuccess(ResponseInfo info) { ToastUtil.showMessage("设置成功"); } @Override public void onFailure(HttpException arg0, String arg1) { LogUtil.i("数据请求失败了: " + arg1); dismissLoadingProgress(); ToastUtil.showMessage("网络请求失败,请稍候再试!"); } }); } public void getCalendarData(String startdate) { if (!dialog.isShowing()) { dialog.show(); } Map param = new HashMap(); param.put("expert_uuid", expertUuid); param.put("startdate", startdate); sendParamtoNet(Url.getgetExpertCalendar, param, GET_CALENDAR_FROM_NET, mActivity, false); } public void onCallbackFromThread(String resultJson) { // TODO Auto-generated method stub } public void onCallBackFromThread(String resultJson, int resultCode) { // TODO Auto-generated method stub if (dialog != null) { dialog.dismiss(); } String code = null; String message = null; JSONObject jsonObject = null; JSONArray jsonArray = null; try { jsonObject = new JSONObject(resultJson); code = jsonObject.getString("code"); message = jsonObject.getString("message"); startdate = jsonObject.getString("startdate"); for (int i = 0; i < listsTime.length; i++) { listsTime[i].setText(formatDateB(i)); } mVisitTime.setText(formatDateA(0) + "-" + formatDateA(6)); } catch (JSONException e) { e.printStackTrace(); } if (code.equals(0)) { ToastUtil.showMessage("您暂未设置出诊计划"); } if (code.equals("1")) { switch (resultCode) { case GET_CALENDAR_FROM_NET: try { JSONObject object = jsonObject .getJSONObject("expertCalendar"); if (ints != null) { ints.clear(); } else { ints = new ArrayList(); } ints.add( 0, !object.getString("mon_am").equals("null") ? object .getString("mon_am") : "0"); ints.add( 1, !object.getString("mon_pm").equals("null") ? object .getString("mon_pm") : "0"); ints.add( 2, !object.getString("tue_am").equals("null") ? object .getString("tue_am") : "0"); ints.add( 3, !object.getString("tue_pm").equals("null") ? object .getString("tue_pm") : "0"); ints.add( 4, !object.getString("wed_am").equals("null") ? object .getString("wed_am") : "0"); ints.add( 5, !object.getString("wed_pm").equals("null") ? object .getString("wed_pm") : "0"); ints.add( 6, !object.getString("thu_am").equals("null") ? object .getString("thu_am") : "0"); ints.add( 7, !object.getString("thu_pm").equals("null") ? object .getString("thu_pm") : "0"); ints.add( 8, !object.getString("fri_am").equals("null") ? object .getString("fri_am") : "0"); ints.add( 9, !object.getString("fri_pm").equals("null") ? object .getString("fri_pm") : "0"); ints.add( 10, !object.getString("sat_am").equals("null") ? object .getString("sat_am") : "0"); ints.add( 11, !object.getString("sat_pm").equals("null") ? object .getString("sat_pm") : "0"); ints.add( 12, !object.getString("sun_am").equals("null") ? object .getString("sun_am") : "0"); ints.add( 13, !object.getString("sun_pm").equals("null") ? object .getString("sun_pm") : "0"); note = object.getString("note"); if (note != null) { mVisitnote.setText(note); } adapter.notifyDataSetChanged(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; default: break; } } else { if (code.equals(3)) { ToastUtil.showMessage("请求失败"); } } } VisitAdapter adapter; public void putEmpty() { adapter = new VisitAdapter(); ints = new ArrayList(); for (int i = 0; i < 14; i++) { ints.add("0"); } mGv_visit.setAdapter(adapter); } List ints; class VisitAdapter extends BaseAdapter { @Override public int getCount() { // TODO Auto-generated method stub return 16; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return ints.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View view = UIUtils.inflate(R.layout.item_visit); TextView mTv_time = (TextView) view.findViewById(R.id.tv_go_visit); TextView mV_lift = (TextView) view .findViewById(R.id.v_item_visit_lift); TextView mV_bottom = (TextView) view .findViewById(R.id.v_item_visit_bottom); if (position == 0) { mTv_time.setText("上午"); mTv_time.setTextColor(getResources().getColor( R.color.text_color)); } if (position == 1) { mTv_time.setText("下午"); mTv_time.setTextColor(getResources().getColor( R.color.text_color)); } if (position % 2 == 0) { mV_lift.setVisibility(View.GONE); } else { mV_lift.setVisibility(View.VISIBLE); } if (position > 13) { view.setLayoutParams(new LayoutParams( LayoutParams.MATCH_PARENT, dip2px( MyVisitsDressActivity.this, 34))); } for (int i = 0; i < ints.size(); i++) { if (position > 1) { if (ints.get(position - 2).equals("1")) { mTv_time.setBackgroundResource(R.color.commonBackground); mTv_time.setText("出诊"); // view.setBackgroundResource(R.color.tittle_bg); } else { mTv_time.setText(""); } } } mTv_time.setTag(position); if (position > 1) { mTv_time.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (position == 0 || position == 1) { return; } ColorDrawable colorDrawable = (ColorDrawable) v .getBackground();// 获取背景颜色 if (getResources().getColor(R.color.commonBackground) == colorDrawable .getColor()) { v.setBackgroundResource(R.color.white); ((TextView) v).setText(""); ints.set(position - 2, "0"); } else { v.setBackgroundResource(R.color.commonBackground); ((TextView) v).setText("出诊"); ints.set(position - 2, "1"); } } }); } return view; } } public static int dip2px(Context context, double d) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (d * scale + 0.5f); } private int addTime = 0; public String formatDate(int addTime) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { if (StringUtil.isEmpty(startdate)) { return ""; } Date date = sdf.parse(startdate); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, addTime); if ((calendar.getTimeInMillis() - System.currentTimeMillis()) < -1000 * 60 * 60 * 24 * 7) { return "0"; } date = calendar.getTime(); return sdf.format(date); // 加1之后的日期Top } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public String formatDateA(int addTime) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat newsdf = new SimpleDateFormat("MM月dd日"); try { if (StringUtil.isEmpty(startdate)) { return ""; } Date date = sdf.parse(startdate); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, addTime); date = calendar.getTime(); return newsdf.format(date); // 加1之后的日期Top } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public String formatDateB(int addTime) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat newsdf = new SimpleDateFormat("MM-dd"); try { if (StringUtil.isEmpty(startdate)) { return ""; } Date date = sdf.parse(startdate); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, addTime); date = calendar.getTime(); return newsdf.format(date); // 加1之后的日期Top } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override protected void processClick(View v) { // TODO Auto-generated method stub } }