package com.jiuqi.njt.ui; import java.lang.reflect.UndeclaredThrowableException; import java.util.Calendar; import java.util.HashMap; import android.app.DatePickerDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewStub; import android.widget.Button; import android.widget.CheckBox; import android.widget.DatePicker; import android.widget.EditText; import android.widget.TextView; import com.jiuqi.mobile.nigo.comeclose.bean.app.news.WorkTaskNewsBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.AdminAreaBean; import com.jiuqi.mobile.nigo.comeclose.bean.base.DataDictionaryBean; import com.jiuqi.mobile.nigo.comeclose.exception.NiGoException; import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext; import com.jiuqi.njt.R; import com.jiuqi.njt.model.CModuleBean; import com.jiuqi.njt.model.ModuleType; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.DateUtil; import com.jiuqi.njt.util.ReturnObject; import com.jiuqi.njt.util.TitleBarUtil; import com.jiuqi.njt.util.UIUtil; import com.jiuqi.njt.util.ValidateRule; import com.jiuqi.njt.util.Validator; import com.jiuqi.njt.widget.DialogWithList; import com.jiuqi.njt.widget.ProgressDialogStyle; public class PostInfoJobsActivity extends AbstractNjtActivity01 implements OnClickListener { private String tag = this.getClass().getName(); // mark值见 com.jiuqi.mobile.nigo.comeclose.bean.app.news.WorkTaskNewsBean private Button btnInfoCategory; private Button btnCropCategory; private EditText etScope; private EditText min_etPrice; private Button btnStartDate; private Button btnEndDate; private EditText etContacts; private EditText etPhone; private Button btnProvince; private EditText etXianShi; private EditText etComments; private Button btnMap; private Button btnSubmit; private DataDictionaryBean[] JOB_INFO_TYPE_dataDictionaryBeans; private DataDictionaryBean[] CROP_TYPE_dataDictionaryBeans; private SubmitInfoAsyncTask submitInfoAsyncTask; private boolean isStartDateValidate, isEndDateValidate; private CheckBox send_job_to_driver; private EditText max_etPrice; private CModuleBean moduleBean; @Override protected void onCreate(Bundle savedInstanceState) { isPostinfo = true; super.onCreate(savedInstanceState); } @Override protected void initParam() { super.initParam(); moduleBean = (CModuleBean) getIntent().getSerializableExtra( Constants.PARAM_MODULEBEAN); } @Override protected void onQueryComplete(HashMap<Integer, DataDictionaryBean[]> result) { JOB_INFO_TYPE_dataDictionaryBeans = result.get(JOB_INFO_TYPE_MARK); CROP_TYPE_dataDictionaryBeans = result.get(CROP_TYPE_MARK); final String[] strArrayContentA = getNames(JOB_INFO_TYPE_dataDictionaryBeans); final String[] strArrayContentB = getNames(CROP_TYPE_dataDictionaryBeans); if (null != moduleBean && moduleBean.getModuleFlag() != ModuleType.zyfb) { switch (moduleBean.getModuleFlag()) { case jbxxfb: btnInfoCategory.setText("机播信息"); break; case jsxxfb: btnInfoCategory.setText("机收信息"); break; case jgxxfb: btnInfoCategory.setText("机耕信息"); break; case ssfb: btnInfoCategory.setText("深松信息"); break; case jghtxxfb: btnInfoCategory.setText("秸秆还田"); break; case khxxfb: btnInfoCategory.setText("抗旱信息"); break; case zbxxfb: btnInfoCategory.setText("植保信息"); break; default: break; } } else { if (strArrayContentA.length > 0) { btnInfoCategory.setText(strArrayContentA[0]); } btnInfoCategory.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { DialogWithList.Builder dialog = new DialogWithList.Builder( PostInfoJobsActivity.this); dialog.setTitle("信息类别"); dialog.setPositiveButton(Constants.CANCEL_TEXT, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }); dialog.setItems(strArrayContentA, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { btnInfoCategory .setText(strArrayContentA[which]); dialog.dismiss(); } }); dialog.create().show(); } }); } if (strArrayContentB.length > 0) { btnCropCategory.setText(strArrayContentB[0]); } btnCropCategory.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { DialogWithList.Builder dialog = new DialogWithList.Builder( PostInfoJobsActivity.this); dialog.setTitle("作物种类"); dialog.setPositiveButton(Constants.CANCEL_TEXT, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); dialog.setItems(strArrayContentB, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { btnCropCategory .setText(strArrayContentB[which]); dialog.dismiss(); } }); dialog.create().show(); } }); try { ClientContext context = application.getClientContext(); user = context.getUser(); if (user != null) { xzqh = user.getAdminArea(); } // 登录之后获取 if (null != xzqh) { btnProvince.setText(xzqh.getFullName()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override protected void initWidgets() { setContentView(R.layout.post_info_jobs_activity); ViewStub rlTitleBar = (ViewStub) findViewById(R.id.titleBarStub); String title = ""; if (null != moduleBean) { title = UIUtil .convertModuleTypeToString(moduleBean.getModuleFlag()); } else { title = "作业面积发布"; } TitleBarUtil.createTitleBar(this, rlTitleBar, title, new OnClickListener() { @Override public void onClick(View v) { PostInfoJobsActivity.this.finish(); } }); btnInfoCategory = (Button) findViewById(R.id.btnInfoCategory); btnCropCategory = (Button) findViewById(R.id.btnCropCategory); etScope = (EditText) findViewById(R.id.etScope); min_etPrice = (EditText) findViewById(R.id.min_etPrice); max_etPrice = (EditText) findViewById(R.id.max_etPrice); btnStartDate = (Button) findViewById(R.id.btnStartDate); btnEndDate = (Button) findViewById(R.id.btnEndDate); etContacts = (EditText) findViewById(R.id.etContacts); etPhone = (EditText) findViewById(R.id.etPhone); btnProvince = (Button) findViewById(R.id.btnProvince); etXianShi = (EditText) findViewById(R.id.etXianShi); etComments = (EditText) findViewById(R.id.etComments); btnMap = (Button) findViewById(R.id.btnMap); btnSubmit = (Button) findViewById(R.id.btnSubmit); send_job_to_driver = (CheckBox) findViewById(R.id.send_job_to_driver); } protected void initListeners() { btnSubmit.setOnClickListener(this); btnStartDate.setOnClickListener(this); btnEndDate.setOnClickListener(this); btnMap.setOnClickListener(this); btnProvince.setOnClickListener(this); } protected void initUI() { btnStartDate.setText(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH)); // 结束时间默认为开始时间第七天 btnEndDate .setText(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + (calendar.get(Calendar.DAY_OF_MONTH) + Constants.ENDDATE_MORE_THAN_STARTDATE)); etContacts.setText(sharePre.getPres("username")); etPhone.setText(sharePre.getPres("mobileNumber")); } @Override public void onClick(View v) { Dialog dialog = null; switch (v.getId()) { case R.id.btnStartDate: dialog = UIUtil.createDatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker dp, int year, int month, int dayOfMonth) { isStartDateValidate = DateUtil .compareDateIsLessThanNow(year, month, dayOfMonth); btnStartDate.setText(year + "-" + (month + 1) + "-" + dayOfMonth); } }); dialog.show(); break; case R.id.btnEndDate: dialog = UIUtil.createDatePickerDialog(this, Calendar.MONTH, (Calendar.DAY_OF_MONTH), new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker dp, int year, int month, int dayOfMonth) { isEndDateValidate = DateUtil .compareDateIsLessThanNow(year, month, dayOfMonth); btnEndDate.setText(year + "-" + (month + 1) + "-" + dayOfMonth); } }); dialog.show(); break; // 省市那个对话框还得讨论下,再给出来。 case R.id.btnProvince: UIUtil.requestXzqh(this, xzqh); break; case R.id.btnMap: Intent intent = new Intent(); intent.setClass(this, PoiLocateActivity.class); startActivityForResult(intent, Constants.REQUEST_MAP_LOCATE_CODE); break; case R.id.btnSubmit: if (UIUtil.isFastDoubleClick()) { return; } if (doValidate()) { submitInfoAsyncTask = new SubmitInfoAsyncTask(); submitInfoAsyncTask.execute(); } break; default: break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == Constants.REQUEST_MAP_LOCATE_CODE) { if (resultCode == RESULT_OK) { longitude = data.getDoubleExtra("longitude", 0);//91、31 latitude = data.getDoubleExtra("latitude", 0); Log.v(Constants.TAG, "longitude: " + longitude + " latitude: " + latitude); btnMap.setText("已标记"); } } else if (requestCode == Constants.REQUEST_XZQH_CODE) { if (resultCode == RESULT_OK) { AdminAreaBean xzqh = (AdminAreaBean) data .getSerializableExtra(Constants.PARAM_XZQH); Log.v(Constants.TAG, xzqh.toString()); this.xzqh = xzqh; btnProvince.setText(xzqh.getFullName()); } } } /** * 验证界面上的录入项 * * @return boolean */ private boolean doValidate() { Validator validator = null; ReturnObject ro = null; // 验证这些控件是不是都有内容了 TextView[] widgets = new TextView[] { btnInfoCategory, btnCropCategory, etScope, min_etPrice, max_etPrice, btnStartDate, btnEndDate, etContacts, etPhone }; // btnProvince validator = new Validator(); validator.addRules(ValidateRule.IS_NOT_EMPTY, ValidateRule.IS_REACH_MAX_LENGTH); for (TextView w : widgets) { ro = validator.val(w.getText()); if (!ro.isSuccess) { UIUtil.showMsg(this, w.getHint().toString()); w.requestFocus(); return false; } } // 验证这些控件是不是都是纯数字 validator.clearRules(); validator.addRules(ValidateRule.IS_DIGITS_ONLY); widgets = new TextView[] { etScope, min_etPrice }; for (TextView w : widgets) { ro = validator.val(w.getText()); if (!ro.isSuccess) { UIUtil.showMsg(this, ro.getErrorMessage()); w.requestFocus(); return false; } } widgets = new TextView[] { etScope, max_etPrice }; for (TextView w : widgets) { ro = validator.val(w.getText()); if (!ro.isSuccess) { UIUtil.showMsg(this, ro.getErrorMessage()); w.requestFocus(); return false; } } // 经纬度不能为空,所在地必须到省市县 // if(latitude==0.0 && longitude==0.0){ // UIUtil.showMsg(this, "请在地图上标记"); // return false; // } int min = 0, max = 0; try { min = Integer.parseInt(min_etPrice.getText().toString()); max = Integer.parseInt(max_etPrice.getText().toString()); } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (min > max) { UIUtil.showMsg(this, "请确认你的作业价格"); return false; } if (isStartDateValidate) { UIUtil.showMsg(this, "开始日期不能小于当天"); return false; } if (isEndDateValidate) { UIUtil.showMsg(this, "截止日期不能小于当天"); return false; } Log.e("时间参数:", btnStartDate.getText().toString().replace("-", "") + " " + btnEndDate.getText().toString().replace("-", "")); if (DateUtil.isEndDateBeforeStartDate(btnStartDate.getText().toString() .replace("-", ""), btnEndDate.getText().toString().replace("-", ""))) { UIUtil.showMsg(this, "截止日期不能小于开始时间"); return false; } if (null != xzqh) { if (xzqh.getProvinceCode() == 0 || xzqh.getCityCode() == 0 || xzqh.getCountryCode() == 0) { btnProvince.requestFocus(); UIUtil.showMsg(this, "请选择省市县(详细到县级)"); return false; } } // if ("".equals(btnMap.getText().toString().trim())) { // // new LocationTask().execute(); // LocationModule locModule = new LocationModule(); // LocationUtils locUtil = new LocationUtils(PostInfoJobsActivity.this); // locUtil.getLocation(locModule, "-1", baidu); // latitude = locModule.getLat(); // longitude = locModule.getLon(); // } // Log.e("jingeweidu ", latitude + "==" + longitude); return true; } /** * 提交信息,访问网络时必须变成异步任务才可以提交,2.3规则。 */ private class SubmitInfoAsyncTask extends AsyncTask<Void, Void, String> { Dialog pd = null; protected void onPreExecute() { pd = ProgressDialogStyle.createLoadingDialog( PostInfoJobsActivity.this, "发布中,请稍后"); pd.show(); } @Override protected String doInBackground(Void... params) { String msg = ""; try { CharSequence btnInfoCategoryText = btnInfoCategory.getText(); CharSequence btnCropCategoryText = btnCropCategory.getText(); CharSequence etScopeText = etScope.getText(); CharSequence min_etPriceText = min_etPrice.getText(); CharSequence max_etPriceText = max_etPrice.getText(); CharSequence btnStartDateText = btnStartDate.getText(); CharSequence btnEndDateText = btnEndDate.getText(); CharSequence etContactsText = etContacts.getText(); CharSequence etPhoneText = etPhone.getText(); CharSequence btnProvinceText = btnProvince.getText(); CharSequence etXianShiText = etXianShi.getText(); CharSequence etCommentsText = etComments.getText(); WorkTaskNewsBean job = new WorkTaskNewsBean(); job.setAddPersonGuid(user.getGuid()); job.setAddPersonName(user.getUserName()); job.setAddPersonMobileNumber(user.getMobileNumber()); // 信息类别 if (null != JOB_INFO_TYPE_dataDictionaryBeans && JOB_INFO_TYPE_dataDictionaryBeans.length > 0) { for (DataDictionaryBean i : JOB_INFO_TYPE_dataDictionaryBeans) { if (i.getMark() == JOB_INFO_TYPE_MARK &&( i.getName().equalsIgnoreCase( btnInfoCategoryText.toString())||i.getName().contains(btnInfoCategoryText.toString()))) { job.setNewsType(i); break; } } } // 作物种类 if (null != CROP_TYPE_dataDictionaryBeans && CROP_TYPE_dataDictionaryBeans.length > 0) { for (DataDictionaryBean i : CROP_TYPE_dataDictionaryBeans) { if (i.getMark() == CROP_TYPE_MARK && i.getName().equalsIgnoreCase( btnCropCategoryText.toString())) { job.setWorkType(i); break; } } } Log.e(tag, btnInfoCategoryText.toString() + "==" + btnCropCategoryText); job.setMus(UIUtil.tryToInteger(etScopeText.toString())); job.setMinPrice(UIUtil.tryToDouble(min_etPriceText.toString())); job.setMaxPrice(UIUtil.tryToDouble(max_etPriceText.toString())); job.setCreateDate(); job.setStartDate(DateUtil.parseDate(btnStartDateText.toString())); job.setEndDate(DateUtil.parseDate(btnEndDateText.toString())); job.setContactor(etContactsText.toString()); job.setContactMobileNumber(etPhoneText.toString()); job.setAdminAreaCode(xzqh); job.setAddress(etXianShiText.toString()); if(0==latitude&&0==longitude){ latitude = application.getLat(); longitude =application.getLon(); } job.setLatitude(latitude);//latitude = biaoji = 31 int temp = 1; if (!send_job_to_driver.isChecked()) { temp = 0; } job.setIsPush(temp); job.setLongitude(longitude);//longitude = biaoji = 31 job.setComments(etCommentsText == null ? "" : etCommentsText .toString()); Log.e(tag, job.toString()); if (null != inewsmanager) { // inewsmanager.publish(job); inewsmanager.publish(job, user); } // if(checkBox2_Jobs.isChecked()){ // UserPositionBean[] data = // position.getPoisBySelectKey(prepareDDData(null)); // } msg = "信息已发布"; } catch (Exception e) { if (e instanceof UndeclaredThrowableException) { msg = e.getMessage(); } else { msg = "信息发布失败"; } e.printStackTrace(); } return msg; } @Override protected void onPostExecute(String result) { pd.dismiss(); if (!TextUtils.isEmpty(result.trim())) { UIUtil.showMsg(PostInfoJobsActivity.this, result); } PostInfoJobsActivity.this.finish(); } } }