Эх сурвалжийг харах

智能上架增加总数量, 增加接口调用日志功能

songw 3 сар өмнө
parent
commit
d1d9acee3a

+ 1 - 1
app/build.gradle

@@ -41,7 +41,7 @@ android {
             if (outputFile != null && outputFile.name.endsWith('.apk')) {
                 if (variant.buildType.name == 'release') {
                     def releaseInfo = getVersionName()
-                    fileName = "思拓微${releaseInfo}.apk"
+                    fileName = "思拓微_WMS${releaseInfo}.apk"
 
                 } else if (variant.buildType.name == 'debug') {
                     def debugInfo = getVersionName()

+ 10 - 0
app/src/main/java/com/uas/uas_mes_stw/application/PdaApplication.java

@@ -12,6 +12,7 @@ import com.facebook.stetho.Stetho;
 import com.uas.uas_mes_stw.R;
 import com.uas.uas_mes_stw.util.AndroidUtil;
 import com.uas.uas_mes_stw.util.FakeX509TrustManager;
+import com.uas.uas_mes_stw.util.MyLog;
 import com.uas.uas_mes_stw.util.SoundUtil;
 import com.umeng.analytics.MobclickAgent;
 import com.umeng.commonsdk.UMConfigure;
@@ -89,8 +90,17 @@ public class PdaApplication extends Application {
         mSoundMap.put(SoundUtil.SOUND_SALACIA, mSoundPool.load(this, R.raw.salacia, 1));
         mSoundMap.put(SoundUtil.SOUND_TETHYS, mSoundPool.load(this, R.raw.tethys, 1));
         mSoundMap.put(SoundUtil.SOUND_TITAN, mSoundPool.load(this, R.raw.titan, 1));
+
         //友盟统计SDK
         initUmeng();
+
+        //删除非当天的Log日志, Android8.0以下用不了
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+            MyLog.delNotDayFile();
+        }else {
+            MyLog.isFileCreatedTodayDel();
+        }
+
     }
 
 

+ 2 - 2
app/src/main/java/com/uas/uas_mes_stw/bean/InductionBean.java

@@ -7,8 +7,8 @@ public
 class InductionBean {
 
     private String BAR_ID;
-    private String BAR_CODE;
-    private String BAR_REMAIN;
+    private String BAR_CODE;        //条码
+    private String BAR_REMAIN;      //条码数量
 
     private boolean isCheck = false;
 

+ 3 - 4
app/src/main/java/com/uas/uas_mes_stw/fragment/IndexWareHouseContentFragment.java

@@ -129,7 +129,7 @@ public class IndexWareHouseContentFragment extends BaseFragment implements Adapt
 //                    getFragmentManager().beginTransaction().addToBackStack(null)
 //                            .replace(R.id.container_function_fragment, fragment).commit();
 //                    break;
-                case GloableParams.MENU_STORAGE_BARCODE_INFO_COLLECT:
+                case GloableParams.MENU_STORAGE_BARCODE_INFO_COLLECT:   //条码信息绑定
                     mFragment = new BarcodeInfoCollectFragment();
                     break;
                     //条码数量修改
@@ -144,13 +144,12 @@ public class IndexWareHouseContentFragment extends BaseFragment implements Adapt
                     getFragmentManager().beginTransaction().addToBackStack(null)
                             .replace(R.id.container_function_fragment, fragment).commit();
                     break;
-                case GloableParams.PRODUCTION_LINE_BARCODE_GENERATION:
+                case GloableParams.PRODUCTION_LINE_BARCODE_GENERATION:  //产线条码生成
                     fragment = new ProductionLineBarcodeGenerationFragment();
                     getFragmentManager().beginTransaction().addToBackStack(null)
                             .replace(R.id.container_function_fragment, fragment).commit();
                     break;
-
-                case GloableParams.MENU_STORAGE_STOCK_INFO_COLLECT:
+                case GloableParams.MENU_STORAGE_STOCK_INFO_COLLECT: //库存条码绑定
                     fragment = new InventoryBindingFragment();
                     getFragmentManager().beginTransaction().addToBackStack(null)
                             .replace(R.id.container_function_fragment, fragment).commit();

+ 66 - 55
app/src/main/java/com/uas/uas_mes_stw/fragment/SmartShelvestFragment.java

@@ -84,7 +84,8 @@ public class SmartShelvestFragment extends BaseFragment {
     private ArrayList<InductionBean> mFeededList;
     private CheckBox cb_quanxuan;
     private String barIds = "";     //条码ID
-    private int barNmber = 0;     //条码数量
+    private int barNmber = 0;     //勾选的条码条数
+    private int barTotalQuantity = 0;     //勾选的条码总数量
     private RelativeLayout rl_quanxuan;
 
     private String INNO = "";       //入库单
@@ -94,9 +95,10 @@ public class SmartShelvestFragment extends BaseFragment {
     private RecyclerView rv_muqiancangwei;  //目前仓位List
     private LinearLayout ll_store_info;
     private LinearLayout ll_weishangjia;
-    private TextView tv_rukudan_value,tv_yishangjiawuliao_value,tv_weishangjiawuliao_value,tv_yigouxuanpanshu;
+    private TextView tv_rukudan_value, tv_yishangjiawuliao_value, tv_weishangjiawuliao_value, tv_yigouxuanpanshu;
     private CurrentPositionAdapter currentPositionAdapter;
     private ArrayList<PositionInfo> positionInfos;
+    private TextView tv_yigouxuanzongshuliang;
 
     @Override
     protected int getLayout() {
@@ -132,6 +134,7 @@ public class SmartShelvestFragment extends BaseFragment {
 
         rl_muqiancangwei = mActivity.findViewById(R.id.rl_muqiancangwei);
         rv_muqiancangwei = mActivity.findViewById(R.id.rv_muqiancangwei);
+        tv_yigouxuanzongshuliang = mActivity.findViewById(R.id.tv_yigouxuanzongshuliang);
 
         mBarcodeEditText.requestFocus();
         jsonObject = new org.json.JSONObject();
@@ -220,9 +223,11 @@ public class SmartShelvestFragment extends BaseFragment {
                             if (mFeededList.size() > 0) {
                                 barIds = "";
                                 barNmber = 0;
+                                barTotalQuantity = 0;
                                 for (int i = 0; i < mFeededList.size(); i++) {
                                     mFeededList.get(i).setCheck(true);
-                                    barIds += mFeededList.get(i).getBAR_ID() + "," ;
+                                    barIds += mFeededList.get(i).getBAR_ID() + ",";
+                                    barTotalQuantity += TextUtils.isEmpty(mFeededList.get(i).getBAR_REMAIN()) ? 0 : Integer.getInteger(mFeededList.get(i).getBAR_REMAIN());
                                 }
                                 barNmber = mFeededList.size();
                             }
@@ -230,16 +235,18 @@ public class SmartShelvestFragment extends BaseFragment {
                             if (mFeededList.size() > 0) {
                                 barIds = "";
                                 barNmber = 0;
+                                barTotalQuantity = 0;
                                 for (int i = 0; i < mFeededList.size(); i++) {
                                     mFeededList.get(i).setCheck(false);
                                 }
                             }
                         }
                         tv_yigouxuanpanshu.setText(String.valueOf(barNmber));
+                        tv_yigouxuanzongshuliang.setText(String.valueOf(barTotalQuantity));
                         setAdapter(mFeededList);
                         myAdapter.notifyDataSetChanged();
                     }
-                }catch (Exception e) {
+                } catch (Exception e) {
                     e.printStackTrace();
                 }
             }
@@ -319,7 +326,7 @@ public class SmartShelvestFragment extends BaseFragment {
                             bundle.putString(Constants.FLAG.FLAG_INNO, INNO);
                             bundle.putString(Constants.FLAG.FLAG_INID, INID);
                             bundle.putString(Constants.FLAG.FLAG_UNUPCOUNT, UNUPCOUNT);
-                            bundle.putSerializable(Constants.FLAG.FLAG_UNUPCOUNT_VALUE,(Serializable)list);
+                            bundle.putSerializable(Constants.FLAG.FLAG_UNUPCOUNT_VALUE, (Serializable) list);
                             mFragment.setArguments(bundle);
                             FragmentUtils.switchFragment(SmartShelvestFragment.this, mFragment);
                         }
@@ -428,7 +435,7 @@ public class SmartShelvestFragment extends BaseFragment {
                         tv_rukudan_value.setText(noprodlist.getString("INNO"));  //入库单
                         tv_yishangjiawuliao_value.setText(noprodlist.getString("UPCOUNT"));
                         tv_weishangjiawuliao_value.setText(noprodlist.getString("UNUPCOUNT"));
-                    }else {
+                    } else {
                         ll_store_info.setVisibility(View.GONE);
                     }
                     //目前已放仓位
@@ -446,7 +453,7 @@ public class SmartShelvestFragment extends BaseFragment {
                         }
                         setCurrentPosition(positionInfos);
                         currentPositionAdapter.notifyDataSetChanged();
-                    }else {
+                    } else {
                         rl_muqiancangwei.setVisibility(View.GONE);
                     }
 
@@ -473,7 +480,7 @@ public class SmartShelvestFragment extends BaseFragment {
                         }
                         setAdapter(mFeededList);
                         myAdapter.notifyDataSetChanged();
-                    }else {
+                    } else {
                         clearListData();
                     }
                 }
@@ -737,57 +744,61 @@ public class SmartShelvestFragment extends BaseFragment {
             ((SelectAdapter.ListItemViewHolder) holder).tv_date1.setText("条码:" + mList.get(i).getBAR_CODE());
             ((SelectAdapter.ListItemViewHolder) holder).tv_date2.setText("数量:" + mList.get(i).getBAR_REMAIN());
 
-//            ((SelectAdapter.ListItemViewHolder) holder).cb_danxuan.setChecked(isItemChecked(i));
+            //            ((SelectAdapter.ListItemViewHolder) holder).cb_danxuan.setChecked(isItemChecked(i));
             ((SelectAdapter.ListItemViewHolder) holder).cb_danxuan.setChecked(mList.get(i).isCheck());
 
-//            ((SelectAdapter.ListItemViewHolder) holder).cb_danxuan.setOnClickListener(new View.OnClickListener() {
-//                @Override
-//                public void onClick(View v) {
-//                    if (isItemChecked(i)) {
-//                        setItemChecked(i, false);
-//                    } else {
-//                        setItemChecked(i, true);
-//                    }
-//                }
-//            });
-
-                        ((ListItemViewHolder) holder).cb_danxuan.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
-                            @Override
-                            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-                                try {
-                                     if (buttonView.isPressed()) {   //只有当用户主动点击时才处理选中状态变化
-                                    if (isChecked) {
-                                        if (!TextUtils.isEmpty(barIds)) {
-                                            if (!barIds.contains(mList.get(i).getBAR_ID())) {
-                                                barIds += mList.get(i).getBAR_ID() + ",";
-                                                barNmber++;
-                                            }
-                                        } else {
-                                            barIds = mList.get(i).getBAR_ID() + ",";
-                                            barNmber ++;
-                                        }
-                                    } else {
-                                        boolean checked = cb_quanxuan.isChecked();
-                                        if (checked) {
-                                            cb_quanxuan.setChecked(false);
-                                        }
-                                        if (!TextUtils.isEmpty(barIds)) {
-                                            if (barIds.contains(mList.get(i).getBAR_ID())) {
-                                                int startIndex = barIds.indexOf(mList.get(i).getBAR_ID());
-                                                int endIndex = startIndex + mList.get(i).getBAR_ID().length() + 1;
-                                                // 删除子串
-                                                barIds = barIds.substring(0, startIndex).concat(barIds.substring(endIndex));
-                                                barNmber--;
-                                            }
-                                        }
+            //            ((SelectAdapter.ListItemViewHolder) holder).cb_danxuan.setOnClickListener(new View.OnClickListener() {
+            //                @Override
+            //                public void onClick(View v) {
+            //                    if (isItemChecked(i)) {
+            //                        setItemChecked(i, false);
+            //                    } else {
+            //                        setItemChecked(i, true);
+            //                    }
+            //                }
+            //            });
+
+            ((ListItemViewHolder) holder).cb_danxuan.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+                @Override
+                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                    try {
+                        if (buttonView.isPressed()) {   //只有当用户主动点击时才处理选中状态变化
+                            if (isChecked) {
+                                if (!TextUtils.isEmpty(barIds)) {
+                                    if (!barIds.contains(mList.get(i).getBAR_ID())) {
+                                        barIds += mList.get(i).getBAR_ID() + ",";
+                                        barNmber++;
+                                        barTotalQuantity += TextUtils.isEmpty(mList.get(i).getBAR_REMAIN()) ? 0 : Integer.getInteger(mList.get(i).getBAR_REMAIN());
                                     }
-                                    tv_yigouxuanpanshu.setText(String.valueOf(barNmber));
+                                } else {
+                                    barIds = mList.get(i).getBAR_ID() + ",";
+                                    barNmber++;
+                                    barTotalQuantity = TextUtils.isEmpty(mList.get(i).getBAR_REMAIN())?0:Integer.getInteger(mList.get(i).getBAR_REMAIN());
                                 }
-                                }catch (Exception e) {
-                                    e.printStackTrace();
+                            } else {
+                                boolean checked = cb_quanxuan.isChecked();
+                                if (checked) {
+                                    cb_quanxuan.setChecked(false);
+                                }
+                                if (!TextUtils.isEmpty(barIds)) {
+                                    if (barIds.contains(mList.get(i).getBAR_ID())) {
+                                        int startIndex = barIds.indexOf(mList.get(i).getBAR_ID());
+                                        int endIndex = startIndex + mList.get(i).getBAR_ID().length() + 1;
+                                        // 删除子串
+                                        barIds = barIds.substring(0, startIndex).concat(barIds.substring(endIndex));
+                                        barNmber--;
+                                        barTotalQuantity -= TextUtils.isEmpty(mList.get(i).getBAR_REMAIN())?0:Integer.getInteger(mList.get(i).getBAR_REMAIN());
+                                    }
                                 }
                             }
-                        });
+                            tv_yigouxuanpanshu.setText(String.valueOf(barNmber));
+                            tv_yigouxuanzongshuliang.setText(String.valueOf(barTotalQuantity));
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            });
         }
 
         @Override
@@ -882,7 +893,7 @@ public class SmartShelvestFragment extends BaseFragment {
                 ((ListItemViewHolder) holder).tv_cangwei.setVisibility(View.VISIBLE);
                 ((ListItemViewHolder) holder).tv_rongliang.setVisibility(View.VISIBLE);
                 ((ListItemViewHolder) holder).tv_caozuo.setVisibility(View.VISIBLE);
-            }else {
+            } else {
                 ((ListItemViewHolder) holder).tv_cangwei.setVisibility(View.GONE);
                 ((ListItemViewHolder) holder).tv_rongliang.setVisibility(View.GONE);
                 ((ListItemViewHolder) holder).tv_caozuo.setVisibility(View.GONE);
@@ -896,7 +907,7 @@ public class SmartShelvestFragment extends BaseFragment {
                 ((ListItemViewHolder) holder).tv_caozuo_value.setText("已满仓");
                 ((ListItemViewHolder) holder).tv_caozuo_value.setEnabled(false);
                 ((ListItemViewHolder) holder).tv_caozuo_value.setTextColor(getActivity().getResources().getColor(R.color.gray1));
-            }else {
+            } else {
                 ((ListItemViewHolder) holder).tv_caozuo_value.setText("确认满仓");
                 ((ListItemViewHolder) holder).tv_caozuo_value.setTextColor(getActivity().getResources().getColor(R.color.button_focus));
                 ((ListItemViewHolder) holder).tv_caozuo_value.setEnabled(true);

+ 3 - 1
app/src/main/java/com/uas/uas_mes_stw/util/CommonUtil.java

@@ -677,9 +677,11 @@ public class CommonUtil {
             if (errorMsg != null && errorMsg.exceptionInfo != null) {
                 errorStr = errorMsg.exceptionInfo;
             } else {
-                errorStr = "系统错误";
+                //errorStr = "系统错误";
+                errorStr = new String(volleyError.networkResponse.data);
             }
         }
+        MyLog.d("aaa","响应失败:" + errorStr);
         //振动提示
         makeNotice();
         /*MediaPlayer mp = new MediaPlayer();

+ 63 - 0
app/src/main/java/com/uas/uas_mes_stw/util/FileUtils.java

@@ -15,6 +15,7 @@ import java.io.InputStream;
 import java.security.SecureRandom;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
+import java.util.Calendar;
 
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLContext;
@@ -282,4 +283,66 @@ public class FileUtils {
             return true;
         }
     }
+
+    /**
+     * 判断文件是否为当天创建(使用最后修改时间)
+     * Android 7.0推荐使用此方法
+     */
+    public static boolean isFileCreatedToday(File file) {
+        if (file == null || !file.exists()) {
+            return false;
+        }
+
+        // 获取文件的最后修改时间
+        long lastModified = file.lastModified();
+
+        // 获取当前时间的Calendar
+        Calendar today = Calendar.getInstance();
+
+        // 获取文件时间的Calendar
+        Calendar fileDate = Calendar.getInstance();
+        fileDate.setTimeInMillis(lastModified);
+
+        // 比较年、月、日是否相同
+        return today.get(Calendar.YEAR) == fileDate.get(Calendar.YEAR) &&
+                today.get(Calendar.MONTH) == fileDate.get(Calendar.MONTH) &&
+                today.get(Calendar.DAY_OF_MONTH) == fileDate.get(Calendar.DAY_OF_MONTH);
+    }
+
+    /**
+     * 获取文件创建时间的字符串表示
+     */
+    public static String getFileCreationTimeString(File file) {
+        if (file == null || !file.exists()) {
+            return "文件不存在";
+        }
+
+        long lastModified = file.lastModified();
+        Calendar cal = Calendar.getInstance();
+        cal.setTimeInMillis(lastModified);
+
+        return String.format("%04d-%02d-%02d %02d:%02d:%02d",
+                cal.get(Calendar.YEAR),
+                cal.get(Calendar.MONTH) + 1, // 月份从0开始
+                cal.get(Calendar.DAY_OF_MONTH),
+                cal.get(Calendar.HOUR_OF_DAY),
+                cal.get(Calendar.MINUTE),
+                cal.get(Calendar.SECOND));
+    }
+
+    /**
+     * 格式化文件大小
+     */
+    public static String formatFileSize(long size) {
+        if (size < 1024) {
+            return size + " B";
+        } else if (size < 1024 * 1024) {
+            return String.format("%.2f KB", size / 1024.0);
+        } else if (size < 1024 * 1024 * 1024) {
+            return String.format("%.2f MB", size / (1024.0 * 1024));
+        } else {
+            return String.format("%.2f GB", size / (1024.0 * 1024 * 1024));
+        }
+    }
+
 }

+ 213 - 143
app/src/main/java/com/uas/uas_mes_stw/util/MyLog.java

@@ -1,13 +1,25 @@
 package com.uas.uas_mes_stw.util;
 
 import android.annotation.SuppressLint;
+import android.os.Build;
+import android.support.annotation.RequiresApi;
 import android.util.Log;
 
+import com.uas.uas_mes_stw.application.PdaApplication;
+
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.nio.file.attribute.FileTime;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.Date;
 
 /**
@@ -15,147 +27,205 @@ import java.util.Date;
  */
 @SuppressLint("SimpleDateFormat")
 public class MyLog {
-	public static Boolean MYLOG_SWITCH = false; // 日志文件总开关
-	private static Boolean MYLOG_WRITE_TO_FILE = true;// 日志写入文件开关
-	private static char MYLOG_TYPE = 'v';// 输入日志类型,w代表只输出告警信息等,v代表输出所有信息
-	@SuppressLint("SdCardPath")
-	private static String MYLOG_PATH_SDCARD_DIR1 = "/sdcard/MSShow";    // 日志文件在sdcard中的路径
-	private static String MYLOG_PATH_SDCARD_DIR2 = "/Log";
-	private static String MYLOG_PATH_SDCARD_DIR = MYLOG_PATH_SDCARD_DIR1+MYLOG_PATH_SDCARD_DIR2;
-	private static String MYLOGFILEName = "Log.txt";// 本类输出的日志文件名称
-
-	@SuppressLint("SimpleDateFormat")
-	private static SimpleDateFormat myLogSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 日志的输出格式
-
-	private static boolean isDebug = true;		//普通log的开关
-	private static String TAG = "我的天啊" +"-----------";
-
-	public static void e(String msg){
-		if(isDebug){
-			Log.e(TAG, msg);
-		}
-	}
-
-	public static void w(String msg){
-		if(isDebug){
-			Log.w(TAG, msg);
-		}
-	}
-
-	public static void d(String msg){
-		if(isDebug){
-			Log.d(TAG, msg);
-		}
-	}
-
-	public static void i(String msg){
-		if(isDebug){
-			Log.i(TAG, msg);
-		}
-	}
-
-	public static void w(String tag, Object msg) { // 警告信息
-		log(tag, msg.toString(), 'w');
-	}
-
-	public static void e(String tag, Object msg) { // 错误信息
-		log(tag, msg.toString(), 'e');
-	}
-
-	public static void d(String tag, Object msg) {// 调试信息
-		log(tag, msg.toString(), 'd');
-	}
-
-	public static void i(String tag, Object msg) {//
-		log(tag, msg.toString(), 'i');
-	}
-
-	public static void v(String tag, Object msg) {
-		log(tag, msg.toString(), 'v');
-	}
-
-	public static void w(String tag, String text) {
-		log(tag, text, 'w');
-	}
-
-	public static void e(String tag, String text) {
-		log(tag, text, 'e');
-	}
-
-	public static void d(String tag, String text) {
-		log(tag, text, 'd');
-	}
-
-	public static void i(String tag, String text) {
-		log(tag, text, 'i');
-	}
-
-	public static void v(String tag, String text) {
-		log(tag, text, 'v');
-	}
-
-	/**
-	 * 根据tag, msg和等级,输出日志
-	 */
-	private static void log(String tag, String msg, char level) {
-		msg = "\r\n"+msg;
-		if (MYLOG_SWITCH) {
-			if ('e' == level && ('e' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) { // 输出错误信息
-				Log.e(tag, msg);
-			} else if ('w' == level && ('w' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) {
-				Log.w(tag, msg);
-			} else if ('d' == level && ('d' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) {
-				Log.d(tag, msg);
-			} else if ('i' == level && ('d' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) {
-				Log.i(tag, msg);
-			} else {
-				Log.v(tag, msg);
-			}
-			if (MYLOG_WRITE_TO_FILE) {
-				writeLogtoFile(String.valueOf(level), tag, msg);
-			}
-		}
-	}
-
-	/**
-	 * 打开日志文件并写入日志
-	 * **/
-	private static void writeLogtoFile(String mylogtype, String tag, String text) {// 新建或打开日志文件
-		isExist(MYLOG_PATH_SDCARD_DIR1);
-		isExist(MYLOG_PATH_SDCARD_DIR);
-		Date nowtime = new Date();
-//		String needWriteFiel = logfile.format(nowtime);
-		String needWriteMessage = myLogSdf.format(nowtime) + "    " + mylogtype
-				+ "    " + tag + "    " + text;
-		File file = new File(MYLOG_PATH_SDCARD_DIR, MYLOGFILEName);
-		try {
-			FileWriter filerWriter = new FileWriter(file, true);// 后面这个参数代表是不是要接上文件中原来的数据,不进行覆盖
-			BufferedWriter bufWriter = new BufferedWriter(filerWriter);
-			bufWriter.write(needWriteMessage);
-			bufWriter.newLine();
-			bufWriter.close();
-			filerWriter.close();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * 删除制定的日志文件
-	 * */
-	public static void delFile() {// 删除日志文件
-		File file = new File(MYLOG_PATH_SDCARD_DIR, MYLOGFILEName);
-		if (file.exists()) {
-			file.delete();
-		}
-	}
-
-	public static void isExist(String path) {
-		File file = new File(path);
-		// 判断文件夹是否存在,如果不存在则创建文件夹
-		if (!file.exists()) {
-			file.mkdir();
-		}
-
-	}
+    public static Boolean MYLOG_SWITCH = true; // 日志文件总开关
+    private static Boolean MYLOG_WRITE_TO_FILE = true;// 日志写入文件开关
+    private static char MYLOG_TYPE = 'v';// 输入日志类型,w代表只输出告警信息等,v代表输出所有信息
+    @SuppressLint("SdCardPath")
+//    private static String MYLOG_PATH_SDCARD_DIR1 = "/sdcard/MSShow";    // 日志文件在sdcard中的路径
+//    private static String MYLOG_PATH_SDCARD_DIR1 = "/data/data/" + PdaApplication.getmContext().getPackageName();  //APP包下创建的文件不需要权限
+    private static String MYLOG_PATH_SDCARD_DIR1 = "/sdcard/Android/data/" + PdaApplication.getmContext().getPackageName();  //模拟器的APP包下创建的文件
+    private static String MYLOG_PATH_SDCARD_DIR2 = "/Log";
+    private static String MYLOG_PATH_SDCARD_DIR = MYLOG_PATH_SDCARD_DIR1 + MYLOG_PATH_SDCARD_DIR2;
+    private static String MYLOGFILEName = "Log.txt";// 本类输出的日志文件名称
+
+    @SuppressLint("SimpleDateFormat")
+    private static SimpleDateFormat myLogSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 日志的输出格式
+
+    private static boolean isDebug = true;        //普通log的开关
+    private static String TAG = "英唐" + "-----------";
+
+    public static void e(String msg) {
+        if (isDebug) {
+            Log.e(TAG, msg);
+        }
+    }
+
+    public static void w(String msg) {
+        if (isDebug) {
+            Log.w(TAG, msg);
+        }
+    }
+
+    public static void d(String msg) {
+        if (isDebug) {
+            Log.d(TAG, msg);
+        }
+    }
+
+    public static void i(String msg) {
+        if (isDebug) {
+            Log.i(TAG, msg);
+        }
+    }
+
+    public static void w(String tag, Object msg) { // 警告信息
+        log(tag, msg.toString(), 'w');
+    }
+
+    public static void e(String tag, Object msg) { // 错误信息
+        log(tag, msg.toString(), 'e');
+    }
+
+    public static void d(String tag, Object msg) {// 调试信息
+        log(tag, msg.toString(), 'd');
+    }
+
+    public static void i(String tag, Object msg) {//
+        log(tag, msg.toString(), 'i');
+    }
+
+    public static void v(String tag, Object msg) {
+        log(tag, msg.toString(), 'v');
+    }
+
+    public static void w(String tag, String text) {
+        log(tag, text, 'w');
+    }
+
+    public static void e(String tag, String text) {
+        log(tag, text, 'e');
+    }
+
+    public static void d(String tag, String text) {
+        log(tag, text, 'd');
+    }
+
+    public static void i(String tag, String text) {
+        log(tag, text, 'i');
+    }
+
+    public static void v(String tag, String text) {
+        log(tag, text, 'v');
+    }
+
+    /**
+     * 根据tag, msg和等级,输出日志
+     */
+    private static void log(String tag, String msg, char level) {
+        msg = "\r\n" + msg;
+        if (MYLOG_SWITCH) {
+            if ('e' == level && ('e' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) { // 输出错误信息
+                Log.e(tag, msg);
+            } else if ('w' == level && ('w' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) {
+                Log.w(tag, msg);
+            } else if ('d' == level && ('d' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) {
+                Log.d(tag, msg);
+            } else if ('i' == level && ('d' == MYLOG_TYPE || 'v' == MYLOG_TYPE)) {
+                Log.i(tag, msg);
+            } else {
+                Log.v(tag, msg);
+            }
+            if (MYLOG_WRITE_TO_FILE && 'd' == level) {
+                writeLogtoFile(String.valueOf(level), tag, msg);
+            }
+        }
+    }
+
+    /**
+     * 打开日志文件并写入日志,
+     **/
+    private static void writeLogtoFile(String mylogtype, String tag, String text) {
+    	// 新建或打开日志文件
+        isExist(MYLOG_PATH_SDCARD_DIR1);
+        isExist(MYLOG_PATH_SDCARD_DIR);
+        Date nowtime = new Date();
+        //		String needWriteFiel = logfile.format(nowtime);
+        String needWriteMessage = myLogSdf.format(nowtime) + "    " + mylogtype
+                + "    " + tag + "    " + text;
+        File file = new File(MYLOG_PATH_SDCARD_DIR, MYLOGFILEName);
+        try {
+            FileWriter filerWriter = new FileWriter(file, true);// 后面这个参数代表是不是要接上文件中原来的数据,不进行覆盖
+            BufferedWriter bufWriter = new BufferedWriter(filerWriter);
+            bufWriter.write(needWriteMessage);
+            bufWriter.newLine();
+            bufWriter.close();
+            filerWriter.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 删除制定的日志文件
+     */
+    public static void delFile() {// 删除日志文件
+        File file = new File(MYLOG_PATH_SDCARD_DIR, MYLOGFILEName);
+        if (file.exists()) {
+            file.delete();
+        }
+    }
+
+    public static void isExist(String path) {
+        File file = new File(path);
+        // 判断文件夹是否存在,如果不存在则创建文件夹
+        if (!file.exists()) {
+            file.mkdir();
+        }
+    }
+
+    /**
+     * 取消Android8.0的提示限制
+     */
+    @RequiresApi(api = Build.VERSION_CODES.O)
+    public static void delNotDayFile(){
+        File fileP = new File(MYLOG_PATH_SDCARD_DIR, MYLOGFILEName);
+        if (fileP.exists()) {
+            Path path = Paths.get(MYLOG_PATH_SDCARD_DIR + "/" + MYLOGFILEName); //文件路径
+            try {
+                // 获取文件的属性
+                BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
+                // 获取文件的创建时间
+                FileTime creationTime = attrs.creationTime();
+                // 转换为LocalDateTime以便于比较
+                //将FileTime对象转换为LocalDateTime以便于与当前日期进行比较。这里使用了系统的默认时区(ZoneId.systemDefault())。如果需要特定时区,可以替换为相应的ZoneId。
+                //通过LocalDateTime 的 toLocalDate()方法将时间转换为仅包含日期(忽略时间),然后与当前日期进行比较。
+                LocalDateTime creationDateTime = creationTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                LocalDateTime now = LocalDateTime.now();
+
+                // 比较是否为当天创建
+                if (isToday(creationDateTime)) {
+                    //System.out.println("文件是今天创建的。");
+                } else {
+                    //System.out.println("文件不是今天创建的。");
+                    delFile();  //删除不是当天日期
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    // 辅助方法,检查日期是否为今天
+    @RequiresApi(api = Build.VERSION_CODES.O)
+    private static boolean isToday(LocalDateTime dateTime) {
+        LocalDate today = LocalDate.now();
+        LocalDate fileDate = dateTime.toLocalDate();
+        return today.equals(fileDate);
+    }
+
+    /**
+     * 判断文件是否为当天创建(使用最后修改时间),不同则删除
+     * Android 7.0推荐使用此方法
+     */
+    public static void isFileCreatedTodayDel() {
+        File fileP = new File(MYLOG_PATH_SDCARD_DIR, MYLOGFILEName);
+        if (fileP.exists()) {
+            if (!FileUtils.isFileCreatedToday(fileP)) {
+                delFile();  //删除不是当天创建的日期
+            }
+        }
+    }
+
+
+
 }

+ 3 - 2
app/src/main/java/com/uas/uas_mes_stw/util/VolleyRequest.java

@@ -106,7 +106,7 @@ public class VolleyRequest {
                 Log.e("index",index+"");
             }
         }
-
+        MyLog.d("aaa","*************************" + "\n" + "接口地址:" + url);
         PdaApplication.mRequestQueue.cancelAll(httpParams.getUrl());
 
         stringRequest = new StringRequest(httpParams.getMethod(), url,
@@ -114,7 +114,8 @@ public class VolleyRequest {
                     @Override
                     public void onResponse(String s) {
                         try {
-                            LogUtil.prinlnLongMsg("responseSucc", s);
+                            //LogUtil.prinlnLongMsg("responseSucc", s);
+                            MyLog.d("aaa","响应成功:" + s);
                             httpCallback.onSuccess(httpParams.getFlag(), s);
                         } catch (Exception e) {
                             e.printStackTrace();

+ 3 - 2
app/src/main/java/com/uas/uas_mes_stw/util/VollyRequest.java

@@ -94,7 +94,7 @@ public class VollyRequest {
                 index++;
             }
         }
-        MyLog.e("************" + url + "*****************");
+        MyLog.d("aaa","*************************" + "\n" + "接口地址:" + url);
 
         PdaApplication.mRequestQueue.cancelAll(httpParams.getTag());
 
@@ -103,7 +103,8 @@ public class VollyRequest {
                     @Override
                     public void onResponse(String s) {
                         try {
-                            LogUtil.prinlnLongMsg("responseSucc", s);
+                            //LogUtil.prinlnLongMsg("responseSucc", s);
+                            MyLog.d("aaa","响应成功:" + s);
                             httpCallback.onSuccess(httpParams.getFlag(), s);
                         } catch (Exception e) {
                             e.printStackTrace();

+ 13 - 2
app/src/main/res/layout/fragment_smart_shelves.xml

@@ -288,7 +288,7 @@
                         android:text="全选" />
 
                     <TextView
-                        android:layout_marginStart="40dp"
+                        android:layout_marginStart="18dp"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:text="已勾选条数: " />
@@ -299,11 +299,22 @@
                         android:layout_height="wrap_content"
                         android:text="" />
 
+                    <TextView
+                        android:layout_marginStart="18dp"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="已勾选总数量: " />
+
+                    <TextView
+                        android:id="@+id/tv_yigouxuanzongshuliang"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="" />
+
                 </LinearLayout>
 
             </RelativeLayout>
 
-
             <android.support.v7.widget.RecyclerView
                 android:id="@+id/rv_data"
                 android:layout_width="match_parent"

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -1,5 +1,5 @@
 <resources>
-    <string name="my_app_name">思拓微UAS-WMS</string>
+    <string name="my_app_name">思拓微WMS</string>
     <string name="my_app_name_test">UAS-WMS标准版</string>
     <string name="hello_world">Hello world!</string>
     <string name="action_settings">Settings</string>

+ 2 - 2
build.gradle

@@ -54,8 +54,8 @@ ext {
             targetSdkVersion : 28,
             compileSdkVersion: 28,
             buildToolsVersion: "28.0.3",
-            versionCode      : 38,
-            versionName      : "v1.3.0"
+            versionCode      : 39,
+            versionName      : "v1.3.1"
     ]
 
     depsVersion = [