Browse Source

整合审批流代码,使用单个Recyclerview处理问题
处理个别现场闪退问题

Bitliker 8 years ago
parent
commit
01849463ae

+ 2 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java

@@ -2,13 +2,13 @@ package com.xzjmyk.pm.activity;
 
 import android.content.Intent;
 import android.support.v4.content.LocalBroadcastManager;
-import android.util.Log;
 
 import com.baidu.location.BDLocation;
 import com.baidu.location.BDLocationListener;
 import com.baidu.location.LocationClient;
 import com.baidu.location.LocationClientOption;
 import com.baidu.mapapi.model.LatLng;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
@@ -163,12 +163,7 @@ public class BdLocationHelper {
     }
 
     private void log(String message) {
-        try {
-            if (!AppConfig.DEBUG && StringUtils.isEmpty(message)) return;
-            Log.i("gongpengming", message);
-        } catch (Exception e) {
-
-        }
+        LogUtil.i(message);
     }
 
 

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

@@ -4,6 +4,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.text.Editable;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
@@ -21,6 +22,7 @@ import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
 import com.xzjmyk.pm.activity.bean.oa.SelectBean;
 import com.xzjmyk.pm.activity.bean.oa.SelectEmUser;
 import com.xzjmyk.pm.activity.ui.erp.adapter.oa.ApprovalAdapter;
+import com.xzjmyk.pm.activity.ui.erp.entity.EditChangeListener;
 import com.xzjmyk.pm.activity.ui.erp.entity.SelectCollisionTurnBean;
 import com.xzjmyk.pm.activity.ui.erp.model.oa.Approval;
 import com.xzjmyk.pm.activity.ui.erp.presenter.ApprovaPresenter;
@@ -45,7 +47,7 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
     @ViewInject(R.id.opinionET)
     FormEditText opinionET;//意见
     @ViewInject(R.id.contentRV)
-    RecyclerView contentRV;//意见
+    RecyclerView contentRV;
     @ViewInject(R.id.inputTagIV)
     ImageView inputTagIV;
 
@@ -94,6 +96,16 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
         findViewById(R.id.takeOverTV).setOnClickListener(this);
         findViewById(R.id.voiceIV).setOnClickListener(this);
         String title = getIntent().getStringExtra("title");
+        opinionET.addTextChangedListener(new EditChangeListener() {
+            @Override
+            public void afterTextChanged(Editable s) {
+                if (s.length() > 0&&inputTagIV.getVisibility()== View.VISIBLE){
+                    inputTagIV.setVisibility(View.GONE);
+                }else if (s.length()<=0&&inputTagIV.getVisibility()== View.GONE){
+                    inputTagIV.setVisibility(View.VISIBLE);
+                }
+            }
+        });
         if (!StringUtils.isEmpty(title)) {
             getSupportActionBar().setTitle(title);
             if (getString(R.string.title_approval).equals(title)) {
@@ -103,7 +115,6 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
                 opinionRL.setVisibility(View.GONE);
                 operationLL.setVisibility(View.GONE);
             }
-
         }
         mPresenter = new ApprovaPresenter(this, getIntent());
     }
@@ -366,4 +377,8 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, View.
         intent.putExtra("title", "选择审批人");
         startActivityForResult(intent, 0x22);
     }
+
+
+
+
 }

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

@@ -111,10 +111,10 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
         holder.contentRV.setAdapter(new ApprovalRVItemAdapter(ct, approval.getType(), position, approval.getItems()));
 //        if (holder.contentRV.getAdapter() != null && holder.contentRV.getAdapter() instanceof ApprovalRVItemAdapter) {
 //            ApprovalRVItemAdapter adapter = (ApprovalRVItemAdapter) holder.contentRV.getAdapter();
-//            adapter.setItemDatas(approval.getItems());
+//            adapter.setItemDatas(approval.getType(),approval.getItems());
 //            adapter.notifyDataSetChanged();
 //        } else {
-//
+//        holder.contentRV.setAdapter(new ApprovalRVItemAdapter(ct, approval.getType(), position, approval.getItems()));
 //        }
     }
 

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

@@ -143,12 +143,18 @@ public class ApprovalRVItemAdapter extends RecyclerView.Adapter<RecyclerView.Vie
     private void bindNodeView(NodeViewHolder holder, int position) {
         Approval.Item itemData = itemDatas.get(position);
         if (!StringUtils.isEmpty(itemData.status)) {
-            TextUtil.create()
-                    .addSection(itemData.status)
-                    .tint("已审批", 0x3C97D7)
-                    .tint("待审批", 0xB99400)
-                    .tint("未通过", 0xDC143C)
-                    .showIn(holder.valuesTv);
+            if (itemData.status.contains("已审批")) {
+                TextUtil.create()
+                        .addSection(itemData.status)
+                        .tint(itemData.status, 0x969595)
+                        .showIn(holder.valuesTv);
+            } else {
+                TextUtil.create()
+                        .addSection(itemData.status)
+                        .tint("待审批", 0xB99400)
+                        .tint("未通过", 0xDC143C)
+                        .showIn(holder.valuesTv);
+            }
         } else {
             holder.valuesTv.setText("");
         }
@@ -158,10 +164,12 @@ public class ApprovalRVItemAdapter extends RecyclerView.Adapter<RecyclerView.Vie
         if (!StringUtils.isEmpty(itemData.status)) {
             String status = itemData.status.split("\\(")[0];
             if (StringUtils.isEmpty(status)) status = "";
-            if ("已审批".equals(status) || "未通过".equals(status)) {
-                reId = R.drawable.yishenpi;
+            if ("已审批".equals(status)) {
+                reId = R.drawable.node_finished3;
             } else if ("待审批".equals(status)) {
                 reId = R.drawable.daishenpi;
+            } else if ("未通过".equals(status)) {
+                reId = R.drawable.node_wait3;
             } else {
                 reId = R.drawable.weishenpi;
             }
@@ -337,7 +345,6 @@ public class ApprovalRVItemAdapter extends RecyclerView.Adapter<RecyclerView.Vie
 
         public EnclosureViewHolder(View itemView) {
             super(itemView);
-            itemView.findViewById(R.id.line).setVisibility(View.GONE);
             nameTv = (TextView) itemView.findViewById(R.id.tagTv);
         }
     }

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

@@ -65,7 +65,7 @@ public class Approval {
     }
 
     public List<Item> getItems() {
-        return items==null?new ArrayList<Item>():items;
+        return items == null ? new ArrayList<Item>() : items;
     }
 
     public void setItems(List<Item> items) {
@@ -89,12 +89,10 @@ public class Approval {
     }
 
 
-
     public static class Item {
         public String type;//
         public boolean neerInput = false;//是否需要输入
         public boolean mustInput = false;//是否是必填字段
-        //        public boolean twoColumn = false;//是否显示两列
         public String caption = "";//字幕,表示备注
         public String values = "";//字幕对应的值显示
         public String valuesKey = "";//字幕对应的值显示的key值
@@ -108,7 +106,6 @@ public class Approval {
             map.put("type", type);
             map.put("neerInput", neerInput);
             map.put("mustInput", mustInput);
-//            map.put("twoColumn", twoColumn);
             map.put("caption", caption);
             map.put("values", values);
             map.put("valuesKey", valuesKey);
@@ -136,7 +133,7 @@ public class Approval {
         }
 
         public void data2Values() {
-            if (type.equals("D")) {
+            if (type.equals("D") && values.endsWith("00:00:00")) {
                 long time = TimeUtils.f_str_2_long(values);
                 if (time > 0) {
                     values = TimeUtils.s_long_2_str(time);
@@ -153,8 +150,8 @@ public class Approval {
     }
 
     public static class Data {
-        public String value="";
-        public String display="";
+        public String value = "";
+        public String display = "";
 
         public Data() {
         }

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

@@ -111,7 +111,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
         if (!inputAllPoints(points, approvals))
             return;
         chchePoints = points.toString();
-        LogUtil.i("chchePoints=" + chchePoints);
         String url = "common/processUpdate.action";
         Map<String, Object> param = new HashMap<>();
         List<Map<String, Object>> params = new ArrayList<>();
@@ -168,6 +167,10 @@ public class ApprovaPresenter implements OnHttpResultListener {
     }
 
     public void disAgree(String nodeLog) {
+        if (StringUtils.isEmpty(nodeLog)) {
+            iApproval.showToast(R.string.approval_opinion_error, R.color.load_submit);
+            return;
+        }
         if (!canSubmit()) return;
         submiting = true;
         iApproval.showLoading();
@@ -272,6 +275,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         Map<String, Object> param = new HashMap<>();
         param.put("caller", record.caller);
         param.put("id", record.id);
+        param.put("isprocess", 1);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
                 .setWhat(LOAD_FORMAND_GRIDDATA)
@@ -279,18 +283,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
         OAHttpHelper.getInstance().requestHttp(bulider.bulid(), this);
     }
 
-    public void loadNextStepOfPInstance() {
-        iApproval.showLoading();
-        String url = "common/dealNextStepOfPInstance.action";
-        Map<String, Object> param = new HashMap<>();
-        param.put("processInstanceId", record.processInstanceId);
-        param.put("_noc", 1);
-        Request.Bulider bulider = new Request.Bulider()
-                .setUrl(url)
-                .setWhat(LOAD_NEXT_STEPOFP_INSTANCE)
-                .setParam(param);
-        OAHttpHelper.getInstance().requestHttp(bulider.bulid(), this);
-    }
 
     public void judgeApprovers() {
         String url = "common/getMultiNodeAssigns.action";
@@ -602,14 +594,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
         if (object != null) {
             final JSONObject formdata = OACheckUtil.getJsonArray(object, "formdata").getJSONObject(0);
             JSONArray formconfigs = OACheckUtil.getJsonArray(object, "formconfigs");
-            OAHttpHelper.getInstance().post(new Runnable() {
-                @Override
-                public void run() {
-                    loadFilePaths(OACheckUtil.getJson2Text(formdata, "fb_attach"));
-                }
-            });
+
             if (!ListUtils.isEmpty(formconfigs) && formdata != null) {
-                final Approval mainApproval = formandGriddata(formdata, formconfigs);
+                final Approval mainApproval = formandGriddata(formdata, formconfigs, true);
                 mainApproval.setType(Approval.Type.MAIN);
                 OAHttpHelper.getInstance().post(new Runnable() {
                     @Override
@@ -624,7 +611,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
             if (!ListUtils.isEmpty(griddatas) && !ListUtils.isEmpty(gridconfigs)) {
                 for (int i = 0; i < griddatas.size(); i++) {
                     //获取到单个明细表单
-                    final Approval detailedApproval = formandGriddata(griddatas.getJSONObject(i), gridconfigs);
+                    final Approval detailedApproval = formandGriddata(griddatas.getJSONObject(i), gridconfigs, false);
                     detailedApproval.setType(DETAIL);
                     detailedApproval.setTitle(getString(R.string.serial_number) + (i + 1));
                     detailedList.add(detailedApproval);
@@ -640,7 +627,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         }
     }
 
-    private Approval formandGriddata(JSONObject data, JSONArray configs) throws Exception {
+    private Approval formandGriddata(final JSONObject data, final JSONArray configs, boolean isMain) throws Exception {
         Approval approval = new Approval();
         List<Approval.Item> itemDatas = new ArrayList<>();
         String idTag = "";
@@ -655,6 +642,15 @@ public class ApprovaPresenter implements OnHttpResultListener {
             JSONArray combostore = OACheckUtil.getJsonArray(config, "COMBOSTORE");
             itemData.type = getJson2Text(config, "FD_TYPE", "DG_TYPE");
             int isdefault = OACheckUtil.getJsonIntager(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
+            if (isMain && caption.equals("附件")) {
+                final String fb_attach = valueKey;
+                OAHttpHelper.getInstance().post(new Runnable() {
+                    @Override
+                    public void run() {
+                        loadFilePaths(OACheckUtil.getJson2Text(data, fb_attach));
+                    }
+                });
+            }
             //获取Id
             if (!StringUtils.isEmpty(caption) && caption.equals("ID")) {
                 idTag = valueKey;
@@ -715,6 +711,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
     }
 
     /**
+     * itemData.caption //处理人名称
+     * itemData.type //处理人编号
+     * itemData.valuesKey //节点名称
+     * temData.status//状态
+     * temData.values//时间点
+     * <p>
      * 处理审批节点
      * 1.先处理data数据获取数据列表
      * 2.获取node,获取审批意见和时间
@@ -736,13 +738,11 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 }
                 //判断当前
                 for (Approval.Item itemData : itemDatas) {
-                    if (!StringUtils.isEmpty(itemData.values)) {
-                        if (!StringUtils.isEmpty(itemData.status) && itemData.status.contains("未通过")) {
-                            record.status = "未通过";
-                        } else if (StringUtils.isEmpty(itemData.status) || itemData.status.contains("待审批")) {
-                            record.status = "待审批";
-                        }
-                        String[] emcode = itemData.values.split(",");
+                    if (StringUtils.isEmpty(itemData.status) || itemData.status.contains("待审批")) {
+                        itemData.values = "";
+                    }
+                    if (!StringUtils.isEmpty(itemData.type)) {
+                        String[] emcode = itemData.type.split(",");
                         if (!StringUtils.isEmpty(emcode[0])) {
                             int imId = getImByCode(emcode[0]);
                             itemData.data = String.valueOf(imId);
@@ -783,7 +783,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
             }
         }
         Approval enclosureApproval = new Approval();
-        enclosureApproval.setTitle("附件:");
+        enclosureApproval.setTitle("附件");
         enclosureApproval.setItems(enclosureList);
         enclosureApproval.setType(Approval.Type.ENCLOSURE);
         iApproval.showEnclosureList(enclosureApproval);
@@ -796,7 +796,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
             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 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.Item itemData : itemDatas) {
@@ -838,9 +838,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
             String emCode = OACheckUtil.getJson2Text(object, "JP_NODEDEALMAN");//节点处理人编号
             String manName = OACheckUtil.getJson2Text(object, "JP_NODEDEALMANNAME");
             Approval.Item itemData = new Approval.Item();
-            itemData.caption = manName;
-            itemData.type = emCode;
-            itemData.valuesKey = nodeName;
+            itemData.caption = manName;//处理人名称
+            itemData.type = emCode;//处理人编号
+            itemData.valuesKey = nodeName;//节点名称
             itemDatas.add(itemData);
         }
         return itemDatas;
@@ -862,12 +862,13 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     pointsList.add(itemData);
                 }
             }
-
-            Approval points = new Approval();
-            points.setItems(pointsList);
-            points.setType(Approval.Type.POINTS);
-            points.setTitle(OACheckUtil.getString(R.string.approval_points) );
-            iApproval.showPointsList(points);
+            if (!ListUtils.isEmpty(pointsList)) {
+                Approval points = new Approval();
+                points.setItems(pointsList);
+                points.setType(Approval.Type.POINTS);
+                points.setTitle(OACheckUtil.getString(R.string.approval_points));
+                iApproval.showPointsList(points);
+            }
         }
     }
 
@@ -913,7 +914,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     for (String data : datas) {
                         if (data.contains(itemData.caption)) {
                             String values = OACheckUtil.getFirstBrackets(data);
-                            if (!StringUtils.isEmpty(values) && !values.equals("null") && !values.equals("(null)")) {
+                            if (!StringUtils.isEmpty(values) && !values.equals("null") && !values.equals("(null)") && !values.equals("(null")) {
                                 itemData.values = values;
                             }
                         }
@@ -994,7 +995,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 if (approval.getType() == Approval.Type.MAIN) {
                     formstore = putItem2Params(approval.getItems());
                     if (formstore == null)
-                        return false;
+                        continue;
                     formstore.put(approval.getIdKey(), approval.getId());
                     break;
                 }
@@ -1011,7 +1012,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
             for (Approval approval : approvals) {
                 if (approval.getType() == Approval.Type.DETAIL) {
                     Map<String, Object> formstore = putItem2Params(approval.getItems());
-                    if (formstore == null) return false;
+                    if (formstore == null || formstore.isEmpty()) continue;
                     formstore.put(approval.getIdKey(), approval.getId());
                     params.add(formstore);
                 }

+ 4 - 2
WeiChat/src/main/res/layout/item_approval_points.xml

@@ -31,14 +31,16 @@
                 android:layout_height="match_parent"
                 android:background="@null"
                 android:gravity="right"
-                android:hint="@string/common_input2"/>
+                android:hint="@string/common_input2"
+                android:textColor="@color/text_main"/>
 
             <TextView
                 android:id="@+id/valueTv"
                 style="@style/approvalItemStyle"
                 android:layout_width="match_parent"
                 android:drawableRight="@drawable/oa_next"
-                android:gravity="right"/>
+                android:gravity="right"
+                android:textColor="@color/text_main"/>
         </FrameLayout>
     </LinearLayout>
 

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

@@ -23,6 +23,7 @@
             style="@style/approvalItemStyle"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
+            android:textColor="@color/text_main"
             android:background="@drawable/shape_from_edit_hint"
             android:hint="@string/common_input2"/>
 
@@ -36,6 +37,7 @@
         <TextView
             android:id="@+id/valueTv"
             style="@style/approvalItemStyle"
+            android:textColor="@color/text_main"
             android:layout_width="match_parent"
             android:gravity="center|left"/>
     </FrameLayout>

+ 5 - 8
WeiChat/src/main/res/layout/item_approval_tag.xml

@@ -1,18 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
               style="@style/approvalStyle"
-              android:layout_height="30dp"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
               android:orientation="vertical">
 
-    <View
-        android:id="@+id/line"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/line"
-        android:background="@color/item_line"/>
-
     <TextView
         android:id="@+id/tagTv"
-        android:text="tagTv"
         style="@style/approvalItemStyle"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="tagTv"
         android:textColor="@color/titleBlue"/>
 </LinearLayout>

+ 15 - 5
WeiChat/src/main/res/layout/item_base_rvlist.xml

@@ -2,13 +2,15 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:background="@color/base_bg">
+                android:background="@color/base_bg"
+                android:focusableInTouchMode="true">
 
     <View
         android:id="@+id/line"
         android:layout_width="match_parent"
         android:layout_height="@dimen/paddingApp"
         android:background="@color/item_line"/>
+
     <View
         android:id="@+id/lineMin"
         android:layout_width="match_parent"
@@ -25,10 +27,18 @@
         android:textColor="@color/titleBlue"
         android:textSize="@dimen/text_main"/>
 
-    <android.support.v7.widget.RecyclerView
-        android:id="@+id/contentRV"
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_below="@id/titleTV"
-        android:padding="@dimen/paddingApp"/>
+        android:focusableInTouchMode="true"
+        android:layout_below="@id/titleTV">
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/contentRV"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:focusableInTouchMode="false"
+            android:padding="@dimen/paddingApp"/>
+    </RelativeLayout>
+
 </RelativeLayout>