From 8162819d9edf58300bf5cce18ab5352849526bf4 Mon Sep 17 00:00:00 2001 From: fyf Date: Sat, 4 Nov 2023 17:33:32 +0800 Subject: [PATCH] 44 --- .../business/ExecuteTheRecipe.java | 16 +- .../bnframework/common/constant/DataBus.java | 4 +- .../bonait/bnframework/common/db/QueryDB.java | 13 + .../bnframework/common/db/mode/BPA_SILOS.java | 4 +- .../bnframework/common/db/res/lcMode.java | 3 +- .../home/fragment/MakeGoodFragment.java | 10 +- .../mode/Silos_item_jiaoyan_fragment.java | 617 ++++++++++++++ .../home/fragment/mode/silos_jiaoyan.java | 4 +- app/src/main/res/drawable/jishiqibj.xml | 14 + app/src/main/res/layout/activity_dzcjy.xml | 11 +- .../layout/fragment_silos_item_jiaoyan.xml | 785 ++++++++++++++++++ .../layout/item/layout/silos_jiaoyan_item.xml | 1 + 12 files changed, 1462 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/com/bonait/bnframework/modules/home/fragment/mode/Silos_item_jiaoyan_fragment.java create mode 100644 app/src/main/res/drawable/jishiqibj.xml create mode 100644 app/src/main/res/layout/item/layout/fragment_silos_item_jiaoyan.xml diff --git a/app/src/main/java/com/bonait/bnframework/business/ExecuteTheRecipe.java b/app/src/main/java/com/bonait/bnframework/business/ExecuteTheRecipe.java index 5e09c169..1a026e96 100644 --- a/app/src/main/java/com/bonait/bnframework/business/ExecuteTheRecipe.java +++ b/app/src/main/java/com/bonait/bnframework/business/ExecuteTheRecipe.java @@ -140,6 +140,15 @@ public class ExecuteTheRecipe { * 果糖右温度 */ public static int SugarTempRight=0; + + /** + * 果糖左温度 + */ + public static int SugarTempLeft_SZ=0; + /** + * 果糖右温度 + */ + public static int SugarTempRight_SZ=0; /** * 重量刷新提示 */ @@ -262,12 +271,17 @@ public class ExecuteTheRecipe { Object obj1= ExecuteTheRecipe.ReadPLC("水池温度"); WaterTemp=obj1==null?0:(int)obj1; - if (!ConfigName.getInstance().versionSelectionEnum.equals("配料吧台")) + if (ConfigName.getInstance().versionSelectionEnum.equals("奶茶机")) { Object obj2= ExecuteTheRecipe.ReadPLC("果糖左温度"); Object obj3= ExecuteTheRecipe.ReadPLC("果糖右温度"); SugarTempLeft=obj2==null?0:(int)obj2; SugarTempRight=obj3==null?0:(int)obj3; + + Object obj21= ExecuteTheRecipe.ReadPLC("果糖左温度设置"); + Object obj31= ExecuteTheRecipe.ReadPLC("果糖右温度设置"); + SugarTempLeft_SZ=obj21==null?0:(int)obj21; + SugarTempRight_SZ=obj31==null?0:(int)obj31; } if (WeighComplete!=null) diff --git a/app/src/main/java/com/bonait/bnframework/common/constant/DataBus.java b/app/src/main/java/com/bonait/bnframework/common/constant/DataBus.java index c19be75a..522a9e27 100644 --- a/app/src/main/java/com/bonait/bnframework/common/constant/DataBus.java +++ b/app/src/main/java/com/bonait/bnframework/common/constant/DataBus.java @@ -79,9 +79,9 @@ public class DataBus { for (BPA_SILOS silo : bpa_silos) { List m = QueryDB.GetMaterialBySilosID(silo.id); if (m.size() > 0) { - lc.add(new lcMode(silo.id, silo.num, m.get(0).name, silo.silosmargin, silo.siloszl, m.get(0).id,m.get(0).type, silo.warningValue, silo.thrsoleValue,silo.name.isEmpty()?"":silo.name,silo.status)); + lc.add(new lcMode(silo.id, silo.num, m.get(0).name, silo.silosmargin, silo.siloszl, m.get(0).id,m.get(0).type, silo.warningValue, silo.thrsoleValue,silo.name.isEmpty()?"":silo.name,silo.status,silo.bValue)); } else { - lc.add(new lcMode(silo.id, silo.num, "未设置", silo.silosmargin, silo.siloszl, "",0, silo.warningValue, silo.thrsoleValue,silo.name.isEmpty()?"":silo.name,silo.status)); + lc.add(new lcMode(silo.id, silo.num, "未设置", silo.silosmargin, silo.siloszl, "",0, silo.warningValue, silo.thrsoleValue,silo.name.isEmpty()?"":silo.name,silo.status,silo.bValue)); } } } diff --git a/app/src/main/java/com/bonait/bnframework/common/db/QueryDB.java b/app/src/main/java/com/bonait/bnframework/common/db/QueryDB.java index 9e1f0e03..8b525a33 100644 --- a/app/src/main/java/com/bonait/bnframework/common/db/QueryDB.java +++ b/app/src/main/java/com/bonait/bnframework/common/db/QueryDB.java @@ -487,6 +487,19 @@ public class QueryDB { Update(BPA_SILOS.class, silos); } } + + /** + * 料仓校准时间 + * @param id + * @param data + */ + public static void UpdateSilosJZTime(String id, String data) { + BPA_SILOS silos = GetSilosID(id); + if (silos != null) { + silos.plcValue = data; + Update(BPA_SILOS.class, silos); + } + } //endregion //region BPA_SILOSANDMATERIAL 料仓物料关联表 diff --git a/app/src/main/java/com/bonait/bnframework/common/db/mode/BPA_SILOS.java b/app/src/main/java/com/bonait/bnframework/common/db/mode/BPA_SILOS.java index 4f35fa46..9f6d007e 100644 --- a/app/src/main/java/com/bonait/bnframework/common/db/mode/BPA_SILOS.java +++ b/app/src/main/java/com/bonait/bnframework/common/db/mode/BPA_SILOS.java @@ -14,11 +14,11 @@ public class BPA_SILOS extends ModeBase { //下线阈值:20g public int thrsoleValue; //PLC控制信号量 - public String plcValue;// 100g + public String plcValue;// 20s //标准值 标准 1s出多少g(出场标准) 更改为 满管 需要时间 public int bValue; //校准值 实际校准1s出多少g - public int jValue; //time 2 s + public int jValue; //100 g //状态 状态:0 启用 1 禁用 public int status; //优先级 优先出料顺序 diff --git a/app/src/main/java/com/bonait/bnframework/common/db/res/lcMode.java b/app/src/main/java/com/bonait/bnframework/common/db/res/lcMode.java index 417e6573..35c7e654 100644 --- a/app/src/main/java/com/bonait/bnframework/common/db/res/lcMode.java +++ b/app/src/main/java/com/bonait/bnframework/common/db/res/lcMode.java @@ -10,7 +10,7 @@ public class lcMode extends BPA_SILOS { public String materialId; //物料类型 public int materiallx; - public lcMode(String id, int num,String materialName, int silosmargin,int siloszl,String materialId,int materiallx,int warningValue,int thrsoleValue,String _name,int _sta) { + public lcMode(String id, int num,String materialName, int silosmargin,int siloszl,String materialId,int materiallx,int warningValue,int thrsoleValue,String _name,int _sta,int _bvalue) { this.materialName = materialName; this.silosmargin = silosmargin; this.num = num; @@ -22,5 +22,6 @@ public class lcMode extends BPA_SILOS { this.siloszl=siloszl; this.name=_name; this.status=_sta; + this.bValue=_bvalue; } } diff --git a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/MakeGoodFragment.java b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/MakeGoodFragment.java index 93a9694e..c0fed398 100644 --- a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/MakeGoodFragment.java +++ b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/MakeGoodFragment.java @@ -287,10 +287,7 @@ public class MakeGoodFragment extends BaseFragment { { if(makegood.Gt1) { - Object sx=ExecuteTheRecipe.ReadPLC("果糖左温度设置"); - int wdsz=sx==null?0:(int)sx; - - if(ExecuteTheRecipe.SugarTempLeft 20 * 1000) { + mHandler.sendEmptyMessage(1); + } + } + }); + } + + /** + * 初始化数据 + */ + public void InitData() { + exit_mgjz.setText(lcMode.bValue + ""); + } + + /** + * 设置名称 + * + * @param type + */ + public void SetData(lcMode mode, String type) { + TypeName = type; + lcMode = mode; + } + //endregion + + //region 外部消息通知 + + /** + * 通知事件 + */ + public void Run() { + //重量通知 + ExecuteTheRecipe.WeighComplete = new IRun() { + @Override + public void Run() { + mHandler.sendEmptyMessage(0); + if (ExecuteTheRecipe.OutletWeigh >= (zl[0] + 2))//当前重量大于2g + { + mHandler.sendEmptyMessage(1); + } + } + }; + //通道校准完成 + ExecuteTheRecipe.OnChargeMixtureComNotPar = new IRun() { + @Override + public void Run() { + final int kkk = lcMode.num; + try { + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + try { + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + ToastUtils.warning("通道校准完成!"); + // 在2秒后执行按钮操作 + int zhongliangxianshi = ExecuteTheRecipe.OutletWeigh; + ExecuteTheRecipe.WritePLC("校准值" + kkk, (short) zhongliangxianshi, null); + String s = String.valueOf(zhongliangxianshi); + String zll=String.format("%.1f", (Double.parseDouble(s) / 10)); + edit_wljz3.setText(zll+""); + lcMode.jValue=zhongliangxianshi; + QueryDB.UpdateJYZ(lcMode.id,zhongliangxianshi); + } + }, 2000); + } catch (Exception e) { + ToastUtils.error("重量解析显示异常!" + e.getMessage()); + } + } + }); + } catch (Exception ex) { + Log.d("dsds", "Run: " + ex.getMessage()); + } + } + }; + + new Thread(new Runnable() { + @Override + public void run() { + try { + //底部按钮信息 + Object obj = ExecuteTheRecipe.ReadPLC("基准时间"); + Object jzz = ExecuteTheRecipe.ReadPLC("校准值" + lcMode.num); + String time = obj == null ? "0" : obj.toString(); + short val = jzz == null ? 0 : (short) jzz; + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + //校准时间 + edit_wljz1.setText(String.format("%.1f", (Double.parseDouble(time) / 10))); + edit_wljz3.setText(String.format("%.1f", (Double.parseDouble(String.valueOf(val)) / 10))); + if (!ConfigName.getInstance().versionSelectionEnum.equals("奶茶机")) { + Object obj1 = ExecuteTheRecipe.ReadPLC("反转时间"); + String fztime = obj1 == null ? "0" : obj1.toString(); + edit_wljz2.setText(String.format("%.1f", (Double.parseDouble(fztime) / 10))); + } else { + edit_wljz2.setVisibility(View.GONE); + text_wljz2.setVisibility(View.GONE); + } + } + }); + ExecuteTheRecipe.WritePLC("通道" + lcMode.num + "校准开关", true, null); + } catch (Exception e) { + } + } + }).start(); + } + //endregion + + //region 刷新界面 + /** + * 界面刷新 + */ + private Handler mHandler = new Handler() { + public void handleMessage(Message msg) { + switch (msg.what) { + case 0: + dianzicheng1.setText(String.valueOf((int) ExecuteTheRecipe.OutletWeigh / 10.0) + " g"); + dianzicheng2.setText(String.valueOf((int) ExecuteTheRecipe.OutletWeigh / 10.0) + " g"); + dianzicheng3.setText(String.valueOf((int) ExecuteTheRecipe.OutletWeigh / 10.0) + " g"); + break; + case 1: + time[0] = StopTime(); + lcMode.bValue = time[0]; + exit_mgjz.setText(time[0] + ""); + QueryDB.UpdateMGTime(lcMode.id, time[0]); + break; + case 2: + + break; + } + } + }; + //endregion + + //region 点击事件 + @OnClick({ + R.id.qingling1, R.id.qingling2, R.id.qingling3, + R.id.chuliao1, R.id.chuliao2, R.id.chuliao3, + R.id.click_mgjz, R.id.click_mgjz_save, + R.id.click_wljz, R.id.click_wljz_save + }) + public void onViewClicked(View view) { + switch (view.getId()) { + case R.id.qingling1: + case R.id.qingling2: + case R.id.qingling3: + dzcql(); + break; + case R.id.chuliao1: + case R.id.chuliao2: + case R.id.chuliao3: + mncl(); + break; + case R.id.click_mgjz://满管校准 + zl[0] = ExecuteTheRecipe.OutletWeigh; + StartTime(); + break; + case R.id.click_mgjz_save://满管校准 保存参数 + String value1 = exit_mgjz.getText().toString(); + int val1 = 0; + try { + val1 = (value1 == null || value1.isEmpty()) ? 0 : Integer.parseInt(value1); + lcMode.bValue = val1; + QueryDB.UpdateMGTime(lcMode.id, val1); + ToastUtils.info("校准时间保存成功!"); + } catch (Exception e) { + + } + break; + case R.id.click_wljz://物料校准 + WLJZ(); + break; + case R.id.click_wljz_save://物料校准 保存参数 + SaveWLJZ(); + break; + } + } + //endregion + + //region 电子秤清零 + + /** + * 电子秤清零 + */ + public void dzcql() { + ExecuteTheRecipe.WritePLC("重量清零", true, new IWriteCallBack() { + @Override + public void onSuccess() { + ToastUtils.info("清零成功!"); + } + + @Override + public void onFailure(String ErrorMsg) { + ToastUtils.error("清零失败!"); + } + }); + } + //endregion + + //region 模拟出料 + + /** + * 模拟出料 + */ + public void mncl() { + String zltext = chuliaokeshu1.getText().toString(); + if (TypeName.equals("物料校准")) { + zltext = chuliaokeshu1.getText().toString(); + } else if (TypeName.equals("酱料校准")) { + zltext = chuliaokeshu2.getText().toString(); + } else if (TypeName.equals("补偿校准")) { + zltext = chuliaokeshu3.getText().toString(); + } + + if (zltext.equals("")) { + ToastUtils.warning("出料重量不能为空!"); + return; + } + double zl = 0; + try { + zl = Double.parseDouble(zltext); + } catch (Exception e) { + ToastUtils.warning("出料重量获取异常!" + e.getMessage()); + return; + } + if (zl <= 0) { + ToastUtils.warning("出料重量至少大于0g!"); + return; + } + + if (!ExecuteTheRecipe.IsCup) { + ToastUtils.warning("出料口没有检测到器皿!"); + return; + } + + short kkk = (short) ((int) (zl * 10)); + new Thread(new Runnable() { + @Override + public void run() { + try { + ExecuteTheRecipe.WritePLC("配料完成", false, null); + ExecuteTheRecipe.WritePLC("手自切换", true, null); + ExecuteTheRecipe.WritePLC("需求值" + lcMode.num, kkk, new IWriteCallBack() { + @Override + public void onSuccess() { + ExecuteTheRecipe.WritePLC("配料启动", true, null); + } + + @Override + public void onFailure(String ErrorMsg) { + } + }); + } catch (Exception e) { + } + } + }).start(); + ToastUtils.info("需求值下发成功!开始配料......"); + } + //endregion + + //region 保存物料校准参数 + public void SaveWLJZ() { + String stime = edit_wljz1.getText().toString(); + String ftime = edit_wljz2.getText().toString(); + if (stime.equals("")) { + ToastUtils.info("校准基准时间不能为空!"); + return; + } + + int stime_1 = 0; + int ftime_1 = 0; + try { + stime_1 = (int) Math.round((Double.parseDouble(stime) * 10)); + } catch (Exception e) { + ToastUtils.error("时间异常!" + e.getMessage()); + return; + } + + if (!ConfigName.getInstance().versionSelectionEnum.equals("奶茶机")) { + if (ftime.equals("")) { + ToastUtils.info("反转基准时间不能为空!"); + return; + } + try { + ftime_1 = (int) Math.round((Double.parseDouble(ftime) * 10)); + } catch (Exception e) { + ToastUtils.error("时间异常!" + e.getMessage()); + return; + } + ExecuteTheRecipe.WritePLC("反转时间", (short) ftime_1, new IWriteCallBack() { + @Override + public void onSuccess() { + ToastUtils.info("反转时间保存成功!"); + } + + @Override + public void onFailure(String ErrorMsg) { + ToastUtils.error("反转时间保存失败!"); + } + }); + } + QueryDB.UpdateSilosJZTime(lcMode.id,ftime); + ExecuteTheRecipe.WritePLC("基准时间", (short) stime_1, new IWriteCallBack() { + @Override + public void onSuccess() { + ToastUtils.info("校准基准时间保存成功!"); + } + + @Override + public void onFailure(String ErrorMsg) { + ToastUtils.error("校准基准时间保存失败!"); + } + }); + } + //endregion + + //region 物料校准 + public void WLJZ() { + //判断是否为果糖->判断温度 + if (ConfigName.getInstance().versionSelectionEnum.equals("奶茶机")) { + if (lcMode.num == 11) { + if (ExecuteTheRecipe.SugarTempLeft < ExecuteTheRecipe.SugarTempLeft_SZ) { + ToastUtils.warning("果糖左仓温度未达到设置值,不允许校准..."); + return; + } + } else if (lcMode.num == 12) { + if (ExecuteTheRecipe.SugarTempRight < ExecuteTheRecipe.SugarTempRight_SZ) { + ToastUtils.warning("果糖右仓温度未达到设置值,不允许校准..."); + return; + } + } + } + + new Thread(new Runnable() { + @Override + public void run() { + try { + ExecuteTheRecipe.WritePLC("校准完成", false, null); + ExecuteTheRecipe.WritePLC("手自切换", false, null); + ExecuteTheRecipe.WritePLC("通道校准", true, new IWriteCallBack() { + @Override + public void onSuccess() { + ToastUtils.info("启动通道校准成功!"); + } + + @Override + public void onFailure(String ErrorMsg) { + ToastUtils.error("启动通道校准失败!"); + } + }); + } catch (Exception e) { + + } + } + }).start(); + } + //endregion + + //region 保存校准时间 + public void SaveTime1() { + + } + //endregion + + + //region 定时器 + + /** + * 启动定时器 + */ + public void StartTime() { + runtime.setBase(SystemClock.elapsedRealtime()); + runtime.start(); + new Thread(new Runnable() { + @Override + public void run() { + try { + //自动模式 + ExecuteTheRecipe.WritePLC("手自切换", false, null); + //开启 + ExecuteTheRecipe.WritePLC("手动控制" + lcMode.num, true, null); + } catch (Exception e) { + + } + } + }).start(); + } + + /** + * 停止定时器 + */ + public int StopTime() { + + long elapsedMillis = SystemClock.elapsedRealtime() - runtime.getBase(); + runtime.stop(); + + int time = (int) (elapsedMillis / 1000); + exit_mgjz.setText(time + ""); + new Thread(new Runnable() { + @Override + public void run() { + try { + ExecuteTheRecipe.WritePLC("手动控制" + lcMode.num, false, null); + } catch (Exception e) { + + } + } + }).start(); + return time;//当前点击多少秒 + } + //endregion + + //region 关闭窗体事件 + @Override + public void onDestroy() { + super.onDestroy(); + Logger.d("我的fragment销毁"); + + new Thread(new Runnable() { + @Override + public void run() { + try { + ExecuteTheRecipe.WritePLC("通道" + lcMode.num + "校准开关", false, null); + ExecuteTheRecipe.WritePLC("手自切换", true, null); + } catch (Exception e) { + + } + } + }).start(); + } + + /** + * 当在activity设置viewPager + BottomNavigation + fragment时, + * 为防止viewPager左滑动切换界面,与fragment左滑返回上一界面冲突引起闪退问题, + * 必须加上此方法,禁止fragment左滑返回上一界面。 + *

+ * 切记!切记!切记!否则会闪退! + *

+ * 当在fragment设置viewPager + BottomNavigation + fragment时,则不会出现这个问题。 + */ + @Override + protected boolean canDragBack() { + return false; + } + //endregion +} diff --git a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/mode/silos_jiaoyan.java b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/mode/silos_jiaoyan.java index 01790d85..ae90aa3d 100644 --- a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/mode/silos_jiaoyan.java +++ b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/mode/silos_jiaoyan.java @@ -116,7 +116,9 @@ public class silos_jiaoyan extends LinearLayout { @Override public QMUIFragment createFragment(int position) { //显示数元 - return (QMUIFragment) froms.get(position).fragment; + Silos_item_jiaoyan_fragment jiaoyan_fragment=new Silos_item_jiaoyan_fragment(); + jiaoyan_fragment.SetData(lcMode, froms.get(position).name); + return jiaoyan_fragment; } @Override diff --git a/app/src/main/res/drawable/jishiqibj.xml b/app/src/main/res/drawable/jishiqibj.xml new file mode 100644 index 00000000..91b0935e --- /dev/null +++ b/app/src/main/res/drawable/jishiqibj.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_dzcjy.xml b/app/src/main/res/layout/activity_dzcjy.xml index 0ecd3de7..bc48a01d 100644 --- a/app/src/main/res/layout/activity_dzcjy.xml +++ b/app/src/main/res/layout/activity_dzcjy.xml @@ -71,20 +71,21 @@ + + android:text="0" + android:textSize="12dp" /> + + + + + + + + + + + + + + + + +