Browse Source

项目整改部分

Bitliker 8 years ago
parent
commit
e4ef896352

+ 25 - 1
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;
@@ -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) {

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

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

@@ -69,8 +69,9 @@ public class ApprovaPresenter implements OnHttpResultListener {
     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;
@@ -106,13 +107,29 @@ 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)
@@ -151,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();
     }
 
@@ -294,8 +311,7 @@ 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";
@@ -405,6 +421,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         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)
@@ -443,7 +460,7 @@ 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<>();
@@ -451,9 +468,12 @@ public class ApprovaPresenter implements OnHttpResultListener {
         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);
     }
@@ -541,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);
@@ -737,7 +759,11 @@ public class ApprovaPresenter implements OnHttpResultListener {
             OAHttpHelper.getInstance().post(new Runnable() {
                 @Override
                 public void run() {
-                    loadAllHistoryNodes();
+                    if (isApprovaling()) {
+                        loadCustomSetupOfTask();
+                    } else {
+                        loadAllHistoryNodes();
+                    }
                 }
             });
         } else {
@@ -761,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;
@@ -779,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;
             }
             //添加下拉数据
@@ -799,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)
@@ -818,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)) {
@@ -840,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 //处理人编号
@@ -852,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);
                 }
@@ -981,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)) {
@@ -1075,7 +1137,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 OAHttpHelper.getInstance().post(new Runnable() {
                     @Override
                     public void run() {
-                        loadJnodes();
+                        loadAllHistoryNodes();
                     }
                 });
             }
@@ -1270,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) {
@@ -1301,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();
+
 }