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