Parcourir la source

去除项目所有"条码号不能包含特殊字符"的限制,合并批次弹窗增加打印功能, 调整打印接口逻辑,合并批次弹窗增加打印功能, 调整合并批次UI.

songw il y a 2 semaines
Parent
commit
05553821ae
27 fichiers modifiés avec 814 ajouts et 197 suppressions
  1. 1 1
      app/build.gradle
  2. 8 0
      app/src/main/java/com/uas/xuslectronic/application/PdaApplication.java
  3. 3 3
      app/src/main/java/com/uas/xuslectronic/bean/WHBreakingBatchBreakingBtnClickEvent.java
  4. 59 5
      app/src/main/java/com/uas/xuslectronic/bean/WHCombineBatchFragmentCombineBtnClickEvent.java
  5. 5 3
      app/src/main/java/com/uas/xuslectronic/fragment/FinishedGoodsCollectFragment.java
  6. 5 3
      app/src/main/java/com/uas/xuslectronic/fragment/FinishedGoodsOutCollectFragment.java
  7. 15 9
      app/src/main/java/com/uas/xuslectronic/fragment/FinishedGoodsOutFragment.java
  8. 15 9
      app/src/main/java/com/uas/xuslectronic/fragment/FinishedGoodsStorageFragment.java
  9. 15 9
      app/src/main/java/com/uas/xuslectronic/fragment/IOCOutMakeMaterial.java
  10. 3 4
      app/src/main/java/com/uas/xuslectronic/fragment/IOCOutMakeMaterialOper.java
  11. 5 3
      app/src/main/java/com/uas/xuslectronic/fragment/InventoryBillFragment.java
  12. 4 3
      app/src/main/java/com/uas/xuslectronic/fragment/MaterialCollectionFragment.java
  13. 15 9
      app/src/main/java/com/uas/xuslectronic/fragment/MaterialStorageFragment.java
  14. 13 10
      app/src/main/java/com/uas/xuslectronic/fragment/ModifyQuantityOutFragment.java
  15. 15 9
      app/src/main/java/com/uas/xuslectronic/fragment/RandomCheckFragment.java
  16. 12 8
      app/src/main/java/com/uas/xuslectronic/fragment/SpecialMaterialOutFragment.java
  17. 4 4
      app/src/main/java/com/uas/xuslectronic/fragment/WHBatchBreakPackageFragment.java
  18. 31 30
      app/src/main/java/com/uas/xuslectronic/fragment/WHBreakingBatchFragment.java
  19. 127 34
      app/src/main/java/com/uas/xuslectronic/fragment/WHCombineBatchFragment.java
  20. 63 0
      app/src/main/java/com/uas/xuslectronic/util/FileUtils.java
  21. 299 0
      app/src/main/java/com/uas/xuslectronic/util/MyLog.java
  22. 32 16
      app/src/main/java/com/uas/xuslectronic/util/PrintUtils.java
  23. 1 1
      app/src/main/res/layout/fragment_barcode_in_collect.xml
  24. 1 1
      app/src/main/res/layout/item_grid_first.xml
  25. 56 21
      app/src/main/res/layout/popupwindow_whcombine_bach.xml
  26. 2 2
      build.gradle
  27. 5 0
      pda_libs/bluetooth/src/main/java/com/uas/bluetooth/PrintHelper.java

+ 1 - 1
app/build.gradle

@@ -41,7 +41,7 @@ android {
             if (outputFile != null && outputFile.name.endsWith('.apk')) {
                 if (variant.buildType.name.equals('release')) {
                     def releaseInfo = getVersionName()
-                    fileName = "xuslectronic_RELEASE_${releaseInfo}.apk"
+                    fileName = "旭顺_仓库_RELEASE_${releaseInfo}.apk"
 
                 } else if (variant.buildType.name.equals('debug')) {
                     def debugInfo = getVersionName()

+ 8 - 0
app/src/main/java/com/uas/xuslectronic/application/PdaApplication.java

@@ -12,6 +12,7 @@ import com.facebook.stetho.Stetho;
 import com.uas.xuslectronic.R;
 import com.uas.xuslectronic.util.AndroidUtil;
 import com.uas.xuslectronic.util.FakeX509TrustManager;
+import com.uas.xuslectronic.util.MyLog;
 import com.uas.xuslectronic.util.SoundUtil;
 import com.umeng.analytics.MobclickAgent;
 import com.umeng.commonsdk.UMConfigure;
@@ -86,6 +87,13 @@ public class PdaApplication extends Application {
         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();
+        }
     }
 
 

+ 3 - 3
app/src/main/java/com/uas/xuslectronic/bean/WHBreakingBatchBreakingBtnClickEvent.java

@@ -38,15 +38,15 @@ public class WHBreakingBatchBreakingBtnClickEvent {
          * BAR_ID : 12
          */
 
-        private double BAR_REMAIN;
+        private String BAR_REMAIN;
         private String BAR_CODE;
         private int BAR_ID;
 
-        public double getBAR_REMAIN() {
+        public String getBAR_REMAIN() {
             return BAR_REMAIN;
         }
 
-        public void setBAR_REMAIN(double BAR_REMAIN) {
+        public void setBAR_REMAIN(String BAR_REMAIN) {
             this.BAR_REMAIN = BAR_REMAIN;
         }
 

+ 59 - 5
app/src/main/java/com/uas/xuslectronic/bean/WHCombineBatchFragmentCombineBtnClickEvent.java

@@ -35,15 +35,69 @@ public class WHCombineBatchFragmentCombineBtnClickEvent {
          * BAR_ID : 12
          */
 
-        private double BAR_REMAIN;
-        private String BAR_CODE;
-        private long BAR_ID;
+        private String BAR_REMAIN;      //总数量
+        private String BAR_CODE;        //条码号
+        private String PR_CODE;         //PN (料号)
+        private String REMAIN;          // QTY 数量
+        private String BAR_LASTPRINTDATE;   //打印日期
+        private String MADEDATE;        //D/C 生产周期
+        private String BAR_PUCODE;      // PO 采购单号
+        private String PR_SPEC;      // DESC 规格
+        private long BAR_ID;    //id
+
+        public String getPR_SPEC() {
+            return PR_SPEC;
+        }
+
+        public void setPR_SPEC(String PR_SPEC) {
+            this.PR_SPEC = PR_SPEC;
+        }
+
+        public String getPR_CODE() {
+            return PR_CODE;
+        }
+
+        public void setPR_CODE(String PR_CODE) {
+            this.PR_CODE = PR_CODE;
+        }
+
+        public String getREMAIN() {
+            return REMAIN;
+        }
+
+        public void setREMAIN(String REMAIN) {
+            this.REMAIN = REMAIN;
+        }
+
+        public String getBAR_LASTPRINTDATE() {
+            return BAR_LASTPRINTDATE;
+        }
+
+        public void setBAR_LASTPRINTDATE(String BAR_LASTPRINTDATE) {
+            this.BAR_LASTPRINTDATE = BAR_LASTPRINTDATE;
+        }
+
+        public String getMADEDATE() {
+            return MADEDATE;
+        }
+
+        public void setMADEDATE(String MADEDATE) {
+            this.MADEDATE = MADEDATE;
+        }
+
+        public String getBAR_PUCODE() {
+            return BAR_PUCODE;
+        }
+
+        public void setBAR_PUCODE(String BAR_PUCODE) {
+            this.BAR_PUCODE = BAR_PUCODE;
+        }
 
-        public double getBAR_REMAIN() {
+        public String getBAR_REMAIN() {
             return BAR_REMAIN;
         }
 
-        public void setBAR_REMAIN(double BAR_REMAIN) {
+        public void setBAR_REMAIN(String BAR_REMAIN) {
             this.BAR_REMAIN = BAR_REMAIN;
         }
 

+ 5 - 3
app/src/main/java/com/uas/xuslectronic/fragment/FinishedGoodsCollectFragment.java

@@ -428,9 +428,11 @@ public class FinishedGoodsCollectFragment extends BaseFragment implements View.O
         String collectStr = mCollectMsgCet.getText().toString().trim();
         if (TextUtils.isEmpty(collectStr)) {
             CommonUtil.toastNoRepeat(getActivity(), "请输入采集号码");
-        } else if (!collectStr.matches(Constants.REGEX.NO_CN_SYMBOL)) {
-            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-        } else {
+        }
+//        else if (!collectStr.matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//        }
+        else {
             if (mCollectModel == 0) {
                 saveToDatabase(collectStr);
             } else if (mCollectModel == 1) {

+ 5 - 3
app/src/main/java/com/uas/xuslectronic/fragment/FinishedGoodsOutCollectFragment.java

@@ -426,9 +426,11 @@ public class FinishedGoodsOutCollectFragment extends BaseFragment implements Vie
         String collectStr = mCollectMsgCet.getText().toString().trim();
         if (TextUtils.isEmpty(collectStr)) {
             CommonUtil.toastNoRepeat(getActivity(), "请输入采集号码");
-        } else if (!collectStr.matches(Constants.REGEX.NO_CN_SYMBOL)) {
-            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-        } else {
+        }
+//        else if (!collectStr.matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//        }
+        else {
             if (mCollectModel == 0) {
                 saveToDatabase(collectStr);
             } else if (mCollectModel == 1) {

+ 15 - 9
app/src/main/java/com/uas/xuslectronic/fragment/FinishedGoodsOutFragment.java

@@ -222,9 +222,11 @@ public class FinishedGoodsOutFragment extends BaseFragment implements View.OnCli
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 if (TextUtils.isEmpty(mStorageCompleteTextView.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), "请输入出库单号");
-                } else if (CommonUtil.isStringContainsSpecialChar(mStorageCompleteTextView.getText().toString().trim())) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                } else {
+                }
+//                else if (CommonUtil.isStringContainsSpecialChar(mStorageCompleteTextView.getText().toString().trim())) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                }
+                else {
                     //判断单号是否已经存在于变量orders中
                     boolean isExist = false;
                     for (int i = 0; i < mFinishedGoodsOutList.size(); i++) {
@@ -253,9 +255,11 @@ public class FinishedGoodsOutFragment extends BaseFragment implements View.OnCli
                         || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                     if (TextUtils.isEmpty(mStorageCompleteTextView.getText().toString().trim())) {
                         CommonUtil.toastNoRepeat(getActivity(), "请输入出库单号");
-                    } else if (CommonUtil.isStringContainsSpecialChar(mStorageCompleteTextView.getText().toString().trim())) {
-                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                    } else {
+                    }
+//                    else if (CommonUtil.isStringContainsSpecialChar(mStorageCompleteTextView.getText().toString().trim())) {
+//                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                    }
+                    else {
                         //判断单号是否已经存在于变量orders中
                         boolean isExist = false;
                         for (int i = 0; i < mFinishedGoodsOutList.size(); i++) {
@@ -689,9 +693,11 @@ public class FinishedGoodsOutFragment extends BaseFragment implements View.OnCli
             case R.id.finished_goods_out_submit_btn:
                 if (TextUtils.isEmpty(mStorageCompleteTextView.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), "请输入出库单号");
-                } else if (CommonUtil.isStringContainsSpecialChar(mStorageCompleteTextView.getText().toString().trim())) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                } else {
+                }
+//                else if (CommonUtil.isStringContainsSpecialChar(mStorageCompleteTextView.getText().toString().trim())) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                }
+                else {
                     //判断单号是否已经存在于变量orders中
                     boolean isExist = false;
                     for (int i = 0; i < mFinishedGoodsOutList.size(); i++) {

+ 15 - 9
app/src/main/java/com/uas/xuslectronic/fragment/FinishedGoodsStorageFragment.java

@@ -245,9 +245,11 @@ public class FinishedGoodsStorageFragment extends BaseFragment implements View.O
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 if (TextUtils.isEmpty(mStorageNumberActv.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), "请输入入库单号");
-                } else if (CommonUtil.isStringContainsSpecialChar(mStorageNumberActv.getText().toString().trim())) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                } else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
+                }
+//                else if (CommonUtil.isStringContainsSpecialChar(mStorageNumberActv.getText().toString().trim())) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                }
+                else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                 } else {
                     //判断单号和仓库组合是否已经存在于变量orders中
@@ -278,9 +280,11 @@ public class FinishedGoodsStorageFragment extends BaseFragment implements View.O
                         || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                     if (TextUtils.isEmpty(mStorageNumberActv.getText().toString().trim())) {
                         CommonUtil.toastNoRepeat(getActivity(), "请输入入库单号");
-                    } else if (CommonUtil.isStringContainsSpecialChar(mStorageNumberActv.getText().toString().trim())) {
-                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                    } else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
+                    }
+//                    else if (CommonUtil.isStringContainsSpecialChar(mStorageNumberActv.getText().toString().trim())) {
+//                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                    }
+                    else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
                         CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                     } else {
                         //判断单号和仓库组合是否已经存在于变量orders中
@@ -699,9 +703,11 @@ public class FinishedGoodsStorageFragment extends BaseFragment implements View.O
             case R.id.Finished_goods_submit_btn:
                 if (TextUtils.isEmpty(mStorageNumberActv.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), "请输入入库单号");
-                } else if (CommonUtil.isStringContainsSpecialChar(mStorageNumberActv.getText().toString().trim())) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                } else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
+                }
+//                else if (CommonUtil.isStringContainsSpecialChar(mStorageNumberActv.getText().toString().trim())) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                }
+                else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                 } else {
                     //判断单号和仓库组合是否已经存在于变量orders中

+ 15 - 9
app/src/main/java/com/uas/xuslectronic/fragment/IOCOutMakeMaterial.java

@@ -174,9 +174,11 @@ public class IOCOutMakeMaterial extends BaseFragment {
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 if (TextUtils.isEmpty(inOutNo.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), "请输入出库单号");
-                } else if (CommonUtil.isStringContainsSpecialChar(inOutNo.getText().toString().trim())) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                } else if (CommonUtil.isStringContainsSpecialChar(whCode.getText().toString().trim())) {
+                }
+//                else if (CommonUtil.isStringContainsSpecialChar(inOutNo.getText().toString().trim())) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                }
+                else if (CommonUtil.isStringContainsSpecialChar(whCode.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                 } else {
                     //判断单号和仓库组合是否已经存在于变量orders中
@@ -206,9 +208,11 @@ public class IOCOutMakeMaterial extends BaseFragment {
                         || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                     if (TextUtils.isEmpty(inOutNo.getText().toString().trim())) {
                         CommonUtil.toastNoRepeat(getActivity(), "请输入出库单号");
-                    } else if (CommonUtil.isStringContainsSpecialChar(inOutNo.getText().toString().trim())) {
-                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                    } else if (CommonUtil.isStringContainsSpecialChar(whCode.getText().toString().trim())) {
+                    }
+//                    else if (CommonUtil.isStringContainsSpecialChar(inOutNo.getText().toString().trim())) {
+//                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                    }
+                    else if (CommonUtil.isStringContainsSpecialChar(whCode.getText().toString().trim())) {
                         CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                     } else {
                         //判断单号和仓库组合是否已经存在于变量orders中
@@ -470,9 +474,11 @@ public class IOCOutMakeMaterial extends BaseFragment {
             case R.id.submit_btn:
                 if (TextUtils.isEmpty(inOutNo.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), "请输入出库单号");
-                } else if (CommonUtil.isStringContainsSpecialChar(inOutNo.getText().toString().trim())) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                } else if (CommonUtil.isStringContainsSpecialChar(whCode.getText().toString().trim())) {
+                }
+//                else if (CommonUtil.isStringContainsSpecialChar(inOutNo.getText().toString().trim())) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                }
+                else if (CommonUtil.isStringContainsSpecialChar(whCode.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                 } else {
                     //判断单号和仓库组合是否已经存在于变量orders中

+ 3 - 4
app/src/main/java/com/uas/xuslectronic/fragment/IOCOutMakeMaterialOper.java

@@ -2040,7 +2040,7 @@ public class IOCOutMakeMaterialOper extends BaseFragment implements View.OnClick
                     WHBreakingBatchBreakingBtnClickEvent.DataBean dataBean = new WHBreakingBatchBreakingBtnClickEvent.DataBean();
 
                     dataBean.setBAR_CODE(JsonUtils.optStringNotNull(barcodeObject, "BAR_CODE"));
-                    dataBean.setBAR_REMAIN(JsonUtils.optDoubleNotNull(barcodeObject, "BAR_REMAIN"));
+                    dataBean.setBAR_REMAIN(JsonUtils.optStringNotNull(barcodeObject, "BAR_REMAIN"));
 
                     messages.add(dataBean);
                 }
@@ -2216,14 +2216,13 @@ public class IOCOutMakeMaterialOper extends BaseFragment implements View.OnClick
         public View getView(int position, View convertView, ViewGroup parent) {
             //WHBreakingBatchBreakingBtnClickEvent.Message target = getItem(position);
             WHBreakingBatchBreakingBtnClickEvent.DataBean person = getItem(position);
-            convertView = LayoutInflater.from(getContext()).inflate(resourceId,
-                    null);
+            convertView = LayoutInflater.from(getContext()).inflate(resourceId, null);
             TextView tv_bar_code = (TextView) convertView.findViewById(R.id.tv_bar_code);
             TextView tv_bar_remain = (TextView) convertView.findViewById(R.id.tv_bar_remain);
             // tv_bar_code.setText(target.bar_code);
             // tv_bar_remain.setText(target.bar_remain);
             tv_bar_code.setText(person.getBAR_CODE());
-            tv_bar_remain.setText(CommonUtil.doubleFormat(person.getBAR_REMAIN()));
+            tv_bar_remain.setText(person.getBAR_REMAIN());
             return convertView;
         }
 

+ 5 - 3
app/src/main/java/com/uas/xuslectronic/fragment/InventoryBillFragment.java

@@ -155,9 +155,11 @@ public class InventoryBillFragment extends BaseFragment {
     private void getStockChecks() {
         if (TextUtils.isEmpty(mNumEdittext.getText().toString().trim())) {
             CommonUtil.toastNoRepeat(getActivity(), "请输入盘点单号");
-        } else if (CommonUtil.isStringContainsSpecialChar(mNumEdittext.getText().toString().trim())) {
-            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-        } else {
+        }
+//        else if (CommonUtil.isStringContainsSpecialChar(mNumEdittext.getText().toString().trim())) {
+//            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//        }
+        else {
             //判断单号和仓库组合是否已经存在于变量orders中
             boolean isExist = false;
             for (int i = 0; i < mBillList.size(); i++) {

+ 4 - 3
app/src/main/java/com/uas/xuslectronic/fragment/MaterialCollectionFragment.java

@@ -354,9 +354,10 @@ public class MaterialCollectionFragment extends BaseFragment {
 //                else if (!materialNum.matches(Constants.REGEX.NO_SYMBOL)) {
 //                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.prodcode_cannot_contain_special));
 //                }
-        else if (!barCode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
-            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-        } else {
+//        else if (!barCode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//        }
+        else {
             String materialNumber = mMaterialNumberEt.getText().toString();
             try {
                 List<TableLPRODIONEEDGET> allMaterialList = null;

+ 15 - 9
app/src/main/java/com/uas/xuslectronic/fragment/MaterialStorageFragment.java

@@ -215,9 +215,11 @@ public class MaterialStorageFragment extends BaseFragment implements TextWatcher
                         || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                     if (TextUtils.isEmpty(mMaterialStorageTv.getText().toString().trim())) {
                         CommonUtil.toastNoRepeat(getActivity(), "请输入入库单号");
-                    } else if (CommonUtil.isStringContainsSpecialChar(mMaterialStorageTv.getText().toString().trim())) {
-                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                    } else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
+                    }
+//                    else if (CommonUtil.isStringContainsSpecialChar(mMaterialStorageTv.getText().toString().trim())) {
+//                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                    }
+                    else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
                         CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                     } else {
                         //判断单号和仓库组合是否已经存在于变量orders中
@@ -247,9 +249,11 @@ public class MaterialStorageFragment extends BaseFragment implements TextWatcher
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 if (TextUtils.isEmpty(mMaterialStorageTv.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), "请输入入库单号");
-                } else if (CommonUtil.isStringContainsSpecialChar(mMaterialStorageTv.getText().toString().trim())) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                } else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
+                }
+//                else if (CommonUtil.isStringContainsSpecialChar(mMaterialStorageTv.getText().toString().trim())) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                }
+                else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                 } else {
                     //判断单号和仓库组合是否已经存在于变量orders中
@@ -745,9 +749,11 @@ public class MaterialStorageFragment extends BaseFragment implements TextWatcher
             case R.id.material_storage_submit_btn:
                 if (TextUtils.isEmpty(mMaterialStorageTv.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), "请输入入库单号");
-                } else if (CommonUtil.isStringContainsSpecialChar(mMaterialStorageTv.getText().toString().trim())) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                } else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
+                }
+//                else if (CommonUtil.isStringContainsSpecialChar(mMaterialStorageTv.getText().toString().trim())) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                }
+                else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                 } else {
                     //判断单号和仓库组合是否已经存在于变量orders中

+ 13 - 10
app/src/main/java/com/uas/xuslectronic/fragment/ModifyQuantityOutFragment.java

@@ -166,9 +166,11 @@ public class ModifyQuantityOutFragment extends BaseFragment {
             CommonUtil.toastNoRepeat(mActivity, "请输入条码数量");
         } else if (!quantity.matches(Constants.REGEX.IS_FLOAT)) {
             CommonUtil.toastNoRepeat(mActivity, "请输入正确的条码数量");
-        } else if (!barcode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
-            CommonUtil.toastNoRepeat(mActivity, getString(R.string.barcode_cannot_contain_special));
-        } else {
+        }
+//        else if (!barcode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//            CommonUtil.toastNoRepeat(mActivity, getString(R.string.barcode_cannot_contain_special));
+//        }
+        else {
             progressDialog.show();
             PdaApplication.mRequestQueue.cancelAll(TAG + "update");
 
@@ -243,13 +245,14 @@ public class ModifyQuantityOutFragment extends BaseFragment {
     private void getBarcodeData() {
         String barcode = mBarcodeEditText.getText().toString().trim();
         if (!TextUtils.isEmpty(barcode)) {
-            if (!barcode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
-                CommonUtil.toastNoRepeat(mActivity, getString(R.string.barcode_cannot_contain_special));
-                mResultTextView.setVisibility(View.VISIBLE);
-                mResultTextView.setText(getString(R.string.barcode_cannot_contain_special));
-                mBarcodeEditText.setText(null);
-                mBarcodeEditText.requestFocus();
-            } else {
+//            if (!barcode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//                CommonUtil.toastNoRepeat(mActivity, getString(R.string.barcode_cannot_contain_special));
+//                mResultTextView.setVisibility(View.VISIBLE);
+//                mResultTextView.setText(getString(R.string.barcode_cannot_contain_special));
+//                mBarcodeEditText.setText(null);
+//                mBarcodeEditText.requestFocus();
+//            } else
+                {
                 mIgnoreFocusChange = true;
                 progressDialog.show();
                 String url = null;

+ 15 - 9
app/src/main/java/com/uas/xuslectronic/fragment/RandomCheckFragment.java

@@ -141,9 +141,11 @@ public class RandomCheckFragment extends BaseFragment implements TextWatcher {
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 if (TextUtils.isEmpty(mRandomCheckTv.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), "请输入入库单号");
-                } else if (CommonUtil.isStringContainsSpecialChar(mRandomCheckTv.getText().toString().trim())) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                } else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
+                }
+//                else if (CommonUtil.isStringContainsSpecialChar(mRandomCheckTv.getText().toString().trim())) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                }
+                else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                 } else {
                     getMaterialMessage();
@@ -159,9 +161,11 @@ public class RandomCheckFragment extends BaseFragment implements TextWatcher {
                         || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                     if (TextUtils.isEmpty(mRandomCheckTv.getText().toString().trim())) {
                         CommonUtil.toastNoRepeat(getActivity(), "请输入入库单号");
-                    } else if (CommonUtil.isStringContainsSpecialChar(mRandomCheckTv.getText().toString().trim())) {
-                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                    } else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
+                    }
+//                    else if (CommonUtil.isStringContainsSpecialChar(mRandomCheckTv.getText().toString().trim())) {
+//                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                    }
+                    else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
                         CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                     } else {
                         getMaterialMessage();
@@ -177,9 +181,11 @@ public class RandomCheckFragment extends BaseFragment implements TextWatcher {
             public void onClick(View v) {
                 if (TextUtils.isEmpty(mRandomCheckTv.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), "请输入入库单号");
-                } else if (CommonUtil.isStringContainsSpecialChar(mRandomCheckTv.getText().toString().trim())) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                } else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
+                }
+//                else if (CommonUtil.isStringContainsSpecialChar(mRandomCheckTv.getText().toString().trim())) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                }
+                else if (CommonUtil.isStringContainsSpecialChar(mWarehouseEt.getText().toString().trim())) {
                     CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.whcode_cannot_contain_special));
                 } else {
                     getMaterialMessage();

+ 12 - 8
app/src/main/java/com/uas/xuslectronic/fragment/SpecialMaterialOutFragment.java

@@ -335,9 +335,10 @@ public class SpecialMaterialOutFragment extends BaseFragment {
     private void specialOut() {
         final String barcode = mBarcodeEditText.getText().toString().trim();
         if (!TextUtils.isEmpty(barcode)) {
-            if (!barcode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
-                CommonUtil.toastNoRepeat(mActivity, getString(R.string.barcode_cannot_contain_special));
-            } else {
+//            if (!barcode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//                CommonUtil.toastNoRepeat(mActivity, getString(R.string.barcode_cannot_contain_special));
+//            } else
+                {
                 progressDialog.show();
 
                 PdaApplication.mRequestQueue.cancelAll(TAG + "specialout");
@@ -659,7 +660,8 @@ public class SpecialMaterialOutFragment extends BaseFragment {
                     WHBreakingBatchBreakingBtnClickEvent.DataBean dataBean = new WHBreakingBatchBreakingBtnClickEvent.DataBean();
 
                     dataBean.setBAR_CODE(JsonUtils.optStringNotNull(barcodeObject, "BAR_CODE"));
-                    dataBean.setBAR_REMAIN(JsonUtils.optDoubleNotNull(barcodeObject, "BAR_REMAIN"));
+//                    dataBean.setBAR_REMAIN(JsonUtils.optDoubleNotNull(barcodeObject, "BAR_REMAIN"));
+                    dataBean.setBAR_REMAIN(JsonUtils.optStringNotNull(barcodeObject, "BAR_REMAIN"));
 
                     messages.add(dataBean);
                 }
@@ -818,9 +820,10 @@ public class SpecialMaterialOutFragment extends BaseFragment {
     private void getBarcodeData() {
         String barcode = mBarcodeEditText.getText().toString().trim();
         if (!TextUtils.isEmpty(barcode)) {
-            if (!barcode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
-                CommonUtil.toastNoRepeat(mActivity, getString(R.string.barcode_cannot_contain_special));
-            } else {
+//            if (!barcode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//                CommonUtil.toastNoRepeat(mActivity, getString(R.string.barcode_cannot_contain_special));
+//            } else
+                {
                 progressDialog.show();
                 String url = "";
                 try {
@@ -903,7 +906,8 @@ public class SpecialMaterialOutFragment extends BaseFragment {
             TextView tv_bar_code = (TextView) convertView.findViewById(R.id.tv_bar_code);
             TextView tv_bar_remain = (TextView) convertView.findViewById(R.id.tv_bar_remain);
             tv_bar_code.setText(person.getBAR_CODE());
-            tv_bar_remain.setText(CommonUtil.doubleFormat(person.getBAR_REMAIN()));
+            //tv_bar_remain.setText(CommonUtil.doubleFormat(person.getBAR_REMAIN()));
+            tv_bar_remain.setText(person.getBAR_REMAIN());
             return convertView;
         }
     }

+ 4 - 4
app/src/main/java/com/uas/xuslectronic/fragment/WHBatchBreakPackageFragment.java

@@ -283,10 +283,10 @@ public class WHBatchBreakPackageFragment extends BaseFragment implements VolleyU
             return;
         }
 
-        if (!strInnerCode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
-            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-            return;
-        }
+//        if (!strInnerCode.matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//            CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//            return;
+//        }
 
         for (int i = 0; i < gridData.size(); i++) {
             OutBox.DetailBean gdbp = gridData.get(i);

+ 31 - 30
app/src/main/java/com/uas/xuslectronic/fragment/WHBreakingBatchFragment.java

@@ -265,17 +265,17 @@ public class WHBreakingBatchFragment extends BaseFragment implements View.OnClic
                         return true;
                     }
 
-                    if (!str.matches(Constants.REGEX.NO_CN_SYMBOL)) {
-                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                        etOrBarcode.setText("");
-                        etOrBarcode.postDelayed(new Runnable() {
-                            @Override
-                            public void run() {
-                                etOrBarcode.requestFocus();
-                            }
-                        }, 100);
-                        return true;
-                    }
+//                    if (!str.matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                        etOrBarcode.setText("");
+//                        etOrBarcode.postDelayed(new Runnable() {
+//                            @Override
+//                            public void run() {
+//                                etOrBarcode.requestFocus();
+//                            }
+//                        }, 100);
+//                        return true;
+//                    }
 
                     CommonUtil.closeKeybord(etOrBarcode, mActivity);
                     //请求详细数据
@@ -475,10 +475,10 @@ public class WHBreakingBatchFragment extends BaseFragment implements View.OnClic
                     Toast.makeText(getActivity().getApplicationContext(), "还有必填项值为空", Toast.LENGTH_SHORT).show();
                     return;
                 }
-                if (!etOrBarcode.getText().toString().trim().matches(Constants.REGEX.NO_CN_SYMBOL)) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                    return;
-                }
+//                if (!etOrBarcode.getText().toString().trim().matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                    return;
+//                }
 //                if (!str.matches(Constants.REGEX.NO_CN_SYMBOL)) {
 //                    CommonUtil.toastNoRepeat(getActivity(), "请输入正确的拆分数量");
 //                    return;
@@ -506,7 +506,8 @@ public class WHBreakingBatchFragment extends BaseFragment implements View.OnClic
             case R.id.btn_back:
                 closePopupWindow();
                 if (messages != null && messages.size() > 0) {
-                    tvOrRemain.setText(CommonUtil.doubleFormat(messages.get(0).getBAR_REMAIN()));
+                    //tvOrRemain.setText(CommonUtil.doubleFormat(messages.get(0).getBAR_REMAIN()));
+                    tvOrRemain.setText(messages.get(0).getBAR_REMAIN());
                     CommonUtil.editTextGetFocus(etBarRemain);
                 }
                 break;
@@ -588,17 +589,17 @@ public class WHBreakingBatchFragment extends BaseFragment implements View.OnClic
                         return;
                     }
 
-                    if (!str.matches(Constants.REGEX.NO_CN_SYMBOL)) {
-                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                        etOrBarcode.setText("");
-                        etOrBarcode.postDelayed(new Runnable() {
-                            @Override
-                            public void run() {
-                                etOrBarcode.requestFocus();
-                            }
-                        }, 100);
-                        return;
-                    }
+//                    if (!str.matches(Constants.REGEX.NO_CN_SYMBOL)) {
+//                        CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                        etOrBarcode.setText("");
+//                        etOrBarcode.postDelayed(new Runnable() {
+//                            @Override
+//                            public void run() {
+//                                etOrBarcode.requestFocus();
+//                            }
+//                        }, 100);
+//                        return;
+//                    }
 
                     CommonUtil.closeKeybord(etOrBarcode, mActivity);
                     //请求详细数据
@@ -785,14 +786,14 @@ public class WHBreakingBatchFragment extends BaseFragment implements View.OnClic
         public View getView(int position, View convertView, ViewGroup parent) {
             //WHBreakingBatchBreakingBtnClickEvent.Message target = getItem(position);
             WHBreakingBatchBreakingBtnClickEvent.DataBean person = getItem(position);
-            convertView = LayoutInflater.from(getContext()).inflate(resourceId,
-                    null);
+            convertView = LayoutInflater.from(getContext()).inflate(resourceId, null);
             TextView tv_bar_code = (TextView) convertView.findViewById(R.id.tv_bar_code);
             TextView tv_bar_remain = (TextView) convertView.findViewById(R.id.tv_bar_remain);
             // tv_bar_code.setText(target.bar_code);
             // tv_bar_remain.setText(target.bar_remain);
             tv_bar_code.setText(person.getBAR_CODE());
-            tv_bar_remain.setText(CommonUtil.doubleFormat(person.getBAR_REMAIN()));
+            //tv_bar_remain.setText(CommonUtil.doubleFormat(person.getBAR_REMAIN()));
+            tv_bar_remain.setText(person.getBAR_REMAIN());
             return convertView;
         }
     }

+ 127 - 34
app/src/main/java/com/uas/xuslectronic/fragment/WHCombineBatchFragment.java

@@ -3,14 +3,12 @@ package com.uas.xuslectronic.fragment;
 import android.app.Activity;
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.graphics.drawable.BitmapDrawable;
 import android.net.Uri;
-import android.os.Build;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.support.v4.content.FileProvider;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.Gravity;
@@ -30,6 +28,8 @@ import android.widget.PopupWindow;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.android.volley.AuthFailureError;
 import com.android.volley.Request;
 import com.android.volley.RequestQueue;
@@ -43,13 +43,17 @@ import com.uas.xuslectronic.activity.FunctionActivity;
 import com.uas.xuslectronic.bean.WHBreakingBatchGetBarcodeData;
 import com.uas.xuslectronic.bean.WHCombineBatchFragmentCombineBtnClickEvent;
 import com.uas.xuslectronic.global.GloableParams;
+import com.uas.xuslectronic.tools.SharedPreUtil;
 import com.uas.xuslectronic.tools.VolleyUtil;
 import com.uas.xuslectronic.util.CameraUtil;
 import com.uas.xuslectronic.util.CommonUtil;
 import com.uas.xuslectronic.util.Constants;
 import com.uas.xuslectronic.util.FileUtils;
+import com.uas.xuslectronic.util.FragmentUtils;
 import com.uas.xuslectronic.util.JsonTools;
 import com.uas.xuslectronic.util.LogUtil;
+import com.uas.xuslectronic.util.MyLog;
+import com.uas.xuslectronic.util.PrintUtils;
 import com.uas.xuslectronic.view.ClearableEditText;
 import com.uuzuche.lib_zxing.activity.CaptureActivity;
 import com.uuzuche.lib_zxing.activity.CodeUtils;
@@ -88,6 +92,13 @@ public class WHCombineBatchFragment extends BaseFragment implements View.OnClick
     private int lastPress = 0;
     private boolean delState = false;
     private String mPrintUrl = "";
+
+    private com.alibaba.fastjson.JSONArray listArray;
+    private boolean isConnected = false;
+    private String mOldAddress = "";
+    private int mPrintDpi = 203;
+    private boolean isPrinting = false;
+
     private Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -149,6 +160,10 @@ public class WHCombineBatchFragment extends BaseFragment implements View.OnClick
         myAdapter = new MyAdapter(getActivity(), R.layout.item_list_whcombatchfragment, dataList);
         listView.setAdapter(myAdapter);
         btnMerge = (Button) root.findViewById(R.id.btn_merge);
+
+        isConnected = (SharedPreUtil.getInt(mActivity, "printConnect", 0) == 1);
+        mOldAddress = SharedPreUtil.getString(mActivity, "printAddress", "");
+        mPrintDpi = SharedPreUtil.getInt(mActivity, "printDpi", 203);
     }
 
     @Override
@@ -312,10 +327,10 @@ public class WHCombineBatchFragment extends BaseFragment implements View.OnClick
                     Toast.makeText(getActivity().getApplicationContext(), "还有必填项值为空", Toast.LENGTH_SHORT).show();
                     return;
                 }
-                if (!str.matches(Constants.REGEX.NO_SYMBOL)) {
-                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
-                    return;
-                }
+//                if (!str.matches(Constants.REGEX.NO_SYMBOL)) {
+//                    CommonUtil.toastNoRepeat(getActivity(), getResources().getString(R.string.barcode_cannot_contain_special));
+//                    return;
+//                }
 
                 for (int i = 0; i < dataList.size(); i++) {
                     if (str.equals(dataList.get(i).getBAR_CODE())) {
@@ -338,30 +353,36 @@ public class WHCombineBatchFragment extends BaseFragment implements View.OnClick
 
                 break;
             case R.id.btn_print:
-                if (!CommonUtil.appIsInstalled(getActivity(), Constants.CONSTANT.PRINT_SHARE_PACKAGE)) {
-                    new android.app.AlertDialog.Builder(getActivity()).setTitle("提示")
-                            .setMessage("您还未安装打印程序,点击确认开始安装")
-                            .setPositiveButton("确认", new DialogInterface.OnClickListener() {
-                                @Override
-                                public void onClick(DialogInterface dialog, int which) {
-                                    Intent intent = new Intent(Intent.ACTION_VIEW);
-                                    File assetsFileToCacheDir = FileUtils.getAssetsFileToCacheDir(getActivity(), "PrinterShare.apk");
-                                    if (Build.VERSION.SDK_INT >= 24) {
-                                        Uri apkUri = FileProvider.getUriForFile(mActivity, "com.uas.xuslectronic", assetsFileToCacheDir);
-                                        //Granting Temporary Permissions to a URI
-                                        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-                                        intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
-                                    } else {
-                                        intent.setDataAndType(Uri.fromFile(assetsFileToCacheDir), "application/vnd.android.package-archive");
-                                    }
-                                    getActivity().startActivity(intent);
-
-                                }
-                            })
-                            .setNegativeButton("取消", null).create().show();
+                if (listArray != null && listArray.size() > 0) {
+                    printEvent(listArray);
                 } else {
-                    getPrintData();
+                    CommonUtil.toastNoRepeat(mActivity, "数据为空");
                 }
+
+//                if (!CommonUtil.appIsInstalled(getActivity(), Constants.CONSTANT.PRINT_SHARE_PACKAGE)) {
+//                    new android.app.AlertDialog.Builder(getActivity()).setTitle("提示")
+//                            .setMessage("您还未安装打印程序,点击确认开始安装")
+//                            .setPositiveButton("确认", new DialogInterface.OnClickListener() {
+//                                @Override
+//                                public void onClick(DialogInterface dialog, int which) {
+//                                    Intent intent = new Intent(Intent.ACTION_VIEW);
+//                                    File assetsFileToCacheDir = FileUtils.getAssetsFileToCacheDir(getActivity(), "PrinterShare.apk");
+//                                    if (Build.VERSION.SDK_INT >= 24) {
+//                                        Uri apkUri = FileProvider.getUriForFile(mActivity, "com.uas.xuslectronic", assetsFileToCacheDir);
+//                                        //Granting Temporary Permissions to a URI
+//                                        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+//                                        intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
+//                                    } else {
+//                                        intent.setDataAndType(Uri.fromFile(assetsFileToCacheDir), "application/vnd.android.package-archive");
+//                                    }
+//                                    getActivity().startActivity(intent);
+//
+//                                }
+//                            })
+//                            .setNegativeButton("取消", null).create().show();
+//                } else {
+//                    getPrintData();
+//                }
                 break;
             case R.id.btn_close:
                 closePopupWindow();
@@ -369,17 +390,70 @@ public class WHCombineBatchFragment extends BaseFragment implements View.OnClick
         }
     }
 
+    private void printEvent(com.alibaba.fastjson.JSONArray printArray) {
+        MyLog.e("aaa","打印的数组是:" + printArray.get(0));
+        if (isPrinting) {
+            CommonUtil.toastNoRepeat(mActivity, "正在打印中,请勿重复操作");
+            return;
+        }
+        isPrinting = true;
+        if (printArray != null && printArray.size() > 0) {
+            boolean isFail = false;
+            for (int i = 0; i < printArray.size(); i++) {
+                try {
+                    com.alibaba.fastjson.JSONObject printObject = printArray.getJSONObject(i);
+                    int printResult = PrintUtils.printBar(mActivity, printObject.toString(), mPrintDpi, null);
+                    if (printResult <= 0) {
+                        isFail = true;
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            closePopupWindow();
+            //closeSplitPopupWindow();
+            //progressDialog.dismiss();
+            if (isFail) {
+                isConnected = false;
+                SharedPreUtil.saveInt(mActivity, "printConnect", 0);
+                CommonUtil.toastNoRepeat(mActivity, "打印失败,请重新连接打印机");
+
+                BlueToothPrintFragment blueToothPrintFragment = new BlueToothPrintFragment();
+
+                Bundle bundle = new Bundle();
+                bundle.putString(Constants.KEY.BARCODE_PRINT_ARRAY, printArray.toString());
+                blueToothPrintFragment.setArguments(bundle);
+                FragmentUtils.switchFragment(WHCombineBatchFragment.this, blueToothPrintFragment);
+            } else {
+                CommonUtil.toastNoRepeat(mActivity, "打印成功");
+            }
+        } else {
+            CommonUtil.toastNoRepeat(mActivity, "打印失败,条码数据为空");
+        }
+        isPrinting = false;
+    }
 
     /**
      * 创建PopupWindow
      */
-    protected void initPopuptWindow(String code, String remain) {
+    protected void initPopuptWindow(WHCombineBatchFragmentCombineBtnClickEvent whc2) {
+
         LayoutInflater inflater = LayoutInflater.from(getActivity());
         popView = inflater.inflate(R.layout.popupwindow_whcombine_bach, null);
+        TextView tv_po = (TextView) popView.findViewById(R.id.tv_po);
+        TextView tv_pn = (TextView) popView.findViewById(R.id.tv_pn);
+        TextView tv_desc = (TextView) popView.findViewById(R.id.tv_desc);
+        TextView tv_dc = (TextView) popView.findViewById(R.id.tv_dc);
+
         TextView tvNewBarCode = (TextView) popView.findViewById(R.id.tv_new_bar_code);
         TextView tvTotal = (TextView) popView.findViewById(R.id.tv_total);
-        tvNewBarCode.setText(code);
-        tvTotal.setText(remain);
+        tvNewBarCode.setText(whc2.getData().getBAR_CODE());
+        tvTotal.setText(whc2.getData().getBAR_REMAIN());
+        tv_po.setText(whc2.getData().getBAR_PUCODE());
+        tv_pn.setText(whc2.getData().getPR_CODE());
+        tv_desc.setText(whc2.getData().getPR_SPEC());
+        tv_dc.setText(whc2.getData().getMADEDATE());
+
         Button btnPrint = (Button) popView.findViewById(R.id.btn_print);
         Button btnClose = (Button) popView.findViewById(R.id.btn_close);
         btnPrint.setOnClickListener(this);
@@ -412,7 +486,6 @@ public class WHCombineBatchFragment extends BaseFragment implements View.OnClick
         }
     }
 
-
     /**
      * 并且获取条码的剩余数量
      */
@@ -497,7 +570,27 @@ public class WHCombineBatchFragment extends BaseFragment implements View.OnClick
                 sum = 0;
                 tvToatal.setText(sum + "");
                 btnMerge.setEnabled(false);
-                initPopuptWindow(whc2.getData().getBAR_CODE(), CommonUtil.doubleFormat(whc2.getData().getBAR_REMAIN()));
+
+                //新增数据
+                com.alibaba.fastjson.JSONObject resultObject = JSON.parseObject(s);
+                com.alibaba.fastjson.JSONObject jb = resultObject.getJSONObject("data");
+
+                List<Object> list = new ArrayList<>();;
+                list.add(jb);
+                JSONArray jsonArray = new JSONArray(list);
+
+                //                for (int i = 0; i < jsonArray.size(); i++) {
+                //                    Object o = jsonArray.get(0);
+                //                    com.alibaba.fastjson.JSONObject jsonObject = jsonArray.getJSONObject(0);
+                //                    MyLog.e("aaa","数据是 Object:" + o);
+                //                    MyLog.e("aaa","数据是 jsonObject:" + jsonObject.toString());
+                //                }
+
+                //listArray = FastjsonUtil.getJSONArray(dataJson.toString(), "nolist");
+                listArray = jsonArray;
+
+                //initPopuptWindow(whc2.getData().getBAR_CODE(), CommonUtil.doubleFormat(whc2.getData().getBAR_REMAIN()));
+                initPopuptWindow(whc2);
             }
         }, new Response.ErrorListener() {
             @Override

+ 63 - 0
app/src/main/java/com/uas/xuslectronic/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));
+        }
+    }
+
 }

+ 299 - 0
app/src/main/java/com/uas/xuslectronic/util/MyLog.java

@@ -0,0 +1,299 @@
+package com.uas.xuslectronic.util;
+
+import android.annotation.SuppressLint;
+import android.os.Build;
+import android.os.Environment;
+import android.support.annotation.RequiresApi;
+import android.util.Log;
+
+import com.uas.xuslectronic.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;
+
+/**
+ * 带日志文件输入,又可控开关的日志调试
+ */
+@SuppressLint("SimpleDateFormat")
+public class MyLog {
+    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 = "英唐" + "-----------";
+
+    private static volatile MyLog myLog; // 使用 volatile 关键字确保多线程环境下的可见性
+
+    private MyLog() {
+    }
+
+    public static MyLog getInstance() {
+        if (myLog == null) { // 第一次检查,提高效率,避免每次都进行同步
+            synchronized (MyLog.class) { // 同步代码块,保证线程安全
+                if (myLog == null) { // 第二次检查,防止多个线程同时进入同步块时重复创建实例
+                    myLog = new MyLog();
+                    //兼容不同版本分区处理
+                    File downloadDir = null;
+                    if (Build.VERSION.SDK_INT >= 29) {
+                        // Android 10+ 使用私有目录
+                        downloadDir = PdaApplication.getmContext().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
+                    } else {
+                        downloadDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
+                    }
+                    if (!downloadDir.exists()) {
+                        downloadDir.mkdirs();
+                    }
+                    MYLOG_PATH_SDCARD_DIR1 = downloadDir.getAbsolutePath() + File.separator + PdaApplication.getmContext().getPackageName();
+
+                    //Log.e("aaa", "MyLog被创建了: " + MYLOG_PATH_SDCARD_DIR1);
+                }
+            }
+        }
+        return myLog;
+    }
+
+    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) {
+            setInterceptlength(tag, msg, level);
+            if (MYLOG_WRITE_TO_FILE && 'd' == level) {
+                writeLogtoFile(String.valueOf(level), tag, msg);
+            }
+        }
+    }
+
+    public static void setInterceptlength(String tag, String msg,char level) {
+        if (msg.length() > 3000) {
+            // 因为Logcat一次最多能输出4000个字符左右,所以按3000字符分段比较好
+            int chunkCount = msg.length() / 3000; // 分割成多少段
+            for (int i = 0; i <= chunkCount; i++) {
+                int max = 3000 * (i + 1);
+                if (max >= msg.length()) {
+                    if ('e' == level) { // 输出错误信息
+                        Log.e(tag, msg.substring(3000 * i));
+                    } else if ('w' == level) {
+                        Log.w(tag, msg.substring(3000 * i));
+                    } else if ('d' == level) {
+                        Log.d(tag, msg.substring(3000 * i));
+                    } else if ('i' == level) {
+                        Log.i(tag, msg.substring(3000 * i));
+                    } else {
+                        Log.v(tag, msg.substring(3000 * i));
+                    }
+                } else {
+                    if ('e' == level) {
+                        Log.e(tag, msg.substring(3000 * i, max));
+                    } else if ('w' == level) {
+                        Log.w(tag, msg.substring(3000 * i, max));
+                    } else if ('d' == level) {
+                        Log.d(tag, msg.substring(3000 * i, max));
+                    } else if ('i' == level) {
+                        Log.i(tag, msg.substring(3000 * i, max));
+                    } else {
+                        Log.v(tag, msg.substring(3000 * i, max));
+                    }
+                }
+            }
+        } else {
+            if ('e' == level) {
+                Log.e(tag, msg);
+            } else if ('w' == level) {
+                Log.w(tag, msg);
+            } else if ('d' == level) {
+                Log.d(tag, msg);
+            } else if ('i' == level) {
+                Log.i(tag, msg);
+            } else {
+                Log.v(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();  //删除不是当天创建的日期
+            }
+        }
+    }
+
+
+
+}

+ 32 - 16
app/src/main/java/com/uas/xuslectronic/util/PrintUtils.java

@@ -7,7 +7,7 @@ import android.util.Log;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.uas.xuslectronic.bluebooths.PrintHelper;
+import com.uas.bluetooth.PrintHelper;
 import com.uas.xuslectronic.tools.SharedPreUtil;
 
 public class PrintUtils {
@@ -17,21 +17,32 @@ public class PrintUtils {
             if (dpi <= 0) {
                 dpi = 203;
             }
-
+            MyLog.e("aaa","打印数据:" + dataJson);
             if (TextUtils.isEmpty(printTemplate)) {
                 printTemplate = SharedPreUtil.getString(context, Constants.FLAG.PRINT_TEMPLATE_CACHE, "");
             }
-
-            int offset = 6,
-                    h = 400,
-                    v = 800,
-                    height = 220,//400
-                    qty = 1;
+            MyLog.e("aaa","模版数据:" + printTemplate);
+//            int offset = 6,
+//                    h = 400,
+//                    v = 800,
+//                    height = 220,//400
+//                    qty = 1;
 
             JSONArray templateArray = JSON.parseArray(printTemplate);
+            JSONObject templateObj = templateArray.getJSONObject(0);
+            //la_offset 偏移值
+            //la_h    横向分辨率
+            //la_y   纵向分辨率
+            //la_height  最大高度
+            //la_qty 重复打印次数
+            int la_offset = FastjsonUtil.getInt(templateObj, "LA_OFFSET") == 0 ? 6 : FastjsonUtil.getInt(templateObj, "LA_OFFSET");
+            int la_h = FastjsonUtil.getInt(templateObj, "LA_H") == 0 ? 400 : FastjsonUtil.getInt(templateObj, "LA_H");
+            int la_y = FastjsonUtil.getInt(templateObj, "LA_Y") == 0 ? 800 : FastjsonUtil.getInt(templateObj, "LA_Y");
+            int la_height = FastjsonUtil.getInt(templateObj, "LA_HEIGHT") == 0 ? 320 : FastjsonUtil.getInt(templateObj, "LA_HEIGHT");
+            int la_qty = FastjsonUtil.getInt(templateObj, "LA_QTY") == 0 ? 1 : FastjsonUtil.getInt(templateObj, "LA_QTY");
             if (templateArray != null && templateArray.size() > 0) {
-
-                PrintHelper printHelper = new PrintHelper(offset, h, v, height, qty);
+                //                PrintHelper printHelper = new PrintHelper(offset, h, v, height, qty);
+                com.uas.bluetooth.PrintHelper printHelper = new PrintHelper(la_offset, la_h, la_y, la_height, la_qty);
                 for (int i = 0; i < templateArray.size(); i++) {
                     JSONObject templateObject = templateArray.getJSONObject(i);
 
@@ -43,6 +54,7 @@ public class PrintUtils {
                         int printY = (int) (toprate * dpi / 25.4);//高度
                         double barHeight = FastjsonUtil.getDouble(templateObject, "LP_HEIGHT");
                         int barHeightInt = (int) (barHeight * dpi / 25.4);
+                        int lp_width = FastjsonUtil.getInt(templateObject, "LP_WIDTH");
                         int fontSize = FastjsonUtil.getInt(templateObject, "LP_SIZE");
 //                        String lp_font = FastjsonUtil.getText(templateObject, "LP_FONT");//字体类型
                         String printKey = FastjsonUtil.getText(templateObject, "LP_NAME");
@@ -64,13 +76,17 @@ public class PrintUtils {
                                     if ("BAR_BATCHCODE".equals(printKey)) {
                                         textFont = 7;
                                     }
-                                    printHelper = printHelper.printText(printText)
-                                            .setX(printX)
-                                            .setY(printY)
-                                            .setBold(1)
-                                            .setTextFont(textFont)//字号
-                                            .setTextSize(fontSize)//字体大小,取接口的值
+                                    printHelper = printHelper.printText("")
+                                            .setTextAutLine(printX+"",printY + (int) ((0.6 * dpi) / 25.4)+"",lp_width,fontSize,false,false,printText)
                                             .build();
+
+//                                    printHelper = printHelper.printText(printText)
+//                                            .setX(printX)
+//                                            .setY(printY)
+//                                            .setBold(1)
+//                                            .setTextFont(textFont)//字号
+//                                            .setTextSize(fontSize)//字体大小,取接口的值
+//                                            .build();
                                     break;
                                 case "qrcode"://打印二维码
                                     printHelper = printHelper.printQr(printText)

+ 1 - 1
app/src/main/res/layout/fragment_barcode_in_collect.xml

@@ -50,7 +50,7 @@
             android:id="@+id/material_in_collect_old_tr"
             android:layout_marginTop="5dp"
             android:visibility="gone"
-            tools:visibility="visible">
+           >
 
             <TextView
                 android:id="@+id/material_in_collect_old_tv"

+ 1 - 1
app/src/main/res/layout/item_grid_first.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--一级griditem布局-->
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
+    android:layout_width="match_parent"
     android:layout_height="100dp"
     android:gravity="center"
     android:focusable="false"

+ 56 - 21
app/src/main/res/layout/popupwindow_whcombine_bach.xml

@@ -6,35 +6,70 @@
     android:orientation="vertical"
     android:padding="5dp">
 
-    <TableLayout
+    <LinearLayout
         android:id="@+id/tl_content"
-        android:layout_width="wrap_content"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:padding="10dp"
-        android:stretchColumns="1">
+        android:stretchColumns="1"
+        android:orientation="vertical"
+        >
+
+        <TextView
+            android:id="@+id/tv_po"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="start"
+            android:layout_margin="5dp"
+            android:textSize="14sp"
+            />
 
-        <TableRow android:layout_margin="5dp">
+        <TextView
+            android:id="@+id/tv_pn"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="start"
+            android:layout_margin="5dp"
+            android:textSize="14sp"
+            />
 
-            <TextView
-                style="@style/tl_tv_style"
-                android:text="@string/new_bar_code" />
+        <TextView
+            android:id="@+id/tv_desc"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="start"
+            android:layout_margin="5dp"
+            android:textSize="14sp"
+            />
 
-            <TextView
-                android:id="@+id/tv_new_bar_code"
-                style="@style/tl_tv_content_style" />
-        </TableRow>
+        <TextView
+            android:id="@+id/tv_dc"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="start"
+            android:layout_margin="5dp"
+            android:textSize="14sp"
+            />
 
-        <TableRow android:layout_margin="5dp">
+        <TextView
+            android:id="@+id/tv_total"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="start"
+            android:layout_margin="5dp"
+            android:textSize="14sp"
+            />
 
-            <TextView
-                style="@style/tl_tv_style"
-                android:text="@string/total" />
+        <TextView
+            android:id="@+id/tv_new_bar_code"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="start"
+            android:layout_margin="5dp"
+            android:textSize="14sp"
+            />
 
-            <TextView
-                android:id="@+id/tv_total"
-                style="@style/tl_tv_content_style" />
-        </TableRow>
-    </TableLayout>
+    </LinearLayout>
 
 
     <RelativeLayout
@@ -48,7 +83,7 @@
             android:layout_height="wrap_content"
             android:layout_alignParentLeft="true"
             android:text="@string/print"
-            android:visibility="gone" />
+             />
 
         <Button
             android:id="@+id/btn_close"

+ 2 - 2
build.gradle

@@ -50,8 +50,8 @@ ext {
             targetSdkVersion : 28,
             compileSdkVersion: 28,
             buildToolsVersion: "28.0.3",
-            versionCode      : 10,
-            versionName      : "v1.0"
+            versionCode      : 5,
+            versionName      : "v1.0.4"
     ]
 
     depsVersion = [

+ 5 - 0
pda_libs/bluetooth/src/main/java/com/uas/bluetooth/PrintHelper.java

@@ -87,6 +87,11 @@ public class PrintHelper {
             return this;
         }
 
+        public TextBuilder setTextAutLine(String x,String y,int width,int size,boolean isbole,boolean isdouble,String str) throws Exception {
+            HPRTPrinterHelper .AutLine(x,y,width,size,isbole,isdouble,str);
+            return this;
+        }
+
         public TextBuilder setBold(int bold) {
             if (bold < 0) {
                 bold = 0;