Browse Source

设备管理养护管理保存功能

RaoMeng 6 years ago
parent
commit
f532ff566a

+ 1 - 1
app_core/common/src/main/java/com/core/utils/CommonUtil.java

@@ -111,7 +111,7 @@ public class CommonUtil {
 //        }
 //        baseUrl = "http://117.25.180.218:8090/zz_test/";
 //        baseUrl = "http://10.1.80.180:8080/uas_war_exploded/";
-//        baseUrl = "http://10.1.80.180:8080/uas/";
+//        baseUrl = "http://10.1.80.28:8080/ERP/";
         return baseUrl;
     }
 

+ 28 - 6
app_modular/apputils/src/main/java/com/modular/apputils/activity/BillInputActivity.java

@@ -79,6 +79,8 @@ public class BillInputActivity extends OABaseActivity implements IBill, BillAdap
     protected boolean needItemDecoration = true;
     public int selectPosition = -1;//当前选择调转界面的index,本来不想添加全局变量的,没有办法
     private HashMap<String, String> dbFindCondition;
+    private View mRootLL;
+    private boolean isAutoSwitch = false;
 
     //TODO 重写方法实现自定义的 BillPresenter,必须继承于BillPresenter
     public BillPresenter newBillPresenter() {
@@ -196,8 +198,8 @@ public class BillInputActivity extends OABaseActivity implements IBill, BillAdap
         if (needItemDecoration) {
             mRecyclerView.addItemDecoration(new DividerItemDecoration(ct, LinearLayout.VERTICAL));
         }
+        mRootLL = findViewById(R.id.mRootLL);
         if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
-            final View mRootLL = findViewById(R.id.mRootLL);
             mRootLL.post(new Runnable() {
                 @Override
                 public void run() {
@@ -258,6 +260,7 @@ public class BillInputActivity extends OABaseActivity implements IBill, BillAdap
     @Override
     public void addTopLayout(View... view) {
         if (view != null && view.length > 0) {
+            mTopLayout.removeAllViews();
             mTopLayout.addView(view[0]);
 
             if (view.length > 1 && view[1] instanceof TabLayout) {
@@ -266,12 +269,25 @@ public class BillInputActivity extends OABaseActivity implements IBill, BillAdap
                     mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                         @Override
                         public void onTabSelected(TabLayout.Tab tab) {
-                            int tabPosition = tab.getPosition();
+                            final int tabPosition = tab.getPosition();
                             if (mBillAdapter != null && mBillAdapter.mTabIndex != -1
-                                    && tabPosition != mBillAdapter.mTabPosition) {
-                                mBillAdapter.switchTabData(tabPosition);
-                                mBillAdapter.notifyDataSetChanged();
-                                mRecyclerView.scrollToPosition(mBillAdapter.mTabIndex);
+                                    && (isAutoSwitch || tabPosition != mBillAdapter.mTabPosition)) {
+                                if (isAutoSwitch) {
+                                    //自动切换到选中tab的数据源
+                                    new Handler().postDelayed(new Runnable() {
+                                        @Override
+                                        public void run() {
+                                            mBillAdapter.switchTabData(tabPosition);
+                                            mBillAdapter.notifyDataSetChanged();
+                                            mRecyclerView.scrollToPosition(mBillAdapter.mTabIndex);
+                                        }
+                                    }, 100);
+                                } else {
+                                    mBillAdapter.switchTabData(tabPosition);
+                                    mBillAdapter.notifyDataSetChanged();
+                                    mRecyclerView.scrollToPosition(mBillAdapter.mTabIndex);
+                                }
+                                isAutoSwitch = false;
                             }
                         }
 
@@ -285,8 +301,14 @@ public class BillInputActivity extends OABaseActivity implements IBill, BillAdap
 
                         }
                     });
+                    if (mBillAdapter != null && mTabLayout.getTabCount() > mBillAdapter.mTabPosition) {
+                        isAutoSwitch = true;
+                        mTabLayout.getTabAt(mBillAdapter.mTabPosition).select();
+                    }
                 }
             }
+//            mTopLayout.invalidate();
+//            mRootLL.invalidate();
         } else {
             mTopLayout.setVisibility(View.GONE);
             mTopLayout.removeAllViews();

+ 134 - 74
app_modular/apputils/src/main/java/com/modular/apputils/presenter/BillPresenter.java

@@ -6,9 +6,6 @@ import android.support.annotation.Nullable;
 import android.support.design.widget.TabLayout;
 import android.text.TextUtils;
 import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -34,7 +31,6 @@ import com.modular.apputils.model.BillGroupModel;
 import com.modular.apputils.network.Parameter;
 import com.modular.apputils.network.Tags;
 import com.modular.apputils.presenter.imp.IBill;
-import com.modular.apputils.utils.BillTypeChangeUtils;
 
 import java.io.File;
 import java.io.Serializable;
@@ -57,6 +53,7 @@ public class BillPresenter extends BaseNetPresenter implements OnSmartHttpListen
     public final int SAVE_AND_SUBMIT = 0x12;//保存提交接口
     public final int LOAD_JUDGE_APPROVAL = 0x13;//获取审批人员
     public final int SELECT_APPROVAL = 0x14;//选择审批人
+    public final int SAVE_MAINTENANCE_BILL = 0x15;//养护管理保存
 
     protected IBill iBill;
     protected String mCaller;//当前单据的Caller
@@ -161,12 +158,50 @@ public class BillPresenter extends BaseNetPresenter implements OnSmartHttpListen
 
     protected void saveAndSubmit(List<BillGroupModel.BillModel> formFields, List<BillGroupModel.GridTab> otherGridList, int flag,
                                  String saveUrl, String updateUrl) {
+        if (flag <= 0) {
+            flag = SAVE_AND_SUBMIT;
+        }
         Map<String, Object> formStore = analysisForm(formFields);
 
         if (formStore == null) {
             iBill.dimssLoading();
             return;
         }
+        List<Map<String, Object>> otherGridStoreList = getOtherGirdList(otherGridList);
+        if (otherGridStoreList == null) {
+            iBill.dimssLoading();
+            return;
+        }
+
+        String formStoreStr = JSON.toJSONString(formStore);
+        String otherGridStoreListStr = JSON.toJSONString(otherGridStoreList);
+
+        LogUtil.prinlnLongMsg("raomengForm", formStoreStr);
+        LogUtil.prinlnLongMsg("raomengGrid", otherGridStoreListStr);
+        try {
+            requestCompanyHttp(new Parameter.Builder()
+                            .url(mId == 0 ? saveUrl : updateUrl)
+                            .mode(Method.POST)
+                            .addParams("caller", mCaller)
+                            .addParams("keyid", String.valueOf(mId))
+                            .addParams("id", String.valueOf(mId))
+                            .addParams("formStore", formStoreStr)
+                            .addParams("othergridStore", otherGridStoreListStr)
+                            .record(flag)
+                    , this);
+        } catch (Exception e) {
+            iBill.dimssLoading();
+            iBill.showToast("网络请求异常");
+        }
+    }
+
+    /**
+     * 解析多从表
+     *
+     * @param otherGridList
+     * @return
+     */
+    protected List<Map<String, Object>> getOtherGirdList(List<BillGroupModel.GridTab> otherGridList) {
         List<Map<String, Object>> otherGridStoreList = new ArrayList<>();
         for (BillGroupModel.GridTab gridTab : otherGridList) {
             if (gridTab != null) {
@@ -189,7 +224,7 @@ public class BillPresenter extends BaseNetPresenter implements OnSmartHttpListen
                     }
                     List<Map<String, Object>> otherGridStoreItem = analysisGrid(otherGridMap);
                     if (otherGridStoreItem == null) {
-                        return;
+                        return null;
                     }
 
                     String otherGridStoreItemStr = JSON.toJSONString(otherGridStoreItem);
@@ -203,27 +238,7 @@ public class BillPresenter extends BaseNetPresenter implements OnSmartHttpListen
                 }
             }
         }
-
-        String formStoreStr = JSON.toJSONString(formStore);
-        String otherGridStoreListStr = JSON.toJSONString(otherGridStoreList);
-
-        LogUtil.prinlnLongMsg("raomengForm", formStoreStr);
-        LogUtil.prinlnLongMsg("raomengGrid", otherGridStoreListStr);
-        try {
-            requestCompanyHttp(new Parameter.Builder()
-                            .url(mId == 0 ? saveUrl : updateUrl)
-                            .mode(Method.POST)
-                            .addParams("caller", mCaller)
-                            .addParams("keyid", String.valueOf(mId))
-                            .addParams("id", String.valueOf(mId))
-                            .addParams("formStore", formStoreStr)
-                            .addParams("othergridStore", otherGridStoreListStr)
-                            .record(SAVE_AND_SUBMIT)
-                    , this);
-        } catch (Exception e) {
-            iBill.dimssLoading();
-            iBill.showToast("网络请求异常");
-        }
+        return otherGridStoreList;
     }
 
     public Map<String, Object> analysisForm(List<BillGroupModel.BillModel> formFields) {
@@ -274,58 +289,24 @@ public class BillPresenter extends BaseNetPresenter implements OnSmartHttpListen
         saveAndSubmit(mGroupModels, "mobile/oa/commonSaveAndSubmit.action", "mobile/commonUpdate.action");
     }
 
+    public void saveAndSubmit(List<BillGroupModel> mGroupModels, int flag) {
+        saveAndSubmit(mGroupModels, flag, "mobile/oa/commonSaveAndSubmit.action", "mobile/commonUpdate.action");
+    }
+
     public void saveAndSubmit(List<BillGroupModel> mGroupModels, String saveUrl, String updateUrl) {
+        saveAndSubmit(mGroupModels, SAVE_AND_SUBMIT, saveUrl, updateUrl);
+    }
+
+    public void saveAndSubmit(List<BillGroupModel> mGroupModels, int flag, String saveUrl, String updateUrl) {
         iBill.showLoading();
-        List<BillGroupModel.BillModel> formFields = new ArrayList<>();
-        List<List<BillGroupModel.BillModel>> gridBillMap = new ArrayList<>();
-        List<BillGroupModel.GridTab> otherGridList = new ArrayList<>();
-        for (BillGroupModel e : mGroupModels) {
-            if (e.isForm()) {
-                if (e.getShowBillFields() != null) {
-                    formFields.addAll(e.getShowBillFields());
-                }
-                if (e.getHideBillFields() != null) {
-                    formFields.addAll(e.getHideBillFields());
-                }
-            } else {
-                List<BillGroupModel.GridTab> gridTabs = e.getGridTabs();
-                if (gridTabs != null && gridTabs.size() > 0) {
-                    if (mFormToGrid) {//如果主表放入tab,则主表数据在gridtabs里
-                        List<BillGroupModel> formGroupModels = gridTabs.get(0).getBillGroupModels();
-                        if (formGroupModels != null && formGroupModels.size() > 0) {
-                            for (BillGroupModel b : formGroupModels) {
-                                if (b.isForm()) {
-                                    if (b.getShowBillFields() != null) {
-                                        formFields.addAll(b.getShowBillFields());
-                                    }
-                                    if (b.getHideBillFields() != null) {
-                                        formFields.addAll(b.getHideBillFields());
-                                    }
-                                }
-                            }
-                        }
-                        if (gridTabs.size() > 1) {
-                            otherGridList = gridTabs.subList(1, gridTabs.size());
-                        }
-                    } else {
-                        otherGridList = gridTabs;
-                    }
-                    break;
-                }
-                List<BillGroupModel.BillModel> gridBillFields = new ArrayList<>();
-                if (e.getShowBillFields() != null) {
-                    gridBillFields.addAll(e.getShowBillFields());
-                }
-                if (e.getHideBillFields() != null) {
-                    gridBillFields.addAll(e.getHideBillFields());
-                }
-                gridBillMap.add(gridBillFields);
-            }
-        }
+        BillField billField = new BillField(mGroupModels).invoke();
+        List<BillGroupModel.BillModel> formFields = billField.getFormFields();
+        List<List<BillGroupModel.BillModel>> gridBillMap = billField.getGridBillMap();
+        List<BillGroupModel.GridTab> otherGridList = billField.getOtherGridList();
         if (otherGridList == null || otherGridList.size() <= 0) {
             saveAndSubmit(formFields, gridBillMap, saveUrl, updateUrl);
         } else {
-            saveAndSubmit(formFields, otherGridList, 0, saveUrl, updateUrl);
+            saveAndSubmit(formFields, otherGridList, flag, saveUrl, updateUrl);
         }
     }
 
@@ -692,6 +673,9 @@ public class BillPresenter extends BaseNetPresenter implements OnSmartHttpListen
                             } else {
                                 tabLayout.setTabMode(TabLayout.MODE_FIXED);
                             }
+                            if (tabLayout.getTabCount() > 0) {
+                                tabLayout.getTabAt(0).select();
+                            }
                         }
 
                         iBill.addTopLayout(topLayout, tabLayout);
@@ -715,7 +699,7 @@ public class BillPresenter extends BaseNetPresenter implements OnSmartHttpListen
             LogUtil.i("gong", "showBillModels=" + JSON.toJSONString(showBillModels));
             iBill.setAdapter(showBillModels);
         } catch (Exception e) {
-
+            e.printStackTrace();
         }
         return showBillModels;
     }
@@ -1044,4 +1028,80 @@ public class BillPresenter extends BaseNetPresenter implements OnSmartHttpListen
     public boolean isEnclosureNeedSubmit(BillGroupModel.BillModel billModel) {
         return billModel.getType().equals("FF") && TextUtils.isEmpty(billModel.getValue()) && !ListUtils.isEmpty(billModel.getLocalDatas());
     }
+
+    /**
+     * 单据数据解析
+     */
+    public class BillField {
+        private List<BillGroupModel> mMGroupModels;
+        private List<BillGroupModel.BillModel> mFormFields;
+        private List<List<BillGroupModel.BillModel>> mGridBillMap;
+        private List<BillGroupModel.GridTab> mOtherGridList;
+
+        public BillField(List<BillGroupModel> mGroupModels) {
+            mMGroupModels = mGroupModels;
+        }
+
+        public List<BillGroupModel.BillModel> getFormFields() {
+            return mFormFields;
+        }
+
+        public List<List<BillGroupModel.BillModel>> getGridBillMap() {
+            return mGridBillMap;
+        }
+
+        public List<BillGroupModel.GridTab> getOtherGridList() {
+            return mOtherGridList;
+        }
+
+        public BillField invoke() {
+            mFormFields = new ArrayList<>();
+            mGridBillMap = new ArrayList<>();
+            mOtherGridList = new ArrayList<>();
+            for (BillGroupModel e : mMGroupModels) {
+                if (e.isForm()) {
+                    if (e.getShowBillFields() != null) {
+                        mFormFields.addAll(e.getShowBillFields());
+                    }
+                    if (e.getHideBillFields() != null) {
+                        mFormFields.addAll(e.getHideBillFields());
+                    }
+                } else {
+                    List<BillGroupModel.GridTab> gridTabs = e.getGridTabs();
+                    if (gridTabs != null && gridTabs.size() > 0) {
+                        if (mFormToGrid) {//如果主表放入tab,则主表数据在gridtabs里
+                            List<BillGroupModel> formGroupModels = gridTabs.get(0).getBillGroupModels();
+                            if (formGroupModels != null && formGroupModels.size() > 0) {
+                                for (BillGroupModel b : formGroupModels) {
+                                    if (b.isForm()) {
+                                        if (b.getShowBillFields() != null) {
+                                            mFormFields.addAll(b.getShowBillFields());
+                                        }
+                                        if (b.getHideBillFields() != null) {
+                                            mFormFields.addAll(b.getHideBillFields());
+                                        }
+                                    }
+                                }
+                            }
+                            if (gridTabs.size() > 1) {
+                                mOtherGridList = gridTabs.subList(1, gridTabs.size());
+                            }
+                        } else {
+                            mOtherGridList = gridTabs;
+                        }
+                        break;
+                    }
+                    List<BillGroupModel.BillModel> gridBillFields = new ArrayList<>();
+                    if (e.getShowBillFields() != null) {
+                        gridBillFields.addAll(e.getShowBillFields());
+                    }
+                    if (e.getHideBillFields() != null) {
+                        gridBillFields.addAll(e.getHideBillFields());
+                    }
+                    mGridBillMap.add(gridBillFields);
+                }
+            }
+            return this;
+        }
+    }
 }

+ 0 - 0
app_modular/apputils/src/main/res/menu/menu_device_bill_input.xml → app_modular/apputils/src/main/res/menu/menu_device_bill_detail.xml


+ 19 - 0
app_modular/apputils/src/main/res/menu/menu_maintain_bill_input.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <item
+        android:id="@+id/save"
+        android:title="保存"
+        app:showAsAction="always" />
+    <item
+        android:id="@+id/saveAndSubmit"
+        android:title="提交"
+        app:showAsAction="always" />
+    <item
+        android:id="@+id/list"
+        android:icon="@drawable/xlist"
+        android:title="查看列表"
+        app:showAsAction="always" />
+
+</menu>

+ 1 - 3
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/DeviceBillDetailActivity.java

@@ -4,14 +4,12 @@ import android.text.TextUtils;
 import android.view.Menu;
 import android.view.MenuItem;
 
-import com.common.data.ListUtils;
 import com.modular.apputils.activity.BillDetailsActivity;
 import com.modular.apputils.adapter.BillDetailsAdapter;
 import com.modular.apputils.model.BillGroupModel;
 import com.modular.apputils.presenter.BillDetailsPresenter;
 import com.modular.apputils.widget.VeriftyDialog;
 import com.uas.appworks.CRM.erp.presenter.DeviceBillDetailPresenter;
-import com.uas.appworks.CRM.erp.presenter.DeviceDetailPresenter;
 import com.uas.appworks.R;
 import com.uas.appworks.adapter.DeviceDetailAdapter;
 
@@ -36,7 +34,7 @@ public class DeviceBillDetailActivity extends BillDetailsActivity implements Dev
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         if (!TextUtils.isEmpty(status) && !"已审核".equals(status)) {
-            getMenuInflater().inflate(com.modular.apputils.R.menu.menu_device_bill_input, menu);
+            getMenuInflater().inflate(com.modular.apputils.R.menu.menu_device_bill_detail, menu);
             return true;
         }
         return false;

+ 65 - 51
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/DeviceBillInputActivity.java

@@ -42,6 +42,71 @@ public class DeviceBillInputActivity extends BillInputActivity implements IDevic
         return new DeviceBillInputPresenter(ct, this);
     }
 
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        if ("DeviceChange!Maintain".equals(mBillPresenter.getFormCaller())) {
+            getMenuInflater().inflate(com.modular.apputils.R.menu.menu_maintain_bill_input, menu);
+            return true;
+        } else {
+            return super.onCreateOptionsMenu(menu);
+        }
+    }
+
+    @Override
+    public void updateOptionMenu(boolean isAccept) {
+        this.isAccept = isAccept;
+        supportInvalidateOptionsMenu();
+    }
+
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        MenuItem saveItem = menu.findItem(R.id.saveAndSubmit);
+        if ("DeviceChange!Repair".equals(mBillPresenter.getFormCaller()) && !isAccept) {
+            saveItem.setTitle("接单");
+        } else {
+            saveItem.setTitle("提交");
+        }
+        return super.onPrepareOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.list) {
+            if (!CommonUtil.isRepeatClick()) {
+                String caller = mBillPresenter.getFormCaller();
+                String dc_class = null;
+                if (caller.equals("DeviceChange!Use")) {
+                    dc_class = "使用转移";
+                } else if (caller.equals("DeviceChange!Scrap")) {
+                    dc_class = "报废申请";
+                } else if (caller.equals("DeviceChange!Maintain")) {
+                    dc_class = "保养维护";
+                } else if (caller.equals("DeviceChange!Inspect")) {
+                    dc_class = "故障送检";
+                }
+                startActivity(new Intent(ct, DeviceQueryActivity.class)
+                        .putExtra(Constants.FLAG.DEVICE_CALLER, caller)
+                        .putExtra(Constants.FLAG.DEVICE_CLASS, dc_class)
+                        .putExtra(Constants.FLAG.DEVICE_WHICH_PAGE, Constants.FLAG.DEVICE_FROM_COMMON));
+            }
+            return true;
+        } else if (item.getItemId() == R.id.saveAndSubmit) {
+            setResult(0x111);
+            if ("DeviceChange!Repair".equals(mBillPresenter.getFormCaller()) && !isAccept) {
+                ((DeviceBillInputPresenter) mBillPresenter).deviceRepairTaking();
+                return true;
+            } else {
+                return super.onOptionsItemSelected(item);
+            }
+        } else if (item.getItemId() == R.id.save) {
+            ((DeviceBillInputPresenter) mBillPresenter).saveMaintenance(mBillAdapter.getBillGroupModels());
+            return true;
+        } else {
+            return super.onOptionsItemSelected(item);
+        }
+    }
+
     @Override
     public void toSelect(int position, BillGroupModel.BillModel model) {
         String formCaller = mBillPresenter.getFormCaller();
@@ -159,57 +224,6 @@ public class DeviceBillInputActivity extends BillInputActivity implements IDevic
         return "";
     }
 
-    @Override
-    public void updateOptionMenu(boolean isAccept) {
-        this.isAccept = isAccept;
-        supportInvalidateOptionsMenu();
-    }
-
-    @Override
-    public boolean onPrepareOptionsMenu(Menu menu) {
-        MenuItem saveItem = menu.findItem(R.id.saveAndSubmit);
-        if ("DeviceChange!Repair".equals(mBillPresenter.getFormCaller()) && !isAccept) {
-            saveItem.setTitle("接单");
-        } else {
-            saveItem.setTitle("提交");
-        }
-        return super.onPrepareOptionsMenu(menu);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == R.id.list) {
-            if (!CommonUtil.isRepeatClick()) {
-                String caller = mBillPresenter.getFormCaller();
-                String dc_class = null;
-                if (caller.equals("DeviceChange!Use")) {
-                    dc_class = "使用转移";
-                } else if (caller.equals("DeviceChange!Scrap")) {
-                    dc_class = "报废申请";
-                } else if (caller.equals("DeviceChange!Maintain")) {
-                    dc_class = "保养维护";
-                } else if (caller.equals("DeviceChange!Inspect")) {
-                    dc_class = "故障送检";
-                }
-                startActivity(new Intent(ct, DeviceQueryActivity.class)
-                        .putExtra(Constants.FLAG.DEVICE_CALLER, caller)
-                        .putExtra(Constants.FLAG.DEVICE_CLASS, dc_class)
-                        .putExtra(Constants.FLAG.DEVICE_WHICH_PAGE, Constants.FLAG.DEVICE_FROM_COMMON));
-            }
-            return true;
-        } else if (item.getItemId() == com.modular.apputils.R.id.saveAndSubmit) {
-            setResult(0x111);
-            if ("DeviceChange!Repair".equals(mBillPresenter.getFormCaller()) && !isAccept) {
-                ((DeviceBillInputPresenter) mBillPresenter).deviceRepairTaking();
-                return true;
-            } else {
-                return super.onOptionsItemSelected(item);
-            }
-        } else {
-            return super.onOptionsItemSelected(item);
-        }
-    }
-
     @Override
     public void commitSuccess(final int keyValue, String code) {
         ToastMessage("提交成功!");

+ 3 - 0
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/DeviceDataFormAddActivity.java

@@ -2599,6 +2599,9 @@ public class DeviceDataFormAddActivity extends SupportToolBarActivity implements
                     if (!StringUtil.isEmpty(data.getValue()) && isLeave) {
                         model.editText.setText(data.getValue());
                     }
+                    if (editText.getText() != null) {
+                        editText.setSelection(editText.getText().toString().length());
+                    }
                     model.editText.setHint("请输入");
                     if (!TextUtils.isEmpty(data.getAllowblank()) && ("F".equals(data.getAllowblank())
                             || "necessaryField".equals(data.getAllowblank()))) {

+ 94 - 0
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/presenter/DeviceBillInputPresenter.java

@@ -8,6 +8,7 @@ import android.text.TextUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.core.app.Constants;
 import com.core.utils.CommonUtil;
@@ -17,6 +18,7 @@ import com.me.network.app.http.HttpRequest;
 import com.me.network.app.http.Method;
 import com.modular.apputils.adapter.BillAdapter;
 import com.modular.apputils.model.BillGroupModel;
+import com.modular.apputils.network.Tags;
 import com.modular.apputils.presenter.BillPresenter;
 import com.modular.apputils.presenter.imp.IBill;
 import com.uas.appworks.CRM.erp.imp.IDeviceRepairView;
@@ -95,6 +97,23 @@ public class DeviceBillInputPresenter extends BillPresenter {
         }
     }
 
+    @Override
+    public void onSuccess(int what, String message, Tags tag) throws Exception {
+        if (what == SAVE_MAINTENANCE_BILL) {
+            iBill.dimssLoading();
+            iBill.showToast("保存成功");
+            try {
+                JSONObject resultObject = JSON.parseObject(message);
+
+                handlerMultiBill(resultObject);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else {
+            super.onSuccess(what, message, tag);
+        }
+    }
+
     /**
      * 用料从表明细,如果是列表自带的明细行,类型和编号字段不可编辑
      *
@@ -326,4 +345,79 @@ public class DeviceBillInputPresenter extends BillPresenter {
                 });
     }
 
+    /**
+     * 养护管理保存
+     */
+    public void saveMaintenance(List<BillGroupModel> billGroupModels) {
+        iBill.showLoading();
+        BillField billField = new BillField(billGroupModels).invoke();
+        List<BillGroupModel.BillModel> formFields = billField.getFormFields();
+        List<List<BillGroupModel.BillModel>> gridBillMap = billField.getGridBillMap();
+        List<BillGroupModel.GridTab> otherGridList = billField.getOtherGridList();
+
+        Map<String, Object> formStore = analysisForm(formFields);
+        if (formStore == null) {
+            iBill.dimssLoading();
+            return;
+        }
+
+        String formStoreStr = JSON.toJSONString(formStore);
+
+        Map<String, Object> params = new HashMap<>();
+
+        if (otherGridList == null || otherGridList.size() <= 0) {
+            List<Map<String, Object>> gridStoreList = analysisGrid(gridBillMap);
+            if (gridStoreList == null) {
+                iBill.dimssLoading();
+                return;
+            }
+            String gridStoreStr = JSON.toJSONString(gridStoreList);
+            params.put("gridStore", gridStoreStr);
+        } else {
+            List<Map<String, Object>> otherGridStoreList = getOtherGirdList(otherGridList);
+            if (otherGridStoreList == null) {
+                iBill.dimssLoading();
+                return;
+            }
+            String otherGridStoreListStr = JSON.toJSONString(otherGridStoreList);
+            params.put("othergridStore", otherGridStoreListStr);
+        }
+        params.put("caller", mCaller);
+        params.put("keyid", String.valueOf(mId));
+        params.put("id", String.valueOf(mId));
+        params.put("formStore", formStoreStr);
+        String sessionId = CommonUtil.getSharedPreferences(ct, "sessionId");
+        String emCode = CommonUtil.getEmcode();
+        params.put("sessionId", sessionId);
+        params.put("master", CommonUtil.getMaster());
+        params.put("sessionUser", emCode);
+
+        HttpRequest.getInstance().sendRequest(CommonUtil.getAppBaseUrl(ct),
+                new HttpParams.Builder()
+                        .url("mobile/device/saveOrUpdateDeviceChange.action")
+                        .method(Method.POST)
+                        .setParams(params)
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        iBill.dimssLoading();
+                        iBill.showToast("保存成功");
+                        try {
+                            String result = o.toString();
+                            JSONObject resultObject = JSON.parseObject(result);
+                            //这里要更新一下单据id
+                            setmId(JSONUtil.getInt(resultObject, "id"));
+                            handlerMultiBill(resultObject);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                        iBill.dimssLoading();
+                        iBill.showToast(failStr);
+                    }
+                });
+    }
 }

+ 3 - 0
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/form/DataFormDetailActivity.java

@@ -1460,6 +1460,9 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                     if (!StringUtil.isEmpty(data.getValue()) && isLeave) {
                         model.editText.setText(data.getValue());
                     }
+                    if (editText.getText() != null) {
+                        editText.setSelection(editText.getText().toString().length());
+                    }
 
                     //TODO 判断是否允许为空
                     model.editText.setHint("请输入");

+ 3 - 0
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/form/TravelDataFormDetailActivity.java

@@ -1355,6 +1355,9 @@ public class TravelDataFormDetailActivity extends BaseActivity implements View.O
                     if (!StringUtil.isEmpty(data.getValue()) && isLeave) {
                         model.editText.setText(data.getValue());
                     }
+                    if (editText.getText() != null) {
+                        editText.setSelection(editText.getText().toString().length());
+                    }
                     model.editText.setHint("请输入");
                     if (!TextUtils.isEmpty(data.getAllowblank()) && ("F".equals(data.getAllowblank())
                             || "necessaryField".equals(data.getAllowblank()))) {

+ 3 - 0
app_modular/appworks/src/main/java/com/uas/appworks/activity/CommonDataFormActivity.java

@@ -1368,6 +1368,9 @@ public class CommonDataFormActivity extends BaseActivity implements View.OnClick
                     if (!StringUtil.isEmpty(data.getValue()) && isLeave) {
                         model.editText.setText(data.getValue());
                     }
+                    if (editText.getText() != null) {
+                        editText.setSelection(editText.getText().toString().length());
+                    }
                     break;
             }