Browse Source

提交分类: 测试版本;
提交内容: 通用表单更新
当前版本: 正式版本6.6.3
是否冲突: 否

RaoMeng 7 years ago
parent
commit
f3ab6ea2d5

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Thu Jan 03 17:42:18 CST 2019
+#Tue Jan 08 11:19:36 CST 2019
 debugName=971
-versionName=666
+versionName=670
 debugCode=971
-versionCode=221
+versionCode=225

+ 11 - 3
app_modular/apputils/src/main/java/com/modular/apputils/activity/BillDetailsActivity.java

@@ -26,6 +26,7 @@ import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.base.OABaseActivity;
 import com.core.model.SelectBean;
+import com.core.utils.CommonUtil;
 import com.core.utils.ToastUtil;
 import com.core.utils.time.wheel.DateTimePicker;
 import com.core.widget.view.Activity.ImgFileListActivity;
@@ -61,6 +62,7 @@ public class BillDetailsActivity extends OABaseActivity implements IBillDetails,
     protected boolean isMe;//是否是自己的单据
     protected BillUpdatePopup mBillUpdatePopup;
     public int selectPosition = -1;
+    private List<BillGroupModel> mUpdateGroupModels = new ArrayList<>();
 
     public BillDetailsAdapter newBillDetailsAdapter(List<BillGroupModel> groupModels) {
         return new BillDetailsAdapter(ct, groupModels);
@@ -94,7 +96,7 @@ public class BillDetailsActivity extends OABaseActivity implements IBillDetails,
         }*/
 
         if (isMe) {
-            if ("已审核".equals(status)) {
+            if ("已审核".equals(status) || "已转入".equals(status)) {
                 if (mBillDetailsAdapter != null && !ListUtils.isEmpty(mBillDetailsAdapter.getUpdateBillModels())) {
                     getMenuInflater().inflate(com.modular.apputils.R.menu.menu_input_update, menu);
                 }
@@ -121,9 +123,14 @@ public class BillDetailsActivity extends OABaseActivity implements IBillDetails,
                         }
                     });
         } else if (item.getItemId() == R.id.update) {
-            mBillUpdatePopup.update();
             if (mBillDetailsAdapter != null && !ListUtils.isEmpty(mBillDetailsAdapter.getUpdateBillModels())) {
-                mBillUpdatePopup.setGroupModels(mBillDetailsAdapter.getBillGroupModels()).showPopupWindow();
+                try {
+                    mUpdateGroupModels = CommonUtil.deepCopy(mBillDetailsAdapter.getBillGroupModels());
+                } catch (Exception e) {
+                    mUpdateGroupModels = mBillDetailsAdapter.getBillGroupModels();
+                    e.printStackTrace();
+                }
+                mBillUpdatePopup.setGroupModels(mUpdateGroupModels).showPopupWindow();
             } else {
                 toast(getString(R.string.no_fields_to_update));
             }
@@ -244,6 +251,7 @@ public class BillDetailsActivity extends OABaseActivity implements IBillDetails,
 
     @Override
     public void onUpdateConfirm(List<BillGroupModel> billGroupModels) {
+        mUpdateGroupModels = billGroupModels;
         mBillDetailsPresenter.saveAndSubmit(billGroupModels);
     }
 

+ 1 - 1
app_modular/apputils/src/main/java/com/modular/apputils/adapter/BillAdapter.java

@@ -441,7 +441,7 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
             if (model.getType().equals("N")) {
                 mInputViewHolder.valuesEd.setInputType(InputType.TYPE_CLASS_NUMBER);
             } else {
-                mInputViewHolder.valuesEd.setInputType(InputType.TYPE_CLASS_TEXT);
+                mInputViewHolder.valuesEd.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_CLASS_TEXT);
             }
             if (model.getReadOnly().equals("T")) {
                 mInputViewHolder.valuesEd.setFocusable(false);

+ 1 - 1
app_modular/apputils/src/main/java/com/modular/apputils/adapter/BillUpdateAdapter.java

@@ -418,7 +418,7 @@ public class BillUpdateAdapter extends RecyclerView.Adapter<BillUpdateAdapter.Ba
             if (model.getType().equals("N")) {
                 mInputViewHolder.valuesEd.setInputType(InputType.TYPE_CLASS_NUMBER);
             } else {
-                mInputViewHolder.valuesEd.setInputType(InputType.TYPE_CLASS_TEXT);
+                mInputViewHolder.valuesEd.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_CLASS_TEXT);
             }
             if (model.getReadOnly().equals("T")) {
                 mInputViewHolder.valuesEd.setFocusable(false);

+ 6 - 6
app_modular/apputils/src/main/java/com/modular/apputils/model/BillGroupModel.java

@@ -2,6 +2,7 @@ package com.modular.apputils.model;
 
 import com.common.data.StringUtil;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -12,7 +13,7 @@ import java.util.Map;
  * 单据由几个组组成  1.主表可以存在多个组  2.一个明细表由一个组组成
  * 注:由于类中类太多了,后续根据需求进行优化
  */
-public class BillGroupModel {
+public class BillGroupModel implements Serializable {
 
     private boolean isDeleteAble;//是否可以删除
     private boolean isForm;//是否为主表
@@ -176,7 +177,7 @@ public class BillGroupModel {
         mGridTabs = gridTabs;
     }
 
-    public static class BillTitleModel {
+    public static class BillTitleModel implements Serializable{
         private int groupIndex;//组索引
         private boolean isDelete;
         private String showName;
@@ -213,7 +214,7 @@ public class BillGroupModel {
     /**
      * 字段详情
      */
-    public static class BillModel {
+    public static class BillModel implements Serializable{
         private int id;//id
         private int groupIndex;//所在组索引
         private float detno = 1000000;//序号
@@ -431,7 +432,7 @@ public class BillGroupModel {
         }
     }
 
-    public static class GridTab {
+    public static class GridTab implements Serializable{
         private String title;
         private String caller;
         private int position;
@@ -474,12 +475,11 @@ public class BillGroupModel {
     /**
      * 当C类型时候,本地选择数据
      */
-    public static class LocalData {
+    public static class LocalData implements Serializable {
         public String value = "";//显示的值  ||附件时候表示 路径,文件名
         public String display = "";//上传的值 ||附件时候表示上传的附件id
     }
 
-
     public interface Constants {
         String TYPE_TITLE = "LOCAL_TITLE";
         String TYPE_ADD = "LOCAL_ADD";

+ 1 - 1
app_modular/apputils/src/main/java/com/modular/apputils/widget/BillUpdatePopup.java

@@ -35,7 +35,7 @@ public class BillUpdatePopup extends BasePopupWindow implements View.OnClickList
         this.mOnUpdateSelectListener = onUpdateSelectListener;
 
         setAllowDismissWhenTouchOutside(false);
-        setBlurBackgroundEnable(true);
+//        setBlurBackgroundEnable(true);
 
         initViews(context);
 

+ 3 - 1
app_modular/apputils/src/main/res/layout/item_bill_input_select.xml

@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.constraint.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@color/white"

+ 1 - 1
app_modular/apputils/src/main/res/layout/pop_bill_input_update.xml

@@ -6,7 +6,7 @@
     android:layout_height="320dp"
     android:layout_gravity="center"
     android:background="@drawable/shape_b2b_gray_light_line_bg"
-    android:layout_margin="50dp"
+    android:layout_margin="45dp"
     android:orientation="vertical">
 
     <TextView

+ 10 - 3
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/MissionPresenter.java

@@ -27,6 +27,7 @@ import com.core.net.http.http.OnHttpResultListener;
 import com.core.net.http.http.Request;
 import com.core.utils.CommonUtil;
 import com.core.utils.TimeUtils;
+import com.core.utils.ToastUtil;
 import com.core.utils.WorkHandlerUtil;
 import com.uas.applocation.UasLocationHelper;
 import com.uas.applocation.utils.LocationDistanceUtils;
@@ -89,8 +90,8 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
             if (MyApplication.getInstance().isNetworkActive()) {
                 loadMissionPlan();
             } else {
-                loadMissionByDB();
-//                ToastUtil.showToast(MyApplication.getInstance(), R.string.networks_out);
+//                loadMissionByDB();
+                ToastUtil.showToast(MyApplication.getInstance(), R.string.networks_out);
             }
         } else {
             List<MissionModel> models = new ArrayList<>();
@@ -653,7 +654,13 @@ public class MissionPresenter implements IMissionPresenter, OnHttpResultListener
 //                loadMissionByDB();
 
                 iMission.dimssLoading();
-                iMission.showModels(new ArrayList<MissionModel>());
+                List<MissionModel> models = new ArrayList<>();
+                MissionModel entity = new MissionModel();
+                entity.setType(1);
+                entity.setLocation(UasLocationHelper.getInstance().getUASLocation().getName());//当前位置
+                entity.setRecorddate(TimeUtils.f_long_2_str(System.currentTimeMillis()));//当前时间
+                models.add(entity);
+                iMission.showModels(models);
             }
             return; //获取到拜访计划数据
         } else {

+ 4 - 2
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerVisitBillInputActivity.java

@@ -30,7 +30,6 @@ import com.uas.applocation.UasLocationHelper;
 import com.uas.appworks.R;
 import com.uas.appworks.adapter.CustomerVisitBillAdapter;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -273,7 +272,7 @@ public class CustomerVisitBillInputActivity extends BillInputActivity {
                         && mTagMap.get("visitTime") != null
                         && mTagMap.get("longitude") != null
                         && mTagMap.get("latitude") != null
-                ) {
+                        ) {
                     saveOutAddress(mTagMap);
                     hasSubmit = true;
                     mBillGroupModel.setTagMap(null);
@@ -306,6 +305,7 @@ public class CustomerVisitBillInputActivity extends BillInputActivity {
         if (mUUHttpHelper == null) {
             mUUHttpHelper = new UUHttpHelper(CommonUtil.getAppBaseUrl(ct));
         }
+        progressDialog.show();
         mUUHttpHelper.requestCompanyHttp(new Parameter.Builder()
                         .url("mobile/crm/getLngAndLat.action")
                         .addParams("address", address.trim())
@@ -347,6 +347,7 @@ public class CustomerVisitBillInputActivity extends BillInputActivity {
     private OnSmartHttpListener mOnSmartHttpListener = new OnSmartHttpListener() {
         @Override
         public void onSuccess(int what, String message, Tags tag) throws Exception {
+            progressDialog.dismiss();
             switch (what) {
                 case 11:
                     LogUtil.i("gong", "message=" + message);
@@ -394,6 +395,7 @@ public class CustomerVisitBillInputActivity extends BillInputActivity {
 
         @Override
         public void onFailure(int what, String message, Tags tag) throws Exception {
+            progressDialog.dismiss();
             if (what == 13) {
                 saveAddress();
             }

+ 18 - 6
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerVisitDetailsActivity.java

@@ -86,6 +86,7 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
     private List<BillGroupModel> mBillGroupModels;
     private BillUpdatePopup mBillUpdatePopup;
     public int selectPosition = -1;
+    private List<BillGroupModel> mUpdateGroupModels = new ArrayList<>();
 
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
@@ -121,9 +122,14 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
                         }
                     });
         } else if (item.getItemId() == R.id.update) {
-            mBillUpdatePopup.update();
             if (mListAdapter != null && !ListUtils.isEmpty(mListAdapter.getUpdateBillModels())) {
-                mBillUpdatePopup.setGroupModels(mListAdapter.getGroupModels()).showPopupWindow();
+                try {
+                    mUpdateGroupModels = CommonUtil.deepCopy(mListAdapter.getGroupModels());
+                } catch (Exception e) {
+                    mUpdateGroupModels = mListAdapter.getGroupModels();
+                    e.printStackTrace();
+                }
+                mBillUpdatePopup.setGroupModels(mUpdateGroupModels).showPopupWindow();
             } else {
                 toast(R.string.no_fields_to_update);
             }
@@ -441,11 +447,12 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
 
     @Override
     public void onUpdateConfirm(List<BillGroupModel> billGroupModels) {
+        mUpdateGroupModels = billGroupModels;
         saveAndSubmit(billGroupModels);
     }
 
     public void saveAndSubmit(List<BillGroupModel> mGroupModels) {
-        progressDialog.show();
+        showLoading();
         List<BillGroupModel.BillModel> formFields = new ArrayList<>();
         List<List<BillGroupModel.BillModel>> gridBillMap = new ArrayList<>();
         List<BillGroupModel.GridTab> otherGridList = new ArrayList<>();
@@ -487,7 +494,7 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
             if (TextUtils.isEmpty(e.getValue()) && e.getIsdefault() == -1 &&
                     ("necessaryField".equals(e.getAllowBlank()) || "F".equals(e.getAllowBlank()))) {
                 toast(e.getCaption() + "为必填项");
-                progressDialog.dismiss();
+                dimssLoading();
                 return;
             }
             if (isEnclosureNeedSubmit(e)) {
@@ -502,7 +509,7 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
             return;
         }
         if (formStore == null || gridStoreList == null) {
-            progressDialog.dismiss();
+            dimssLoading();
             return;
         }
 
@@ -529,7 +536,7 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
                         .build(), new HttpCallback() {
                     @Override
                     public void onSuccess(int flag, Object o) throws Exception {
-                        progressDialog.dismiss();
+                        dimssLoading();
                         setAdapter(mGroupModels);
 
                         Toast.makeText(ct, R.string.update_success, Toast.LENGTH_SHORT).show();
@@ -537,6 +544,8 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
                         if (mBillUpdatePopup != null) {
                             mBillUpdatePopup.dismiss();
                         }
+
+                        loadFormandGridDetail();
                     }
 
                     @Override
@@ -1016,6 +1025,7 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
     }
 
     protected void handlerSelectDbFind(JSONObject object, int groupId, boolean isForm) {
+        List<BillGroupModel> groupModels = mListAdapter.getGroupModels();
         if (isForm) {
             List<BillGroupModel.BillModel> formBillModels = mBillUpdatePopup.getBillUpdateAdapter().getFormBillModels();
 
@@ -1046,6 +1056,8 @@ public class CustomerVisitDetailsActivity extends OABaseActivity implements Bill
             }
         }
 
+        List<BillGroupModel> groupModels1 = mListAdapter.getGroupModels();
+
         mBillUpdatePopup.getBillUpdateAdapter().notifyDataSetChanged();
     }
 

+ 344 - 298
app_modular/appworks/src/main/java/com/uas/appworks/dao/MissionDao.java

@@ -4,7 +4,7 @@ import android.content.ContentValues;
 import android.database.Cursor;
 import android.database.SQLException;
 import android.database.sqlite.SQLiteDatabase;
-import android.util.Log;
+import android.support.annotation.NonNull;
 
 import com.alibaba.fastjson.JSON;
 import com.baidu.mapapi.model.LatLng;
@@ -14,7 +14,6 @@ import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
-import com.core.app.AppConfig;
 import com.core.app.MyApplication;
 import com.core.db.DatabaseManager;
 import com.core.model.MissionModel;
@@ -37,319 +36,366 @@ import java.util.List;
 
 public class MissionDao {
 
-	private String tibleName = "mission";
-	private static MissionDao instance;
+    private String tibleName = "mission";
+    private static MissionDao instance;
 
-	public static MissionDao getInstance() {
-		if (instance == null) {
-			synchronized (MissionDao.class) {
-				instance = new MissionDao();
-			}
-		}
-		return instance;
-	}
+    public static MissionDao getInstance() {
+        if (instance == null) {
+            synchronized (MissionDao.class) {
+                instance = new MissionDao();
+            }
+        }
+        return instance;
+    }
 
-	public MissionDao() {
-	}
+    public MissionDao() {
+    }
 
 
-	/**
-	 * 修改状态
-	 *
-	 * @param id     id
-	 * @param status 状态值
-	 * @return
-	 */
-	public boolean upStatus(int id, int status) {
-		SQLiteDatabase db = null;
-		long i = 0;
-		try {
-			String master = getMaster();
-			String emcode = getEmcode();
-			if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
-			db = DatabaseManager.getInstance().openDatabase();
-			ContentValues values = new ContentValues();
-			values.put("status", status);
-			String where = "master=? and emcode=? and id=? ";
-			String[] whereArgs = {master, emcode, String.valueOf(id)};
-			i = db.update(tibleName, values, where, whereArgs);
-		} catch (SQLException e) {
-			LogUtil.i("SQLException=" + e.getMessage());
-		} catch (Exception e) {
-			LogUtil.i("Exception=" + e.getMessage());
-		} finally {
-			if (db != null)
-				DatabaseManager.getInstance().closeDatabase();
-			return i > 0;
-		}
-	}
+    /**
+     * 修改状态
+     *
+     * @param id     id
+     * @param status 状态值
+     * @return
+     */
+    public boolean upStatus(int id, int status) {
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = getMaster();
+            String emcode = getEmcode();
+            if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
+            db = DatabaseManager.getInstance().openDatabase();
+            ContentValues values = new ContentValues();
+            values.put("status", status);
+            String where = "master=? and emcode=? and id=? ";
+            String[] whereArgs = {master, emcode, String.valueOf(id)};
+            i = db.update(tibleName, values, where, whereArgs);
+        } catch (SQLException e) {
+            LogUtil.i("SQLException=" + e.getMessage());
+        } catch (Exception e) {
+            LogUtil.i("Exception=" + e.getMessage());
+        } finally {
+            if (db != null)
+                DatabaseManager.getInstance().closeDatabase();
+            return i > 0;
+        }
+    }
 
-	//获取当天全部数据
-	public List<MissionModel> queryByEnCode() {
-		SQLiteDatabase db = null;
-		Cursor cursor = null;
-		List<MissionModel> missions = null;
-		try {
-			String master = getMaster();
-			String emcode = getEmcode();
-			String date = DateFormatUtil.long2Str(DateFormatUtil.YMD);
-			if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return missions;
-			db = DatabaseManager.getInstance().openDatabase();
-			String[] columns = {"id", "company",
-					"companyAddr", "latitude",
-					"longitude", "visittime",
-					"realvisitTime", "realLeaveTime",
-					"status", "distance",
-					"location", "recorddate",
-					"remark", "type"};
-			String selection = "master =? and emcode=? and date=?";
-			String[] selecttionArg = {master, emcode, date};
-			cursor = db.query(tibleName, columns, selection, selecttionArg, null, null, null);
-			MissionModel mission = null;
-			missions = new ArrayList<>();
-			while (cursor.moveToNext()) {
-				mission = new MissionModel();
-				mission.setId(cursor.getInt(0));
-				mission.setCompanyName(cursor.getString(1));
-				mission.setCompanyAddr(cursor.getString(2));
-				double latitude = cursor.getDouble(3);
-				double longitude = cursor.getDouble(4);
-				if (latitude > 0 && longitude > 0)
-					mission.setLatLng(new LatLng(latitude, longitude));
-				mission.setVisitTime(cursor.getString(5));
-				mission.setRealTime(cursor.getString(6));
-				mission.setRealLeave(cursor.getString(7));
-				mission.setStatus(cursor.getInt(8));
-				mission.setDistance(cursor.getDouble(9));
-				mission.setLocation(cursor.getString(10));
-				mission.setRecorddate(cursor.getString(11));
-				mission.setRemark(cursor.getString(12));
-				mission.setType(cursor.getInt(13));
-				missions.add(mission);
-			}
-			cursor.close();
-		} catch (SQLException e) {
-			LogUtil.i("SQLException=" + e.getMessage());
-		} catch (Exception e) {
-			LogUtil.i("Exception=" + e.getMessage());
-		} finally {
-			if (db != null)
-				DatabaseManager.getInstance().closeDatabase();
-			return missions;
-		}
-	}
+    //获取当天全部数据
+    public List<MissionModel> queryByEnCode() {
+        SQLiteDatabase db = null;
+        List<MissionModel> missions = null;
+        try {
+            String master = getMaster();
+            String emcode = getEmcode();
+            if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return missions;
+            db = DatabaseManager.getInstance().openDatabase();
 
-	public boolean updataOrCreate(MissionModel mission) {
-		if (mission == null || StringUtil.isEmpty(mission.getVisitTime())) return false;
-		SQLiteDatabase db = null;
-		long i = 0;
-		try {
-			String master = getMaster();
-			String emcode = getEmcode();
-			if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
-			db = DatabaseManager.getInstance().openDatabase();
-			ContentValues values = null;
-			LogUtil.i("MissionPlanEntity");
-			//对象为空或是拜访时间没有情况下不插入数据库
-			values = new ContentValues();
-			values.put("id", mission.getId());
-			values.put("master", master);
-			values.put("emcode", emcode);
-			values.put("company", mission.getCompanyName());
-			values.put("companyAddr", mission.getCompanyAddr());
-			if (mission.getLatLng() != null) {
-				values.put("latitude", mission.getLatLng().latitude);
-				values.put("longitude", mission.getLatLng().longitude);
-			}
-			values.put("visittime", mission.getVisitTime());
-			values.put("realvisitTime", mission.getRealTime());
-			values.put("realLeaveTime", mission.getRealLeave());
-			values.put("distance", mission.getDistance());
-			values.put("location", mission.getLocation());
-			values.put("remark", mission.getRemark());
-			values.put("recorddate", mission.getRecorddate());
-			values.put("date", getDateByString(mission.getVisitTime()));//拜访日期
-			i = db.insert(tibleName, "status", values);
-			if (i == -1) {
-				String where = "master=? and emcode=? and id=? ";
-				String[] whereArgs = {master, emcode, String.valueOf(mission.getId())};
-				i = db.update(tibleName, values, where, whereArgs);
-				LogUtil.i("update i=" + i);
-			}
-			LogUtil.i("i====" + i);
-		} catch (SQLException e) {
-			LogUtil.i("SQLException=" + e.getMessage());
-		} catch (Exception e) {
-			LogUtil.i("Exception=" + e.getMessage());
-		} finally {
-			if (db != null)
-				DatabaseManager.getInstance().closeDatabase();
-			return i > 0;
-		}
-	}
+            missions = getMissionModels(db, master, emcode);
+        } catch (SQLException e) {
+            LogUtil.i("SQLException=" + e.getMessage());
+        } catch (Exception e) {
+            LogUtil.i("Exception=" + e.getMessage());
+        } finally {
+            if (db != null)
+                DatabaseManager.getInstance().closeDatabase();
+            return missions;
+        }
+    }
 
-	public boolean updataOrCreate(List<MissionModel> entities) {
-		if (ListUtils.isEmpty(entities)) return false;
-		LogUtil.i("updataOrCreate");
-		SQLiteDatabase db = null;
-		long i = 0;
-		try {
-			String master = getMaster();
-			String emcode = getEmcode();
-			if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
-			db = DatabaseManager.getInstance().openDatabase();
-			db.beginTransaction();//开启事务
+    @NonNull
+    private List<MissionModel> getMissionModels(SQLiteDatabase db, String master, String emcode) {
+        String date = DateFormatUtil.long2Str(DateFormatUtil.YMD);
+        String[] columns = {"id", "company",
+                "companyAddr", "latitude",
+                "longitude", "visittime",
+                "realvisitTime", "realLeaveTime",
+                "status", "distance",
+                "location", "recorddate",
+                "remark", "type"};
+        String selection = "master =? and emcode=? and date=?";
+        String[] selecttionArg = {master, emcode, date};
+        Cursor cursor = db.query(tibleName, columns, selection, selecttionArg, null, null, null);
+        MissionModel mission = null;
+        List<MissionModel> missions = new ArrayList<>();
+        while (cursor.moveToNext()) {
+            mission = new MissionModel();
+            mission.setId(cursor.getInt(0));
+            mission.setCompanyName(cursor.getString(1));
+            mission.setCompanyAddr(cursor.getString(2));
+            double latitude = cursor.getDouble(3);
+            double longitude = cursor.getDouble(4);
+            if (latitude > 0 && longitude > 0)
+                mission.setLatLng(new LatLng(latitude, longitude));
+            mission.setVisitTime(cursor.getString(5));
+            mission.setRealTime(cursor.getString(6));
+            mission.setRealLeave(cursor.getString(7));
+            mission.setStatus(cursor.getInt(8));
+            mission.setDistance(cursor.getDouble(9));
+            mission.setLocation(cursor.getString(10));
+            mission.setRecorddate(cursor.getString(11));
+            mission.setRemark(cursor.getString(12));
+            mission.setType(cursor.getInt(13));
+            missions.add(mission);
+        }
+        cursor.close();
+        return missions;
+    }
 
-			ContentValues values = null;
-			for (MissionModel mission : entities) {
-				LogUtil.i("MissionPlanEntity");
-				//对象为空或是拜访时间没有情况下不插入数据库
-				if (mission == null || StringUtil.isEmpty(mission.getVisitTime())) {
-					continue;
-				}
-				values = new ContentValues();
-				values.put("id", mission.getId());
-				values.put("master", master);
-				values.put("emcode", emcode);
-				values.put("company", mission.getCompanyName());
-				values.put("companyAddr", mission.getCompanyAddr());
-				if (mission.getLatLng() != null) {
-					values.put("latitude", mission.getLatLng().latitude);
-					values.put("longitude", mission.getLatLng().longitude);
-				}
-				values.put("visittime", mission.getVisitTime());
-				values.put("realvisitTime", mission.getRealTime());
-				values.put("realLeaveTime", mission.getRealLeave());
-				values.put("distance", mission.getDistance());
-				values.put("location", mission.getLocation());
-				values.put("remark", mission.getRemark());
-				values.put("type", mission.getType());
-				values.put("recorddate", mission.getRecorddate());
-				values.put("date", getDateByString(mission.getVisitTime()));//拜访日期
-				i = db.insert(tibleName, "status", values);
-				if (i == -1) {
-					String where = "master=? and emcode=? and id=? ";
-					String[] whereArgs = {master, emcode, String.valueOf(mission.getId())};
-					i = db.update(tibleName, values, where, whereArgs);
-					LogUtil.i("update i=" + i);
-				}
-				LogUtil.i("i====" + i);
-			}
-			db.setTransactionSuccessful();
-		} catch (SQLException e) {
-			LogUtil.i("SQLException=" + e.getMessage());
-		} catch (Exception e) {
-			LogUtil.i("Exception=" + e.getMessage());
-		} finally {
-			db.endTransaction();
-			if (db != null)
-				DatabaseManager.getInstance().closeDatabase();
-			return i > 0;
-		}
-	}
+    public boolean updataOrCreate(MissionModel mission) {
+        if (mission == null || StringUtil.isEmpty(mission.getVisitTime())) return false;
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = getMaster();
+            String emcode = getEmcode();
+            if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
+            db = DatabaseManager.getInstance().openDatabase();
+            ContentValues values = null;
+            LogUtil.i("MissionPlanEntity");
+            //对象为空或是拜访时间没有情况下不插入数据库
+            values = new ContentValues();
+            values.put("id", mission.getId());
+            values.put("master", master);
+            values.put("emcode", emcode);
+            values.put("company", mission.getCompanyName());
+            values.put("companyAddr", mission.getCompanyAddr());
+            if (mission.getLatLng() != null) {
+                values.put("latitude", mission.getLatLng().latitude);
+                values.put("longitude", mission.getLatLng().longitude);
+            }
+            values.put("visittime", mission.getVisitTime());
+            values.put("realvisitTime", mission.getRealTime());
+            values.put("realLeaveTime", mission.getRealLeave());
+            values.put("distance", mission.getDistance());
+            values.put("location", mission.getLocation());
+            values.put("remark", mission.getRemark());
+            values.put("recorddate", mission.getRecorddate());
+            values.put("date", getDateByString(mission.getVisitTime()));//拜访日期
+            i = db.insert(tibleName, "status", values);
+            if (i == -1) {
+                String where = "master=? and emcode=? and id=? ";
+                String[] whereArgs = {master, emcode, String.valueOf(mission.getId())};
+                i = db.update(tibleName, values, where, whereArgs);
+                LogUtil.i("update i=" + i);
+            }
+            LogUtil.i("i====" + i);
+        } catch (SQLException e) {
+            LogUtil.i("SQLException=" + e.getMessage());
+        } catch (Exception e) {
+            LogUtil.i("Exception=" + e.getMessage());
+        } finally {
+            if (db != null)
+                DatabaseManager.getInstance().closeDatabase();
+            return i > 0;
+        }
+    }
 
-	//更新
-	public boolean updata(MissionModel mission) {
-		LogUtil.i("update" + JSON.toJSONString(mission));
-		SQLiteDatabase db = null;
-		long i = 0;
-		try {
-			String master = getMaster();
-			String emcode = getEmcode();
-			if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
-			db = DatabaseManager.getInstance().openDatabase();
-			ContentValues values = new ContentValues();
-			if (mission.getLatLng() != null) {
-				values.put("latitude", mission.getLatLng().latitude);
-				values.put("longitude", mission.getLatLng().longitude);
-			}
-			values.put("visittime", mission.getVisitTime());
-			values.put("realvisitTime", mission.getRealTime());
-			values.put("realLeaveTime", mission.getRealLeave());
-			values.put("status", mission.getStatus());
-			String where = "master=? and emcode=? and id=? ";
-			String[] whereArgs = {master, emcode, String.valueOf(mission.getId())};
-			i = db.update(tibleName, values, where, whereArgs);
-		} catch (SQLException e) {
-			LogUtil.i("SQLException=" + e.getMessage());
-		} catch (Exception e) {
-			LogUtil.i("Exception=" + e.getMessage());
-		} finally {
-			if (db != null)
-				DatabaseManager.getInstance().closeDatabase();
-			return i > 0;
-		}
-	}
+    public boolean updataOrCreate(List<MissionModel> entities) {
+        if (ListUtils.isEmpty(entities)) return false;
+        LogUtil.i("updataOrCreate");
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = getMaster();
+            String emcode = getEmcode();
+            if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
+            db = DatabaseManager.getInstance().openDatabase();
+            db.beginTransaction();//开启事务
 
+            ContentValues values = null;
+            for (MissionModel mission : entities) {
+                LogUtil.i("MissionPlanEntity");
+                //对象为空或是拜访时间没有情况下不插入数据库
+                if (mission == null || StringUtil.isEmpty(mission.getVisitTime())) {
+                    continue;
+                }
+                values = new ContentValues();
+                values.put("id", mission.getId());
+                values.put("master", master);
+                values.put("emcode", emcode);
+                values.put("company", mission.getCompanyName());
+                values.put("companyAddr", mission.getCompanyAddr());
+                if (mission.getLatLng() != null) {
+                    values.put("latitude", mission.getLatLng().latitude);
+                    values.put("longitude", mission.getLatLng().longitude);
+                }
+                values.put("visittime", mission.getVisitTime());
+                values.put("realvisitTime", mission.getRealTime());
+                values.put("realLeaveTime", mission.getRealLeave());
+                values.put("distance", mission.getDistance());
+                values.put("location", mission.getLocation());
+                values.put("remark", mission.getRemark());
+                values.put("type", mission.getType());
+                values.put("recorddate", mission.getRecorddate());
+                values.put("date", getDateByString(mission.getVisitTime()));//拜访日期
+                i = db.insert(tibleName, "status", values);
+                if (i == -1) {
+                    String where = "master=? and emcode=? and id=? ";
+                    String[] whereArgs = {master, emcode, String.valueOf(mission.getId())};
+                    i = db.update(tibleName, values, where, whereArgs);
+                    LogUtil.i("update i=" + i);
+                }
+                LogUtil.i("i====" + i);
+            }
 
-	private String getDateByString(String date) {
-		if (StringUtil.isEmpty(date)) return "";
-		return TimeUtils.s_long_2_str(TimeUtils.f_str_2_long(date));
-	}
+            //删除多余数据
+            List<MissionModel> dbMissions = getMissionModels(db, master, emcode);
+            for (MissionModel dbMission : dbMissions) {
+                boolean exist = false;
+                for (MissionModel mission : entities) {
+                    if (dbMission.getId() == mission.getId()) {
+                        exist = true;
+                        break;
+                    }
+                }
+                if (!exist) {
+                    deleteMission(dbMission.getId() + "", db, master, emcode);
+                }
+            }
 
-	public boolean clearAll(long date) {
-		LogUtil.i("clearAll");
-		SQLiteDatabase db = null;
-		boolean clearOk = false;
-		try {
-			String master = getMaster();
-			String emcode = getEmcode();
-			if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
-			db = DatabaseManager.getInstance().openDatabase();
-			String where = "master=? and emcode=? and date<=?";
-			String[] whereArg = {master, emcode, TimeUtils.s_long_2_str(date)};
-			int i = db.delete(tibleName, where, whereArg);
-			clearOk = i > 0;
-		} catch (SQLException e) {
-			if (e != null)
-				LogUtil.i("clearAll SQLException" + e.getMessage());
-		} catch (Exception e) {
-			if (e != null)
-				LogUtil.i("clearAll Exception" + e.getMessage());
-		} finally {
-			DatabaseManager.getInstance().closeDatabase();
-			return clearOk;
-		}
-	}
+            db.setTransactionSuccessful();
+        } catch (SQLException e) {
+            LogUtil.i("SQLException=" + e.getMessage());
+        } catch (Exception e) {
+            LogUtil.i("Exception=" + e.getMessage());
+        } finally {
+            db.endTransaction();
+            if (db != null)
+                DatabaseManager.getInstance().closeDatabase();
+            return i > 0;
+        }
+    }
 
+    //更新
+    public boolean updata(MissionModel mission) {
+        LogUtil.i("update" + JSON.toJSONString(mission));
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = getMaster();
+            String emcode = getEmcode();
+            if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
+            db = DatabaseManager.getInstance().openDatabase();
+            ContentValues values = new ContentValues();
+            if (mission.getLatLng() != null) {
+                values.put("latitude", mission.getLatLng().latitude);
+                values.put("longitude", mission.getLatLng().longitude);
+            }
+            values.put("visittime", mission.getVisitTime());
+            values.put("realvisitTime", mission.getRealTime());
+            values.put("realLeaveTime", mission.getRealLeave());
+            values.put("status", mission.getStatus());
+            String where = "master=? and emcode=? and id=? ";
+            String[] whereArgs = {master, emcode, String.valueOf(mission.getId())};
+            i = db.update(tibleName, values, where, whereArgs);
+        } catch (SQLException e) {
+            LogUtil.i("SQLException=" + e.getMessage());
+        } catch (Exception e) {
+            LogUtil.i("Exception=" + e.getMessage());
+        } finally {
+            if (db != null)
+                DatabaseManager.getInstance().closeDatabase();
+            return i > 0;
+        }
+    }
 
-	private String getMaster() {
-		boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
-		String master = isB2b ? CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu") : CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
-		return master;
+    public boolean deleteByid(int mpd_id) {
+        if (StringUtil.isEmpty(mpd_id + "")) return false;
+        String id = mpd_id + "";
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = CommonUtil.getMaster();
+            String emcode = CommonUtil.getEmcode();
+            if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
+            db = DatabaseManager.getInstance().openDatabase();
+            i = deleteMission(id, db, master, emcode);
+        } catch (Exception e) {
+        } finally {
+            if (db != null)
+                DatabaseManager.getInstance().closeDatabase();
+            return i > 0;
+        }
+    }
 
-	}
+    private long deleteMission(String id, SQLiteDatabase db, String master, String emcode) {
+        String where = "master=? and emcode=? and id=? ";
+        String[] whereArgs = {master, emcode, id};
+        long i = db.delete(tibleName, where, whereArgs);
+        return i;
+    }
 
-	private String getEmcode() {
-		boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
-		String emcode = isB2b ? CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "b2b_uu") : CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
-		return emcode;
-	}
+    private String getDateByString(String date) {
+        if (StringUtil.isEmpty(date)) return "";
+        return TimeUtils.s_long_2_str(TimeUtils.f_str_2_long(date));
+    }
 
-	public boolean hasMoreMision() {
-		SQLiteDatabase db = null;
-		boolean clearOk = false;
-		try {
-			String master = getMaster();
-			String emcode = getEmcode();
-			if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
-			db = DatabaseManager.getInstance().openDatabase();
-			String[] columns = {"realvisitTime,realLeaveTime"};
-			String selecttion = "master =? and emcode=? and date=? and ( realvisitTime is null or realLeaveTime is null)";
-			String[] selectArg = {master, emcode, TimeUtils.s_long_2_str(System.currentTimeMillis())};
-			Cursor c = db.query(tibleName, columns, selecttion, selectArg, null, null, null);
-			clearOk = c.moveToNext();
-		} catch (SQLException e) {
-			if (e != null)
-				LogUtil.i("clearAll SQLException" + e.getMessage());
-		} catch (Exception e) {
-			if (e != null)
-				LogUtil.i("clearAll Exception" + e.getMessage());
-		} finally {
-			DatabaseManager.getInstance().closeDatabase();
-			return clearOk;
-		}
-	}
+    public boolean clearAll(long date) {
+        LogUtil.i("clearAll");
+        SQLiteDatabase db = null;
+        boolean clearOk = false;
+        try {
+            String master = getMaster();
+            String emcode = getEmcode();
+            if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
+            db = DatabaseManager.getInstance().openDatabase();
+            String where = "master=? and emcode=? and date<=?";
+            String[] whereArg = {master, emcode, TimeUtils.s_long_2_str(date)};
+            int i = db.delete(tibleName, where, whereArg);
+            clearOk = i > 0;
+        } catch (SQLException e) {
+            if (e != null)
+                LogUtil.i("clearAll SQLException" + e.getMessage());
+        } catch (Exception e) {
+            if (e != null)
+                LogUtil.i("clearAll Exception" + e.getMessage());
+        } finally {
+            DatabaseManager.getInstance().closeDatabase();
+            return clearOk;
+        }
+    }
+
+
+    private String getMaster() {
+        boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
+        String master = isB2b ? CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu") : CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+        return master;
+
+    }
+
+    private String getEmcode() {
+        boolean isB2b = ApiUtils.getApiModel() instanceof ApiPlatform;
+        String emcode = isB2b ? CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "b2b_uu") : CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+        return emcode;
+    }
+
+    public boolean hasMoreMision() {
+        SQLiteDatabase db = null;
+        boolean clearOk = false;
+        try {
+            String master = getMaster();
+            String emcode = getEmcode();
+            if (StringUtil.isEmpty(master) || StringUtil.isEmpty(emcode)) return false;
+            db = DatabaseManager.getInstance().openDatabase();
+            String[] columns = {"realvisitTime,realLeaveTime"};
+            String selecttion = "master =? and emcode=? and date=? and ( realvisitTime is null or realLeaveTime is null)";
+            String[] selectArg = {master, emcode, TimeUtils.s_long_2_str(System.currentTimeMillis())};
+            Cursor c = db.query(tibleName, columns, selecttion, selectArg, null, null, null);
+            clearOk = c.moveToNext();
+        } catch (SQLException e) {
+            if (e != null)
+                LogUtil.i("clearAll SQLException" + e.getMessage());
+        } catch (Exception e) {
+            if (e != null)
+                LogUtil.i("clearAll Exception" + e.getMessage());
+        } finally {
+            DatabaseManager.getInstance().closeDatabase();
+            return clearOk;
+        }
+    }
 
 
 }

+ 1 - 1
app_modular/appworks/src/main/res/layout/item_customer_details_3_0.xml

@@ -39,7 +39,7 @@
         <TextView
             android:id="@+id/valuesTv"
             android:layout_width="0dp"
-            android:layout_height="0dp"
+            android:layout_height="wrap_content"
             android:layout_marginLeft="@dimen/padding"
             android:background="@null"
             android:gravity="right|center"