美文网首页
数据处理

数据处理

作者: 我叫杨毅 | 来源:发表于2023-02-22 20:12 被阅读0次
    private static final String TAG = "DisCodeFragment";
    private EditText etCode;
    private RecyclerView rv;
    private ViewSwitcher vs;
    private DisScanCodeExAdapter adapter;

    private DisDetailContract.Presenter mPresenter;


    private HashSet powerC;
    /**
     * 工装码数据
     */
    private SparseArray<List<ProductStockEntity>> toolingList;

    /**
     * 有工装码,未备料的数据
     */
    private List<ToolingCodeEntity.DataListBean> 工装码不为空的出新接口的数据 = new ArrayList<ToolingCodeEntity.DataListBean>();
    DispatchDetailEntity havecSemiList = new DispatchDetailEntity();
    DispatchDetailEntity havecSemiList2 = new DispatchDetailEntity();
    List<ImDisDisEntity> 保存的原数据 = new ArrayList<>();
    boolean 扫描的工装码和新接口的工装码匹配=false;
    boolean haveC物料编码和新接口的物料编码匹配=false;
    boolean havec_state等于0清单未备料=false;
    boolean haveC_SemiList中的State状态码为0和3=false;

    public DisCodeFragment() {
        toolingList = new SparseArray<>();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
        }
        powerC = PowerUtil.getPowerC();
    }

    public static DisCodeFragment newInstance(Bundle args) {
        DisCodeFragment fragment = new DisCodeFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public int bindLayout() {
        return R.layout.fragment_dis_code;
    }

    @Override
    public void initView() {
        //扫码权限
        TextView tvScan = contentView.findViewById(R.id.tv_scan_code);
        if (powerC.contains(PMaterialManagement.Dispatch.C_SCAN)) {
        } else {
            tvScan.setVisibility(View.GONE);
        }
        tvScan.setVisibility(View.VISIBLE);
        tvScan.setOnClickListener(this);

        //备料权限
        TextView tvPrepare = contentView.findViewById(R.id.tv_prepare_code);
        if (powerC.contains(PMaterialManagement.Dispatch.C_PREPARE)) {
            tvPrepare.setVisibility(View.VISIBLE);
            tvPrepare.setOnClickListener(this);
        } else {
            tvPrepare.setVisibility(View.GONE);
        }
        etCode = contentView.findViewById(R.id.et_tooling_code);
        rv = contentView.findViewById(R.id.rv_dis_code);
        vs = contentView.findViewById(R.id.vs_dis_code);

        rv.addItemDecoration(new DividerDecoration(DensityUtil.dp2px(8)));

        adapter = new DisScanCodeExAdapter(context);
        rv.setAdapter(adapter);
        adapter.setRv(rv);

    }

    @Override
    public void doBusiness() {

    }

    @Override
    public void onWidgetClick(View v) {
        if (getActivity() != null) {
            KeyboardUtil.hideKeyboard(getActivity());
        }
        switch (v.getId()) {
            case R.id.tv_prepare_code:
                if (ListUtil.isEmptyList(adapter.getRequestList())) {
                    toast(ErrorConstant.ERROR_SELECT);
                    return;
                }
                DispatchDetailEntity entity = new DispatchDetailEntity();
                entity.setHavec(adapter.getRequestList());
                Log.e(TAG, "onWidgetClick: "+entity );

//                havec物料编码和新接口的物料编码做比对,
//                获取到扫描工装码的数据后,用这条(Havec的)数据的物料编码作为条件,
//                再加上工装码不为空过滤出新接口的数据,并按照操作时间正序排序, toolingCodeDataList2
//                取出第一条数据与扫的工装码比对,不一致的话就弹窗提示,点击确定的话,要求输入备注信息。
//                点击取消的话,重新初始化加载扫码列表。
//                一致的话就直接备料保存,不弹窗。
                if (entity.getHavec().get(0).getMatId().equals(工装码不为空的出新接口的数据.get(0).getMaterialCode())){////getMaterialCode
                     mPresenter.prepare(entity);//备料
                }else {
                    initDialog(entity, entity.getHavec().get(0).getMatName()+"["+entity.getHavec().get(0).getMatId()+"]"+"\n"+"不符合先入先出规则,确认是否继续");
                }

                break;

            case R.id.tv_scan_code://点击查询
                //haveC.semiList中的State状态码为0和3
                for (int i = 0; i < havecSemiList.getHavec().size(); i++) {
                    String temp = "0";
                    if (!ListUtil.isEmptyList(havecSemiList.getHavec().get(i).getSeimList())) {
                        for (int j = 0; j < havecSemiList.getHavec().get(i).getSeimList().size(); j++) {
                            if (havecSemiList.getHavec().get(i).getSeimList().get(j).getState() != 0 && havecSemiList.getHavec().get(i).getSeimList().get(j).getState() != 3) {//测试完毕把2改成3
                                havecSemiList.getHavec().get(i).getSeimList().remove(j);
                                j--;
                            }else {
                                temp = "1";
                            }

                        }
                    }else {
                        havecSemiList.getHavec().remove(i);
                    }

                    if (temp=="0"){
                        havecSemiList.getHavec().remove(i);
                    }
                }

                Log.e(TAG, "initFragmentData: " + havecSemiList);
                if (StringUtil.isEmpty(etCode.getText())) {
                    QRCodeUtil.startScanQRCode(getActivity());
                } else {
                    //haveC.semiList中的State状态码为0和3
                    //haveC物料编码和新接口的物料编码getMaterialCode
                    //扫描的工装码和新接口的工装码匹配 containerCode
                    //追加条件havec.state=0//清单未备料

                    //扫描的工装码和新接口的工装码匹配 containerCode
                    for (ToolingCodeEntity.DataListBean tooling : toolingCodeDataList.getDataList()) {
                        if (tooling.getContainerCode() != null && tooling.getContainerCode() != "") {
                            if (tooling.getContainerCode().equals(etCode.getText().toString())) {
                                扫描的工装码和新接口的工装码匹配 = true;
                                break;
                            } else {
                                扫描的工装码和新接口的工装码匹配 = false;
                            }
                        }
                    }



                    for (int i = 0; i < havecSemiList.getHavec().size(); i++) {
                        if (havecSemiList.getHavec().get(i).getState()==0) {
                            havec_state等于0清单未备料 = true;
                            for (int j = 0; j < toolingCodeDataList.getDataList().size(); j++) {
                                if (!ListUtil.isEmptyList(havecSemiList.getHavec().get(i).getSeimList())) {
                                    haveC_SemiList中的State状态码为0和3 = true;
                                    if (havecSemiList.getHavec().get(i).getMatId().equals(toolingCodeDataList.getDataList().get(j).getMaterialCode())) {
                                        haveC物料编码和新接口的物料编码匹配 = true;
                                        break;
                                    }
                                }
                            }
                        }
                    }



                    Log.e(TAG, "扫描的工装码和新接口的工装码匹配: "+扫描的工装码和新接口的工装码匹配 );
                    Log.e(TAG, "haveC物料编码和新接口的物料编码匹配: "+ haveC物料编码和新接口的物料编码匹配);
                    Log.e(TAG, "havec_state等于0清单未备料: "+ havec_state等于0清单未备料);
                    Log.e(TAG, "haveC_SemiList中的State状态码为0和3: "+ haveC_SemiList中的State状态码为0和3);

                    if (!扫描的工装码和新接口的工装码匹配){
                        toast(ErrorConstant.ERROR_NO_QUERY_DATA);
                    }else if (!haveC物料编码和新接口的物料编码匹配){
                        toast(ErrorConstant.ERROR_NO_QUERY_DATA);
                    }else if(!havec_state等于0清单未备料){
                        toast(ErrorConstant.ERROR_NO_QUERY_DATA);
                    }else if(!haveC_SemiList中的State状态码为0和3){
                        toast(ErrorConstant.ERROR_NO_QUERY_DATA);
                    }else {
                        queryCode(etCode.getText().toString());
                    }

                }



                break;
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && data != null) {
            if (requestCode == QRCodeUtil.REQUEST_CODE) {
                String code = data.getStringExtra(QRCodeUtil.SCAN_RESULT);
                etCode.setText(code);
                queryCode(code);
            }
        }
    }

    public void setData(List<ImDisDisEntity> data) {
        if (ListUtil.isEmptyList(data)) {
            vs.setDisplayedChild(0);
        } else {
            vs.setDisplayedChild(1);
        }
        保存的原数据 = data;
        adapter.setData(data);
    }



    ToolingCodeEntity toolingCodeDataList = new ToolingCodeEntity();
    public void setToolingCodeData(ToolingCodeEntity toolingCodeData, long id) {

        EasyHttp.get(NetUrl.TestUrl.GET_DISPATCH_DETAIL_LIST + id)
                .execute(new ProgressDialogCallBack<String>(new MyProgressDialog(context), true, true) {
                    @Override
                    public void onSuccess(String s) {
                        if (!StringUtil.isEmpty(s)) {
                            DispatchDetailEntity entity = initEntity(GsonUtil.getObject(s, DispatchDetailEntity.class));
                            if (entity != null) {
                               havecSemiList=entity;
                               havecSemiList2=entity;
                                return;
                            }
                        }
                    }

                    @Override
                    public void onError(ApiException e) {
                        super.onError(e);
                        operationError(ErrorConstant.ERROR_NET);
                    }
                });


        toolingCodeDataList = invertOrderList(toolingCodeData);
        for (int i = 0; i < toolingCodeDataList.getDataList().size(); i++) {
            if (toolingCodeDataList.getDataList().get(i).getContainerCode()!=null&&
                    toolingCodeDataList.getDataList().get(i).getContainerCode()!=""){
                工装码不为空的出新接口的数据.add(toolingCodeDataList.getDataList().get(i));
            }
        }

//        if (toolingCodeDataList.getDataList().size() > 0 && toolingCodeDataList.getDataList() != null) {
           // etCode.setText("2904111XKZ16A-Y003");
//        }
        Log.e(TAG, "setToolingCodeData: "+工装码不为空的出新接口的数据 );

    }

    //将List按照时间倒序排列
    @SuppressLint("SimpleDateFormat")
    private ToolingCodeEntity invertOrderList(ToolingCodeEntity dataListBeans) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d1;
        Date d2;
        ToolingCodeEntity.DataListBean temp_r = new ToolingCodeEntity.DataListBean();
        //做一个冒泡排序,大的在数组的前列
        for (int i = 0; i < dataListBeans.getDataList().size() - 1; i++) {
            for (int j = i + 1; j < dataListBeans.getDataList().size(); j++) {
                ParsePosition pos1 = new ParsePosition(0);
                ParsePosition pos2 = new ParsePosition(0);
                d1 = sdf.parse(dataListBeans.getDataList().get(i).getOperateTime(), pos1);
                d2 = sdf.parse(dataListBeans.getDataList().get(j).getOperateTime(), pos2);
                if (d1.after(d2)) {//如果队前日期靠前,调换顺序 before
                    // temp_r = dataListBeans.getDataList().get(i);
                    temp_r = dataListBeans.getDataList().get(i);
                    dataListBeans.getDataList().set(i, dataListBeans.getDataList().get(j));
                    dataListBeans.getDataList().set(j, temp_r);
                }
            }
        }
        return dataListBeans;
    }

    /**
     * 查询工装码
     */
    private void queryCode(String toolingCode) {
        adapter.queryCode(context, toolingCode);
    }

    public void setmPresenter(DisDetailContract.Presenter mPresenter) {
        this.mPresenter = mPresenter;
    }

    /**
     * 剔除返回数据中,包含子清单的主清单
     * 同一个物料要不按照物料入,要不按照工装入
     */
    private DispatchDetailEntity initEntity(DispatchDetailEntity entity) {
        if (entity == null) {
            return null;
        }
        sortList(entity.getHavec());
        sortList(entity.getNotHavec());
        sortList(entity.getImList());

        return entity;
    }

    private void sortList(List<ImDisDisEntity> data) {
        if (ListUtil.isEmptyList(data)) {
            return;
        }
        Map<String, ImDisDisEntity> map = new HashMap<>();
        List<ImDisDisEntity> needRemoveIm = new ArrayList<>();

        for (ImDisDisEntity im : data) {
            if (map.get(im.getMatId()) == null) {
                map.put(im.getMatId(), im);
            } else {
                needRemoveIm.add(map.get(im.getMatId()));
            }
        }
        for (ImDisDisEntity im : needRemoveIm) {
            data.remove(im);
        }
    }



    //退出登录取消按钮
    private LinearLayout cancel;
    //退出登录呼叫按钮
    private LinearLayout call;
    //退出登录title
    private TextView titleTV;
    private TextView rightTV;
    private EditText log_out_et;
    private AlertDialog logOutDialog;
    public void initDialog(DispatchDetailEntity entity, String msg) {

        LayoutInflater inflater = LayoutInflater.from(context);
        View view1 = inflater.inflate(R.layout.logout_dialog, null);
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        logOutDialog = builder.create();
        logOutDialog.show();
        logOutDialog.getWindow().setContentView(view1);
        logOutDialog.setCancelable(false);   //设置点击空白区域不消失
        titleTV= (TextView) view1.findViewById(R.id.log_out_content);
        titleTV.setText(msg);
        log_out_et= (EditText) view1.findViewById(R.id.log_out_et);
        cancel = (LinearLayout) view1.findViewById(R.id.log_out_cancel);
        call = (LinearLayout) view1.findViewById(R.id.log_out_call);

        logOutDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

                cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                logOutDialog.cancel();
                adapter.setData(保存的原数据);
            }
        });
        call.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = log_out_et.getText().toString();
                if (str.isEmpty()) {
                    toast("请输入备注!!!");
                } else {
                    entity.getHavec().get(0).setRemark(str);
                    mPresenter.prepare(entity);//备料
                    closeKeyboard();
                    logOutDialog.cancel();
                }

            }
        });
    }

    //如果显示则隐藏,如果隐藏则显示
    private void closeKeyboard() {
        InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        // 得到InputMethodManager的实例
        if (imm.isActive()) {
            // 如果开启
            imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
                    InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }


相关文章

  • js实现数组对象去重并统计重复个数

    数据处理前 数据处理后

  • 大数据学习导图

    数据获取 数据获取与查看 数据处理 数据处理I:缺失值填补 数据处理II:数据转换 数据处理III:无量纲化 特征...

  • 第一章 spark-streaming的概述

    section 1 spark-streaming是什么 //数据处理的方式角度 流式数据处理 批量数据处理 //...

  • 大数据学习路线

    一、大数据处理流程 上图是一个简化的大数据处理流程图,大数据处理的主要流程包括数据收集、数据存储、数据处理、数据应...

  • swift JSON转model 使用Codable

    简单数据处理 定义模型名称 json数据定义 数据解析 复杂数据处理 定义json 定义模型 解析数据处理 列表数...

  • Spark Streaming 1.基本操作

    1. 数据分析分类: 流式数据处理:多条数据缓冲一起处理批量数据处理:一条数据一处理 实时数据处理:数据处理延迟时...

  • Python| Pandas

    01 强大的数据处理能力 Python有强大的数据处理能力。我们都使用过Excel,它的数据处理能力已经非常强大,...

  • 实战篇--有关做大数据项目的开发流程

    前言 有关做大数据项目的开发流程数据处理--->后端调用--->前端展示 一、数据处理 数据处理主要负责:看数据是...

  • 无标题文章

    DataEngine数据处理流程 DataEngine数据处理流程包含如下步骤: changevalidatepu...

  • Kaggle_01_Titanic

    1. 数据处理 简单分为三种:缺失数据处理、新特征生成和数据归一化 1.1 缺失数据处理: (1) 直接丢掉 - ...

网友评论

      本文标题:数据处理

      本文链接:https://www.haomeiwen.com/subject/pwvtvktx.html