setPLCNotify(ControlAdress.当前压力,(s)->{
+ activity.runOnUiThread(()->{tv_pressure.setText("压力:"+ String.format("%.2f",s/10f) +" kpa");});
+ });
+
+ ModbusHelper.get().IsRunning.ChangeNotify=(s)->{
+ activity.runOnUiThread(()->{
+ BtnEnable(!s);
+ });
+ };
+
+ btn_PotLid_Up.setOnTouchListener(touchListener);
+ btn_PotLid_Down.setOnTouchListener(touchListener);
+ btn_PotLid_Open.setOnTouchListener(touchListener);
+ btn_PotLid_Close.setOnTouchListener(touchListener);
+ btn_PotBody_Forward.setOnTouchListener(touchListener);
+ btn_PotBody_Reversal.setOnTouchListener(touchListener);
+ btn_PressureReliefValve.setOnTouchListener(touchListener);
+ }
+
+ private void BtnEnable(boolean value){
+ btn_PotLid_Up.setEnabled(value);
+ btn_PotLid_Down.setEnabled(value);
+ btn_PotLid_Open.setEnabled(value);
+ btn_PotLid_Close.setEnabled(value);
+ btn_PotBody_Forward.setEnabled(value);
+ btn_PotBody_Reversal.setEnabled(value);
+ btn_PressureReliefValve.setEnabled(value);
+ btn_OneKey_Up.setEnabled(value);
+ btn_OneKey_Down.setEnabled(value);
+ btn_OneKey_Home.setEnabled(value);
+
+ btn_PotLid_Up.setTextColor(value?Color.WHITE: Color.GRAY);
+ btn_PotLid_Down.setTextColor(value?Color.WHITE: Color.GRAY);
+ btn_PotLid_Open.setTextColor(value?Color.WHITE: Color.GRAY);
+ btn_PotLid_Close.setTextColor(value?Color.WHITE: Color.GRAY);
+ btn_PotBody_Forward.setTextColor(value?Color.WHITE: Color.GRAY);
+ btn_PotBody_Reversal.setTextColor(value?Color.WHITE: Color.GRAY);
+ btn_PressureReliefValve.setTextColor(value?Color.WHITE: Color.GRAY);
+ btn_OneKey_Up.setTextColor(value?Color.WHITE: Color.GRAY);
+ btn_OneKey_Down.setTextColor(value?Color.WHITE: Color.GRAY);
+ btn_OneKey_Home.setTextColor(value?Color.WHITE: Color.GRAY);
+ }
+
+ @OnClick({R.id.btn_OneKey_Up, R.id.btn_OneKey_Down, R.id.btn_OneKey_Home, R.id.btn_Stop})
+ public void onViewClicked(View view) {
+ if(!ModbusHelper.get().getConnected()){
+ DialogManager.showWarn(activity,"设备未连接,请连接后重试!", AlertDialogButton.OK,null);
+ return ;
+ }
+ switch (view.getId()) {
+ case R.id.btn_OneKey_Up:
+ ModbusHelper.get().PulseSignal(ControlAdress.一键上升);
+ break;
+ case R.id.btn_OneKey_Down:
+ ModbusHelper.get().PulseSignal(ControlAdress.一键下降);
+ break;
+ case R.id.btn_OneKey_Home:
+ ModbusHelper.get().PulseSignal(ControlAdress.一键回位);
+ break;
+ case R.id.btn_Stop:
+ DialogManager.showWarn(activity,"请问是否停止当前正在焖制的任务?",AlertDialogButton.OKCancel,(s)->{
+ if(s){
+ ModbusHelper.get().PulseSignal(ControlAdress.停止);
+ ModbusHelper.get().IsRunning.setValue(false);
+ }
+ });
+ break;
+ }
+ }
+
+ public View.OnTouchListener touchListener = new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View view, MotionEvent motionEvent) {
+
+ if(!ModbusHelper.get().getConnected()){
+ if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){
+ DialogManager.showWarn(activity,"设备未连接,请连接后重试!", AlertDialogButton.OK,null);
+ }
+ return false;
+ }
+
+ if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
+ InchingControl(view,true);//手指按下
+ } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
+ InchingControl(view,false);//手指松开
+ }
+ return false;
+ }
+ };
+
+ public void InchingControl(View view,Boolean IsChick)
+ {
+ switch (view.getId()) {
+ case R.id.btn_PotLid_Up:
+ ModbusHelper.get().WriteBoolSingle(ControlAdress.锅盖上升,IsChick);
+ break;
+ case R.id.btn_PotLid_Down:
+ ModbusHelper.get().WriteBoolSingle(ControlAdress.锅盖下降,IsChick);
+ break;
+ case R.id.btn_PotLid_Open:
+ ModbusHelper.get().WriteBoolSingle(ControlAdress.锅盖开启,IsChick);
+ break;
+ case R.id.btn_PotLid_Close:
+ ModbusHelper.get().WriteBoolSingle(ControlAdress.锅盖关闭,IsChick);
+ break;
+ case R.id.btn_PotBody_Forward:
+ ModbusHelper.get().WriteBoolSingle(ControlAdress.锅体正转,IsChick);
+ break;
+ case R.id.btn_PotBody_Reversal:
+ ModbusHelper.get().WriteBoolSingle(ControlAdress.锅体反转,IsChick);
+ break;
+ case R.id.btn_PressureReliefValve:
+ ModbusHelper.get().WriteBoolSingle(ControlAdress.泄压阀启停,IsChick);
+ break;
+ }
+ }
+
+ /**
+ * 当在activity设置viewPager + BottomNavigation + fragment时,
+ * 为防止viewPager左滑动切换界面,与fragment左滑返回上一界面冲突引起闪退问题,
+ * 必须加上此方法,禁止fragment左滑返回上一界面。
+ *
+ * 切记!切记!切记!否则会闪退!
+ *
+ * 当在fragment设置viewPager + BottomNavigation + fragment时,则不会出现这个问题。
+ */
+ @Override
+ protected boolean canDragBack() {
+ return false;
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/HomeFragmentPR.java b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/HomeFragmentPR.java
index 9bdd5366..b89033fb 100644
--- a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/HomeFragmentPR.java
+++ b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/HomeFragmentPR.java
@@ -23,9 +23,16 @@ import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
+import com.bonait.bnframework.HBL.Dialog.AlertDialogButton;
+import com.bonait.bnframework.HBL.Dialog.DialogManager;
+import com.bonait.bnframework.HBL.Executor;
+import com.bonait.bnframework.HBL.Logs.MessageLog;
+import com.bonait.bnframework.HBL.NotifyEvent;
+import com.bonait.bnframework.MainApplication;
import com.bonait.bnframework.R;
import com.bonait.bnframework.business.ConfigData;
import com.bonait.bnframework.business.ExecuteTheRecipe;
+import com.bonait.bnframework.business.ModbusHelper;
import com.bonait.bnframework.common.base.BaseFragment;
import com.bonait.bnframework.common.constant.ConfigName;
import com.bonait.bnframework.common.constant.DataBus;
@@ -102,7 +109,7 @@ public class HomeFragmentPR extends BaseFragment {
activity = getActivity();
initTopBar();
SelectTab(1);
-
+ NotifyEvent.get().Register("商品信息刷新",()->{initData();});
}
@SuppressLint("HandlerLeak")
@@ -122,57 +129,6 @@ public class HomeFragmentPR extends BaseFragment {
mTopBar.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.topbj1));
mTopBar.setTitle("菜谱");
mTopBar.addRightTextButton("设备状态:"+(ConfigName.getInstance().PlcIsConnect ? "已连接" : "未连接"),R.id.status_image);
-
- new Thread(new Runnable() {
- @Override
- public void run() {
- while (true)
- {
- try {
- activity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- mTopBar.removeAllRightViews();
- mTopBar.addRightTextButton("设备状态:"+(ConfigName.getInstance().PlcIsConnect ? "已连接" : "未连接"),R.id.status_image);
- }
- });
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- }
- }
- }
- }).start();
- /**
- * 刷新菜品
- */
- MessageManager.getInstance().registerMessageReceiver(activity, MessageName.GetOrganize, new MessageLooper.OnMessageListener() {
- @Override
- public void onMessage(Object msg) {
- if (msg != null && isAdded()) {
- ConfigData.getInstance().GetGevGood(context, mHandler);
- }
- }
- });
- /**
- * 刷新菜品
- */
- MessageManager.getInstance().registerMessageReceiver(activity, MessageName.ScGood, new MessageLooper.OnMessageListener() {
- @Override
- public void onMessage(Object msg) {
- if (msg != null && isAdded()) {
- String str = (String) msg;
- if (str.equals("Good")) {
- initData();
- if (qupenren.getVisibility() == View.VISIBLE) {
- qupenren.RefreshData();
- }
- } else {
- ConfigData.getInstance().GetGevGood(context, mHandler);
- }
- }
- }
- });
-
search_view.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
@@ -187,44 +143,29 @@ public class HomeFragmentPR extends BaseFragment {
});
}
+
+
/**
* 初始化显示数据
*/
private void initData() {
- StaggeredGridLayoutManager layout = new StaggeredGridLayoutManager
- (3, StaggeredGridLayoutManager.VERTICAL);
+ StaggeredGridLayoutManager layout = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
recycler_view.setLayoutManager(layout);
- ArrayList good = new ArrayList<>();
- String name = search_view.getQuery().toString();
- if (name.isEmpty()) {
- good = QueryDB.GetGoodsALL();
- } else {
- good = QueryDB.GetGoodsLike(name);
- }
-
- List Bendi_id = new ArrayList<>();
- ArrayList contents_bdcp = new ArrayList<>();
- ArrayList contents_ydcp = new ArrayList<>();
- for (BPA_GOODS item : good) {
- if (item.url == null) {
- item.url = "未知";
+ QueryDB.getFormulaAll().OnFinally(s->{
+ if(s.isSuccess){
+ ArrayList contents_bdcp = new ArrayList<>();
+ s.Content.forEach(item->{
+ if (item.Url == null) {item.Url = "未知"; }
+ contents_bdcp.add(new SectionItem(item.Name, "", item.id, item.Url, false, false, true));
+ });
+ good_adapter adapter = new good_adapter(context, contents_bdcp, myClickListener);
+ recycler_view.setAdapter(adapter);
+ }else{
+ MessageLog.ShowError(s.message);
}
- contents_bdcp.add(new SectionItem(item.name, String.valueOf(item.maketime), item.id, item.url, item.issc == 1, false, true));
- Bendi_id.add(item.id);
- }
-
- for (CloudGood item : ConfigName.getInstance().cloudGoods) {
- contents_ydcp.add(new SectionItem(item.goods_Name, "180", item.id, item.goods_ImgUrl, false, true, Bendi_id.contains(item.id) ? true : false));
- }
+ });
- if (SelectIndex == 1) {
- good_adapter adapter = new good_adapter(context, contents_bdcp, myClickListener);
- recycler_view.setAdapter(adapter);
- } else {
- good_adapter adapter = new good_adapter(context, contents_ydcp, myClickListener);
- recycler_view.setAdapter(adapter);
- }
}
public MyClickListener myClickListener = new MyClickListener() {
@@ -240,8 +181,7 @@ public class HomeFragmentPR extends BaseFragment {
switch (k) {
case 1:
- QueryDB.DeleteGoodsid(goodid);
- QueryDB.DeleteGoodsSrecipeList(goodid);
+ QueryDB.ReamoveFormula(goodid);
initData();
break;
case 2:
@@ -252,6 +192,7 @@ public class HomeFragmentPR extends BaseFragment {
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("id", goodid);
startActivity(intent);
+ qupenren.setVisibility(View.GONE);
break;
case 99:
Intent intent1 = new Intent(getContext(), CookingSimulatedActivity.class);
@@ -262,14 +203,29 @@ public class HomeFragmentPR extends BaseFragment {
case 4: //打开查看窗体
qupenren.SetData(item, myClickListener);
qupenren.setVisibility(View.VISIBLE);
+ DiyUpdate1Activity.SelectId=goodid;
break;
case 5: //打开制作窗体
//判断是否正在制作
- if (ExecuteTheRecipe.IsStart) {
- ToastUtils.warning("请耐心等待商品制作结束!!!");
- } else {
- MessageManager.getInstance().sendMessage(MessageName.OpenMakeGoodFrom, goodid);
- qupenren.setVisibility(View.GONE);
+
+ if(ModbusHelper.get().IsRunning.getValue()){
+ DialogManager.showWarn(context,"制作中,请稍后后再试!", AlertDialogButton.OK,null);
+ }else{
+ if(ModbusHelper.get().getConnected()){
+ DialogManager.showInfo(context,"是否开始制作商品?", AlertDialogButton.YesNo,(s)->{
+ if(s){
+ QueryDB.getFormula(goodid).OnSource(order->{
+ Executor.get().runThread(()->{
+ ModbusHelper.get().WriteOrder(order.Content);
+ getActivity().runOnUiThread( ()->{qupenren.setVisibility(View.GONE);});
+ NotifyEvent.get().Notify(MessageName.OpenDeviceFrom);
+ });
+ });
+ }
+ });
+ }else{
+ DialogManager.showWarn(context,"设备未连接,请连接后重试!", AlertDialogButton.OK,null);
+ }
}
break;
case 0://关闭窗体
@@ -285,8 +241,7 @@ public class HomeFragmentPR extends BaseFragment {
*
* @param view
*/
- @OnClick({R.id.quanbucaipu, R.id.yunduancaipu
- })
+ @OnClick({R.id.quanbucaipu, R.id.yunduancaipu})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.quanbucaipu:
diff --git a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/from/DiyUpdate1Activity.java b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/from/DiyUpdate1Activity.java
index 892fb99f..177f9963 100644
--- a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/from/DiyUpdate1Activity.java
+++ b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/from/DiyUpdate1Activity.java
@@ -13,6 +13,7 @@ import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
+import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
@@ -20,11 +21,17 @@ import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Spinner;
+import com.bonait.bnframework.HBL.Dialog.AlertDialogButton;
+import com.bonait.bnframework.HBL.Dialog.DialogManager;
+import com.bonait.bnframework.HBL.NotifyEvent;
+import com.bonait.bnframework.HBL.Result.OperateResult;
+import com.bonait.bnframework.HBL.Result.OperateResultT;
import com.bonait.bnframework.R;
import com.bonait.bnframework.common.base.BaseActivity;
import com.bonait.bnframework.common.constant.DataBus;
import com.bonait.bnframework.common.constant.MessageName;
import com.bonait.bnframework.common.db.QueryDB;
+import com.bonait.bnframework.common.db.mode.BPA_FORMULA;
import com.bonait.bnframework.common.db.mode.BPA_GOODS;
import com.bonait.bnframework.common.db.mode.BPA_GOODSRECIPE;
import com.bonait.bnframework.common.db.mode.BPA_MATERIAL;
@@ -66,13 +73,35 @@ public class DiyUpdate1Activity extends BaseActivity {
@BindView(R.id.check)
CheckBox check;//默认收藏
@BindView(R.id.hrgx)
- Spinner hrgx;//工序
+ Spinner hrgx;//档位
+
+ @BindView(R.id.shengchengnewcaipu)
+ Button shengchengnewcaipu;
+
+ /**
+ * 加热计时温度
+ */
+ @BindView(R.id.Timing_Temperature)
+ EditText et_Timing_Temperature;
+
+ /**
+ * 泄压压力
+ */
+ @BindView(R.id.Relief_Pressure)
+ EditText et_Relief_Pressure;
+
+ /**
+ * 烹饪时间
+ */
+ @BindView(R.id.Cooking_Time)
+ EditText et_Cooking_Time;
+
Map hrgx_map = new LinkedHashMap<>();
Map hrgx_map_index = new LinkedHashMap<>();
- @BindView(R.id.gxchid)
- LinearLayout gxchid;//工序子集
- @BindView(R.id.datatab_gxbz)
- ListView datatab_gxbz;//工序步骤
+// @BindView(R.id.gxchid)
+// LinearLayout gxchid;//工序子集
+// @BindView(R.id.datatab_gxbz)
+// ListView datatab_gxbz;//工序步骤
public gongxubuzhou_adapter gxbz_adapter = null;
/**
* 工序步骤
@@ -86,7 +115,10 @@ public class DiyUpdate1Activity extends BaseActivity {
/**
* 当前商品
*/
- public BPA_GOODS good = null;
+ public BPA_FORMULA good = null;
+
+ public String ImageUrl;
+ public static String SelectId;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -96,71 +128,67 @@ public class DiyUpdate1Activity extends BaseActivity {
initTopBar();
initData();
SetGood();
+
+
+
+
}
private void initData() {
- //1.初始化轮播图
- //Drawable_Get(Banner_list);
- //2.初始化工序
- ArrayList data = QueryDB.GetProcessALL();
- int i = 0;
- String id = "";
- for (BPA_PROCESS item : data) {
- hrgx_map.put(item.name, item.id);
- hrgx_map_index.put(item.name, i);
- if (i == 0) {
- id = item.id;
- }
- i++;
+
+ List spinners = new ArrayList();
+ for (int i =1;i<=8;i++){
+ spinners.add(i);
}
- ArrayAdapter adapter_kk = new ArrayAdapter<>(getContext(), R.layout.spinner_text_item, new ArrayList<>(hrgx_map.keySet()));
+ ArrayAdapter adapter_kk = new ArrayAdapter<>(getContext(), R.layout.spinner_text_item, spinners);
adapter_kk.setDropDownViewResource(R.layout.spinner_dropdown_item);
hrgx.setAdapter(adapter_kk);
- hrgx.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View view, MotionEvent motionEvent) {
- isUserClicked = true;
- view.performClick();
- return false;
- }
- });
- hrgx.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
- if (isUserClicked)//不是用户点击返回
- {
- String id = hrgx_map.get(hrgx.getSelectedItem().toString());
- SelectItemFrom(id);
- isUserClicked = false;
- }
- }
-
- @Override
- public void onNothingSelected(AdapterView> adapterView) {
- }
- });
- SelectItemFrom(id);
+// hrgx.setOnTouchListener(new View.OnTouchListener() {
+// @Override
+// public boolean onTouch(View view, MotionEvent motionEvent) {
+// isUserClicked = true;
+// view.performClick();
+// return false;
+// }
+// });
+// hrgx.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+// @Override
+// public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
+// if (isUserClicked)//不是用户点击返回
+// {
+// String id = hrgx_map.get(hrgx.getSelectedItem().toString());
+// SelectItemFrom(id);
+// isUserClicked = false;
+// }
+// }
+//
+// @Override
+// public void onNothingSelected(AdapterView> adapterView) {
+// }
+// });
+// SelectItemFrom(1);
//3.工序步骤
- gxbz_adapter = new gongxubuzhou_adapter(getContext(), R.layout.gx_item1, (List) bpa_goodsrecipes, null);
- datatab_gxbz.setAdapter(gxbz_adapter);
- datatab_gxbz.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long l) {
- // TODO Auto-generated method stub
- gxbz_adapter.setSelectedPosition(position);
- gxbz_adapter.notifyDataSetInvalidated();
-
- SetSelectGX(bpa_goodsrecipes.get(position));//单击工序行,显示变量
- }
- });
+// gxbz_adapter = new gongxubuzhou_adapter(getContext(), R.layout.gx_item1, (List) bpa_goodsrecipes, null);
+// datatab_gxbz.setAdapter(gxbz_adapter);
+// datatab_gxbz.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+// @Override
+// public void onItemClick(AdapterView> parent, View view, int position, long l) {
+// // TODO Auto-generated method stub
+// gxbz_adapter.setSelectedPosition(position);
+// gxbz_adapter.notifyDataSetInvalidated();
+//
+// SetSelectGX(bpa_goodsrecipes.get(position));//单击工序行,显示变量
+// }
+// });
//图标选择
MessageManager.getInstance().registerMessageReceiver(this, MessageName.ClickImage, new MessageLooper.OnMessageListener() {
@Override
public void onMessage(Object msg) {
if (msg != null) {
- good.url = (String) msg;
- new MyBitmapUtils().disPlay(cpfm, good.url);
+ good.Url = (String) msg;
+ ImageUrl=(String) msg;
+ new MyBitmapUtils().disPlay(cpfm, good.Url);
}
}
});
@@ -181,60 +209,60 @@ public class DiyUpdate1Activity extends BaseActivity {
});
}
- /**
- * 根据选中步骤显示变量
- *
- * @param goodsrecipe
- */
- public void SetSelectGX(BPA_GOODSRECIPE goodsrecipe) {
- try {
- //1.根据工序名称显示工序集合
- hrgx.setSelection(hrgx_map_index.get(goodsrecipe.processname));
- String id = hrgx_map.get(hrgx.getSelectedItem().toString());
- SelectItemFrom(id);
-
- //2.根据工序变量集合-获取变量名称和值
- final HashMap formulation = new HashMap<>();
- //region 获取变量名称和值
- String text = goodsrecipe.processvalue;
- List data = new ArrayList<>();
- if (text.contains("|")) {
- String[] res = text.split("[|]");
- for (int i = 0; i < res.length; i++) {
- data.add(res[i]);
- }
- } else {
- data.add(text);
- }
- for (String item : data) {
- if (!item.isEmpty() && item.contains(",")) {
- String[] wl = item.split("[,]");
- if (wl != null && wl.length == 2) {
- String name = wl[0];
- String val = wl[1];
- formulation.put(name, val);
- }
- }
- }
- //endregion
-
- //3.查询子集-填充变量
- for (Map.Entry entry : formulation.entrySet()) {
- String key = entry.getKey();
- String value = entry.getValue();
- String STR = formulation.get(key);
- }
-
- for (int i = 0; i < gxchid.getChildCount(); i++) {
- fragment_gx gongxu = (fragment_gx) gxchid.getChildAt(i);
- String res = formulation.get(gongxu.model.name);
- if (res != null) {
- gongxu.SetValues(res);
- }
- }
- } catch (Exception ex) {
- }
- }
+// /**
+// * 根据选中步骤显示变量
+// *
+// * @param goodsrecipe
+// */
+// public void SetSelectGX(BPA_GOODSRECIPE goodsrecipe) {
+// try {
+// //1.根据工序名称显示工序集合
+// hrgx.setSelection(hrgx_map_index.get(goodsrecipe.processname));
+// String id = hrgx_map.get(hrgx.getSelectedItem().toString());
+// SelectItemFrom(id);
+//
+// //2.根据工序变量集合-获取变量名称和值
+// final HashMap formulation = new HashMap<>();
+// //region 获取变量名称和值
+// String text = goodsrecipe.processvalue;
+// List data = new ArrayList<>();
+// if (text.contains("|")) {
+// String[] res = text.split("[|]");
+// for (int i = 0; i < res.length; i++) {
+// data.add(res[i]);
+// }
+// } else {
+// data.add(text);
+// }
+// for (String item : data) {
+// if (!item.isEmpty() && item.contains(",")) {
+// String[] wl = item.split("[,]");
+// if (wl != null && wl.length == 2) {
+// String name = wl[0];
+// String val = wl[1];
+// formulation.put(name, val);
+// }
+// }
+// }
+// //endregion
+//
+// //3.查询子集-填充变量
+// for (Map.Entry entry : formulation.entrySet()) {
+// String key = entry.getKey();
+// String value = entry.getValue();
+// String STR = formulation.get(key);
+// }
+//
+//// for (int i = 0; i < gxchid.getChildCount(); i++) {
+//// fragment_gx gongxu = (fragment_gx) gxchid.getChildAt(i);
+//// String res = formulation.get(gongxu.model.name);
+//// if (res != null) {
+//// gongxu.SetValues(res);
+//// }
+//// }
+// } catch (Exception ex) {
+// }
+// }
/**
* 设置当前商品
@@ -243,121 +271,139 @@ public class DiyUpdate1Activity extends BaseActivity {
*/
public void SetGood() {
try {
- Intent intent = getIntent();
- String id = intent.getStringExtra("id");
- if (!id.isEmpty()) {
- good = QueryDB.GetGoodsId(id);
- if (good != null) {
- bpa_goodsrecipes.clear();
- ArrayList goodsrecipes = QueryDB.GetGoodsSrecipeID(good.id);
- for (BPA_GOODSRECIPE item : goodsrecipes) {
- bpa_goodsrecipes.add(item);
+ if(SelectId!=null&&!SelectId.isEmpty()) {
+ QueryDB.getFormula(SelectId).OnSource(s->{
+ good=s.Content;
+ ArrayAdapter adapter = (ArrayAdapter) hrgx.getAdapter();
+ for (int i = 0; i < adapter.getCount(); i++) {
+ if (String.valueOf(good.HeatingGear).equals(adapter.getItem(i).toString())) {
+ hrgx.setSelection(i);
+ break;
+ }
}
- edittext.setText(good.name);
- check.setChecked(good.issc == 1);
- zzsc.setText(good.maketime + "");
- gxbz_adapter.notifyDataSetChanged();//刷新商品配方
- new MyBitmapUtils().disPlay(cpfm, good.url);
- }
+ edittext.setText(good.Name);
+ et_Timing_Temperature.setText(String.valueOf(good.TimingTemperature));
+ et_Cooking_Time.setText(String.valueOf(good.CookingTime));
+ et_Relief_Pressure.setText(String.valueOf(good.ReliefPressure));
+ });
}
- getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
- } catch (Exception ex) {
- }
- }
-
- /**
- * 根据选中工序id显示集合
- *
- * @param id
- */
- public void SelectItemFrom(String id) {
- try {
- gxchid.removeAllViews();
- ArrayList mode = QueryDB.GetProcessModelProcessID(id);
- if (mode.size() > 0)//工序
- {
- for (BPA_PROCESSModel item : mode) {
- item_gx gx = new item_gx();
- gx.datatype = item.datatype;
- gx.name = item.name;
- gx.data = item.data;
- gx.IsWL = false;
- fragment_gx gongxu = new fragment_gx(this, null, gx);
- gxchid.addView(gongxu);
- }
- } else //物料
- {
- ArrayList materials = QueryDB.GetMaterialALL();
- for (BPA_MATERIAL item2 : materials) {
- item_gx gx = new item_gx();
- gx.datatype = 0;//液体料都是数字
- gx.name = item2.name;
- gx.IsWL = true;
- fragment_gx gongxu = new fragment_gx(this, null, gx);
- gxchid.addView(gongxu);
- }
- }
+//
+// Intent intent = getIntent();
+// String id = intent.getStringExtra("id");
+// if (!id.isEmpty()) {
+// good = QueryDB.GetGoodsId(id);
+// if (good != null) {
+// bpa_goodsrecipes.clear();
+// ArrayList goodsrecipes = QueryDB.GetGoodsSrecipeID(good.id);
+// for (BPA_GOODSRECIPE item : goodsrecipes) {
+// bpa_goodsrecipes.add(item);
+// }
+// edittext.setText(good.name);
+// check.setChecked(good.issc == 1);
+// zzsc.setText(good.maketime + "");
+// gxbz_adapter.notifyDataSetChanged();//刷新商品配方
+// new MyBitmapUtils().disPlay(cpfm, good.url);
+// }
+// }
+// getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
} catch (Exception ex) {
- }
- }
- /**
- * 获取选中行的变量
- *
- * @return
- */
- public BPA_GOODSRECIPE GetSelectItemFromValue() {
- BPA_GOODSRECIPE pf = new BPA_GOODSRECIPE();
- try {
- String name = hrgx.getSelectedItem().toString();
- boolean IsVerify = true;
- String description = "";
- // 延迟,100|延迟,100|延迟,100|延迟,100|
- String data = "";
- String desc = "";
- if (name.contains("液体料")) {
- pf.materialType = 0;
- for (int i = 0; i < gxchid.getChildCount(); i++) {
- fragment_gx gongxu = (fragment_gx) gxchid.getChildAt(i);
- String values = gongxu.GetValues();
- if (!values.isEmpty()) {
- data += gongxu.model.name + "," + values + "|";
- desc += values + ",";
- }
- }
-
- if (data.isEmpty()) {
- IsVerify = false;
- description += "物料-不能为空,请勾选一个物料\n";
- }
- } else {
- pf.materialType = 1;
- for (int i = 0; i < gxchid.getChildCount(); i++) {
- fragment_gx gongxu = (fragment_gx) gxchid.getChildAt(i);
- String values = gongxu.GetValues();
- if (values.isEmpty()) {
- IsVerify = false;
- description += gongxu.model.name + "-不能为空\n";
- } else {
- data += gongxu.model.name + "," + values + "|";
- desc += values + ",";
- }
- }
- }
- if (IsVerify) {
- pf.processname = name;
- pf.processms = name + "(" + desc.substring(0, desc.length() - 1) + ")";
- pf.processvalue = data.substring(0, data.length() - 1);
- return pf;
- } else {
- ToastUtils.info("数据验证失败,原因:" + description);
- return null;
- }
- } catch (Exception ex) {
- return null;
}
}
+
+// /**
+// * 根据选中工序id显示集合
+// *
+// * @param id
+// */
+// public void SelectItemFrom(String id) {
+// try {
+//// gxchid.removeAllViews();
+//// ArrayList mode = QueryDB.GetProcessModelProcessID(id);
+//// if (mode.size() > 0)//工序
+//// {
+//// for (BPA_PROCESSModel item : mode) {
+//// item_gx gx = new item_gx();
+//// gx.datatype = item.datatype;
+//// gx.name = item.name;
+//// gx.data = item.data;
+//// gx.IsWL = false;
+//// fragment_gx gongxu = new fragment_gx(this, null, gx);
+//// gxchid.addView(gongxu);
+//// }
+//// } else //物料
+//// {
+//// ArrayList materials = QueryDB.GetMaterialALL();
+//// for (BPA_MATERIAL item2 : materials) {
+//// item_gx gx = new item_gx();
+//// gx.datatype = 0;//液体料都是数字
+//// gx.name = item2.name;
+//// gx.IsWL = true;
+//// fragment_gx gongxu = new fragment_gx(this, null, gx);
+//// gxchid.addView(gongxu);
+//// }
+//// }
+// } catch (Exception ex) {
+// }
+// }
+
+// /**
+// * 获取选中行的变量
+// *
+// * @return
+// */
+// public BPA_GOODSRECIPE GetSelectItemFromValue() {
+// BPA_GOODSRECIPE pf = new BPA_GOODSRECIPE();
+// try {
+// String name = hrgx.getSelectedItem().toString();
+// boolean IsVerify = true;
+// String description = "";
+// // 延迟,100|延迟,100|延迟,100|延迟,100|
+// String data = "";
+// String desc = "";
+// if (name.contains("液体料")) {
+// pf.materialType = 0;
+//// for (int i = 0; i < gxchid.getChildCount(); i++) {
+//// fragment_gx gongxu = (fragment_gx) gxchid.getChildAt(i);
+//// String values = gongxu.GetValues();
+//// if (!values.isEmpty()) {
+//// data += gongxu.model.name + "," + values + "|";
+//// desc += values + ",";
+//// }
+//// }
+//
+// if (data.isEmpty()) {
+// IsVerify = false;
+// description += "物料-不能为空,请勾选一个物料\n";
+// }
+// } else {
+// pf.materialType = 1;
+//// for (int i = 0; i < gxchid.getChildCount(); i++) {
+//// fragment_gx gongxu = (fragment_gx) gxchid.getChildAt(i);
+//// String values = gongxu.GetValues();
+//// if (values.isEmpty()) {
+//// IsVerify = false;
+//// description += gongxu.model.name + "-不能为空\n";
+//// } else {
+//// data += gongxu.model.name + "," + values + "|";
+//// desc += values + ",";
+//// }
+//// }
+// }
+// if (IsVerify) {
+// pf.processname = name;
+// pf.processms = name + "(" + desc.substring(0, desc.length() - 1) + ")";
+// pf.processvalue = data.substring(0, data.length() - 1);
+// return pf;
+// } else {
+// ToastUtils.info("数据验证失败,原因:" + description);
+// return null;
+// }
+// } catch (Exception ex) {
+// return null;
+// }
+// }
private void initTopBar() {
mTopBar.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.topbj1));
mTopBar.setTitle("编辑菜谱");
@@ -374,7 +420,7 @@ public class DiyUpdate1Activity extends BaseActivity {
*
* @param view
*/
- @OnClick({R.id.add_hrgx, R.id.update_gx, R.id.delete_gx, R.id.shangyi, R.id.xiayi, R.id.caozuomoshi, R.id.shengchengcaipu, R.id.shengchengnewcaipu, R.id.cpfm})
+ @OnClick({ R.id.shengchengcaipu, R.id.shengchengnewcaipu, R.id.cpfm})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.cpfm://菜谱封面
@@ -383,169 +429,203 @@ public class DiyUpdate1Activity extends BaseActivity {
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
break;
- case R.id.add_hrgx://添加工序
- BPA_GOODSRECIPE goodsrecipe = GetSelectItemFromValue();
- if (goodsrecipe != null) {
- bpa_goodsrecipes.add(GetSelectItemFromValue());
- gxbz_adapter.notifyDataSetChanged();
- }
- break;
- case R.id.update_gx://修改工序
- int index_update = gxbz_adapter.getSelectedPosition();
- if (index_update >= 0 && index_update < bpa_goodsrecipes.size()) {
- BPA_GOODSRECIPE obj_update = (BPA_GOODSRECIPE) bpa_goodsrecipes.get(index_update);
- String selectname = hrgx.getSelectedItem().toString();
- if (!obj_update.processname.equals(selectname)) {
- ToastUtils.info("请先选择工序!");
- return;
- }
- bpa_goodsrecipes.set(index_update, GetSelectItemFromValue());
- gxbz_adapter.notifyDataSetChanged();
- ToastUtils.info("修改步骤" + (index_update + 1) + ":" + obj_update.processname + "成功!");
- } else {
- ToastUtils.info("请先选择工序!");
- }
- break;
- case R.id.delete_gx://删除工序
- int index_delete = gxbz_adapter.getSelectedPosition();
- if (index_delete >= 0 && index_delete < bpa_goodsrecipes.size()) {
- BPA_GOODSRECIPE obj_delete = (BPA_GOODSRECIPE) bpa_goodsrecipes.get(index_delete);
- bpa_goodsrecipes.remove(obj_delete);
- gxbz_adapter.notifyDataSetChanged();
-
- //移动光标
- if (index_delete - 1 >= 0) {
- SetSelectPos(index_delete - 1);
- }
- ToastUtils.info("删除工序" + obj_delete.processname + "成功!");
- } else {
- ToastUtils.info("请先选择工序!");
- }
- break;
- case R.id.shangyi://上移
- int index_up = gxbz_adapter.getSelectedPosition();
- ;
- if (index_up > 0) {
- BPA_GOODSRECIPE obj_up = (BPA_GOODSRECIPE) bpa_goodsrecipes.get(index_up);
- bpa_goodsrecipes.remove(obj_up);
- bpa_goodsrecipes.add(index_up - 1, obj_up);
- gxbz_adapter.notifyDataSetChanged();
-
- //移动光标
- SetSelectPos(index_up - 1);
- } else {
- ToastUtils.info("已经最顶部!");
- }
- break;
- case R.id.xiayi://下移
- int index_down = gxbz_adapter.getSelectedPosition();
- if (index_down < bpa_goodsrecipes.size() - 1 && index_down >= 0) {
- BPA_GOODSRECIPE obj_down = (BPA_GOODSRECIPE) bpa_goodsrecipes.get(index_down);
- bpa_goodsrecipes.remove(obj_down);
- bpa_goodsrecipes.add(index_down + 1, obj_down);
- gxbz_adapter.notifyDataSetChanged();
-
- //移动光标
- SetSelectPos(index_down + 1);
- } else {
- ToastUtils.info("已经最底部!");
- }
- break;
- case R.id.caozuomoshi://操作模式
- Intent intent1 = new Intent(getContext(), DiyMemoryActivity.class);
- intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent1);
- break;
+// case R.id.add_hrgx://添加工序
+// BPA_GOODSRECIPE goodsrecipe = GetSelectItemFromValue();
+// if (goodsrecipe != null) {
+// bpa_goodsrecipes.add(GetSelectItemFromValue());
+// gxbz_adapter.notifyDataSetChanged();
+// }
+// break;
+// case R.id.update_gx://修改工序
+// int index_update = gxbz_adapter.getSelectedPosition();
+// if (index_update >= 0 && index_update < bpa_goodsrecipes.size()) {
+// BPA_GOODSRECIPE obj_update = (BPA_GOODSRECIPE) bpa_goodsrecipes.get(index_update);
+// String selectname = hrgx.getSelectedItem().toString();
+// if (!obj_update.processname.equals(selectname)) {
+// ToastUtils.info("请先选择工序!");
+// return;
+// }
+// bpa_goodsrecipes.set(index_update, GetSelectItemFromValue());
+// gxbz_adapter.notifyDataSetChanged();
+// ToastUtils.info("修改步骤" + (index_update + 1) + ":" + obj_update.processname + "成功!");
+// } else {
+// ToastUtils.info("请先选择工序!");
+// }
+// break;
+// case R.id.delete_gx://删除工序
+// int index_delete = gxbz_adapter.getSelectedPosition();
+// if (index_delete >= 0 && index_delete < bpa_goodsrecipes.size()) {
+// BPA_GOODSRECIPE obj_delete = (BPA_GOODSRECIPE) bpa_goodsrecipes.get(index_delete);
+// bpa_goodsrecipes.remove(obj_delete);
+// gxbz_adapter.notifyDataSetChanged();
+//
+// //移动光标
+// if (index_delete - 1 >= 0) {
+// SetSelectPos(index_delete - 1);
+// }
+// ToastUtils.info("删除工序" + obj_delete.processname + "成功!");
+// } else {
+// ToastUtils.info("请先选择工序!");
+// }
+// break;
+// case R.id.shangyi://上移
+// int index_up = gxbz_adapter.getSelectedPosition();
+// ;
+// if (index_up > 0) {
+// BPA_GOODSRECIPE obj_up = (BPA_GOODSRECIPE) bpa_goodsrecipes.get(index_up);
+// bpa_goodsrecipes.remove(obj_up);
+// bpa_goodsrecipes.add(index_up - 1, obj_up);
+// gxbz_adapter.notifyDataSetChanged();
+//
+// //移动光标
+// SetSelectPos(index_up - 1);
+// } else {
+// ToastUtils.info("已经最顶部!");
+// }
+// break;
+// case R.id.xiayi://下移
+// int index_down = gxbz_adapter.getSelectedPosition();
+// if (index_down < bpa_goodsrecipes.size() - 1 && index_down >= 0) {
+// BPA_GOODSRECIPE obj_down = (BPA_GOODSRECIPE) bpa_goodsrecipes.get(index_down);
+// bpa_goodsrecipes.remove(obj_down);
+// bpa_goodsrecipes.add(index_down + 1, obj_down);
+// gxbz_adapter.notifyDataSetChanged();
+//
+// //移动光标
+// SetSelectPos(index_down + 1);
+// } else {
+// ToastUtils.info("已经最底部!");
+// }
+// break;
+// case R.id.caozuomoshi://操作模式
+// Intent intent1 = new Intent(getContext(), DiyMemoryActivity.class);
+// intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+// startActivity(intent1);
+// break;
case R.id.shengchengnewcaipu:
String name1 = edittext.getText().toString();
- if (name1.isEmpty()) {
- ToastUtils.info("菜谱名称不能为空!");
+ if(name1.isEmpty()){
+ DialogManager.showWarn(this,"菜谱名称不能为空!", AlertDialogButton.OK,null);
return;
- } else {
- boolean isSucess = QueryDB.GetGoodsIs(name1);
- if (isSucess) {
- ToastUtils.info("菜谱名称已存在!");
- return;
- }
- //按钮点击
- String title = "生成菜谱操作提示!";
- String message = "请问客官确定要生成[" + name1 + "]菜谱吗?";
- AlertDialogUtils.showDialog(view.getContext(), title, message, new QMUIDialogAction.ActionListener() {
- @Override
- public void onClick(QMUIDialog dialog, int index) {
- int sc = 60 * 3;
- if (!zzsc.getText().toString().isEmpty() && !zzsc.getText().toString().equals("0")) {
- sc = Integer.parseInt(zzsc.getText().toString());
- }
+ }
+ if(QueryDB.checkName(name1)){
+ DialogManager.showWarn(this,"菜谱名称已存在!", AlertDialogButton.OK,null);
+ return;
+ }
- ArrayList goods = QueryDB.GetGoodsALL();
- BPA_GOODS good1 = new BPA_GOODS();
- good1.name = name1;
- good1.status = 1;
- good1.sort = goods.size() + 1;
- good1.maketime = sc;
- good1.issc = check.isChecked() ? 1 : 0;
- good1.url = good.url;
- QueryDB.AddGoods(good1);
- for (int k = 0; k < bpa_goodsrecipes.size(); k++) {
- BPA_GOODSRECIPE item = bpa_goodsrecipes.get(k);
- item.id = java.util.UUID.randomUUID().toString();
- item.goodsID = good1.id;
- item.sort = k + 1;
- QueryDB.AddGoodsSrecipe(item);
+ DialogManager.showInfo(this,"请问是否生成 ["+name1+"] 菜谱?", AlertDialogButton.YesNo,(s)->{
+ if(s){
+ try{
+ int heatingGear = Integer.parseInt(hrgx.getSelectedItem().toString());
+ int timingsTemperature = Integer.parseInt(et_Timing_Temperature.getText().toString());
+ int cookingTime = Integer.parseInt(et_Cooking_Time.getText().toString());
+ int reliefPressure = Integer.parseInt(et_Relief_Pressure.getText().toString());
+ OperateResult result = QueryDB.addFormula(new BPA_FORMULA(name1,ImageUrl,heatingGear,timingsTemperature,cookingTime,reliefPressure));
+ if(result.isSuccess)
+ {
+ ToastUtils.info("菜谱添加成功!");
+ NotifyEvent.get().Notify("商品信息刷新");
}
- ToastUtils.info("菜谱复刻成功!");
- dialog.dismiss();
- MessageManager.getInstance().sendMessage(MessageName.ScGood, "Good");
+ else DialogManager.showError(this,"添加菜谱失败,"+result.message,AlertDialogButton.OK,null);
finish();
+ }catch(Exception e){
+ DialogManager.showError(this,"添加菜谱失败,"+e.getMessage(),AlertDialogButton.OK,null);
}
- });
-
- }
+ }
+ });
+
+
+
+//
+// if (name1.isEmpty()) {
+//// ToastUtils.info("菜谱名称不能为空!");
+// DialogManager.showWarn(this,"菜谱名称不能为空!", AlertDialogButton.OK,null);
+// return;
+// } else {
+// boolean isSucess = QueryDB.checkName(name1);
+// if (isSucess) {
+// ToastUtils.info("菜谱名称已存在!");
+// return;
+// }
+// //按钮点击
+// String title = "生成菜谱操作提示!";
+// String message = "请问客官确定要生成[" + name1 + "]菜谱吗?";
+// AlertDialogUtils.showDialog(view.getContext(), title, message, new QMUIDialogAction.ActionListener() {
+// @Override
+// public void onClick(QMUIDialog dialog, int index) {
+// int sc = 60 * 3;
+// if (!zzsc.getText().toString().isEmpty() && !zzsc.getText().toString().equals("0")) {
+// sc = Integer.parseInt(zzsc.getText().toString());
+// }
+//
+// ArrayList goods = QueryDB.GetGoodsALL();
+// BPA_GOODS good1 = new BPA_GOODS();
+// good1.name = name1;
+// good1.status = 1;
+// good1.sort = goods.size() + 1;
+// good1.maketime = sc;
+// good1.issc = check.isChecked() ? 1 : 0;
+// if(good!=null) good1.url = good.url;
+// QueryDB.AddGoods(good1);
+// for (int k = 0; k < bpa_goodsrecipes.size(); k++) {
+// BPA_GOODSRECIPE item = bpa_goodsrecipes.get(k);
+// item.id = java.util.UUID.randomUUID().toString();
+// item.goodsID = good1.id;
+// item.sort = k + 1;
+// QueryDB.AddGoodsSrecipe(item);
+// }
+// ToastUtils.info("菜谱复刻成功!");
+// dialog.dismiss();
+// MessageManager.getInstance().sendMessage(MessageName.ScGood, "Good");
+// finish();
+// }
+// });
+//
+// }
break;
case R.id.shengchengcaipu://修改菜谱
- String name = edittext.getText().toString();
- if (name.isEmpty()) {
- ToastUtils.info("菜谱名称不能为空!");
- return;
- } else {
- boolean isSucess = QueryDB.GetGoodsIs(name, good.id);
- if (isSucess) {
- ToastUtils.info("菜谱名称已存在!");
- return;
- }
- //按钮点击
- String title = "保存菜谱操作提示!";
- String message = "请问客官确定要保存[" + name + "]菜谱吗?";
- AlertDialogUtils.showDialog(view.getContext(), title, message, new QMUIDialogAction.ActionListener() {
- @Override
- public void onClick(QMUIDialog dialog, int index) {
- int sc = 60 * 3;
- if (!zzsc.getText().toString().isEmpty() && !zzsc.getText().toString().equals("0")) {
- sc = Integer.parseInt(zzsc.getText().toString());
- }
- good.maketime = sc;
- good.issc = check.isChecked() ? 1 : 0;
- good.name = name;
- QueryDB.UpdateGoods(good);
- ArrayList pe = QueryDB.GetGoodsSrecipeID(good.id);
- for (BPA_GOODSRECIPE item : pe) {
- QueryDB.DeleteGoodsSrecipe(item);
- }
- for (int k = 0; k < bpa_goodsrecipes.size(); k++) {
- BPA_GOODSRECIPE item = bpa_goodsrecipes.get(k);
- item.goodsID = good.id;
- item.sort = k + 1;
- QueryDB.AddGoodsSrecipe(item);
- }
- ToastUtils.info("菜谱修改成功!");
- dialog.dismiss();
- MessageManager.getInstance().sendMessage(MessageName.ScGood, "Good");
- finish();
- }
- });
-
- }
+// String name = edittext.getText().toString();
+// if (name.isEmpty()) {
+// ToastUtils.info("菜谱名称不能为空!");
+// return;
+// } else {
+// boolean isSucess = QueryDB.GetGoodsIs(name, good.id);
+// if (isSucess) {
+// ToastUtils.info("菜谱名称已存在!");
+// return;
+// }
+// //按钮点击
+// String title = "保存菜谱操作提示!";
+// String message = "请问客官确定要保存[" + name + "]菜谱吗?";
+// AlertDialogUtils.showDialog(view.getContext(), title, message, new QMUIDialogAction.ActionListener() {
+// @Override
+// public void onClick(QMUIDialog dialog, int index) {
+// int sc = 60 * 3;
+// if (!zzsc.getText().toString().isEmpty() && !zzsc.getText().toString().equals("0")) {
+// sc = Integer.parseInt(zzsc.getText().toString());
+// }
+// good.maketime = sc;
+// good.issc = check.isChecked() ? 1 : 0;
+// good.name = name;
+// QueryDB.UpdateGoods(good);
+// ArrayList pe = QueryDB.GetGoodsSrecipeID(good.id);
+// for (BPA_GOODSRECIPE item : pe) {
+// QueryDB.DeleteGoodsSrecipe(item);
+// }
+// for (int k = 0; k < bpa_goodsrecipes.size(); k++) {
+// BPA_GOODSRECIPE item = bpa_goodsrecipes.get(k);
+// item.goodsID = good.id;
+// item.sort = k + 1;
+// QueryDB.AddGoodsSrecipe(item);
+// }
+// ToastUtils.info("菜谱修改成功!");
+// dialog.dismiss();
+// MessageManager.getInstance().sendMessage(MessageName.ScGood, "Good");
+// finish();
+// }
+// });
+//
+// }
break;
}
}
diff --git a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/from/SystemParSetActivity.java b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/from/SystemParSetActivity.java
new file mode 100644
index 00000000..2f511881
--- /dev/null
+++ b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/from/SystemParSetActivity.java
@@ -0,0 +1,171 @@
+package com.bonait.bnframework.modules.home.fragment.from;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+
+import androidx.core.content.ContextCompat;
+
+import com.bonait.bnframework.HBL.Executor;
+import com.bonait.bnframework.HBL.Logs.MessageLog;
+import com.bonait.bnframework.R;
+import com.bonait.bnframework.business.ControlAdress;
+import com.bonait.bnframework.business.ModbusHelper;
+import com.bonait.bnframework.common.base.BaseActivity;
+import com.bonait.bnframework.common.constant.ConfigName;
+import com.bonait.bnframework.common.constant.DataBus;
+import com.bonait.bnframework.common.db.QueryDB;
+import com.bonait.bnframework.common.db.res.lcMode;
+import com.bonait.bnframework.common.helper.ConfigUtil;
+import com.bonait.bnframework.common.helper.I.MyClickListener;
+import com.bonait.bnframework.common.utils.ToastUtils;
+import com.bonait.bnframework.modules.home.fragment.mode.add_silos_message;
+import com.bonait.bnframework.modules.home.fragment.mode.imagebuttom;
+import com.bonait.bnframework.modules.home.fragment.mode.jingdutiao1;
+import com.qmuiteam.qmui.widget.QMUITopBarLayout;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+
+public class SystemParSetActivity extends BaseActivity {
+
+ //region 变量
+ @BindView(R.id.topbar)
+ QMUITopBarLayout mTopBar;
+
+ /**
+ * 温度上限
+ */
+ @BindView(R.id.et_Temperature_Upper_Limit)
+ EditText et_Temperature_Upper_Limit;
+
+ /**
+ * 温度下限
+ */
+ @BindView(R.id.et_Temperature_Lower_Limit)
+ EditText et_Temperature_Lower_Limit;
+
+ /**
+ * 压力上限
+ */
+ @BindView(R.id.et_Pressure_Upper_Limit)
+ EditText et_Pressure_Upper_Limit;
+
+ /**
+ * 压力下限
+ */
+ @BindView(R.id.et_Pressure_Lower_Limit)
+ EditText et_Pressure_Lower_Limit;
+
+ /**
+ * 允许开盖压力
+ */
+ @BindView(R.id.et_OpenLid_pressure)
+ EditText et_OpenLid_pressure;
+
+ /**
+ * 排冷气温度
+ */
+ @BindView(R.id.et_Exhaust_Air_Temperature)
+ EditText et_Exhaust_Air_Temperature;
+
+ public Context context;
+ public Activity activity=null;
+ //endregion
+
+ //region 界面实例
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_system_par_set);
+ ButterKnife.bind(this);
+ context = this;
+ activity=this;
+ initTopBar();
+ InitData();
+ }
+ //endregion
+
+ //region 私有方法
+
+ /**
+ * 初始化顶部弹框
+ */
+ private void initTopBar() {
+ mTopBar.setBackgroundColor(ContextCompat.getColor(context, R.color.topbj1));
+ mTopBar.setTitle("系统参数设置");
+ mTopBar.addLeftImageButton(R.mipmap.fanhui, R.id.topbar).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ finish();
+ }
+ });
+
+
+ }
+
+ private String getConfig(String key){
+ Context dishesCon = ConfigName.getInstance().dishesCon;
+ return String.valueOf(ConfigUtil.read(dishesCon, key,0 ));
+ }
+
+ /**
+ * 初始化数据
+ */
+ public void InitData() {
+ try{
+ et_Temperature_Upper_Limit.setText(getConfig("Temperature_Upper_Limit"));
+ et_Temperature_Lower_Limit.setText(getConfig("Temperature_Lower_Limit"));
+ et_Pressure_Upper_Limit.setText(getConfig("Pressure_Upper_Limit"));
+ et_Pressure_Lower_Limit.setText(getConfig("Pressure_Lower_Limit"));
+ et_OpenLid_pressure.setText(getConfig("OpenLid_pressure"));
+ et_Exhaust_Air_Temperature.setText(getConfig("Exhaust_Air_Temperature"));
+ }catch(Exception e){
+ MessageLog.ShowError(e);
+ }
+ }
+
+
+ /**
+ * 点击事件
+ *
+ * @param view
+ */
+ @OnClick({R.id.btn_save})
+ public void onViewClicked(View view) {
+ switch (view.getId()) {
+ case R.id.btn_save:
+ try{
+ short Temperature_Upper_Limit = Short.parseShort(et_Temperature_Upper_Limit.getText().toString());
+ short Temperature_Lower_Limit = Short.parseShort(et_Temperature_Lower_Limit.getText().toString());
+ short Pressure_Upper_Limit = Short.parseShort(et_Pressure_Upper_Limit.getText().toString());
+ short Pressure_Lower_Limit = Short.parseShort(et_Pressure_Lower_Limit.getText().toString());
+ short OpenLid_pressure = Short.parseShort(et_OpenLid_pressure.getText().toString());
+ short Exhaust_Air_Temperature = Short.parseShort(et_Exhaust_Air_Temperature.getText().toString());
+ Context dishesCon = ConfigName.getInstance().dishesCon;
+ ConfigUtil.write(dishesCon, "Temperature_Upper_Limit",Temperature_Upper_Limit );
+ ConfigUtil.write(dishesCon, "Temperature_Lower_Limit",Temperature_Lower_Limit);
+ ConfigUtil.write(dishesCon, "Pressure_Upper_Limit",Pressure_Upper_Limit );
+ ConfigUtil.write(dishesCon, "Pressure_Lower_Limit",Pressure_Lower_Limit );
+ ConfigUtil.write(dishesCon, "OpenLid_pressure",OpenLid_pressure );
+ ConfigUtil.write(dishesCon, "Exhaust_Air_Temperature", Exhaust_Air_Temperature);
+ Executor.get().runThread(()->{
+ ModbusHelper.get().WritePar(ControlAdress.温度上限,Temperature_Upper_Limit);
+ ModbusHelper.get().WritePar(ControlAdress.温度下限,Temperature_Lower_Limit);
+ ModbusHelper.get().WritePar(ControlAdress.压力上限,Pressure_Upper_Limit);
+ ModbusHelper.get().WritePar(ControlAdress.压力下限,Pressure_Lower_Limit);
+ ModbusHelper.get().WritePar(ControlAdress.允许开盖压力,OpenLid_pressure);
+ ModbusHelper.get().WritePar(ControlAdress.排冷气温度,Exhaust_Air_Temperature);
+ this.runOnUiThread(()->{ ToastUtils.info("保存成功!");});
+ });
+ }catch (Exception e){
+ MessageLog.ShowError(e);
+ }
+ break;
+ }
+ }
+ //endregion
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/mode/add_qupenren.java b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/mode/add_qupenren.java
index e3d0dabd..f3e2e887 100644
--- a/app/src/main/java/com/bonait/bnframework/modules/home/fragment/mode/add_qupenren.java
+++ b/app/src/main/java/com/bonait/bnframework/modules/home/fragment/mode/add_qupenren.java
@@ -14,8 +14,13 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
+import com.bonait.bnframework.HBL.Dialog.AlertDialogButton;
+import com.bonait.bnframework.HBL.Dialog.DialogManager;
+import com.bonait.bnframework.HBL.Executor;
+import com.bonait.bnframework.MainApplication;
import com.bonait.bnframework.R;
import com.bonait.bnframework.business.ExecuteTheRecipe;
+import com.bonait.bnframework.business.ModbusHelper;
import com.bonait.bnframework.common.constant.ConfigName;
import com.bonait.bnframework.common.constant.DataBus;
import com.bonait.bnframework.common.db.QueryDB;
@@ -38,30 +43,33 @@ public class add_qupenren extends LinearLayout {
@BindView(R.id.quzhizuo)
Button quzhizuo;
+ @BindView(R.id.edit_func)
+ Button edit_func;
+
@BindView(R.id.quzhizuo_ms)
TextView quzhizuo_ms;
- @BindView(R.id.bianji)
- RelativeLayout bianji;
+// @BindView(R.id.bianji)
+// RelativeLayout bianji;
- @BindView(R.id.chaozhi)
- RelativeLayout chaozhi;
+// @BindView(R.id.chaozhi)
+// RelativeLayout chaozhi;
@BindView(R.id.close_from)
Button close_from;
@BindView(R.id.good_name)
TextView good_name;//商品名称
- @BindView(R.id.yihao_text)
- TextView yihao_text;//1号
-
- @BindView(R.id.erhao_text)
- TextView erhao_text;//1号
-
- @BindView(R.id.sanhao_text)
- TextView sanhao_text;//1号
-
- @BindView(R.id.sihao_text)
- TextView sihao_text;//1号
+// @BindView(R.id.yihao_text)
+// TextView yihao_text;//1号
+//
+// @BindView(R.id.erhao_text)
+// TextView erhao_text;//1号
+//
+// @BindView(R.id.sanhao_text)
+// TextView sanhao_text;//1号
+//
+// @BindView(R.id.sihao_text)
+// TextView sihao_text;//1号
/**
* 点击事件
*/
@@ -93,11 +101,6 @@ public class add_qupenren extends LinearLayout {
ConcurrentHashMap resultData= DataBus.getInstance().GetMainDisplayText(id);
- yihao_text.setText(resultData.get(1)+"");
- erhao_text.setText(resultData.get(2)+"");
- sanhao_text.setText(resultData.get(3)+"");
- sihao_text.setText(resultData.get(4)+"");
-
if(ExecuteTheRecipe.IsStart)
{
quzhizuo.setVisibility(View.GONE);
@@ -138,25 +141,14 @@ public class add_qupenren extends LinearLayout {
private void initEvent() {
if (ConfigName.getInstance().user.userID.equals("研发用户")) {
- bianji.setVisibility(View.VISIBLE);
+ edit_func.setVisibility(View.VISIBLE);
} else {
- bianji.setVisibility(View.GONE);
+ edit_func.setVisibility(View.GONE);
}
quzhizuo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
- if (!ConfigName.getInstance().PlcIsConnect) {
- ToastUtils.warning("PLC未准备就绪!!!");
- return;
- }
-
- Object chushiover = ExecuteTheRecipe.getListingValue("初始化完成");
- //Object jiting = ExecuteTheRecipe.getListingValue("设备急停");
- if (chushiover == null || !(boolean) chushiover) {
- ToastUtils.warning("设备未初始化,请先手动初始化设备!!!");
- return;
- }
if (mListener != null) {
mListener.clickListenerNew(view, 5, mode);
}
@@ -171,7 +163,7 @@ public class add_qupenren extends LinearLayout {
}
});
- bianji.setOnClickListener(new OnClickListener() {
+ edit_func.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (mListener != null) {
@@ -180,13 +172,5 @@ public class add_qupenren extends LinearLayout {
}
});
- chaozhi.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- if (mListener != null) {
- mListener.clickListenerNew(view, 99, mode);
- }
- }
- });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/bonait/bnframework/modules/welcome/activity/LoginActivity.java b/app/src/main/java/com/bonait/bnframework/modules/welcome/activity/LoginActivity.java
index a59a9599..6ac3b7a9 100644
--- a/app/src/main/java/com/bonait/bnframework/modules/welcome/activity/LoginActivity.java
+++ b/app/src/main/java/com/bonait/bnframework/modules/welcome/activity/LoginActivity.java
@@ -348,17 +348,17 @@ public class LoginActivity extends BaseActivity implements Validator.ValidationL
QMUIStatusBarHelper.setStatusBarDarkMode(LoginActivity.this);
- if(ConfigName.getInstance().user.name.equals("admin") || ConfigName.getInstance().user.account.equals("admin") || ConfigName.getInstance().user.userID.equals("超级管理员"))
- {
- Intent intent = new Intent(LoginActivity.this, BottomNavigation2Activity.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- startActivity(intent);
- }else
- {
+// if(ConfigName.getInstance().user.name.equals("admin") || ConfigName.getInstance().user.account.equals("admin") || ConfigName.getInstance().user.userID.equals("超级管理员"))
+// {
+// Intent intent = new Intent(LoginActivity.this, BottomNavigation2Activity.class);
+// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+// startActivity(intent);
+// }else
+// {
Intent intent = new Intent(LoginActivity.this, BottomNavigationNewActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
- }
+// }
ToastUtils.info("登录成功!");
// 结束所有Activity
ActivityLifecycleManager.get().finishAllActivity();
diff --git a/app/src/main/res/drawable-xxhdpi/ylg.png b/app/src/main/res/drawable-xxhdpi/ylg.png
new file mode 100644
index 0000000000000000000000000000000000000000..c42155f702a55efe795147d553d0246dea13231a
GIT binary patch
literal 715987
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