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 com.jqyd.anjoulee.CaseadeRegion; import com.jqyd.model.GroupsModule; import com.jqyd.model.MyTravelModule; import com.jqyd.shareInterface.Optdb_interfce; import com.jqyd.shareInterface.Optsharepre_interface; import com.jqyd.shareInterface.UpdataToServer; import com.jqyd.manager.R; 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.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.Spinner; import android.widget.AdapterView.OnItemSelectedListener; public class Ccsq extends Activity implements OnClickListener { private Spinner province_source; private Spinner city_source; private Spinner jtfs; private EditText cfrq; private Spinner province_goal; private Spinner city_goal; private EditText fhrq; private EditText bz; private Button up; private Button back; private Calendar c; private ArrayAdapter<String> adapter_province_start=null; private ArrayAdapter<String> adapter_city_start=null; private ArrayAdapter<String> adapter_province_end=null; private ArrayAdapter<String> adapter_city_end=null; private ArrayAdapter<String> adapter_jt=null; private Optsharepre_interface share_obj = null; private int flag = 0;//0、出发日期1、返回日期 private Optdb_interfce db = null; private String sjzg = ""; private CaseadeRegion caseadeRegion = new CaseadeRegion(); @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.ccsq); province_source = (Spinner) this.findViewById(R.id.province_source); city_source = (Spinner) this.findViewById(R.id.city_source); jtfs = (Spinner) this.findViewById(R.id.jtfs); cfrq = (EditText) this.findViewById(R.id.cfrq); province_goal = (Spinner) this.findViewById(R.id.province_goal); city_goal = (Spinner) this.findViewById(R.id.city_goal); fhrq = (EditText) this.findViewById(R.id.fhrq); bz = (EditText) this.findViewById(R.id.bz); up = (Button) this.findViewById(R.id.up); back = (Button) this.findViewById(R.id.back); cfrq.setOnClickListener(this); fhrq.setOnClickListener(this); up.setOnClickListener(this); back.setOnClickListener(this); province_source.setOnItemSelectedListener(new ProListener()); province_goal.setOnItemSelectedListener(new FlowProListener()); init(); } //赋默认值 public void init(){ c = Calendar.getInstance(); //时间默认当天 Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String mDateTime1 = formatter.format(date); cfrq.setText(mDateTime1); fhrq.setText(mDateTime1); String [] provinces_source = caseadeRegion.oneCasecode(); ArrayList<String> dataList = new ArrayList<String>(); for(int i=0;i<provinces_source.length;i++){ dataList.add(provinces_source[i]); } adapter_province_start = new ArrayAdapter<String>(Ccsq.this, android.R.layout.simple_spinner_item, dataList); adapter_province_start.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 绑定适配器 province_source.setAdapter(adapter_province_start); loadCity("地市"); String [] provinces_goal = caseadeRegion.oneCasecode(); ArrayList<String> dataList3 = new ArrayList<String>(); for(int i=0;i<provinces_goal.length;i++){ dataList3.add(provinces_goal[i]); } adapter_province_end = new ArrayAdapter<String>(Ccsq.this, android.R.layout.simple_spinner_item, dataList3); adapter_province_end.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 绑定适配器 province_goal.setAdapter(adapter_province_end); loadFlowCity("地市"); ArrayList<String> jtList = new ArrayList<String>(); //事假、病假、调休、年假、婚假、产假、丧假、工伤 jtList.add("飞机"); jtList.add("火车"); jtList.add("自驾"); jtList.add("其它"); adapter_jt = new ArrayAdapter<String>(Ccsq.this, android.R.layout.simple_spinner_item, jtList); adapter_jt .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 绑定适配器 jtfs.setAdapter(adapter_jt); } /** * 加载所属城市信息 * @param id */ public void loadCity(String pro){ ArrayList<String> cityList = new ArrayList<String>(); if(pro.equals("地市")){ cityList.add("地市"); }else{ String [] cities = caseadeRegion.twoCasecode(pro); if(cities != null){ for(int i=0;i<cities.length;i++){ cityList.add(cities[i]); } } } adapter_city_start = new ArrayAdapter<String>(Ccsq.this, android.R.layout.simple_spinner_item, cityList); adapter_city_start .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 绑定适配器 city_source.setAdapter(adapter_city_start); } /** * 加载流向城市信息 * @param id */ public void loadFlowCity(String pro){ ArrayList<String> cityList = new ArrayList<String>(); if(pro.equals("地市")){ cityList.add("地市"); }else{ String [] cities = caseadeRegion.twoCasecode(pro); if(cities != null){ for(int i=0;i<cities.length;i++){ cityList.add(cities[i]); } } } adapter_city_end = new ArrayAdapter<String>(Ccsq.this, android.R.layout.simple_spinner_item, cityList); adapter_city_end.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // 绑定适配器 city_goal.setAdapter(adapter_city_end); } /** * 所在省份监听器 */ class ProListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { String pro= province_source.getSelectedItem().toString(); loadCity(pro); } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } } /** * 流向省份监听器 */ class FlowProListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { String pro= province_goal.getSelectedItem().toString(); loadFlowCity(pro); } public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } } /** * 判断结束日期是否大于开始日期 * @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 == cfrq){ flag = 0; getDate(); }else if(v == fhrq){ flag = 1; getDate(); }else if(v == up){ if(province_source.getSelectedItem().toString().equals("省份") || city_source.getSelectedItem().toString().equals("地市") || province_goal.getSelectedItem().toString().equals("省份") || city_goal.getSelectedItem().toString().equals("地市") ){ warnTell("请选择相应的省或市信息!"); }else{ share_obj = new Optsharepre_interface(Ccsq.this); sjzg = share_obj.getDataFromPres("SJZG"); String ks = cfrq.getText().toString(); String js = fhrq.getText().toString(); boolean flag = flagDate(ks,js); if(sjzg.equals("请选择") || sjzg.equals("-1")){ warnTell("对不起,请先分配上级主管,然后再使用此功能!"); }else if(!flag){ warnTell("返回日期不能小于出发日期!"); }else{ //获得登录者姓名 db = new Optdb_interfce(Ccsq.this); String userName = db.searchEmpName(share_obj.getDataFromPres("GUID")); //获得登录者部门名称 ArrayList<Object> deps = db.searchGroups(share_obj.getDataFromPres("GID"),2); String departName=""; if(deps.size()>0){ departName = ((GroupsModule)deps.get(0)).getGname(); } db.close_SqlDb(); //计算出差天数 long day = 0; day = getQuot(ks,js)+1; MyTravelModule travel = new MyTravelModule(); travel.setCosim(share_obj.getDataFromPres("COSIM")); travel.setRegsim(share_obj.getDataFromPres("REGSIM")); travel.setGuid(share_obj.getDataFromPres("GUID")); travel.setGguid(share_obj.getDataFromPres("GGUID")); travel.setZdmc(userName); travel.setBz(bz.getText().toString()); travel.setCfrq(cfrq.getText().toString()); travel.setCity_end(city_goal.getSelectedItem().toString()); travel.setCity_start(city_source.getSelectedItem().toString()); travel.setFhrq(fhrq.getText().toString()); travel.setPro_end(province_goal.getSelectedItem().toString()); travel.setPro_start(province_source.getSelectedItem().toString()); travel.setDay(day+""); travel.setGroupName(departName); new TravelThread(travel).start(); } } }else if(v == back){ finish(); } } /** * 计算相差天数 * @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; } //弹出日期框 public void getDate() { new DatePickerDialog(Ccsq.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 == 0){ cfrq.setText(time); }else{ fhrq.setText(time); } } }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)).show(); } /** * 清空历史数据 */ public void cheanHisdatas(){ bz.setText(""); init(); } /** * 非空警告提示 */ public void warnTell(final String message){ new AlertDialog.Builder(Ccsq.this).setTitle("警告").setMessage(message) .setPositiveButton("确定", null).show(); } /** * 出差申请线程 * @author Administrator * */ class TravelThread extends Thread { private MyTravelModule travel; public TravelThread(MyTravelModule travel) { this.travel = travel; } @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(); try { object.put("guid", travel.getGuid()); object.put("gguid", travel.getGguid()); object.put("zdmc", travel.getZdmc()); object.put("cosim", travel.getCosim()); object.put("regsim", travel.getRegsim()); object.put("cfrq", travel.getCfrq()); object.put("pro_start", travel.getPro_start()); object.put("city_start", travel.getCity_start()); object.put("pro_end", travel.getPro_end()); object.put("city_end", travel.getCity_end()); object.put("fhrq", travel.getFhrq()); object.put("bz", travel.getBz()); object.put("jtfs", jtfs.getSelectedItemPosition()+1); object.put("sjzg", sjzg); object.put("day", travel.getDay()); object.put("groupName", travel.getGroupName()); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } System.out.println("出差申请--------------------"+object.toString()); // 请求服务器 String result = new UpdataToServer(Ccsq.this).dataToServer("CCSQ", 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; } } }; /** * 结果显示 * * @param message */ public void showToast(final String message) { new AlertDialog.Builder(Ccsq.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(Ccsq.this); dialog.setIndeterminate(true); dialog.setCancelable(false); switch (id) { case 1: dialog.setMessage("正在上传,请稍候……"); break; } return dialog; } }