123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511 |
- package com.fxy.detection;
- import android.annotation.SuppressLint;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.support.v7.widget.RecyclerView;
- import android.view.KeyEvent;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import com.elvishew.xlog.XLog;
- import com.fxy.R;
- import com.fxy.baselibrary.base.BaseActivity;
- import com.fxy.baselibrary.bean.BaseEventBusBean;
- import com.fxy.baselibrary.interfaces.OnRxScanerListener;
- import com.fxy.baselibrary.util.JsonUtil;
- import com.fxy.baselibrary.views.MarqueeTextView;
- import com.fxy.bean.ActionBean;
- import com.fxy.bean.ScanBean;
- import com.fxy.common.PictureSelectorUpload;
- import com.fxy.constant.BaseConfig;
- import com.fxy.constant.EventCode;
- import com.fxy.detection.bean.DealDiffBean;
- import com.fxy.detection.bean.NeedPhotoBean;
- import com.fxy.net.MyDialogCallback;
- import com.fxy.net.Urls;
- import com.google.gson.Gson;
- import com.google.zxing.Result;
- import com.luck.picture.lib.config.PictureConfig;
- import com.lzy.okgo.OkGo;
- import com.lzy.okgo.model.Response;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import butterknife.BindView;
- import butterknife.ButterKnife;
- import butterknife.OnClick;
- import butterknife.Unbinder;
- import sto.android.app.StoJNI;
- import sto.android.app.StoPdaKeyEvent;
- import sto.android.app.StoTongJNI;
- public class DetectionDealDiffMainActivity extends BaseActivity implements StoJNI.ScanCallBack {
- /**
- * 列表适配器
- */
- Context mContext = this;
- @BindView(R.id.mt_box_number)
- MarqueeTextView mtBoxNumber;
- @BindView(R.id.mt_unit_code)
- MarqueeTextView mtUnitCode;
- @BindView(R.id.recyclerview)
- RecyclerView recyclerView;
- @BindView(R.id.ll_recycler_view)
- LinearLayout llRecyclerView;
- private DealDiffBean dealDiffBean = new DealDiffBean();
- private List<NeedPhotoBean> listNeedPhoto = new ArrayList<>();
- //节点
- private String nodeCode = "";
- //定义文件上传
- private HashMap<Integer,PictureSelectorUpload> mapPictureSelector = new HashMap<>();
- private int currentPictureInx = -1;
- //提交数据
- private JSONObject submitData = new JSONObject();
- private Unbinder unbinder;
- private ScanBean scanBean;
- @Override
- public int getContentViewResId() {
- return R.layout.activity_fxy_detection_deal_diff;
- }
- @Override
- public boolean showToolBar() {
- return true;
- }
- @Override
- public boolean openEventBus() {
- return true;
- }
- @Override
- protected void getBundleExtras(Bundle bundle) {
- dealDiffBean = JsonUtil.jsonString2Bean(bundle.getString("data"),DealDiffBean.class);
- }
- //finish的返回监听
- //这里的requestCode参数,就是上面设置的 1 ,当跳转的页面返回的时候,通过这个加以判断
- //resultCode ,这个参数是在跳转的页面里面规定的,它也是一个int类型的标志
- //第三个参数包含了返回的值
- //如果不需要所跳转的页面返回值,也就不需要这个方法了
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- // 图片选择结果回调
- if (resultCode == RESULT_OK) {
- // 图片选择结果回调
- if (requestCode == PictureConfig.CHOOSE_REQUEST || requestCode == PictureConfig.REQUEST_CAMERA) {
- PictureSelectorUpload filedUpload = mapPictureSelector.get(currentPictureInx);
- if (filedUpload != null){
- filedUpload.getSelectImg(data);
- }
- }
- }
- }
- /**
- * EventBus接收信息的方法,开启后才会调用(非粘性事件)
- *
- * @param event
- */
- @Override
- protected void EventBean(BaseEventBusBean event) {
- // XLog.e("----------接收返回--------------");
- // XLog.e("接收返回:"+event.getEventCode());
- if (event != null && event.getEventCode() == EventCode.displacement_refresh) {
- }
- }
- @Override
- public boolean isPlayMusic() {
- return true;
- }
- @Override
- protected void initView() {
- unbinder = ButterKnife.bind(this);
- setTitleName("主机差异");
- initData();
- }
- private void initData() {
- nodeCode = dealDiffBean.getNodeCode();
- mtBoxNumber.setText(dealDiffBean.getBoxNumber());
- mtUnitCode.setText(dealDiffBean.getUnitCode());
- listNeedPhoto = dealDiffBean.getNeedPhotos();
- if (listNeedPhoto!=null){
- for (int i=0;i<listNeedPhoto.size();i++){
- addPictureSelectorUpload(i,listNeedPhoto.get(i).getLimit());
- }
- }
- }
- /**
- *
- * @param position int 遍历添加
- */
- private void addPictureSelectorUpload(int position,int limit){
- String tagKey = "recyclerview"+position;
- View itemPictureSelector = View.inflate(mContext, R.layout.item_picture_selector, null);
- TextView tvPicturesTitle = itemPictureSelector.findViewById(R.id.tv_pictures_title);
- tvPicturesTitle.setText(listNeedPhoto.get(position).getFieldKey());
- RecyclerView rvLabelShowImg = (RecyclerView)itemPictureSelector.findViewById(R.id.recyclerview);
- itemPictureSelector.setTag(tagKey);
- llRecyclerView.addView(itemPictureSelector);
- PictureSelectorUpload tmpPictureSelector = setItemPicture(String.valueOf(position),rvLabelShowImg,limit,PictureConfig.TYPE_IMAGE);
- mapPictureSelector.put(position,tmpPictureSelector);
- }
- /**
- * 设置多个上传文件
- * @param actionType String
- * @param showImg RecyclerView
- */
- private PictureSelectorUpload setItemPicture(String actionType,RecyclerView showImg,int maxNum,int pictureType){
- PictureSelectorUpload pictureUpload = new PictureSelectorUpload(DetectionDealDiffMainActivity.this,showImg,"detection",maxNum,pictureType);
- pictureUpload.setActionType(actionType);
- pictureUpload.setCompress(true,100,500);
- pictureUpload.setOnlyCamera(true);
- pictureUpload.setProgressType(2);
- //showImg.onTouchEvent()
- pictureUpload.setOnChangeListener(new PictureSelectorUpload.UploadChangeListener() {
- @Override
- public void uploadResult(boolean State,String actionType) {
- if (State) {
- }
- }
- @Override
- public void uploadActionType(String actionType) {
- System.out.println("actionType:"+actionType);
- currentPictureInx = Integer.parseInt(actionType);
- }
- });
- return pictureUpload;
- }
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- //XLog.e("event:"+event.getKeyCode());
- // if ((event.getKeyCode()==KeyEvent.KEYCODE_DPAD_CENTER ) && event.getAction() == KeyEvent.ACTION_DOWN){
- // //按确定键
- // if(validate()){
- // doPutIn();
- // }
- // return true;
- // }
- return super.dispatchKeyEvent(event);
- }
- //监听按键
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- //XLog.e("监听按键:"+keyCode);XLog.e(event);
- if (scanBean.getIsBroadcast() == 0 && StoTongJNI.getIns(mContext).getEventFuction(keyCode) == StoPdaKeyEvent.KEYCODE_SCAN
- && event.getRepeatCount() == 0) {
- if (StoTongJNI.getIns(mContext).GetScannerIsScanning()) {
- //
- } else {
- StoTongJNI.getIns(mContext).SetScannerStart();
- }
- }
- return super.onKeyDown(keyCode, event);
- }
- @SuppressLint("HandlerLeak")
- Handler scanHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- // TODO Auto-generated method stub
- if (msg.obj != null) {
- String scanResult = msg.obj.toString().trim();
- if (!scanResult.isEmpty()) {
- setScanResult(scanResult);
- }
- }
- }
- };
- @Override
- public void onScanResults(String str) {
- Message msg = new Message();
- msg.obj = str;
- scanHandler.sendMessage(msg);
- }
- @Override
- public void onScanResults(String str, int type) {
- }
- /**
- * 定义广播接受
- */
- BroadcastReceiver mReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String scanResult = intent.getStringExtra(scanBean.getDataName());
- if (scanResult == null) {
- return;
- }
- String scanStatus = "";
- if (!scanBean.getStatusName().isEmpty()) {
- scanStatus = intent.getStringExtra(scanBean.getStatusName());
- } else {
- scanStatus = scanResult.isEmpty() ? "" : "ok"; //有值 默认是扫码成功;
- }
- //新大陆(MT65,MT90) 需要手动关闭
- if (!scanBean.getActionStop().isEmpty()) {
- Intent stopIntent = new Intent(scanBean.getActionStop());
- mContext.sendBroadcast(stopIntent);
- }
- if ("ok".equals(scanStatus)) {
- setScanResult(scanResult);
- } else {
- showErrorToast(getString(R.string.scan_failed));
- }
- }
- };
- /**
- * 注册广播
- */
- private void initReceiver() {
- try {
- String scanStr = getScanSetting();
- scanBean = JsonUtil.getObject(scanStr, ScanBean.class);
- Integer is_broadcast = scanBean.getIsBroadcast();//是否广播
- if (is_broadcast == 1) {
- IntentFilter mFilter = new IntentFilter(scanBean.getAction());
- this.registerReceiver(mReceiver, mFilter);
- } else {
- //不广播进行处理 jni模式
- String pdaBrand = StoTongJNI.getmPdaBrand();
- if (!pdaBrand.isEmpty()) {
- StoTongJNI.getIns(this).setmScanCB(this);
- StoTongJNI.getIns(this).SetScannerOn();
- }
- }
- } catch (Exception e) {
- showErrorToast("获取扫码配置失败" + e.getMessage());
- XLog.e("获取扫码配置失败:" + e.getMessage());
- }
- }
- //统一按钮回调
- public void callbackEditor(View v) {
- switch (v.getId()) {
- default:
- }
- }
- private void initEdit() {
- }
- private OnRxScanerListener mScanerListener = new OnRxScanerListener() {
- @Override
- public void onSuccess(String type, Result result) {
- String scanResult = result.getText();
- switch (type) {
- case BaseConfig.COMMON_SCANNER_ONLY:
- setScanResult(scanResult);
- break;
- }
- }
- @Override
- public void onFail(String type, String message) {
- }
- };
- //把扫描结果赋值
- private void setScanResult(String scanResult) {
- //获取焦点的view对象
- View view = getWindow().getDecorView().findFocus();
- //如果是EditText
- if (view instanceof EditText) {
- ((EditText) view).setText(scanResult);
- //执行回调
- callbackEditor(view);
- }
- }
- /**
- * 完成
- */
- private void doConfirm() {
- if (!validate()) {
- return;
- }
- String postJson = submitData.toString();
- if (!checkRepeat(Urls.FXY_DETECTION_COMPLETED + (postJson))) {
- return;
- }
- OkGo.<String>post(Urls.getServiceAddress(this) + Urls.FXY_DETECTION_COMPLETED).upJson(postJson)
- .execute(new MyDialogCallback(this, true, true) {
- @Override
- public void onSuccess(Response<String> response) {
- super.onSuccess(response);
- try {
- ActionBean bean = JsonUtil.getObject(response.body(), ActionBean.class);
- if (bean.code == 1) {
- showSuccessToast(bean.msg);
- finish();
- } else {
- showWarningToast(bean.msg);
- }
- } catch (Exception e) {
- e.printStackTrace();
- XLog.e("请求返回信息错误", e.getMessage());
- }
- }
- });
- }
- /*
- * 校验必录
- */
- private boolean validate() {
- try {
- submitData.put("box_number",dealDiffBean.getBoxNumber());
- submitData.put("goods_id","");
- submitData.put("unit_code",dealDiffBean.getUnitCode());
- JSONArray steps = new JSONArray();
- if (listNeedPhoto!=null && listNeedPhoto.size()>0){
- for (int i=0;i<listNeedPhoto.size();i++){
- JSONObject item = new JSONObject();
- ArrayList<String> urlList = mapPictureSelector.get(i).getPhotoList();
- String fieldKey = listNeedPhoto.get(i).getFieldKey();
- if (urlList.size()==0){
- showErrorToast(fieldKey+"需要拍照");
- return false;
- }
- item.put("node_code",nodeCode);
- item.put("attr_id","");
- item.put("field_key",fieldKey);
- item.put("url",(new Gson()).toJson(urlList));
- steps.put(i,item);
- }
- }
- } catch (JSONException e) {
- e.printStackTrace();
- showErrorToast(e.getMessage());
- return false;
- }
- return true;
- }
- @OnClick({R.id.btn_confirm})
- public void onViewClicked(View view) {
- Bundle bundle = new Bundle();
- switch (view.getId()) {
- case R.id.btn_confirm:
- doConfirm();
- break;
- default:
- break;
- }
- }
- @Override
- protected void onDestroy() {
- unbinder.unbind();
- super.onDestroy();
- }
- @Override
- protected void onResume() {
- super.onResume();
- initReceiver();
- }
- @Override
- protected void onPause() {
- super.onPause();
- //销毁在onResume()方法中的广播
- try {
- //停止扫描
- Integer is_broadcast = scanBean.getIsBroadcast();//是否广播
- if (is_broadcast == 0) {
- StoTongJNI.getIns(mContext).SetScannerStop();
- StoTongJNI.getIns(mContext).SetScannerOff();
- } else {
- unregisterReceiver(mReceiver);
- }
- } catch (Exception e) {
- XLog.e("销毁广播失败:", e.getMessage());
- }
- }
- }
|