|
|
@@ -20,6 +20,7 @@ import com.alibaba.fastjson.JSON;
|
|
|
import com.baidu.mapapi.search.core.PoiInfo;
|
|
|
import com.xzjmyk.pm.activity.MyApplication;
|
|
|
import com.xzjmyk.pm.activity.R;
|
|
|
+import com.xzjmyk.pm.activity.bean.oa.OfficeAddressBean;
|
|
|
import com.xzjmyk.pm.activity.bean.oa.SelectBean;
|
|
|
import com.xzjmyk.pm.activity.ui.base.BaseActivity;
|
|
|
import com.xzjmyk.pm.activity.ui.erp.activity.oa.LocationSearchActivity;
|
|
|
@@ -32,6 +33,9 @@ import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
|
|
|
import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
|
|
|
import com.xzjmyk.pm.activity.view.MyListView;
|
|
|
|
|
|
+import org.json.JSONException;
|
|
|
+import org.json.JSONObject;
|
|
|
+
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.LinkedHashMap;
|
|
|
@@ -47,6 +51,7 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
private static final int GET_SIGN_DDRESSS = 11901;
|
|
|
private static final int SAVE_ADDRESS_REQUEST = 12001;
|
|
|
private static final int WORK_RANGE_REQUESTCODE = 12002;
|
|
|
+ private static final int ADDRESS_DELETE_REQUEST = 12101;
|
|
|
private TextView sign_range; //打卡范围
|
|
|
private TextView work_range; //办公范围
|
|
|
private MyListView address_lv; //地址列表
|
|
|
@@ -59,9 +64,16 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
private List<String> address_location; //办公地址详细
|
|
|
private List<String> address_longitude; //经度
|
|
|
private List<String> address_latitud; //纬度
|
|
|
+ private List<String> address_id; //地址id
|
|
|
private String caller = "comAddressSet";
|
|
|
- private int saved_num;
|
|
|
+ private int saved_num = 0;
|
|
|
private int save_address_size;
|
|
|
+ private int default_sign_range = 300; //默认打卡范围
|
|
|
+ private int default_work_range = 500; //默认办公范围
|
|
|
+ private int delete_position = 0; //记录删除的位置position
|
|
|
+ private OfficeAddressBean mOfficeAddressBean;
|
|
|
+ private int listdada_size;
|
|
|
+
|
|
|
private Handler handler = new Handler(){
|
|
|
@Override
|
|
|
public void handleMessage(Message msg) {
|
|
|
@@ -81,16 +93,29 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
if (!StringUtils.isEmpty(msg.getData().getString("result"))){
|
|
|
String save_address_result = msg.getData().getString("result");
|
|
|
LogUtil.prinlnLongMsg("save_address_result", save_address_result);
|
|
|
- for (int i = 1; i <= address_names.size(); i++) {
|
|
|
- if (saved_num == address_names.size())
|
|
|
- {
|
|
|
- progressDialog.dismiss();
|
|
|
- }
|
|
|
- Toast.makeText(ct,"办公地址" + i + "保存成功",Toast.LENGTH_SHORT).show();
|
|
|
- }
|
|
|
-
|
|
|
- saved_num++;
|
|
|
+// if (saved_num == address_names.size() - 1 )
|
|
|
+// {//TODO 有待优化
|
|
|
+ progressDialog.dismiss();
|
|
|
+ Toast.makeText(ct, "办公地址保存成功", Toast.LENGTH_SHORT).show();
|
|
|
+// }
|
|
|
+// saved_num++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ADDRESS_DELETE_REQUEST:
|
|
|
+ if (msg.getData() != null){
|
|
|
+ if (!StringUtils.isEmpty(msg.getData().getString("result"))){
|
|
|
+ address_names.remove(delete_position);
|
|
|
+ address_location.remove(delete_position);
|
|
|
+ address_longitude.remove(delete_position);
|
|
|
+ address_latitud.remove(delete_position);
|
|
|
+ address_id.remove(delete_position);
|
|
|
+ listdada_size--;
|
|
|
+ myadapter.notifyDataSetChanged();
|
|
|
+ ToastMessage("删除成功");
|
|
|
}
|
|
|
+ }else {
|
|
|
+ ToastMessage("删除失败");
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
@@ -98,13 +123,13 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
if (!StringUtils.isEmpty(msg.getData().getString("result"))) {
|
|
|
ToastMessage(msg.getData().getString("result"));
|
|
|
}
|
|
|
+ progressDialog.dismiss();
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
super.onCreate(savedInstanceState);
|
|
|
@@ -125,7 +150,11 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
address_location = new ArrayList<>();
|
|
|
address_latitud = new ArrayList<>();
|
|
|
address_longitude = new ArrayList<>();
|
|
|
+ address_id = new ArrayList<>();
|
|
|
+
|
|
|
+ mOfficeAddressBean = new OfficeAddressBean();
|
|
|
myadapter = new OfficeAddressAdapter();
|
|
|
+ myadapter.setmOfficeAddressBean(mOfficeAddressBean);
|
|
|
address_lv.setAdapter(myadapter);
|
|
|
}
|
|
|
|
|
|
@@ -133,39 +162,73 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
//初次进来获取考勤地址设置接口请求
|
|
|
String url = Constants.getAppBaseUrl(getApplicationContext()) + "/mobile/getcomaddressset.action";
|
|
|
Map<String,Object> param = new HashMap<>();
|
|
|
- //TODO 传入的参数还未添加
|
|
|
LinkedHashMap headers = new LinkedHashMap();
|
|
|
headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
|
|
|
ViewUtil.httpSendRequest(getApplicationContext(), url, param, handler, headers, GET_SIGN_DDRESSS, null, null, "post");
|
|
|
|
|
|
- saved_num = 1;
|
|
|
}
|
|
|
|
|
|
private void doShowSignAddress(String get_sign_address_result) {
|
|
|
- String first_sign_range = JSON.parseObject(get_sign_address_result).getString("CS_VALIDRANGE");
|
|
|
- String first_work_range = JSON.parseObject(get_sign_address_result).getString("CS_INNERDISTANCE");
|
|
|
- String first_cs_latitude = JSON.parseObject(get_sign_address_result).getString("CS_LATITUDE");
|
|
|
- String first_cs_longitude = JSON.parseObject(get_sign_address_result).getString("CS_LONGITUDE");
|
|
|
- String first_cs_workaddr = JSON.parseObject(get_sign_address_result).getString("CS_WORKADDR");
|
|
|
- String first_cs_shortname = JSON.parseObject(get_sign_address_result).getString("CS_SHORTNAME");
|
|
|
- if (!StringUtils.isEmpty(first_sign_range) && !StringUtils.isEmpty(first_work_range) && !StringUtils.isEmpty(first_cs_latitude) &&
|
|
|
- !StringUtils.isEmpty(first_cs_longitude) && !StringUtils.isEmpty(first_cs_workaddr) && !StringUtils.isEmpty(first_cs_shortname)){
|
|
|
- sign_range.setText(first_sign_range + "米");
|
|
|
- work_range.setText(first_work_range + "米");
|
|
|
-
|
|
|
- address_names.add(first_cs_shortname);
|
|
|
- address_location.add(first_cs_workaddr);
|
|
|
- address_longitude.add(first_cs_longitude);
|
|
|
- address_latitud.add(first_cs_latitude);
|
|
|
- }else {
|
|
|
- sign_range.setText("300米");
|
|
|
- work_range.setText("500米");
|
|
|
+ try {
|
|
|
+ JSONObject resultJsonObject = new JSONObject(get_sign_address_result);
|
|
|
+ if (resultJsonObject != null){
|
|
|
+ mOfficeAddressBean = JSON.parseObject(resultJsonObject.toString(),OfficeAddressBean.class);
|
|
|
+ if (!ListUtils.isEmpty(mOfficeAddressBean.getListdata())){
|
|
|
+ listdada_size = mOfficeAddressBean.getListdata().size();
|
|
|
+ for (int i = 0; i < listdada_size; i++) {
|
|
|
+ if (!StringUtils.isEmpty(mOfficeAddressBean.getListdata().get(i).getCS_SHORTNAME())){
|
|
|
+ address_names.add(mOfficeAddressBean.getListdata().get(i).getCS_SHORTNAME());
|
|
|
+ }else {
|
|
|
+ address_names.add("");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!StringUtils.isEmpty(mOfficeAddressBean.getListdata().get(i).getCS_WORKADDR())){
|
|
|
+ address_location.add(mOfficeAddressBean.getListdata().get(i).getCS_WORKADDR());
|
|
|
+ }else {
|
|
|
+ address_location.add("");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!StringUtils.isEmpty(mOfficeAddressBean.getListdata().get(i).getCS_LATITUDE())){
|
|
|
+ address_latitud.add(mOfficeAddressBean.getListdata().get(i).getCS_LATITUDE());
|
|
|
+ }else {
|
|
|
+ address_latitud.add("");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!StringUtils.isEmpty(mOfficeAddressBean.getListdata().get(i).getCS_LONGITUDE())){
|
|
|
+ address_longitude.add(mOfficeAddressBean.getListdata().get(i).getCS_LONGITUDE());
|
|
|
+ }else {
|
|
|
+ address_longitude.add("");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (mOfficeAddressBean.getListdata().get(i).getCS_ID() != 0){
|
|
|
+ address_id.add(mOfficeAddressBean.getListdata().get(i).getCS_ID() + "");
|
|
|
+ }else {
|
|
|
+ address_id.add("-1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ myadapter.setAddress_names(address_names);
|
|
|
+ myadapter.notifyDataSetChanged();
|
|
|
+
|
|
|
+ if (!StringUtils.isEmpty(mOfficeAddressBean.getListdata().get(0).getCS_VALIDRANGE())){
|
|
|
+ sign_range.setText(mOfficeAddressBean.getListdata().get(0).getCS_VALIDRANGE() + "米");
|
|
|
+ }else {
|
|
|
+ sign_range.setText(default_sign_range + "米");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (mOfficeAddressBean.getListdata().get(0).getCS_INNERDISTANCE() > 0){
|
|
|
+ work_range.setText(mOfficeAddressBean.getListdata().get(0).getCS_INNERDISTANCE() + "米");
|
|
|
+ }else {
|
|
|
+ work_range.setText(default_work_range + "米");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (JSONException e) {
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void clickEvent(){
|
|
|
sign_range.setOnClickListener(new View.OnClickListener() {
|
|
|
-
|
|
|
@Override
|
|
|
public void onClick(View v) {
|
|
|
String[] distance = getResources().getStringArray(R.array.sign_distance);
|
|
|
@@ -182,6 +245,7 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
doSelectRange(distance, requestCode);
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
add_address.setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(View v) {
|
|
|
@@ -284,21 +348,32 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
if (requestCode == ADDRESS_CHANGE && resultCode == ADDRESS_CHANGE) {//地址微调
|
|
|
PoiInfo poi = data.getParcelableExtra("resultName");
|
|
|
if (poi == null) return;
|
|
|
- //TODO 将每次点击地址返回的值add到自定义列表中,
|
|
|
+ // 将每次点击地址返回的值add到自定义列表中,
|
|
|
address_lv.setVisibility(View.VISIBLE);
|
|
|
address_names.add(poi.name);
|
|
|
address_location.add(poi.address);
|
|
|
address_latitud.add(String.valueOf(poi.location.latitude));
|
|
|
address_longitude.add(String.valueOf(poi.location.longitude));
|
|
|
-
|
|
|
+ LogUtil.prinlnLongMsg("getpoi",JSON.toJSONString(poi));
|
|
|
}
|
|
|
myadapter.setAddress_names(address_names);
|
|
|
myadapter.notifyDataSetChanged();
|
|
|
}
|
|
|
+
|
|
|
+ //地点显示列表适配器
|
|
|
public class OfficeAddressAdapter extends BaseAdapter{
|
|
|
+ private OfficeAddressBean mOfficeAddressBean;
|
|
|
private List<String> address_names;
|
|
|
private int mPosition;
|
|
|
|
|
|
+ public OfficeAddressBean getmOfficeAddressBean() {
|
|
|
+ return mOfficeAddressBean;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setmOfficeAddressBean(OfficeAddressBean mOfficeAddressBean) {
|
|
|
+ this.mOfficeAddressBean = mOfficeAddressBean;
|
|
|
+ }
|
|
|
+
|
|
|
public List<String> getAddress_names() {
|
|
|
return address_names;
|
|
|
}
|
|
|
@@ -308,12 +383,12 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
}
|
|
|
@Override
|
|
|
public int getCount() {
|
|
|
- return address_names == null ? 0 :address_names.size();
|
|
|
+ return address_names == null ? 0 :address_names.size();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Object getItem(int position) {
|
|
|
- return address_names.get(position);
|
|
|
+ return mOfficeAddressBean.getListdata() == null ? 0 : mOfficeAddressBean.getListdata().size();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -333,23 +408,32 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
}else {
|
|
|
viewHolder = (ViewHolder) convertView.getTag();
|
|
|
}
|
|
|
- //ToDo 带回地址的显示
|
|
|
+
|
|
|
+ // 带回地址的显示
|
|
|
if (!ListUtils.isEmpty(address_names) && !TextUtils.isEmpty(address_names.get(position))){
|
|
|
viewHolder.item_address_tv.setText(address_names.get(position));
|
|
|
}
|
|
|
- //TODo 地址的删除操作
|
|
|
+ // 地址的删除操作
|
|
|
viewHolder.office_address_delete_im.setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(View v) {
|
|
|
new AlertDialog.Builder(mContext)
|
|
|
.setTitle("温馨提示")
|
|
|
- .setMessage("确认删除该条已选办公地址?")
|
|
|
- .setNegativeButton("取消",null)
|
|
|
+ .setMessage("\t\t确认删除该条办公地址?")
|
|
|
+ .setNegativeButton("取消", null)
|
|
|
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
mPosition = position;
|
|
|
- doDeleteAddress();
|
|
|
+ if (mPosition < listdada_size) {
|
|
|
+ doDeleteAddress(mPosition);
|
|
|
+ } else {
|
|
|
+ address_names.remove(mPosition);
|
|
|
+ address_location.remove(mPosition);
|
|
|
+ address_longitude.remove(mPosition);
|
|
|
+ address_latitud.remove(mPosition);
|
|
|
+ myadapter.notifyDataSetChanged();
|
|
|
+ }
|
|
|
}
|
|
|
}).show();
|
|
|
}
|
|
|
@@ -357,11 +441,15 @@ public class OfficeAddressSettingsActivity extends BaseActivity{
|
|
|
return convertView;
|
|
|
}
|
|
|
|
|
|
- private void doDeleteAddress() {
|
|
|
- address_names.remove(mPosition);
|
|
|
- // TODO
|
|
|
-
|
|
|
- notifyDataSetChanged();
|
|
|
+ private void doDeleteAddress(int mPosition) {
|
|
|
+ delete_position = mPosition;
|
|
|
+ String url = Constants.getAppBaseUrl(getApplicationContext()) + "/mobile/deletecomaddressset.action";
|
|
|
+ Map<String , Object> param = new HashMap<>();
|
|
|
+ param.put("caller",caller);
|
|
|
+ param.put("id",CommonUtil.getNumByString(address_id.get(delete_position).toString()));
|
|
|
+ LinkedHashMap headers = new LinkedHashMap();
|
|
|
+ headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
|
|
|
+ ViewUtil.httpSendRequest(getApplicationContext(), url, param, handler, headers, ADDRESS_DELETE_REQUEST, null, null, "post");
|
|
|
}
|
|
|
|
|
|
class ViewHolder{
|