Просмотр исходного кода

Merge branch 'developer' of https://gitlab.com/Arisono/SkWeiChat-Baidu into uu_v1.0

SpringBoots 8 лет назад
Родитель
Сommit
42459f4d12
17 измененных файлов с 769 добавлено и 374 удалено
  1. 116 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/NodeAdapter.java
  2. 8 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/BasicInfoActivity.java
  3. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/AppWebViewActivity.java
  4. 19 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CommonDocDetailsActivity.java
  5. 69 65
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/form/DataFormFieldActivity.java
  6. 37 37
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/ProcessMsgActivity.java
  7. 26 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ApprovalActivity.java
  8. 137 121
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/DailydetailsActivity.java
  9. 40 39
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ExpenseReimbursementActivity.java
  10. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/form/Data.java
  11. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java
  12. 163 65
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/ApprovaPresenter.java
  13. 2 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IApproval.java
  14. 111 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/ApprovaNodeUtil.java
  15. 34 26
      WeiChat/src/main/res/layout/item_process_state.xml
  16. 1 1
      WeiChat/src/main/res/raw/versionconfiguration.properties
  17. 2 2
      app_core/common/build.gradle

+ 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;
+
+
+    }
+}

+ 8 - 8
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);
@@ -888,16 +888,16 @@ public class BasicInfoActivity extends BaseActivity implements NewFriendListener
                     public void onClick(DialogInterface dialog, int which) {
                         deleteFriend(friend, 0);
                         //取消好友  更新通讯录数据库
-                        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(2);
-                        if (StringUtils.isEmpty(model.getWhichsys())){
+                        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,从审批流数据获取
      */

+ 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");
     }
-    
-    
-    
+
+
 }

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

@@ -43,6 +43,7 @@ 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;
@@ -108,11 +109,6 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                             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) {
@@ -129,11 +125,9 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                         tv_process_un_num.setText(array.size() + "");
                     }
 
-                    if (wait_app) {
+                    if (tab_type == 1 && mPosition > 0) {
                         if (mPosition < array.size()) {
                             mList.getRefreshableView().setSelection(mPosition);
-                        } else {
-                            mList.getRefreshableView().setSelection(array.size() - 1);
                         }
                     }
                     progressDialog.dismiss();
@@ -176,10 +170,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();
@@ -213,7 +204,6 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
             }
         }
     };
-    private boolean wait_app = false;
     private int mPosition;
 
     private void getEmimids(JSONArray array) {
@@ -299,6 +289,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:
@@ -316,6 +307,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:
@@ -384,6 +376,7 @@ public class ProcessMsgActivity extends BaseActivity implements View.OnClickList
                     intent.putExtra("imid", d_imids);
                     intent.putExtra("title", title);
                     intent.putExtra("type", tab_type);
+                    intent.putExtra("master", master);
                     intent.putExtra("nodeid", Integer.valueOf(model.JP_NODEID));
                     startActivity(intent);
                 }
@@ -419,9 +412,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);
         }
     }
@@ -520,6 +513,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);
+        }
 
     }
 
@@ -598,13 +595,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 = jsonArray.getJSONObject(position).getInteger("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("等待我审批");
@@ -614,11 +612,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:
@@ -632,9 +630,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 = jsonArray.getJSONObject(position).getInteger("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 + ")",
@@ -665,11 +665,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:
@@ -686,6 +686,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 = jsonArray.getJSONObject(position).getInteger("EM_IMID");
                         if (!StringUtils.isEmpty(status)) {
                             if (status.equals("待审批")) {
                                 model.status.setTextColor(getResources().getColor(R.color.approvaling));
@@ -706,7 +707,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("");
                         }
@@ -719,16 +720,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;
             }

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

@@ -28,6 +28,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 +48,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;
@@ -78,7 +80,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 +94,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);
     }
 
@@ -153,8 +159,8 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
                 opinionRL.setVisibility(View.VISIBLE);
                 operationLL.setVisibility(View.VISIBLE);
             } else {
-                opinionRL.setVisibility(View.GONE);
                 operationLL.setVisibility(View.GONE);
+                opinionRL.setVisibility(View.GONE);
             }
         }
         mPresenter = new ApprovaPresenter(this, getIntent());
@@ -187,6 +193,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://语音输入
@@ -266,6 +273,8 @@ 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);
+        operationLL.setVisibility(View.GONE);
+        opinionRL.setVisibility(View.GONE);
         opinionET.setText("");
         mAdapter = null;
     }
@@ -284,6 +293,21 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
                 }).show();
     }
 
+    @Override
+    public void showOpinion() {
+        if (mPresenter.isApprovaling()) {
+            operationLL.setVisibility(View.VISIBLE);
+            opinionRL.setVisibility(View.VISIBLE);
+        }
+    }
+
+    public void hineOpinion() {
+        if (mPresenter.isApprovaling()) {
+            operationLL.setVisibility(View.GONE);
+            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();

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

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

@@ -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"))

+ 163 - 65
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/ApprovaPresenter.java

@@ -67,9 +67,11 @@ public class ApprovaPresenter implements OnHttpResultListener {
     private DBManager manager;
     public String chchePoints = "";//审批要点缓存
     private String title;
+    private String master;
     private List<Approval> approvals;
+    private List<Approval> hineApprovals;
 
-    private boolean submit, loading, nexting;
+    private boolean submit, loading;
 
     public ApprovaPresenter(IApproval iApproval, Intent intent) {
         this.iApproval = iApproval;
@@ -77,6 +79,8 @@ public class ApprovaPresenter implements OnHttpResultListener {
             int id = intent.getIntExtra("nodeid", -1);
             String imid = intent.getStringExtra("imid");
             title = intent.getStringExtra("title");
+            master = intent.getStringExtra("master");
+            if (StringUtils.isEmpty(master)) master = CommonUtil.getMaster();
             if (id != -1) {
                 initLoad(id, imid);
             } else {
@@ -93,6 +97,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
     }
 
     public void trun2SetActivity(Activity activity, List<Approval> approvals) {
+        if (loading) return;
         ArrayList<Data> fields = new ArrayList<>();
         ArrayList<Data> fieldsDis = new ArrayList<>();
         boolean addDetailed = false;
@@ -102,16 +107,33 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 Data data = new Data(true, approval);
                 fieldsDis.add(data);
             } else if (approval.getType() == DETAIL && canAddDetail) {
-                Data data = new Data(true, approval);
+                Data data = new Data(false, approval);
                 fieldsDis.add(data);
                 addDetailed = true;
             } else if (addDetailed) {
                 canAddDetail = false;
             }
         }
+        addDetailed = false;
+        canAddDetail = true;
+        if (!ListUtils.isEmpty(hineApprovals)) {
+            for (Approval approval : hineApprovals) {
+                if (approval.getType() == Approval.MAIN) {
+                    Data data = new Data(true, approval);
+                    fields.add(data);
+                } else if (approval.getType() == DETAIL && canAddDetail) {
+                    Data data = new Data(false, approval);
+                    fields.add(data);
+                    addDetailed = true;
+                } else if (addDetailed) {
+                    canAddDetail = false;
+                }
+            }
+        }
         activity.startActivityForResult(new Intent(activity, DataFormFieldActivity.class)
                         .putParcelableArrayListExtra("fields", fields)
                         .putParcelableArrayListExtra("fieldsDis", fieldsDis)
+                        .putExtra("master", master)
                         .putExtra("caller", record.caller),
                 0x25);
     }
@@ -131,6 +153,10 @@ public class ApprovaPresenter implements OnHttpResultListener {
         return baseUrl + record.nodeId + endStatus;
     }
 
+    public String getMaster() {
+        return master == null ? CommonUtil.getMaster() : master;
+    }
+
     public void initLoad() {
         initLoad(record.nodeId);
     }
@@ -142,13 +168,13 @@ public class ApprovaPresenter implements OnHttpResultListener {
     private void initLoad(int nodeId, String imid) {
         record = new ApprovalRecord();
         approvals = new ArrayList<>();
+        hineApprovals = new ArrayList<>();
         record.nodeId = nodeId;
         if (imid != null)
             record.imid = imid;
         iApproval.initStatus();
         submit = false;
         loading = false;
-        nexting = false;
         loadCurrentNode();
     }
 
@@ -170,6 +196,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         String url = "common/setAssignee.action";
         Map<String, Object> param = new HashMap<>();
         param.put("taskId", record.nodeId);
+        param.put("master", master);
         param.put("assigneeId", emCode);//新处理人的员工编号
         param.put("processInstanceId", record.processInstanceId);//流程实例id
         param.put("description", nodeLog);//流程实例id
@@ -192,6 +219,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         Map<String, Object> param = new HashMap<>();
         param.put("em_code", CommonUtil.getEmcode());
         param.put("nodeId", record.nodeId);
+        param.put("master", master);
         param.put("needreturn", true);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
@@ -226,6 +254,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         }
         iApproval.showLoading();
         param.put("caller", record.caller);
+        param.put("master", master);
         param.put("processInstanceId", record.processInstanceId);
         String form = StringUtils.mapToJson(formStore);
         param.put("formStore", StringUtils.isEmpty(form) ? "{}" : form);
@@ -251,6 +280,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         param.put("nodeName", record.nodeName);
         param.put("nodeLog", OACheckUtil.getString(nodeLog));
         param.put("result", true);
+        param.put("master", master);
         param.put("attachs", "");//附件id
         param.put("_center", "0");//是否集团账套
         param.put("_noc", 1);//权限管控
@@ -271,6 +301,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         param.put("processInstanceId", record.processInstanceId);
         param.put("holdtime", 435);
         param.put("nodeId", record.nodeId);
+        param.put("master", master);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
                 .setWhat(LOAD_END_PROCESS)
@@ -280,13 +311,13 @@ public class ApprovaPresenter implements OnHttpResultListener {
 
     /*获取下一个节点 loading*/
     public void loadNextProcess() {
-        if (loading || nexting) return;
-        nexting = true;
+        if (loading) return;
         iApproval.showToast(R.string.loadtonext_approval, R.color.load_submit);
         iApproval.showLoading();
         String url = "common/getNextProcess.action";
         Map<String, Object> param = new HashMap<>();
         param.put("taskId", record.nodeId);
+        param.put("master", master);
         param.put("_noc", 1);//权限管控
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
@@ -310,6 +341,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         param.put("taskId", record.nodeId);
         param.put("nodeName", record.nodeName);
         param.put("nodeLog", nodeLog);
+        param.put("master", master);
         param.put("result", false);
         param.put("backTaskName", "RECORDER");
         param.put("attachs", "");//附件id
@@ -329,6 +361,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         Map<String, Object> param = new HashMap<>();
         param.put("caller", record.caller);
         param.put("id", record.id);
+        param.put("master", master);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
                 .setWhat(LOAD_NEXT_STEPOFP_INSTANCE)
@@ -343,6 +376,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         Map<String, Object> param = new HashMap<>();
         Map<String, Object> params = new HashMap<>();
         params.put("em_code", emCode);
+        param.put("master", master);
         params.put("nodeId", record.chcheNode);
         param.put("params", StringUtils.mapToJson(params));
         param.put("_noc", "1");
@@ -367,6 +401,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         String url = "common/getCurrentNode.action";
         Map<String, Object> param = new HashMap<>();
         param.put("jp_nodeId", record.nodeId);
+        param.put("master", master);
         param.put("_noc", 1);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
@@ -383,8 +418,10 @@ public class ApprovaPresenter implements OnHttpResultListener {
         String url = "mobile/common/getformandgriddata.action";
         Map<String, Object> param = new HashMap<>();
         param.put("caller", record.caller);
+        param.put("master", master);
         param.put("id", record.id);
         param.put("isprocess", 1);
+        param.put("config", 1);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
                 .setWhat(LOAD_FORMAND_GRIDDATA)
@@ -397,6 +434,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         iApproval.showLoading();
         String url = "common/getAllHistoryNodes.action";
         Map<String, Object> param = new HashMap<>();
+        param.put("master", master);
         param.put("processInstanceId", record.processInstanceId);
         param.put("_noc", 1);
         Request.Bulider bulider = new Request.Bulider()
@@ -412,6 +450,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         String url = "common/getCustomSetupOfTask.action";
         Map<String, Object> param = new HashMap<>();
         param.put("_noc", 1);
+        param.put("master", master);
         param.put("nodeId", record.nodeId);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
@@ -421,16 +460,20 @@ public class ApprovaPresenter implements OnHttpResultListener {
     }
 
     /*获取历史节点数据 loading*/
-    private void loadJnodes() {
+    private void loadJnodes(String historyNode) {
         iApproval.showLoading();
         String url = "common/getCurrentJnodes.action";
         Map<String, Object> param = new HashMap<>();
         param.put("caller", record.caller);
         param.put("keyValue", record.id);
         param.put("_noc", 1);
+        param.put("master", master);
+        Bundle bundle = new Bundle();
+        bundle.putString("historyNode", historyNode);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
                 .setWhat(LOAD_JNODES)
+                .setBundle(bundle)
                 .setParam(param);
         OAHttpHelper.getInstance().requestHttp(bulider.bulid(), this);
     }
@@ -444,6 +487,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         String url = "common/getFilePaths.action";
         Map<String, Object> param = new HashMap<>();
         param.put("field", "fb_attach");
+        param.put("master", master);
         param.put("id", attachs);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
@@ -509,6 +553,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                         try {
                             handlerFormandGriddataInThread(OACheckUtil.getJSONObject(object, "datas"));
                         } catch (Exception e) {
+                            LogUtil.i("handlerFormandGriddataInThread =" + e.getMessage());
                             loading = false;
                             e.printStackTrace();
                         }
@@ -516,15 +561,17 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 });
                 break;
             case LOAD_ALLHISTORY_NODES:
-                handlerHistorySetuptask(object);
+                loadJnodes(object.toString());
+//                handlerHistorySetuptask(object);
                 break;
             case LOAD_JNODES:
-                handlerNode(object);
+                handlerNode(object, bundle);
                 break;
             case LOAD_SETUP_TASK:
                 handlerSetupTask(object);
                 break;
             case LOAD_NEXT_PROCESS:
+                if (loading) return;
                 int nextnode = OACheckUtil.getJsonIntager(object, "nodeId");
                 if (nextnode > 0) {
                     initLoad(nextnode);
@@ -655,16 +702,18 @@ public class ApprovaPresenter implements OnHttpResultListener {
     private void handlerFormandGriddataInThread(JSONObject object) throws Exception {
         if (object != null) {
             //计算主表
-            final JSONObject formdata = OACheckUtil.getJsonArray(object, "formdata").getJSONObject(0);
+            JSONArray formdatas = OACheckUtil.getJsonArray(object, "formdata");
             JSONArray formconfigs = OACheckUtil.getJsonArray(object, "formconfigs");
-            if (!ListUtils.isEmpty(formconfigs) && formdata != null) {
-                final List<Approval> mainApproval = formandGriddata(formdata, formconfigs, record.caller, true);
-                setData2ListThread(Approval.MAIN, mainApproval);
+            if (!ListUtils.isEmpty(formdatas) && !ListUtils.isEmpty(formconfigs)) {
+                final JSONObject formdata = formdatas.getJSONObject(0);
+                if (!ListUtils.isEmpty(formconfigs) && formdata != null) {
+                    final List<Approval> mainApproval = formandGriddata(formdata, formconfigs, record.caller, true);
+                    setData2ListThread(Approval.MAIN, mainApproval);
+                }
             }
-            //计算从表,包含多从表
+            //计算从表
             JSONArray griddatas = OACheckUtil.getJsonArray(object, "griddata");
             JSONArray gridconfigs = OACheckUtil.getJsonArray(object, "gridconfigs");
-            JSONArray othergrids = OACheckUtil.getJsonArray(object, "othergrids");
             final List<Approval> detailedList = new ArrayList<>();
             if (!ListUtils.isEmpty(griddatas) && !ListUtils.isEmpty(gridconfigs)) {
                 for (int i = 0; i < griddatas.size(); i++) {
@@ -678,6 +727,8 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     }
                 }
             }
+            //计算多从表
+            JSONArray othergrids = OACheckUtil.getJsonArray(object, "othergrids");
             if (!ListUtils.isEmpty(othergrids)) {
                 JSONObject o = null;
                 String caller = null;
@@ -694,10 +745,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
                         for (int j = 0; j < otherGriddata.size(); j++) {
                             //获取到单个明细表单
                             final List<Approval> detailedApproval = formandGriddata(otherGriddata.getJSONObject(j), otherGridconfigs, caller, false);
-                            Approval approval = new Approval(Approval.TAG);
-                            approval.setCaption(name + " " + getString(R.string.serial_number) + (j + 1));
-                            detailedApproval.add(0, approval);
-                            detailedList.addAll(detailedApproval);
+                            if (!ListUtils.isEmpty(detailedApproval)) {
+                                Approval approval = new Approval(Approval.TAG);
+                                approval.setCaption(name + " " + getString(R.string.serial_number) + (j + 1));
+                                detailedApproval.add(0, approval);
+                                detailedList.addAll(detailedApproval);
+                            }
                         }
                     }
                 }
@@ -706,7 +759,11 @@ public class ApprovaPresenter implements OnHttpResultListener {
             OAHttpHelper.getInstance().post(new Runnable() {
                 @Override
                 public void run() {
-                    loadAllHistoryNodes();
+                    if (isApprovaling()) {
+                        loadCustomSetupOfTask();
+                    } else {
+                        loadAllHistoryNodes();
+                    }
                 }
             });
         } else {
@@ -714,6 +771,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         }
     }
 
+
     private List<Approval> formandGriddata(final JSONObject data, final JSONArray configs, String caller, boolean isMain) throws Exception {
         List<Approval> approvals = new ArrayList<>();
         String idTag = "";
@@ -729,7 +787,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
             String type = getJson2Text(config, "FD_TYPE", "DG_TYPE");
             //添加类型
             approval.setDfType(type);
-//            int isdefault = OACheckUtil.getJsonIntager(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
+            approval.setCaption(caption);
+            approval.setValuesKey(valueKey);
+            int isdefault = OACheckUtil.getJsonIntager(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
             int appwidth = OACheckUtil.getJsonIntager(config, "FD_APPWIDTH", "DG_APPWIDTH");
             if (isMain && approval.isDftypeEQ("MF")) {
                 final String fb_attach = valueKey;
@@ -739,6 +799,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                         loadFilePaths(OACheckUtil.getJson2Text(data, fb_attach));
                     }
                 });
+                continue;
             }
             //获取Id
             if (!StringUtils.isEmpty(caption) && (caption.equals("ID") || caption.equals("id"))) {
@@ -746,12 +807,15 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 id = OACheckUtil.getJsonIntager(data, valueKey);
             }
             if (approval.isDftypeEQ("H")
-//                    || isdefault != -1
+                    || isdefault != -1
                     || appwidth == 0
                     || (!isMain && OACheckUtil.getJsonIntager(config, "DG_WIDTH") == 0)
                     || OACheckUtil.isEmpty(valueKey)
                     || OACheckUtil.isEmpty(caption)
                     || (merged.length() > 0 && merged.toString().contains(valueKey))) {
+                if (isdefault == 0) {
+                    hineApprovals.add(approval);
+                }
                 continue;
             }
             //添加下拉数据
@@ -766,8 +830,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
             }
             approval.setValues(OACheckUtil.getJson2Text(data, valueKey)); ;//获取第一个字段的值
             boolean mergeAble = appwidth == 1 || (approval.isDftypeEQ("MT"));
-            approval.setCaption(caption);
-            approval.setValuesKey(valueKey);
             approval.data2Values();
             approval.setMustInput(true);
             if (!StringUtils.isEmpty(record.needInputKeys)
@@ -785,8 +847,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
             }
             if (!isApprovaling())
                 approval.setNeerInput(false);
-            if (!approval.isNeerInput() && StringUtils.isEmpty(approval.getValues()))
+            if (!approval.isNeerInput() && StringUtils.isEmpty(approval.getValues())) {
                 continue;//如果不是要输入的对象,同时显示值为空,需要隐藏去
+            }
             if (mergeAble) {
                 String valueTagKey = getJson2Text(config, "FD_LOGICTYPE", "DG_LOGICTYPE");//获取第二个值的key
                 if (!StringUtils.isEmpty(valueTagKey)) {
@@ -807,6 +870,68 @@ public class ApprovaPresenter implements OnHttpResultListener {
         return approvals;
     }
 
+    private List<Approval> handlerHistorySetuptask(JSONObject object) {
+        JSONArray nodes = OACheckUtil.getJsonArray(object, "nodes");
+        List<Approval> nodeApprovals = new ArrayList<>();
+        if (!ListUtils.isEmpty(nodes)) {
+            List<Approval> setuptasks = new ArrayList<>();
+            JSONObject node = null;
+            List<Approval> itemSetuptask = null;
+            for (int i = nodes.size() - 1; i >= 0; i--) {
+                node = nodes.getJSONObject(i);
+                itemSetuptask = getSetuptask(node);
+                if (!ListUtils.isEmpty(itemSetuptask)) {
+                    setuptasks.addAll(itemSetuptask);
+                }
+                nodeApprovals.add(getNodeApproval(node));
+            }
+            if (!ListUtils.isEmpty(setuptasks)) {
+                setData2ListThread(Approval.DETAIL, setuptasks);
+            }
+        }
+        return nodeApprovals;
+    }
+
+    private List<Approval> getSetuptask(JSONObject node) {
+        String name = OACheckUtil.getJson2Text(node, "jn_dealManName");
+        Approval approval = new Approval(Approval.TAG);
+        approval.setCaption(name + "的审批记录");
+        List<Approval> itemSetuptasks = getSetuptaskByData(OACheckUtil.getJson2Text(node, "jn_operatedDescription"));
+        if (!ListUtils.isEmpty(itemSetuptasks)) {
+            itemSetuptasks.add(0, approval);
+        }
+        return itemSetuptasks;
+    }
+
+    private Approval getNodeApproval(JSONObject object) {
+        String nodeName = OACheckUtil.getJson2Text(object, "jn_name");//当前结点名称
+        String emCode = OACheckUtil.getJson2Text(object, "jn_dealManId");//节点处理人编号
+        String manName = OACheckUtil.getJson2Text(object, "jn_dealManName");//处理人名字
+        String dealTime = OACheckUtil.getJson2Text(object, "jn_dealTime");//审批时间
+        String result = OACheckUtil.getJson2Text(object, "jn_dealResult");//审批结果
+        String description = OACheckUtil.getJson2Text(object, "jn_nodeDescription");//审批意见
+        Approval approval = new Approval(Approval.NODES);
+        approval.setCaption(manName);
+        approval.setDfType(emCode);
+        if (!StringUtils.isEmpty(dealTime)) {
+            approval.setValues(TimeUtils.long2str(TimeUtils.f_str_2_long(dealTime), "MM-dd HH:mm"));
+        }
+        StringBuilder resultBuilder = new StringBuilder();
+        if (!StringUtils.isEmpty(result)) {
+            if (result.equals("同意")) {
+                resultBuilder.append("已审批");
+            } else if (result.equals("不同意")) {
+                resultBuilder.append("未通过");
+            }
+        }
+        if (!StringUtils.isEmpty(description)) {
+            resultBuilder.append("(" + description + ")");
+        }
+        approval.setIdKey(resultBuilder.toString());
+        approval.setValuesKey(nodeName);
+        return approval;
+    }
+
     /**
      * itemData.caption //处理人名称
      * itemData.type //处理人编号
@@ -819,14 +944,21 @@ public class ApprovaPresenter implements OnHttpResultListener {
      * 2.获取node,获取审批意见和时间
      * 3.获取processs,获取审批状态
      */
-    private void handlerNode(final JSONObject object) {
+    private void handlerNode(final JSONObject object, final Bundle bundle) {
         ThreadUtil.getInstance().addTask(new Runnable() {
             @Override
             public void run() {
                 JSONArray nodes = OACheckUtil.getJsonArray(object, "nodes");
                 JSONArray processs = OACheckUtil.getJsonArray(object, "processs");
                 JSONArray datas = OACheckUtil.getJsonArray(object, "data");
-                final List<Approval> approvals = getNodDatas(datas);
+                List<Approval> approvals = getNodDatas(datas);
+                List<Approval> historyNodes = null;
+                if (bundle != null && !StringUtils.isEmpty(bundle.getString("historyNode"))) {
+                    historyNodes = handlerHistorySetuptask(JSON.parseObject(bundle.getString("historyNode")));
+                }
+                if (ListUtils.isEmpty(approvals) && !ListUtils.isEmpty(historyNodes)) {
+                    approvals = historyNodes;
+                }
                 if (!ListUtils.isEmpty(processs)) {
                     mergeNode(processs, approvals, false);
                 }
@@ -948,43 +1080,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
         return approvals;
     }
 
-    private void handlerHistorySetuptask(final JSONObject object) {
-        ThreadUtil.getInstance().addTask(new Runnable() {
-            @Override
-            public void run() {
-                JSONArray nodes = OACheckUtil.getJsonArray(object, "nodes");
-                if (!ListUtils.isEmpty(nodes)) {
-                    List<Approval> setuptasks = new ArrayList<Approval>();
-                    List<Approval> itemSetuptasks;
-                    Approval approval = null;
-                    JSONObject node = null;
-                    String name = null;
-                    for (int i = 0; i < nodes.size(); i++) {
-                        node = nodes.getJSONObject(i);
-                        name = OACheckUtil.getJson2Text(node, "jn_dealManName");
-                        approval = new Approval(Approval.TAG);
-                        approval.setCaption(name + "的审批记录");
-                        itemSetuptasks = getSetuptaskByData(OACheckUtil.getJson2Text(node, "jn_operatedDescription"));
-                        if (!ListUtils.isEmpty(itemSetuptasks)) {
-                            itemSetuptasks.add(0, approval);
-                            setuptasks.addAll(itemSetuptasks);
-                        }
-                    }
-                    setData2ListThread(Approval.DETAIL, setuptasks);
-                }
-                OAHttpHelper.getInstance().post(new Runnable() {
-                    @Override
-                    public void run() {
-                        if (isApprovaling()) {
-                            loadCustomSetupOfTask();
-                        } else {
-                            loadJnodes();
-                        }
-                    }
-                });
-            }
-        });
-    }
 
     private List<Approval> getSetuptaskByData(String data) {
         if (!StringUtils.isEmpty(data)) {
@@ -1042,7 +1137,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 OAHttpHelper.getInstance().post(new Runnable() {
                     @Override
                     public void run() {
-                        loadJnodes();
+                        loadAllHistoryNodes();
                     }
                 });
             }
@@ -1237,7 +1332,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         return formstore;
     }
 
-    private synchronized void setData2ListThread(int type, List<Approval> newApprovals) {
+    private synchronized void setData2ListThread(final int type, List<Approval> newApprovals) {
         final List<Approval> merges = new ArrayList<>();
         if (!ListUtils.isEmpty(approvals)) {
             if (type == Approval.TITLE) {
@@ -1268,6 +1363,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
         OAHttpHelper.getInstance().post(new Runnable() {
             @Override
             public void run() {
+                if (type == Approval.TITLE) {
+                    iApproval.showOpinion();
+                }
                 iApproval.showModels(merges);
 
             }

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

+ 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 - 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
app_core/common/build.gradle

@@ -3,12 +3,12 @@ apply plugin: 'com.android.library'
 
 android {
     compileSdkVersion 25
-    buildToolsVersion "25.0.3"
+    buildToolsVersion "25.0.0"
 
 
     defaultConfig {
         minSdkVersion 9
-        targetSdkVersion 25
+        targetSdkVersion 24
         versionCode 1
         versionName "1.0"