瀏覽代碼

华研增加检验送样接口文档内容以及附件上传内容

songw 1 年之前
父節點
當前提交
a5c8e90d51
共有 33 個文件被更改,包括 3579 次插入577 次删除
  1. 1 0
      .idea/gradle.xml
  2. 3 0
      app/build.gradle
  3. 3 1
      app/src/main/AndroidManifest.xml
  4. 455 0
      app/src/main/java/com/uas/hystorage/activity/BlueToothPrintAct.java
  5. 7 6
      app/src/main/java/com/uas/hystorage/activity/IndexActivity.java
  6. 0 385
      app/src/main/java/com/uas/hystorage/activity/InspectionSendSamples.java
  7. 687 0
      app/src/main/java/com/uas/hystorage/activity/InspectionSendSamplesAct.java
  8. 614 0
      app/src/main/java/com/uas/hystorage/activity/SampleDeliveryListAct.java
  9. 0 1
      app/src/main/java/com/uas/hystorage/activity/SelectNetAcitivty.java
  10. 130 0
      app/src/main/java/com/uas/hystorage/adapter/AnnexAdapter.java
  11. 0 1
      app/src/main/java/com/uas/hystorage/adapter/BluetoothAdapter.java
  12. 1 3
      app/src/main/java/com/uas/hystorage/application/PdaApplication.java
  13. 40 0
      app/src/main/java/com/uas/hystorage/bean/AnnexBean.java
  14. 146 0
      app/src/main/java/com/uas/hystorage/bean/InspectionPaintBean.java
  15. 128 0
      app/src/main/java/com/uas/hystorage/bean/SampleDeliveryBean.java
  16. 0 2
      app/src/main/java/com/uas/hystorage/fragment/HePiFragment.java
  17. 17 2
      app/src/main/java/com/uas/hystorage/fragment/QualityManageFragment.java
  18. 515 0
      app/src/main/java/com/uas/hystorage/fragment/ReportPageFra.java
  19. 38 7
      app/src/main/java/com/uas/hystorage/global/GloableParams.java
  20. 9 0
      app/src/main/java/com/uas/hystorage/util/HttpParams.java
  21. 35 7
      app/src/main/java/com/uas/hystorage/util/PrintUtils.java
  22. 二進制
      app/src/main/res/drawable-xhdpi/shouyebaogao.png
  23. 二進制
      app/src/main/res/drawable-xhdpi/tupian.png
  24. 二進制
      app/src/main/res/drawable-xhdpi/xunchabaogao.png
  25. 二進制
      app/src/main/res/drawable-xhdpi/zengjiatu.png
  26. 46 0
      app/src/main/res/layout/act_blue_tooth_print.xml
  27. 188 156
      app/src/main/res/layout/act_inspection_send_samples.xml
  28. 65 0
      app/src/main/res/layout/act_sample_selivery_list.xml
  29. 159 0
      app/src/main/res/layout/fra_report_page.xml
  30. 40 0
      app/src/main/res/layout/item_annex_image.xml
  31. 230 0
      app/src/main/res/layout/item_sample_delivery.xml
  32. 21 5
      app/src/main/res/layout/view_head.xml
  33. 1 1
      pda_libs/pulltoreflashlibrary/build/intermediates/incremental/packageDebugResources/compile-file-map.properties

+ 1 - 0
.idea/gradle.xml

@@ -22,5 +22,6 @@
         <option name="resolveModulePerSourceSet" value="false" />
       </GradleProjectSettings>
     </option>
+    <option name="offlineMode" value="true" />
   </component>
 </project>

+ 3 - 0
app/build.gradle

@@ -100,6 +100,9 @@ dependencies {
     implementation 'com.lzy.net:okserver:2.0.5'
     implementation 'com.contrarywind:Android-PickerView:4.1.9'
 
+//    implementation 'com.github.bumptech.glide:glide:4.12.0'
+//    annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
+
 }
 
 def getVersionName() {

+ 3 - 1
app/src/main/AndroidManifest.xml

@@ -66,7 +66,9 @@
             android:screenOrientation="portrait" />
         <activity android:name=".activity.LineSelectActivity" />
         <activity android:name=".activity.SelectNetAcitivty" />
-        <activity android:name=".activity.InspectionSendSamples" />
+        <activity android:name=".activity.InspectionSendSamplesAct" />
+        <activity android:name=".activity.SampleDeliveryListAct" />
+        <activity android:name=".activity.BlueToothPrintAct" />
 
         <provider xmlns:tools="http://schemas.android.com/tools"
             android:name="android.support.v4.content.FileProvider"

+ 455 - 0
app/src/main/java/com/uas/hystorage/activity/BlueToothPrintAct.java

@@ -0,0 +1,455 @@
+package com.uas.hystorage.activity;
+
+import android.bluetooth.BluetoothDevice;
+import android.content.Intent;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Build;
+import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.LinearInterpolator;
+import android.view.animation.RotateAnimation;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.PopupWindow;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.uas.bluetooth.ConnectHelper;
+import com.uas.hystorage.R;
+import com.uas.hystorage.adapter.BluetoothAdapter;
+import com.uas.hystorage.tools.SharedPreUtil;
+import com.uas.hystorage.util.CommonUtil;
+import com.uas.hystorage.util.Constants;
+import com.uas.hystorage.util.FastjsonUtil;
+import com.uas.hystorage.util.ListUtils;
+import com.uas.hystorage.util.PrintUtils;
+import com.uas.hystorage.view.RecyclerItemDecoration;
+import com.yanzhenjie.permission.Action;
+import com.yanzhenjie.permission.AndPermission;
+import com.yanzhenjie.permission.Permission;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import vn.luongvo.widget.iosswitchview.SwitchView;
+
+public class BlueToothPrintAct extends BaseActivity {
+
+    public static final int REQUEST_ENABLE_BT = 1;//开启蓝牙的请求回调
+
+    private ImageView mRefreshImageView;
+    private SwitchView mSwitchView;
+    private TextView mDpiTextView;
+    private RecyclerView mRecyclerView;
+    private ConnectHelper connectHelper;
+    private RotateAnimation mRotateAnimation;//动画
+    private BluetoothAdapter mBluetoothAdapter;
+    private boolean isConnected = false;
+    private String mOldAddress = "";
+    private List<Integer> mDpiList;
+    private View mMenuView;
+    private PopupWindow mMenuPopupWindow;
+    private RecyclerView mMenuRecyclerView;
+    private BaseQuickAdapter<Integer, BaseViewHolder> mMenuAdapter;
+    private int mDpi;
+    private String mPrintJson;
+    private int mRetryCount = 0;
+    private boolean isPrinting = false;
+
+
+    private Button bt_return;
+    private TextView tv_title;
+    private ImageView iv_icon;
+    private TextView tv_type;
+
+    @Override
+    protected void initViews() {
+        setContentView(R.layout.act_blue_tooth_print);
+
+        bt_return = findViewById(R.id.bt_return);
+        tv_title = findViewById(R.id.tv_title);
+        iv_icon = findViewById(R.id.iv_icon);
+        tv_type = findViewById(R.id.tv_type);
+
+        tv_title.setText("打印机连接");
+        tv_type.setVisibility(View.VISIBLE);
+
+        mDpi = SharedPreUtil.getInt(BlueToothPrintAct.this, "printDpi", 203);
+        tv_type.setText(mDpi + "dpi");
+
+        mPrintJson = getIntent().getStringExtra(Constants.KEY.BARCODE_PRINT_ARRAY);
+
+        mRefreshImageView = findViewById(R.id.bluetooth_print_refresh_iv);
+        mSwitchView = findViewById(R.id.bluetooth_print_sv);
+        mRecyclerView = findViewById(R.id.bluetooth_print_rv);
+        mRecyclerView.setLayoutManager(new LinearLayoutManager(BlueToothPrintAct.this));
+
+        mRecyclerView.addItemDecoration(new RecyclerItemDecoration(1));
+        mDpiList = new ArrayList<>();
+
+        isConnected = (SharedPreUtil.getInt(BlueToothPrintAct.this, "printConnect", 0) == 1);
+        mOldAddress = SharedPreUtil.getString(BlueToothPrintAct.this, "printAddress", "");
+    }
+
+    @Override
+    protected void initEvents() {
+        bt_return.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+        mRefreshImageView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (connectHelper.isOpenBluetooth()) {
+                    mRefreshImageView.setAnimation(getImgAnimation());
+                    mRefreshImageView.startAnimation(getImgAnimation());
+                    connectHelper.searchDevices();
+                }
+            }
+        });
+
+        mDpiList.add(152);
+        mDpiList.add(203);
+        mDpiList.add(300);
+        mDpiList.add(600);
+
+        tv_type.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mMenuView == null) {
+                    mMenuView = View.inflate(BlueToothPrintAct.this, R.layout.pop_common_list_menu, null);
+                }
+
+                if (mMenuRecyclerView == null) {
+                    mMenuRecyclerView = mMenuView.findViewById(R.id.common_list_menu_rv);
+                    mMenuRecyclerView.setLayoutManager(new LinearLayoutManager(BlueToothPrintAct.this));
+
+                    mMenuRecyclerView.addItemDecoration(new RecyclerItemDecoration(1));
+
+                }
+
+                if (mMenuAdapter == null) {
+                    mMenuAdapter = new BaseQuickAdapter<Integer, BaseViewHolder>(R.layout.item_common_list_menu, mDpiList) {
+                        @Override
+                        protected void convert(BaseViewHolder helper, Integer item) {
+                            helper.setText(R.id.item_common_list_menu_btn, item + "dpi");
+                        }
+                    };
+
+                    mMenuRecyclerView.setAdapter(mMenuAdapter);
+
+                    mMenuAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+                        @Override
+                        public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
+                            closeMenuPopupWindow();
+                            mDpi = mDpiList.get(position);
+                            SharedPreUtil.saveInt(BlueToothPrintAct.this, "printDpi", mDpi);
+                            tv_type.setText(mDpi + "dpi");
+                        }
+                    });
+                }
+
+                if (mMenuPopupWindow == null) {
+                    mMenuPopupWindow = new PopupWindow(mMenuView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
+                    mMenuPopupWindow.setBackgroundDrawable(new BitmapDrawable());
+                    mMenuPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+                        @Override
+                        public void onDismiss() {
+                            closeMenuPopupWindow();
+                        }
+                    });
+                }
+
+                CommonUtil.setBackgroundAlpha(BlueToothPrintAct.this, 0.5f);
+                mMenuPopupWindow.showAsDropDown(tv_type);
+            }
+        });
+    }
+
+    @Override
+    protected void initDatas() {
+        if (Build.VERSION.SDK_INT >= 6.0) {
+            try {
+                AndPermission.with(BlueToothPrintAct.this)
+                        .runtime()
+                        .permission(Permission.Group.LOCATION)
+                        .onGranted(new Action<List<String>>() {
+                            @Override
+                            public void onAction(List<String> data) {
+                                initHelper();
+                            }
+                        })
+                        .start();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+        } else {
+            initHelper();
+        }
+    }
+
+
+    private void closeMenuPopupWindow() {
+        if (mMenuPopupWindow != null) {
+            mMenuPopupWindow.dismiss();
+            mMenuPopupWindow = null;
+            CommonUtil.setBackgroundAlpha(BlueToothPrintAct.this, 1f);
+        }
+    }
+
+    private void initHelper() {
+        connectHelper = new ConnectHelper(BlueToothPrintAct.this);
+        connectHelper.setConnectListener(new ConnectHelper.ConnectListener() {
+            @Override
+            public void onDeviceChange(int state, BluetoothDevice device) {
+                try {
+                    List<BluetoothDevice> models = mBluetoothAdapter.getModels();
+                    boolean hasConflict = false;
+                    if (!ListUtils.isEmpty(models)) {
+                        for (int i = 0; i < models.size(); i++) {
+                            BluetoothDevice model = models.get(i);
+                            if (model.getAddress().equals(device.getAddress())) {
+                                if (model.getBondState() != device.getBondState()) {
+                                    models.remove(i);
+                                    models.add(0, device);
+                                }
+                                hasConflict = true;
+                                break;
+                            }
+                        }
+                    }
+                    if (!hasConflict) {
+                        if (models == null) {
+                            models = new ArrayList<>();
+                        }
+                        if (device.getBondState() == BluetoothDevice.BOND_BONDED) {
+                            models.add(0, device);
+                        } else {
+                            models.add(device);
+                        }
+                    }
+                    setAdapter(models);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    CommonUtil.toastNoRepeat(BlueToothPrintAct.this, "蓝牙设备搜索异常,请重新搜索");
+                }
+            }
+
+            @Override
+            public void bindResult(int portOpen, BluetoothDevice device) {
+                progressDialog.dismiss();
+                if (portOpen == -11) {
+                    CommonUtil.toastNoRepeat(BlueToothPrintAct.this, "打印机连接异常");
+                    isConnected = false;
+                    SharedPreUtil.saveInt(BlueToothPrintAct.this, "printConnect", 0);
+                } else if (portOpen == -1) {
+                    mRetryCount++;
+                    if (mRetryCount > 3) {
+                        CommonUtil.toastNoRepeat(BlueToothPrintAct.this, "打印机连接失败,请检查打印机是否启动");
+                        isConnected = false;
+                        SharedPreUtil.saveInt(BlueToothPrintAct.this, "printConnect", 0);
+                        mRetryCount = 0;
+                    } else {
+                        connectHelper.toConnectDeviceHY(device);
+                    }
+                } else {
+                    // TODO: 2018/12/24 执行打印操作
+                    mRetryCount = 0;
+                    isConnected = true;
+                    SharedPreUtil.saveInt(BlueToothPrintAct.this, "printConnect", 1);
+                    mOldAddress = device.getAddress();
+                    SharedPreUtil.saveString(BlueToothPrintAct.this, "printAddress", mOldAddress);
+                    printEvent();
+                }
+            }
+
+            @Override
+            public void onFinished() {
+                mRefreshImageView.setAnimation(null);
+            }
+        });
+        Set<BluetoothDevice> devices = connectHelper.getBondedDevices();
+        List<BluetoothDevice> models = new ArrayList<>();
+        if (!ListUtils.isEmptyBlue(devices)) {
+            for (BluetoothDevice device : devices) {
+                models.add(device);
+            }
+        }
+        setAdapter(models);
+
+        mSwitchView.setChecked(connectHelper.isOpenBluetooth());
+        mSwitchView.setOnCheckedChangeListener(mOnCheckedChangeListener);
+    }
+
+    private void printEvent() {
+        if (isPrinting) {
+            CommonUtil.toastNoRepeat(BlueToothPrintAct.this, "正在打印中,请勿重复操作");
+            return;
+        }
+        isPrinting = true;
+        if (FastjsonUtil.validate(mPrintJson)) {
+            JSONArray printArray = JSON.parseArray(mPrintJson);
+            if (printArray != null && printArray.size() > 0) {
+                boolean isFail = false;
+                for (int i = 0; i < printArray.size(); i++) {
+                    JSONObject printObject = printArray.getJSONObject(i);
+                    int printResult = PrintUtils.printBar(BlueToothPrintAct.this, printObject.toJSONString(), mDpi, null);
+                    if (printResult <= 0) {
+                        isFail = true;
+                    }
+                }
+                if (isFail) {
+                    isConnected = false;
+                    SharedPreUtil.saveInt(BlueToothPrintAct.this, "printConnect", 0);
+                    CommonUtil.toastNoRepeat(BlueToothPrintAct.this, "打印失败,请确定打印机是否正常");
+                } else {
+                    CommonUtil.toastNoRepeat(BlueToothPrintAct.this, "打印成功");
+                    getSupportFragmentManager().popBackStack();
+                }
+            } else {
+                CommonUtil.toastNoRepeat(BlueToothPrintAct.this, "打印失败,条码数据为空");
+            }
+        } else {
+            CommonUtil.toastNoRepeat(BlueToothPrintAct.this, "打印失败,条码数据为空");
+        }
+        isPrinting = false;
+    }
+
+
+    private Animation getImgAnimation() {
+        if (mRotateAnimation == null) {
+            mRotateAnimation = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
+            LinearInterpolator lin = new LinearInterpolator();
+            mRotateAnimation.setInterpolator(lin);
+            mRotateAnimation.setDuration(1000);//设置动画持续时间
+            mRotateAnimation.setRepeatCount(-1);//设置重复次数
+            mRotateAnimation.setFillAfter(true);//动画执行完后是否停留在执行完的状态
+            mRotateAnimation.setStartOffset(10);//执行前的等待时间
+        }
+        return mRotateAnimation;
+    }
+
+    private void setAdapter(List<BluetoothDevice> models) {
+        List<BluetoothDevice> printDevices = new ArrayList<>();
+        if (!ListUtils.isEmpty(models)) {
+            for (int i = 0; i < models.size(); i++) {
+                BluetoothDevice bluetoothDevice = models.get(i);
+                if (bluetoothDevice != null && bluetoothDevice.getBluetoothClass().getDeviceClass() == ConnectHelper.PRINT_TYPE) {
+                    printDevices.add(bluetoothDevice);
+                }
+            }
+        }
+
+        if (mBluetoothAdapter == null) {
+            mBluetoothAdapter = new BluetoothAdapter(BlueToothPrintAct.this, printDevices);
+            mBluetoothAdapter.setOnSendListener(mOnSendListener);
+            mRecyclerView.setAdapter(mBluetoothAdapter);
+        } else {
+            mBluetoothAdapter.setModels(printDevices);
+        }
+    }
+
+
+    private BluetoothAdapter.OnSendListener mOnSendListener = new BluetoothAdapter.OnSendListener() {
+        @Override
+        public void send(final BluetoothDevice device) {
+            //TODO 对指定设备发送消息(必须先连接)
+            /*AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
+            builder.setTitle("选择连接类型");
+            final String[] str = {"ESP机型", "汉印打印机"};
+            builder.setSingleChoiceItems(str, -1, new DialogInterface.OnClickListener() {
+                        @Override
+                        public void onClick(DialogInterface dialog, int which) {
+                            //客户点击后,对话框记得消失
+                            dialog.dismiss();
+                            if (which == 0) {
+                                //ESC机型
+                                boolean bindOk = connectHelper.toConnectDevice(device);
+                                if (bindOk) {
+
+                                }
+                            } else {
+                                //汉印打印机
+                                connectHelper.toConnectDeviceHY(device);
+                            }
+
+                        }
+                    }
+            );
+            builder.show();*/
+
+            String newAddress = device.getAddress();
+            if (!TextUtils.isEmpty(newAddress) && newAddress.equals(mOldAddress)) {
+                if (isConnected) {
+                    printEvent();
+                } else {
+                    mRetryCount = 0;
+                    progressDialog.show();
+                    connectHelper.toConnectDeviceHY(device);
+                }
+            } else {
+                mRetryCount = 0;
+                isConnected = false;
+                SharedPreUtil.saveInt(BlueToothPrintAct.this, "printConnect", 0);
+                progressDialog.show();
+                connectHelper.toConnectDeviceHY(device);
+            }
+
+        }
+
+        @Override
+        public void itemClick(BluetoothDevice device) {
+            connectHelper.toConnectDevice(device);
+        }
+    };
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (requestCode == REQUEST_ENABLE_BT) {
+            mSwitchView.setOnCheckedChangeListener(null);
+            if (resultCode == RESULT_OK) {
+                mSwitchView.setChecked(true);
+                CommonUtil.toastNoRepeat(BlueToothPrintAct.this, "蓝牙开启成功");
+            } else {
+                mSwitchView.setChecked(false);
+
+                CommonUtil.toastNoRepeat(BlueToothPrintAct.this, "蓝牙开启失败");
+            }
+            mSwitchView.setOnCheckedChangeListener(mOnCheckedChangeListener);
+        }
+    }
+
+    private SwitchView.OnCheckedChangeListener mOnCheckedChangeListener = new SwitchView.OnCheckedChangeListener() {
+        @Override
+        public void onCheckedChanged(SwitchView switchView, boolean b) {
+            if (b) {
+                connectHelper.openBluetooth(REQUEST_ENABLE_BT);
+            } else {
+                connectHelper.closeBluetooth();
+            }
+        }
+    };
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (connectHelper != null) {
+            connectHelper.onDestroy();
+        }
+    }
+}

+ 7 - 6
app/src/main/java/com/uas/hystorage/activity/IndexActivity.java

@@ -211,11 +211,9 @@ public class IndexActivity extends BaseActivity implements AdapterView.OnItemCli
             }
         },500);
 
-
         getPrintTemplate();
         EventBus.getDefault().register(this);
 
-
         iv_add_data.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -1203,6 +1201,12 @@ public class IndexActivity extends BaseActivity implements AdapterView.OnItemCli
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         String itemName = (String) gridItemList.get(position).get(DataSourceManager.KEY_GRID_ITEMNAME);
+        //检验送样
+        if(GloableParams.INSPECT_AND_SEND_SAMPLES.equals(itemName)) {
+            Intent intent = new Intent(IndexActivity.this, InspectionSendSamplesAct.class);
+            startActivity(intent);
+            return;
+        }
         //岗位
         String station = ct_indexgangwei.getText().toString().trim();//岗位资源
         if (StringUtil.isEmpty(station)) {
@@ -1304,10 +1308,7 @@ public class IndexActivity extends BaseActivity implements AdapterView.OnItemCli
                         }
                     });
 
-                }else if(GloableParams.GRIDNAME_WORK_PAUSE.equals(itemName)){
-                    Intent intent = new Intent(IndexActivity.this, InspectionSendSamples.class);
-                    startActivity(intent);
-                } else{
+                }else{
                     if (StringUtil.isEmpty(workOrder)){
                         //工单启动,人员换岗
                         if (GloableParams.GRIDNAME_WORK_START.equals(itemName)) {

+ 0 - 385
app/src/main/java/com/uas/hystorage/activity/InspectionSendSamples.java

@@ -1,385 +0,0 @@
-//package com.uas.hystorage.activity;
-//
-//import android.graphics.drawable.BitmapDrawable;
-//import android.support.v7.widget.DividerItemDecoration;
-//import android.support.v7.widget.LinearLayoutManager;
-//import android.view.Gravity;
-//import android.view.KeyEvent;
-//import android.view.LayoutInflater;
-//import android.view.View;
-//import android.view.Window;
-//import android.view.inputmethod.EditorInfo;
-//import android.widget.Button;
-//import android.widget.ImageView;
-//import android.widget.LinearLayout;
-//import android.widget.PopupWindow;
-//import android.widget.RadioGroup;
-//import android.widget.TextView;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.alibaba.fastjson.JSONArray;
-//import com.alibaba.fastjson.JSONObject;
-//import com.android.volley.Request;
-//import com.android.volley.toolbox.StringRequest;
-//import com.chad.library.adapter.base.BaseQuickAdapter;
-//import com.uas.hystorage.R;
-//import com.uas.hystorage.fragment.PostPunchFragment;
-//import com.uas.hystorage.global.GloableParams;
-//import com.uas.hystorage.listener.MyEditorActionListener;
-//import com.uas.hystorage.util.CommonUtil;
-//import com.uas.hystorage.util.FastjsonUtil;
-//import com.uas.hystorage.util.HttpCallback;
-//import com.uas.hystorage.util.HttpParams;
-//import com.uas.hystorage.util.LogUtil;
-//import com.uas.hystorage.util.StringUtil;
-//import com.uas.hystorage.util.VollyRequest;
-//import com.uas.hystorage.view.ClearableEditText;
-//
-//import java.util.ArrayList;
-//import java.util.List;
-//
-//import razerdp.basepopup.BasePopupWindow;
-//
-//public class InspectionSendSamples extends BaseActivity {
-//
-//    private Button bt_return;
-//    private TextView tv_title, tv_gangweiname;
-//    private ImageView iv_icon, iv_search;
-//    private RadioGroup rg_jianyanleixin;
-//    private ClearableEditText cet_gangweiziyuan;
-//    private TextView cet_jitai, cet_gondanhao, cet_xiangmuhao;
-//    private TextView tv_isok, tv_details;
-//    private Button bt_dayinbiaoqian;
-//    private String rb_changetext;
-//    private StringRequest mStringRequest;
-//
-//    @Override
-//    protected void initViews() {
-//        setContentView(R.layout.act_inspection_send_samples);
-//        bt_return = findViewById(R.id.bt_return);
-//        tv_title = findViewById(R.id.tv_title);
-//        iv_icon = findViewById(R.id.iv_icon);
-//
-//        rg_jianyanleixin = findViewById(R.id.rg_jianyanleixin);
-//        cet_gangweiziyuan = findViewById(R.id.cet_gangweiziyuan);
-//        iv_search = findViewById(R.id.iv_search);
-//        tv_gangweiname = findViewById(R.id.tv_gangweiname);
-//
-//        cet_jitai = findViewById(R.id.cet_jitai);
-//        cet_gondanhao = findViewById(R.id.cet_gondanhao);
-//        cet_xiangmuhao = findViewById(R.id.cet_xiangmuhao);
-//
-//        bt_dayinbiaoqian = findViewById(R.id.bt_dayinbiaoqian);
-//        tv_isok = findViewById(R.id.tv_isok);
-//        tv_details = findViewById(R.id.tv_details);
-//
-//    }
-//
-//    @Override
-//    protected void initEvents() {
-//        iv_icon.setOnClickListener(new View.OnClickListener() {
-//            @Override
-//            public void onClick(View v) {
-//                //送样清单列表
-//
-//            }
-//        });
-//        rg_jianyanleixin.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
-//            @Override
-//            public void onCheckedChanged(RadioGroup group, int checkedId) {
-//                switch (checkedId) {
-//                    case R.id.rb_shoujian:
-//                        rb_changetext = "首件";
-//                        break;
-//                    case R.id.rb_xunjian:
-//                        rb_changetext = "巡检";
-//                        break;
-//                }
-//            }
-//        });
-//
-//        CommonUtil.setEditorActionListener(cet_gangweiziyuan, new MyEditorActionListener() {
-//            @Override
-//            public void MyEditorAction(String text, int actionId, KeyEvent event) {
-//                getJobResources();
-//            }
-//        });
-//
-//        iv_search.setOnClickListener(new View.OnClickListener() {
-//            @Override
-//            public void onClick(View v) {
-//                getRepairStep();
-//            }
-//        });
-//
-//        bt_dayinbiaoqian.setOnClickListener(new View.OnClickListener() {
-//            @Override
-//            public void onClick(View v) {
-//                getPrintLabel();
-//            }
-//        });
-//    }
-//
-//    private void getPrintLabel() {
-//
-//    }
-//
-//    private void getRepairStep() {
-//        progressDialog.show();
-//        VollyRequest.getInstance().stringRequest(mStringRequest,
-//                new HttpParams.Builder()
-//                        .url(GloableParams.ADDRESS_PAD_GETSOURCEBYEMP)
-//                        .method(Request.Method.GET)
-//                        .tag("getMaCode")
-//                        .flag(0)
-//                        .build(), new HttpCallback() {
-//                    @Override
-//                    public void onSuccess(int flag, Object o) throws Exception {
-//                        progressDialog.dismiss();
-//                        Boolean isSuccess = FastjsonUtil.getBoolean(o.toString(),"success");
-//                        JSONArray dataArray = FastjsonUtil.getJSONArray(o.toString(), "data");
-//                        if (isSuccess){
-//                            if (dataArray == null){
-//                                CommonUtil.toastNoRepeat(InspectionSendSamples.this,"未搜索到匹配数据");
-//                            }else {
-//                                handleFeededlineData(dataArray);
-//                            }
-//                        }
-//                    }
-//                    @Override
-//                    public void onFail(int flag, String failStr) throws Exception {
-//                        progressDialog.dismiss();
-//                        CommonUtil.toastNoRepeat(InspectionSendSamples.this, failStr);
-//                    }
-//                });
-//    }
-//
-//    private void getJobResources() {
-//
-//    }
-//
-//    @Override
-//    protected void initDatas() {
-//
-//    }
-//
-//    private void handleFeededlineData(JSONArray dataArray) {
-//        PostPunchFragment.ComDataBean bean;
-//        ComDataBeanList.clear();
-//        for (Object index : dataArray) {
-//            JSONObject data = (JSONObject) index;
-//            bean= new PostPunchFragment.ComDataBean();
-//            bean.setItemName(data.getString("SC_NAME"));
-//            bean.setItemremark(data.getString("SC_CODE"));
-//            ComDataBeanList.add(bean);
-//        }
-//        initresourcesPopupWindow();
-//    }
-//
-//    private void initresourcesPopupWindow() {
-//        View contView = LayoutInflater.from(mActivity).inflate(R.layout.index_recycle_item, null);
-//        edit_et = (ClearableEditText) contView.findViewById(R.id.edit_et);
-//        TextView sure_tv = (TextView) contView.findViewById(R.id.sure_tv);
-//        TextView cancle_tv = (TextView) contView.findViewById(R.id.cancle_tv);
-//        ImageView search_im = contView.findViewById(R.id.search_im);
-//        LinearLayout line_top = contView.findViewById(R.id.line_top);
-//        rv_line_ip_port_data = contView.findViewById(R.id.rv_ip_port_data);
-//        rv_line_ip_port_data.addItemDecoration(new DividerItemDecoration(mActivity, LinearLayout.VERTICAL));
-//        rv_line_ip_port_data.setLayoutManager(new LinearLayoutManager(mActivity));
-//        ipAndResourcesPortAdapter = new PostPunchFragment.IpAndResourcesPortAdapter(ComDataBeanList);
-//        ipAndResourcesPortAdapter.setmList(ComDataBeanList);
-//        rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
-//        setlineAdapter(ComDataBeanList);
-//        //        edit_et.setText(ct_qty.getText().toString().trim());
-//
-//        edit_et.requestFocus();
-//        editPW = new PopupWindow(contView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
-//        editPW.setTouchable(true);
-//        editPW.setBackgroundDrawable(new BitmapDrawable());
-//        editPW.setOnDismissListener(new BasePopupWindow.OnDismissListener() {
-//            @Override
-//            public void onDismiss() {
-//                closeListPopupWindow();
-//            }
-//        });
-//        View parentView = mActivity.getWindow().findViewById(Window.ID_ANDROID_CONTENT);
-//        editPW.showAtLocation(parentView, Gravity.CENTER, 0, 0);
-//        CommonUtil.setBackgroundAlpha(mActivity, 0.5f);
-//        edit_et.setOnEditorActionListener(new TextView.OnEditorActionListener() {
-//            @Override
-//            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-//                if (actionId == EditorInfo.IME_ACTION_DONE
-//                        || actionId == EditorInfo.IME_ACTION_SEND
-//                        || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
-//                    String mSearchStr = edit_et.getText().toString().trim();
-//                    if (!mSearchStr.isEmpty()) {
-//                        List<PostPunchFragment.ComDataBean> thisList = new ArrayList<>();
-//                        for(int i=0;i<ComDataBeanList.size();i++){
-//                            if(ComDataBeanList.get(i).getItemremark().contains(mSearchStr)||ComDataBeanList.get(i).getItemName().contains(mSearchStr)){
-//                                thisList.add(ComDataBeanList.get(i));
-//                            }
-//                            if(i == ComDataBeanList.size() -1){
-//                                ipAndResourcesPortAdapter = new PostPunchFragment.IpAndResourcesPortAdapter(thisList);
-//                                rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
-//                                LogUtil.i("mSearchStr", JSON.toJSONString(thisList));
-//
-//                            }
-//                            List<PostPunchFragment.ComDataBean> lineCodeEntities = ipAndResourcesPortAdapter.getmList();
-//                            for (int j = 0; j < lineCodeEntities.size(); j++) {
-//                                lineCodeEntities.get(j).setChecked(false);
-//                            }
-//                            ipAndResourcesPortAdapter.notifyDataSetChanged();
-//                        }
-//
-//
-//                    } else {
-//                        ipAndResourcesPortAdapter = new PostPunchFragment.IpAndResourcesPortAdapter(ComDataBeanList);
-//                        rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
-//                        List<PostPunchFragment.ComDataBean> lineCodeEntities = ipAndResourcesPortAdapter.getmList();
-//                        for (int i = 0; i < lineCodeEntities.size(); i++) {
-//                            lineCodeEntities.get(i).setChecked(false);
-//                        }
-//                        ipAndResourcesPortAdapter.notifyDataSetChanged();
-//
-//                    }
-//                    ipAndResourcesPortAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
-//
-//                        @Override
-//                        public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
-//                            List<PostPunchFragment.ComDataBean> ipAndPortBeans = ipAndResourcesPortAdapter.getmList();
-//                            sc_name = ipAndPortBeans.get(position).getItemName();
-//                            sc_code = ipAndPortBeans.get(position).getItemremark();
-//                            for (int i = 0; i < ipAndPortBeans.size(); i++) {
-//                                ipAndPortBeans.get(i).setChecked(false);
-//                            }
-//                            ipAndPortBeans.get(position).setChecked(true);
-//                            ipAndResourcesPortAdapter.notifyDataSetChanged();
-//                        }
-//                    });
-//                    return true;
-//                }
-//                return false;
-//            }
-//        });
-//
-//
-//        search_im.setOnClickListener(new View.OnClickListener() {
-//            @Override
-//            public void onClick(View v) {
-//                String mSearchStr = edit_et.getText().toString().trim();
-//                if (!mSearchStr.isEmpty()) {
-//                    List<PostPunchFragment.ComDataBean> thisList = new ArrayList<>();
-//                    for(int i=0;i<ComDataBeanList.size();i++){
-//                        if(ComDataBeanList.get(i).getItemremark().contains(mSearchStr)||ComDataBeanList.get(i).getItemName().contains(mSearchStr)){
-//                            thisList.add(ComDataBeanList.get(i));
-//                        }
-//                        if(i == ComDataBeanList.size() -1){
-//                            ipAndResourcesPortAdapter = new PostPunchFragment.IpAndResourcesPortAdapter(thisList);
-//                            rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
-//                            LogUtil.i("mSearchStr", JSON.toJSONString(thisList));
-//
-//                        }
-//                        List<PostPunchFragment.ComDataBean> lineCodeEntities = ipAndResourcesPortAdapter.getmList();
-//                        for (int j = 0; j < lineCodeEntities.size(); j++) {
-//                            lineCodeEntities.get(j).setChecked(false);
-//                        }
-//                        ipAndResourcesPortAdapter.notifyDataSetChanged();
-//                    }
-//
-//
-//                } else {
-//                    ipAndResourcesPortAdapter = new PostPunchFragment.IpAndResourcesPortAdapter(ComDataBeanList);
-//                    rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
-//                    List<PostPunchFragment.ComDataBean> lineCodeEntities = ipAndResourcesPortAdapter.getmList();
-//                    for (int i = 0; i < lineCodeEntities.size(); i++) {
-//                        lineCodeEntities.get(i).setChecked(false);
-//                    }
-//                    ipAndResourcesPortAdapter.notifyDataSetChanged();
-//
-//                }
-//                ipAndResourcesPortAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
-//
-//                    @Override
-//                    public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
-//                        List<PostPunchFragment.ComDataBean> ipAndPortBeans = ipAndResourcesPortAdapter.getmList();
-//                        sc_name = ipAndPortBeans.get(position).getItemName();
-//                        sc_code = ipAndPortBeans.get(position).getItemremark();
-//                        for (int i = 0; i < ipAndPortBeans.size(); i++) {
-//                            ipAndPortBeans.get(i).setChecked(false);
-//                        }
-//                        ipAndPortBeans.get(position).setChecked(true);
-//                        ipAndResourcesPortAdapter.notifyDataSetChanged();
-//                    }
-//                });
-//            }
-//
-//        });
-//
-//
-//
-//        List<String> list=new ArrayList<>();
-//        //确定
-//        sure_tv.setOnClickListener(new View.OnClickListener() {
-//            @Override
-//            public void onClick(View v) {
-//                list.clear();
-//
-//                if (StringUtil.isEmpty(sc_code)){
-//                    CommonUtil.toastNoRepeat(mActivity,"请选择工序");
-//                    return;
-//                }
-//                ct_qty.setText(sc_code);
-//                ct_qty.requestFocus();
-//                ct_qty.setSelection(ct_qty.getText().length());
-//                getSourcePunchInfo(ct_qty.getText().toString().trim());
-//                closeListPopupWindow();
-//            }
-//        });
-//
-//        //取消
-//        cancle_tv.setOnClickListener(new View.OnClickListener() {
-//            @Override
-//            public void onClick(View v) {
-//                closeListPopupWindow();
-//            }
-//        });
-//
-//        String mSearchStr = edit_et.getText().toString().trim();
-//        if (mSearchStr.isEmpty()) {
-//            ipAndResourcesPortAdapter = new PostPunchFragment.IpAndResourcesPortAdapter(ComDataBeanList);
-//            rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
-//            List<PostPunchFragment.ComDataBean> lineCodeEntities = ipAndResourcesPortAdapter.getmList();
-//            for (int i = 0; i < lineCodeEntities.size(); i++) {
-//                lineCodeEntities.get(i).setChecked(false);
-//            }
-//            ipAndResourcesPortAdapter.notifyDataSetChanged();
-//
-//            ipAndResourcesPortAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
-//
-//                @Override
-//                public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
-//                    List<PostPunchFragment.ComDataBean> ipAndPortBeans = ipAndResourcesPortAdapter.getmList();
-//                    sc_name = ipAndPortBeans.get(position).getItemName();
-//                    sc_code = ipAndPortBeans.get(position).getItemremark();
-//                    for (int i = 0; i < ipAndPortBeans.size(); i++) {
-//                        ipAndPortBeans.get(i).setChecked(false);
-//                    }
-//                    ipAndPortBeans.get(position).setChecked(true);
-//                    ipAndResourcesPortAdapter.notifyDataSetChanged();
-//                }
-//            });
-//        }
-//    }
-//
-//
-//    private void closeListPopupWindow() {
-//        if (editPW != null) {
-//            editPW.dismiss();
-//            editPW = null;
-//            CommonUtil.setBackgroundAlpha(mActivity, 1f);
-//        }
-//
-//    }
-//
-//
-//}

+ 687 - 0
app/src/main/java/com/uas/hystorage/activity/InspectionSendSamplesAct.java

@@ -0,0 +1,687 @@
+package com.uas.hystorage.activity;
+
+import android.content.Intent;
+import android.graphics.drawable.BitmapDrawable;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.DividerItemDecoration;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.Window;
+import android.view.inputmethod.EditorInfo;
+import android.widget.Button;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.PopupWindow;
+import android.widget.RadioGroup;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.android.volley.Request;
+import com.android.volley.toolbox.StringRequest;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.google.gson.Gson;
+import com.uas.hystorage.R;
+import com.uas.hystorage.bean.InspectionPaintBean;
+import com.uas.hystorage.fragment.BlueToothPrintFragment;
+import com.uas.hystorage.fragment.HePiFragment;
+import com.uas.hystorage.global.GloableParams;
+import com.uas.hystorage.listener.MyEditorActionListener;
+import com.uas.hystorage.tools.SharedPreUtil;
+import com.uas.hystorage.util.CommonUtil;
+import com.uas.hystorage.util.Constants;
+import com.uas.hystorage.util.FastjsonUtil;
+import com.uas.hystorage.util.FragmentUtils;
+import com.uas.hystorage.util.HttpCallback;
+import com.uas.hystorage.util.HttpParams;
+import com.uas.hystorage.util.LogUtil;
+import com.uas.hystorage.util.PrintUtils;
+import com.uas.hystorage.util.StringUtil;
+import com.uas.hystorage.util.VolleyRequest;
+import com.uas.hystorage.util.VollyRequest;
+import com.uas.hystorage.view.ClearableEditText;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import razerdp.basepopup.BasePopupWindow;
+
+public class InspectionSendSamplesAct extends BaseActivity {
+
+    protected String TAG = getClass().getName();
+    private Button bt_return;
+    private TextView tv_title, tv_gangweiname;
+    private ImageView iv_icon, iv_search;
+    private RadioGroup rg_jianyanleixin;
+    private ClearableEditText cet_gangweiziyuan;
+    private TextView cet_jitai, cet_gondanhao, cet_xiangmuhao;
+    private TextView tv_isok, tv_details;
+    private Button bt_dayinbiaoqian;
+    private LinearLayout ll_inspection;
+    private FrameLayout fl_dayin;
+
+    private String rb_changetext = "首件";
+    private StringRequest mStringRequest;
+    private ClearableEditText edit_et;
+    private RecyclerView rv_line_ip_port_data;
+    private PopupWindow editPW;
+    private IpAndResourcesPortAdapter ipAndResourcesPortAdapter;
+    private ArrayList<ComDataBean> ComDataBeanList;
+    private String sc_name;
+    private String sc_code;
+    private boolean isPrinting = false;
+    private boolean isConnected = false;
+    private int mPrintDpi = 203;
+
+    @Override
+    protected void initViews() {
+        setContentView(R.layout.act_inspection_send_samples);
+        bt_return = findViewById(R.id.bt_return);
+        tv_title = findViewById(R.id.tv_title);
+        iv_icon = findViewById(R.id.iv_icon);
+
+        ll_inspection = findViewById(R.id.ll_inspection);
+        fl_dayin = findViewById(R.id.fl_dayin);
+
+        rg_jianyanleixin = findViewById(R.id.rg_jianyanleixin);
+        cet_gangweiziyuan = findViewById(R.id.cet_gangweiziyuan);
+        iv_search = findViewById(R.id.iv_search);
+        tv_gangweiname = findViewById(R.id.tv_gangweiname);
+
+        cet_jitai = findViewById(R.id.cet_jitai);
+        cet_gondanhao = findViewById(R.id.cet_gondanhao);
+        cet_xiangmuhao = findViewById(R.id.cet_xiangmuhao);
+
+        bt_dayinbiaoqian = findViewById(R.id.bt_dayinbiaoqian);
+        tv_isok = findViewById(R.id.tv_isok);
+        tv_details = findViewById(R.id.tv_details);
+
+        ComDataBeanList = new ArrayList<>();
+        isConnected = (SharedPreUtil.getInt(InspectionSendSamplesAct.this, "printConnect", 0) == 1);
+        mPrintDpi = SharedPreUtil.getInt(InspectionSendSamplesAct.this, "printDpi", 203);
+    }
+
+    @Override
+    protected void initEvents() {
+        bt_return.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+        iv_icon.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                //送样清单列表
+                startActivity(new Intent(InspectionSendSamplesAct.this,SampleDeliveryListAct.class));
+            }
+        });
+        rg_jianyanleixin.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(RadioGroup group, int checkedId) {
+                switch (checkedId) {
+                    case R.id.rb_shoujian:
+                        rb_changetext = "首件";
+                        break;
+                    case R.id.rb_xunjian:
+                        rb_changetext = "巡检";
+                        break;
+                }
+            }
+        });
+
+        CommonUtil.setEditorActionListener(cet_gangweiziyuan, new MyEditorActionListener() {
+            @Override
+            public void MyEditorAction(String text, int actionId, KeyEvent event) {
+                getSourcePunchInfo(text);
+            }
+        });
+
+        iv_search.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getRepairStep();
+            }
+        });
+
+        bt_dayinbiaoqian.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getPrintLabel();
+            }
+        });
+    }
+
+    /**
+     * 打印标签按钮
+     * */
+    private void getPrintLabel() {
+        //String  data   --json 串
+        //{sr_sccode:岗位资源编号,sr_devcode:机台号,sr_makecode:工单号,sr_itemcode:项目号,sr_sendtype:送样类型(首件或者巡检)}
+        //测试数据:
+        //{"sr_sccode":"ZX0000-104","sr_devcode":"DEV001","sr_makecode":"5106-24090610269-5","sr_itemcode":"2323342","sr_sendtype":"首件"}
+        if (TextUtils.isEmpty(cet_gangweiziyuan.getText().toString().trim())) {
+            CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, "岗位资源不能为空");
+            return;
+        }
+        if (TextUtils.isEmpty(cet_jitai.getText().toString().trim())) {
+            CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, "机台号不能为空");
+            return;
+        }
+        if (TextUtils.isEmpty(cet_gondanhao.getText().toString().trim())) {
+            CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, "工单号不能为空");
+            return;
+        }
+        if (TextUtils.isEmpty(cet_xiangmuhao.getText().toString().trim())) {
+            CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, "项目号不能为空");
+            return;
+        }
+        Map<String, Object> params = new HashMap<>();
+        params.put("sr_sccode",cet_gangweiziyuan.getText().toString().trim());
+        params.put("sr_devcode",cet_jitai.getText().toString().trim());
+        params.put("sr_makecode",cet_gondanhao.getText().toString().trim());
+        params.put("sr_itemcode",cet_xiangmuhao.getText().toString().trim());
+        params.put("sr_sendtype",rb_changetext);
+        String data = JSON.toJSONString(params);
+        progressDialog.show();
+        VollyRequest.getInstance().stringRequest(mStringRequest,
+                new HttpParams.Builder()
+                        .url(GloableParams.ADDRESS_SAVESAMPLEREPORT)
+                        .method(Request.Method.POST)
+                        .addParam("data",data)
+                        .tag("getMaCode")
+                        .flag(0)
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        progressDialog.dismiss();
+                        try{
+                            InspectionPaintBean inspectionPaintBean = new Gson().fromJson(o.toString(), InspectionPaintBean.class);
+                            if (inspectionPaintBean != null && inspectionPaintBean.isSuccess()) {
+                                InspectionPaintBean.DataBean data1 = inspectionPaintBean.getData().get(0);
+                                tv_isok.setTextColor(getResources().getColor(R.color.blue));
+                                tv_isok.setText("生成送样单成功");
+                                tv_details.setText("单号: " + data1.getSR_CODE() + "\n" +
+                                        "检验类型: " + data1.getSR_SENDTYPE() +  "\n" +
+                                        "岗位资源: " + data1.getSR_SCCODE() + "(" + data1.getSR_SCNAME() + ")" +  "\n" +
+                                        "机台: " + data1.getSR_DEVCODE() +  "\n" +
+                                        "工单号: " + data1.getSR_MAKECODE() +  "\n" +
+                                        "项目号: " + data1.getSR_ITEMCODE()
+                                );
+                                //调用打印接口
+                                JSONObject resultObject = JSON.parseObject(o.toString());
+                                JSONArray savedataArrays = resultObject.getJSONArray("data");
+                                if (savedataArrays != null && savedataArrays.size() > 0) {
+                                    getPrintTemplate(savedataArrays);
+                                }
+                            }
+                        }catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                        progressDialog.dismiss();
+                        tv_isok.setTextColor(getResources().getColor(R.color.red));
+                        tv_isok.setText(failStr);
+                    }
+                });
+    }
+
+    /**
+     * 打印
+     * */
+    private void getPrintTemplate(JSONArray savedataArrays) {
+        progressDialog.show();
+        VolleyRequest.getInstance().stringRequest(mStringRequest,
+                new HttpParams.Builder()
+                        .url(GloableParams.ADDRESS_BARINFO_PRINTMODEL)
+                        .method(Request.Method.GET)
+                        .flag(0)
+                        .tag("barinfoPrint")
+                        .addParam("caller", "SampleReportBarPrint")//Barcode!PDAPrint仓库
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        progressDialog.dismiss();
+                        try {
+                            String result = o.toString();
+                            Log.e("aaa", "打印接口数据" + result);
+                            if (FastjsonUtil.validate(result)) {
+                                JSONObject resultObject = JSON.parseObject(result);
+                                JSONArray dataArray = resultObject.getJSONArray("data");
+                                if (dataArray != null && dataArray.size() > 0) {
+                                    SharedPreUtil.saveString(InspectionSendSamplesAct.this, Constants.FLAG.PRINT_TEMPLATE_CACHE, dataArray.toJSONString());
+                                }
+                                //打印时传递保存的数据,非打印模板的数据
+                                printEvent(savedataArrays);
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+
+                    }
+
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                        progressDialog.dismiss();
+                        CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, failStr);
+                    }
+                });
+    }
+
+
+    /**
+     * 搜索
+     * */
+    private void getRepairStep() {
+        progressDialog.show();
+        VollyRequest.getInstance().stringRequest(mStringRequest,
+                new HttpParams.Builder()
+                        .url(GloableParams.ADDRESS_PAD_GETSOURCEBYEMP)
+                        .method(Request.Method.GET)
+                        .tag("getMaCode")
+                        .flag(0)
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        progressDialog.dismiss();
+                        Boolean isSuccess = FastjsonUtil.getBoolean(o.toString(),"success");
+                        JSONArray dataArray = FastjsonUtil.getJSONArray(o.toString(), "data");
+                        if (isSuccess){
+                            if (dataArray == null){
+                                CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this,"未搜索到匹配数据");
+                            }else {
+                                handleFeededlineData(dataArray);
+                            }
+                        }
+                    }
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                        progressDialog.dismiss();
+                        tv_isok.setTextColor(getResources().getColor(R.color.red));
+                        tv_isok.setText(failStr);
+                        //CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, failStr);
+                    }
+                });
+    }
+
+    private void printEvent(com.alibaba.fastjson.JSONArray printArray) {
+        if (isPrinting) {
+            CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, "正在打印中,请勿重复操作");
+            return;
+        }
+        isPrinting = true;
+        if (printArray != null && printArray.size() > 0) {
+            boolean isFail = false;
+            for (int i = 0; i < printArray.size(); i++) {
+                try {
+                    JSONObject printObject = printArray.getJSONObject(i);
+                    int printResult = PrintUtils.printBar(InspectionSendSamplesAct.this, printObject.toString(), mPrintDpi, null);
+                    if (printResult <= 0) {
+                        isFail = true;
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            progressDialog.dismiss();
+            if (isFail) {
+                isConnected = false;
+                SharedPreUtil.saveInt(InspectionSendSamplesAct.this, "printConnect", 0);
+                CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, "打印失败,请重新连接打印机");
+
+                Intent intent = new Intent(InspectionSendSamplesAct.this, BlueToothPrintAct.class);
+                intent.putExtra(Constants.KEY.BARCODE_PRINT_ARRAY, printArray.toString());
+                startActivity(intent);
+            } else {
+                CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, "打印成功");
+            }
+        } else {
+            CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, "打印失败,条码数据为空");
+        }
+        isPrinting = false;
+    }
+
+    @Override
+    protected void initDatas() {
+        tv_title.setText("检验送样");
+        iv_icon.setBackground(getResources().getDrawable(R.drawable.ic_jump_smt_query));
+    }
+
+    private void handleFeededlineData(JSONArray dataArray) {
+        ComDataBean bean;
+        ComDataBeanList.clear();
+        for (Object index : dataArray) {
+            JSONObject data = (JSONObject) index;
+            bean= new ComDataBean();
+            bean.setItemName(data.getString("SC_NAME"));
+            bean.setItemremark(data.getString("SC_CODE"));
+            ComDataBeanList.add(bean);
+        }
+        initresourcesPopupWindow();
+    }
+
+    private void initresourcesPopupWindow() {
+        View contView = LayoutInflater.from(InspectionSendSamplesAct.this).inflate(R.layout.index_recycle_item, null);
+        edit_et = (ClearableEditText) contView.findViewById(R.id.edit_et);
+        TextView sure_tv = (TextView) contView.findViewById(R.id.sure_tv);
+        TextView cancle_tv = (TextView) contView.findViewById(R.id.cancle_tv);
+        ImageView search_im = contView.findViewById(R.id.search_im);
+        LinearLayout line_top = contView.findViewById(R.id.line_top);
+        rv_line_ip_port_data = contView.findViewById(R.id.rv_ip_port_data);
+        rv_line_ip_port_data.addItemDecoration(new DividerItemDecoration(InspectionSendSamplesAct.this, LinearLayout.VERTICAL));
+        rv_line_ip_port_data.setLayoutManager(new LinearLayoutManager(InspectionSendSamplesAct.this));
+        ipAndResourcesPortAdapter = new IpAndResourcesPortAdapter(ComDataBeanList);
+        ipAndResourcesPortAdapter.setmList(ComDataBeanList);
+        rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
+        setlineAdapter(ComDataBeanList);
+        //        edit_et.setText(ct_qty.getText().toString().trim());
+
+        edit_et.requestFocus();
+        editPW = new PopupWindow(contView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
+        editPW.setTouchable(true);
+        editPW.setBackgroundDrawable(new BitmapDrawable());
+        editPW.setOnDismissListener(new BasePopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                closeListPopupWindow();
+            }
+        });
+        View parentView = InspectionSendSamplesAct.this.getWindow().findViewById(Window.ID_ANDROID_CONTENT);
+        editPW.showAtLocation(parentView, Gravity.CENTER, 0, 0);
+        CommonUtil.setBackgroundAlpha(InspectionSendSamplesAct.this, 0.5f);
+        edit_et.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+                if (actionId == EditorInfo.IME_ACTION_DONE
+                        || actionId == EditorInfo.IME_ACTION_SEND
+                        || (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
+                    String mSearchStr = edit_et.getText().toString().trim();
+                    if (!mSearchStr.isEmpty()) {
+                        List<ComDataBean> thisList = new ArrayList<>();
+                        for(int i=0;i<ComDataBeanList.size();i++){
+                            if(ComDataBeanList.get(i).getItemremark().contains(mSearchStr)||ComDataBeanList.get(i).getItemName().contains(mSearchStr)){
+                                thisList.add(ComDataBeanList.get(i));
+                            }
+                            if(i == ComDataBeanList.size() -1){
+                                ipAndResourcesPortAdapter = new IpAndResourcesPortAdapter(thisList);
+                                rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
+                                LogUtil.i("mSearchStr", JSON.toJSONString(thisList));
+
+                            }
+                            List<ComDataBean> lineCodeEntities = ipAndResourcesPortAdapter.getmList();
+                            for (int j = 0; j < lineCodeEntities.size(); j++) {
+                                lineCodeEntities.get(j).setChecked(false);
+                            }
+                            ipAndResourcesPortAdapter.notifyDataSetChanged();
+                        }
+                    } else {
+                        ipAndResourcesPortAdapter = new IpAndResourcesPortAdapter(ComDataBeanList);
+                        rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
+                        List<ComDataBean> lineCodeEntities = ipAndResourcesPortAdapter.getmList();
+                        for (int i = 0; i < lineCodeEntities.size(); i++) {
+                            lineCodeEntities.get(i).setChecked(false);
+                        }
+                        ipAndResourcesPortAdapter.notifyDataSetChanged();
+
+                    }
+                    ipAndResourcesPortAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+
+                        @Override
+                        public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
+                            List<ComDataBean> ipAndPortBeans = ipAndResourcesPortAdapter.getmList();
+                            sc_name = ipAndPortBeans.get(position).getItemName();
+                            sc_code = ipAndPortBeans.get(position).getItemremark();
+                            for (int i = 0; i < ipAndPortBeans.size(); i++) {
+                                ipAndPortBeans.get(i).setChecked(false);
+                            }
+                            ipAndPortBeans.get(position).setChecked(true);
+                            ipAndResourcesPortAdapter.notifyDataSetChanged();
+                        }
+                    });
+                    return true;
+                }
+                return false;
+            }
+        });
+
+        search_im.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String mSearchStr = edit_et.getText().toString().trim();
+                if (!mSearchStr.isEmpty()) {
+                    List<ComDataBean> thisList = new ArrayList<>();
+                    for(int i=0;i<ComDataBeanList.size();i++){
+                        if(ComDataBeanList.get(i).getItemremark().contains(mSearchStr)||ComDataBeanList.get(i).getItemName().contains(mSearchStr)){
+                            thisList.add(ComDataBeanList.get(i));
+                        }
+                        if(i == ComDataBeanList.size() -1){
+                            ipAndResourcesPortAdapter = new IpAndResourcesPortAdapter(thisList);
+                            rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
+                            LogUtil.i("mSearchStr", JSON.toJSONString(thisList));
+
+                        }
+                        List<ComDataBean> lineCodeEntities = ipAndResourcesPortAdapter.getmList();
+                        for (int j = 0; j < lineCodeEntities.size(); j++) {
+                            lineCodeEntities.get(j).setChecked(false);
+                        }
+                        ipAndResourcesPortAdapter.notifyDataSetChanged();
+                    }
+
+
+                } else {
+                    ipAndResourcesPortAdapter = new IpAndResourcesPortAdapter(ComDataBeanList);
+                    rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
+                    List<ComDataBean> lineCodeEntities = ipAndResourcesPortAdapter.getmList();
+                    for (int i = 0; i < lineCodeEntities.size(); i++) {
+                        lineCodeEntities.get(i).setChecked(false);
+                    }
+                    ipAndResourcesPortAdapter.notifyDataSetChanged();
+
+                }
+                ipAndResourcesPortAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+
+                    @Override
+                    public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
+                        List<ComDataBean> ipAndPortBeans = ipAndResourcesPortAdapter.getmList();
+                        sc_name = ipAndPortBeans.get(position).getItemName();
+                        sc_code = ipAndPortBeans.get(position).getItemremark();
+                        for (int i = 0; i < ipAndPortBeans.size(); i++) {
+                            ipAndPortBeans.get(i).setChecked(false);
+                        }
+                        ipAndPortBeans.get(position).setChecked(true);
+                        ipAndResourcesPortAdapter.notifyDataSetChanged();
+                    }
+                });
+            }
+        });
+
+        List<String> list=new ArrayList<>();
+        //确定
+        sure_tv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                list.clear();
+
+                if (StringUtil.isEmpty(sc_code)){
+                    CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this,"请选择工序");
+                    return;
+                }
+                cet_gangweiziyuan.setText(sc_code);
+                cet_gangweiziyuan.requestFocus();
+                cet_gangweiziyuan.setSelection(cet_gangweiziyuan.getText().length());
+                getSourcePunchInfo(cet_gangweiziyuan.getText().toString().trim());
+                closeListPopupWindow();
+            }
+        });
+
+        //取消
+        cancle_tv.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                closeListPopupWindow();
+            }
+        });
+
+        String mSearchStr = edit_et.getText().toString().trim();
+        if (mSearchStr.isEmpty()) {
+            ipAndResourcesPortAdapter = new IpAndResourcesPortAdapter(ComDataBeanList);
+            rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
+            List<ComDataBean> lineCodeEntities = ipAndResourcesPortAdapter.getmList();
+            for (int i = 0; i < lineCodeEntities.size(); i++) {
+                lineCodeEntities.get(i).setChecked(false);
+            }
+            ipAndResourcesPortAdapter.notifyDataSetChanged();
+
+            ipAndResourcesPortAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+
+                @Override
+                public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
+                    List<ComDataBean> ipAndPortBeans = ipAndResourcesPortAdapter.getmList();
+                    sc_name = ipAndPortBeans.get(position).getItemName();
+                    sc_code = ipAndPortBeans.get(position).getItemremark();
+                    for (int i = 0; i < ipAndPortBeans.size(); i++) {
+                        ipAndPortBeans.get(i).setChecked(false);
+                    }
+                    ipAndPortBeans.get(position).setChecked(true);
+                    ipAndResourcesPortAdapter.notifyDataSetChanged();
+                }
+            });
+        }
+    }
+
+    /**
+     * 岗位资源enter事件
+     */
+    private void getSourcePunchInfo(String sccode) {
+        if (sccode.isEmpty()){
+            CommonUtil.toastNoRepeat(InspectionSendSamplesAct.this, "请输入岗位编号");
+            return;
+        }
+
+        progressDialog.show();
+        VollyRequest.getInstance().stringRequest(mStringRequest,
+                new HttpParams.Builder()
+                        .url(GloableParams.ADDRESS_GETSOURCEDATA)
+                        .method(Request.Method.GET)
+                        .tag(TAG + "getMaCode")
+                        .flag(0)
+                        .addParam("sc_code",sccode)//岗位资源编号
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        progressDialog.dismiss();
+                        Boolean isSuccess = FastjsonUtil.getBoolean(o.toString(),"success");
+                        if (isSuccess){
+                            JSONObject dataObject = FastjsonUtil.getJSONObject(o.toString(),"data");
+                            if (dataObject == null){
+
+                            }else {
+                                String SC_CODE = dataObject.getString("SC_CODE") == null ? "" : dataObject.getString("SC_CODE");
+                                String SC_NAME = dataObject.getString("SC_NAME") == null ? "" : dataObject.getString("SC_NAME");
+                                tv_gangweiname.setText(SC_NAME);
+                            }
+                        }
+                    }
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                        progressDialog.dismiss();
+                        tv_isok.setText(failStr);
+                        tv_isok.setTextColor(getResources().getColor(R.color.red));
+                        cet_gangweiziyuan.requestFocus();
+                    }
+                });
+    }
+
+    private void setlineAdapter(ArrayList<ComDataBean> mList) {
+        LogUtil.i("mList", JSON.toJSONString(mList));
+        ipAndResourcesPortAdapter = new IpAndResourcesPortAdapter(mList);
+        ipAndResourcesPortAdapter.setmList(ComDataBeanList);
+        ipAndResourcesPortAdapter.notifyDataSetChanged();
+        rv_line_ip_port_data.setAdapter(ipAndResourcesPortAdapter);
+    }
+
+    private void closeListPopupWindow() {
+        if (editPW != null) {
+            editPW.dismiss();
+            editPW = null;
+            CommonUtil.setBackgroundAlpha(InspectionSendSamplesAct.this, 1f);
+        }
+
+    }
+
+    private class IpAndResourcesPortAdapter extends BaseQuickAdapter<ComDataBean, BaseViewHolder> {
+        private List<ComDataBean> mmmmList;
+
+        public List<ComDataBean> getmList() {
+            return mmmmList;
+        }
+
+        public void setmList(List<ComDataBean> mList) {
+            this.mmmmList = mList;
+        }
+        public ComDataBean getBeanByPositon(int position){
+            return mmmmList.get(position);
+        }
+
+        private IpAndResourcesPortAdapter(@Nullable List<ComDataBean> data) {
+            super(R.layout.fuzzy_ipandport_item, data);
+            this.mmmmList = data;
+        }
+        @Override
+        protected void convert(BaseViewHolder helper, ComDataBean item) {
+            helper.setText(R.id.macode_ip__Tv,item.getItemremark()+"-("+item.getItemName()+")");
+            LinearLayout line_true = helper.itemView.findViewById(R.id.line_true);
+            if (item.getChecked()) {
+                line_true.setSelected(true);
+            } else {
+                line_true.setSelected(false);
+            }
+        }
+    }
+
+
+    private class ComDataBean{
+        String itemName = null;
+        String itemremark = null;
+        boolean Checked;
+
+        public boolean getChecked() {
+            return Checked;
+        }
+
+        public void setChecked(boolean checked) {
+            Checked = checked;
+        }
+
+        public String getItemName() {
+            return itemName;
+        }
+
+        public void setItemName(String itemName) {
+            this.itemName = itemName;
+        }
+
+        public String getItemremark() {
+            return itemremark;
+        }
+
+        public void setItemremark(String itemremark) {
+            this.itemremark = itemremark;
+        }
+    }
+    
+}

+ 614 - 0
app/src/main/java/com/uas/hystorage/activity/SampleDeliveryListAct.java

@@ -0,0 +1,614 @@
+package com.uas.hystorage.activity;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
+import android.support.v7.widget.DividerItemDecoration;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.inputmethod.EditorInfo;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.android.volley.Request;
+import com.android.volley.toolbox.StringRequest;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.handmark.pulltorefresh.library.PullToRefreshBase;
+import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.uas.hystorage.R;
+import com.uas.hystorage.bean.SampleDeliveryBean;
+import com.uas.hystorage.fragment.BlueToothPrintFragment;
+import com.uas.hystorage.fragment.HePiFragment;
+import com.uas.hystorage.global.GloableParams;
+import com.uas.hystorage.tools.SharedPreUtil;
+import com.uas.hystorage.util.CommonUtil;
+import com.uas.hystorage.util.Constants;
+import com.uas.hystorage.util.FastjsonUtil;
+import com.uas.hystorage.util.FragmentUtils;
+import com.uas.hystorage.util.HttpCallback;
+import com.uas.hystorage.util.HttpParams;
+import com.uas.hystorage.util.ListUtils;
+import com.uas.hystorage.util.LogUtil;
+import com.uas.hystorage.util.PrintUtils;
+import com.uas.hystorage.util.StringUtil;
+import com.uas.hystorage.util.VolleyRequest;
+import com.uas.hystorage.util.VollyRequest;
+import com.uas.hystorage.view.ClearableEditText;
+import com.uas.hystorage.view.EmptyLayout;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SampleDeliveryListAct extends BaseActivity{
+
+    private StringRequest mStringRequest;
+    private List<SampleDeliveryBean> ComDataBeanList;
+//    private RecyclerView rv_data;
+//    private InspectionAdapter inspectionAdapter;
+    private ClearableEditText cet_search_et;
+    private TextView tv_title,tv_search_btn;
+    private Button bt_return;
+
+    private boolean isPrinting = false;
+    private boolean isConnected = false;
+    private int mPrintDpi = 203;
+    private PullToRefreshListView refreshListView;
+    private int page = 1;
+    private int pageSize = 20;
+    private EmptyLayout mEmptyLayout;
+
+    private ListAdapter mAdapter = null;
+
+    @Override
+    protected void initViews() {
+        setContentView(R.layout.act_sample_selivery_list);
+
+        bt_return = findViewById(R.id.bt_return);
+        tv_title = findViewById(R.id.tv_title);
+
+        cet_search_et = findViewById(R.id.cet_search_et);
+        tv_search_btn = findViewById(R.id.tv_search_btn);
+        refreshListView = findViewById(R.id.refreshListView);
+//        rv_data = findViewById(R.id.rv_data);
+
+        ComDataBeanList = new ArrayList<>();
+//        rv_data.addItemDecoration(new DividerItemDecoration(SampleDeliveryListAct.this, LinearLayout.VERTICAL));
+//        rv_data.setLayoutManager(new LinearLayoutManager(SampleDeliveryListAct.this));
+//        inspectionAdapter = new InspectionAdapter(ComDataBeanList);
+//        inspectionAdapter.setmList(ComDataBeanList);
+//        rv_data.setAdapter(inspectionAdapter);
+
+    }
+
+    @Override
+    protected void initEvents() {
+        bt_return.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                finish();
+            }
+        });
+        cet_search_et.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+                if (actionId == EditorInfo.IME_ACTION_DONE
+                        || actionId == EditorInfo.IME_ACTION_SEND
+                        || (event != null && event.getAction() == KeyEvent.ACTION_DOWN
+                        && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
+                    String mSearchStr = cet_search_et.getText().toString().trim();
+                    if (!mSearchStr.isEmpty()) {
+                        getQualityController(page,pageSize,mSearchStr);
+                    }
+                }
+                return false;
+            }
+        });
+        tv_search_btn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getQualityController(page,pageSize,cet_search_et.getText().toString().trim());
+            }
+        });
+
+//        inspectionAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
+//            @Override
+//            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
+//                try{
+//                    int numberId = ComDataBeanList.get(position).getSR_ID();
+//                    new AlertDialog.Builder(SampleDeliveryListAct.this).setTitle("提示").setMessage("是否打印标签?")
+//                            .setPositiveButton(getString(R.string.confirm), new DialogInterface.OnClickListener() {
+//                                @Override
+//                                public void onClick(DialogInterface dialog, int which) {
+//                                    printLabel(numberId);
+//                                }
+//                            }).setNegativeButton(getString(R.string.cancel), null)
+//                            .create()
+//                            .show();
+//                }catch (Exception e) {
+//                    e.printStackTrace();
+//                }
+//            }
+//        });
+
+        cet_search_et.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                if (s.length() >= 0) {
+                    String mSearchStr = s.toString().trim();
+                    LogUtil.i("mSearchStr",mSearchStr);
+                    List<SampleDeliveryBean> sampleList = new ArrayList<>();
+                    for(int i=0;i < ComDataBeanList.size();i++){
+                        if(ComDataBeanList.get(i).getSR_CODE().contains(mSearchStr)
+                                || ComDataBeanList.get(i).getSR_SCCODE().contains(mSearchStr)
+                                || ComDataBeanList.get(i).getSR_SCNAME().contains(mSearchStr)
+                                || ComDataBeanList.get(i).getSR_SENDTYPE().contains(mSearchStr)
+                                || ComDataBeanList.get(i).getSR_MAKECODE().contains(mSearchStr)
+                                || ComDataBeanList.get(i).getSR_ITEMCODE().contains(mSearchStr)
+                                || ComDataBeanList.get(i).getSR_DEVCODE().contains(mSearchStr)
+                        ){
+                            sampleList.add(ComDataBeanList.get(i));
+                        }
+                    }
+                    mAdapter.setModels(sampleList);
+                } else {
+                    mAdapter.setModels(ComDataBeanList);
+                }
+            }
+        });
+
+        refreshListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
+                try{
+                    int numberId = ComDataBeanList.get(i).getSR_ID();
+                    new AlertDialog.Builder(SampleDeliveryListAct.this).setTitle("提示").setMessage("是否打印标签?")
+                            .setPositiveButton(getString(R.string.confirm), new DialogInterface.OnClickListener() {
+                                @Override
+                                public void onClick(DialogInterface dialog, int which) {
+                                    printLabel(numberId);
+                                }
+                            }).setNegativeButton(getString(R.string.cancel), null)
+                            .create()
+                            .show();
+                }catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    @Override
+    protected void initDatas() {
+        refreshListView = (PullToRefreshListView) findViewById(R.id.refreshListView);
+        refreshListView.setMode(PullToRefreshBase.Mode.BOTH);
+        mEmptyLayout = new EmptyLayout(this, refreshListView.getRefreshableView());
+        mEmptyLayout.setShowLoadingButton(false);
+        mEmptyLayout.setShowEmptyButton(false);
+        mEmptyLayout.setShowErrorButton(false);
+        mEmptyLayout.setEmptyMessage("暂无数据");
+
+        refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
+            @Override
+            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
+                getQualityController(page = 1,pageSize,"");
+            }
+
+            @Override
+            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
+                getQualityController(page++,pageSize,"");
+            }
+        });
+
+        getQualityController(page,pageSize,"");
+    }
+
+    private void printLabel(int sr_id) {
+        progressDialog.show();
+        VollyRequest.getInstance().stringRequest(mStringRequest,
+                new HttpParams.Builder()
+                        .url(GloableParams.ADDRESS_PRINTSAMPLEREPORT)
+                        .method(Request.Method.GET)
+                        .addParam("sr_id","" + sr_id)
+                        .tag("getMaCode")
+                        .flag(0)
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        progressDialog.dismiss();
+                        Boolean isSuccess = FastjsonUtil.getBoolean(o.toString(),"success");
+                        JSONArray dataArray = FastjsonUtil.getJSONArray(o.toString(), "data");
+                        if (isSuccess){
+                            if (dataArray == null){
+                                CommonUtil.toastNoRepeat(SampleDeliveryListAct.this,"未搜索到匹配数据");
+                            }else {
+                                //调用打印接口
+                                if (dataArray != null && dataArray.size() > 0) {
+                                    getPrintTemplate(dataArray);
+                                }
+                            }
+                        }
+                    }
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                        progressDialog.dismiss();
+                        CommonUtil.toastNoRepeat(SampleDeliveryListAct.this, failStr);
+                    }
+                });
+    }
+
+    private void getQualityController(int page,int pageSize,String condition) {
+        progressDialog.show();
+        if (!TextUtils.isEmpty(condition)) {
+            VollyRequest.getInstance().stringRequest(mStringRequest,
+                    new HttpParams.Builder()
+                            .url(GloableParams.ADDRESS_FUZZYSEARCHSAMPLEREPORT)
+                            .method(Request.Method.GET)
+                            .addParam("condition", condition)
+                            .addParam("page", page + "")
+                            .addParam("pageSize", pageSize + "")
+                            .tag("getMaCode")
+                            .flag(0)
+                            .build(), new HttpCallback() {
+                        @Override
+                        public void onSuccess(int flag, Object o) throws Exception {
+                            progressDialog.dismiss();
+                            Boolean isSuccess = FastjsonUtil.getBoolean(o.toString(), "success");
+                            JSONArray dataArray = FastjsonUtil.getJSONArray(o.toString(), "data");
+                            if (isSuccess) {
+                                if (dataArray == null) {
+                                    CommonUtil.toastNoRepeat(SampleDeliveryListAct.this, "未搜索到匹配数据");
+                                } else {
+                                    handleFeededlineData(dataArray);
+                                }
+                                refreshListView.onRefreshComplete();
+                            }
+                        }
+
+                        @Override
+                        public void onFail(int flag, String failStr) throws Exception {
+                            progressDialog.dismiss();
+                            CommonUtil.toastNoRepeat(SampleDeliveryListAct.this, failStr);
+                            refreshListView.onRefreshComplete();
+                        }
+                    });
+        }else {
+            VollyRequest.getInstance().stringRequest(mStringRequest,
+                    new HttpParams.Builder()
+                            .url(GloableParams.ADDRESS_FUZZYSEARCHSAMPLEREPORT)
+                            .method(Request.Method.GET)
+                            .tag("getMaCode")
+                            .flag(0)
+                            .build(), new HttpCallback() {
+                        @Override
+                        public void onSuccess(int flag, Object o) throws Exception {
+                            progressDialog.dismiss();
+                            Boolean isSuccess = FastjsonUtil.getBoolean(o.toString(), "success");
+                            JSONArray dataArray = FastjsonUtil.getJSONArray(o.toString(), "data");
+                            if (isSuccess) {
+                                if (dataArray == null) {
+                                    CommonUtil.toastNoRepeat(SampleDeliveryListAct.this, "未搜索到匹配数据");
+                                } else {
+                                    handleFeededlineData(dataArray);
+                                }
+                                refreshListView.onRefreshComplete();
+                            }
+                        }
+
+                        @Override
+                        public void onFail(int flag, String failStr) throws Exception {
+                            progressDialog.dismiss();
+                            CommonUtil.toastNoRepeat(SampleDeliveryListAct.this, failStr);
+                            refreshListView.onRefreshComplete();
+                        }
+                    });
+        }
+    }
+
+    private void handleFeededlineData(JSONArray dataArray) {
+        // "SR_ID": 3,                       //单据ID
+        //            "SR_CODE": "XJ24090003",    //单据编号
+        //            "SR_DATE": "2024-09-06 11:03:44", //单据日期
+        //            "SR_SOURCETYPE": "PDA新增",
+        //            "SR_SCCODE": "ZX0000-104",  //岗位资源编号
+        //            "SR_SCNAME": "半检五线12",  //岗位资源名称
+        //            "SR_DEVCODE": "DEV001",  //机台号
+        //            "SR_MAKECODE": "5106-24090610269-5",//工单号
+        //            "SR_ITEMCODE": "2323342",  //项目号
+        //            "SR_STATUS": "在录入"   //单据状态
+        ////sr_sendtype   --送样类型    sr_sendmanname  --检验人
+        SampleDeliveryBean sampleDeliveryBean;
+        ComDataBeanList.clear();
+        for (Object index : dataArray) {
+            JSONObject data = (JSONObject) index;
+            sampleDeliveryBean = new SampleDeliveryBean();
+            sampleDeliveryBean.setSR_ID(data.getInteger("SR_ID"));
+            sampleDeliveryBean.setSR_CODE(data.getString("SR_CODE"));
+            sampleDeliveryBean.setSR_DATE(data.getString("SR_DATE"));
+            sampleDeliveryBean.setSR_SOURCETYPE(data.getString("SR_SOURCETYPE"));
+            sampleDeliveryBean.setSR_SCCODE(data.getString("SR_SCCODE"));
+            sampleDeliveryBean.setSR_SCNAME(data.getString("SR_SCNAME"));
+            sampleDeliveryBean.setSR_DEVCODE(data.getString("SR_DEVCODE"));
+            sampleDeliveryBean.setSR_MAKECODE(data.getString("SR_MAKECODE"));
+            sampleDeliveryBean.setSR_ITEMCODE(data.getString("SR_ITEMCODE"));
+            sampleDeliveryBean.setSR_STATUS(data.getString("SR_STATUS"));
+            sampleDeliveryBean.setSR_SENDTYPE(data.getString("SR_SENDTYPE"));
+            sampleDeliveryBean.setSR_SENDMANNAME(data.getString("SR_SENDMANNAME"));
+            ComDataBeanList.add(sampleDeliveryBean);
+        }
+//        inspectionAdapter.setmList(ComDataBeanList);
+        if (ComDataBeanList.size() <= 0) {
+            mEmptyLayout.showEmpty();
+        }
+        showByAdapter(ComDataBeanList);
+    }
+
+    private class InspectionAdapter extends BaseQuickAdapter<SampleDeliveryBean, BaseViewHolder> {
+        private List<SampleDeliveryBean> mmmmList;
+
+        public List<SampleDeliveryBean> getmList() {
+            return mmmmList;
+        }
+
+        public void setmList(List<SampleDeliveryBean> mList) {
+            this.mmmmList = mList;
+            notifyDataSetChanged();
+        }
+        public SampleDeliveryBean getBeanByPositon(int position){
+            return mmmmList.get(position);
+        }
+
+        private InspectionAdapter(@Nullable List<SampleDeliveryBean> data) {
+            super(R.layout.item_sample_delivery, data);
+            this.mmmmList = data;
+        }
+        @Override
+        protected void convert(BaseViewHolder helper, SampleDeliveryBean item) {
+            //"SR_ID": 3,                       //单据ID
+            //            "SR_CODE": "XJ24090003",    //单据编号
+            //            "SR_DATE": "2024-09-06 11:03:44", //单据日期
+            //            "SR_SOURCETYPE": "PDA新增",
+            //            "SR_SCCODE": "ZX0000-104",  //岗位资源编号
+            //            "SR_SCNAME": "半检五线12",  //岗位资源名称
+            //            "SR_DEVCODE": "DEV001",  //机台号
+            //            "SR_MAKECODE": "5106-24090610269-5",//工单号
+            //            "SR_ITEMCODE": "2323342",  //项目号
+            //            "SR_STATUS": "在录入"   //单据状态
+
+            ////sr_sendtype   --送样类型    sr_sendmanname  --检验人
+            helper.setText(R.id.tv_danhao_num,item.getSR_CODE());     //单据编号
+            helper.setText(R.id.tv_type_num,item.getSR_SENDTYPE());          //类型
+            helper.setText(R.id.tv_jianchariqi_num,item.getSR_DATE());     //检验日期
+            helper.setText(R.id.tv_jianyanren_num,item.getSR_SENDMANNAME());     //检验人
+            helper.setText(R.id.tv_gangweiziyuan_num,item.getSR_SCCODE() + "(" + item.getSR_SCNAME() + ")");     //岗位资源:编号(名称)
+            helper.setText(R.id.tv_jitai_num,item.getSR_DEVCODE());     //机台
+            helper.setText(R.id.tv_xiangmuhao_num,item.getSR_ITEMCODE());     //项目号
+            helper.setText(R.id.tv_gongdanhao_num,item.getSR_MAKECODE());     //工单号
+
+        }
+    }
+
+
+    /**
+     * 打印
+     * */
+    private void getPrintTemplate(JSONArray savedataArrays) {
+        progressDialog.show();
+        VolleyRequest.getInstance().stringRequest(mStringRequest,
+                new HttpParams.Builder()
+                        .url(GloableParams.ADDRESS_BARINFO_PRINTMODEL)
+                        .method(Request.Method.GET)
+                        .flag(0)
+                        .tag("barinfoPrint")
+                        .addParam("caller", "SampleReportBarPrint")//Barcode!PDAPrint仓库
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        progressDialog.dismiss();
+                        try {
+                            String result = o.toString();
+                            Log.e("aaa", "打印接口数据" + result);
+                            if (FastjsonUtil.validate(result)) {
+                                JSONObject resultObject = JSON.parseObject(result);
+                                JSONArray dataArray = resultObject.getJSONArray("data");
+                                if (dataArray != null && dataArray.size() > 0) {
+                                    SharedPreUtil.saveString(SampleDeliveryListAct.this, Constants.FLAG.PRINT_TEMPLATE_CACHE, dataArray.toJSONString());
+                                }
+                                //打印时传递保存的数据,非打印模板的数据
+                                printEvent(savedataArrays);
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+
+                    }
+
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                        progressDialog.dismiss();
+                        CommonUtil.toastNoRepeat(SampleDeliveryListAct.this, failStr);
+                    }
+                });
+    }
+
+    private void printEvent(com.alibaba.fastjson.JSONArray printArray) {
+        if (isPrinting) {
+            CommonUtil.toastNoRepeat(SampleDeliveryListAct.this, "正在打印中,请勿重复操作");
+            return;
+        }
+        isPrinting = true;
+        if (printArray != null && printArray.size() > 0) {
+            boolean isFail = false;
+            for (int i = 0; i < printArray.size(); i++) {
+                try {
+                    JSONObject printObject = printArray.getJSONObject(i);
+                    int printResult = PrintUtils.printBar(SampleDeliveryListAct.this, printObject.toString(), mPrintDpi, null);
+                    if (printResult <= 0) {
+                        isFail = true;
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            progressDialog.dismiss();
+            if (isFail) {
+                isConnected = false;
+                SharedPreUtil.saveInt(SampleDeliveryListAct.this, "printConnect", 0);
+                CommonUtil.toastNoRepeat(SampleDeliveryListAct.this, "打印失败,请重新连接打印机");
+
+                try {
+//                    BlueToothPrintFragment blueToothPrintFragment = new BlueToothPrintFragment();
+//                    Bundle bundle = new Bundle();
+//                    bundle.putString(Constants.KEY.BARCODE_PRINT_ARRAY, printArray.toString());
+//                    Log.e("listArraythree",printArray.toString());
+//                    blueToothPrintFragment.setArguments(bundle);
+//                    getSupportFragmentManager()
+//                            .beginTransaction()
+//                            .replace(R.id.fl_dayin, blueToothPrintFragment)
+//                            .addToBackStack(blueToothPrintFragment.getClass().getSimpleName())
+//                            .commit();
+
+                    Intent intent = new Intent(SampleDeliveryListAct.this, BlueToothPrintAct.class);
+                    intent.putExtra(Constants.KEY.BARCODE_PRINT_ARRAY, printArray.toString());
+                    startActivity(intent);
+
+                }catch (Exception e) {
+                    e.printStackTrace();
+                }
+            } else {
+                CommonUtil.toastNoRepeat(SampleDeliveryListAct.this, "打印成功");
+            }
+        } else {
+            CommonUtil.toastNoRepeat(SampleDeliveryListAct.this, "打印失败,条码数据为空");
+        }
+        isPrinting = false;
+    }
+
+    private void showByAdapter(List<SampleDeliveryBean> models) {
+        if (mAdapter == null) {
+            mAdapter = new ListAdapter(models);
+            refreshListView.setAdapter(mAdapter);
+        } else {
+            if (page == 1) {
+                mAdapter.setModels(models);
+            } else {
+                mAdapter.addModls(models);
+            }
+        }
+        if (ListUtils.isEmpty(models)) {
+            mEmptyLayout.showEmpty();
+        }
+    }
+
+    class ListAdapter extends BaseAdapter {
+        private List<SampleDeliveryBean> models;
+
+        public SampleDeliveryBean getModels(int item) {
+            if (ListUtils.getSize(models) > item) {
+                return models.get(item);
+            }
+            return null;
+        }
+
+        public ListAdapter(List<SampleDeliveryBean> models) {
+            this.models = models;
+        }
+
+        public void setModels(List<SampleDeliveryBean> models) {
+            this.models = models;
+            notifyDataSetChanged();
+        }
+
+        private void addModls(List<SampleDeliveryBean> models) {
+            if (this.models == null) {
+                this.models = new ArrayList<>();
+            }
+            this.models.addAll(models);
+            notifyDataSetChanged();
+        }
+
+        @Override
+        public int getCount() {
+            return ListUtils.getSize(this.models);
+        }
+
+        @Override
+        public Object getItem(int i) {
+            return models.get(i);
+        }
+
+        @Override
+        public long getItemId(int i) {
+            return i;
+        }
+
+        @Override
+        public View getView(int i, View view, ViewGroup viewGroup) {
+            ListAdapter.ViewHoler holer = null;
+            if (view == null) {
+                holer = new ListAdapter.ViewHoler();
+                view = LayoutInflater.from(SampleDeliveryListAct.this).inflate(R.layout.item_sample_delivery, null);
+                holer.tv_danhao_num = view.findViewById(R.id.tv_danhao_num);    //单据编号
+                holer.tv_type_num = view.findViewById(R.id.tv_type_num);            //类型
+                holer.tv_jianchariqi_num = view.findViewById(R.id.tv_jianchariqi_num);      //检验日期
+                holer.tv_jianyanren_num = view.findViewById(R.id.tv_jianyanren_num);       //检验人
+                holer.tv_gangweiziyuan_num = view.findViewById(R.id.tv_gangweiziyuan_num);      //岗位资源:编号(名称)
+                holer.tv_jitai_num = view.findViewById(R.id.tv_jitai_num);       //机台
+                holer.tv_xiangmuhao_num = view.findViewById(R.id.tv_xiangmuhao_num);       //项目号
+                holer.tv_gongdanhao_num = view.findViewById(R.id.tv_gongdanhao_num);       //工单号
+                view.setTag(holer);
+            } else {
+                holer = (ListAdapter.ViewHoler) view.getTag();
+            }
+            SampleDeliveryBean bean = models.get(i);
+            holer.tv_danhao_num.setText(bean.getSR_CODE());     //单据编号
+            holer.tv_type_num.setText(bean.getSR_SENDTYPE());          //类型
+            holer.tv_jianchariqi_num.setText(bean.getSR_DATE());     //检验日期
+            holer.tv_jianyanren_num.setText(bean.getSR_SENDMANNAME());     //检验人
+            holer.tv_gangweiziyuan_num.setText(bean.getSR_SCCODE() + "(" + bean.getSR_SCNAME() + ")"); //岗位资源:编号(名称)
+            holer.tv_jitai_num.setText(bean.getSR_DEVCODE());     //机台
+            holer.tv_xiangmuhao_num.setText(bean.getSR_ITEMCODE());     //项目号
+            holer.tv_gongdanhao_num.setText(bean.getSR_MAKECODE());     //工单号
+            return view;
+        }
+
+        class ViewHoler {
+            TextView tv_danhao_num,tv_type_num,tv_jianchariqi_num,tv_jianyanren_num,tv_gangweiziyuan_num,
+                    tv_jitai_num,tv_xiangmuhao_num,tv_gongdanhao_num;
+
+        }
+    }
+
+}

+ 0 - 1
app/src/main/java/com/uas/hystorage/activity/SelectNetAcitivty.java

@@ -124,7 +124,6 @@ public class SelectNetAcitivty extends BaseActivity implements View.OnClickListe
             }
         });
         mSearchButton.setOnClickListener(this);
-
     }
 
     @Override

+ 130 - 0
app/src/main/java/com/uas/hystorage/adapter/AnnexAdapter.java

@@ -0,0 +1,130 @@
+package com.uas.hystorage.adapter;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.request.target.Target;
+import com.uas.hystorage.R;
+import com.uas.hystorage.bean.AnnexBean;
+
+import java.util.List;
+
+public class AnnexAdapter extends RecyclerView.Adapter<AnnexAdapter.ViewHolder> {
+
+    private Context context;
+    private List<AnnexBean> itemList;
+    private int index;
+
+    public AnnexAdapter(Context context,List<AnnexBean> itemList) {
+        this.context = context;
+        this.itemList = itemList;
+    }
+
+    public void setList(List<AnnexBean> itemList){
+        this.itemList = itemList;
+        notifyDataSetChanged();
+    }
+
+    public void addList(List<AnnexBean> itemList){
+        this.itemList.addAll(itemList);
+        notifyDataSetChanged();
+    }
+
+    @Override
+    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_annex_image, parent, false);
+        return new ViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(ViewHolder holder,int position) {
+        index = position;
+        if (itemList.get(position).isAddImage()) {
+            holder.rl_image.setVisibility(View.GONE);
+            holder.iv_zengjiatu.setVisibility(View.VISIBLE);
+        }else {
+            holder.rl_image.setVisibility(View.VISIBLE);
+            holder.iv_zengjiatu.setVisibility(View.GONE);
+        }
+
+        AnnexBean annexBean = itemList.get(position);
+        if (!TextUtils.isEmpty(annexBean.getImagePath())) {
+            String imagePath = annexBean.getImagePath();
+            BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inJustDecodeBounds = true;
+            Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options);
+            float realWidth = options.outWidth;
+            float realHeight = options.outHeight;
+            int scale = (int) ((realHeight > realWidth ? realHeight : realWidth) / 100);
+            options.inSampleSize = scale;
+            options.inJustDecodeBounds = false;
+            bitmap = BitmapFactory.decodeFile(imagePath, options);
+            holder.iv_fujiantu.setImageBitmap(bitmap);
+        }
+
+        holder.iv_zengjiatu.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (addImage != null) {
+                    addImage.startUpload();
+                }
+            }
+        });
+
+        holder.iv_fujiantu.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+
+            }
+        });
+
+        holder.iv_cancel.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (position > 0) {
+                    itemList.remove(position);
+                    notifyDataSetChanged();
+                }
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return itemList.size();
+    }
+
+    static class ViewHolder extends RecyclerView.ViewHolder {
+        ImageView iv_fujiantu,iv_cancel,iv_zengjiatu;
+        RelativeLayout rl_image;
+
+        ViewHolder(View itemView) {
+            super(itemView);
+            iv_fujiantu = itemView.findViewById(R.id.iv_fujiantu);
+            iv_cancel = itemView.findViewById(R.id.iv_cancel);
+            iv_zengjiatu = itemView.findViewById(R.id.iv_zengjiatu);
+            rl_image = itemView.findViewById(R.id.rl_image);
+        }
+    }
+
+    private AddImage addImage;
+
+    public void setImageUpload(AddImage addImage){
+        this.addImage = addImage;
+    }
+
+    public interface AddImage {
+        void startUpload();
+    }
+
+}

+ 0 - 1
app/src/main/java/com/uas/hystorage/adapter/BluetoothAdapter.java

@@ -67,7 +67,6 @@ public class BluetoothAdapter extends RecyclerView.Adapter<BluetoothAdapter.Blue
     @NonNull
     @Override
     public BlueTootViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-
         return new BlueTootViewHolder(parent);
     }
 

+ 1 - 3
app/src/main/java/com/uas/hystorage/application/PdaApplication.java

@@ -45,6 +45,7 @@ public class PdaApplication extends Application {
     public static HashMap<Integer, Integer> mSoundMap;
     public static int mVersionCode = 1;
     public static Context context;
+
     @Override
     public void onCreate() {
         super.onCreate();
@@ -72,7 +73,6 @@ public class PdaApplication extends Application {
             mSoundPool = new SoundPool(4, AudioAttributes.CONTENT_TYPE_MUSIC, 0);
         }
 
-
         mSoundMap = new HashMap<>();
         mSoundMap.put(SoundUtil.SOUND_ARIEL, mSoundPool.load(this, R.raw.ariel, 1));
         mSoundMap.put(SoundUtil.SOUND_CARME, mSoundPool.load(this, R.raw.carme, 1));
@@ -121,7 +121,6 @@ public class PdaApplication extends Application {
 
     /**
      * 获取本地缓存
-     *
      * @param key
      * @return
      */
@@ -134,7 +133,6 @@ public class PdaApplication extends Application {
 
     /**
      * 移除本地缓存
-     *
      * @param key
      */
     public static void removeDataCacheFromMap(String key) {

+ 40 - 0
app/src/main/java/com/uas/hystorage/bean/AnnexBean.java

@@ -0,0 +1,40 @@
+package com.uas.hystorage.bean;
+
+public class AnnexBean {
+
+    private boolean isAddImage;
+    private String imagePath;
+    private String imageID;
+
+    public AnnexBean(boolean isAddImage, String imagePath, String imageID) {
+        this.isAddImage = isAddImage;
+        this.imagePath = imagePath;
+        this.imageID = imageID;
+    }
+
+    public boolean isAddImage() {
+        return isAddImage;
+    }
+
+    public void setAddImage(boolean addImage) {
+        isAddImage = addImage;
+    }
+
+
+    public String getImagePath() {
+        return imagePath;
+    }
+
+    public void setImagePath(String imagePath) {
+        this.imagePath = imagePath;
+    }
+
+
+    public String getImageID() {
+        return imageID;
+    }
+
+    public void setImageID(String imageID) {
+        this.imageID = imageID;
+    }
+}

+ 146 - 0
app/src/main/java/com/uas/hystorage/bean/InspectionPaintBean.java

@@ -0,0 +1,146 @@
+package com.uas.hystorage.bean;
+
+import java.util.List;
+
+public class InspectionPaintBean {
+
+    /**
+     * success : true
+     * data : [{"SR_ID":60,"SR_CODE":"SJ24090018","SR_DATE":"2024-09-12 17:43:00","SR_SOURCETYPE":"PDA新增","SR_SCCODE":"CX0266","SR_SCNAME":"CX0266成型","SR_DEVCODE":"55","SR_MAKECODE":"52","SR_ITEMCODE":"56","SR_SENDTYPE":"首件","SR_SENDMANNAME":"管理员"},{"SR_ID":60,"SR_CODE":"SJ24090018","SR_DATE":"2024-09-12 17:43:00","SR_SOURCETYPE":"PDA新增","SR_SCCODE":"CX0266","SR_SCNAME":"CX0266成型","SR_DEVCODE":"55","SR_MAKECODE":"52","SR_ITEMCODE":"56","SR_SENDTYPE":"首件","SR_SENDMANNAME":"管理员"}]
+     */
+
+    private boolean success;
+    private List<DataBean> data;
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public List<DataBean> getData() {
+        return data;
+    }
+
+    public void setData(List<DataBean> data) {
+        this.data = data;
+    }
+
+    public static class DataBean {
+        /**
+         * SR_ID : 60
+         * SR_CODE : SJ24090018
+         * SR_DATE : 2024-09-12 17:43:00
+         * SR_SOURCETYPE : PDA新增
+         * SR_SCCODE : CX0266
+         * SR_SCNAME : CX0266成型
+         * SR_DEVCODE : 55
+         * SR_MAKECODE : 52
+         * SR_ITEMCODE : 56
+         * SR_SENDTYPE : 首件
+         * SR_SENDMANNAME : 管理员
+         */
+
+        private int SR_ID;
+        private String SR_CODE;
+        private String SR_DATE;
+        private String SR_SOURCETYPE;
+        private String SR_SCCODE;
+        private String SR_SCNAME;
+        private String SR_DEVCODE;
+        private String SR_MAKECODE;
+        private String SR_ITEMCODE;
+        private String SR_SENDTYPE;
+        private String SR_SENDMANNAME;
+
+        public int getSR_ID() {
+            return SR_ID;
+        }
+
+        public void setSR_ID(int SR_ID) {
+            this.SR_ID = SR_ID;
+        }
+
+        public String getSR_CODE() {
+            return SR_CODE;
+        }
+
+        public void setSR_CODE(String SR_CODE) {
+            this.SR_CODE = SR_CODE;
+        }
+
+        public String getSR_DATE() {
+            return SR_DATE;
+        }
+
+        public void setSR_DATE(String SR_DATE) {
+            this.SR_DATE = SR_DATE;
+        }
+
+        public String getSR_SOURCETYPE() {
+            return SR_SOURCETYPE;
+        }
+
+        public void setSR_SOURCETYPE(String SR_SOURCETYPE) {
+            this.SR_SOURCETYPE = SR_SOURCETYPE;
+        }
+
+        public String getSR_SCCODE() {
+            return SR_SCCODE;
+        }
+
+        public void setSR_SCCODE(String SR_SCCODE) {
+            this.SR_SCCODE = SR_SCCODE;
+        }
+
+        public String getSR_SCNAME() {
+            return SR_SCNAME;
+        }
+
+        public void setSR_SCNAME(String SR_SCNAME) {
+            this.SR_SCNAME = SR_SCNAME;
+        }
+
+        public String getSR_DEVCODE() {
+            return SR_DEVCODE;
+        }
+
+        public void setSR_DEVCODE(String SR_DEVCODE) {
+            this.SR_DEVCODE = SR_DEVCODE;
+        }
+
+        public String getSR_MAKECODE() {
+            return SR_MAKECODE;
+        }
+
+        public void setSR_MAKECODE(String SR_MAKECODE) {
+            this.SR_MAKECODE = SR_MAKECODE;
+        }
+
+        public String getSR_ITEMCODE() {
+            return SR_ITEMCODE;
+        }
+
+        public void setSR_ITEMCODE(String SR_ITEMCODE) {
+            this.SR_ITEMCODE = SR_ITEMCODE;
+        }
+
+        public String getSR_SENDTYPE() {
+            return SR_SENDTYPE;
+        }
+
+        public void setSR_SENDTYPE(String SR_SENDTYPE) {
+            this.SR_SENDTYPE = SR_SENDTYPE;
+        }
+
+        public String getSR_SENDMANNAME() {
+            return SR_SENDMANNAME;
+        }
+
+        public void setSR_SENDMANNAME(String SR_SENDMANNAME) {
+            this.SR_SENDMANNAME = SR_SENDMANNAME;
+        }
+    }
+}

+ 128 - 0
app/src/main/java/com/uas/hystorage/bean/SampleDeliveryBean.java

@@ -0,0 +1,128 @@
+package com.uas.hystorage.bean;
+
+public class SampleDeliveryBean {
+    /**
+     * SR_ID : 3
+     * SR_CODE : XJ24090003
+     * SR_DATE : 2024-09-06 11:03:44
+     * SR_SOURCETYPE : PDA新增
+     * SR_SCCODE : ZX0000-104
+     * SR_SCNAME : 半检五线12
+     * SR_DEVCODE : DEV001
+     * SR_MAKECODE : 5106-24090610269-5
+     * SR_ITEMCODE : 2323342
+     * SR_STATUS : 在录入
+     * //   data.getString("SR_SENDTYPE"));     //类型
+     *     data.getString("SR_SENDMANNAME"));   //检验人
+     */
+
+    private int SR_ID;
+    private String SR_CODE;
+    private String SR_DATE;
+    private String SR_SOURCETYPE;
+    private String SR_SCCODE;
+    private String SR_SCNAME;
+    private String SR_DEVCODE;
+    private String SR_MAKECODE;
+    private String SR_ITEMCODE;
+    private String SR_STATUS;
+    private String SR_SENDTYPE;
+    private String SR_SENDMANNAME;
+
+
+    public String getSR_SENDTYPE() {
+        return SR_SENDTYPE;
+    }
+
+    public void setSR_SENDTYPE(String SR_SENDTYPE) {
+        this.SR_SENDTYPE = SR_SENDTYPE;
+    }
+
+    public String getSR_SENDMANNAME() {
+        return SR_SENDMANNAME;
+    }
+
+    public void setSR_SENDMANNAME(String SR_SENDMANNAME) {
+        this.SR_SENDMANNAME = SR_SENDMANNAME;
+    }
+
+    public int getSR_ID() {
+        return SR_ID;
+    }
+
+    public void setSR_ID(int SR_ID) {
+        this.SR_ID = SR_ID;
+    }
+
+    public String getSR_CODE() {
+        return SR_CODE;
+    }
+
+    public void setSR_CODE(String SR_CODE) {
+        this.SR_CODE = SR_CODE;
+    }
+
+    public String getSR_DATE() {
+        return SR_DATE;
+    }
+
+    public void setSR_DATE(String SR_DATE) {
+        this.SR_DATE = SR_DATE;
+    }
+
+    public String getSR_SOURCETYPE() {
+        return SR_SOURCETYPE;
+    }
+
+    public void setSR_SOURCETYPE(String SR_SOURCETYPE) {
+        this.SR_SOURCETYPE = SR_SOURCETYPE;
+    }
+
+    public String getSR_SCCODE() {
+        return SR_SCCODE;
+    }
+
+    public void setSR_SCCODE(String SR_SCCODE) {
+        this.SR_SCCODE = SR_SCCODE;
+    }
+
+    public String getSR_SCNAME() {
+        return SR_SCNAME;
+    }
+
+    public void setSR_SCNAME(String SR_SCNAME) {
+        this.SR_SCNAME = SR_SCNAME;
+    }
+
+    public String getSR_DEVCODE() {
+        return SR_DEVCODE;
+    }
+
+    public void setSR_DEVCODE(String SR_DEVCODE) {
+        this.SR_DEVCODE = SR_DEVCODE;
+    }
+
+    public String getSR_MAKECODE() {
+        return SR_MAKECODE;
+    }
+
+    public void setSR_MAKECODE(String SR_MAKECODE) {
+        this.SR_MAKECODE = SR_MAKECODE;
+    }
+
+    public String getSR_ITEMCODE() {
+        return SR_ITEMCODE;
+    }
+
+    public void setSR_ITEMCODE(String SR_ITEMCODE) {
+        this.SR_ITEMCODE = SR_ITEMCODE;
+    }
+
+    public String getSR_STATUS() {
+        return SR_STATUS;
+    }
+
+    public void setSR_STATUS(String SR_STATUS) {
+        this.SR_STATUS = SR_STATUS;
+    }
+}

+ 0 - 2
app/src/main/java/com/uas/hystorage/fragment/HePiFragment.java

@@ -90,8 +90,6 @@ public class HePiFragment extends BaseFragment {
 
     private List<CaiPiBlueBean.DataBean> messages = new ArrayList<>();
 
-
-
     @Override
     protected int getLayout() {
         return R.layout.fragment_hepi;

+ 17 - 2
app/src/main/java/com/uas/hystorage/fragment/QualityManageFragment.java

@@ -1,5 +1,6 @@
 package com.uas.hystorage.fragment;
 
+import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -42,6 +43,8 @@ public class QualityManageFragment extends BaseFragment {
         mMenuBeanList = new ArrayList<>();
         mMenuBeanList.add(new CommonMenuBean("抽检判定", R.drawable.ic_first_last_manage, DecisionByLotFragment.class));
         mMenuBeanList.add(new CommonMenuBean("返工判定", R.drawable.ic_production_quality, ReworkDecisionFragment.class));
+        mMenuBeanList.add(new CommonMenuBean("首件报告", R.drawable.shouyebaogao, ReportPageFra.class));
+        mMenuBeanList.add(new CommonMenuBean("巡检报告", R.drawable.xunchabaogao, ReportPageFra.class));
 //        mMenuBeanList.add(new CommonMenuBean("首检判定", R.drawable.ic_first_last_manage, FirstLastManageListFragment.class));
 //        mMenuBeanList.add(new CommonMenuBean("首末件管理", R.drawable.ic_first_last_manage, FirstLastManageListFragment.class));
 //        Bundle bundle = new Bundle();
@@ -73,9 +76,21 @@ public class QualityManageFragment extends BaseFragment {
 //                        startActivity(intent);
                     } else if (position == 1) {
                         fragment = new ReworkDecisionFragment();
+                    }else if (position == 2) {
+                        Bundle bundle = new Bundle();
+                        bundle.putString("sr_sendtype", "首件");
+                        mMenuBeanList.get(position).setBundle(bundle);
+                        fragment = new ReportPageFra();
                     }else if (position == 3) {
-                        fragment = new QualityComplaintsListFragment<QualityComplaintsBean>();
-                    } else {
+                        Bundle bundle = new Bundle();
+                        bundle.putString("sr_sendtype", "巡检");
+                        mMenuBeanList.get(position).setBundle(bundle);
+                        fragment = new ReportPageFra();
+                    }
+//                    else if (position == 3) {
+//                        fragment = new QualityComplaintsListFragment<QualityComplaintsBean>();
+//                    }
+                    else {
                         fragment = (Fragment) mMenuBeanList.get(position).getPage().newInstance();
                     }
                     FragmentUtils.switchFragment(QualityManageFragment.this, fragment,

+ 515 - 0
app/src/main/java/com/uas/hystorage/fragment/ReportPageFra.java

@@ -0,0 +1,515 @@
+package com.uas.hystorage.fragment;
+
+import android.Manifest;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.graphics.Color;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.MediaStore;
+import android.support.v4.app.ActivityCompat;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.android.volley.Request;
+import com.android.volley.toolbox.StringRequest;
+import com.uas.hystorage.R;
+import com.uas.hystorage.adapter.AnnexAdapter;
+import com.uas.hystorage.bean.AnnexBean;
+import com.uas.hystorage.global.GloableParams;
+import com.uas.hystorage.interfaces.ProgressListener;
+import com.uas.hystorage.listener.MyEditorActionListener;
+import com.uas.hystorage.util.CommonUtil;
+import com.uas.hystorage.util.Constants;
+import com.uas.hystorage.util.FastjsonUtil;
+import com.uas.hystorage.util.HttpCallback;
+import com.uas.hystorage.util.HttpParams;
+import com.uas.hystorage.util.UploadUtils;
+import com.uas.hystorage.util.VollyRequest;
+import com.uas.hystorage.view.ClearableEditText;
+import com.uas.hystorage.view.business.ProgressPopup;
+import com.uuzuche.lib_zxing.activity.CodeUtils;
+
+import org.w3c.dom.Text;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.MediaType;
+import okhttp3.MultipartBody;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+
+public class ReportPageFra extends BaseFragment {
+
+    private Button bt_gengxin;
+    private ClearableEditText cet_danhao, cet_beizhu1, cet_beizhu2;
+    private ImageView iv_qc_fujian, iv_shiyanfujian;
+    private RecyclerView rv_qc_fujian, rv_shiyanfujian;
+    private StringRequest mStringRequest;
+    private String sr_sendtype;
+
+    private  final int REQUEST_EXTERNAL_STORAGE = 1;
+    private  String[] PERMISSIONS_STORAGE = {
+            Manifest.permission.READ_EXTERNAL_STORAGE,
+            Manifest.permission.WRITE_EXTERNAL_STORAGE };
+    private static final int REQUEST_CODE1 = 1;
+    private static final int REQUEST_CODE2 = 2;
+
+    private List<String> selectedImagePaths = new ArrayList<>();
+    private ProgressPopup mProgressPopup;
+
+    private int fujian = 0;
+    private List<AnnexBean> fujianList1;
+    private List<AnnexBean> fujianList2;
+    private AnnexAdapter annexQCFuJianAdapter;
+    private AnnexAdapter annexShiYanFuJianAdapter;
+    private int uploadRecords;
+    private int uploadRecordsNumber;
+    private List<AnnexBean> templist;
+    private TextView tv_updater_info;
+
+    @Override
+    protected int getLayout() {
+        return R.layout.fra_report_page;
+    }
+
+    @Override
+    protected void initViews() {
+        cet_danhao = root.findViewById(R.id.cet_danhao);
+        rv_qc_fujian = root.findViewById(R.id.rv_qc_fujian);
+        rv_shiyanfujian = root.findViewById(R.id.rv_shiyanfujian);
+
+        iv_qc_fujian = root.findViewById(R.id.iv_qc_fujian);
+        iv_shiyanfujian = root.findViewById(R.id.iv_shiyanfujian);
+
+        cet_beizhu1 = root.findViewById(R.id.cet_beizhu1);
+        cet_beizhu2 = root.findViewById(R.id.cet_beizhu2);
+        bt_gengxin = root.findViewById(R.id.bt_gengxin);
+        tv_updater_info = root.findViewById(R.id.tv_updater_info);
+
+    }
+
+    @Override
+    protected void initEvents() {
+        CommonUtil.setEditorActionListener(cet_danhao, new MyEditorActionListener() {
+            @Override
+            public void MyEditorAction(String text, int actionId, KeyEvent event) {
+                getTrackingNumberInquiry(text);
+            }
+        });
+
+        bt_gengxin.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getUpdater();
+            }
+        });
+
+        iv_qc_fujian.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                verifyStoragePermissions(mActivity);
+                // 启动文件选择器
+                Intent intent = new Intent(Intent.ACTION_PICK);
+                intent.setType("image/*");
+                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
+                startActivityForResult(Intent.createChooser(intent, "Select Images"), REQUEST_CODE1);
+            }
+        });
+
+        iv_shiyanfujian.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                verifyStoragePermissions(mActivity);
+                // 启动文件选择器
+                Intent intent = new Intent(Intent.ACTION_PICK);
+                intent.setType("image/*");
+                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
+                startActivityForResult(Intent.createChooser(intent, "Select Images"), REQUEST_CODE2);
+            }
+        });
+    }
+
+
+    @Override
+    protected void initDatas() {
+        cet_danhao.requestFocus();
+        Bundle arguments = getArguments();
+        if (arguments != null) {
+            sr_sendtype = arguments.getString("sr_sendtype","");
+            setTitle(sr_sendtype + "报告");
+        }
+        //如果单号没有数据,并且没有执行enter 校验不成功的情况,不允许编辑下面的字段,包含上传图片、备注、点更新按钮(新增)
+
+
+
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
+        rv_qc_fujian.setLayoutManager(linearLayoutManager);
+
+        LinearLayoutManager linearLayoutManager2 = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
+        rv_shiyanfujian.setLayoutManager(linearLayoutManager2);
+
+        fujianList1 = new ArrayList<>();
+        fujianList1.add(new AnnexBean(true,"",""));
+        annexQCFuJianAdapter = new AnnexAdapter(getActivity(),fujianList1);
+        rv_qc_fujian.setAdapter(annexQCFuJianAdapter);
+        annexQCFuJianAdapter.setImageUpload(new AnnexAdapter.AddImage() {
+            @Override
+            public void startUpload() {
+                verifyStoragePermissions(mActivity);
+                // 启动文件选择器
+                Intent intent = new Intent(Intent.ACTION_PICK);
+                intent.setType("image/*");
+                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
+                startActivityForResult(Intent.createChooser(intent, "Select Images"), REQUEST_CODE1);
+            }
+        });
+
+        fujianList2 = new ArrayList<>();
+        fujianList2.add(new AnnexBean(true,"",""));
+        annexShiYanFuJianAdapter = new AnnexAdapter(getActivity(),fujianList2);
+        rv_shiyanfujian.setAdapter(annexShiYanFuJianAdapter);
+        annexShiYanFuJianAdapter.setImageUpload(new AnnexAdapter.AddImage() {
+            @Override
+            public void startUpload() {
+                verifyStoragePermissions(mActivity);
+                // 启动文件选择器
+                Intent intent = new Intent(Intent.ACTION_PICK);
+                intent.setType("image/*");
+                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
+                startActivityForResult(Intent.createChooser(intent, "Select Images"), REQUEST_CODE2);
+            }
+        });
+
+    }
+
+    public  void verifyStoragePermissions(Activity activity) {
+        int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
+        if (permission != PackageManager.PERMISSION_GRANTED) {
+            ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
+        }
+    }
+
+    private void getUpdater() {
+        if (TextUtils.isEmpty(cet_danhao.getText().toString().trim())){
+            CommonUtil.toastNoRepeat(getActivity(), "请输入单号");
+            return;
+        }
+
+        String fujianStr1 = "";
+        for (int i = 0;i < fujianList1.size();i++){
+            String s = fujianList1.get(i).getImageID();
+            fujianStr1 += s;
+        }
+        String fujianStr2 = "";
+        for (int i = 0;i < fujianList2.size();i++){
+            String s = fujianList2.get(i).getImageID();
+            fujianStr2 += s;
+        }
+
+        //{sr_qcattach :QC检验附件 ,sr_qcremark :QC检验备注,
+        // sr_laboratoryattach:实验室检验附件 --值:163510;  ,
+        //sr_laboratoryremark :实验室检验备注,
+        // sr_sendtype:送样类型 (首件或者巡检)}
+
+        Map<String, Object> params = new HashMap<>();
+        params.put("sr_qcattach",fujianStr1);
+        params.put("sr_qcremark ",cet_beizhu1.getText().toString().trim());
+        params.put("sr_laboratoryattach",fujianStr2);
+        params.put("sr_laboratoryremark",cet_beizhu2.getText().toString().trim());
+        params.put("sr_sendtype",sr_sendtype);
+        String data = JSON.toJSONString(params);
+        progressDialog.show();
+        VollyRequest.getInstance().stringRequest(mStringRequest,
+                new HttpParams.Builder()
+                        .url(GloableParams.ADDRESS_UPDATESAMPLEREPORT)
+                        .method(Request.Method.POST)
+                        .tag("getMaCode")
+                        .flag(0)
+                        .addParam("sr_code",cet_danhao.getText().toString().trim())
+                        .addParam("data",data) //首件或巡检
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        progressDialog.dismiss();
+                        Boolean isSuccess = FastjsonUtil.getBoolean(o.toString(),"success");
+                        if (isSuccess){
+                            tv_updater_info.setTextColor(getResources().getColor(R.color.blue));
+                            tv_updater_info.setText("更新成功");
+                            CommonUtil.toastNoRepeat(mActivity, "更新成功");
+                        }
+                    }
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                        progressDialog.dismiss();
+                        CommonUtil.toastNoRepeat(mActivity, failStr);
+                        tv_updater_info.setTextColor(getResources().getColor(R.color.red));
+                        tv_updater_info.setText(failStr);
+                    }
+                });
+    }
+
+    private void getTrackingNumberInquiry(String text) {
+        if (TextUtils.isEmpty(text)){
+            CommonUtil.toastNoRepeat(getActivity(), "请输入单号");
+            return;
+        }
+        progressDialog.show();
+        VollyRequest.getInstance().stringRequest(mStringRequest,
+                new HttpParams.Builder()
+                        .url(GloableParams.ADDRESS_GETSAMPLEREPORT)
+                        .method(Request.Method.GET)
+                        .tag("getMaCode")
+                        .flag(0)
+                        .addParam("sr_code",text)
+                        .addParam("sr_sendtype",sr_sendtype) //首件或巡检
+                        .build(), new HttpCallback() {
+                    @Override
+                    public void onSuccess(int flag, Object o) throws Exception {
+                        progressDialog.dismiss();
+                        Boolean isSuccess = FastjsonUtil.getBoolean(o.toString(),"success");
+                        if (isSuccess){
+                            //{
+                            //    "success": true,
+                            //    "data": {
+                            //        "SR_ID": 2,         //单据ID
+                            //        "SR_CODE": "XJ24090002",  //单据编号
+                            //        "SR_DATE": "2024-09-06 11:02:16",  //单据日期
+                            //        "SR_SENDTYPE": "巡检",      //单据检验类型
+                            //        "SR_SOURCETYPE": "PDA新增",   //来源类型
+                            //        "SR_SCCODE": "ZX0000-104",  //岗位资源编号
+                            //        "SR_SCNAME": "半检五线12",  //岗位资源名称
+                            //        "SR_DEVCODE": "DEV001",  //机台号
+                            //        "SR_MAKECODE": "5106-24090610269-5",  //工单号
+                            //        "SR_ITEMCODE": "2323342",  //项目号
+                            //        "SR_STATUSCODE": "ENTERING"
+                            //    }
+                            //}
+                            JSONObject dataObject = FastjsonUtil.getJSONObject(o.toString(),"data");
+                            if (dataObject == null){
+
+                            }else {
+                                String SC_CODE = dataObject.getString("SC_CODE") == null ? "" : dataObject.getString("SC_CODE");
+                                cet_danhao.setText(SC_CODE);
+                            }
+                        }
+                    }
+                    @Override
+                    public void onFail(int flag, String failStr) throws Exception {
+                        progressDialog.dismiss();
+                        CommonUtil.toastNoRepeat(mActivity, failStr);
+                    }
+                });
+    }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        return false;
+    }
+
+    @Override
+    public boolean onFragmentBackPressed() {
+        return false;
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (resultCode != Activity.RESULT_OK) {
+            return;
+        }
+        if (requestCode == REQUEST_CODE1 && data!=null){
+            fujian = 1;
+        }else if (requestCode == REQUEST_CODE2 && data!=null){
+            fujian = 2;
+        }
+        selectedImagePaths.clear();
+        if (data.getClipData() != null) {
+            // 用户选择了多个图片
+            int count = data.getClipData().getItemCount();
+            for (int i = 0; i < count; i++) {
+                Uri imageUri = data.getClipData().getItemAt(i).getUri();
+                selectedImagePaths.add(getRealPathFromUri(imageUri));
+            }
+        } else if (data.getData() != null) {
+            // 用户选择了单个图片
+            Uri imageUri = data.getData();
+            selectedImagePaths.add(getRealPathFromUri(imageUri));
+        }
+        // 批量上传图片
+        uploadImages(selectedImagePaths);
+    }
+
+    private String getRealPathFromUri(Uri uri) {
+        // 获取真实的文件路径
+        String filePath;
+        String[] projection = {MediaStore.Images.Media.DATA};
+        Cursor cursor = mActivity.getContentResolver().query(uri, projection, null, null, null);
+        if (cursor == null) {
+            filePath = uri.getPath();
+        } else {
+            cursor.moveToFirst();
+            int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
+            filePath = cursor.getString(columnIndex);
+            cursor.close();
+        }
+        return filePath;
+    }
+
+    private void uploadImages(List<String> imagePaths) {
+//        fujianList1.clear();
+//        fujianList2.clear();
+//        fujianList1.add(new AnnexBean(true,"",""));
+//        fujianList2.add(new AnnexBean(true,"",""));
+        uploadRecords = 0;
+        if (templist == null) {
+            templist = new ArrayList<>();
+        }else {
+            templist.clear();
+        }
+        uploadRecordsNumber = imagePaths.size();
+        for (String imagePath : imagePaths) {
+            try {
+                File mFile = new File(imagePath);
+                // 获得文件名
+                String fileName = mFile.getName();
+                MultipartBody.Builder builder = new MultipartBody.Builder();
+                builder.setType(MultipartBody.FORM);
+                //第一个参数要与Servlet中的一致
+                builder.addFormDataPart("file", fileName,
+                        RequestBody.create(MediaType.parse("application/octet-stream"), mFile))
+                        .addFormDataPart("type", "common")
+                        .addFormDataPart("master", CommonUtil.getMaster(mActivity));
+                RequestBody multipartBody = builder.build();
+                if (mProgressPopup == null) {
+                    mProgressPopup = new ProgressPopup(mActivity);
+                    mProgressPopup.setTitle("附件上传中...");
+                }
+                mProgressPopup.setProgress(0);
+                mProgressPopup.showPopupWindow();
+
+                UploadUtils.getInstance().postFile(GloableParams.ADDRESS_MOBILE_UPLOADATTACHS, multipartBody, new ProgressListener() {
+                    @Override
+                    public void onProgress(long currentBytes, long contentLength, boolean isDone) {
+                        int progress = (int) ((double) currentBytes * 100 / (double) contentLength);
+                        mProgressPopup.setProgress(progress);
+                        if (isDone || progress == 100) {
+                            mProgressPopup.dismiss();
+                        }
+                    }
+                }, new Callback() {
+                    @Override
+                    public void onFailure(Call call, IOException e) {
+                        mProgressPopup.dismiss();
+                        Log.d("raomeng_uploadf", e.getMessage());
+                        mActivity.runOnUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                //CommonUtil.toastNoRepeat(mActivity, "附件上传失败");
+                                tv_updater_info.setTextColor(getResources().getColor(R.color.red));
+                                tv_updater_info.setText("附件上传失败");
+                            }
+                        });
+                    }
+
+                    @Override
+                    public void onResponse(Call call, Response response) throws IOException {
+                        mProgressPopup.dismiss();
+                        if (response.code() == 200) {
+                            try {
+                                String result = response.body().string();
+                                JSONObject resultObject = JSON.parseObject(result);
+                                String mEnclusureId = FastjsonUtil.getText(resultObject, "id");
+                                String s = removeSpace(mEnclusureId);
+                                String s1 = removeSpace2(s);
+                                Log.d("aaa", "切割后的数据: " + s1+"");
+                                if (fujian == 1) {
+//                                    fujianList1.add(new AnnexBean(false,mFile.getAbsolutePath(),s1 + ";"));
+                                    templist.add(new AnnexBean(false,mFile.getAbsolutePath(),s1 + ";"));
+                                }else if (fujian == 2) {
+//                                    fujianList2.add(new AnnexBean(false,mFile.getAbsolutePath(),s1 + ";"));
+                                    templist.add(new AnnexBean(false,mFile.getAbsolutePath(),s1 + ";"));
+                                }
+                            } catch (IOException e) {
+                                e.printStackTrace();
+                            }
+                            uploadRecords++;
+                            mActivity.runOnUiThread(new Runnable() {
+                                @Override
+                                public void run() {
+                                    if (uploadRecords == uploadRecordsNumber) {
+                                        tv_updater_info.setTextColor(getResources().getColor(R.color.blue));
+                                        tv_updater_info.setText("附件上传成功");
+                                       // CommonUtil.toastNoRepeat(mActivity,  "附件上传成功");
+                                        if (fujian == 1) {
+//                                            Collections.reverse(fujianList1);
+//                                            annexQCFuJianAdapter.addList(fujianList1);
+                                            annexQCFuJianAdapter.addList(templist);
+                                        }else if (fujian == 2) {
+//                                            Collections.reverse(fujianList2);
+//                                            annexShiYanFuJianAdapter.addList(fujianList2);
+                                            annexShiYanFuJianAdapter.addList(templist);
+                                        }
+                                    }
+                                }
+                            });
+                        }
+                    }
+                }, new File[]{mFile});
+            } catch (Exception e) {
+                if (mProgressPopup != null) {
+                    mProgressPopup.dismiss();
+                }
+                tv_updater_info.setTextColor(getResources().getColor(R.color.red));
+                tv_updater_info.setText("附件上传失败");
+                //CommonUtil.toastNoRepeat(mActivity, "附件上传失败");
+            }
+        }
+
+    }
+
+    public String removeSpace(String s) {
+        String regex = "\\[";
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(s);
+        return matcher.replaceAll("");
+    }
+
+    public String removeSpace2(String s) {
+        String regex = "]";
+        Pattern pattern = Pattern.compile(regex);
+        Matcher matcher = pattern.matcher(s);
+        return matcher.replaceAll("");
+    }
+
+    @Override
+    public void onHiddenChanged(boolean hidden) {
+        super.onHiddenChanged(hidden);
+//        if (!hidden) {
+//            setTitle("质量管理");
+//        }
+    }
+
+}

+ 38 - 7
app/src/main/java/com/uas/hystorage/global/GloableParams.java

@@ -349,6 +349,21 @@ public class GloableParams {
     public static String ADDRESS_GETCANTRANSFERWIP;
     public static String ADDRESS_TRANSFERWIP;
     public static String ADDRESS_GETBOXDETAIL;
+
+    /**
+     * 检验送样
+     * */
+    public static String ADDRESS_GETSOURCEDATA;  //岗位ENTER
+    public static String ADDRESS_SAVESAMPLEREPORT;  //打印标签按钮点击
+    public static String ADDRESS_FUZZYSEARCHSAMPLEREPORT;  //搜索按钮点击或者输入框ENTER事件
+    public static String ADDRESS_PRINTSAMPLEREPORT;  //送样单列表页面打印事件
+
+    /**
+     * 送样报告
+     * */
+    public static String ADDRESS_GETSAMPLEREPORT;  //送样报告---单号enter
+    public static String ADDRESS_UPDATESAMPLEREPORT;  //送样报告---更新
+
     /**
      * 高登
      */
@@ -977,13 +992,6 @@ public class GloableParams {
     private static final String ADDRESSTAIL_COUNTING_TRANSFERWIP = "/api/pdashop/loading/transferWIP.action";
 
 
-
-
-
-
-
-
-
     /**
      * 良品入库
      */
@@ -1033,6 +1041,20 @@ public class GloableParams {
      */
     private static final String ADDRESSTAIL_ADDMA = "/api/pdashop/start/addMa.action";
 
+    //岗位ENTER
+    private static final String ADDRESSTAIL_GETSOURCEDATA = "/api/pdashop/source/getSourceData.action";
+    //打印标签按钮点击
+    private static final String ADDRESSTAIL_SAVESAMPLEREPORT = "/api/pdashop/quality/saveSampleReport.action";
+    //搜索按钮点击或者输入框ENTER事件
+    private static final String ADDRESSTAIL_FUZZYSEARCHSAMPLEREPORT = "/api/pdashop/quality/fuzzySearchSampleReport.action";
+    //打印事件
+    private static final String ADDRESSTAIL_PRINTSAMPLEREPORT = "/api/pdashop/quality/printSampleReport.action";
+
+    //送样报告
+    private static final String ADDRESSTAIL_GETSAMPLEREPORT = "/api/pdashop/quality/getSampleReport.action";
+    //更新按钮点击事件
+    private static final String ADDRESSTAIL_UPDATESAMPLEREPORT = "/api/pdashop/quality/updateSampleReport.action";
+
 
 
     /***********************************************************************************************/
@@ -1613,5 +1635,14 @@ public class GloableParams {
         GloableParams.ADDRESS_GETCANTRANSFERWIP = uriHead + GloableParams.ADDRESSTAIL_COUNTING_GETCANTRANSFERWIP;
         GloableParams.ADDRESS_TRANSFERWIP = uriHead + GloableParams.ADDRESSTAIL_COUNTING_TRANSFERWIP;
         GloableParams.ADDRESS_GETBOXDETAIL = uriHead + GloableParams.ADDRESSTAIL_COUNTING_GETBOXDETAIL;
+
+        GloableParams.ADDRESS_GETSOURCEDATA = uriHead + GloableParams.ADDRESSTAIL_GETSOURCEDATA;
+        GloableParams.ADDRESS_SAVESAMPLEREPORT = uriHead + GloableParams.ADDRESSTAIL_SAVESAMPLEREPORT;
+        GloableParams.ADDRESS_FUZZYSEARCHSAMPLEREPORT = uriHead + GloableParams.ADDRESSTAIL_FUZZYSEARCHSAMPLEREPORT;
+        GloableParams.ADDRESS_PRINTSAMPLEREPORT = uriHead + GloableParams.ADDRESSTAIL_PRINTSAMPLEREPORT;
+        GloableParams.ADDRESS_GETSAMPLEREPORT = uriHead + GloableParams.ADDRESSTAIL_GETSAMPLEREPORT;
+        GloableParams.ADDRESS_UPDATESAMPLEREPORT = uriHead + GloableParams.ADDRESSTAIL_UPDATESAMPLEREPORT;
+
+
     }
 }

+ 9 - 0
app/src/main/java/com/uas/hystorage/util/HttpParams.java

@@ -26,6 +26,11 @@ public class HttpParams {
      */
     private Map<String, String> params;
 
+    /**
+     * 请求参数(任意类型参数)
+     */
+    private Map<String, Object> paramsObj;
+
     /**
      * 请求头
      */
@@ -59,6 +64,10 @@ public class HttpParams {
         return flag;
     }
 
+    public Map<String,Object> getParamsObj(){
+        return paramsObj;
+    }
+
     public Map<String, String> getParams() {
         return params;
     }

+ 35 - 7
app/src/main/java/com/uas/hystorage/util/PrintUtils.java

@@ -2,6 +2,7 @@ package com.uas.hystorage.util;
 
 import android.content.Context;
 import android.text.TextUtils;
+import android.util.Log;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -22,10 +23,19 @@ public class PrintUtils {
                 printTemplate = SharedPreUtil.getString(context, Constants.FLAG.PRINT_TEMPLATE_CACHE, "");
             }
 
+            //     * @param offset 偏移值
+            //     * @param h      横向分辨率
+            //     * @param v      纵向分辨率
+            //     * @param height 最大高度----实际的打印纸张的高度
+            //     * @param qty    重复打印次数
             int offset = 6,
-                    h = 400,
-                    v = 800,
-                    height = 400,
+//                    h = 400,
+//                    v = 800,
+//                    height = 400,
+
+                                        h = 400,
+                                        v = 800,
+                                        height = 200,
                     qty = 1;
 
             JSONArray templateArray = JSON.parseArray(printTemplate);
@@ -46,10 +56,16 @@ public class PrintUtils {
                         String printKey = FastjsonUtil.getText(templateObject, "LP_NAME");
 
                         String printText = FastjsonUtil.getText(dataJson, printKey);
+                        Log.e("aaa", "打印内容: " + printText +
+                                ",dataJson:" + dataJson + ",printKey:" + printKey + ",valuetype:" + valuetype);
+
+                        if (valuetype.equals("constant")) {
+                            printText = printKey;
+                        }
 
                         if (!TextUtils.isEmpty(printText)) {
                             switch (valuetype) {
-                                case "barcode":
+                                case "barcode":     //条形码
                                     printHelper = printHelper.printBarCode(printText)
                                             .setX(printX)
                                             .setY(printY)
@@ -58,10 +74,10 @@ public class PrintUtils {
                                             .setCodeTextSize(2)
                                             .build();
                                     break;
-                                case "text":
-                                    int textFont = 7;
+                                case "text":    //文字
+                                    int textFont = 3;
                                     if ("BAR_BATCHCODE".equals(printKey)) {
-                                        textFont = 7;
+                                        textFont = 3;
                                     }
                                     printHelper = printHelper.printText(printText)
                                             .setX(printX)
@@ -78,6 +94,18 @@ public class PrintUtils {
                                             .setModel(2)
                                             .build();
                                     break;
+                                case "constant":        //文字
+                                    int textFont2 = 3;
+                                    if ("BAR_BATCHCODE".equals(printKey)) {
+                                        textFont2 = 3;
+                                    }
+                                    printHelper = printHelper.printText(printText)
+                                            .setX(printX)
+                                            .setY(printY)
+                                            .setBold(2)
+                                            .setTextFont(textFont2)
+                                            .build();
+                                    break;
                             }
                         }
                     }

二進制
app/src/main/res/drawable-xhdpi/shouyebaogao.png


二進制
app/src/main/res/drawable-xhdpi/tupian.png


二進制
app/src/main/res/drawable-xhdpi/xunchabaogao.png


二進制
app/src/main/res/drawable-xhdpi/zengjiatu.png


+ 46 - 0
app/src/main/res/layout/act_blue_tooth_print.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+
+    <include layout="@layout/view_head"/>
+
+    <RelativeLayout
+
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="#F2F2F2"
+        android:padding="8dp">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:text="开启蓝牙"
+            android:textColor="#000000"
+            android:textSize="14sp" />
+
+        <vn.luongvo.widget.iosswitchview.SwitchView
+            android:id="@+id/bluetooth_print_sv"
+            android:layout_width="40dp"
+            android:layout_height="24dp"
+            android:layout_alignParentRight="true" />
+
+        <ImageView
+            android:id="@+id/bluetooth_print_refresh_iv"
+            android:layout_width="24dp"
+            android:layout_height="24dp"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="20dp"
+            android:layout_toLeftOf="@id/bluetooth_print_sv"
+            android:src="@drawable/ic_refresh" />
+    </RelativeLayout>
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/bluetooth_print_rv"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+</LinearLayout>

+ 188 - 156
app/src/main/res/layout/act_inspection_send_samples.xml

@@ -4,211 +4,243 @@
     android:layout_height="match_parent"
     android:orientation="vertical">
 
-
     <include layout="@layout/view_head"/>
 
     <LinearLayout
+        android:id="@+id/ll_inspection"
         android:layout_width="match_parent"
-        android:layout_marginTop="20dp"
-        android:layout_height="40dp"
-        android:layout_marginStart="10dp"
-        android:layout_marginEnd="10dp"
-        android:gravity="center_vertical"
-        android:orientation="horizontal">
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="检验类型"
-            android:textSize="16sp"
-            android:textColor="@color/red"
-            />
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        >
 
-        <RadioGroup
-            android:id="@+id/rg_jianyanleixin"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="20dp"
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_marginTop="20dp"
+            android:layout_height="40dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="10dp"
+            android:gravity="center_vertical"
             android:orientation="horizontal">
 
-            <RadioButton
-                android:id="@+id/rb_shoujian"
-                android:layout_width="wrap_content"
+            <TextView
+                android:layout_width="70dp"
+                android:gravity="end"
                 android:layout_height="wrap_content"
-                android:text="首件"
-                android:textSize="16sp" />
+                android:text="检验类型"
+                android:textSize="16sp"
+                android:textColor="@color/red"
+                />
 
-            <RadioButton
-                android:id="@+id/rb_xunjian"
+            <RadioGroup
+                android:id="@+id/rg_jianyanleixin"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="80dp"
-                android:text="巡检"
+                android:layout_marginStart="20dp"
+                android:orientation="horizontal">
+
+                <RadioButton
+                    android:id="@+id/rb_shoujian"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:checked="true"
+                    android:text="首件"
+                    android:textSize="16sp" />
+
+                <RadioButton
+                    android:id="@+id/rb_xunjian"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="80dp"
+                    android:text="巡检"
+                    android:textSize="16sp"
+                    />
+
+            </RadioGroup>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_marginTop="10dp"
+            android:layout_width="wrap_content"
+            android:layout_height="40dp"
+            android:orientation="horizontal"
+            android:gravity="center_vertical"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="10dp"
+            >
+
+            <TextView
+                android:layout_width="70dp"
+                android:gravity="end"
+                android:layout_height="wrap_content"
+                android:text="岗位资源"
+                android:textColor="@color/red"
                 android:textSize="16sp"
                 />
 
-        </RadioGroup>
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="40dp"
-        android:orientation="horizontal"
-        android:gravity="center_vertical"
-        android:layout_marginStart="10dp"
-        android:layout_marginEnd="10dp"
-        >
+            <LinearLayout
+                android:layout_width="160dp"
+                android:layout_height="wrap_content"
+                android:background="@color/white"
+                android:layout_marginStart="10dp"
+                android:orientation="horizontal">
+
+                <com.uas.hystorage.view.ClearableEditText
+                    android:id="@+id/cet_gangweiziyuan"
+                    style="@style/EditTextStyle"
+                    android:layout_width="0dp"
+                    android:layout_weight="1"
+                    android:layout_margin="3dp"
+                    android:background="@drawable/bg_line_edittext"
+                    android:hint=""
+                    android:textColor="@color/black"/>
+
+                <ImageView
+                    android:id="@+id/iv_search"
+                    android:layout_width="34dp"
+                    android:layout_height="34dp"
+                    android:layout_gravity="center_vertical"
+                    android:layout_marginEnd="5dp"
+                    android:background="@drawable/bg_button"
+                    android:src="@drawable/search_48" />
+            </LinearLayout>
+
+            <TextView
+                android:id="@+id/tv_gangweiname"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="10dp"
+                android:text="岗位资源名称"
+                android:textSize="16sp"
+                />
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="岗位资源"
-            android:textColor="@color/red"
-            android:textSize="16sp"
-            />
+        </LinearLayout>
 
         <LinearLayout
-            android:layout_width="160dp"
-            android:layout_height="wrap_content"
-            android:background="@color/white"
+            android:layout_marginTop="10dp"
+            android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:orientation="horizontal"
             android:layout_marginStart="10dp"
-            android:orientation="horizontal">
+            android:layout_marginEnd="20dp"
+            android:gravity="center_vertical"
+            >
+
+            <TextView
+                android:layout_width="70dp"
+                android:gravity="end"
+                android:layout_height="wrap_content"
+                android:text="机台"
+                android:textSize="16sp"
+                android:textColor="@color/red"
+                />
 
             <com.uas.hystorage.view.ClearableEditText
-                android:id="@+id/cet_gangweiziyuan"
-                style="@style/EditTextStyle"
-                android:layout_width="0dp"
-                android:layout_weight="1"
+                android:id="@+id/cet_jitai"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginStart="20dp"
+                android:layout_margin="3dp"
+                android:background="@drawable/bg_line_edittext"
                 android:hint=""
                 android:textColor="@color/black"/>
 
-            <ImageView
-                android:id="@+id/iv_search"
-                android:layout_width="34dp"
-                android:layout_height="34dp"
-                android:layout_gravity="center_vertical"
-                android:layout_marginEnd="5dp"
-                android:background="@drawable/bg_button"
-                android:src="@drawable/search_48" />
         </LinearLayout>
 
-        <TextView
-            android:id="@+id/tv_gangweiname"
+        <LinearLayout
+            android:layout_marginTop="10dp"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_height="40dp"
+            android:orientation="horizontal"
             android:layout_marginStart="10dp"
-            android:text="岗位资源名称"
-            android:textSize="16sp"
-            />
+            android:layout_marginEnd="20dp"
+            android:gravity="center_vertical"
+            >
 
-    </LinearLayout>
+            <TextView
+                android:layout_width="70dp"
+                android:gravity="end"
+                android:layout_height="wrap_content"
+                android:text="工单号"
+                android:textSize="16sp"
+                android:textColor="@color/red"
+                />
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="40dp"
-        android:orientation="horizontal"
-        android:layout_marginStart="10dp"
-        android:layout_marginEnd="20dp"
-        android:gravity="center_vertical"
-        >
+            <com.uas.hystorage.view.ClearableEditText
+                android:id="@+id/cet_gondanhao"
+                android:layout_height="match_parent"
+                android:layout_width="match_parent"
+                android:layout_marginStart="20dp"
+                android:layout_margin="3dp"
+                android:background="@drawable/bg_line_edittext"
+                android:hint=""
+                android:textColor="@color/black"/>
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="机台"
-            android:textSize="16sp"
-            android:textColor="@color/red"
-            />
+        </LinearLayout>
 
-        <com.uas.hystorage.view.ClearableEditText
-            android:id="@+id/cet_jitai"
-            style="@style/EditTextStyle"
+        <LinearLayout
+            android:layout_marginTop="10dp"
             android:layout_width="match_parent"
+            android:layout_height="40dp"
+            android:orientation="horizontal"
             android:layout_marginStart="10dp"
-            android:hint=""
-            android:textColor="@color/black"/>
+            android:layout_marginEnd="20dp"
+            android:gravity="center_vertical"
+            >
 
-    </LinearLayout>
+            <TextView
+                android:layout_width="70dp"
+                android:gravity="end"
+                android:layout_height="wrap_content"
+                android:text="项目号"
+                android:textSize="16sp"
+                android:textColor="@color/red"
+                />
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="40dp"
-        android:orientation="horizontal"
-        android:layout_marginStart="10dp"
-        android:layout_marginEnd="20dp"
-        android:gravity="center_vertical"
-        >
+            <com.uas.hystorage.view.ClearableEditText
+                android:id="@+id/cet_xiangmuhao"
+                android:layout_height="match_parent"
+                android:layout_width="match_parent"
+                android:layout_marginStart="20dp"
+                android:layout_margin="3dp"
+                android:background="@drawable/bg_line_edittext"
+                android:hint=""
+                android:textColor="@color/black"/>
+
+        </LinearLayout>
+
+        <Button
+            android:id="@+id/bt_dayinbiaoqian"
+            style="@style/ButtonStyle"
+            android:layout_width="match_parent"
+            android:layout_margin="12dp"
+            android:layout_alignParentBottom="true"
+            android:text="打印标签" />
 
         <TextView
+            android:id="@+id/tv_isok"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="工单号"
-            android:textSize="16sp"
-            android:textColor="@color/red"
+            android:layout_marginStart="20dp"
+            android:layout_marginEnd="20dp"
+            android:textColor="@color/blue"
             />
 
-        <com.uas.hystorage.view.ClearableEditText
-            android:id="@+id/cet_gondanhao"
-            style="@style/EditTextStyle"
-            android:layout_width="match_parent"
-            android:layout_marginStart="10dp"
-            android:hint=""
-            android:textColor="@color/black"/>
-
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="40dp"
-        android:orientation="horizontal"
-        android:layout_marginStart="10dp"
-        android:layout_marginEnd="20dp"
-        android:gravity="center_vertical"
-        >
-
         <TextView
+            android:id="@+id/tv_details"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="项目号"
-            android:textSize="16sp"
-            android:textColor="@color/red"
+            android:textColor="@color/black"
+            android:layout_marginStart="20dp"
+            android:layout_marginEnd="20dp"
             />
 
-        <com.uas.hystorage.view.ClearableEditText
-            android:id="@+id/cet_xiangmuhao"
-            style="@style/EditTextStyle"
-            android:layout_width="match_parent"
-            android:layout_marginStart="10dp"
-            android:hint=""
-            android:textColor="@color/black"/>
-
     </LinearLayout>
 
-    <Button
-        android:id="@+id/bt_dayinbiaoqian"
-        style="@style/ButtonStyle"
+    <FrameLayout
+        android:id="@+id/fl_dayin"
+        android:visibility="gone"
         android:layout_width="match_parent"
-        android:layout_margin="12dp"
-        android:layout_alignParentBottom="true"
-        android:text="打印标签" />
-
-    <TextView
-        android:id="@+id/tv_isok"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="20dp"
-        android:layout_marginEnd="20dp"
-        android:textColor="@color/blue_A200"
+        android:layout_height="match_parent"
         />
 
-    <TextView
-        android:id="@+id/tv_details"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textColor="@color/black"
-        android:layout_marginStart="20dp"
-        android:layout_marginEnd="20dp"
-        />
-
-
 </LinearLayout>

+ 65 - 0
app/src/main/res/layout/act_sample_selivery_list.xml

@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:focusableInTouchMode="true"
+    android:orientation="vertical">
+
+    <include layout="@layout/view_head"/>
+
+    <LinearLayout
+        android:id="@+id/ll_sample_selivery"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        >
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="50dp"
+            android:orientation="horizontal"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginTop="20dp"
+            android:padding="5dp">
+
+            <com.uas.hystorage.view.ClearableEditText
+                android:id="@+id/cet_search_et"
+                style="@style/EditTextStyle"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:background="@drawable/shape_msg_block"
+                android:drawableLeft="@drawable/icon_search"
+                android:hint="搜索"
+                android:imeOptions="actionSearch"
+                android:paddingLeft="5dp" />
+
+            <TextView
+                android:id="@+id/tv_search_btn"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:gravity="center"
+                android:paddingLeft="10dp"
+                android:paddingRight="10dp"
+                android:text="@string/btn_search"
+                android:textColor="@color/text_blue" />
+
+        </LinearLayout>
+
+
+        <com.handmark.pulltorefresh.library.PullToRefreshListView
+            android:id="@+id/refreshListView"
+            style="@style/ListViewBasic"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginBottom="30dp"
+            android:layout_marginTop="20dp"
+            android:scrollbars="none"
+            android:scrollingCache="false" />
+
+    </LinearLayout>
+
+
+</LinearLayout>

+ 159 - 0
app/src/main/res/layout/fra_report_page.xml

@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    >
+
+    <android.support.v4.widget.NestedScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        >
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginStart="20dp"
+            android:layout_marginEnd="20dp"
+            android:orientation="vertical"
+            >
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="40dp"
+                android:orientation="horizontal"
+                android:gravity="center_vertical"
+                android:layout_marginTop="5dp"
+                >
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="单号"
+                    android:textSize="16sp"
+                    android:textColor="@color/red"
+                    />
+
+                <com.uas.hystorage.view.ClearableEditText
+                    android:id="@+id/cet_danhao"
+                    android:background="@drawable/bg_line_edittext"
+                    android:layout_height="40dp"
+                    android:layout_width="match_parent"
+                    android:layout_marginStart="10dp"
+                    android:hint=""
+                    android:textColor="@color/black"/>
+
+            </LinearLayout>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="QC检验附件"
+                android:textSize="16sp"
+                android:textColor="@color/black"
+                />
+
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/rv_qc_fujian"
+                android:layout_width="match_parent"
+                android:layout_height="80dp"
+
+                />
+
+            <ImageView
+                android:visibility="gone"
+                android:id="@+id/iv_qc_fujian"
+                android:layout_width="150dp"
+                android:layout_height="80dp"
+                android:layout_marginStart="30dp"
+                android:background="@drawable/tupian"
+                />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="QC检验备注"
+                android:textSize="16sp"
+                android:textColor="@color/black"
+                />
+
+            <com.uas.hystorage.view.ClearableEditText
+                android:id="@+id/cet_beizhu1"
+                android:background="@drawable/bg_line_edittext"
+                android:layout_height="40dp"
+                android:layout_width="match_parent"
+                android:layout_marginStart="30dp"
+                android:hint=""
+                android:textColor="@color/black"/>
+
+            <TextView
+                android:layout_marginTop="20dp"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="实验室检验附件"
+                android:textSize="16sp"
+                android:textColor="@color/black"
+                />
+
+            <android.support.v7.widget.RecyclerView
+                android:id="@+id/rv_shiyanfujian"
+                android:layout_width="match_parent"
+                android:layout_height="80dp"
+                />
+
+            <ImageView
+                android:visibility="gone"
+                android:id="@+id/iv_shiyanfujian"
+                android:layout_width="150dp"
+                android:layout_height="80dp"
+                android:layout_marginStart="30dp"
+                android:background="@drawable/tupian"
+                />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="实验室检验备注"
+                android:textSize="16sp"
+                android:textColor="@color/black"
+                />
+
+            <com.uas.hystorage.view.ClearableEditText
+                android:id="@+id/cet_beizhu2"
+                android:background="@drawable/bg_line_edittext"
+                android:layout_height="40dp"
+                android:layout_width="match_parent"
+                android:layout_marginStart="30dp"
+                android:hint=""
+                android:textColor="@color/black"/>
+
+            <Button
+                android:layout_marginTop="10dp"
+                android:id="@+id/bt_gengxin"
+                android:layout_width="match_parent"
+                android:layout_margin="12dp"
+                android:layout_height="wrap_content"
+                android:textSize="16sp"
+                android:background="@drawable/selector_confirm_bg"
+                android:layout_alignParentBottom="true"
+                android:text="更新" />
+
+
+            <TextView
+                android:id="@+id/tv_updater_info"
+                android:layout_marginTop="10dp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text=""
+                android:textSize="16sp"
+                android:textColor="@color/red"
+                />
+
+
+        </LinearLayout>
+
+    </android.support.v4.widget.NestedScrollView>
+
+
+</LinearLayout>

+ 40 - 0
app/src/main/res/layout/item_annex_image.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_margin="10dp">
+
+    <RelativeLayout
+        android:id="@+id/rl_image"
+        android:layout_width="120dp"
+        android:layout_height="80dp"
+        >
+
+        <ImageView
+            android:id="@+id/iv_fujiantu"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:src="@drawable/tupian"
+            />
+
+        <ImageView
+            android:id="@+id/iv_cancel"
+            android:layout_width="35dp"
+            android:layout_height="35dp"
+            android:src="@drawable/ic_delete"
+            android:layout_alignParentEnd="true"
+            />
+
+    </RelativeLayout>
+
+    <ImageView
+        android:visibility="gone"
+        android:id="@+id/iv_zengjiatu"
+        android:src="@drawable/zengjiatu"
+        android:layout_width="120dp"
+        android:layout_height="80dp"
+        android:padding="12dp"
+        />
+
+</RelativeLayout>

+ 230 - 0
app/src/main/res/layout/item_sample_delivery.xml

@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    >
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="5dp"
+        android:layout_marginEnd="5dp"
+        android:layout_marginTop="10dp"
+        >
+
+        <TextView
+            android:id="@+id/tv_danhao"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="单号:"
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+        <TextView
+            android:id="@+id/tv_danhao_num"
+            android:layout_toEndOf="@+id/tv_danhao"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="10dp"
+            android:text=""
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+        <TextView
+            android:id="@+id/tv_type"
+            android:layout_toStartOf="@+id/tv_type_num"
+            android:layout_marginEnd="10dp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="类型:"
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+        <TextView
+            android:id="@+id/tv_type_num"
+            android:layout_alignParentEnd="true"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text=""
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="5dp"
+        android:layout_marginEnd="5dp"
+        >
+
+        <TextView
+            android:id="@+id/tv_jianchariqi"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="检验日期:"
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+        <TextView
+            android:id="@+id/tv_jianchariqi_num"
+            android:layout_toEndOf="@+id/tv_jianchariqi"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="5dp"
+            android:text=""
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+
+        <TextView
+            android:id="@+id/tv_jianyanren"
+            android:layout_toStartOf="@+id/tv_jianyanren_num"
+            android:layout_marginEnd="10dp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="检验人:"
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+
+        <TextView
+            android:id="@+id/tv_jianyanren_num"
+            android:layout_alignParentEnd="true"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text=""
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="5dp"
+        android:layout_marginEnd="5dp"
+        >
+
+        <TextView
+            android:id="@+id/tv_gangweiziyuan"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="岗位资源:"
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+        <TextView
+            android:id="@+id/tv_gangweiziyuan_num"
+            android:layout_toEndOf="@+id/tv_gangweiziyuan"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="10dp"
+            android:text="编号(名称)"
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="5dp"
+        android:layout_marginEnd="5dp"
+        >
+
+        <TextView
+            android:id="@+id/tv_jitai"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="机台:"
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+        <TextView
+            android:id="@+id/tv_jitai_num"
+            android:layout_toEndOf="@+id/tv_jitai"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="10dp"
+            android:text=""
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+
+        <TextView
+            android:id="@+id/tv_xiangmuhao"
+            android:layout_toStartOf="@+id/tv_xiangmuhao_num"
+            android:layout_marginEnd="10dp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="项目号:"
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+
+        <TextView
+            android:id="@+id/tv_xiangmuhao_num"
+            android:layout_alignParentEnd="true"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text=""
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="5dp"
+        android:layout_marginEnd="5dp"
+        >
+
+        <TextView
+            android:id="@+id/tv_gongdanhao"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="工单号:"
+            android:textSize="14sp"
+            android:textColor="@color/black"
+            />
+
+        <TextView
+            android:id="@+id/tv_gongdanhao_num"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="10dp"
+            android:layout_toEndOf="@+id/tv_gongdanhao"
+            android:text=""
+            android:textColor="@color/black"
+            android:textSize="14sp" />
+
+    </RelativeLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginTop="10dp"
+        android:background="@color/black"
+        android:layout_marginStart="1dp"
+        android:layout_marginEnd="1dp"
+        />
+
+</LinearLayout>

+ 21 - 5
app/src/main/res/layout/view_head.xml

@@ -10,14 +10,30 @@
     <TextView
         android:id="@+id/tv_title"
         style="@style/ActionBarTextView"
-        tools:text="标题"/>
+        tools:text=""/>
 
     <ImageView
         android:id="@+id/iv_icon"
-        style="@style/ActionBarRightButton"
-        android:layout_width="@dimen/width_24"
-        android:layout_height="@dimen/height_24"
+        android:layout_alignParentEnd="true"
+        android:layout_centerVertical="true"
+        android:layout_width="25dp"
+        android:layout_height="25dp"
         android:layout_gravity="center_vertical"
-        android:layout_marginRight="15dp"
+        android:layout_marginEnd="15dp"
         />
+
+    <TextView
+        android:visibility="gone"
+        android:id="@+id/tv_type"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="@color/black"
+        android:layout_alignParentEnd="true"
+        android:text=""
+        android:textSize="16sp"
+        android:layout_centerVertical="true"
+        android:layout_marginEnd="15dp"
+        />
+
+
 </RelativeLayout>

+ 1 - 1
pda_libs/pulltoreflashlibrary/build/intermediates/incremental/packageDebugResources/compile-file-map.properties

@@ -1,4 +1,4 @@
-#Tue Sep 03 17:33:16 CST 2024
+#Fri Sep 13 11:46:54 CST 2024
 D\:\\GongSi\\AS_XiangMu\\hyuas-mes\\hyuas-mes\\pda_libs\\pulltoreflashlibrary\\src\\main\\res\\drawable-mdpi\\indicator_arrow.png=D\:\\GongSi\\AS_XiangMu\\hyuas-mes\\hyuas-mes\\pda_libs\\pulltoreflashlibrary\\build\\intermediates\\packaged_res\\debug\\drawable-mdpi-v4\\indicator_arrow.png
 D\:\\GongSi\\AS_XiangMu\\hyuas-mes\\hyuas-mes\\pda_libs\\pulltoreflashlibrary\\src\\main\\res\\drawable-mdpi\\default_ptr_flip.png=D\:\\GongSi\\AS_XiangMu\\hyuas-mes\\hyuas-mes\\pda_libs\\pulltoreflashlibrary\\build\\intermediates\\packaged_res\\debug\\drawable-mdpi-v4\\default_ptr_flip.png
 D\:\\GongSi\\AS_XiangMu\\hyuas-mes\\hyuas-mes\\pda_libs\\pulltoreflashlibrary\\src\\main\\res\\anim\\slide_out_to_bottom.xml=D\:\\GongSi\\AS_XiangMu\\hyuas-mes\\hyuas-mes\\pda_libs\\pulltoreflashlibrary\\build\\intermediates\\packaged_res\\debug\\anim\\slide_out_to_bottom.xml