package com.jqyd.son; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.AdapterView.OnItemSelectedListener; import com.jqyd.manager.R; import com.jqyd.model.GroupsModule; import com.jqyd.shareInterface.Optdb_interfce; import com.jqyd.shareInterface.Optsharepre_interface; import com.jqyd.shareInterface.UpdataToServer; public class Qjsq extends Activity implements OnClickListener{ private Button up; private Button back; private Spinner qjlb; private Spinner qjDay; private Spinner qjHour; private EditText ksrq; private EditText jsrq; private EditText bz; private ArrayAdapter<String> adapter_qjlb = null; private ArrayAdapter<String> adapter_hour = null; private ArrayAdapter<String> adapter_day = null; private Calendar c; private int flag;//1、开始日期2、结束日期 private Optsharepre_interface share_obj = null; private Optdb_interfce db = null; private String sjzg = ""; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.qjsq); qjlb=(Spinner) findViewById(R.id.qjlb); qjDay=(Spinner) findViewById(R.id.qjDay); qjHour=(Spinner) findViewById(R.id.qjHour); ksrq=(EditText) findViewById(R.id.ksrq); jsrq=(EditText) findViewById(R.id.jsrq); bz=(EditText) findViewById(R.id.bz); up=(Button) findViewById(R.id.up); back=(Button) findViewById(R.id.back); ksrq.setOnFocusChangeListener(new TouchDateFocusListener()); jsrq.setOnFocusChangeListener(new TouchDateFocusListener()); ksrq.setOnClickListener(this); jsrq.setOnClickListener(this); up.setOnClickListener(this); back.setOnClickListener(this); init(); } // 赋默认值 public void init() { c = Calendar.getInstance(); // 业务时间默认当天 Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String mDateTime1 = formatter.format(date); ksrq.setText(mDateTime1); jsrq.setText(mDateTime1); ArrayList<String> qjlbList = new ArrayList<String>(); //事假、病假、调休、年假、婚假、产假、丧假、工伤 qjlbList.add("事假"); qjlbList.add("病假"); qjlbList.add("调休"); qjlbList.add("年假"); qjlbList.add("婚假"); qjlbList.add("产假"); qjlbList.add("丧假"); qjlbList.add("工伤"); adapter_qjlb = new ArrayAdapter<String>(Qjsq.this, android.R.layout.simple_spinner_item, qjlbList); adapter_qjlb .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 绑定适配器 qjlb.setAdapter(adapter_qjlb); ArrayList<String> dayList = new ArrayList<String>(); dayList.add("0天"); dayList.add("1天"); adapter_day = new ArrayAdapter<String>(Qjsq.this, android.R.layout.simple_spinner_item, dayList); adapter_day .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 绑定适配器 qjDay.setAdapter(adapter_day); ArrayList<String> hourList = new ArrayList<String>(); hourList.add("0小时"); hourList.add("1小时"); hourList.add("2小时"); hourList.add("3小时"); hourList.add("4小时"); hourList.add("5小时"); hourList.add("6小时"); hourList.add("7小时"); hourList.add("8小时"); adapter_hour = new ArrayAdapter<String>(Qjsq.this, android.R.layout.simple_spinner_item, hourList); adapter_hour .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 绑定适配器 qjHour.setAdapter(adapter_hour); } /** * 获得焦点事件监听器 * @author Administrator * */ class TouchDateFocusListener implements OnFocusChangeListener{ @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if(hasFocus && v == ksrq){ flag = 1; getDate(); }else if(hasFocus && v == jsrq){ flag = 2; getDate(); } } }; /** * 根据请假日期,自动改变请假天数 * @param day */ public void changeDay(){ long day = 0; String ks = ksrq.getText().toString(); String js = jsrq.getText().toString(); day = getQuot(ks,js); System.out.println("相差天数-----------------"+day); ArrayList<String> dayList = new ArrayList<String>(); /* if(day>0){ for(int i=1;i<=day+1;i++){ dayList.add(i+"天"); } }else{ dayList.add(0+"天"); }*/ if(day>0){ dayList.add(day+"天"); dayList.add((day+1)+"天"); }else{ dayList.add("0天"); } adapter_day = new ArrayAdapter<String>(Qjsq.this, android.R.layout.simple_spinner_item, dayList); adapter_day .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 绑定适配器 qjDay.setAdapter(adapter_day); } /** * 计算相差天数 * @param time1 * @param time2 * @return */ public long getQuot(String time1, String time2){ long quot = 0; SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); try { Date date1 = ft.parse(time1); Date date2 = ft.parse(time2); quot = date2.getTime() - date1.getTime(); quot = quot / 1000 / 60 / 60 / 24; } catch (ParseException e) { e.printStackTrace(); } return quot; } /** * 判断结束日期是否大于开始日期 * @param time1 * @param time2 * @return */ public boolean flagDate(String time1, String time2){ boolean flag = false;//true,结束日期大于开始日期 long quot = 0; SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); try { Date date1 = ft.parse(time1); Date date2 = ft.parse(time2); quot = date2.getTime() - date1.getTime(); if(quot<0){ flag = false; }else{ flag = true; } } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return flag; } @Override public void onClick(View v) { // TODO Auto-generated method stub if(v == ksrq){ flag = 1; getDate(); }else if(v == jsrq){ flag = 2; getDate(); }else if(v == up){ share_obj = new Optsharepre_interface(Qjsq.this); sjzg = share_obj.getDataFromPres("SJZG"); String ks = ksrq.getText().toString(); String js = jsrq.getText().toString(); boolean flag = flagDate(ks,js); if(sjzg.equals("请选择") || sjzg.equals("-1")){ warnTell("对不起,请先分配上级主管,然后再使用此功能!"); }else if(!flag){ warnTell("结束日期不能小于开始日期!"); }else{ new QjThread().start(); } }else if(v == back){ finish(); } } // 弹出日期框 public void getDate() { new DatePickerDialog(Qjsq.this, new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker arg0, int year, int month, int date) { // TODO Auto-generated method stub String m = ""; String d = ""; if ((month + 1) < 10) { m = "0" + (month + 1); } else { m = (month + 1) + ""; } if (date < 10) { d = "0" + date; } else { d = date + ""; } String time = year + "-" + m + "-" + d; if(flag == 1){ ksrq.setText(time); }else{ jsrq.setText(time); } //根据请假日期,动态改变天数 changeDay(); } }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)).show(); } /** * 请假上报线程 * @author Administrator * */ class QjThread extends Thread { @Override public void run() { // TODO Auto-generated method stub super.run(); Looper.prepare(); Message message = new Message(); message.what = 1; myHander.sendMessage(message); Message message2 = new Message(); message2.what = 2; Bundle bundle = new Bundle(); JSONObject object = new JSONObject(); db = new Optdb_interfce(Qjsq.this); share_obj = new Optsharepre_interface(Qjsq.this); //获得登录者姓名 String userName = db.searchEmpName(share_obj.getDataFromPres("GUID")); //获得登录者所在部门 ArrayList<Object> deps = db.searchGroups(share_obj.getDataFromPres("GID"),2); String departName = ((GroupsModule)deps.get(0)).getGname(); db.close_SqlDb(); int day = Integer.parseInt(qjDay.getSelectedItem().toString().replaceAll("天", "")); int hour = Integer.parseInt(qjHour.getSelectedItem().toString().replaceAll("小时", "")); //double sc = (double)hour+(double)minute/60; try { object.put("cosim", share_obj.getDataFromPres("COSIM")); object.put("regsim", share_obj.getDataFromPres("REGSIM")); object.put("coguid", share_obj.getDataFromPres("GGUID")); object.put("zguid", share_obj.getDataFromPres("GUID")); object.put("zdmc", userName); object.put("day", day); object.put("hour", hour); object.put("bz", bz.getText().toString()); object.put("ksrq", ksrq.getText().toString()); object.put("jsrq", jsrq.getText().toString()); object.put("qjlb", qjlb.getSelectedItemPosition()+1); object.put("department",departName); object.put("sjzg", sjzg); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // 请求服务器 String result = new UpdataToServer(Qjsq.this).dataToServer("QJSQ", object); if (result != null && !result.equals("-1")) { try { JSONObject obj = new JSONObject(result); String res = obj.getString("result"); if (res.equals("0")) { bundle.putString("msg", "上传成功"); } else { String errMsg = obj.getString("detail"); bundle.putString("msg", errMsg); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { bundle.putString("msg", "对不起,网络连接失败!"); } message2.setData(bundle); myHander.sendMessage(message2); Looper.loop(); } } Handler myHander = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case 1: showDialog(1); break; case 2: removeDialog(1); Bundle data = msg.getData(); String message = data.getString("msg"); showToast(message); break; } } }; /** * 清空历史数据 */ public void cheanHisdatas(){ bz.setText(""); init(); } /** * 警告提示 */ public void warnTell(String message){ new AlertDialog.Builder(Qjsq.this).setTitle("警告").setMessage(message) .setPositiveButton("确定", null).show(); } /** * 结果显示 * * @param message */ public void showToast(final String message) { new AlertDialog.Builder(Qjsq.this).setTitle("提示").setMessage(message) .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { if(message.contains("成功")){ cheanHisdatas(); } } }).show(); } @Override protected Dialog onCreateDialog(int id) { // TODO Auto-generated method stub ProgressDialog dialog = new ProgressDialog(Qjsq.this); dialog.setIndeterminate(true); dialog.setCancelable(false); switch (id) { case 1: dialog.setMessage("正在上传,请稍候……"); break; } return dialog; } }