123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709 |
- package com.fxy.hk;
- 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.text.Editable;
- import android.text.TextWatcher;
- import android.view.KeyEvent;
- import android.view.View;
- import android.view.inputmethod.EditorInfo;
- import android.widget.EditText;
- import android.widget.ImageButton;
- 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.qrcode.ActivityScanerCode;
- import com.fxy.baselibrary.util.JsonUtil;
- import com.fxy.baselibrary.util.StringUtils;
- import com.fxy.baselibrary.views.MarqueeTextView;
- import com.fxy.bean.ActionBean;
- import com.fxy.bean.ScanBean;
- import com.fxy.bean.UploadResultBean;
- import com.fxy.common.FiledUpload;
- import com.fxy.constant.BaseConfig;
- import com.fxy.constant.EventCode;
- import com.fxy.helper.HkDataHelper;
- import com.fxy.net.MyDialogCallback;
- import com.fxy.net.Urls;
- import com.fxy.realm.CutRuleRealm;
- import com.fxy.realm.HkTransDetailRealm;
- import com.fxy.realm.HkTransRealm;
- import com.fxy.view.FloatingImageView;
- import com.google.gson.Gson;
- import com.google.zxing.Result;
- import com.jaredrummler.materialspinner.MaterialSpinner;
- import com.luck.picture.lib.PictureSelector;
- import com.luck.picture.lib.config.PictureConfig;
- import com.luck.picture.lib.config.PictureMimeType;
- import com.luck.picture.lib.entity.LocalMedia;
- import com.lzy.okgo.OkGo;
- import com.lzy.okgo.model.Response;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.util.ArrayList;
- import java.util.List;
- import butterknife.BindView;
- import butterknife.ButterKnife;
- import butterknife.OnClick;
- import butterknife.Unbinder;
- import io.realm.RealmResults;
- import sto.android.app.StoJNI;
- import sto.android.app.StoPdaKeyEvent;
- import sto.android.app.StoTongJNI;
- public class HkPutinMainActivity extends BaseActivity implements StoJNI.ScanCallBack{
- /**
- * 列表适配器
- */
- Context mContext = this;
- //单号清除
- @BindView(R.id.ib_order_no_clear)
- ImageButton ibOrderNoClear;
- //单号
- @BindView(R.id.et_order_no)
- EditText etOrderNo;
- @BindView(R.id.ms_batch_list)
- MaterialSpinner batchListSpinner;
- @BindView(R.id.mt_order_code)
- MarqueeTextView mtOrderCode;
- @BindView(R.id.tv_sort)
- TextView tvSort;
- private String batchNumber = "";
- private FiledUpload filedUpload;
- //
- //扫码扫码动作
- private ScanBean scanBean;
- private List<CutRuleRealm> cutRuleRealmList;
- //浮动按钮
- @BindView(R.id.iv_drag)
- FloatingImageView iv_drag;
- private List<String> spinnerBatchList = new ArrayList<String>();
- protected String action;
- private Unbinder unbinder;
- @Override
- public int getContentViewResId() {
- return R.layout.activity_fxy_hk_putin;
- }
- @Override
- public boolean showToolBar() {
- return true;
- }
- @Override
- public boolean openEventBus() {
- return true;
- }
- @Override
- protected void getBundleExtras(Bundle bundle) {
- }
- //finish的返回监听
- //这里的requestCode参数,就是上面设置的 1 ,当跳转的页面返回的时候,通过这个加以判断
- //resultCode ,这个参数是在跳转的页面里面规定的,它也是一个int类型的标志
- //第三个参数包含了返回的值
- //如果不需要所跳转的页面返回值,也就不需要这个方法了
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- // 图片选择结果回调
- if (resultCode == RESULT_OK && requestCode == PictureConfig.CHOOSE_REQUEST) {
- List<LocalMedia> images = PictureSelector.obtainMultipleResult(data);
- LocalMedia localMedia = images.get(0);
- String localPath = localMedia.isCompressed() ? localMedia.getCompressPath():localMedia.getPath();
- filedUpload.filedUpload(localPath);
- filedUpload.setOnChangeListener(new FiledUpload.UploadChangeListener() {
- @Override
- public void uploadResult(UploadResultBean uploadResultBean) {
- if (uploadResultBean.getStatus()==1){
- ArrayList<String> photoList = new ArrayList<String>();
- photoList.add(uploadResultBean.getPath());
- pictureInbound(photoList);
- }else{
- showErrorToast("上传图片失败");
- XLog.e("上传结果失败"+uploadResultBean.getError());
- }
- }
- });
- }
- }
- /**
- * 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("托盘入库");
- //拉取数据
- (new HkDataHelper(HkPutinMainActivity.this)).getBaseInfo();
- initEdit();
- iniData();
- initSpinner();
- filedUpload = new FiledUpload(HkPutinMainActivity.this,"photo");
- //监听浮动按钮
- iv_drag.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if(!iv_drag.isDrag()){
- ActivityScanerCode.setScanerListener(mScanerListener);
- ActivityScanerCode.intent2Activity(mContext, BaseConfig.COMMON_SCANNER_ONLY);
- }
- }
- });
- }
- private void iniData(){
- RealmResults<HkTransRealm> realmResultsAll = mRealm.where(HkTransRealm.class).findAll();
- realmResultsAll.load();
- spinnerBatchList = new ArrayList<String>();
- if (realmResultsAll.size()>0){
- for (int i=0;i<realmResultsAll.size();i++){
- spinnerBatchList.add(realmResultsAll.get(i).getBatch());
- }
- }
- if (spinnerBatchList.size()>0){
- batchNumber = spinnerBatchList.get(0);
- }
- batchListSpinner.setItems(spinnerBatchList);
- batchListSpinner.setSelected(false);
- cutRuleRealmList = mRealm.where(CutRuleRealm.class).findAll();
- initSpinner();
- }
- /**
- * 初始化下拉框控件值
- */
- private void initSpinner() {
- batchListSpinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener<String>() {
- @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) {
- batchNumber = item;
- etOrderNo.setEnabled(true);
- }
- });
- }
- //拍照上传
- private void pictureInbound(ArrayList<String> photoList){
- try {
- JSONObject jsonObject = new JSONObject();
- Gson gson = new Gson();
- jsonObject.put("photo",gson.toJson(photoList));
- OkGo.<String>post(Urls.getServiceAddress(this) + Urls.FXY_GK_INBOUND_PICTURE).upJson(jsonObject)
- .execute(new MyDialogCallback(this, true, false) {
- @Override
- public void onSuccess(Response<String> response) {
- super.onSuccess(response);
- try {
- ActionBean bean = JsonUtil.getObject(response.body(), ActionBean.class);
- if(bean.code == 1){
- showSuccessToast("上传成功");
- }else{
- showErrorToast("上传失败");
- }
- } catch (Exception e) {
- e.printStackTrace();
- XLog.e("香港图片结果返回错误",e.getMessage());
- }
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- //XLog.e("event:"+event.getKeyCode());
- if ((event.getKeyCode()==KeyEvent.KEYCODE_DPAD_CENTER || event.getKeyCode()==KeyEvent.KEYCODE_ENTER ) && event.getAction() == KeyEvent.ACTION_DOWN){
- //按确定键
- }
- 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());
- }
- }
- private void initEdit() {
- //
- etOrderNo.setOnEditorActionListener(new TextView.OnEditorActionListener() {
- @Override
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- if (actionId == EditorInfo.IME_ACTION_DONE) {
- String orderNo = etOrderNo.getText().toString().trim();
- if (StringUtils.isEmpty(orderNo)) {
- setEditTextFocused(v,true);
- showWarningToast(v.getHint().toString());
- return false;
- }
- inboundPutin();
- return false;
- }
- return false;
- }
- });
- etOrderNo.addTextChangedListener(new TextWatcher() {
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- if (s.length() > 0 ) {
- if (etOrderNo.isEnabled()){
- ibOrderNoClear.setVisibility(View.VISIBLE);
- }
- setEditTextNormal(etOrderNo,true);
- } else {
- ibOrderNoClear.setVisibility(View.INVISIBLE);
- setEditTextFocused(etOrderNo,true);
- }
- }
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
- public void afterTextChanged(Editable s) {
- }
- });
- ibOrderNoClear.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- etOrderNo.requestFocus();
- etOrderNo.getText().clear();
- }
- });
- }
- 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);
- switch (view.getId()) {
- case R.id.et_order_no:
- inboundPutin();
- break;
- default:
- }
- }
- }
- public String strByCutRule(String str,List<CutRuleRealm> cutRuleRealmList){
- str = str.replaceAll("\u001D", "");
- str = str.trim();
- if (cutRuleRealmList.size()==0){
- return str;
- }
- int len = str.length();
- for (int i=0;i<cutRuleRealmList.size();i++){
- CutRuleRealm cutRuleRealm = cutRuleRealmList.get(i);
- if (len!=cutRuleRealm.getNumberLength()){
- continue;
- }
- String number_start = cutRuleRealm.getNumberStart();
- int cut_type = cutRuleRealm.getCutType();
- int number_length = cutRuleRealm.getNumberLength();
- int start_index = cutRuleRealm.getStartIndex()-1;
- int cut_length = cutRuleRealm.getCutLength();
- if (len!=number_length){
- continue;
- }
- if (!number_start.equals("%") && !str.startsWith(number_start)){
- continue;
- }
- if (cut_type==1){
- str = str.substring(start_index,cut_length+start_index);
- }
- //从后往前截取待完善
- }
- return str;
- }
- /**
- * 查询订单
- * @param trackingNumber
- * @return
- */
- private HkTransDetailRealm getDetailRealm(String trackingNumber){
- HkTransDetailRealm detailRealm = mRealm.where(HkTransDetailRealm.class)
- .equalTo("tracking_number",trackingNumber)
- .equalTo("batch_number",batchNumber)
- .findFirst();
- if (detailRealm==null){
- trackingNumber = strByCutRule(trackingNumber,cutRuleRealmList);
- detailRealm = mRealm.where(HkTransDetailRealm.class)
- .equalTo("tracking_number",trackingNumber)
- .equalTo("batch_number",batchNumber)
- .findFirst();
- }
- return detailRealm;
- }
- private void inboundPutin(){
- if (!validate()){
- return;
- }
- String trackingNumber = etOrderNo.getText().toString().trim();
- HkTransDetailRealm detailRealm = getDetailRealm(trackingNumber);
- if (detailRealm==null){
- authCamera();
- mtOrderCode.setText("");
- tvSort.setText("");
- etOrderNo.setText("");
- return;
- }
- showSuccessToast("Success","hk"+detailRealm.getSort());
- mtOrderCode.setText(detailRealm.getTrackingNumber());
- tvSort.setText(detailRealm.getSort());
- etOrderNo.setText("");
- try {
- JSONObject postParam = new JSONObject();
- postParam.put("transport_order_number",batchNumber);
- postParam.put("tracking_number",detailRealm.getTrackingNumber());
- postParam.put("realm_id",detailRealm.getId());
- OkGo.<String>post(Urls.getServiceAddress(this) + Urls.FXY_GK_INBOUND_PUTIN).upJson(postParam)
- .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){
- JSONObject data = new JSONObject(bean.data);
- if (data.has("realm_id")){
- setIsFinish(data.getString("realm_id"),1);
- }
- }else{
- // showWarningToast(bean.msg);
- }
- } catch (Exception e) {
- e.printStackTrace();
- XLog.e("添加理货数据结果返回错误",e.getMessage());
- }
- }
- });
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- private void setIsFinish(String realmId,int isFinish){
- //更新值
- mRealm.beginTransaction();
- HkTransDetailRealm myObject = mRealm.where(HkTransDetailRealm.class).equalTo("id",realmId).findFirst();
- myObject.setPushStatus(isFinish);
- mRealm.commitTransaction();
- }
- /*
- * 校验必录
- */
- private boolean validate(){
- if (batchNumber.isEmpty()){
- showErrorToast(batchListSpinner.getHint().toString());
- setEditTextFocused(batchListSpinner,true);
- return false;
- }
- setEditTextNormal(batchListSpinner,true);
- //数据检查不通过
- String orderNo = etOrderNo.getText().toString().trim();
- if (orderNo.isEmpty()){
- showWarningToast(etOrderNo.getHint().toString());
- return false;
- }
- return true;
- }
- private void authCamera(){
- //拍照
- com.luck.picture.lib.PictureSelector.create(this)
- .openCamera(PictureMimeType.ofImage())
- //只需要拍照
- //.selectionMode(PictureConfig.SINGLE)
- // .isCamera(true)
- //.compressMaxKB()//压缩最大值kb compressGrade()为Luban.CUSTOM_GEAR有效
- .compress(true) // 压缩
- .cropCompressQuality(100)// 裁剪压缩质量 默认100
- .minimumCompressSize(100) //最新压缩图片 默认100
- .forResult(PictureConfig.CHOOSE_REQUEST);
- }
- //
- @OnClick({R.id.btn_photos})
- public void onViewClicked(View view) {
- Bundle bundle = new Bundle();
- switch (view.getId()) {
- case R.id.btn_photos:
- authCamera();
- 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());
- }
- }
- }
|