Selaa lähdekoodia

编写dbfind逻辑代码

Bitliker 8 vuotta sitten
vanhempi
commit
48ec13ad68

+ 18 - 10
app_core/common/src/main/java/com/core/model/Approval.java

@@ -37,13 +37,14 @@ public class Approval {
     private int type;
     private String idKey;
     private String caller;
+    private String gCaller;
+    private String coreKey;
     private String dfType;//返回的字段类型
     private String dbFind;//是否dbfind的判断
     private String caption = "";//字幕,表示备注
     private String values = "";//字幕对应的值显示
     private String oldValues = "";//变更前的值
     private String valuesKey = "";//字幕对应的值显示的key值
-    private String valuesMtKey = "";//合并字段被合并的值的key记录
     private List<Data> datas = new ArrayList<>();
 
     public Approval(@Duration int type) {
@@ -60,15 +61,6 @@ public class Approval {
         }
         this.oldValues = oldValues;
     }
-
-    public String getValuesMtKey() {
-        return valuesMtKey;
-    }
-
-    public void setValuesMtKey(String valuesMtKey) {
-        this.valuesMtKey = valuesMtKey;
-    }
-
     public String getDbFind() {
         return dbFind==null?"":dbFind;
     }
@@ -113,6 +105,22 @@ public class Approval {
         return values == null ? "" : values;
     }
 
+    public String getgCaller() {
+        return gCaller;
+    }
+
+    public void setgCaller(String gCaller) {
+        this.gCaller = gCaller;
+    }
+
+    public String getCoreKey() {
+        return coreKey;
+    }
+
+    public void setCoreKey(String coreKey) {
+        this.coreKey = coreKey;
+    }
+
     public String getNumber() {
         try {
             StringBuilder builder = new StringBuilder();

+ 10 - 8
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java

@@ -27,6 +27,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.andreabaccega.widget.FormEditText;
 import com.common.LogUtil;
+import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.common.preferences.PreferenceUtils;
@@ -155,16 +156,14 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
             mPresenter.initLoad();
         } else if (90 == requestCode && 90 == resultCode) {
             String json = data.getStringExtra("data");
-            Log.i("gongpengming","json="+json);
-            if (!StringUtil.isEmpty(json)) {
+            if (!StringUtil.isEmpty(json) && JSONUtil.validateJSONObject(json)) {
                 JSONObject object = JSON.parseObject(json);
                 if (mAdapter != null) {
-                    List<Approval> models = mAdapter.getApprovals();
+                    List<Approval> models = mAdapter.getDbFind();
                     for (Approval e : models) {
-                        if (e.isMustInput() && (e.getType() == Approval.MAIN || e.getType() == Approval.DETAIL)) {
+                        if (e.isNeerInput() && (e.getType() == Approval.MAIN || e.getType() == Approval.DETAIL)) {
                             for (Map.Entry<String, Object> map : object.entrySet()) {
-                                if (map.getKey().equals(e.getValuesKey())&&map.getValue()!=null) {
-                                    Log.i("gongpengming","map.getKey()="+map.getKey());
+                                if (map.getKey().equals(e.getValuesKey()) && map.getValue() != null) {
                                     e.setValues(map.getValue().toString());
                                 }
                             }
@@ -177,6 +176,7 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
         super.onActivityResult(requestCode, resultCode, data);
     }
 
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -226,8 +226,10 @@ public class ApprovalActivity extends OABaseActivity implements IApproval, Appro
     public void toDbFind(Approval approval) {
         startActivityForResult(new Intent(ct, SelectNetAcitivty.class)
                         .putExtra("fieldKey", approval.getValuesKey())
-                        .putExtra("caller", mPresenter.getCaller())
-                        .putExtra("isForm", approval.getType()==Approval.MAIN)
+                        .putExtra("corekey", approval.getCoreKey())
+                        .putExtra("caller", approval.getCaller())
+                        .putExtra("gCaller", approval.getgCaller())
+                        .putExtra("isForm", approval.getType() == Approval.MAIN)
                 , 90);
 
     }

+ 27 - 0
app_modular/appmessages/src/main/java/com/modular/appmessages/adapter/ApprovalAdapter.java

@@ -49,6 +49,8 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
     private List<Approval> approvals;
     private List<Approval> historyNodes;
     private boolean isApprovaling;
+    private int dbfindItem = -1;
+
 
     public ApprovalAdapter(ApprovalActivity ct, List<Approval> approvals, List<Approval> historyNodes, boolean isApprovaling) {
         this.isApprovaling = isApprovaling;
@@ -57,6 +59,30 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
         this.historyNodes = historyNodes;
     }
 
+    public List<Approval> getDbFind() {
+        if (ListUtils.getSize(approvals) > dbfindItem && dbfindItem != -1) {
+            List<Approval> changeApproval = new ArrayList<>();
+            int type = approvals.get(dbfindItem).getType();
+            for (int i = dbfindItem; i >= 0; i--) {
+                if (type == approvals.get(i).getType()) {
+                    changeApproval.add(approvals.get(i));
+                } else {
+                    break;
+                }
+            }
+            for (int i = dbfindItem + 1; i < ListUtils.getSize(approvals); i++) {
+                if (type == approvals.get(i).getType()) {
+                    changeApproval.add(approvals.get(i));
+                } else {
+                    break;
+                }
+            }
+            return changeApproval;
+        } else {
+            return approvals;
+        }
+    }
+
     public List<Approval> getApprovals() {
         return approvals;
     }
@@ -382,6 +408,7 @@ public class ApprovalAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
                                 showTimeSelect(holder.valueEt, position);
                             } else if (type == 4) {
                                 ct.toDbFind(approval);
+                                dbfindItem = position;
                             } else {
                                 selectItem(approval, position);
                             }

+ 25 - 8
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java

@@ -4,6 +4,7 @@ import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Looper;
+import android.util.Log;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -842,6 +843,19 @@ public class ApprovaPresenter implements OnHttpResultListener {
             JSONArray combostore = JSONUtil.getJSONArray(config, "COMBOSTORE");
             String type = JSONUtil.getText(config, "FD_TYPE", "DG_TYPE");
             String dbFind = JSONUtil.getText(config, "FD_DBFIND", "DG_TYPE");
+            if (!isMain) {
+                String findTionName = JSONUtil.getText(config, "DG_FINDFUNCTIONNAME");
+                if (!StringUtil.isEmpty(findTionName)) {
+                    int hhitem = findTionName.indexOf('|');
+                    Log.i("gongpengming","findTionName="+findTionName);
+                    String gCaller = findTionName.substring(0, hhitem);
+                    Log.i("gongpengming","gCaller="+gCaller);
+                    String coreKey = findTionName.substring(hhitem+1, findTionName.length());
+                    Log.i("coreKey","coreKey="+coreKey);
+                    approval.setgCaller(gCaller);
+                    approval.setCoreKey(coreKey);
+                }
+            }
             //添加类型
             approval.setDbFind(dbFind);
             approval.setDfType(type);
@@ -944,9 +958,8 @@ public class ApprovaPresenter implements OnHttpResultListener {
             if ((!approval.isNeerInput() && StringUtil.isEmpty(approval.getValues())) || !showAble || approval.getValues().equals("null") || !showAble || approval.getValues().equals("(null)")) {
                 continue;//如果不是要输入的对象,同时显示值为空,需要隐藏去
             }
-            if (mergeAble) {
+            if (mergeAble && !approval.isDBFind()) {
                 String valueTagKey = JSONUtil.getText(config, "FD_LOGICTYPE", "DG_LOGICTYPE");//获取第二个值的key
-                approval.setValuesMtKey(valueTagKey);
                 if (!StringUtil.isEmpty(valueTagKey)) {
                     String valueTag = JSONUtil.getText(data, valueTagKey);
                     if (!StringUtil.isEmpty(valueTag)) {
@@ -1491,14 +1504,14 @@ public class ApprovaPresenter implements OnHttpResultListener {
                     }
                 }
             }
-            Map<String, Object> formstore = putItem2Params(mainList);
+            Map<String, Object> formstore = putItem2Params(true, mainList);
             if (formstore == null)
                 return false;
             formStore.putAll(formstore);
 
             for (List<Approval> details : detailList) {
-                Map<String, Object> param = putItem2Params(details);
-                if (param == null&&param.isEmpty() || param.keySet().size() <= 1)
+                Map<String, Object> param = putItem2Params(false, details);
+                if (param == null || param.isEmpty() || param.keySet().size() <= 1)
                     continue;
                 params.add(param);
             }
@@ -1506,17 +1519,21 @@ public class ApprovaPresenter implements OnHttpResultListener {
         return true;
     }
 
-    private Map<String, Object> putItem2Params(List<Approval> approvals) {
+    private Map<String, Object> putItem2Params(boolean showTocat, List<Approval> approvals) {
         Map<String, Object> formstore = new HashMap<>();
         for (Approval approval : approvals) {
             if (approval.isNeerInput()) {
                 if (StringUtil.isEmpty(approval.getValues())) {
                     String message = StringUtil.getMessage(R.string.must_input_key) + " " + approval.getCaption() + " " + StringUtil.getMessage(R.string.is_must_input);
-                    iApproval.showToast(message);
+                    if (showTocat) {
+                        iApproval.showToast(message);
+                    }
                     return null;
                 } else if (StringUtil.isEmpty(approval.getValues())) {
                     String message = StringUtil.getMessage(R.string.must_input_key) + " " + approval.getCaption() + " " + StringUtil.getMessage(R.string.limit_unno_zijie);
-                    iApproval.showToast(message);
+                    if (showTocat) {
+                        iApproval.showToast(message);
+                    }
                     return null;
                 } else {
                     boolean isputed = false;

+ 59 - 33
app_modular/apputils/src/main/java/com/modular/apputils/activity/SelectNetAcitivty.java

@@ -27,8 +27,12 @@ import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.core.app.MyApplication;
 import com.core.base.OABaseActivity;
+import com.core.net.http.http.OAHttpHelper;
+import com.core.net.http.http.OnHttpResultListener;
+import com.core.net.http.http.Request;
 import com.core.utils.CommonUtil;
 import com.core.utils.ToastUtil;
+import com.core.widget.EmptyLayout;
 import com.core.widget.VoiceSearchView;
 import com.core.widget.listener.EditChangeListener;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
@@ -52,13 +56,18 @@ import java.util.Map;
 public class SelectNetAcitivty extends OABaseActivity {
     private HttpClient httpClient;
     private String lastKey;
+    private int page = 1;
+
 
+    //intent
+    private String caller;//传进来的主表caller
+    private String gCaller;//传进来的附表caller,当是明细表时候存在
     private String fieldKey;
-    private String caller;
-    private int page = 1;
-    private boolean isForm = true;
+    private String corekey;
+
 
     private PullToRefreshListView refreshListView;
+    private EmptyLayout mEmptyLayout;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -68,9 +77,14 @@ public class SelectNetAcitivty extends OABaseActivity {
     }
 
     private void initView() {
-        VoiceSearchView     voiceSearchView = (VoiceSearchView) findViewById(R.id.voiceSearchView);
+        VoiceSearchView voiceSearchView = (VoiceSearchView) findViewById(R.id.voiceSearchView);
         refreshListView = (PullToRefreshListView) findViewById(R.id.refreshListView);
         refreshListView.setMode(PullToRefreshBase.Mode.BOTH);
+        mEmptyLayout = new EmptyLayout(this, refreshListView.getRefreshableView());
+        mEmptyLayout.setShowLoadingButton(false);
+        mEmptyLayout.setShowEmptyButton(false);
+        mEmptyLayout.setShowErrorButton(false);
+        mEmptyLayout.setEmptyMessage("请输入条件查询");
         voiceSearchView.addTextChangedListener(new EditChangeListener() {
             @Override
             public void afterTextChanged(Editable editable) {
@@ -94,12 +108,12 @@ public class SelectNetAcitivty extends OABaseActivity {
         if (intent != null) {
             fieldKey = intent.getStringExtra("fieldKey");
             caller = intent.getStringExtra("caller");
-            isForm = intent.getBooleanExtra("isForm",true);
+            gCaller = intent.getStringExtra("gCaller");
+            corekey = intent.getStringExtra("corekey");
         }
         String baseUrl = CommonUtil.getAppBaseUrl(this);
         String sessionId = CommonUtil.getSharedPreferences(this, "sessionId");
         Log.i("gongpengming", "baseUrl=" + baseUrl);
-        baseUrl = "https://218.17.158.219:9443/uas_test/";
         httpClient = new HttpClient.Builder(baseUrl)
                 .isDebug(true)
 //                .header("Cookie", "JSESSIONID=" + sessionId)
@@ -110,16 +124,21 @@ public class SelectNetAcitivty extends OABaseActivity {
                 .readTimeout(5000)
                 .build();
         loadSearch(page = 1, lastKey = "");
+        showLoading();
     }
 
     private void loadSearch(int page, final String keyWork) {
-        String condition = "upper(" + fieldKey + ") like '%" + keyWork.toUpperCase() + "%'";
-        Log.i("gongpengming", "condition=" + condition);
-//        condition = "1=1";
-        httpClient.Api().send(new HttpClient.Builder()
-                .url("common/dbfind.action")
+        String condition = null;
+        if (StringUtil.isEmpty(keyWork)) {
+            condition = "1=1";
+        } else {
+            condition = "upper(" + (StringUtil.isEmpty(corekey) ? fieldKey : corekey) + ") like '%" + keyWork.toUpperCase() + "%'";
+        }
+        HttpClient.Builder builder = new HttpClient.Builder();
+        boolean isForm = StringUtil.isEmpty(gCaller);
+        builder.url("mobile/common/dbfind.action")
                 .add("which", isForm ? "form" : "grid")
-                .add("caller", caller)
+                .add("caller", isForm ? caller : gCaller)
                 .add("field", fieldKey)
                 .header("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId"))
                 .add("condition", condition)
@@ -127,44 +146,49 @@ public class SelectNetAcitivty extends OABaseActivity {
                 .add("_config", "")
                 .add("page", page)
                 .add("pageSize", 20)
-                .method(Method.GET)
-                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+                .method(Method.GET);
+        if (!isForm) {
+            builder.add("gridField", fieldKey)
+                    .add("gridCaller", caller);
+        }
+        httpClient.Api().send(builder.build(), new ResultSubscriber<>(new ResultListener<Object>() {
             @Override
             public void onResponse(Object o) {
                 if (!lastKey.equals(keyWork)) return;
                 try {
                     handleData(o.toString());
+                    dimssLoading();
                 } catch (Exception e) {
-                    if (e != null && !StringUtil.isEmpty(e.getMessage())) {
-                        Log.i("gongpengming", e.getMessage());
+                    dimssLoading();
+                    if (mAdapter == null || ListUtils.isEmpty(mAdapter.models)) {
+                        mEmptyLayout.showEmpty();
                     }
-
                 }
                 refreshListView.onRefreshComplete();
             }
         }));
     }
 
-
     private ListAdapter mAdapter = null;
 
     private void handleData(String messgae) throws Exception {
-        LogUtil.prinlnLongMsg("gongpengming", messgae);
+        LogUtil.prinlnLongMsg("gongpengming", "messgae=" + messgae);
         JSONObject object = JSON.parseObject(messgae);
-        JSONArray dbfinds = JSONUtil.getJSONArray(object, "dbfinds");
-        Log.i("gongpengming", "dbfinds=" + dbfinds.size());
+        JSONArray dbfinds = JSONUtil.getJSONArray(object, "dbfinds","gridDbfinds");
         String dataStr = JSONUtil.getText(object, "data");
-        LogUtil.prinlnLongMsg("gongpengming", "dataStr=" + dataStr);
         JSONArray data = JSON.parseArray(dataStr);
-        LogUtil.prinlnLongMsg("gongpengming", "data=" + data.size());
+        setData2Adapter(data, dbfinds);
+    }
+
+    private void setData2Adapter(JSONArray data, JSONArray dbfinds) throws Exception {
         Map<String, String> configMap = new HashMap<>();
         //获取配置
         JSONObject config = null;
         String fieldKeyLike = null;
         for (int i = 0; i < dbfinds.size(); i++) {
             config = dbfinds.getJSONObject(i);
-            String dbGridField = JSONUtil.getText(config, "dbGridField");
-            String field = JSONUtil.getText(config, "field");
+            String dbGridField = JSONUtil.getText(config, "dbGridField","ds_dbfindfield");
+            String field = JSONUtil.getText(config, "field","ds_gridfield");
             if (!StringUtil.isEmpty(dbGridField) && !StringUtil.isEmpty(field)) {
                 if (field.equals(fieldKey)) {
                     fieldKeyLike = dbGridField;
@@ -172,7 +196,6 @@ public class SelectNetAcitivty extends OABaseActivity {
                 configMap.put(dbGridField, field);
             }
         }
-        Log.i("gongpengming", "configMap=" + JSONUtil.map2JSON(configMap));
         JSONObject o = null;
         Bean b = null;
         List<Bean> models = new ArrayList<>();
@@ -186,11 +209,9 @@ public class SelectNetAcitivty extends OABaseActivity {
                 jsonMap.put(e.getValue(), JSONUtil.getText(o, e.getKey()));
             }
             b.json = JSONUtil.map2JSON(jsonMap);
-            Log.i("gongpengming", "b.json=" + b.json);
-            models.add(b);
+            if (!StringUtil.isEmpty(b.name))
+                models.add(b);
         }
-
-        Log.i("gongpengming", "models=" + models.size());
         if (mAdapter == null) {
             mAdapter = new ListAdapter(models);
             refreshListView.setAdapter(mAdapter);
@@ -207,10 +228,16 @@ public class SelectNetAcitivty extends OABaseActivity {
                     }
                 }
             });
+            if (ListUtils.isEmpty(models)) {
+                mEmptyLayout.showEmpty();
+            }
         } else {
-            if (page==1){
+            if (page == 1) {
                 mAdapter.setModels(models);
-            }else{
+                if (ListUtils.isEmpty(models)) {
+                    mEmptyLayout.showEmpty();
+                }
+            } else {
                 mAdapter.addModls(models);
             }
         }
@@ -283,7 +310,6 @@ public class SelectNetAcitivty extends OABaseActivity {
         }
     }
 
-
     private class Bean {
         String name;
         String json;