raomeng 8 лет назад
Родитель
Сommit
e537aee9f2
57 измененных файлов с 1801 добавлено и 755 удалено
  1. 3 2
      WeiChat/src/main/AndroidManifest.xml
  2. 116 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/NodeAdapter.java
  3. 12 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/helper/AvatarHelper.java
  4. 15 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BasicInfoActivity.java
  5. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/AppWebViewActivity.java
  6. 19 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CommonDocDetailsActivity.java
  7. 6 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/TaskActivity.java
  8. 46 28
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/contanct/ContactsActivity.java
  9. 69 65
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/DataFormFieldActivity.java
  10. 49 42
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/ProcessMsgActivity.java
  11. 1 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddVisitReportActivity.java
  12. 23 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ApprovalActivity.java
  13. 137 121
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/DailydetailsActivity.java
  14. 40 39
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ExpenseReimbursementActivity.java
  15. 12 16
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/ApprovalAdapter.java
  16. 8 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/dao/ContactsDao.java
  17. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/entity/SelectCollisionTurnBean.java
  18. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/form/Data.java
  19. 43 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/Approval.java
  20. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/ApprovalRecord.java
  21. 10 12
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java
  22. 385 188
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/ApprovaPresenter.java
  23. 2 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SelectCollisionPresenter.java
  24. 2 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IApproval.java
  25. 111 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/ApprovaNodeUtil.java
  26. 35 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java
  27. 3 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/ContactsUtils.java
  28. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  29. 117 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/TemperatureActivity.java
  30. 14 19
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java
  31. 3 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/xmpp/XMucChatManager.java
  32. 42 0
      WeiChat/src/main/java/com/xzjmyk/pm/newpedo/utils/CommonSensorUtils.java
  33. 4 4
      WeiChat/src/main/java/com/xzjmyk/pm/newpedo/view/NewStepActivity.java
  34. BIN
      WeiChat/src/main/res/drawable-hdpi/avatar_normal.png
  35. BIN
      WeiChat/src/main/res/drawable-xhdpi/avatar_normal.png
  36. BIN
      WeiChat/src/main/res/drawable-xxhdpi/avatar_normal.png
  37. 138 115
      WeiChat/src/main/res/layout/activity_approval.xml
  38. 0 2
      WeiChat/src/main/res/layout/activity_setting.xml
  39. 133 0
      WeiChat/src/main/res/layout/approval_operation.xml
  40. 2 0
      WeiChat/src/main/res/layout/item_approval_title.xml
  41. 34 26
      WeiChat/src/main/res/layout/item_process_state.xml
  42. 1 0
      WeiChat/src/main/res/layout/new_message_header.xml
  43. 16 14
      WeiChat/src/main/res/layout/pop_crm_list.xml
  44. 24 0
      WeiChat/src/main/res/layout/temperature_main.xml
  45. 1 1
      WeiChat/src/main/res/raw/versionconfiguration.properties
  46. 2 2
      WeiChat/src/main/res/values/colors.xml
  47. 2 0
      WeiChat/src/main/res/values/strings.xml
  48. 1 0
      app_core/common/.gitignore
  49. 34 0
      app_core/common/build.gradle
  50. 25 0
      app_core/common/proguard-rules.pro
  51. 26 0
      app_core/common/src/androidTest/java/base/android/com/commom/ExampleInstrumentedTest.java
  52. 2 0
      app_core/common/src/main/AndroidManifest.xml
  53. 3 0
      app_core/common/src/main/res/values/strings.xml
  54. 17 0
      app_core/common/src/test/java/base/android/com/commom/ExampleUnitTest.java
  55. 1 1
      app_core/imageload/build.gradle
  56. 1 1
      app_core/network/build.gradle
  57. 4 0
      settings.gradle

+ 3 - 2
WeiChat/src/main/AndroidManifest.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.xzjmyk.pm.activity"
-    android:versionCode="110"
-    android:versionName="5.8.8">
+    android:versionCode="111"
+    android:versionName="5.8.9">
 
     <uses-sdk
         android:minSdkVersion="11"
@@ -982,6 +982,7 @@
             android:name=".ui.erp.activity.contanct.ContactsActivity"
             android:windowSoftInputMode="adjustPan" />
         <activity android:name=".ui.account.RegisterSelectActivity"></activity>
+        <activity android:name=".ui.me.TemperatureActivity"></activity>
 
         <!--数据统计,报表查询-->
         <activity android:name=".ui.erp.activity.datainquiry.ReportStatisticsActivity"/>

+ 116 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/NodeAdapter.java

@@ -0,0 +1,116 @@
+package com.xzjmyk.pm.activity.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.helper.AvatarHelper;
+import com.xzjmyk.pm.activity.ui.erp.model.oa.Approval;
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+
+import java.util.List;
+
+/**
+ * Created by Bitliker on 2017/8/11.
+ */
+
+public class NodeAdapter extends BaseAdapter {
+
+    private Context ct;
+    private List<Approval> approvals;
+
+
+    public NodeAdapter(Context ct, List<Approval> approvals) {
+        this.ct = ct;
+        this.approvals = approvals;
+    }
+
+    @Override
+    public int getCount() {
+        return ListUtils.getSize(approvals);
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return approvals.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View itemView, ViewGroup parent) {
+        NodeViewHolder holder = null;
+        if (itemView == null) {
+            holder = new NodeViewHolder();
+            itemView = LayoutInflater.from(ct).inflate(R.layout.item_approval_node, parent, false);
+            holder.timeTv = (TextView) itemView.findViewById(R.id.timeTv);
+            holder.keyTv = (TextView) itemView.findViewById(R.id.keyTv);
+            holder.valuesTv = (TextView) itemView.findViewById(R.id.valuesTv);
+            holder.handIv = (ImageView) itemView.findViewById(R.id.handIv);
+            holder.statusIV = (ImageView) itemView.findViewById(R.id.statusIV);
+            holder.padding = itemView.findViewById(R.id.padding);
+            itemView.setTag(holder);
+        } else {
+            holder = (NodeViewHolder) itemView.getTag();
+        }
+        bindNodeView(holder, position);
+        return itemView;
+    }
+
+    private void bindNodeView(NodeViewHolder holder, int position) {
+        Approval approval = approvals.get(position);
+        if (position > 0 && approvals.get(position - 1).getType() != Approval.NODES) {
+            holder.padding.setVisibility(View.VISIBLE);
+        } else {
+            holder.padding.setVisibility(View.GONE);
+        }
+        int textColor = R.color.hintColor;
+        if (!StringUtils.isEmpty(approval.getIdKey())) {
+            holder.valuesTv.setText(approval.getIdKey());
+            if (approval.getIdKey().startsWith("待审批")) {
+                textColor = R.color.approvaling;
+            } else if (approval.getIdKey().startsWith("未通过")) {
+                textColor = R.color.crimson;
+            }
+        } else {
+            holder.valuesTv.setText("");
+        }
+        holder.valuesTv.setTextColor(ct.getResources().getColor(textColor));
+        holder.keyTv.setText(approval.getCaption());
+        int reId = R.drawable.weishenpi;
+        if (!StringUtils.isEmpty(approval.getIdKey())) {
+            String status = approval.getIdKey().split("\\(")[0];
+            if (StringUtils.isEmpty(status)) status = "";
+            if ("已审批".equals(status)) {
+                reId = R.drawable.node_finished3;
+            } else if ("待审批".equals(status)) {
+                reId = R.drawable.daishenpi;
+            } else if ("未通过".equals(status)) {
+                reId = R.drawable.node_delete;
+            } else {
+                reId = R.drawable.weishenpi;
+            }
+        }
+        holder.statusIV.setImageResource(reId);
+        AvatarHelper.getInstance().display(String.valueOf(approval.getId()), holder.handIv, true, false);
+        holder.timeTv.setTextColor(ct.getResources().getColor(R.color.text_normal));
+        holder.timeTv.setText(approval.getValues());
+    }
+
+    private class NodeViewHolder {
+        ImageView handIv, statusIV;
+        TextView timeTv, keyTv, valuesTv;
+        View padding;
+
+
+    }
+}

+ 12 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/helper/AvatarHelper.java

@@ -94,6 +94,7 @@ public class AvatarHelper {
 //            return;
 
     }
+
     public void displayRoomAvatar(String userId, final ImageView imageView, final boolean isThumb) {
         final String url = getAvatarUrl(userId, isThumb);
         if (TextUtils.isEmpty(url)) {
@@ -137,6 +138,7 @@ public class AvatarHelper {
             display(url, imageView, isThumb);
         }
     }
+
     public void displayAvatar(String userId, final ImageView imageView, final boolean isThumb) {
         final String url = getAvatarUrl(userId, isThumb);
         if (TextUtils.isEmpty(url)) {
@@ -184,7 +186,7 @@ public class AvatarHelper {
 
     public void displayAvatarPng(String userId, final ImageView imageView, final boolean isThumb) {
         final String url = getAvatarUrlPng(userId, isThumb);
-        Log.i("Arison","AvatarHelper:displayAvatar:140:"+url);
+        Log.i("Arison", "AvatarHelper:displayAvatar:140:" + url);
         if (TextUtils.isEmpty(url)) {
             return;
         }
@@ -280,12 +282,13 @@ public class AvatarHelper {
 
     /**
      * 图片的url 转 Bitmap对象
+     *
      * @param userId
      * @param isThumb
      * @return
      */
-    public static Bitmap returnBitmap(String userId,boolean isThumb){
-        final  String urlpath = getAvatarUrl(userId, isThumb);
+    public static Bitmap returnBitmap(String userId, boolean isThumb) {
+        final String urlpath = getAvatarUrl(userId, isThumb);
         Bitmap mBitmap = null;
         try {
             URL url = new URL(urlpath);
@@ -302,10 +305,11 @@ public class AvatarHelper {
 
     /**
      * 图片的 Bitmap对象转 url
+     *
      * @param bitmap
      * @return
      */
-    public static String doBitmapTurnToStringurl(Bitmap bitmap){
+    public static String doBitmapTurnToStringurl(Bitmap bitmap) {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();// outputstream
         bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
         byte[] appicon = baos.toByteArray();// 转为byte数组
@@ -362,15 +366,17 @@ public class AvatarHelper {
             display(url, imageAware, isThumb);
         }
     }
+
     public static String getRoomAvatarUrl(String userId, boolean isThumb) {
         String url = null;
         if (isThumb) {
-            url = MyApplication.getInstance().getConfig().AVATAR_THUMB_PREFIX + "/" +  "/" + userId + ".jpg";
+            url = MyApplication.getInstance().getConfig().AVATAR_THUMB_PREFIX + "/" + "/" + userId + ".jpg";
         } else {
-            url = MyApplication.getInstance().getConfig().AVATAR_ORIGINAL_PREFIX + "/" +   "/" + userId + ".jpg";
+            url = MyApplication.getInstance().getConfig().AVATAR_ORIGINAL_PREFIX + "/" + "/" + userId + ".jpg";
         }
         return url;
     }
+
     public static String getAvatarUrl(String userId, boolean isThumb) {
         if (TextUtils.isEmpty(userId)) {
             return null;
@@ -421,7 +427,6 @@ public class AvatarHelper {
     }
 
 
-
     // // 无用
     // public void displayResumeAvatar(String userId, ImageView imageView, boolean isThumb) {
     // String url = getResumeAvatar(userId, isThumb);

+ 15 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BasicInfoActivity.java

@@ -756,13 +756,13 @@ public class BasicInfoActivity extends BaseActivity implements NewFriendListener
                         // 更新界面
                         do_next_tv.setText(R.string.send_msg);
                         do_next_tv.setOnClickListener(new SendMsgListener());
-                        
-                        ContactsModel model=new ContactsModel();
+
+                        ContactsModel model = new ContactsModel();
                         model.setImid(mUser.getUserId());
                         model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
-                        model.setWhichsys(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_master"));
+                        model.setWhichsys(CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master"));
                         model.setType(1);
-                        if (StringUtils.isEmpty(model.getWhichsys())){
+                        if (StringUtils.isEmpty(model.getWhichsys())) {
                             model.setWhichsys("");
                         }
                         ContactsDao.getInstance().update(model);
@@ -887,6 +887,17 @@ public class BasicInfoActivity extends BaseActivity implements NewFriendListener
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         deleteFriend(friend, 0);
+                        //取消好友  更新通讯录数据库
+                        ContactsModel model = new ContactsModel();
+                        model.setImid(mUser.getUserId());
+                        model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
+                        model.setWhichsys(CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master"));
+                        model.setType(2);
+                        if (StringUtils.isEmpty(model.getWhichsys())) {
+                            model.setWhichsys("");
+                        }
+                        ContactsDao.getInstance().update(model);
+
                     }
                 }).setNegativeButton(getString(R.string.common_cancel), null);
         builder.create().show();

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/AppWebViewActivity.java

@@ -23,7 +23,6 @@ public class AppWebViewActivity extends WebViewLoadActivity {
         super.onCreate(savedInstanceState, persistentState);
     }
 
-
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.returnOld) {
@@ -34,6 +33,7 @@ public class AppWebViewActivity extends WebViewLoadActivity {
                 nodeId = getIntent().getIntExtra("nodeid", -1);
             }
             intent.putExtra("nodeid", nodeId);
+            intent.putExtra("master", getIntent().getStringExtra("master"));
             startActivity(intent);
             finish();
         }

+ 19 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CommonDocDetailsActivity.java

@@ -30,6 +30,7 @@ import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.adapter.ComDocGriddataOutAdapter;
 import com.xzjmyk.pm.activity.adapter.CommonDocApprovalFlowAdapter;
 import com.xzjmyk.pm.activity.adapter.CommonDocMainMsgAdapter;
+import com.xzjmyk.pm.activity.adapter.NodeAdapter;
 import com.xzjmyk.pm.activity.bean.oa.CommonApprovalFlowBean;
 import com.xzjmyk.pm.activity.bean.oa.CommonDocAMBean;
 import com.xzjmyk.pm.activity.helper.AvatarHelper;
@@ -39,8 +40,10 @@ import com.xzjmyk.pm.activity.ui.erp.activity.form.FormListSelectActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.ExpenseReimbursementActivity;
 import com.xzjmyk.pm.activity.ui.erp.db.DBManager;
 import com.xzjmyk.pm.activity.ui.erp.entity.EmployeesEntity;
+import com.xzjmyk.pm.activity.ui.erp.model.oa.Approval;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ActivityUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.ApprovaNodeUtil;
 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;
@@ -779,11 +782,11 @@ public class CommonDocDetailsActivity extends BaseActivity {
                 }
                 Log.i("last_afpeople_names", afpeople_names.toString());
                 Log.i("last_imids", im_ids.toString());
-                mCommonDocApprovalFlowAdapter.setIm_ids(im_ids);
-                mCommonDocApprovalFlowAdapter.setAfpeople_names(afpeople_names);
+//                mCommonDocApprovalFlowAdapter.setIm_ids(im_ids);
+//                mCommonDocApprovalFlowAdapter.setAfpeople_names(afpeople_names);
                 // 设置数据之前先通过数据库获取到所有的imid保存到内存中
-                mCommonDocApprovalFlowAdapter.setmCommonApprovalFlowBean(mCommonApprovalFlowBean);
-                appflow_lv.setAdapter(mCommonDocApprovalFlowAdapter);
+//                mCommonDocApprovalFlowAdapter.setmCommonApprovalFlowBean(mCommonApprovalFlowBean);
+//                appflow_lv.setAdapter(mCommonDocApprovalFlowAdapter);
 
                 if (ListUtils.isEmpty(mCommonApprovalFlowBean.getData()) && ListUtils.isEmpty(mCommonApprovalFlowBean.getNodes())) {
                     hide_above_af.setVisibility(View.GONE);
@@ -794,9 +797,20 @@ public class CommonDocDetailsActivity extends BaseActivity {
         }catch (Exception e){
             e.printStackTrace();
         }
+
+        handlerNode(af_result);
         getemcodefromAF();
     }
-
+    private void handlerNode(String message) {
+        List<Approval> approvals = ApprovaNodeUtil.handlerNode(manager, message);
+        if (!ListUtils.isEmpty(approvals)) {
+            NodeAdapter nodeAdapter = new NodeAdapter(this, approvals);
+            appflow_lv.setAdapter(nodeAdapter);
+        } else {
+            //TODO 为空时候
+        }
+        progressDialog.dismiss();
+    }
     /**
      * 申请单据申请人emcode,从审批流数据获取
      */

+ 6 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/TaskActivity.java

@@ -69,7 +69,8 @@ import java.util.regex.PatternSyntaxException;
 
 @SuppressWarnings({"unused", "deprecation"})
 public class TaskActivity extends BaseActivity implements OnClickListener {
-
+    //TODO 应要求修改先修改为2000,后面再优化
+    private final int PAGE_SIZE=2000;
     private EmptyLayout mEmptyLayout;
     private Context context;
     private PullToRefreshListView listview_main;
@@ -788,7 +789,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener {
         mparams.put("sessionId", CommonUtil.getSharedPreferences(context, "sessionId"));
         mparams.put("caller", "ResourceAssignment");
         mparams.put("page", "1");
-        mparams.put("pageSize", "100");
+        mparams.put("pageSize", PAGE_SIZE);
         mparams.put("_noc", "1");
         String em_code = CommonUtil.getSharedPreferences(context, "erp_username");
         String erp_emid = CommonUtil.getSharedPreferences(context, "erp_emid");
@@ -805,6 +806,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener {
         ViewUtil.httpSendRequest(context, url, mparams, handler, headers, handlerWhat, null, null, "get");
     }
 
+
     /**
      * @注释: 带条件的调转
      */
@@ -815,7 +817,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener {
         mparams.put("sessionId", CommonUtil.getSharedPreferences(context, "sessionId"));
         mparams.put("caller", "ResourceAssignment");
         mparams.put("page", mCurrentPage);
-        mparams.put("pageSize", "100");
+        mparams.put("pageSize", PAGE_SIZE);
         mparams.put("_noc", "1");
         mparams.put("status", "");
         String em_code = CommonUtil.getSharedPreferences(context, "erp_username");
@@ -836,7 +838,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener {
         mparams.put("sessionId", CommonUtil.getSharedPreferences(context, "sessionId"));
         mparams.put("caller", "ResourceAssignment");
         mparams.put("page", "1");
-        mparams.put("pageSize", "100");
+        mparams.put("pageSize", PAGE_SIZE);
         mparams.put("_noc", "1");
         String em_code = CommonUtil.getSharedPreferences(context, "erp_emid");
         mparams.put("condition", "recorderid='" + em_code + "'" + "and handstatuscode<>'FINISHED'" + " and nvl(class,' ')<>'projecttask'");

+ 46 - 28
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/contanct/ContactsActivity.java

@@ -205,13 +205,13 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
             @Override
             public void afterTextChanged(Editable s) {
                 searchKey = s.toString();
-                LogUtil.d("arison"," searchKey:"+searchKey);
+                LogUtil.d("arison", " searchKey:" + searchKey);
                 if (!StringUtils.isEmpty(s.toString())) {
                     mlist.setMode(PullToRefreshBase.Mode.DISABLED);
                     List<ContactsModel> cacheData = contactsDao.find(s.toString());
                     if (adapter != null) {
                         if (ListUtils.isEmpty(cacheData)) {
-                            LogUtil.d("arison","searchContactsByNet:"+searchKey);
+                            LogUtil.d("arison", "searchContactsByNet:" + searchKey);
                             searchContactsByNet(s.toString());
                             return;
                         }
@@ -219,7 +219,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                         models.addAll(cacheData);
                         adapter.notifyDataSetChanged();
                         //查询需要优化
-                        getStateByPhones(cacheData);
+                        //getStateByPhones(cacheData);
                         if (models.size() == 0) {
                             emptyLayout.showEmpty();
                         }
@@ -248,17 +248,26 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
             PermissionUtil.requestPermission(this, PermissionUtil.DEFAULT_REQUEST, permissions);
         } else {
             getCaceData(false);
+            isHasPermiss = true;
+            LogUtil.d("Test", "有权限@....");
         }
     }
 
+    boolean isHasPermiss = false;
+
     @Override
     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
         if (requestCode == PermissionUtil.DEFAULT_REQUEST) {
             if (grantResults.length != 1 || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
                 ToastUtil.showToast(ct, R.string.not_system_permission);
+                isHasPermiss = false;
+                getCaceData(false);
+                LogUtil.d("Test", "没有权限....");
             } else {
+                isHasPermiss = true;
                 getCaceData(false);
+                LogUtil.d("Test", "有权限....");
             }
         }
     }
@@ -310,7 +319,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                         model.setEmail("");
                         model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
                         model.setPhone(entity.getPhone());
-                        model.setWhichsys("");
+                        model.setWhichsys(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_master"));
                         model.setCompany("");
                         tmodels.add(model);
                     }
@@ -330,25 +339,33 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         ThreadPool.getThreadPool().addTask(new Runnable() {
             @Override
             public void run() {
-                List<Contacts> contacts =
-                        ContactsUtils.getContacts1();
-                if (contacts != null) {
-                    for (Contacts entity : contacts) {
-                        ContactsModel model = new ContactsModel();
-                        model.setImid("0");
-                        model.setName(StringUtils.isEmpty(entity.getName()) ? entity.getNickname() : entity.getName());
-                        model.setType(3);
-                        model.setEmail("");
-                        model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
-                        model.setPhone(entity.getPhone());
-                        model.setWhichsys("");
-                        model.setCompany("");
-                        tmodels.add(model);
+                LogUtil.d("Test","isHasPermiss:"+isHasPermiss);
+                if (isHasPermiss) {
+                    List<Contacts> contacts =
+                            ContactsUtils.getContacts1();
+                    if (contacts != null) {
+                        for (Contacts entity : contacts) {
+                            ContactsModel model = new ContactsModel();
+                            model.setImid("0");
+                            model.setName(StringUtils.isEmpty(entity.getName()) ? entity.getNickname() : entity.getName());
+                            model.setType(3);
+                            model.setEmail("");
+                            model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
+                            model.setPhone(entity.getPhone());
+                            model.setWhichsys(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_master"));
+                            model.setCompany("");
+                            tmodels.add(model);
 
+                        }
+                        contactsDao.save(tmodels);
+                        getCaceData(false);
                     }
+                } else {
+                    //没权限
                     contactsDao.save(tmodels);
                     getCaceData(false);
                 }
+
             }
         });
 
@@ -444,20 +461,19 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         params.put("token", MyApplication.getInstance().mAccessToken);
         params.put("userid", myUserId);
         params.put("telephones", builder.toString());
-        LogUtil.d("array myUserId=" + myUserId);
         LogUtil.d("array builder.toString=" + builder.toString());
         StringJsonObjectRequest<String> request = new StringJsonObjectRequest<String>(
                 MyApplication.getInstance().getConfig().APP_QUER_YUSER, new Response.ErrorListener() {
             @Override
             public void onErrorResponse(VolleyError arg0) {
-//                ToastUtil.showErrorNet(MyApplication.getInstance());
-                //   showModel(models);
+                ToastUtil.showErrorNet(MyApplication.getInstance());
             }
         }, new StringJsonObjectRequest.Listener<String>() {
             @Override
             public void onResponse(ObjectResult<String> result) {
                 String message = result.toString();
                 if (!OACheckUtil.isEmpty(message)) {
+                    LogUtil.d("Test", "message:" + message);
                     hanlderAppQueryuserInThread(message);
                 }
             }
@@ -490,11 +506,12 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                         if (model.getPhone().equals(telephone)) {
                             if (isfriend.equals("0")) {
                                 model.setType(2);//非好友
-                                model.setImid(String.valueOf(_id));
-                                // contactsDao.update(model,String.valueOf(_id));
+                              model.setImid(String.valueOf(_id));
+                                contactsDao.update(model,"0");
                             } else if (isfriend.equals("1")) {
                                 model.setType(1);//好友
                                 model.setImid(String.valueOf(_id));
+                                contactsDao.update(model,"0");
                             }
                         }
                     }
@@ -575,7 +592,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
         LogUtil.i("invite");
         final String name = CommonUtil.getName();
         final String phone = user.getPhone().trim().replaceAll(" ", "");
-        ;
+
 //        if (!com.xzjmyk.pm.activity.util.StringUtils.isMobileNumber(phone)) {
 //            showToast("选择人员电话号码为空或是格式不正确", R.color.load_submit);
 //            return;
@@ -697,7 +714,8 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                                             model.setEmail("");
                                             model.setOwnerId(MyApplication.getInstance().mLoginUser.getUserId());
                                             model.setPhone(entity.getPhone());
-                                            model.setWhichsys("");
+                                            //uu好友
+                                            model.setWhichsys(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_master"));
                                             model.setCompany("");
                                             tmodels.add(model);
                                         }
@@ -746,8 +764,8 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                         if (!ListUtils.isEmpty(models)) {
                             models.clear();
                             models.addAll(xmodels);
-                        }else{
-                            models.addAll(xmodels); 
+                        } else {
+                            models.addAll(xmodels);
                         }
                         if (adapter != null) {
                             adapter.notifyDataSetChanged();
@@ -756,7 +774,7 @@ public class ContactsActivity extends OABaseActivity implements ContactsAdapter.
                             emptyLayout.showEmpty();
                         }
                     } catch (Exception e) {
-                       
+
                     }
                     break;
             }

+ 69 - 65
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/DataFormFieldActivity.java

@@ -45,17 +45,18 @@ public class DataFormFieldActivity extends BaseActivity implements AdapterView.O
 
     @ViewInject(R.id.asset_grid_delete)
     private MyStickyGridHeadersGridView mDGridView;
-    
-    
+
+
     @ViewInject(R.id.bt_save)
     private Button bt_save;
-    
+
     @ViewInject(R.id.ll_hide)
     private LinearLayout ll_hide;
     @ViewInject(R.id.ll_add)
     private LinearLayout ll_add;
     private StickyGridAdapter mAdapter;
     private StickyGridAdapter mDadapter;
+    private String master;//添加账套,由于审批流部分存在不同账套的问题
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -72,22 +73,23 @@ public class DataFormFieldActivity extends BaseActivity implements AdapterView.O
         if (intent != null) {
             List<Data> fields = (List) intent.getParcelableArrayListExtra("fields");//传递数据
             List<Data> fieldsDis = (List) intent.getParcelableArrayListExtra("fieldsDis");//传递数据
-            caller=intent.getStringExtra("caller");
-            initData(fields,fieldsDis);
+            caller = intent.getStringExtra("caller");
+            master = intent.getStringExtra("master");
+            initData(fields, fieldsDis);
         } else {
-            initData(null,null);
+            initData(null, null);
         }
-        
+
         bt_save.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                commit();;
+                commit(); ;
             }
         });
     }
 
-    private void initData(List<Data> fields,List<Data> fieldsDis) {
-        if (ListUtils.isEmpty(fields)&&ListUtils.isEmpty(fieldsDis)) {
+    private void initData(List<Data> fields, List<Data> fieldsDis) {
+        if (ListUtils.isEmpty(fields) && ListUtils.isEmpty(fieldsDis)) {
             List<Data> hasHeaderIdList = new ArrayList<>();
 //            int groupId = 1;
 //            for (int i = 0; i < 25; i++) {
@@ -106,26 +108,26 @@ public class DataFormFieldActivity extends BaseActivity implements AdapterView.O
             mGridView.setAreHeadersSticky(false);//空值悬停
             mGridView.setOnItemClickListener(this);
 
-            mDadapter = new StickyGridAdapter(DataFormFieldActivity.this, hasHeaderIdList,   mDGridView);
-            mDGridView.setAdapter( mDadapter);
+            mDadapter = new StickyGridAdapter(DataFormFieldActivity.this, hasHeaderIdList, mDGridView);
+            mDGridView.setAdapter(mDadapter);
             mDGridView.setAreHeadersSticky(false);//空值悬停
-            
+
             mDGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                 @Override
                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                    
+
                 }
             });
-            
+
             View emptyView = LayoutInflater.from(this).inflate(R.layout.erp_empty_view, null);
             emptyView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
             emptyView.setVisibility(View.GONE);
-            ((ViewGroup)mGridView.getParent()).addView(emptyView);
+            ((ViewGroup) mGridView.getParent()).addView(emptyView);
 //            ((ViewGroup)mDGridView.getParent()).addView(emptyView);
-            
+
             mGridView.setEmptyView(emptyView);
 //            mDGridView.setEmptyView(emptyView);
-            
+
             bt_save.setVisibility(View.GONE);
             ll_add.setVisibility(View.GONE);
             ll_hide.setVisibility(View.GONE);
@@ -150,11 +152,11 @@ public class DataFormFieldActivity extends BaseActivity implements AdapterView.O
                     mDadapter.notifyDataSetChanged();
                 }
             });
-            if (ListUtils.isEmpty(fields)){
+            if (ListUtils.isEmpty(fields)) {
                 ll_add.setVisibility(View.GONE);
                 ll_hide.setVisibility(View.VISIBLE);
             }
-            if (ListUtils.isEmpty(fieldsDis)){
+            if (ListUtils.isEmpty(fieldsDis)) {
                 ll_add.setVisibility(View.VISIBLE);
                 ll_hide.setVisibility(View.GONE);
             }
@@ -175,7 +177,7 @@ public class DataFormFieldActivity extends BaseActivity implements AdapterView.O
 
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-       // ToastMessage(mAdapter.getHasHeaderIdList().get(position).getName() + "被点击!");
+        // ToastMessage(mAdapter.getHasHeaderIdList().get(position).getName() + "被点击!");
         if (mAdapter.getHasHeaderIdList().get(position).isSelected()) {
             mAdapter.getHasHeaderIdList().get(position).setIsSelected(false);
         } else {
@@ -186,14 +188,14 @@ public class DataFormFieldActivity extends BaseActivity implements AdapterView.O
     }
 
 
-    private String formStore="";
-    private String gridStore="";
+    private String formStore = "";
+    private String gridStore = "";
     private String caller;
-   
-    private Handler mHandler=new Handler(){
+
+    private Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
-            switch (msg.what){
+            switch (msg.what) {
                 case Constants.HTTP_SUCCESS_INIT:
                     LogUtil.d(msg.getData().getString("result"));
                     ToastMessage("提交成功!");
@@ -203,12 +205,12 @@ public class DataFormFieldActivity extends BaseActivity implements AdapterView.O
                             setResult(0x25);
                             finish();
                         }
-                    },3000);
+                    }, 3000);
                     break;
             }
         }
     };
-    
+
 
     /*
     * 界面配更新接口:
@@ -219,92 +221,94 @@ public class DataFormFieldActivity extends BaseActivity implements AdapterView.O
     public void commit() {
         List<Data> mSource = mAdapter.getHasHeaderIdList();
         List<Data> mDSource = mDadapter.getHasHeaderIdList();
-        HashMap<String,Integer> resultMap=new HashMap<>();
+        HashMap<String, Integer> resultMap = new HashMap<>();
 //        LogUtil.d(JSON.toJSONString(mSource));
 //        LogUtil.d(JSON.toJSONString(mDSource));
-        formStore="";
-        gridStore="";
-        if (!ListUtils.isEmpty(mSource)){
-            for (int i=0;i<mSource.size();i++){
-                String formStr ="";
-                String girdStr="";
-                if (mSource.get(i).getGroupId()==0) {
+        formStore = "";
+        gridStore = "";
+        if (!ListUtils.isEmpty(mSource)) {
+            for (int i = 0; i < mSource.size(); i++) {
+                String formStr = "";
+                String girdStr = "";
+                if (mSource.get(i).getGroupId() == 0) {
                     if (mSource.get(i).isSelected()) {
                         formStr = mSource.get(i).getField();
                     }
-                    if(StringUtils.isEmpty(formStr))continue;
+                    if (StringUtils.isEmpty(formStr)) continue;
 //                    if (i==mSource.size()-1){
 //                        formStore+=formStr;
 //                    }else{
-                        formStore+=formStr+",";
-                       resultMap.put(formStr,-1);//准备显示
+                    formStore += formStr + ",";
+                    resultMap.put(formStr, -1);//准备显示
 //                    }
-                }else{
+                } else {
                     if (mSource.get(i).isSelected()) {
                         girdStr = mSource.get(i).getField();
                     }
-                    if(StringUtils.isEmpty(girdStr))continue;
+                    if (StringUtils.isEmpty(girdStr)) continue;
 //                    if(i==mSource.size()-1){
 //                        gridStore+=girdStr;
 //                    }else{
-                        gridStore+=girdStr+",";
-                       resultMap.put(girdStr,-1);//准备显示
+                    gridStore += girdStr + ",";
+                    resultMap.put(girdStr, -1);//准备显示
 //                    } 
                 }
-                }
             }
+        }
 
 
-        if (!ListUtils.isEmpty(mDSource)){
-            for (int i=0;i<mDSource.size();i++){
-                String formStr ="";
-                String girdStr="";
-                if (mDSource.get(i).getGroupId()==0) {
+        if (!ListUtils.isEmpty(mDSource)) {
+            for (int i = 0; i < mDSource.size(); i++) {
+                String formStr = "";
+                String girdStr = "";
+                if (mDSource.get(i).getGroupId() == 0) {
                     if (mDSource.get(i).isSelected()) {
                         formStr = mDSource.get(i).getField();
                     }
-                    if(StringUtils.isEmpty(formStr))continue;
+                    if (StringUtils.isEmpty(formStr)) continue;
 //                    if (i==mSource.size()-1){
 //                        formStore+=formStr;
 //                    }else{
-                    formStore+=formStr+",";
-                    resultMap.put(formStr,0);//准备隐藏
+                    formStore += formStr + ",";
+                    resultMap.put(formStr, 0);//准备隐藏
 //                    }
-                }else{
+                } else {
                     if (mDSource.get(i).isSelected()) {
                         girdStr = mDSource.get(i).getField();
                     }
-                    if(StringUtils.isEmpty(girdStr))continue;
+                    if (StringUtils.isEmpty(girdStr)) continue;
 //                    if(i==mSource.size()-1){
 //                        gridStore+=girdStr;
 //                    }else{
-                    gridStore+=girdStr+",";
-                    resultMap.put(girdStr,0);//准备隐藏
+                    gridStore += girdStr + ",";
+                    resultMap.put(girdStr, 0);//准备隐藏
 //                    } 
                 }
             }
         }
-        
-        
+
+
 //        LogUtil.d(formStore);
 //        LogUtil.d(gridStore);
         LogUtil.d(JSON.toJSONString(resultMap));
-        if (!StringUtils.isEmpty(formStore))formStore=formStore.substring(0,formStore.length()-1);
-        if (!StringUtils.isEmpty(gridStore))gridStore=gridStore.substring(0,gridStore.length()-1);
-        if (StringUtils.isEmpty(gridStore)&&StringUtils.isEmpty(formStore)){
+        if (!StringUtils.isEmpty(formStore))
+            formStore = formStore.substring(0, formStore.length() - 1);
+        if (!StringUtils.isEmpty(gridStore))
+            gridStore = gridStore.substring(0, gridStore.length() - 1);
+        if (StringUtils.isEmpty(gridStore) && StringUtils.isEmpty(formStore)) {
             ToastMessage("当前没有选中项");
             return;
         }
         String url = Constants.getAppBaseUrl(ct) + "/mobile/common/updatemobiledefault.action";
         Map<String, Object> params = new HashMap<>();
         params.put("caller", caller);
+        params.put("master", master);
         params.put("formStore", JSON.toJSONString(resultMap));
-       // params.put("gridStore", gridStore);
+        // params.put("gridStore", gridStore);
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, Constants.HTTP_SUCCESS_INIT, null, null, "post");
     }
-    
-    
-    
+
+
 }

+ 49 - 42
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/ProcessMsgActivity.java

@@ -39,10 +39,12 @@ 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.LogUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.view.EmptyLayout;
 import com.xzjmyk.pm.activity.ui.erp.view.VoiceSearchView;
 import com.xzjmyk.pm.activity.util.DateFormatUtil;
+import com.xzjmyk.pm.activity.util.TimeUtils;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -105,13 +107,9 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                             mAdapter = new ProcessAdapter(ct, array);
                             mList.setAdapter(mAdapter);
                         } else {
+                            mAdapter.setData(array);
                             mAdapter.notifyDataSetChanged();
                         }
-
-                        if (currentId != 0) {
-//                            mList.getRefreshableView().setSelection(currentId);
-//                            mList.getRefreshableView().setSelection(0);
-                        }
                         ToastMessage(getString(R.string.common_up_finish));
                         progressDialog.dismiss();
                     } catch (Exception e) {
@@ -128,11 +126,9 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                         tv_process_un_num.setText(array.size() + "");
                     }
 
-                    if (wait_app){
-                        if ( mPosition < array.size()){
+                    if (tab_type == 1 && mPosition > 0) {
+                        if (mPosition < array.size()) {
                             mList.getRefreshableView().setSelection(mPosition);
-                        }else {
-                            mList.getRefreshableView().setSelection(array.size()-1);
                         }
                     }
                     progressDialog.dismiss();
@@ -175,10 +171,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     if (array.size() == 0) {
                         mEmptyLayout.showEmpty();
                     } else {
-                        handleImids(3, array);
-                    }
-                    if (currentId != 0) {
-//                        mList.getRefreshableView().setSelection(0);
+//                        handleImids(3, array);
                     }
                     ToastMessage(getString(R.string.common_up_finish));
                     progressDialog.dismiss();
@@ -212,13 +205,12 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
             }
         }
     };
-    private boolean wait_app = false;
     private int mPosition;
 
     private void getEmimids(JSONArray array) {
         if (!ListUtils.isEmpty(im_ids)) im_ids.clear();
         for (int i = 0; i < array.size(); i++) {
-            im_ids.add(array.getJSONObject(i).getString("EM_IMID") + "");
+            im_ids.add(OACheckUtil.getJsonIntager(array.getJSONObject(i), "EM_IMID") + "");
             if (i == array.size() - 1 && !ListUtils.isEmpty(im_ids)) {
                 mAdapter.setImids(im_ids);
                 mAdapter.notifyDataSetChanged();
@@ -298,6 +290,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
             @Override
             public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                 page = 1;
+                mPosition = -1;
                 voiceSearchView.setText("");
                 switch (tab_type) {
                     case 1:
@@ -315,6 +308,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
             @Override
             public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                 page++;
+                mPosition = -1;
                 voiceSearchView.setText("");
                 switch (tab_type) {
                     case 1:
@@ -367,7 +361,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                 if (StringUtils.isEmpty(d_imids)) {
                     d_imids = MyApplication.getInstance().mLoginUser.getUserId(); //审批详情界面:这里显示是我发起的,取当前登录当前用户的头像
                 }
-                LogUtil.i("url="+url);
+                LogUtil.i("url=" + url);
                 String master = model.master == null ? CommonUtil.getSharedPreferences(ct, "erp_master") : model.master;
                 if (CommonUtil.isReleaseVersion()) {
                     CommonUtil.loadWebView(ct, url, title, master, null, null);
@@ -382,7 +376,8 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     Intent intent = new Intent(ct, ApprovalActivity.class);
                     intent.putExtra("imid", d_imids);
                     intent.putExtra("title", title);
-                    intent.putExtra("type",tab_type);
+                    intent.putExtra("type", tab_type);
+                    intent.putExtra("master", master);
                     intent.putExtra("nodeid", Integer.valueOf(model.JP_NODEID));
                     startActivity(intent);
                 }
@@ -418,9 +413,9 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
-
-        if (resultCode == 170809){
-            wait_app = true;
+        LogUtil.i("onActivityResult");
+        LogUtil.i("tab_type==" + tab_type);
+        if (tab_type == 1) {
             loadProcessToDo(page);
         }
     }
@@ -519,6 +514,10 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
     protected void onResume() {
         super.onResume();
 //        mList.setRefreshing(true);
+        if (tab_type == 1) {
+            voiceSearchView.setText("");
+            loadProcessToDo(page);
+        }
 
     }
 
@@ -546,6 +545,11 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
             this.inflater = LayoutInflater.from(ct);
         }
 
+        public void setData(JSONArray array) {
+            this.jsonArray = array;
+            this.originArray = array;
+        }
+
         @Override
         public int getCount() {
             return jsonArray == null ? 0 : jsonArray.size();
@@ -592,13 +596,14 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     String jp_status = jsonArray.getJSONObject(position).getString("JP_STATUS");
                     String jp_typecode = jsonArray.getJSONObject(position).getString("TYPECODE");
                     String jp_master = jsonArray.getJSONObject(position).getString("CURRENTMASTER");
+                    int tdem_imid = OACheckUtil.getJsonIntager(jsonArray.getJSONObject(position), "EM_IMID");
                     model.name.setText(jp_launchername + "的" + jp_name);
                     if (jp_launchtime != null) {
-                        model.date.setText(DateFormatUtil.getStrDate4Date(new Date(jp_launchtime), "yyyy-MM-dd HH:mm"));
+                        model.date.setText(DateFormatUtil.getStrDate4Date(new Date(jp_launchtime), "MM-dd HH:mm"));
                     } else {
                         model.date.setText("");
                     }
-                    ;
+
 //                    model.status.setText(jp_status);
                     model.status.setTextColor(getResources().getColor(R.color.approvaling));
                     model.status.setText("等待我审批");
@@ -608,11 +613,11 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     model.imid.setVisibility(View.VISIBLE);
                     model.meimid.setVisibility(View.GONE);
                     //设置显示审批人头像
-                    if (ListUtils.isEmpty(imids)) {
+                    if (tdem_imid != -1) {
+                        AvatarHelper.getInstance().display(tdem_imid + "", model.imid, true, false);//显示圆角图片
+                    } else {
                         String imageUri = "drawable://" + R.drawable.common_header_boy;
                         AvatarHelper.getInstance().display(imageUri, model.imid, true);
-                    } else if (!ListUtils.isEmpty(im_ids)) {
-                        AvatarHelper.getInstance().display(im_ids.get(position), model.imid, true, false);//显示圆角图片
                     }
                     break;
                 case 2:
@@ -626,9 +631,11 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     if (!StringUtils.isEmpty(jp_name)) jp_name = jp_name.replace("流程", "");
                     String jn_dealtime = jsonArray.getJSONObject(position).getString("JN_DEALTIME");//JP_LAUNCHTIME
                     String jn_dealresult = jsonArray.getJSONObject(position).getString("JN_DEALRESULT");
-
+                    int done_emid = OACheckUtil.getJsonIntager(jsonArray.getJSONObject(position), "EM_IMID");
                     model.name.setText(jn_dealmanname + "的" + jp_name);
-                    model.date.setText(jn_dealtime);
+                    Long L = TimeUtils.s_str_2_long(jn_dealtime);
+                    model.date.setText(DateFormatUtil.getStrDate4Date(new Date(L), "MM-dd HH:mm"));
+//                    model.date.setText(jn_dealtime);
                     if (!StringUtils.isEmpty(jn_dealresult)) {
                         if ("不同意".equals(jn_dealresult)) {
 //                            CommonUtil.textSpanForStyle(model.status, getString(R.string.status_approved) + "(" + jn_dealresult + ")",
@@ -659,11 +666,11 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     model.imid.setVisibility(View.VISIBLE);
                     model.meimid.setVisibility(View.GONE);
                     //设置显示审批人头像
-                    if (ListUtils.isEmpty(imids)) {
+                    if (done_emid != -1) {
+                        AvatarHelper.getInstance().display(done_emid + "", model.imid, true, false);//显示圆角图片
+                    } else {
                         String imageUri = "drawable://" + R.drawable.common_header_boy;
                         AvatarHelper.getInstance().display(imageUri, model.imid, true);
-                    } else if (!ListUtils.isEmpty(im_ids)) {
-                        AvatarHelper.getInstance().display(im_ids.get(position), model.imid, true, false);//显示圆角图片
                     }
                     break;
                 case 3:
@@ -680,6 +687,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                         String nodename = jsonArray.getJSONObject(position).getString("JP_NODEDEALMANNAME");
                         JP_NODEID = jsonArray.getJSONObject(position).getString("JP_NODEID");
                         String codename = jsonArray.getJSONObject(position).getString("JP_NODENAME");
+                        int me_emid = OACheckUtil.getJsonIntager(jsonArray.getJSONObject(position), "EM_IMID");
                         if (!StringUtils.isEmpty(status)) {
                             if (status.equals("待审批")) {
                                 model.status.setTextColor(getResources().getColor(R.color.approvaling));
@@ -700,7 +708,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
 //                        model.name.setText(name + "-" + code);
                         model.name.setText(name);
                         if (time != null) {
-                            model.date.setText(DateFormatUtil.getStrDate4Date(new Date(time), "yyyy-MM-dd HH:mm"));
+                            model.date.setText(DateFormatUtil.getStrDate4Date(new Date(time), "MM-dd HH:mm"));
                         } else {
                             model.date.setText("");
                         }
@@ -713,16 +721,15 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                         model.status.setText(status);
 
                         model.JP_NODEID = JP_NODEID;
-                    }
-
-                    model.imid.setVisibility(View.GONE);
-                    model.meimid.setVisibility(View.VISIBLE);
-                    //设置显示审批人头像
-                    if (ListUtils.isEmpty(imids)) {
-                        String imageUri = "drawable://" + R.drawable.common_header_boy;
-                        AvatarHelper.getInstance().display(imageUri, model.meimid, true);
-                    } else if (!ListUtils.isEmpty(im_ids)) {
-                        AvatarHelper.getInstance().display(im_ids.get(position), model.meimid, true, false);//显示圆角图片
+                        //设置显示审批人头像
+                        model.imid.setVisibility(View.GONE);
+                        model.meimid.setVisibility(View.VISIBLE);
+                        if (me_emid != -1) {
+                            AvatarHelper.getInstance().display(me_emid + "", model.meimid, true, false);//显示圆角图片
+                        } else {
+                            String imageUri = "drawable://" + R.drawable.common_header_boy;
+                            AvatarHelper.getInstance().display(imageUri, model.meimid, true);
+                        }
                     }
                     break;
             }
@@ -797,7 +804,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     jsonArray = (JSONArray) results.values;
                     LogUtil.d("过滤后:" + JSON.toJSONString(jsonArray));
                     notifyDataSetChanged();
-                    if (mAdapter.getCount()==0){
+                    if (mAdapter.getCount() == 0) {
                         mEmptyLayout.showEmpty();
                     }
                 }

+ 1 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddVisitReportActivity.java

@@ -347,12 +347,7 @@ public class AddVisitReportActivity extends OABaseActivity implements IAddVisitR
                     contact_lv.setAdapter(adapter);
 //                    notifyDataSetChanged();
                 }
-            }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialogInterface, int i) {
-
-                }
-            }).show();
+            }).setNegativeButton(R.string.cancel,null).show();
         }
 
         class ViewHodler {

+ 23 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ApprovalActivity.java

@@ -14,7 +14,6 @@ import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.BaseAdapter;
 import android.widget.ImageView;
-import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.PopupWindow;
 import android.widget.RelativeLayout;
@@ -28,6 +27,7 @@ import com.iflytek.cloud.SpeechError;
 import com.iflytek.cloud.ui.RecognizerDialogListener;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
@@ -47,6 +47,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.OAConfig;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.RecognizerDialogUtil;
 import com.xzjmyk.pm.activity.util.DisplayUtil;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -54,10 +55,8 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 public class ApprovalActivity extends OABaseActivity implements IApproval, ApprovalAdapter.OnChangeClickListener, View.OnClickListener, RecognizerDialogListener {
-    @ViewInject(R.id.operationLL)
-    LinearLayout operationLL; //操作
     @ViewInject(R.id.opinionRL)
-    RelativeLayout opinionRL;//意见
+    RelativeLayout opinionRL;//操作和意见输入
     @ViewInject(R.id.opinionET)
     FormEditText opinionET;//意见
     @ViewInject(R.id.contentRV)
@@ -78,7 +77,7 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
             String url = mPresenter.getUrl(findViewById(R.id.takeOverTV).getVisibility() == View.VISIBLE ? "jsps/mobile/jprocand.jsp?nodeId=" : "", title);
             intent.putExtra("url", url);
             intent.putExtra("p", title);
-            intent.putExtra("master", CommonUtil.getMaster());
+            intent.putExtra("master", mPresenter.getMaster());
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             startActivity(intent);
             finish();
@@ -92,6 +91,10 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         getMenuInflater().inflate(R.menu.menu_aproval_set, menu);
         MenuItem item = menu.getItem(1);
         item.setTitle("返回旧版");
+        if (!PreferenceUtils.getBoolean(AppConfig.IS_ADMIN, false)) {
+            MenuItem setItem = menu.getItem(0);
+            setItem.setVisible(false);
+        }
         return super.onCreateOptionsMenu(menu);
     }
 
@@ -151,10 +154,8 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
             getSupportActionBar().setTitle(title);
             if (getString(R.string.title_approval).equals(title)) {
                 opinionRL.setVisibility(View.VISIBLE);
-                operationLL.setVisibility(View.VISIBLE);
             } else {
                 opinionRL.setVisibility(View.GONE);
-                operationLL.setVisibility(View.GONE);
             }
         }
         mPresenter = new ApprovaPresenter(this, getIntent());
@@ -187,6 +188,7 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
                 mPresenter.disAgree(OACheckUtil.getText(opinionET));
                 break;
             case R.id.nextTV: //下一条
+                hineOpinion();
                 mPresenter.loadNextProcess();
                 break;
             case R.id.voiceIV://语音输入
@@ -247,7 +249,6 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
                 findViewById(R.id.takeOverTV).setVisibility(View.GONE);
             } else {
                 opinionRL.setVisibility(View.GONE);
-                operationLL.setVisibility(View.GONE);
             }
         }
     }
@@ -266,6 +267,7 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         findViewById(R.id.disagreeTV).setVisibility(View.GONE);
         findViewById(R.id.agreeTV).setVisibility(View.GONE);
         findViewById(R.id.takeOverTV).setVisibility(View.GONE);
+        opinionRL.setVisibility(View.GONE);
         opinionET.setText("");
         mAdapter = null;
     }
@@ -284,6 +286,19 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
                 }).show();
     }
 
+    @Override
+    public void showOpinion() {
+        if (mPresenter.isApprovaling()) {
+            opinionRL.setVisibility(View.VISIBLE);
+        }
+    }
+
+    public void hineOpinion() {
+        if (mPresenter.isApprovaling()) {
+            opinionRL.setVisibility(View.GONE);
+        }
+    }
+
 
     @Override
     public void sendToSelect(JSONArray data) {

+ 137 - 121
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/DailydetailsActivity.java

@@ -20,17 +20,21 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.adapter.DailyDetailsApprovalFlowAdapter;
+import com.xzjmyk.pm.activity.adapter.NodeAdapter;
 import com.xzjmyk.pm.activity.bean.oa.CommonApprovalFlowBean;
 import com.xzjmyk.pm.activity.helper.AvatarHelper;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.db.DBManager;
 import com.xzjmyk.pm.activity.ui.erp.entity.EmployeesEntity;
+import com.xzjmyk.pm.activity.ui.erp.model.oa.Approval;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.ApprovaNodeUtil;
 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;
@@ -41,9 +45,6 @@ import com.xzjmyk.pm.activity.ui.erp.view.EmptyLayout;
 import com.xzjmyk.pm.activity.util.SystemUtil;
 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;
@@ -86,7 +87,7 @@ public class DailydetailsActivity extends BaseActivity {
     private EmptyLayout mEmptyLayput_approvalflow;
     private int mkeyValue;
     private String mCaller = "WorkDaily";
-    private int mNoc = 1 ;
+    private int mNoc = 1;
     private final static int APPROVAL_FLOW_NODE = 102;
     private DBManager manager;
     private List<String> im_ids;
@@ -134,6 +135,7 @@ public class DailydetailsActivity extends BaseActivity {
     @ViewInject(R.id.common_docdata_rl)
     private RelativeLayout common_docdata_rl;
     private String em_name = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_emname");
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -149,7 +151,7 @@ public class DailydetailsActivity extends BaseActivity {
             @Override
             public void onClick(View v) {
 
-                if (!TextUtils.isEmpty(submittype) && submittype.equals("unsubmit")){//未提交状态
+                if (!TextUtils.isEmpty(submittype) && submittype.equals("unsubmit")) {//未提交状态
                     startActivity(new Intent(activity, WorkDailyAddActivity.class)
                             .putExtra("caller", mCaller)
                             .putExtra("id", mkeyValue)
@@ -159,7 +161,7 @@ public class DailydetailsActivity extends BaseActivity {
                             .putExtra("resubmit", "resubmit"));
                     Log.i("dosubmit_id", mkeyValue + "");
                     finish();
-                }else {                                                             //提交状态
+                } else {                                                             //提交状态
                     new AlertDialog
                             .Builder(mContext)
                             .setTitle(getString(R.string.common_notice))
@@ -180,20 +182,20 @@ public class DailydetailsActivity extends BaseActivity {
         delete_ll.setOnClickListener(new View.OnClickListener() {  //TODO 删除
             @Override
             public void onClick(View v) {
-                if (!TextUtils.isEmpty(submittype) && submittype.equals("unsubmit")){
+                if (!TextUtils.isEmpty(submittype) && submittype.equals("unsubmit")) {
                     new AlertDialog
                             .Builder(mContext)
                             .setTitle(getString(R.string.common_notice))
                             .setMessage(getString(R.string.delete_notice1))
                             .setNegativeButton(getString(R.string.common_cancel), null)
                             .setPositiveButton(getString(R.string.common_sure), new DialogInterface.OnClickListener() {
-                            @Override
-                            public void onClick(DialogInterface dialog, int which) {
-                                dodelete(mCaller, mkeyValue);
-                            }
-                        }).show();
+                                @Override
+                                public void onClick(DialogInterface dialog, int which) {
+                                    dodelete(mCaller, mkeyValue);
+                                }
+                            }).show();
 
-                }else {
+                } else {
                     new AlertDialog
                             .Builder(mContext)
                             .setTitle(getString(R.string.common_notice))
@@ -222,7 +224,7 @@ public class DailydetailsActivity extends BaseActivity {
         wdd_plan.setOnLongClickListener(new View.OnLongClickListener() {
             @Override
             public boolean onLongClick(View v) {
-                SystemUtil.copyText(getApplicationContext(),wdd_plan.getText().toString());
+                SystemUtil.copyText(getApplicationContext(), wdd_plan.getText().toString());
                 return true;
             }
         });
@@ -230,7 +232,7 @@ public class DailydetailsActivity extends BaseActivity {
         wdd_experience.setOnLongClickListener(new View.OnLongClickListener() {
             @Override
             public boolean onLongClick(View v) {
-                SystemUtil.copyText(getApplicationContext(),wdd_experience.getText().toString());
+                SystemUtil.copyText(getApplicationContext(), wdd_experience.getText().toString());
                 return true;
             }
         });
@@ -259,25 +261,27 @@ public class DailydetailsActivity extends BaseActivity {
         mCommonApprovalFlowBean = new CommonApprovalFlowBean();
         mDailyDetailsApprovalFlowAdapter = new DailyDetailsApprovalFlowAdapter(this);
 
-        manager = new DBManager(this);
-        im_ids =new ArrayList<>();
+        manager = new DBManager();
+        im_ids = new ArrayList<>();
         afpeople_names = new ArrayList<>();
 
     }
-    private Handler handler = new Handler(){
+
+    private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
             super.handleMessage(msg);
 
-            switch (msg.what){
+            switch (msg.what) {
                 case APPROVAL_FLOW_NODE:
                     String wdaf_result = msg.getData().getString("result");
                     LogUtil.prinlnLongMsg("wdaf_result", wdaf_result);
-                    WDAFshow(wdaf_result);
+                    handlerNode(wdaf_result);
+//                    WDAFshow(wdaf_result);
                     break;
                 case DAILY_REFORSUB_SUCCESSFULLY:
-                    if (msg.getData() != null){
-                        if (!StringUtils.isEmpty(msg.getData().getString("result"))){
+                    if (msg.getData() != null) {
+                        if (!StringUtils.isEmpty(msg.getData().getString("result"))) {
                             String resubmit_result = msg.getData().getString("result");
                             LogUtil.prinlnLongMsg("RESUBMITTED_message", resubmit_result);
                             Toast.makeText(ct, getString(R.string.daily_resumit_success), Toast.LENGTH_SHORT).show();
@@ -288,7 +292,7 @@ public class DailydetailsActivity extends BaseActivity {
                                     .putExtra("rs_summary", summary)
                                     .putExtra("rs_plan", plan)
                                     .putExtra("rs_experience", experience)
-                                    .putExtra("rs_donetask",donetask)
+                                    .putExtra("rs_donetask", donetask)
                                     .putExtra("resubmit", "resubmit"));
                             Log.i("doresubmit_id", mkeyValue + "");
                             finish();
@@ -296,8 +300,8 @@ public class DailydetailsActivity extends BaseActivity {
                     }
                     break;
                 case DAILY_REFORDELETE_SUCCESSFULLY:
-                    if (msg.getData() != null){
-                        if (!StringUtils.isEmpty(msg.getData().getString("result"))){
+                    if (msg.getData() != null) {
+                        if (!StringUtils.isEmpty(msg.getData().getString("result"))) {
                             String resfordelete_result = msg.getData().getString("result");
                             LogUtil.prinlnLongMsg("RESUBMITTED_message", resfordelete_result);
                             dodelete(mCaller, mkeyValue);
@@ -305,32 +309,32 @@ public class DailydetailsActivity extends BaseActivity {
                     }
                     break;
                 case REFORDELETE_DOC_REQUEST_SUCCESSFULLY:
-                    if(msg.getData() != null){
-                        if (!StringUtils.isEmpty(msg.getData().getString("result"))){
+                    if (msg.getData() != null) {
+                        if (!StringUtils.isEmpty(msg.getData().getString("result"))) {
                             String delete_result = msg.getData().getString("result");
                             LogUtil.prinlnLongMsg("refordelete_result", delete_result);
                             if (JSON.parseObject(delete_result).containsKey("success") && JSON.parseObject(delete_result).getBoolean("success")) {
-                                dodelete(mCaller,mkeyValue);
+                                dodelete(mCaller, mkeyValue);
                             }
                         }
                     }
                     break;
                 case DELETE_DOC_REQUEST_SUCCESSFULLY:
-                    if(msg.getData() != null){
-                        if (!StringUtils.isEmpty(msg.getData().getString("result"))){
+                    if (msg.getData() != null) {
+                        if (!StringUtils.isEmpty(msg.getData().getString("result"))) {
                             String delete_result = msg.getData().getString("result");
                             LogUtil.prinlnLongMsg("delete_result", delete_result);
                             if (JSON.parseObject(delete_result).containsKey("success") && JSON.parseObject(delete_result).getBoolean("success")) {
                                 Toast.makeText(ct, getString(R.string.daily_delate_success), Toast.LENGTH_LONG).show();
 //                                    startActivity(new Intent(activity,WorkDailyShowActivity.class)
 //                                    .putExtra("fromwhere","delete_succeed"));
-                                if (!TextUtils.isEmpty(fromwhere) && "submitdaily".equals(fromwhere)){
-                                    startActivity(new Intent(DailydetailsActivity.this,WorkDailyShowActivity.class));
+                                if (!TextUtils.isEmpty(fromwhere) && "submitdaily".equals(fromwhere)) {
+                                    startActivity(new Intent(DailydetailsActivity.this, WorkDailyShowActivity.class));
                                     finish();
-                                }else if (!TextUtils.isEmpty(fromwhere) && "dailylist".equals(fromwhere)){
+                                } else if (!TextUtils.isEmpty(fromwhere) && "dailylist".equals(fromwhere)) {
                                     Intent intent = new Intent();
-                                    intent.putExtra("delete_succeed","delete_succeed");
-                                    intent.putExtra("deleted_id",mkeyValue);
+                                    intent.putExtra("delete_succeed", "delete_succeed");
+                                    intent.putExtra("deleted_id", mkeyValue);
                                     setResult(DELETE_SUCCEED, intent);
                                     progressDialog.dismiss();
                                     finish();
@@ -342,7 +346,7 @@ public class DailydetailsActivity extends BaseActivity {
                     break;
 
 
-               case Constants.APP_SOCKETIMEOUTEXCEPTION:
+                case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     if (msg.getData() != null) {
                         if (!StringUtils.isEmpty(msg.getData().getString("result"))) {
                             ToastMessage(msg.getData().getString("result"));
@@ -353,46 +357,57 @@ public class DailydetailsActivity extends BaseActivity {
         }
     };
 
+    private void handlerNode(String message) {
+        List<Approval> approvals = ApprovaNodeUtil.handlerNode(manager, message);
+        if (!ListUtils.isEmpty(approvals)) {
+            NodeAdapter nodeAdapter = new NodeAdapter(this, approvals);
+            approval_flowlv.setAdapter(nodeAdapter);
+        } else {
+            //TODO 为空时候
+        }
+        progressDialog.dismiss();
+    }
 
     /**
      * 日报审批流获取并处理
+     *
      * @param wdaf_result
      */
     private void WDAFshow(String wdaf_result) {
-        try{
-            JSONObject resultJsonObject = new JSONObject(wdaf_result);
+        try {
+            JSONObject resultJsonObject = JSON.parseObject(wdaf_result);
             //JSONArray dailynodeArray = resultJsonObject.getJSONArray("nodes");
-            if(resultJsonObject == null){
+            if (resultJsonObject == null) {
                 approval_flowlv.setVisibility(View.GONE);
                 hide_above_af.setVisibility(View.GONE);
-            }else{
+            } else {
                 mCommonApprovalFlowBean = JSON.parseObject(resultJsonObject.toString(), CommonApprovalFlowBean.class);
                 getapplypeomsg(mCommonApprovalFlowBean);
                 em_code = new String();
                 if (manager == null) manager = new DBManager(mContext);
-                if("已审核".equals(wd_status) && (mCommonApprovalFlowBean.getData().size() == 0 ||
-                mCommonApprovalFlowBean.getData().size() == mCommonApprovalFlowBean.getNodes().size())){  // TODO 已审核直接从node里面取数据
-                    for (int i = 0; i <mCommonApprovalFlowBean.getNodes().size(); i++) {
+                if ("已审核".equals(wd_status) && (mCommonApprovalFlowBean.getData().size() == 0 ||
+                        mCommonApprovalFlowBean.getData().size() == mCommonApprovalFlowBean.getNodes().size())) {  // TODO 已审核直接从node里面取数据
+                    for (int i = 0; i < mCommonApprovalFlowBean.getNodes().size(); i++) {
                         //取名字
-                        if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getNodes().get(i).getJn_dealManName())){
+                        if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getNodes().get(i).getJn_dealManName())) {
                             afpeople_names.add(mCommonApprovalFlowBean.getNodes().get(i).getJn_dealManName());
-                        }else {
+                        } else {
                             afpeople_names.add("");
                         }
                         //取头像id
-                        if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getNodes().get(i).getJn_dealManId())){
+                        if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getNodes().get(i).getJn_dealManId())) {
                             em_code = mCommonApprovalFlowBean.getNodes().get(i).getJn_dealManId();
-                            if( em_code.contains(",")){
+                            if (em_code.contains(",")) {
                                 String str[] = em_code.split(",");
                                 em_code = str[0];
 //                                ToastMessage("多人审批,头像已显示为首个");   //该情况只有在测试账号情况下出现
                             }
-                        }else {
+                        } else {
                             em_code = " ";
                         }
                         try {
                             String whichsys = CommonUtil.getSharedPreferences(mContext, "erp_master");
-                            String[] selectionArgs = {em_code == null ? "": em_code, whichsys};
+                            String[] selectionArgs = {em_code == null ? "" : em_code, whichsys};
                             String selection = "em_code=? and whichsys=? ";
                             //获取数据库数据
                             EmployeesEntity bean = manager.selectForEmployee(selectionArgs, selection);
@@ -400,31 +415,31 @@ public class DailydetailsActivity extends BaseActivity {
                                 String imId = String.valueOf(bean.getEm_IMID());
                                 Log.i("todo", "imId=" + imId);
                                 im_ids.add(imId);
-                            }else {
+                            } else {
                                 im_ids.add("");
 //                                            ToastMessage("审批流头像获取异常,已显示为默认");
                             }
-                        }catch (Exception e){
+                        } catch (Exception e) {
                             e.printStackTrace();
                         }
 
                     }
-                }else if ("已提交".equals(wd_status)){
+                } else if ("已提交".equals(wd_status)) {
                     String whichsys = CommonUtil.getSharedPreferences(mContext, "erp_master");
 
                     // TODO 已提交状态判断是否有变更处理人,所以得先去process中判断,好麻烦噢
-                    if (!ListUtils.isEmpty(mCommonApprovalFlowBean.getProcesss()) && !ListUtils.isEmpty(mCommonApprovalFlowBean.getData())){
+                    if (!ListUtils.isEmpty(mCommonApprovalFlowBean.getProcesss()) && !ListUtils.isEmpty(mCommonApprovalFlowBean.getData())) {
                         int processnum = mCommonApprovalFlowBean.getProcesss().size();
                         //取process数据
                         for (int i = 0; i < processnum; i++) {
-                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getProcesss().get(i).getJp_nodeDealMan())){
+                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getProcesss().get(i).getJp_nodeDealMan())) {
                                 em_code = mCommonApprovalFlowBean.getProcesss().get(i).getJp_nodeDealMan();
-                                if( em_code.contains(",")) {
+                                if (em_code.contains(",")) {
                                     String str[] = em_code.split(",");
                                     em_code = str[0];
 //                                    ToastMessage("多人审批,头像已显示为首个");   //该情况只有在测试账号情况下出现
                                 }
-                                String[] selectionArgs = {em_code == null ? "": em_code, whichsys};
+                                String[] selectionArgs = {em_code == null ? "" : em_code, whichsys};
                                 String selection = "em_code=? and whichsys=? ";
                                 try {
                                     EmployeesEntity bean = manager.selectForEmployee(selectionArgs, selection);
@@ -438,43 +453,43 @@ public class DailydetailsActivity extends BaseActivity {
                                         String imId = String.valueOf(bean.getEm_IMID());
                                         Log.i("todo", "imId=" + imId);
                                         im_ids.add(imId);
-                                    }else {
+                                    } else {
                                         im_ids.add("");
                                     }
                                 } catch (Exception e) {
                                     e.printStackTrace();
                                 }
-                            }else {
+                            } else {
                                 im_ids.add("");
                             }
 
                             //获取process审批人姓名
-                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getProcesss().get(i).getJp_nodeDealManName())){
+                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getProcesss().get(i).getJp_nodeDealManName())) {
                                 afpeople_names.add(mCommonApprovalFlowBean.getProcesss().get(i).getJp_nodeDealManName());
-                            }else if (!TextUtils.isEmpty(af_name)){
+                            } else if (!TextUtils.isEmpty(af_name)) {
                                 afpeople_names.add(af_name);
-                            }else {
+                            } else {
                                 afpeople_names.add("");
                             }
                         }
 
                         //取data数据
-                        for (int j = processnum; j<mCommonApprovalFlowBean.getData().size();j++){
+                        for (int j = processnum; j < mCommonApprovalFlowBean.getData().size(); j++) {
                             //取process之后的审批人名字
-                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getData().get(j).getJP_NODEDEALMANNAME())){
+                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getData().get(j).getJP_NODEDEALMANNAME())) {
                                 afpeople_names.add(mCommonApprovalFlowBean.getData().get(j).getJP_NODEDEALMANNAME());
-                            }else {
+                            } else {
                                 afpeople_names.add("");
                             }
                             //取process之后的imid
-                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getData().get(j).getJP_NODEDEALMAN())){
+                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getData().get(j).getJP_NODEDEALMAN())) {
                                 em_code = mCommonApprovalFlowBean.getData().get(j).getJP_NODEDEALMAN();
-                                if( em_code.contains(",")) {
+                                if (em_code.contains(",")) {
                                     String str[] = em_code.split(",");
                                     em_code = str[0];
 //                                    ToastMessage("多人审批,头像已显示为首个");   //该情况只有在测试账号情况下出现
                                 }
-                                String[] selectionArgs = {em_code == null ? "": em_code, whichsys};
+                                String[] selectionArgs = {em_code == null ? "" : em_code, whichsys};
                                 String selection = "em_code=? and whichsys=? ";
                                 try {
                                     //获取数据库数据
@@ -483,42 +498,42 @@ public class DailydetailsActivity extends BaseActivity {
                                         String imId = String.valueOf(bean.getEm_IMID());
                                         Log.i("todo", "imId=" + imId);
                                         im_ids.add(imId);
-                                    }else {
+                                    } else {
                                         im_ids.add("");
 //                                            ToastMessage("审批流头像获取异常,已显示为默认");
                                     }
-                                }catch (Exception e){
+                                } catch (Exception e) {
                                     e.printStackTrace();
                                 }
-                            }else {
+                            } else {
                                 im_ids.add("");
                             }
                         }
                     }
 
                     // TODO 标准版刚刚提交时无变更时,全部取data数据
-                    if (ListUtils.isEmpty(mCommonApprovalFlowBean.getProcesss()) &&  !ListUtils.isEmpty(mCommonApprovalFlowBean.getData())){
-                        for (int i = 0; i <mCommonApprovalFlowBean.getData().size(); i++) {
+                    if (ListUtils.isEmpty(mCommonApprovalFlowBean.getProcesss()) && !ListUtils.isEmpty(mCommonApprovalFlowBean.getData())) {
+                        for (int i = 0; i < mCommonApprovalFlowBean.getData().size(); i++) {
                             //取名字
                             if (manager == null) manager = new DBManager(mContext);
-                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getData().get(i).getJP_NODEDEALMANNAME())){
+                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getData().get(i).getJP_NODEDEALMANNAME())) {
                                 afpeople_names.add(mCommonApprovalFlowBean.getData().get(i).getJP_NODEDEALMANNAME());
-                            }else {
+                            } else {
                                 afpeople_names.add("");
                             }
                             //取头像id
-                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getData().get(i).getJP_NODEDEALMAN())){
+                            if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getData().get(i).getJP_NODEDEALMAN())) {
                                 em_code = mCommonApprovalFlowBean.getData().get(i).getJP_NODEDEALMAN();
-                                if( em_code.contains(",")){
+                                if (em_code.contains(",")) {
                                     String str[] = em_code.split(",");
                                     em_code = str[0];
 //                                    ToastMessage("多人审批,头像已显示为首个");   //该情况只有在测试账号情况下出现
                                 }
-                            }else {
+                            } else {
                                 em_code = " ";
                             }
                             try {
-                                String[] selectionArgs = {em_code == null ? "": em_code, whichsys};
+                                String[] selectionArgs = {em_code == null ? "" : em_code, whichsys};
                                 String selection = "em_code=? and whichsys=? ";
                                 //获取数据库数据
                                 EmployeesEntity bean = manager.selectForEmployee(selectionArgs, selection);
@@ -526,35 +541,36 @@ public class DailydetailsActivity extends BaseActivity {
                                     String imId = String.valueOf(bean.getEm_IMID());
                                     Log.i("todo", "imId=" + imId);
                                     im_ids.add(imId);
-                                }else {
+                                } else {
                                     im_ids.add("");
 //                                            ToastMessage("审批流头像获取异常,已显示为默认");
                                 }
-                            }catch (Exception e){
+                            } catch (Exception e) {
                                 e.printStackTrace();
                             }
 
                         }
                     }
-                }else if ("已审核".equals(wd_status) && mCommonApprovalFlowBean.getData().size() != 0
-                        && mCommonApprovalFlowBean.getData().size() != mCommonApprovalFlowBean.getNodes().size()){
+                } else if ("已审核".equals(wd_status) && mCommonApprovalFlowBean.getData().size() != 0
+                        && mCommonApprovalFlowBean.getData().size() != mCommonApprovalFlowBean.getNodes().size()) {
                     approval_flowlv.setVisibility(View.GONE);
                 }
-                Log.i("last_afpeople_names", "空"+afpeople_names.toString());
+                Log.i("last_afpeople_names", "空" + afpeople_names.toString());
                 Log.i("last_imids", im_ids.toString());
+                afpeople_names.clear();
+                im_ids.clear();
+                handlerNode(wdaf_result);
                 mDailyDetailsApprovalFlowAdapter.setIm_ids(im_ids);
                 mDailyDetailsApprovalFlowAdapter.setAfpeople_names(afpeople_names);
                 // 设置数据之前先通过数据库获取到所有的imid保存到内存中
                 mDailyDetailsApprovalFlowAdapter.setmCommonApprovalFlowBean(mCommonApprovalFlowBean);
                 approval_flowlv.setAdapter(mDailyDetailsApprovalFlowAdapter);
 
-                if(ListUtils.isEmpty(mCommonApprovalFlowBean.getData()) && ListUtils.isEmpty(mCommonApprovalFlowBean.getNodes())){
+                if (ListUtils.isEmpty(mCommonApprovalFlowBean.getData()) && ListUtils.isEmpty(mCommonApprovalFlowBean.getNodes())) {
                     hide_above_af.setVisibility(View.GONE);
                 }
             }
-        }catch (JSONException e){
-            e.printStackTrace();
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
         }
 
@@ -573,7 +589,7 @@ public class DailydetailsActivity extends BaseActivity {
         String applypeo_number = mCommonApprovalFlowBean.getProcesss().get(0).getJp_launcherId();
 
         name_tv.setText(applypeo_name);
-        if (!applypeo_number.isEmpty()){
+        if (!applypeo_number.isEmpty()) {
             String whichsys = CommonUtil.getSharedPreferences(mContext, "erp_master");
             String[] selectionArgs = {applypeo_number == null ? "" : applypeo_number, whichsys};
             String selection = "em_code=? and whichsys=? ";
@@ -637,9 +653,9 @@ public class DailydetailsActivity extends BaseActivity {
         LogUtil.d(JSON.toJSONString(params));
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
-        if (retype.equals("reforsub")){  //反提交之重新提交请求
+        if (retype.equals("reforsub")) {  //反提交之重新提交请求
             ViewUtil.httpSendRequest(this, resubmit_url, params, handler, headers, DAILY_REFORSUB_SUCCESSFULLY, null, null, "post");
-        }else if (retype.equals("refordelete")){ //反提交之删除请求
+        } else if (retype.equals("refordelete")) { //反提交之删除请求
             ViewUtil.httpSendRequest(this, resubmit_url, params, handler, headers, REFORDELETE_DOC_REQUEST_SUCCESSFULLY, null, null, "post");
         }
     }
@@ -649,10 +665,10 @@ public class DailydetailsActivity extends BaseActivity {
         final Intent intent = getIntent();
         date = intent.getStringExtra("Date");
         summary = intent.getStringExtra("Content");
-        if (!TextUtils.isEmpty(intent.getStringExtra("WD_Status"))){
+        if (!TextUtils.isEmpty(intent.getStringExtra("WD_Status"))) {
             wd_status = intent.getStringExtra("WD_Status");
         }
-        mkeyValue = intent.getIntExtra("ID", -1); Log.i("first_mkeyValue",mkeyValue + "");
+        mkeyValue = intent.getIntExtra("ID", -1); Log.i("first_mkeyValue", mkeyValue + "");
         fromwhere = intent.getStringExtra("fromwhere");
         if (!TextUtils.isEmpty(intent.getStringExtra("Plan"))) {
             plan = intent.getStringExtra("Plan");
@@ -665,33 +681,33 @@ public class DailydetailsActivity extends BaseActivity {
             experience_ll.setVisibility(View.GONE);
         }
         if (!TextUtils.isEmpty(intent.getStringExtra("Donetask"))
-                && !"null".equals(intent.getStringExtra("Donetask"))){
+                && !"null".equals(intent.getStringExtra("Donetask"))) {
             donetask = intent.getStringExtra("Donetask");
 //            done_task_tv.setText(Html.fromHtml(donetask)); 将html格式转化为普通文本
-            donetask_wv.loadDataWithBaseURL(null,donetask.toLowerCase(),"text/html","utf-8",null);
-            Log.i("donetask",donetask);
-        }else {
+            donetask_wv.loadDataWithBaseURL(null, donetask.toLowerCase(), "text/html", "utf-8", null);
+            Log.i("donetask", donetask);
+        } else {
             done_task_ll.setVisibility(View.GONE);
         }
 
         if (!TextUtils.isEmpty(intent.getStringExtra("Undotask"))
-                && !"null".equals(intent.getStringExtra("Undotask"))){
+                && !"null".equals(intent.getStringExtra("Undotask"))) {
             undotask = intent.getStringExtra("Undotask");
-            undotask_wv.loadDataWithBaseURL(null,undotask.toLowerCase(),"text/html","utf-8",null);
-        }else {
+            undotask_wv.loadDataWithBaseURL(null, undotask.toLowerCase(), "text/html", "utf-8", null);
+        } else {
             undo_task_ll.setVisibility(View.GONE);
         }
         wdd_data.setText(date + "");
         wdd_summary.setText(summary);
-        if("已审核".equals(wd_status)){
+        if ("已审核".equals(wd_status)) {
             wdd_status.setTextColor(getResources().getColor(R.color.approval));
             wdd_status.setText(getString(R.string.status_approved));
             resanddel_ll.setVisibility(View.GONE);
-        }else if (wd_status.equals("已提交")){
+        } else if (wd_status.equals("已提交")) {
             wdd_status.setTextColor(getResources().getColor(R.color.no_approval));
             wdd_status.setText(getString(R.string.status_pending));
             resanddel_ll.setVisibility(View.VISIBLE);
-        }else if (wd_status.equals("在录入")){
+        } else if (wd_status.equals("在录入")) {
             wdd_status.setTextColor(getResources().getColor(R.color.done_approval));
             wdd_status.setText(getString(R.string.status_unsubmit));
             resanddel_ll.setVisibility(View.VISIBLE);
@@ -704,17 +720,17 @@ public class DailydetailsActivity extends BaseActivity {
 
 
         // 当获取到正确的单据caller和单据id时 请求获取审批流数据
-        if(!TextUtils.isEmpty(mCaller)&&mkeyValue!= -1){
-                String url = Constants.getAppBaseUrl(getApplicationContext())+"common/getCurrentJnodes.action";
-                Map<String,Object> param = new HashMap<>();
-                param.put("caller", mCaller);
-                param.put("keyValue",mkeyValue );
-                Log.i("app_flowid", mkeyValue + "");
-                param.put("_noc",mNoc);
-                LinkedHashMap headers = new LinkedHashMap();
-                headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
-                ViewUtil.httpSendRequest(getApplicationContext(), url, param, handler, headers, APPROVAL_FLOW_NODE, null, null, "post");
-        }else{
+        if (!TextUtils.isEmpty(mCaller) && mkeyValue != -1) {
+            String url = Constants.getAppBaseUrl(getApplicationContext()) + "common/getCurrentJnodes.action";
+            Map<String, Object> param = new HashMap<>();
+            param.put("caller", mCaller);
+            param.put("keyValue", mkeyValue);
+            Log.i("app_flowid", mkeyValue + "");
+            param.put("_noc", mNoc);
+            LinkedHashMap headers = new LinkedHashMap();
+            headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(getApplicationContext(), "sessionId"));
+            ViewUtil.httpSendRequest(getApplicationContext(), url, param, handler, headers, APPROVAL_FLOW_NODE, null, null, "post");
+        } else {
             approval_flowlv.setVisibility(View.GONE);
             hide_above_af.setVisibility(View.GONE);
         }
@@ -729,33 +745,33 @@ public class DailydetailsActivity extends BaseActivity {
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == android.R.id.home) {
-            if (!TextUtils.isEmpty(fromwhere) && fromwhere.equals("submitdaily"))
-            {
+            if (!TextUtils.isEmpty(fromwhere) && fromwhere.equals("submitdaily")) {
                 startActivity(new Intent(activity, WorkDailyShowActivity.class)
                         .putExtra("fromwhere", "dodaily"));
                 finish();
-            }else {
+            } else {
                 finish();
             }
-        }return true;
+        } return true;
     }
+
     @Override
     public void onBackPressed() {
-        if (!TextUtils.isEmpty(fromwhere) && fromwhere.equals("submitdaily"))
-        {
+        if (!TextUtils.isEmpty(fromwhere) && fromwhere.equals("submitdaily")) {
             startActivity(new Intent(activity, WorkDailyShowActivity.class)
                     .putExtra("fromwhere", "dodaily"));
             finish();
-        }else {
+        } else {
             super.onBackPressed();
             finish();
         }
 
     }
+
     @Override
     protected void onDestroy() {
         super.onDestroy();
-        if (manager!=null) {
+        if (manager != null) {
             manager.closeDB();
         }
     }

+ 40 - 39
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ExpenseReimbursementActivity.java

@@ -12,8 +12,6 @@ import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.text.Editable;
-import android.text.TextWatcher;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.Gravity;
@@ -40,7 +38,6 @@ import com.alibaba.fastjson.JSONException;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.PropertyFilter;
 import com.andreabaccega.widget.FormEditText;
-import com.iflytek.cloud.thirdparty.V;
 import com.lidroid.xutils.HttpUtils;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.exception.HttpException;
@@ -162,6 +159,7 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
 
     private AddCostBean mAddCostBean;
     private List<AddCostBean> mAddCost_list; // popwindow要展示的消费明细类型
+    private String[] default_Cost =  {"交通费","通讯费","招待费","差旅费","办公费","税费","物业费","其他"};
 
     //点击新增需要展示的消费明数据细主表
     private List<CostTypeSingleBean> costtypesinglebeanList;
@@ -280,7 +278,7 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
 
                         if ("S".equals(dg_type)){
                             if (cd_table_position < costFormModel_list.size())
-                            costFormModel_list.remove(cd_table_position);
+                                costFormModel_list.remove(cd_table_position);
                         }
                         if (costFormModel_list.size() == 0){
                             detail_table_ll.setVisibility(View.GONE);
@@ -860,9 +858,10 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
                 doSingleSelect(money_combdatas,2,getString(R.string.currency),SELECT_CURRENCY);
                 break;
             case R.id.add_details_tv:
-                if ("S".equals(dg_type)){
-                  showEditWindow();
-                }else if ("DF".equals(dg_type)){
+                if ("S".equals(dg_type)) {
+                    showEditWindow();
+//                }else if ("DF".equals(dg_type)){
+                }else {
                     showPopupWindow();
                 }
                 putDownInput();
@@ -891,12 +890,12 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
             case R.id.c_point:
                 if (StringUtils.isEmpty(c_edit.getText().toString())) break;
                 if (!StringUtils.isEmpty(c_edit.getText().toString()) && c_edit.getText().toString().contains(".")){
-                break;
-            }
+                    break;
+                }
 
-            if (StringUtils.isEmpty(c_edit.getText().toString()) && StringUtils.isEmpty(c_result.getText().toString())){
+                if (StringUtils.isEmpty(c_edit.getText().toString()) && StringUtils.isEmpty(c_result.getText().toString())){
                     break;
-            }
+                }
                 c_onclick("."); break;
             case R.id.c_c:
                 num1=0;num2=0;
@@ -1214,14 +1213,10 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
         if (setWindow == null) initPopupWindow();
         setWindow.showAtLocation(getWindow().getDecorView().
                 findViewById(android.R.id.content), Gravity.BOTTOM, 0, 0);
-//        if (VERSION_CODES  < 24) // API版本太高不断刷新View亮度,会有黑缝隙bug
-//            DisplayUtil.backgroundAlpha(this, 0.4f);
     }
     private void closePopupWindow() {
         if (setWindow != null)
             setWindow.dismiss();
-//        if (VERSION_CODES  < 24)
-//            DisplayUtil.backgroundAlpha(this, 1f);
 
         btn_save.setVisibility(View.VISIBLE);
     }
@@ -1248,7 +1243,7 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
     }
 
     private void initAddEvent() {
-       // 明细过长时长按,toast出明细内容
+        // 明细过长时长按,toast出明细内容
         gv_details_list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
             @Override
             public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
@@ -1304,7 +1299,7 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
                     }
                 }else {
 //                    for (int i = 0; i < 3; i++) {
-                        doDetailsHandle();
+                    doDetailsHandle();
 //                    }
                 }
 
@@ -1345,7 +1340,13 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
         }
     }
     private void initAddDatas() {
-        if (ListUtils.isEmpty(mAddCost_list)) return;
+        if (ListUtils.isEmpty(mAddCost_list)) {
+            for (int i = 0; i < default_Cost.length; i++) {
+                AddCostBean m = new AddCostBean();
+                m.setFcs_itemname(default_Cost[i]);
+                mAddCost_list.add(m);
+            }
+        }
         if (!ListUtils.isEmpty(costFormModel_list) && ListUtils.isEmpty(selected_detailsData)){
             for (int i = 0; i < costFormModel_list.size(); i++) {
                 selected_detailsData.add(costFormModel_list.get(i).getCost_type());
@@ -1879,8 +1880,8 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
             doDeletePAttach(position);
             LogUtil.prinlnLongMsg("dfb_attach",fb_attach);
         }
-            mPhotoList.remove(position);
-            mAdapter.notifyDataSetInvalidated();
+        mPhotoList.remove(position);
+        mAdapter.notifyDataSetInvalidated();
     }
 
     /**
@@ -1892,28 +1893,28 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
     private void doDeletePAttach(int posi) {
         fb_attach_list = new ArrayList<>();
         String[] split = fb_attach.split(";");
-            if (posi < split.length) {
-                for (int i = 0; i < split.length; i++) {
-                    if (i != posi){
-                        fb_attach_list.add(split[i]);
-                    }
+        if (posi < split.length) {
+            for (int i = 0; i < split.length; i++) {
+                if (i != posi){
+                    fb_attach_list.add(split[i]);
+                }
 
-                    if (i == split.length-1){
-                        fb_attach = "";
-                        for (int j = 0; j < fb_attach_list.size(); j++) {
-                            fb_attach = fb_attach +fb_attach_list.get(j)+";";
+                if (i == split.length-1){
+                    fb_attach = "";
+                    for (int j = 0; j < fb_attach_list.size(); j++) {
+                        fb_attach = fb_attach +fb_attach_list.get(j)+";";
 
-                            if (j == fb_attach_list.size()-1){
-                                Log.i("now_fb_attach", fb_attach.toString());
-                                mCostUpdatePModel.getFiles().remove(posi);
-                                mAdapter.notifyDataSetInvalidated();
-                            }
+                        if (j == fb_attach_list.size()-1){
+                            Log.i("now_fb_attach", fb_attach.toString());
+                            mCostUpdatePModel.getFiles().remove(posi);
+                            mAdapter.notifyDataSetInvalidated();
                         }
                     }
                 }
-            }else {
-                return;
             }
+        }else {
+            return;
+        }
     }
 
     private void takePhoto() {
@@ -1958,7 +1959,7 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
         }
         if (item.getItemId() == android.R.id.home){
 //            if (formid != 0){
-               finish();
+            finish();
 //            }else{
 //                startActivity(new Intent(ExpenseReimbursementActivity.this, OAActivity.class)
 //                        .putExtra("WorkDailyAdd", "WorkDailyAdd"));
@@ -1971,7 +1972,7 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
     @Override
     public void onBackPressed() {
 //        if (formid != 0){
-            finish();
+        finish();
 //        }else {
 //            startActivity(new Intent(ExpenseReimbursementActivity.this, OAActivity.class)
 //                    .putExtra("WorkDailyAdd", "WorkDailyAdd"));
@@ -2174,7 +2175,7 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
                 selectApprovers(name);
             } else {
                 progressDialog.dismiss();
-               commitSuccess(keyValue);
+                commitSuccess(keyValue);
             }
         } else {
             progressDialog.dismiss();

+ 12 - 16
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/ApprovalAdapter.java

@@ -76,6 +76,7 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
                 return new TitleViewHolder(parent);
             case Approval.MAIN://列表
             case Approval.DETAIL:
+            case Approval.SETUPTASK:
                 return new BaseRVViewHodler(parent);
             case Approval.ENCLOSURE://单行列表
             case Approval.TAG:
@@ -111,32 +112,23 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
             holder.padding.setVisibility(View.GONE);
         }
         int textColor = R.color.hintColor;
+        int reId = R.drawable.weishenpi;
         if (!StringUtils.isEmpty(approval.getIdKey())) {
             holder.valuesTv.setText(approval.getIdKey());
             if (approval.getIdKey().startsWith("待审批")) {
                 textColor = R.color.approvaling;
-            } else if (approval.getIdKey().startsWith("未通过")) {
+                reId = R.drawable.daishenpi;
+            } else if (approval.getIdKey().startsWith("未通过") || approval.getIdKey().startsWith("结束")) {
                 textColor = R.color.crimson;
+                reId = R.drawable.node_delete;
+            } else if (approval.getIdKey().startsWith("已审批") || approval.getIdKey().startsWith("变更")) {
+                reId = R.drawable.node_finished3;
             }
         } else {
             holder.valuesTv.setText("");
         }
         holder.valuesTv.setTextColor(ct.getResources().getColor(textColor));
         holder.keyTv.setText(approval.getCaption());
-        int reId = R.drawable.weishenpi;
-        if (!StringUtils.isEmpty(approval.getIdKey())) {
-            String status = approval.getIdKey().split("\\(")[0];
-            if (StringUtils.isEmpty(status)) status = "";
-            if ("已审批".equals(status)) {
-                reId = R.drawable.node_finished3;
-            } else if ("待审批".equals(status)) {
-                reId = R.drawable.daishenpi;
-            } else if ("未通过".equals(status)) {
-                reId = R.drawable.node_delete;
-            } else {
-                reId = R.drawable.weishenpi;
-            }
-        }
         holder.statusIV.setImageResource(reId);
         AvatarHelper.getInstance().display(String.valueOf(approval.getId()), holder.handIv, true, false);
         if (reId == R.drawable.daishenpi && isApprovaling) {
@@ -329,7 +321,11 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
             } else {
                 setViewShowAble(true, holder.valueTv);
                 setViewShowAble(false, holder.valueEt, holder.valueWeb);
-                holder.valueTv.setText(Html.fromHtml(approval.getValues()));
+                if (approval.isNumber()) {
+                    holder.valueTv.setText(approval.getNumber());
+                } else {
+                    holder.valueTv.setText(Html.fromHtml(approval.getValues()));
+                }
             }
         }
     }

+ 8 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/dao/ContactsDao.java

@@ -164,14 +164,13 @@ public class ContactsDao {
     public  void update(ContactsModel model){
         SQLiteDatabase db=  DatabaseManager.getInstance().openDatabase();
         String sql = "update tbl_contacts"
-                + " set tf_type=? , tf_imId=? "
+                + " set tf_type=?"
                 + " where tf_ownerId=? and tf_whichSys=? and tf_imId=?;";
         SQLiteStatement sta = db.compileStatement(sql);
         sta.bindLong(1, model.getType());
-        sta.bindString(2, model.getImid());
-        sta.bindString(3, model.getOwnerId());
-        sta.bindString(4, model.getWhichsys());
-        sta.bindString(5, model.getImid());
+        sta.bindString(2, model.getOwnerId());
+        sta.bindString(3, model.getWhichsys());
+        sta.bindString(4, model.getImid());
         long row=  sta.executeInsert();
         DatabaseManager.getInstance().closeDatabase();
     }
@@ -181,13 +180,14 @@ public class ContactsDao {
         SQLiteDatabase db=  DatabaseManager.getInstance().openDatabase();
         String sql = "update tbl_contacts"
                 + " set tf_type=? , tf_imId=? "
-                + " where tf_ownerId=? and tf_whichSys=? and tf_imId=?;";
+                + " where tf_ownerId=? and tf_whichSys=? and tf_imId=? and tf_phone=?;";
         SQLiteStatement sta = db.compileStatement(sql);
         sta.bindLong(1, model.getType());
-        sta.bindString(2, imId);
+        sta.bindString(2, model.getImid());
         sta.bindString(3, model.getOwnerId());
         sta.bindString(4, model.getWhichsys());
-        sta.bindString(5, model.getImid());
+        sta.bindString(5, imId);//0  
+        sta.bindString(6, model.getPhone());
         long row=  sta.executeInsert();
         DatabaseManager.getInstance().closeDatabase();
     }

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/entity/SelectCollisionTurnBean.java

@@ -71,7 +71,7 @@ public class SelectCollisionTurnBean implements Parcelable {
     };
 
     public String getTitle() {
-        return title;
+        return title==null?"":title;
     }
 
 

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/form/Data.java

@@ -207,8 +207,9 @@ public class Data implements Parcelable {
     public Data() {
     }
 
-    public Data(boolean isMain, Approval  approval) {
+    public Data(boolean isMain, Approval approval) {
         this.groupId = isMain ? 0 : 1;
+        group = isMain ? "基本信息" : "明细项1";
         this.field = approval.getValuesKey();
         this.name = approval.getCaption();
     }

+ 43 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/Approval.java

@@ -23,10 +23,11 @@ public class Approval {
             TITLE = 11//标题
             , MAIN = 12  //主表
             , DETAIL = 13//从表
-            , ENCLOSURE = 14//附件
-            , POINTS = 15//要点
-            , NODES = 16//审批节点
-            , TAG = 17;//标题
+            , SETUPTASK = 14//历史审批要点
+            ,ENCLOSURE = 16//附件
+            , POINTS = 17//要点
+            , NODES = 18//审批节点
+            , TAG = 19;//标题
 
     private boolean neerInput = false;//是否需要输入
     private boolean mustInput = false;//是否是必填字段
@@ -80,6 +81,38 @@ public class Approval {
         return values == null ? "" : values;
     }
 
+    public String getNumber() {
+        try {
+            StringBuilder builder = new StringBuilder();
+            int num = 1;
+            String v1 = null;
+            String v2 = null;
+            if (values.contains(".")) {
+                int fas = values.indexOf(".");
+                v1 = values.substring(0, fas);
+                v2 = values.substring(fas, values.length());
+            } else {
+                v1 = values;
+                v2 = "";
+            }
+            for (int i = v1.length() - 1; i >= 0; i--) {
+                char c = v1.charAt(i);
+                builder.insert(0, c);
+                if (i > 0 && num == 3) {
+                    num = 0;
+                    builder.insert(0, ',');
+                }
+
+                num++;
+            }
+            if (v2 != null)
+                builder.append(v2);
+            return builder.toString();
+        } catch (Exception e) {
+            return getValues();
+        }
+    }
+
     public void setValues(String values) {
         this.values = values;
     }
@@ -100,7 +133,6 @@ public class Approval {
         this.datas = datas;
     }
 
-
     public int getType() {
         return type == 0 ? MAIN : type;
     }
@@ -137,7 +169,7 @@ public class Approval {
      * @return 输入类型:0字符输入  1.数字输入  2.日期输入选择  3.下拉选择  4.多选选择
      */
     public int inputType() {
-        if (isDftypeEQ("floatcolumn8", "N"))
+        if (isNumber())
             return 1;
         else if (isDftypeEQ("DT", "D")) {
             return 2;
@@ -186,6 +218,10 @@ public class Approval {
         return false;
     }
 
+    public boolean isNumber() {
+        return isDftypeEQ("N", "floatcolumn8", "SN");
+    }
+
 
     public static class Data {
         public String value = "";
@@ -219,7 +255,7 @@ public class Approval {
         }
     }
 
-    @IntDef({TITLE, MAIN, DETAIL, ENCLOSURE, POINTS, NODES, TAG})
+    @IntDef({TITLE, MAIN, DETAIL, ENCLOSURE, POINTS, NODES, TAG,SETUPTASK})
     @Retention(RetentionPolicy.SOURCE)
     public @interface Duration {
     }

+ 1 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/ApprovalRecord.java

@@ -12,6 +12,7 @@ import java.util.Map;
 public class ApprovalRecord {
     public int id = 0;
     public int nodeId = 0;
+    public String title;
     public String chcheNode = "";
     public String imid = "";
     public String status = "";

+ 10 - 12
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java

@@ -279,7 +279,7 @@ public class ViewUtil {
                 boolean isNetHas = CommonUtil.isNetWorkConnected(MyApplication.getInstance());
                 if (isNetHas) {
                     String result = getDataFromServer(url, params, request);
-                    LogUtil.d("result:"+result);
+                    LogUtil.d("result:" + result);
                     if (result != null) {
                         if (bundle == null || message == null) {
                             Bundle bundle = new Bundle();
@@ -324,7 +324,7 @@ public class ViewUtil {
                                       final Map<String, String> params, final Handler handler,
                                       final int what, final Message message, final Bundle bundle,
                                       final String request) {
-       ThreadUtil.getInstance().addTask(new Runnable() {
+        ThreadUtil.getInstance().addTask(new Runnable() {
             @Override
             public void run() {
                 boolean isNetHas = CommonUtil.isNetWorkConnected(ct);
@@ -557,7 +557,7 @@ public class ViewUtil {
     }
 
     public static void ChangeStatusB2B(String result) {
-        LogUtil.d("LoginInfo","B2B login:"+result);
+        LogUtil.d("LoginInfo", "B2B login:" + result);
         if (!new JsonValidator().validate(result)) return;
         if (JSON.parseObject(result).getBoolean("success") == null) {
             if (mdProcessDialog == null) return;
@@ -659,7 +659,7 @@ public class ViewUtil {
      */
     public static void LoginSucess(Message msg) {
         String json = msg.getData().getString("result");
-        LogUtil.d("Test","管理平台登录:"+json);
+        LogUtil.d("Test", "管理平台登录:" + json);
         CommonUtil.setSharedPreferences(ct, "loginJson", json);
         String phone = msg.getData().getString("phone");
         String password = msg.getData().getString("password");
@@ -759,9 +759,9 @@ public class ViewUtil {
                         CommonUtil.setSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu", String.valueOf(sModel.get(0).getEnuu()));
                         LoginB2BTask(phone, password, sModel.get(0).getId());//登录B2B
                     }
-                }else{
+                } else {
                     CommonUtil.setSharedPreferences(MyApplication.getInstance().getApplicationContext(), "userRole", "1");
-                    if (ct!=null) {
+                    if (ct != null) {
                         ct.startActivity(new Intent(ct, MainActivity.class));
                     }
                 }
@@ -838,7 +838,7 @@ public class ViewUtil {
                         if (!params.containsKey("sessionId")) {
                             params.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
                         }
-                        if (!params.containsKey("master")) {
+                        if (!params.containsKey("master") || params.get("master") == null) {
                             params.put("master", CommonUtil.getSharedPreferences(ct, "erp_master"));
                         }
                         if (!params.containsKey("sessionUser"))
@@ -852,9 +852,6 @@ public class ViewUtil {
                     LogUtil.prinlnLongMsg("result", "http 发送请求-----------------------------------------");
                     LogUtil.prinlnLongMsg("result", "url:" + url);
                     LogUtil.prinlnLongMsg("result", "parms:" + params.toString());
-                    if (result != null)
-                        LogUtil.prinlnLongMsg("result", result.getResponseText());
-                    else LogUtil.prinlnLongMsg("result", "result == null");
                     if (result != null) {
                         Log.i("result", "result:" + result.getStatusCode());
                         // Log.i("result", "statusCode:" +result.getResponseText());
@@ -899,6 +896,7 @@ public class ViewUtil {
                             handler.sendMessage(finalMessage);
                         }
                     } else {
+                        LogUtil.prinlnLongMsg("result", "result == null");
                         finalBundle.putString("result", MyApplication.getInstance().getResources().getString(R.string.networks_out));
                         finalBundle.putInt("what", what);
                         finalBundle.putInt("code", 0);
@@ -1063,7 +1061,7 @@ public class ViewUtil {
         CommonUtil.clearSharedPreferences(ct, "Master_ch");
         CommonUtil.clearSharedPreferences(ct, "erp_emname");
         CommonUtil.clearSharedPreferences(ct, "userRole");
-        
-        
+
+
     }
 }

Разница между файлами не показана из-за своего большого размера
+ 385 - 188
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/ApprovaPresenter.java


+ 2 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/SelectCollisionPresenter.java

@@ -26,6 +26,7 @@ import com.xzjmyk.pm.activity.ui.erp.presenter.imp.ISelectActiveView;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.CommonInterface;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.CompanyHandlerInfoUtil;
@@ -53,7 +54,6 @@ public class SelectCollisionPresenter {
         this.mActivity= (Activity) iSelectActiveView;
     }
 
-
     public void start(SelectCollisionTurnBean selectBean) {
         if (selectBean == null) {
             new NullPointerException("Intent cannot be Null");
@@ -69,14 +69,13 @@ public class SelectCollisionPresenter {
         if (!StringUtils.isEmpty(selectBean.getSureText()))
             iSelectActiveView.showSureText(selectBean.getSureText());
         if (ListUtils.isEmpty(selects)) {
-            if(selectBean.getTitle().equals(mActivity.getString(R.string.select_share_friend))){//分享好友
+            if(selectBean.getTitle().equals(OACheckUtil.getString(R.string.select_share_friend))){//分享好友
                 //企业架构+UU好友
                 loadShareFriendInThread();
             }else{
                 //企业架构
                 loadDataInThread();
             }
-            
         }
         else {
             setUser2Sort(selects, true);

+ 2 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IApproval.java

@@ -20,4 +20,6 @@ public interface IApproval extends HttpImp {
 
     void endProcess();
 
+    void showOpinion();
+
 }

+ 111 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/ApprovaNodeUtil.java

@@ -0,0 +1,111 @@
+package com.xzjmyk.pm.activity.ui.erp.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.xzjmyk.pm.activity.ui.erp.db.DBManager;
+import com.xzjmyk.pm.activity.ui.erp.entity.EmployeesEntity;
+import com.xzjmyk.pm.activity.ui.erp.model.oa.Approval;
+import com.xzjmyk.pm.activity.util.TimeUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by Bitliker on 2017/8/11.
+ */
+
+public class ApprovaNodeUtil {
+
+    public static List<Approval> handlerNode(DBManager manager, String message) {
+        JSONObject object = JSON.parseObject(message);
+        JSONArray nodes = OACheckUtil.getJsonArray(object, "nodes");
+        JSONArray processs = OACheckUtil.getJsonArray(object, "processs");
+        JSONArray datas = OACheckUtil.getJsonArray(object, "data");
+        final List<Approval> approvals = getNodDatas(datas);
+        if (!ListUtils.isEmpty(processs)) {
+            mergeNode(processs, approvals, false);
+        }
+        if (!ListUtils.isEmpty(nodes)) {
+            mergeNode(nodes, approvals, true);
+        }
+        if (!ListUtils.isEmpty(approvals)) {
+            //判断当前
+            for (Approval a : approvals) {
+                if (a.getIdKey().contains("待审批")) {
+                    a.setValues("");
+                }
+                String[] emcode = a.getDfType().split(",");
+                if (!StringUtils.isEmpty(emcode[0])) {
+                    int imId = getImByCode(manager, emcode[0]);
+                    a.setId(imId);
+                }
+            }
+            return approvals;
+
+        }
+        return null;
+    }
+
+    private static List<Approval> getNodDatas(JSONArray datas) {
+        List<Approval> approvals = new ArrayList<>();
+        for (int i = datas.size() - 1; i >= 0; i--) {
+            JSONObject object = datas.getJSONObject(i);
+            String nodeName = OACheckUtil.getJson2Text(object, "JP_NODENAME");//当前结点名称
+            String emCode = OACheckUtil.getJson2Text(object, "JP_NODEDEALMAN");//节点处理人编号
+            String manName = OACheckUtil.getJson2Text(object, "JP_NODEDEALMANNAME");//
+            Approval approval = new Approval(Approval.NODES);
+            approval.setCaption(manName);
+            approval.setDfType(emCode);
+            approval.setValuesKey(nodeName);
+            approvals.add(approval);
+        }
+        return approvals;
+    }
+
+    private static void mergeNode(JSONArray array, List<Approval> approvals, boolean isLog) {
+        for (int i = 0; i < array.size(); i++) {
+            JSONObject o = array.getJSONObject(i);
+            String name = OACheckUtil.getJson2Text(o, "jp_nodeName", "jn_name");//节点名称
+            long launchTime = OACheckUtil.getJsonTime(o, "jp_launchTime", "jn_dealTime");//时间
+            String status = OACheckUtil.getJson2Text(o, "jp_status");//状态
+            String nodeDealCode = OACheckUtil.getJson2Text(o, "jp_nodeDealMan", "jn_dealManId");//处理人编号
+            String nodeDealName = OACheckUtil.getJson2Text(o, "jp_nodeDealManName", "jn_dealManName");//执行人
+            String nodeDescription = OACheckUtil.getJson2Text(o, "jn_nodeDescription");//执行操作
+            for (Approval a : approvals) {
+                if (name.equals(a.getValuesKey())) {//为当前结点
+                    if (!isLog) {
+                        a.setDfType(nodeDealCode);
+                        a.setCaption(nodeDealName);
+                        a.setIdKey(status);
+                        if (launchTime > 0) {
+                            a.setValues(TimeUtils.long2str(launchTime, "MM-dd HH:mm"));
+                        }
+                    } else {
+                        if (a.isDftypeEQ(nodeDealCode)) {
+                            if (launchTime > 0) {
+                                a.setValues(TimeUtils.long2str(launchTime, "MM-dd HH:mm"));
+                            }
+                            if (!StringUtils.isEmpty(nodeDescription)) {
+                                a.setIdKey(a.getIdKey() + "(" + nodeDescription + ")");
+                            }
+                        }
+                    }
+                    break;
+                }
+            }
+        }
+    }
+
+    private static int getImByCode(DBManager manager, String emCode) {
+        if (manager == null) manager = new DBManager();
+        String whichsys = CommonUtil.getMaster();
+        if (StringUtils.isEmpty(emCode) || StringUtils.isEmpty(whichsys)) return 0;
+        String[] selectionArgs = {emCode, whichsys};
+        String selection = "em_code=? and whichsys=?";
+        EmployeesEntity employeesEntity = manager.selectForEmployee(selectionArgs, selection);
+        if (employeesEntity == null || employeesEntity.getEm_IMID() == 0) return 0;
+        return employeesEntity.getEm_IMID();
+    }
+
+}

+ 35 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java

@@ -1568,4 +1568,39 @@ public class CommonUtil {
     public static boolean isMainThread() {
         return Looper.getMainLooper().getThread() == Thread.currentThread();
     }
+
+    /**
+     * 将double格式化为指定小数位的String,不足小数位用0补全
+     * @param v  需要格式化的数字
+     * @param scale  小数点后保留几位
+     * @return
+     */
+    public static String roundByScale(double v, int scale) {
+        if (scale < 0) {
+            throw new IllegalArgumentException(
+                    "The   scale   must   be   a   positive   integer   or   zero");
+        }
+        if(scale == 0){
+            return new DecimalFormat("0").format(v);
+        }
+        String formatStr = "0.";
+        for(int i=0;i<scale;i++){
+            formatStr = formatStr + "0";
+        }
+        return new DecimalFormat(formatStr).format(v);
+    }
+
+
+    /**
+     * android 动态设置控件长度宽度
+     * @param view  控件对象
+     * @param width
+     * @param height
+     */
+    public static void setLayoutHandW(View view,int width,int height){
+        LinearLayout.LayoutParams linearParams =(LinearLayout.LayoutParams) view.getLayoutParams();
+        linearParams.width = width;
+        linearParams.height = height;
+        view.setLayoutParams(linearParams);
+    }
 }

+ 3 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/ContactsUtils.java

@@ -128,6 +128,9 @@ public class ContactsUtils {
                 }else{
                     model.setPhone("0");
                 }
+                if (!RegexUtil.checkMobile(model.getPhone())){
+                 continue;
+                }
                 model.setName(name);
                 model.setId(Integer.valueOf(contactsId));
                 contacts.add(model);

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

@@ -35,7 +35,6 @@ import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;
 import com.xzjmyk.pm.activity.ui.circle.BusinessCircleActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.BaseInfoActivity;
-import com.xzjmyk.pm.activity.ui.erp.activity.message.PersonalRegActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.OAMainActivity;
 import com.xzjmyk.pm.activity.ui.erp.model.Master;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
@@ -364,7 +363,8 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
             @Override
             public void onClick(View v) {
 //                startActivity(new Intent(ct, PictureSelectorDemo.class));
-                startActivity(new Intent(ct, PersonalRegActivity.class));
+//                startActivity(new Intent(ct, PersonalRegActivity.class));
+                startActivity(new Intent(ct,TemperatureActivity.class));
             }
         });
 

+ 117 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/TemperatureActivity.java

@@ -0,0 +1,117 @@
+package com.xzjmyk.pm.activity.ui.me;
+
+import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.os.Bundle;
+import android.util.Log;
+import android.widget.TextView;
+
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Created by FANGlh on 2017/8/9.
+ * function:
+ */
+
+public class TemperatureActivity extends BaseActivity {
+    private SensorManager mSensorManager;
+    private Sensor temperature;
+    private Sensor humidity;
+
+    private SensorEventListener tempListener;
+    private SensorEventListener humidityListener;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.temperature_main);
+        onResume();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
+      List<Sensor> deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
+      for (Sensor sensor : deviceSensors) {
+          Log.i("Sensor", "------------------");
+          Log.i("Sensor", sensor.getName());
+          Log.i("Sensor", sensor.getVendor());
+          Log.i("Sensor", Integer.toString(sensor.getType()));
+          Log.i("Sensor", "------------------");
+      }
+        temperature = mSensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
+        humidity = mSensorManager.getDefaultSensor(Sensor.TYPE_RELATIVE_HUMIDITY);
+
+        this.tempListener = new TempListener();
+        this.humidityListener = new HumidityListener();
+
+        mSensorManager.registerListener(tempListener, temperature, SensorManager.SENSOR_DELAY_NORMAL);
+        mSensorManager.registerListener(humidityListener, humidity, SensorManager.SENSOR_DELAY_NORMAL);
+    }
+
+/*
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+            this.onPause();
+          Log.i("Sensor", "exit");
+            this.finish();
+            System.exit(0);
+        }
+
+        return super.onKeyDown(keyCode, event);
+    }
+*/
+
+
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+
+        mSensorManager.unregisterListener(this.tempListener);
+        mSensorManager.unregisterListener(this.humidityListener);
+
+      Log.i("Sensor", "sensor pause");
+    }
+
+    private class TempListener implements SensorEventListener {
+        @Override
+        public final void onSensorChanged(SensorEvent event) {
+            float temperatureValue = event.values[0];    // 利用这些数据执行一些工作
+            BigDecimal bd = new BigDecimal(temperatureValue);
+            double temperature = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+//          Log.i("Sensor", "sensor changed==>" + millibars_of_pressure);
+            TextView tem = (TextView)TemperatureActivity.this.findViewById(R.id.temperature);
+            tem.setText(temperature + "℃");
+        }
+        @Override
+        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+          Log.i("Sensor", "onAccuracyChanged");
+        }
+    }
+
+    private class HumidityListener implements SensorEventListener {
+        @Override
+        public final void onSensorChanged(SensorEvent event) {
+            float humidityValue = event.values[0];    // 利用这些数据执行一些工作
+            BigDecimal bd = new BigDecimal(humidityValue);
+            double humidity = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+//          Log.i("Sensor", "sensor changed==>" + millibars_of_pressure);
+            TextView tem = (TextView)TemperatureActivity.this.findViewById(R.id.humidity);
+            tem.setText(humidity + "%");
+        }
+        @Override
+        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+          Log.i("Sensor", "onAccuracyChanged");
+        }
+    }
+}

+ 14 - 19
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/MessageFragment.java

@@ -55,7 +55,7 @@ import java.util.List;
 /**
  * Created by Bitliker on 2017/3/1.
  */
-public class MessageFragment extends EasyFragment implements IMessageView,   View.OnClickListener {
+public class MessageFragment extends EasyFragment implements IMessageView, View.OnClickListener {
 
     @ViewInject(R.id.voiceSearchView)
     private VoiceSearchView voiceSearchView;
@@ -88,7 +88,7 @@ public class MessageFragment extends EasyFragment implements IMessageView,   Vie
     private TextView waitting_work_content_tv;//待办工作
     private TextView subscribe_content_tv;//我的订阅
     private TextView book_content_tv;
-    
+
     private TextView schedule_time_tv;//审批流
     private TextView waitting_work_time_tv;//待办工作
     private TextView subscribe_time_tv;//我的订阅
@@ -174,7 +174,6 @@ public class MessageFragment extends EasyFragment implements IMessageView,   Vie
     }
 
 
-
     private void initView() {
 
         listView.getRefreshableView().addHeaderView(initHeaderView());
@@ -194,17 +193,17 @@ public class MessageFragment extends EasyFragment implements IMessageView,   Vie
         booking_num_tv = (TextView) view.findViewById(R.id.booking_num_tv);//小秘书
 
         tv_book_num = (TextView) view.findViewById(R.id.tv_book_num);//小秘书
-        
+
         schedule_content_tv = (TextView) view.findViewById(R.id.schedule_content_tv);//审批流
         waitting_work_content_tv = (TextView) view.findViewById(R.id.waitting_work_content_tv);//待办工作
         subscribe_content_tv = (TextView) view.findViewById(R.id.subscribe_content_tv);//我的订阅
-        book_content_tv= (TextView) view.findViewById(R.id.book_content_tv);//预约内容
+        book_content_tv = (TextView) view.findViewById(R.id.book_content_tv);//预约内容
 
         schedule_time_tv = (TextView) view.findViewById(R.id.schedule_time_tv);//审批流
         waitting_work_time_tv = (TextView) view.findViewById(R.id.waitting_work_time_tv);//待办工作
         subscribe_time_tv = (TextView) view.findViewById(R.id.subscribe_time_tv);//我的订阅
-        book_time_tv=(TextView) view.findViewById(R.id.book_time_tv);
-    
+        book_time_tv = (TextView) view.findViewById(R.id.book_time_tv);
+
 
         dingyue_num = (TextView) view.findViewById(R.id.tv_dingYue_num);//订阅红点
         tv_dingyue_desc = (TextView) view.findViewById(R.id.tv_dingyue_desc);//订阅红点
@@ -230,11 +229,10 @@ public class MessageFragment extends EasyFragment implements IMessageView,   Vie
             subscribe_rl.setVisibility(View.VISIBLE);
 //            news_notice_rl.setVisibility(View.GONE);
         }
-        UserRoleUtils.checkUserRole(this,view);
+        UserRoleUtils.checkUserRole(this, view);
         return view;
     }
 
-  
 
     private void showPopupWindow() {
         if (setWindow == null) initPopupWindow();
@@ -279,13 +277,12 @@ public class MessageFragment extends EasyFragment implements IMessageView,   Vie
     }
 
 
-
     //点击时间回调
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.booking_rl:
-                startActivity(new Intent(mContext,BookingListActivity.class));
+                startActivity(new Intent(mContext, BookingListActivity.class));
                 tv_book_num.setVisibility(View.GONE);
                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), Constants.SET_BOOKING, true);
                 break;
@@ -362,23 +359,21 @@ public class MessageFragment extends EasyFragment implements IMessageView,   Vie
     }
 
 
- 
-
     @Override
-    public void updateHeaderView(int postion, int num, String subTitle,String time) {
+    public void updateHeaderView(int postion, int num, String subTitle, String time) {
         switch (postion) {
             case 0:
-                updateHeaderView(schedule_num_tv, schedule_content_tv, schedule_time_tv, num, subTitle,time);
+                updateHeaderView(schedule_num_tv, schedule_content_tv, schedule_time_tv, num, subTitle, time);
                 break;
             case 1:
-                updateHeaderView(waitting_work_num_tv, waitting_work_content_tv, waitting_work_time_tv, num, subTitle,time);
+                updateHeaderView(waitting_work_num_tv, waitting_work_content_tv, waitting_work_time_tv, num, subTitle, time);
                 break;
             case 2:
-                updateHeaderView(subscribe_num_tv, subscribe_content_tv, subscribe_time_tv, num, subTitle,time);
+                updateHeaderView(subscribe_num_tv, subscribe_content_tv, subscribe_time_tv, num, subTitle, time);
                 break;
             case 4:
-                LogUtil.d("Test","updateHeaderView:"+num);
-                updateHeaderView(booking_num_tv, book_content_tv, book_time_tv, num, subTitle,time);
+                LogUtil.d("Test", "updateHeaderView:" + num);
+                updateHeaderView(booking_num_tv, book_content_tv, book_time_tv, num, subTitle, time);
                 break;
         }
         listView.onRefreshComplete();

+ 3 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/xmpp/XMucChatManager.java

@@ -299,6 +299,9 @@ public class XMucChatManager {
 			} else {
 				history.setSeconds(0);// request no history
 			}
+			if (com.xzjmyk.pm.activity.util.StringUtils.isEmpty(nickName)){
+				return;
+			}
 			mucChat.join(nickName, null, history, mJoinTimeOut);// 必须放在后面,要不然取mMucNickNameMap得时候肯呢过为空,因为这是个异步的
 		} catch (XMPPException e) {
 			e.printStackTrace();

+ 42 - 0
WeiChat/src/main/java/com/xzjmyk/pm/newpedo/utils/CommonSensorUtils.java

@@ -0,0 +1,42 @@
+package com.xzjmyk.pm.newpedo.utils;
+
+import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.util.Log;
+
+import java.util.List;
+
+/**
+ * Created by FANGlh on 2017/8/9.
+ * function:
+ */
+
+public class CommonSensorUtils  {
+
+    private Context context;
+
+    public CommonSensorUtils() {
+
+    }
+
+
+    /**
+     * 获取查看手机上有哪些传感器:
+     * @param context
+     */
+    public static void checkSenior(Context context){
+        //获取传感器管理器
+        SensorManager mSensorManager = (SensorManager) context
+                .getSystemService(context.SENSOR_SERVICE);
+        List<Sensor> deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);
+
+        for (Sensor sensor : deviceSensors) {
+            Log.i("sensor", "------------------");
+            Log.i("sensor", sensor.getName());
+            Log.i("sensor", sensor.getVendor());
+            Log.i("sensor", Integer.toString(sensor.getType()));
+            Log.i("sensor", "------------------");
+        }
+    }
+}

+ 4 - 4
WeiChat/src/main/java/com/xzjmyk/pm/newpedo/view/NewStepActivity.java

@@ -87,11 +87,11 @@ public class NewStepActivity extends BaseActivity implements Handler.Callback {
 
 
     private void initView() {
-        steps_history_tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
+        steps_history_tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线效果
         curSelDate = TimeUtil.getCurrentDate();
 //        curSelDate = TimeUtils.s_long_2_str(System.currentTimeMillis());
-        support_step = StepCountCheckUtil.isSupportStepCountSensor(this)
-                ||StepCountCheckUtil.isSupportStepCountSensor();
+        support_step = StepCountCheckUtil.isSupportStepCountSensor(this);
+//                ||StepCountCheckUtil.isSupportStepCountSensor();
         Log.i("support_step",support_step+"");
     }
 
@@ -179,7 +179,7 @@ public class NewStepActivity extends BaseActivity implements Handler.Callback {
         @Override
         public void onServiceConnected(ComponentName name, final IBinder service) {
             /**
-             * 设置定时器,每三秒钟去更新一次运动步数
+             * 设置定时器,每三秒钟去更新一次运动步数
              */
             timerTask = new TimerTask() {
                 @Override

BIN
WeiChat/src/main/res/drawable-hdpi/avatar_normal.png


BIN
WeiChat/src/main/res/drawable-xhdpi/avatar_normal.png


BIN
WeiChat/src/main/res/drawable-xxhdpi/avatar_normal.png


+ 138 - 115
WeiChat/src/main/res/layout/activity_approval.xml

@@ -9,129 +9,152 @@
     android:focusableInTouchMode="true"
     tools:context="com.xzjmyk.pm.activity.ui.erp.activity.oa.ApprovalActivity">
 
-    <LinearLayout
-        android:id="@+id/operationLL"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:background="@color/base_bg"
-        android:orientation="horizontal"
-        android:padding="10dp">
-
-        <TextView
-            android:id="@+id/takeOverTV"
-            style="@style/bottomTextStyle"
-            android:layout_weight="2"
-            android:text="@string/take_over"
-            android:visibility="gone"/>
-
-        <Button
-            android:id="@+id/agreeTV"
-            style="@style/bottomTextStyle"
-            android:layout_weight="2"
-            android:background="@color/base_bg"
-            android:text="@string/agree"
-            android:textColor="@drawable/bg_bule_yellow_text"/>
-
-        <View
-            android:layout_width="@dimen/line"
-            android:layout_height="20dp"
-            android:layout_gravity="center_vertical"
-            android:background="@color/item_line"/>
-
-        <Button
-            android:id="@+id/disagreeTV"
-            style="@style/bottomTextStyle"
-            android:layout_weight="3"
-            android:background="@color/base_bg"
-            android:text="@string/common_disagree"
-            android:textColor="@drawable/bg_bule_yellow_text"/>
-
-        <View
-            android:layout_width="@dimen/line"
-            android:layout_height="20dp"
-            android:layout_gravity="center_vertical"
-            android:background="@color/item_line"/>
-
-        <TextView
-            android:id="@+id/changedealmanTV"
-            style="@style/bottomTextStyle"
-            android:layout_weight="5"
-            android:text="@string/common_changedealman"
-            android:visibility="gone"/>
-
-        <View
-
-            android:layout_width="@dimen/line"
-            android:layout_height="20dp"
-            android:layout_gravity="center_vertical"
-            android:background="@color/item_line"/>
-
-        <Button
-            android:id="@+id/nextTV"
-            style="@style/bottomTextStyle"
-            android:layout_weight="3"
-            android:background="@color/base_bg"
-            android:text="@string/next_article"
-            android:textColor="@drawable/bg_bule_yellow_text"/>
-    </LinearLayout>
-
     <RelativeLayout
         android:id="@+id/opinionRL"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_above="@id/operationLL"
-        android:layout_marginBottom="@dimen/paddingApp"
-        android:layout_marginTop="@dimen/paddingApp"
+        android:layout_alignParentBottom="true"
         android:background="@color/base_bg">
 
-        <ImageView
-            android:id="@+id/commonWordsIV"
-            android:layout_width="20dp"
-            android:layout_height="20dp"
-            android:layout_gravity="center_vertical"
-            android:src="@drawable/changyongyu"
-            android:visibility="visible"
-            android:layout_alignTop="@+id/voiceIV"
-            android:layout_alignParentRight="true"
-            android:layout_alignParentEnd="true" />
-
-        <ImageView
-            android:id="@+id/voiceIV"
-            android:layout_width="20dp"
-            android:layout_height="20dp"
-            android:layout_gravity="center_vertical"
-            android:layout_marginRight="10dp"
-            android:layout_marginTop="3dp"
-            android:layout_toLeftOf="@+id/commonWordsIV"
-            android:src="@drawable/btn_yuyin_nor"
-            android:visibility="visible"
-            />
-
-        <ImageView
-            android:id="@+id/inputTagIV"
-            android:layout_width="15dp"
-            android:layout_height="15dp"
-            android:layout_marginLeft="10dp"
-            android:layout_marginTop="5dp"
-            android:src="@drawable/shuru"/>
-
-        <com.andreabaccega.widget.FormEditText
-            android:id="@+id/opinionET"
-            style="@style/form_relative_right_text2"
-            android:layout_alignParentTop="true"
-            android:hint="请输入审批意见..."
-            android:minHeight="50dp"
-            android:paddingLeft="10dp"
-            android:paddingTop="5dp"
-            whatever:customRegexp="^[\\s\\S]{0,30}$"
-            whatever:testErrorString="输入错误或内容超长"
-            whatever:testType="regexp"
-            android:layout_toLeftOf="@+id/voiceIV"
-            android:layout_toRightOf="@+id/inputTagIV"
-            />
+        <include layout="@layout/approval_operation"/>
     </RelativeLayout>
 
+
+    <!--<LinearLayout-->
+    <!--android:id="@+id/operationLL"-->
+    <!--android:layout_width="match_parent"-->
+    <!--android:layout_height="wrap_content"-->
+    <!--android:layout_alignParentBottom="true"-->
+    <!--android:background="@color/base_bg"-->
+    <!--android:orientation="horizontal"-->
+    <!--android:padding="10dp">-->
+
+    <!--<TextView-->
+    <!--android:id="@+id/takeOverTV"-->
+    <!--style="@style/bottomTextStyle"-->
+    <!--android:layout_weight="2"-->
+    <!--android:text="@string/take_over"-->
+    <!--android:visibility="gone"/>-->
+
+    <!--<Button-->
+    <!--android:id="@+id/agreeTV"-->
+    <!--style="@style/bottomTextStyle"-->
+    <!--android:layout_weight="2"-->
+    <!--android:background="@color/base_bg"-->
+    <!--android:text="@string/agree"-->
+    <!--android:textColor="@drawable/bg_bule_yellow_text"/>-->
+
+    <!--<View-->
+    <!--android:layout_width="@dimen/line"-->
+    <!--android:layout_height="20dp"-->
+    <!--android:layout_gravity="center_vertical"-->
+    <!--android:background="@color/item_line"/>-->
+
+    <!--<Button-->
+    <!--android:id="@+id/disagreeTV"-->
+    <!--style="@style/bottomTextStyle"-->
+    <!--android:layout_weight="3"-->
+    <!--android:background="@color/base_bg"-->
+    <!--android:text="@string/common_disagree"-->
+    <!--android:textColor="@drawable/bg_bule_yellow_text"/>-->
+
+    <!--<View-->
+    <!--android:layout_width="@dimen/line"-->
+    <!--android:layout_height="20dp"-->
+    <!--android:layout_gravity="center_vertical"-->
+    <!--android:background="@color/item_line"/>-->
+
+    <!--<TextView-->
+    <!--android:id="@+id/changedealmanTV"-->
+    <!--style="@style/bottomTextStyle"-->
+    <!--android:layout_weight="5"-->
+    <!--android:text="@string/common_changedealman"-->
+    <!--android:visibility="gone"/>-->
+
+    <!--<View-->
+
+    <!--android:layout_width="@dimen/line"-->
+    <!--android:layout_height="20dp"-->
+    <!--android:layout_gravity="center_vertical"-->
+    <!--android:background="@color/item_line"/>-->
+
+    <!--<Button-->
+    <!--android:id="@+id/nextTV"-->
+    <!--style="@style/bottomTextStyle"-->
+    <!--android:layout_weight="3"-->
+    <!--android:background="@color/base_bg"-->
+    <!--android:text="@string/next_article"-->
+    <!--android:textColor="@drawable/bg_bule_yellow_text"/>-->
+    <!--</LinearLayout>-->
+
+    <!--<RelativeLayout-->
+    <!--android:id="@+id/opinionRL"-->
+    <!--android:layout_width="match_parent"-->
+    <!--android:layout_height="wrap_content"-->
+    <!--android:layout_above="@id/operationLL"-->
+    <!--android:background="@color/base_bg">-->
+
+    <!--<View-->
+    <!--android:id="@+id/line_top"-->
+    <!--android:layout_width="match_parent"-->
+    <!--android:layout_height="@dimen/paddingApp"-->
+    <!--android:background="@color/item_line"/>-->
+
+
+    <!--<ImageView-->
+    <!--android:id="@+id/commonWordsIV"-->
+    <!--android:layout_width="20dp"-->
+    <!--android:layout_height="20dp"-->
+    <!--android:layout_alignParentRight="true"-->
+    <!--android:layout_below="@id/line_top"-->
+    <!--android:layout_gravity="center_vertical"-->
+    <!--android:src="@drawable/changyongyu"-->
+    <!--android:visibility="visible"/>-->
+
+    <!--<ImageView-->
+    <!--android:id="@+id/voiceIV"-->
+    <!--android:layout_width="20dp"-->
+    <!--android:layout_height="20dp"-->
+    <!--android:layout_alignTop="@id/commonWordsIV"-->
+    <!--android:layout_gravity="center_vertical"-->
+    <!--android:layout_marginRight="10dp"-->
+    <!--android:layout_marginTop="3dp"-->
+    <!--android:layout_toLeftOf="@id/commonWordsIV"-->
+    <!--android:src="@drawable/btn_yuyin_nor"-->
+    <!--android:visibility="visible"-->
+    <!--/>-->
+
+    <!--<ImageView-->
+    <!--android:id="@+id/inputTagIV"-->
+    <!--android:layout_width="15dp"-->
+    <!--android:layout_height="15dp"-->
+    <!--android:layout_alignTop="@id/commonWordsIV"-->
+    <!--android:layout_marginLeft="10dp"-->
+    <!--android:layout_marginTop="5dp"-->
+    <!--android:src="@drawable/shuru"/>-->
+
+    <!--<com.andreabaccega.widget.FormEditText-->
+    <!--android:id="@+id/opinionET"-->
+    <!--style="@style/form_relative_right_text2"-->
+    <!--android:layout_alignTop="@id/commonWordsIV"-->
+    <!--android:layout_toLeftOf="@+id/voiceIV"-->
+    <!--android:layout_toRightOf="@+id/inputTagIV"-->
+    <!--android:hint="请输入审批意见..."-->
+    <!--android:minHeight="50dp"-->
+    <!--android:paddingLeft="10dp"-->
+    <!--android:paddingTop="5dp"-->
+    <!--whatever:customRegexp="^[\\s\\S]{0,30}$"-->
+    <!--whatever:testErrorString="输入错误或内容超长"-->
+    <!--whatever:testType="regexp"/>-->
+
+    <!--<View-->
+    <!--android:id="@+id/line_botton"-->
+    <!--android:layout_width="match_parent"-->
+    <!--android:layout_height="@dimen/paddingApp"-->
+    <!--android:layout_below="@id/opinionET"-->
+    <!--android:background="@color/item_line"/>-->
+    <!--</RelativeLayout>-->
+
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"

+ 0 - 2
WeiChat/src/main/res/layout/activity_setting.xml

@@ -200,7 +200,6 @@
                 android:background="@drawable/selector_me_menu_item_bg">
 
                 <View
-                 
                     android:layout_alignParentBottom="true"
                     android:layout_width="match_parent"
                     android:layout_height="@dimen/line"
@@ -239,7 +238,6 @@
                 style="@style/IMTbleLine"
                 android:background="@drawable/selector_me_menu_item_bg">
                 <View
-                  
                     android:layout_alignParentBottom="true"
                     android:layout_width="match_parent"
                     android:layout_height="@dimen/line"

+ 133 - 0
WeiChat/src/main/res/layout/approval_operation.xml

@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+       xmlns:whatever="http://schemas.android.com/apk/res-auto"
+       android:layout_width="match_parent"
+       android:layout_height="wrap_content"
+       android:background="@color/base_bg">
+
+
+    <View
+        android:id="@+id/line_top"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/paddingApp"
+        android:background="@color/item_line"/>
+
+
+    <ImageView
+        android:id="@+id/commonWordsIV"
+        android:layout_width="20dp"
+        android:layout_height="20dp"
+        android:layout_alignParentRight="true"
+        android:layout_below="@id/line_top"
+        android:layout_gravity="center_vertical"
+        android:src="@drawable/changyongyu"
+        android:visibility="visible"/>
+
+    <ImageView
+        android:id="@+id/voiceIV"
+        android:layout_width="20dp"
+        android:layout_height="20dp"
+        android:layout_alignTop="@id/commonWordsIV"
+        android:layout_gravity="center_vertical"
+        android:layout_marginRight="10dp"
+        android:layout_marginTop="3dp"
+        android:layout_toLeftOf="@id/commonWordsIV"
+        android:src="@drawable/btn_yuyin_nor"/>
+
+    <ImageView
+        android:id="@+id/inputTagIV"
+        android:layout_width="15dp"
+        android:layout_height="15dp"
+        android:layout_alignTop="@id/commonWordsIV"
+        android:layout_marginLeft="10dp"
+        android:layout_marginTop="5dp"
+        android:src="@drawable/shuru"/>
+
+    <com.andreabaccega.widget.FormEditText
+        android:id="@+id/opinionET"
+        style="@style/form_relative_right_text2"
+        android:layout_alignTop="@id/commonWordsIV"
+        android:layout_toLeftOf="@+id/voiceIV"
+        android:layout_toRightOf="@+id/inputTagIV"
+        android:hint="请输入审批意见..."
+        android:minHeight="50dp"
+        android:paddingLeft="10dp"
+        android:paddingTop="5dp"
+        whatever:customRegexp="^[\\s\\S]{0,30}$"
+        whatever:testErrorString="输入错误或内容超长"
+        whatever:testType="regexp"/>
+
+    <View
+        android:id="@+id/line_botton"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/paddingApp"
+        android:layout_below="@id/opinionET"
+        android:background="@color/item_line"/>
+
+    <LinearLayout
+        android:id="@+id/operationLL"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/line_botton"
+        android:background="@color/base_bg"
+        android:orientation="horizontal"
+        android:padding="10dp">
+
+        <TextView
+            android:id="@+id/takeOverTV"
+            style="@style/bottomTextStyle"
+            android:layout_weight="2"
+            android:text="@string/take_over"
+            android:visibility="gone"/>
+
+        <Button
+            android:id="@+id/agreeTV"
+            style="@style/bottomTextStyle"
+            android:layout_weight="2"
+            android:background="@color/base_bg"
+            android:text="@string/agree"
+            android:textColor="@drawable/bg_bule_yellow_text"/>
+
+        <View
+            android:layout_width="@dimen/line"
+            android:layout_height="20dp"
+            android:layout_gravity="center_vertical"
+            android:background="@color/item_line"/>
+
+        <Button
+            android:id="@+id/disagreeTV"
+            style="@style/bottomTextStyle"
+            android:layout_weight="3"
+            android:background="@color/base_bg"
+            android:text="@string/common_disagree"
+            android:textColor="@drawable/bg_bule_yellow_text"/>
+
+        <View
+            android:layout_width="@dimen/line"
+            android:layout_height="20dp"
+            android:layout_gravity="center_vertical"
+            android:background="@color/item_line"/>
+
+        <TextView
+            android:id="@+id/changedealmanTV"
+            style="@style/bottomTextStyle"
+            android:layout_weight="5"
+            android:text="@string/common_changedealman"
+            android:visibility="gone"/>
+
+        <View
+
+            android:layout_width="@dimen/line"
+            android:layout_height="20dp"
+            android:layout_gravity="center_vertical"
+            android:background="@color/item_line"/>
+
+        <Button
+            android:id="@+id/nextTV"
+            style="@style/bottomTextStyle"
+            android:layout_weight="3"
+            android:background="@color/base_bg"
+            android:text="@string/next_article"
+            android:textColor="@drawable/bg_bule_yellow_text"/>
+    </LinearLayout>
+</merge>

+ 2 - 0
WeiChat/src/main/res/layout/item_approval_title.xml

@@ -3,6 +3,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:background="@color/base_bg"
     android:orientation="vertical">
 
     <RelativeLayout
@@ -15,6 +16,7 @@
         <com.xzjmyk.pm.activity.ui.erp.view.CircleImageView
             android:id="@+id/handIv"
             android:layout_width="50dp"
+            android:background="@color/base_bg"
             android:layout_height="50dp"/>
 
         <ImageView

+ 34 - 26
WeiChat/src/main/res/layout/item_process_state.xml

@@ -1,66 +1,74 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:background="@drawable/selector_me_menu_item_bg">
+    android:background="@drawable/selector_me_menu_item_bg"
+    android:orientation="horizontal">
+
     <ImageView
-        android:visibility="visible"
         android:id="@+id/photo_img"
         android:layout_width="40dp"
         android:layout_height="40dp"
-        android:contentDescription="@string/app_name"
         android:layout_marginLeft="10dp"
-        android:layout_toRightOf="@id/node_ll"
         android:layout_marginTop="12dp"
-        android:src="@drawable/common_header_boy"/>
+        android:layout_toRightOf="@id/node_ll"
+        android:contentDescription="@string/app_name"
+        android:src="@drawable/common_header_boy"
+        android:visibility="visible" />
+
     <de.hdodenhof.circleimageview.CircleImageView
-        android:visibility="visible"
         android:id="@+id/photo_me"
         android:layout_width="40dp"
         android:layout_height="40dp"
-        android:contentDescription="@string/app_name"
         android:layout_marginLeft="10dp"
-        android:layout_toRightOf="@id/node_ll"
         android:layout_marginTop="12dp"
-        android:src="@drawable/common_header_boy"/>
+        android:layout_toRightOf="@id/node_ll"
+        android:contentDescription="@string/app_name"
+        android:src="@drawable/common_header_boy"
+        android:visibility="visible" />
+
     <LinearLayout
-        android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="@drawable/selector_me_menu_item_bg">
+        android:background="@drawable/selector_me_menu_item_bg"
+        android:orientation="vertical">
+
         <RelativeLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent">
+
             <TextView
-                android:id="@+id/tv_name"
+                android:id="@+id/tv_date"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
                 android:layout_margin="10dp"
-                android:textSize="15sp"
-                android:text="采购单-2013212"
-                android:maxLength="12"
-                android:singleLine="true"
-                android:ellipsize="end"/>
+                android:text="2016-10-09 09:11" />
 
             <TextView
-                android:id="@+id/tv_date"
+                android:id="@+id/tv_name"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_alignParentLeft="true"
                 android:layout_margin="10dp"
-                android:layout_alignParentRight="true"
-                android:text="2016-10-09 09:11"/>
+                android:layout_toLeftOf="@id/tv_date"
+                android:ellipsize="end"
+                android:maxLength="12"
+                android:singleLine="true"
+                android:text="采购单-2013212"
+                android:textSize="15sp" />
+
+
         </RelativeLayout>
 
         <TextView
             android:id="@+id/tv_status"
-            android:layout_marginLeft="10dp"
-            android:layout_marginBottom="10dp"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="状态"
-            android:textColor="@color/light_gray"
+            android:layout_marginBottom="10dp"
+            android:layout_marginLeft="10dp"
             android:autoText="false"
-            />
+            android:text="状态"
+            android:textColor="@color/light_gray" />
     </LinearLayout>
 </LinearLayout>

+ 1 - 0
WeiChat/src/main/res/layout/new_message_header.xml

@@ -322,6 +322,7 @@
                 android:layout_gravity="top|right"
                 android:background="@drawable/tab_unread_bg"
                 android:gravity="center"
+                android:visibility="gone"
                 android:textColor="@android:color/white"
                 android:textSize="10.0dp"
                  />

+ 16 - 14
WeiChat/src/main/res/layout/pop_crm_list.xml

@@ -4,21 +4,23 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    app:sl_shadowRadius="3dp"
-    app:sl_shadowColor="@color/shadow"
+    app:sl_cornerRadius="0dp"
     app:sl_dx="-1dp"
     app:sl_dy="3dp"
-    app:sl_cornerRadius="0dp">
-<LinearLayout
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="@drawable/shape_pop_ll"
-    android:padding="0.5dp"
-    android:orientation="vertical">
-    <ListView
+    app:sl_shadowColor="@color/shadow"
+    app:sl_shadowRadius="3dp">
+
+    <LinearLayout
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:dividerHeight="0dp"
-        android:id="@+id/mList"
-        style="@style/ListViewBasic"></ListView>
-</LinearLayout>
+        android:background="@drawable/shape_pop_ll"
+        android:orientation="vertical"
+        android:padding="0.5dp">
+
+        <ListView
+            android:id="@+id/mList"
+            style="@style/ListViewBasic"
+            android:layout_height="wrap_content"
+            android:dividerHeight="0dp"></ListView>
+    </LinearLayout>
 </com.xzjmyk.pm.activity.view.shadow.ShadowLayout>

+ 24 - 0
WeiChat/src/main/res/layout/temperature_main.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    >
+<TextView
+    android:id="@+id/temperature"
+    android:layout_marginTop="100dp"
+    android:layout_gravity="center_horizontal"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:textSize="18sp"
+    android:text="222"/>
+
+    <TextView
+        android:id="@+id/humidity"
+        android:layout_marginTop="100dp"
+        android:layout_gravity="center_horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textSize="18sp"
+        android:text="222"/>
+</LinearLayout>

+ 1 - 1
WeiChat/src/main/res/raw/versionconfiguration.properties

@@ -1,3 +1,3 @@
 #发布版本状态改为true,测试版本状态为false
-release_version = false
+release_version=false
 #release_version=true

+ 2 - 2
WeiChat/src/main/res/values/colors.xml

@@ -37,9 +37,9 @@
     <color name="pop_bg">#aeaeae</color>
     <color name="item_color2">@color/white</color>
     <color name="item_text">#cca0a0a0</color>
-    <color name="item_line">#BFD3D3D3</color>
+    <color name="item_line">#FFD3D3D3</color>
     <color name="antionbarcolor">#646464</color>
-    <color name="base_bg">#EBE9E9</color>
+    <color name="base_bg">#FFEBE9E9</color>
     <color name="antionbaritemcolor">#a3b2cf</color>
     <color name="wirtehine">#a3b2cf</color>
     <color name="text_main">#3c3c3c</color>

+ 2 - 0
WeiChat/src/main/res/values/strings.xml

@@ -1856,6 +1856,8 @@
     <string name="approval_opinion_error">审批意见未填写或填写不正确</string>
     <string name="enclosure">附件</string>
     <string name="subtabulation">副表</string>
+    <string name="not_data_from_formandgrid">没有获取到明细表数据</string>
+    <string name="submit_cannot_submit_again">正在提交请求,请不要重复提交</string>
 
     <string name="person_register">个人注册</string>
     <string name="phone_number">手机号</string>

+ 1 - 0
app_core/common/.gitignore

@@ -0,0 +1 @@
+/build

+ 34 - 0
app_core/common/build.gradle

@@ -0,0 +1,34 @@
+apply plugin: 'com.android.library'
+
+
+android {
+    compileSdkVersion 25
+    buildToolsVersion "25.0.0"
+
+
+    defaultConfig {
+        minSdkVersion 9
+        targetSdkVersion 24
+        versionCode 1
+        versionName "1.0"
+
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+
+    }
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+}
+
+dependencies {
+    compile fileTree(dir: 'libs', include: ['*.jar'])
+    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+        exclude group: 'com.android.support', module: 'support-annotations'
+    })
+
+    compile 'com.android.support:appcompat-v7:25.3.1'
+    testCompile 'junit:junit:4.12'
+}

+ 25 - 0
app_core/common/proguard-rules.pro

@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in C:\Android\sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 26 - 0
app_core/common/src/androidTest/java/base/android/com/commom/ExampleInstrumentedTest.java

@@ -0,0 +1,26 @@
+package base.android.com.commom;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumentation test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() throws Exception {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getTargetContext();
+
+        assertEquals("base.android.com.commom.test", appContext.getPackageName());
+    }
+}

+ 2 - 0
app_core/common/src/main/AndroidManifest.xml

@@ -0,0 +1,2 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="base.android.com.commom" />

+ 3 - 0
app_core/common/src/main/res/values/strings.xml

@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">commom</string>
+</resources>

+ 17 - 0
app_core/common/src/test/java/base/android/com/commom/ExampleUnitTest.java

@@ -0,0 +1,17 @@
+package base.android.com.commom;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() throws Exception {
+        assertEquals(4, 2 + 2);
+    }
+}

+ 1 - 1
app_core/imageload/build.gradle

@@ -29,6 +29,6 @@ dependencies {
         exclude group: 'com.android.support', module: 'support-annotations'
     })
 
-    compile 'com.android.support:appcompat-v7:25.3.1'
+    compile 'com.android.support:appcompat-v7:24.2.1'
     testCompile 'junit:junit:4.12'
 }

+ 1 - 1
app_core/network/build.gradle

@@ -29,6 +29,6 @@ dependencies {
         exclude group: 'com.android.support', module: 'support-annotations'
     })
 
-    compile 'com.android.support:appcompat-v7:25.3.1'
+    compile 'com.android.support:appcompat-v7:24.2.1'
     testCompile 'junit:junit:4.12'
 }

+ 4 - 0
settings.gradle

@@ -4,6 +4,7 @@ include ':WeiChat'
 //核心模块
 include ':network'
 include ':imageload'
+include ':common'
 
 //第三库模块
 include ':lib-zxing'
@@ -20,6 +21,9 @@ include ':pullToRefershLibraryMy'
 //核心模块
 project(':network').projectDir = new File('app_core/network')
 project(':imageload').projectDir = new File('app_core/imageload')
+project(':common').projectDir = new File('app_core/common')
+
+
 //第三库模块
 project(':lib-zxing').projectDir = new File('app_third/lib-zxing')
 project(':libbdupdatesdk').projectDir = new File('app_third/libbdupdatesdk')

Некоторые файлы не были показаны из-за большого количества измененных файлов