package com.jiuqi.njt.management;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.jiuqi.mobile.nigo.comeclose.bean.app.file.SentEmployeeBean;
import com.jiuqi.mobile.nigo.comeclose.bean.app.file.ServiceFileBean;
import com.jiuqi.mobile.nigo.comeclose.bean.app.file.ServicePartBean;
import com.jiuqi.njt.R;
import com.jiuqi.njt.data.MyApp;
import com.jiuqi.njt.management.task.AddServiceFileTask;
import com.jiuqi.njt.util.DateUtil;
import com.jiuqi.njt.util.TitleBarUtil;
import com.jiuqi.njt.util.UIUtil;
/**
* 维修单页面
*/
@SuppressLint("NewApi")
public class RepairOfSingleActivity extends Activity implements OnClickListener {
private ViewStub rlTitleBar;
private EditText content, repairMonery, tripsMonery, partName, partDeep,partNumM, partPriceM;
private Button btnRepairDate, btnCompleteDate, addParts;
private Dialog dialog;
private boolean isStartDateValidate, isEndDateValidate;
private RelativeLayout listRelative;
private ListView listView;
private Calendar calendar = Calendar.getInstance();
private int yearStart, monthStart, dayStart;
private String completeDateStr, repairDateStr;
private MyApp app;
// private PartsAdapter adapter;
private MyAdapter adapter;
private List<ServicePartBean> addPartList = new ArrayList<ServicePartBean>();
private TextView partsMonery, totalMonery;
private int partsMoneryInt, tripsMoneryInt , repairMoneryInt ,onePartsMoneryInt;// 零件费
private ServiceFileBean serviceFileBean;
private SentEmployeeBean sentEmpBean = new SentEmployeeBean();
private AddServiceFileTask addServiceFileTask;
private LinearLayout tabLayout;
public static Boolean flagParts= false;
private int positi = 0;
private int height;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initWidgets();
initTitleBar();
initUI();
initListeners();
}
private void initWidgets() {
setContentView(R.layout.repair_single);
app = (MyApp) getApplication();
sentEmpBean = (SentEmployeeBean) getIntent().getSerializableExtra("pg");
content = (EditText) findViewById(R.id.content);
tabLayout = (LinearLayout)findViewById(R.id.tabLayout);
repairMonery = (EditText) findViewById(R.id.repairMonery);
tripsMonery = (EditText) findViewById(R.id.tripsMonery);
partName = (EditText) findViewById(R.id.partName);
partDeep = (EditText) findViewById(R.id.partDeep);
partNumM = (EditText) findViewById(R.id.partNum);
partPriceM = (EditText) findViewById(R.id.partPrice);
btnRepairDate = (Button) findViewById(R.id.btnRepairDate);
btnCompleteDate = (Button) findViewById(R.id.btnCompleteDate);
addParts = (Button) findViewById(R.id.addParts);
partsMonery = (TextView) findViewById(R.id.partsMonery);
totalMonery = (TextView) findViewById(R.id.totalMonery);
listRelative = (RelativeLayout) findViewById(R.id.listRelative);
listView = (ListView) findViewById(R.id.partslist);
}
private void initTitleBar() {
rlTitleBar = (ViewStub) findViewById(R.id.titleBarStub);
TitleBarUtil.createTitleBar(RepairOfSingleActivity.this, rlTitleBar,
"报修档案", new View.OnClickListener() {
@Override
public void onClick(View v) {
RepairOfSingleActivity.this.finish();
}
}, "完成", new View.OnClickListener() {
@Override
public void onClick(View v) {
// 维修单填完以后“完成”事件
submitContents();
}
});
}
private void initUI() {
if (null != app.getOldParts()) {
partName.setText(app.getOldParts().getPartName().trim());
partDeep.setText(app.getOldParts().getPartDeep().trim());
partNumM.setText(app.getOldParts().getPartNumM().trim());
partPriceM.setText(app.getOldParts().getPartPriceM().trim());
onePartsMoneryInt = Integer.parseInt(app.getOldParts().getPartPriceM().trim())*Integer.parseInt(app.getOldParts().getPartNumM().trim());
Log.wtf("原始零件", onePartsMoneryInt+"");
}
if (null != app.getServicePartBeansList()&& app.getServicePartBeansList().size() != 0) {
for (int i = 0; i < app.getServicePartBeansList().size(); i++) {
partsMoneryInt += Integer.parseInt(app.getServicePartBeansList().get(i).getPartNum()) * Integer.parseInt(app.getServicePartBeansList().get(i).getPartUnit());
}
listRelative.setVisibility(View.VISIBLE);
ViewTreeObserver vto2 = tabLayout.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
tabLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
height = tabLayout.getHeight();
LinearLayout.LayoutParams lp5 = new LayoutParams(LayoutParams.FILL_PARENT,app.getServicePartBeansList().size() * height - 1);
listRelative.setLayoutParams(lp5);
adapter = new MyAdapter(RepairOfSingleActivity.this,app.getServicePartBeansList());
listView.setAdapter(adapter);
}
});
}
setUnits();
completeDateStr = repairDateStr = calendar.get(Calendar.YEAR) + "-"+ (calendar.get(Calendar.MONTH) + 1) + "-"+ calendar.get(Calendar.DAY_OF_MONTH);
btnRepairDate.setText(repairDateStr);
btnCompleteDate.setText(completeDateStr);
yearStart = calendar.get(Calendar.YEAR);
monthStart = calendar.get(Calendar.MONTH) + 1;
dayStart = calendar.get(Calendar.DAY_OF_MONTH);
}
private void initListeners() {
btnRepairDate.setOnClickListener(this);
btnCompleteDate.setOnClickListener(this);
addParts.setOnClickListener(this);
repairMonery.addTextChangedListener(watcher2);
tripsMonery.addTextChangedListener(watcher3);
partPriceM.addTextChangedListener(watcher);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnRepairDate:
dialog = UIUtil.createDatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker dp, int year,int month, int dayOfMonth) {
isStartDateValidate = DateUtil.compareDateIsLessThanNow(year, month,dayOfMonth);
if (isStartDateValidate) {
repairDateStr = year + "-" + (month + 1) + "-"+ dayOfMonth;
btnRepairDate.setText(repairDateStr);
}
yearStart = year;
monthStart = month;
dayStart = dayOfMonth;
}
});
dialog.show();
break;
case R.id.btnCompleteDate:
dialog = UIUtil.createDatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker dp, int year,int month, int dayOfMonth) {
isEndDateValidate = DateUtil.compareDateIsLessThanNow(year, month,dayOfMonth);
Boolean tartAndEndComBoolean = compareEndFromStart(year, month, dayOfMonth, yearStart,monthStart, dayStart);
if (isEndDateValidate && tartAndEndComBoolean) {
completeDateStr = year + "-" + (month + 1) + "-" + dayOfMonth;
btnCompleteDate.setText(completeDateStr);
}
}
});
dialog.show();
break;
case R.id.addParts:
flagParts = false;
if (!partNumM.getText().toString().trim().equals("") && !partPriceM.getText().toString().trim().equals("")) {
alertDialog();
} else {
Toast.makeText(RepairOfSingleActivity.this, "请完善零件信息",Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
// 维修费、差旅费监听
private TextWatcher watcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (!partNumM.getText().toString().trim().equals("")&& !partPriceM.getText().toString().trim().equals("")) {
onePartsMoneryInt = Integer.parseInt(partNumM.getText().toString().trim()) * Integer.parseInt(partPriceM.getText().toString().trim());
setUnits();
OldParts oldParts = new OldParts();
oldParts.setPartDeep(partDeep.getText().toString().trim());
oldParts.setPartName(partDeep.getText().toString().trim());
oldParts.setPartNumM(partNumM.getText().toString().trim());
oldParts.setPartPriceM(partPriceM.getText().toString().trim());
app.setOldParts(oldParts);
} else {
Toast.makeText(RepairOfSingleActivity.this, "请完善零件信息",Toast.LENGTH_SHORT).show();
}
}
};
// 维修费、差旅费监听
private TextWatcher watcher2 = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (!repairMonery.getText().toString().trim().equals("")) {
repairMoneryInt = Integer.parseInt(repairMonery.getText().toString().trim());
totalMonery.setText(String.valueOf(partsMoneryInt + tripsMoneryInt+ repairMoneryInt + onePartsMoneryInt));
}
}
};
private TextWatcher watcher3 = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
if (!tripsMonery.getText().toString().trim().equals("")) {
tripsMoneryInt = Integer.parseInt(tripsMonery.getText().toString().trim());
totalMonery.setText(String.valueOf(partsMoneryInt + tripsMoneryInt + repairMoneryInt + onePartsMoneryInt));
}
}
};
/**
* @author Administrator
* 新增零件适配器
*/
class MyAdapter extends BaseAdapter {
private List<ServicePartBean> list = new ArrayList<ServicePartBean>();
private LayoutInflater flater;
public MyAdapter(Context context, List<ServicePartBean> list) {
if (null != list) {
this.list = list;
}
flater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
ViewHolder holder = null;
if (null == convertView) {
holder = new ViewHolder();
convertView = flater.inflate(R.layout.repair_single_listitem,null);
TextView partName = (TextView) convertView.findViewById(R.id.partNameAdd);
TextView partRules = (TextView) convertView.findViewById(R.id.partRulesAdd);;
TextView partNum = (TextView) convertView.findViewById(R.id.partNumAdd);
TextView partPrice = (TextView) convertView.findViewById(R.id.partPriceAdd);
holder.partName = partName;
holder.partNum = partNum;
holder.partPrice = partPrice;
holder.partRules = partRules;
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final ServicePartBean seBean = list.get(position);
if (null != seBean) {
holder.partName.setText(seBean.getPartName());
holder.partRules.setText(seBean.getPartRules());
holder.partNum.setText(seBean.getPartNum());
holder.partPrice.setText(seBean.getPartUnit());
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
flagParts = true;
positi = position;
if (!partNumM.getText().toString().trim().equals("")&& !partPriceM.getText().toString().trim().equals("")) {
alertDialog();
} else {
Toast.makeText(RepairOfSingleActivity.this,"请完善零件信息", Toast.LENGTH_SHORT).show();
}
}
});
} else {
holder.partName.setText("无数据");
}
return convertView;
}
}
class ViewHolder {
private TextView partName;
private TextView partRules;
private TextView partNum;
private TextView partPrice;
}
/** 时间选择对比
* @param yearEnd 结束 年
* @param monthEnd 结束 月
* @param dayOfMontEnd 结束 日
* @param year 开始 年
* @param month 开始 月
* @param dayOfMonthh 开始 日
* @return
*/
public static boolean compareEndFromStart(int yearEnd, int monthEnd,
int dayOfMontEnd, int year, int month, int dayOfMonthh) {
Boolean compareBoolean = false;
if (yearEnd >= year) {
if (monthEnd >= month) {
if (dayOfMontEnd >= dayOfMonthh) {
compareBoolean = true;
}
}
} else {
compareBoolean = false;
}
return compareBoolean;
}
/**
* 零件费、总费用
*/
private void setUnits() {
partsMonery.setText(String.valueOf(partsMoneryInt + onePartsMoneryInt));
totalMonery.setText(String.valueOf(partsMoneryInt + tripsMoneryInt + repairMoneryInt + onePartsMoneryInt));
}
/**
* 新增零件及零件修改弹出框
*/
private void alertDialog() {
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View alerView = inflater.inflate(R.layout.alert_dialog, null);
final AlertDialog.Builder abDialog = new AlertDialog.Builder(RepairOfSingleActivity.this);
abDialog.setView(alerView);
Button btnSave = (Button) alerView.findViewById(R.id.btnSave);
Button btnCancel = (Button) alerView.findViewById(R.id.btnCancel);
final EditText alertName = (EditText) alerView.findViewById(R.id.alertName);
final EditText alertRules = (EditText) alerView.findViewById(R.id.alertRules);
final EditText alertNum = (EditText) alerView.findViewById(R.id.alertNum);
final EditText alertMonery = (EditText) alerView.findViewById(R.id.alertMonery);
final AlertDialog alert = abDialog.create();// 通过Builder.Create()来创建AlertDialog对象
if (flagParts) {//修改
alertName.setText(addPartList.get(positi).getPartName());
alertMonery.setText(addPartList.get(positi).getPartUnit());
alertRules.setText(addPartList.get(positi).getPartRules());
alertNum.setText(addPartList.get(positi).getPartNum());
}
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (flagParts) {
addPartList.remove(positi);
} else {
if (null != app.getServicePartBeansList()
&& app.getServicePartBeansList().size() != 0) {
addPartList = app.getServicePartBeansList();
}
}
String partNameAlert = alertName.getText().toString().trim();
String partRulesAlert = alertRules.getText().toString().trim();
String partNumAlert = alertNum.getText().toString().trim();
String partUnitAlert = alertMonery.getText().toString().trim();
if (!partNameAlert.equals("") && !partRulesAlert.equals("") && !partNumAlert.equals("") && !partUnitAlert.equals("")) {
ServicePartBean servicePartBean = new ServicePartBean();
servicePartBean.setGuid();//生成guid
servicePartBean.setServiceGuid("");
servicePartBean.setPartName(partNameAlert);
servicePartBean.setPartRules(partRulesAlert);
servicePartBean.setPartNum(partNumAlert);
servicePartBean.setPartUnit(partUnitAlert);
addPartList.add(servicePartBean);
listRelative.setVisibility(View.VISIBLE);
ViewTreeObserver vto2 = tabLayout.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
tabLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
height = tabLayout.getHeight();
Log.wtf("450", height+"");
adapter = new MyAdapter(RepairOfSingleActivity.this,addPartList);
listView.setAdapter(adapter);
LinearLayout.LayoutParams lp5 = new LayoutParams(LayoutParams.FILL_PARENT,addPartList.size() * height - 1);
listRelative.setLayoutParams(lp5);
}
});
app.setServicePartBeansList(addPartList);
partsMoneryInt = 0;
if (addPartList.size() != 0) {
for (int i = 0; i < addPartList.size(); i++) {
partsMoneryInt += Integer.parseInt(addPartList.get(i).getPartNum()) * Integer.parseInt(addPartList.get(i).getPartUnit());
}
setUnits();
}
alert.cancel();
} else {
Toast.makeText(RepairOfSingleActivity.this, "请完善新增零件信息",
Toast.LENGTH_SHORT).show();
}
}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alert.cancel();
}
});
alert.show();// /获取AlertDialog对象后,调用Show()显示
}
private void submitContents()
{
if (!content.getText().toString().trim().equals("") && !partName.getText().toString().trim().equals("") && !partNumM.getText().toString().trim().equals("") && !partPriceM.getText().toString().trim().equals("")) {
float travelCharge = 0;
float serviceCost = 0;
if (!tripsMonery.getText().toString().trim().equals("")) {
travelCharge = Integer.parseInt(tripsMonery.getText().toString().trim());
}
if (!repairMonery.getText().toString().trim().equals("")) {
serviceCost = Integer.parseInt(repairMonery.getText().toString().trim());
}
serviceFileBean = new ServiceFileBean();
serviceFileBean.setServiceManName(sentEmpBean.getRepairManName());// 派工人的姓名
serviceFileBean.setServiceManmoblie(sentEmpBean.getRepairManMobile());// 派工人的电话
serviceFileBean.setInnerEmployeeGuid(sentEmpBean.getInnerEmployeeGuid());// 被派工人员的guid
serviceFileBean.setSentEmployeeGuid(sentEmpBean.getGuid());// 派工单GUID
serviceFileBean.setServiceDetail(content.getText().toString().trim());// 维修内容
serviceFileBean.setServiceDate(DateUtil.parseDate(repairDateStr));// 维修人日期
serviceFileBean.setFinishDate(DateUtil.parseDate(completeDateStr));// 完成日期
serviceFileBean.setServiceCost(serviceCost);// 维修费
serviceFileBean.setTravelCharge(travelCharge);// 差旅费
serviceFileBean.setPartsCharge(partsMoneryInt+ onePartsMoneryInt);// 零件费(所有零件总费用)
serviceFileBean.setTotalCharge(partsMoneryInt+ tripsMoneryInt + repairMoneryInt+ onePartsMoneryInt);// 总金额
addServiceFileTask = new AddServiceFileTask(RepairOfSingleActivity.this, app,serviceFileBean, addPartList);
addServiceFileTask.execute();
}else
{
Toast.makeText(RepairOfSingleActivity.this, "请完善信息", Toast.LENGTH_SHORT).show();
}
}
}