Ver Fonte

提交类型 修改需求
提交内容 打卡添加mac判断

Bitliker há 7 anos atrás
pai
commit
7c59c079cc

+ 1 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java

@@ -707,6 +707,7 @@ public class MeFragment extends EasyFragment implements View.OnClickListener, On
     public ItemPopListAdapter adapter;
 
     public void showPopDialog(final Activity ct, List<ItemsSelectType1> itemsSelectType1s) {
+        if(ct==null)return;
         View view = null;
         if (DialogUtils.isDialogShowing(ViewUtil.popupWindow)){
             ViewUtil.popupWindow.dismiss();

+ 30 - 120
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -15,13 +15,9 @@ import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
 import android.widget.ImageButton;
-import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.PopupWindow;
-import android.widget.TextView;
 
 import com.common.data.DateFormatUtil;
 import com.common.data.ListUtils;
@@ -39,7 +35,6 @@ import com.core.net.utils.NetUtils;
 import com.core.utils.ToastUtil;
 import com.core.utils.sortlist.BaseSortModel;
 import com.core.widget.DrawableCenterTextView;
-import com.core.widget.RedView;
 import com.modular.appmessages.activity.ProcessB2BActivity;
 import com.modular.appmessages.activity.ProcessMsgActivity;
 import com.modular.appmessages.activity.Subscription2Activity;
@@ -50,6 +45,8 @@ import com.modular.appmessages.presenter.MessagePresenter;
 import com.modular.appmessages.presenter.imp.IMessageView;
 import com.modular.appmessages.widget.SignRefreshLayout;
 import com.modular.apputils.adapter.LinearItemDecoration;
+import com.modular.apputils.utils.PopupWindowHelper;
+import com.modular.apputils.widget.WrapContentLinearLayoutManager;
 import com.uas.appme.pedometer.view.UURanking;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.platform.task.TaskActivity;
@@ -193,7 +190,7 @@ public class MessageFragment extends SupportToolBarFragment implements IMessageV
         message_net_set = findViewById(R.id.message_net_set);
         mSignRefreshLayout = findViewById(R.id.mSignRefreshLayout);
         mRecyclerView = findViewById(R.id.mRecyclerView);
-        mRecyclerView.setLayoutManager(new LinearLayoutManager(ct));
+        mRecyclerView.setLayoutManager(new WrapContentLinearLayoutManager(ct, LinearLayoutManager.VERTICAL, false));
         mRecyclerView.addItemDecoration(new LinearItemDecoration(ct));
         presenter = new MessagePresenter(mContext, this, unReaderListener);
         signView = mSignRefreshLayout.getSignView();
@@ -321,23 +318,26 @@ public class MessageFragment extends SupportToolBarFragment implements IMessageV
                 break;
 
             case R.id.itemSignImage:
-                WorkModel work = null;
-                if (mSignRefreshLayout != null && mSignRefreshLayout.getTag() != null) {
-                    Object tag = mSignRefreshLayout.getTag();
-                    if (tag instanceof WorkModel) {
-                        work = (WorkModel) tag;
-                    }
-                }
-                if (NetUtils.isNetWorkConnected(ct)) {
-                    presenter.signWork(work);
-                } else {
-                    showToact(R.string.networks_out);
-                }
+                sign(true);
                 break;
         }
 
     }
 
+    private void sign(boolean needMac) {
+        WorkModel work = null;
+        if (mSignRefreshLayout != null && mSignRefreshLayout.getTag() != null) {
+            Object tag = mSignRefreshLayout.getTag();
+            if (tag instanceof WorkModel) {
+                work = (WorkModel) tag;
+            }
+        }
+        if (NetUtils.isNetWorkConnected(ct)) {
+            presenter.signWork(needMac, work);
+        } else {
+            showToact(R.string.networks_out);
+        }
+    }
 
     @Override
     public void showModel(List<BaseSortModel<Friend>> models) {
@@ -486,113 +486,23 @@ public class MessageFragment extends SupportToolBarFragment implements IMessageV
 
     @Override
     public void updateSign(String message) {
-        ToastUtil.showToast(ct, message, getContentView());
+        if (message.equals(getString(R.string.show_frist_mac))) {
+            showDialog(message);
+        } else {
+            ToastUtil.showToast(ct, message, getContentView());
+        }
         setSignViewData(true);
     }
 
-
-    private class HeadAdapter extends BaseAdapter {
-        List<MessageHeader> models;
-
-        public void setModels(List<MessageHeader> models) {
-            this.models = models;
-            notifyDataSetChanged();
-        }
-
-        public HeadAdapter(List<MessageHeader> models) {
-            this.models = models;
-        }
-
-        public List<MessageHeader> getModels() {
-            return models;
-        }
-
-        public MessageHeader getItemModel(int position) {
-            if (ListUtils.getSize(models) > position) {
-                return models.get(position);
-            } else {
-                return null;
-            }
-        }
-
-
-        public void updateModel(List<MessageHeader> models) {
-            this.models = models;
-            notifyDataSetChanged();
-        }
-
-        @Override
-        public int getCount() {
-            return ListUtils.getSize(models);
-        }
-
-        @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) {
-            ViewHodler hodler = null;
-            if (convertView == null) {
-                hodler = new ViewHodler();
-                convertView = LayoutInflater.from(ct).inflate(R.layout.item_message_header, null);
-                hodler.headerImg = (ImageView) convertView.findViewById(R.id.headerImg);
-                hodler.headerNumTv = (TextView) convertView.findViewById(R.id.headerNumTv);
-                hodler.headerRv = (RedView) convertView.findViewById(R.id.headerRv);
-                hodler.titleTv = (TextView) convertView.findViewById(R.id.titleTv);
-                hodler.headerSubTv = (TextView) convertView.findViewById(R.id.headerSubTv);
-                hodler.timeTv = (TextView) convertView.findViewById(R.id.timeTv);
-                convertView.setTag(hodler);
-            } else {
-                hodler = (ViewHodler) convertView.getTag();
-            }
-            try {
-                bindData(getItemModel(position), hodler);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            return convertView;
-        }
-
-        private class ViewHodler {
-            ImageView headerImg;
-            TextView headerNumTv;
-            RedView headerRv;
-            TextView titleTv;
-            TextView headerSubTv;
-            TextView timeTv;
-        }
-
-        private void bindData(MessageHeader model, ViewHodler hodler) throws Exception {
-            if (model != null) {
-                hodler.headerImg.setImageResource(model.getIcon());
-                if (model.getRedNum() > 0) {
-                    hodler.headerNumTv.setVisibility(View.VISIBLE);
-                    hodler.headerNumTv.setText(String.valueOf(model.getRedNum()));
-                } else {
-                    hodler.headerNumTv.setVisibility(View.GONE);
-                    hodler.headerNumTv.setText("");
-                }
-                hodler.titleTv.setText(model.getName());
-                hodler.headerSubTv.setText(model.getSubDoc());
-                if (model.isHideRed()) {
-                    hodler.headerRv.setVisibility(View.GONE);
-                    hodler.timeTv.setVisibility(View.VISIBLE);
-                    hodler.timeTv.setText(model.getTime());
-                } else {
-                    hodler.headerRv.setVisibility(View.VISIBLE);
-                    hodler.headerRv.setName(model.getRedMessage());
-                    hodler.timeTv.setVisibility(View.GONE);
+    private void showDialog(String message) {
+        PopupWindowHelper.showAlart(getActivity(), getString(R.string.app_name), message, new PopupWindowHelper.OnSelectListener() {
+            @Override
+            public void select(boolean selectOk) {
+                if (selectOk) {
+                    sign(false);
                 }
             }
-        }
+        });
     }
 
-
 }

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Fri May 25 11:49:26 CST 2018
-debugName=429
+#Thu May 31 17:19:41 CST 2018
+debugName=431
 versionName=630
-debugCode=429
+debugCode=431
 versionCode=170

+ 4 - 0
app_core/common/src/main/java/com/core/utils/BaiduMapUtil.java

@@ -141,6 +141,10 @@ public class BaiduMapUtil {
         }
     }
 
+    /**
+     * 获取符合打卡的距离
+     * @return
+     */
     public float getDistance() {
         float dis = 0;
         try {

+ 1 - 1
app_core/common/src/main/java/com/core/utils/CommonUtil.java

@@ -106,7 +106,7 @@ public class CommonUtil {
         }
         String baseUrl = getSharedPreferences(ct, "erp_baseurl");
 //        if (BaseConfig.isDebug()){
-//            baseUrl="http://192.168.253.243:8080/ERP/";
+//            baseUrl="http://192.168.253.250:8080/ERP/";
 //        }
 //        baseUrl = "http://192.168.253.52:9000/ERP/";
 

+ 35 - 21
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/MessagePresenter.java

@@ -136,8 +136,17 @@ public class MessagePresenter implements OnHttpResultListener {
             LocalBroadcastManager.getInstance(ct).registerReceiver(dataChangeReceiver, dateFilter);
         }
         initHeaderModels();
+        if (mSignUtils == null) {
+            mSignUtils = new SignUtils(new SignUtils.SignListener() {
+                @Override
+                public void sign(boolean signOk, String message) {
+                    MessagePresenter.this.iMessageView.updateSign(message);
+                }
+            });
+        }
     }
 
+
     public void loadData() {
         String role = CommonUtil.getUserRole();
         isB2b = false;
@@ -1057,7 +1066,7 @@ public class MessagePresenter implements OnHttpResultListener {
 
     private SignUtils mSignUtils;
 
-    public void signWork(WorkModel work) {
+    public void signWork(boolean needMac,WorkModel work) {
         if (mSignUtils == null) {
             mSignUtils = new SignUtils(new SignUtils.SignListener() {
                 @Override
@@ -1070,7 +1079,12 @@ public class MessagePresenter implements OnHttpResultListener {
             work = getCurrentWork();
         }
         iMessageView.showProgress();
-        mSignUtils.sign(isB2b, work);
+        if (needMac){
+            mSignUtils.sign(isB2b, work);
+        }else{
+            mSignUtils.signFristMac(isB2b, work);
+
+        }
     }
 
     public interface UnReaderListener {
@@ -1093,8 +1107,8 @@ public class MessagePresenter implements OnHttpResultListener {
 
         if (PreferenceUtils.getInt("UUSTEP", -1) == 1) {
             //显示UU运动
-            MessageNew h=new MessageNew();
-            MessageHeader  model = new MessageHeader(StringUtil.getMessage(R.string.set_sport));
+            MessageNew h = new MessageNew();
+            MessageHeader model = new MessageHeader(StringUtil.getMessage(R.string.set_sport));
             model.setIcon(R.drawable.uu_run);
             model.setSubDoc("");
             model.setRedKey(Constants.MESSAGE_RUN);
@@ -1105,8 +1119,8 @@ public class MessagePresenter implements OnHttpResultListener {
         }
 
         if (SwitchUtil.showShebeiguanli()) {
-            MessageNew h=new MessageNew();
-            MessageHeader    model = new MessageHeader("设备管理");
+            MessageNew h = new MessageNew();
+            MessageHeader model = new MessageHeader("设备管理");
             model.setIcon(R.drawable.uu_run);
             model.setSubDoc("");
             model.setRedKey(Constants.MESSAGE_RUN);
@@ -1118,10 +1132,10 @@ public class MessagePresenter implements OnHttpResultListener {
         iMessageView.updateHeader(models);
     }
 
-    private  List<MessageNew> getErpHeader() {
+    private List<MessageNew> getErpHeader() {
         List<MessageNew> models = new ArrayList<>();
 
-        MessageNew h=new MessageNew();
+        MessageNew h = new MessageNew();
         MessageHeader model = new MessageHeader(StringUtil.getMessage(R.string.msg_approval));
         model.setIcon(R.drawable.home_image_01_u);
         model.setSubDoc("");
@@ -1131,7 +1145,7 @@ public class MessagePresenter implements OnHttpResultListener {
         h.setT(model);
         models.add(h);
 
-        h=new MessageNew();
+        h = new MessageNew();
         model = new MessageHeader(StringUtil.getMessage(R.string.msg_work));
         model.setIcon(R.drawable.daibangongzuo);
         model.setSubDoc("");
@@ -1141,7 +1155,7 @@ public class MessagePresenter implements OnHttpResultListener {
         h.setT(model);
         models.add(h);
 
-        h=new MessageNew();
+        h = new MessageNew();
         model = new MessageHeader(StringUtil.getMessage(R.string.msg_subscribe));
         model.setIcon(R.drawable.tingyue);
         model.setSubDoc("");
@@ -1152,7 +1166,7 @@ public class MessagePresenter implements OnHttpResultListener {
         h.setT(model);
         models.add(h);
 
-        h=new MessageNew();
+        h = new MessageNew();
         model = new MessageHeader(StringUtil.getMessage(R.string.booking_menu));
         model.setIcon(R.drawable.icon_yuyue3);
         model.setSubDoc("");
@@ -1164,9 +1178,9 @@ public class MessagePresenter implements OnHttpResultListener {
         return models;
     }
 
-    private  List<MessageNew> getB2bHeader() {
+    private List<MessageNew> getB2bHeader() {
         List<MessageNew> models = new ArrayList<>();
-        MessageNew h=new MessageNew();
+        MessageNew h = new MessageNew();
         MessageHeader model = new MessageHeader(StringUtil.getMessage(R.string.msg_approval));
         model.setIcon(R.drawable.home_image_01_u);
         model.setSubDoc("");
@@ -1176,7 +1190,7 @@ public class MessagePresenter implements OnHttpResultListener {
         h.setT(model);
         models.add(h);
 
-        h=new MessageNew();
+        h = new MessageNew();
         model = new MessageHeader(StringUtil.getMessage(R.string.msg_work));
         model.setIcon(R.drawable.daibangongzuo);
         model.setSubDoc("");
@@ -1186,7 +1200,7 @@ public class MessagePresenter implements OnHttpResultListener {
         h.setT(model);
         models.add(h);
 
-        h=new MessageNew();
+        h = new MessageNew();
         model = new MessageHeader(StringUtil.getMessage(R.string.booking_menu));
         model.setIcon(R.drawable.icon_yuyue3);
         model.setSubDoc("");
@@ -1200,7 +1214,7 @@ public class MessagePresenter implements OnHttpResultListener {
 
     private List<MessageNew> getPersonalHeader() {
         List<MessageNew> models = new ArrayList<>();
-        MessageNew header=new MessageNew();
+        MessageNew header = new MessageNew();
         MessageHeader model = new MessageHeader(StringUtil.getMessage(R.string.booking_menu));
         model.setIcon(R.drawable.icon_yuyue3);
         model.setSubDoc("");
@@ -1210,7 +1224,7 @@ public class MessagePresenter implements OnHttpResultListener {
         header.setT(model);
         models.add(header);
 
-        header=new MessageNew();
+        header = new MessageNew();
         model = new MessageHeader("餐饮");
         model.setIcon(R.drawable.icon_food);
         model.setSubDoc("美味齐全");
@@ -1220,7 +1234,7 @@ public class MessagePresenter implements OnHttpResultListener {
         header.setT(model);
         models.add(header);
 
-        header=new MessageNew();
+        header = new MessageNew();
         model = new MessageHeader("美容美发");
         model.setIcon(R.drawable.icon_hair);
         model.setSubDoc("时尚潮流");
@@ -1230,7 +1244,7 @@ public class MessagePresenter implements OnHttpResultListener {
         header.setT(model);
         models.add(header);
 
-        header=new MessageNew();
+        header = new MessageNew();
         model = new MessageHeader("KTV");
         model.setIcon(R.drawable.icon_ktv);
         model.setSubDoc("音乐节");
@@ -1249,7 +1263,7 @@ public class MessagePresenter implements OnHttpResultListener {
         header.setT(model);
         models.add(header);
 
-        header=new MessageNew();
+        header = new MessageNew();
         model = new MessageHeader("会所");
         model.setIcon(R.drawable.icon_club);
         model.setSubDoc("预约有优惠");
@@ -1259,7 +1273,7 @@ public class MessagePresenter implements OnHttpResultListener {
         header.setT(model);
         models.add(header);
 
-        header=new MessageNew();
+        header = new MessageNew();
         model = new MessageHeader("医院挂号");
         model.setIcon(R.drawable.icon_hospital);
         model.setSubDoc("您的健康助手");

+ 160 - 52
app_modular/apputils/src/main/java/com/modular/apputils/utils/SignUtils.java

@@ -2,21 +2,26 @@ package com.modular.apputils.utils;
 
 import android.content.Context;
 import android.os.Bundle;
+import android.support.annotation.StringRes;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
 import com.common.data.DateFormatUtil;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.common.preferences.PreferenceUtils;
+import com.common.system.SystemUtil;
 import com.core.api.wxapi.ApiConfig;
 import com.core.api.wxapi.ApiUtils;
 import com.core.app.MyApplication;
 import com.core.dao.UserDao;
+import com.core.dao.WorkLocationDao;
 import com.core.dao.work.WorkModelDao;
 import com.core.model.User;
+import com.core.model.WorkLocationModel;
 import com.core.model.WorkModel;
 import com.core.net.http.http.OAHttpHelper;
 import com.core.net.http.http.OnHttpResultListener;
@@ -24,6 +29,7 @@ import com.core.net.http.http.Request;
 import com.core.net.location.BdLocationHelper;
 import com.core.utils.BaiduMapUtil;
 import com.core.utils.CommonInterface;
+import com.core.utils.CommonUtil;
 import com.modular.apputils.R;
 
 import java.util.HashMap;
@@ -35,54 +41,117 @@ import static com.core.utils.CommonUtil.getSharedPreferences;
 
 /**
  * 只负责判断|签到
+ * 1.判断距离
+ * 2.判断mac
  * Created by Bitlike on 2018/5/3.
  */
 
 public class SignUtils implements OnHttpResultListener {
-    private final int LOAD_WORKLOG = 12;
-    private final int SIGNING = 11;
+    private final long INTERVAL = 10 * 1000;//间隔时间
+
+
+    private final int LOAD_MAC = 14;//获取网络mac地址
+    private final int MAC_VAL = 13;//判断mac地址
+    private final int LOAD_WORKLOG = 12;//获取打卡列表
+    private final int SIGNING = 11;//打卡
+
+
+    private boolean isMacInNet;
     private SignListener mSignListener;
 
-    private long lastTime = 0;
+    private long lastTime = 0;//最后一次打卡时间
 
     public SignUtils(SignListener mSignListener) {
         this.mSignListener = mSignListener;
+        loadMacInNet();
     }
 
     public interface SignListener {
         void sign(boolean signOk, String message);
     }
 
-
-    public void sign(final boolean isB2b, WorkModel model) {
-        if (System.currentTimeMillis() - lastTime < 10000) {
-            if (this.mSignListener !=null){
-                this.mSignListener.sign(false,"");
+    public void signFristMac(final boolean isB2b, WorkModel model) {
+        isMacInNet = true;
+        if (System.currentTimeMillis() - lastTime < INTERVAL) {
+            if (this.mSignListener != null) {
+                this.mSignListener.sign(false, "");
             }
             return;
         }
-        lastTime = System.currentTimeMillis();
-        MyApplication.getInstance().getBdLocationHelper().requestLocation();
-        final float dis = isSubmitAble();
-        if (dis > 0) {
-            final Bundle bundle = new Bundle();
-            bundle.putParcelable("data", model);
-            if (isB2b) {
-                signinWork(isB2b, bundle, "", dis);
+        if (!MyApplication.getInstance().isNetworkActive()) {
+            callBack(false, StringUtil.getMessage(R.string.networks_out));
+        } else {
+            //判断位置
+            MyApplication.getInstance().getBdLocationHelper().requestLocation();
+            List<WorkLocationModel> beanList = WorkLocationDao.getInstance().queryByEnCode();
+            if (ListUtils.isEmpty(beanList)) {
+                callBack(false, R.string.not_addr_message);
+                //没有打卡地址,TODO 获取班次接口
             } else {
-                CommonInterface.getInstance().getCodeByNet("CardLog", new CommonInterface.OnResultListener() {
-                    @Override
-                    public void result(boolean isOk, int result, String message) {
-                        signinWork(isB2b, bundle, message, dis);
+                BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
+                float minDis = -1;
+                for (WorkLocationModel bean : beanList) {
+                    String chche = BaiduMapUtil.getInstence().getDistance(bean.getLongitude(),
+                            bean.getLatitude(), helper.getLatitude(), helper.getLongitude());
+                    Float dis = Float.valueOf(chche);
+                    if (dis < bean.getValidrange() && (minDis < 0 || dis < minDis)) {
+                        minDis = dis;
                     }
-                });
+                }//判断打卡距离结束
+                if (minDis != -1) {
+                    lastTime = System.currentTimeMillis();
+                    //时间和距离上符合打卡
+                    validatorMac(isB2b, minDis, model);
+                } else {
+                    callBack(false, R.string.too_long);
+                }
             }
+        }
+    }
+
+    public void sign(final boolean isB2b, WorkModel model) {
+        LogUtil.i("isMacInNet=" + isMacInNet);
+        if (isMacInNet) {
+            signFristMac(isB2b, model);
         } else {
-            if (this.mSignListener != null) {
-                this.mSignListener.sign(false, StringUtil.getMessage(R.string.too_long));
-            }
+            callBack(false, R.string.show_frist_mac);
         }
+    }
 
+    /*判断mac地址是否符合*/
+    private void validatorMac(boolean isB2b, float minDis, WorkModel model) {
+        Map<String, Object> param = new HashMap<>();
+        param.put("macAddress", SystemUtil.getMac(MyApplication.getInstance()));
+        param.put("emcode", getSharedPreferences(MyApplication.getInstance(), "erp_username"));
+        Bundle bundle = new Bundle();
+        bundle.putBoolean(KEY.IS_B2B, isB2b);
+        bundle.putFloat(KEY.DISTANCE, minDis);
+        bundle.putParcelable(KEY.WORK, model);
+        String url = "mobile/addMobileMac.action";
+        Request request = new Request.Bulider()
+                .setBundle(bundle)
+                .setMode(Request.Mode.POST)
+                .setParam(param)
+                .setUrl(url)
+                .setWhat(MAC_VAL)
+                .bulid();
+        OAHttpHelper.getInstance().requestHttp(request, this);
+    }
+
+
+    private void toSignWork(final Bundle bundle) {
+        final boolean isB2b = bundle.getBoolean(KEY.IS_B2B, false);
+        final float minDis = bundle.getFloat(KEY.DISTANCE, 1);
+        if (isB2b) {
+            signinWork(isB2b, bundle, "", minDis);
+        } else {
+            CommonInterface.getInstance().getCodeByNet("CardLog", new CommonInterface.OnResultListener() {
+                @Override
+                public void result(boolean isOk, int result, String message) {
+                    signinWork(isB2b, bundle, message, minDis);
+                }
+            });
+        }
     }
 
     //签到
@@ -98,19 +167,15 @@ public class SignUtils implements OnHttpResultListener {
             if (!StringUtil.isEmpty(userId)) {
                 User user = UserDao.getInstance().getUserByUserId(userId);
                 phone = user.getTelephone();
-            } else
+            } else {
                 phone = getSharedPreferences(MyApplication.getInstance(), "user_phone");
+            }
         }
         form.put("cl_phone", phone);
         form.put("cl_emcode", getSharedPreferences(ct, "erp_username"));
-        String emname = getSharedPreferences(ct, "erp_emname");
-        if (StringUtil.isEmpty(emname)) {
-            emname = MyApplication.getInstance().mLoginUser.getNickName().trim();
-        }
-        form.put("cl_emname", emname);
+        form.put("cl_emname", CommonUtil.getName());
         form.put("cl_distance", dis);
-
-        boolean isp = isPlay(form);
+        boolean isp = isHasLocation(form);
         if (!isp) {
             return;//不符合打卡
         }
@@ -125,9 +190,6 @@ public class SignUtils implements OnHttpResultListener {
         param.put("emcode", getSharedPreferences(ct, "erp_username"));
         String url = isB2b ? ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().punch_worksignin_url :
                 "mobile/saveCardLog.action";
-        if (bunder != null) {
-            bunder.putBoolean("isB2b", isB2b);
-        }
         Request request = new Request.Bulider()
                 .setBundle(bunder)
                 .setMode(Request.Mode.POST)
@@ -140,7 +202,7 @@ public class SignUtils implements OnHttpResultListener {
     }
 
     /*判断是否符合打卡*/
-    private boolean isPlay(Map<String, Object> form) {
+    private boolean isHasLocation(Map<String, Object> form) {
         try {
             //判断是否符合打卡
             BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
@@ -159,24 +221,12 @@ public class SignUtils implements OnHttpResultListener {
         }
     }
 
-    private float isSubmitAble() {
-        //先判断网络
-        if (!MyApplication.getInstance().isNetworkActive()) {
-            if (this.mSignListener != null) {
-                this.mSignListener.sign(false, StringUtil.getMessage(R.string.networks_out));
-            }
-            return -1;
-        }
-        //判断位置
-        float dis = BaiduMapUtil.getInstence().getDistance();
-        return dis;
-    }
 
     //获取打卡记录
     private void loadLog(Bundle bunder) {
         boolean isB2b = false;
         if (bunder != null) {
-            isB2b = bunder.getBoolean("isB2b");
+            isB2b = bunder.getBoolean(KEY.IS_B2B);
         }
         String date = DateFormatUtil.long2Str(DateFormatUtil.YMD);
         //获取网络数据
@@ -207,6 +257,23 @@ public class SignUtils implements OnHttpResultListener {
         OAHttpHelper.getInstance().requestHttp(request, this);
     }
 
+    //判断mac地址是否已经上传
+    private void loadMacInNet() {
+        //获取网络数据
+        Map<String, Object> param = new HashMap<>();
+        param.put("macaddress", "");
+        param.put("emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username"));
+        String url = "mobile/queryMobileMac.action";
+        Request request = new Request.Bulider()
+                .setUrl(url)
+                .setWhat(LOAD_MAC)
+                .setMode(Request.Mode.GET)
+                .setParam(param)
+                .bulid();
+        OAHttpHelper.getInstance().requestHttp(request, this);
+
+    }
+
     @Override
     public void result(int what, boolean isJSON, String message, Bundle bundle) {
         try {
@@ -219,6 +286,27 @@ public class SignUtils implements OnHttpResultListener {
                         saveSignin2DB(bundle, JSON.parseObject(message).getJSONArray("listdata"));
                     }
                     break;
+
+                case MAC_VAL:
+                    if (isJSON && JSONUtil.getBoolean(message, "success")) {
+                        toSignWork(bundle);
+                    } else {
+                        CommonUtil.saveAutoLogtoLocal(StringUtil.getMessage(R.string.auto_sign_failed), message);
+                    }
+                    break;
+                case LOAD_MAC://判断是否是第一次请求数据
+                    if (isJSON) {
+                        JSONObject object = JSON.parseObject(message);
+                        if (object.containsKey("success") && object.getBoolean("success")) {
+                            //返回成功
+                            JSONArray array = object.getJSONArray("macaddress");
+                            if ("0".equals(array.getJSONObject(0).getString("MACADDRESS"))) {
+                                //获取到新的mac地址
+                                isMacInNet = false;
+                            } else isMacInNet = true;
+                        }
+                    } else isMacInNet = false;
+                    break;
             }
         } catch (Exception e) {
             if (this.mSignListener != null && e != null) {
@@ -237,8 +325,8 @@ public class SignUtils implements OnHttpResultListener {
     //保存到数据库
     private void saveSignin2DB(Bundle bundle, JSONArray array) throws Exception {
         WorkModel model = null;
-        if (bundle != null && bundle.getParcelable("data") != null) {
-            model = bundle.getParcelable("data");
+        if (bundle != null && bundle.getParcelable(KEY.WORK) != null) {
+            model = bundle.getParcelable(KEY.WORK);
         }
         if (model == null) {
             List<WorkModel> models = WorkModelDao.getInstance().query(false);
@@ -266,10 +354,30 @@ public class SignUtils implements OnHttpResultListener {
             model.setOffSignin(time);
             WorkModelDao.getInstance().update(model);
         }
-
+        //TODO 将播放语音放在回调
         VoiceUtils.signVoice(R.raw.voice_sign);
         if (this.mSignListener != null) {
             this.mSignListener.sign(true, "打卡成功");
         }
     }
+
+    private void callBack(boolean signOk, @StringRes int messageId) {
+        if (MyApplication.getInstance() != null) {
+            callBack(signOk, StringUtil.getMessage(messageId));
+        }
+
+    }
+
+    private void callBack(boolean signOk, String message) {
+        if (mSignListener != null) {
+            mSignListener.sign(signOk, message);
+        }
+    }
+
+
+    private interface KEY {
+        String IS_B2B = "isB2b";
+        String WORK = "work";
+        String DISTANCE = "distance";
+    }
 }

+ 29 - 0
app_modular/apputils/src/main/java/com/modular/apputils/widget/WrapContentLinearLayoutManager.java

@@ -0,0 +1,29 @@
+package com.modular.apputils.widget;
+
+import android.content.Context;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.util.AttributeSet;
+
+public class WrapContentLinearLayoutManager extends LinearLayoutManager {
+    public WrapContentLinearLayoutManager(Context context) {
+        super(context);
+    }
+
+    public WrapContentLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
+        super(context, orientation, reverseLayout);
+    }
+
+    public WrapContentLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    @Override
+    public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
+        try {
+            super.onLayoutChildren(recycler, state);
+        } catch (IndexOutOfBoundsException e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 1 - 4
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/WorkPresenter.java

@@ -512,10 +512,7 @@ public class WorkPresenter implements OnHttpResultListener, IWorkPresenter {
             } else {
                 submitWork(models, macAddress);
             }
-//            else {
-//                if (iWorkView != null)
-//                    iWorkView.showFristMac();
-//            }
+
         }
     }