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;
}
}