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