|
|
@@ -0,0 +1,356 @@
|
|
|
+package com.xzjmyk.pm.activity.ui.erp.activity.oa;
|
|
|
+
|
|
|
+import android.app.Activity;
|
|
|
+import android.os.Bundle;
|
|
|
+import android.os.Handler;
|
|
|
+import android.os.Message;
|
|
|
+import android.util.DisplayMetrics;
|
|
|
+import android.util.Log;
|
|
|
+import android.view.Gravity;
|
|
|
+import android.view.LayoutInflater;
|
|
|
+import android.view.View;
|
|
|
+import android.view.ViewGroup;
|
|
|
+import android.view.WindowManager;
|
|
|
+import android.widget.AdapterView;
|
|
|
+import android.widget.BaseAdapter;
|
|
|
+import android.widget.PopupWindow;
|
|
|
+import android.widget.TextView;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.xzjmyk.pm.activity.MyApplication;
|
|
|
+import com.xzjmyk.pm.activity.R;
|
|
|
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.model.oa.EmployeesModel;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.model.oa.FlightsModel;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.model.oa.FlightsTimeModel;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.Constants;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
|
|
|
+import com.xzjmyk.pm.activity.util.DisplayUtil;
|
|
|
+import com.xzjmyk.pm.activity.view.MyListView;
|
|
|
+import com.xzjmyk.pm.activity.wxapi.ApiPlatform;
|
|
|
+import com.xzjmyk.pm.activity.wxapi.ApiUtils;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import static com.alibaba.fastjson.JSON.parseObject;
|
|
|
+import static com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil.getJson2Text;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by FANGlh on 2017/4/20.
|
|
|
+ * function:
|
|
|
+ */
|
|
|
+public class FlihtsDateSelectActivity extends BaseActivity {
|
|
|
+ private static final int GET_FLIHTS_DATAS = 42001;
|
|
|
+ JSONObject object = null;
|
|
|
+ List<FlightsModel> models;
|
|
|
+ private PopupWindow popupWindow = null;
|
|
|
+ private MyListView flihts_list;
|
|
|
+ private TextView rest_tv;
|
|
|
+ private FlihtsDatasAdapter myAdapter;
|
|
|
+ private Boolean isB2b;
|
|
|
+ private TextView rest_tv1;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onCreate(Bundle savedInstanceState) {
|
|
|
+ super.onCreate(savedInstanceState);
|
|
|
+ isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
|
|
|
+ initView();
|
|
|
+ }
|
|
|
+ private void initView() {
|
|
|
+ setContentView(R.layout.flihts_calendar_select);
|
|
|
+ rest_tv1 = (TextView) findViewById(R.id.rest_tv);
|
|
|
+ models = new ArrayList<>();
|
|
|
+ myAdapter = new FlihtsDatasAdapter();
|
|
|
+
|
|
|
+ rest_tv1.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ getFlihtsData();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private Handler handler = new Handler(){
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ super.handleMessage(msg);
|
|
|
+ switch (msg.what){
|
|
|
+ case GET_FLIHTS_DATAS:
|
|
|
+ if (msg.getData() != null){
|
|
|
+ String fliht_result = msg.getData().getString("result");
|
|
|
+ JSONArray fliht_array = parseObject(fliht_result).getJSONArray("listdata");
|
|
|
+ if (!ListUtils.isEmpty(fliht_array)) {
|
|
|
+ handlerWork(fliht_array);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ if (msg.getData() != null) {
|
|
|
+ if (!StringUtils.isEmpty(msg.getData().getString("result"))) {
|
|
|
+ ToastMessage(msg.getData().getString("result"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ private void handlerWork(JSONArray array) {
|
|
|
+ if (!ListUtils.isEmpty(models)) models.clear();
|
|
|
+ for (int i = 0; i < array.size(); i++) {
|
|
|
+ object = array.getJSONObject(i);
|
|
|
+ if (object.containsKey("ifDefaultClass") && object.getBoolean("ifDefaultClass"))
|
|
|
+ models.add(0, handlerDefFlights(object));
|
|
|
+ else
|
|
|
+ models.add(handlerFlights(object));
|
|
|
+ if (i == array.size() -1){
|
|
|
+ showFlihtsWindows();
|
|
|
+ Log.i("sb","showFlihtsWindows()");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void getFlihtsData() {
|
|
|
+ String url = Constants.getAppBaseUrl(getApplicationContext()) + "mobile/getAllWorkDate.action";
|
|
|
+ Map<String, Object> param = new HashMap<>();
|
|
|
+ param.put("emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username"));
|
|
|
+ LinkedHashMap headers = new LinkedHashMap();
|
|
|
+ headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
|
|
|
+ ViewUtil.httpSendRequest(getApplicationContext(), url, param, handler, headers, GET_FLIHTS_DATAS, null, null, "post");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private void showFlihtsWindows(){
|
|
|
+ View contentView = LayoutInflater.from(ct).inflate(
|
|
|
+ R.layout.flihts_listview, null);
|
|
|
+
|
|
|
+ flihts_list = (MyListView) contentView.findViewById(R.id.flihts_list);
|
|
|
+ rest_tv = (TextView) contentView.findViewById(R.id.rest_tv);
|
|
|
+ DisplayMetrics dm = getResources().getDisplayMetrics();
|
|
|
+ int w_screen = dm.widthPixels;
|
|
|
+ int h_screen = dm.heightPixels;
|
|
|
+ w_screen = DisplayUtil.dip2px(this, 300);
|
|
|
+ h_screen = DisplayUtil.dip2px(this, 250);
|
|
|
+ myAdapter.setModels(models);
|
|
|
+ flihts_list.setAdapter(myAdapter);
|
|
|
+ Log.i("sb", "setAdapter");
|
|
|
+
|
|
|
+ ((MyListView) contentView.findViewById(R.id.flihts_list)).setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
|
|
+ ToastMessage(models.get(position).getName() + "班次");
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ rest_tv.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ ToastMessage("休息");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ popupWindow = new PopupWindow(contentView, w_screen, h_screen, true);
|
|
|
+ popupWindow.setTouchable(true);
|
|
|
+ popupWindow.setOutsideTouchable(false);
|
|
|
+ // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
|
|
|
+ popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_main));
|
|
|
+ // 设置好参数之后再show
|
|
|
+ popupWindow.showAtLocation(contentView, Gravity.CENTER, 0, 0);
|
|
|
+ setbg(0.4f);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setbg(float alpha) {
|
|
|
+ setBackgroundAlpha(this, alpha);
|
|
|
+ if (popupWindow == null) return;
|
|
|
+ popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
|
|
|
+ @Override
|
|
|
+ public void onDismiss() {
|
|
|
+ setBackgroundAlpha(FlihtsDateSelectActivity.this, 1f);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setBackgroundAlpha(Activity activity, float bgAlpha) {
|
|
|
+ WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
|
|
|
+ lp.alpha = bgAlpha;
|
|
|
+ if (bgAlpha == 1) {
|
|
|
+ activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//不移除该Flag的话,在有视频的页面上的视频会出现黑屏的bug
|
|
|
+ } else {
|
|
|
+ activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//此行代码主要是解决在华为手机上半透明效果无效的bug
|
|
|
+ }
|
|
|
+ activity.getWindow().setAttributes(lp);
|
|
|
+ }
|
|
|
+
|
|
|
+ public class FlihtsDatasAdapter extends BaseAdapter {
|
|
|
+ List<FlightsModel> models;
|
|
|
+ public List<FlightsModel> getModels() {return models;}
|
|
|
+ public void setModels(List<FlightsModel> models) {this.models = models;}
|
|
|
+ @Override
|
|
|
+ public int getCount() {return models == null ? 0 : models.size();}
|
|
|
+ @Override
|
|
|
+ public Object getItem(int position) {
|
|
|
+ return models.get(position);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public long getItemId(int position) {
|
|
|
+ return position;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public View getView(int position, View convertView, ViewGroup parent) {
|
|
|
+ ViewHolder viewHolder = null;
|
|
|
+ if (convertView == null){
|
|
|
+ viewHolder = new ViewHolder();
|
|
|
+ convertView = View.inflate(mContext, R.layout.item_flihts,null);
|
|
|
+ viewHolder.docmainmsg_list = (TextView) convertView.findViewById(R.id.item_comdoc_am_list_tv);
|
|
|
+ viewHolder.docmainmsg_value = (TextView) convertView.findViewById(R.id.item_comdoc_am_value_tv);
|
|
|
+ convertView.setTag(viewHolder);
|
|
|
+
|
|
|
+ }else {
|
|
|
+ viewHolder = (ViewHolder) convertView.getTag();
|
|
|
+ }
|
|
|
+ if (models.get(position).getType() == 2){
|
|
|
+ viewHolder.docmainmsg_list.setText(models.get(position).getName());
|
|
|
+ }else {
|
|
|
+ viewHolder.docmainmsg_list.setText(models.get(position).getName() + "班次");
|
|
|
+ }
|
|
|
+ viewHolder.docmainmsg_value.setText(models.get(position).getTimeTable());
|
|
|
+ return convertView;
|
|
|
+ }
|
|
|
+ class ViewHolder{
|
|
|
+ TextView docmainmsg_list;
|
|
|
+ TextView docmainmsg_value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private FlightsModel handlerDefFlights(JSONObject object) {
|
|
|
+ FlightsModel model = new FlightsModel();
|
|
|
+ FlightsTimeModel timeModel = new FlightsTimeModel();
|
|
|
+ EmployeesModel employeesModel = new EmployeesModel();
|
|
|
+ EmployeesModel hrorgsModel = new EmployeesModel();
|
|
|
+ timeModel.setEarlyTime(OACheckUtil.getJsonIntager(object, "wd_earlytime"));
|
|
|
+ timeModel.setEarlyTime(OACheckUtil.getJsonIntager(object, "wd_earlytime"));
|
|
|
+ timeModel.setWd_ondutyone(getJson2Text(object, "wd_ondutyone"));
|
|
|
+ timeModel.setWd_offdutyone(getJson2Text(object, "wd_offdutyone"));
|
|
|
+ timeModel.setWd_ondutytwo(getJson2Text(object, "wd_ondutytwo"));
|
|
|
+ timeModel.setWd_offdutytwo(getJson2Text(object, "wd_offdutytwo"));
|
|
|
+ timeModel.setWd_ondutythree(getJson2Text(object, "wd_ondutythree"));
|
|
|
+ timeModel.setWd_offdutythree(getJson2Text(object, "wd_offdutythree"));
|
|
|
+ model.setTimeModel(timeModel);
|
|
|
+ model.setEmployeesModel(employeesModel);
|
|
|
+ model.setHrorgsModel(hrorgsModel);
|
|
|
+ JSONObject o = null;
|
|
|
+ if (object.containsKey("Class1")) {
|
|
|
+ o = object.getJSONObject("Class1");
|
|
|
+ timeModel.setWd_ondutyone(getByClass(o, true));
|
|
|
+ timeModel.setWd_offdutyone(getByClass(o, false));
|
|
|
+ }
|
|
|
+ if (object.containsKey("Class2")) {
|
|
|
+ o = object.getJSONObject("Class2");
|
|
|
+ timeModel.setWd_ondutytwo(getByClass(o, true));
|
|
|
+ timeModel.setWd_offdutytwo(getByClass(o, false));
|
|
|
+ }
|
|
|
+ if (object.containsKey("Class3")) {
|
|
|
+ o = object.getJSONObject("Class3");
|
|
|
+ timeModel.setWd_ondutythree(getByClass(o, true));
|
|
|
+ timeModel.setWd_offdutythree(getByClass(o, false));
|
|
|
+ }
|
|
|
+ employeesModel.setEmployeecode(getJson2Text(object, "defaultmancode"));
|
|
|
+ employeesModel.setEmployeeNames(getJson2Text(object, "defaultman"));
|
|
|
+// hrorgsModel.setEmployeecode(OACheckUtil.getJson2Text(object, "hrorgcode"));
|
|
|
+// hrorgsModel.setEmployeeNames(OACheckUtil.getJson2Text(object, "hrorgname"));
|
|
|
+ model.setId(OACheckUtil.getJsonIntager(object, "wd_id"));
|
|
|
+ model.setCode(getJson2Text(object, "wd_code"));
|
|
|
+ model.setTimeModel(timeModel);
|
|
|
+ model.setDay(getJson2Text(object, "wd_day"));//返回为1,2,3
|
|
|
+ model.setEmployeesModel(employeesModel);
|
|
|
+ model.setHrorgsModel(hrorgsModel);
|
|
|
+ model.setType(2);
|
|
|
+ model.setName(getJson2Text(object, "wd_name"));
|
|
|
+
|
|
|
+ try {
|
|
|
+ String names = employeesModel.getEmployeeNames();
|
|
|
+ if (!StringUtils.isEmpty(names)) {
|
|
|
+ model.setCount(names.split(",").length);
|
|
|
+ }
|
|
|
+ String hrorgs = hrorgsModel.getEmployeeNames();
|
|
|
+ if (!StringUtils.isEmpty(hrorgs)) {
|
|
|
+ model.setDepartments(hrorgs.split(",").length);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+
|
|
|
+ }
|
|
|
+ return model;
|
|
|
+ }
|
|
|
+ private FlightsModel handlerFlights(JSONObject object) {
|
|
|
+ FlightsModel model = new FlightsModel();
|
|
|
+ FlightsTimeModel timeModel = new FlightsTimeModel();
|
|
|
+ EmployeesModel employeesModel = new EmployeesModel();
|
|
|
+ EmployeesModel hrorgsModel = new EmployeesModel();
|
|
|
+ timeModel.setEarlyTime(OACheckUtil.getJsonIntager(object, "wd_earlytime"));
|
|
|
+ timeModel.setWd_ondutyone(getJson2Text(object, "wd_ondutyone"));
|
|
|
+ timeModel.setWd_offdutyone(getJson2Text(object, "wd_offdutyone"));
|
|
|
+ timeModel.setWd_ondutytwo(getJson2Text(object, "wd_ondutytwo"));
|
|
|
+ timeModel.setWd_offdutytwo(getJson2Text(object, "wd_offdutytwo"));
|
|
|
+ timeModel.setWd_ondutythree(getJson2Text(object, "wd_ondutythree"));
|
|
|
+ timeModel.setWd_offdutythree(getJson2Text(object, "wd_offdutythree"));
|
|
|
+ String emcodes = OACheckUtil.getJson2Text(object, "wd_emcode");
|
|
|
+ if (StringUtils.isEmpty(emcodes))
|
|
|
+ emcodes = OACheckUtil.getJson2Text(object, "emcodes");
|
|
|
+
|
|
|
+ String emnames = OACheckUtil.getJson2Text(object, "wd_man");
|
|
|
+ if (StringUtils.isEmpty(emnames))
|
|
|
+ emnames = OACheckUtil.getJson2Text(object, "emnames");
|
|
|
+
|
|
|
+ employeesModel.setEmployeecode(emcodes);
|
|
|
+ employeesModel.setEmployeeNames(emnames);
|
|
|
+
|
|
|
+ String emdefaultorcodes = OACheckUtil.getJson2Text(object, "wd_defaultorcode");
|
|
|
+ if (StringUtils.isEmpty(emdefaultorcodes))
|
|
|
+ emdefaultorcodes = OACheckUtil.getJson2Text(object, "emdefaultorcodes");
|
|
|
+
|
|
|
+ String emdefaultors = OACheckUtil.getJson2Text(object, "wd_defaultor");
|
|
|
+ if (StringUtils.isEmpty(emdefaultors))
|
|
|
+ emdefaultors = OACheckUtil.getJson2Text(object, "emdefaultors");
|
|
|
+ hrorgsModel.setEmployeecode(emdefaultorcodes);
|
|
|
+ hrorgsModel.setEmployeeNames(emdefaultors);
|
|
|
+ model.setId(OACheckUtil.getJsonIntager(object, "id"));
|
|
|
+// model.setCount(OACheckUtil.getJsonIntager(object, "wd_pcount"));
|
|
|
+ model.setCode(OACheckUtil.getJson2Text(object, "wd_code"));
|
|
|
+ model.setTimeModel(timeModel);
|
|
|
+ if (isB2b)
|
|
|
+ model.setDay(OACheckUtil.getJson2Text(object, "wd_day", "day"));
|
|
|
+ else
|
|
|
+ model.setDay(OACheckUtil.getJson2Text(object, "wd_day"));//返回为1,2,3
|
|
|
+ model.setEmployeesModel(employeesModel);
|
|
|
+ model.setHrorgsModel(hrorgsModel);
|
|
|
+ model.setType(isB2b ? 2 : 1);
|
|
|
+ model.setName(OACheckUtil.getJson2Text(object, "wd_name"));
|
|
|
+ try {
|
|
|
+ String names = employeesModel.getEmployeeNames();
|
|
|
+ if (!StringUtils.isEmpty(names)) {
|
|
|
+ model.setCount(names.split(",").length);
|
|
|
+ }
|
|
|
+ String hrorgs = hrorgsModel.getEmployeeNames();
|
|
|
+ if (!StringUtils.isEmpty(hrorgs)) {
|
|
|
+ model.setDepartments(hrorgs.split(",").length);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+
|
|
|
+ }
|
|
|
+ return model;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getByClass(JSONObject object, boolean work) {
|
|
|
+ return work ? (object.containsKey("wd_onduty") ? object.getString("wd_onduty") : "") : (
|
|
|
+ object.containsKey("wd_offduty") ? object.getString("wd_offduty") : "");
|
|
|
+ }
|
|
|
+}
|