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