@@ -4,10 +4,10 @@ | |||||
<selectionStates> | <selectionStates> | ||||
<SelectionState runConfigName="app"> | <SelectionState runConfigName="app"> | ||||
<option name="selectionMode" value="DROPDOWN" /> | <option name="selectionMode" value="DROPDOWN" /> | ||||
<DropdownSelection timestamp="2024-06-04T09:46:39.139475300Z"> | |||||
<DropdownSelection timestamp="2024-06-11T02:32:44.238613300Z"> | |||||
<Target type="DEFAULT_BOOT"> | <Target type="DEFAULT_BOOT"> | ||||
<handle> | <handle> | ||||
<DeviceId pluginId="Default" identifier="serial=127.0.0.1:7555;connection=14007664" /> | |||||
<DeviceId pluginId="Default" identifier="serial=10.24.61.102:5555;connection=0070276e" /> | |||||
</handle> | </handle> | ||||
</Target> | </Target> | ||||
</DropdownSelection> | </DropdownSelection> | ||||
@@ -76,6 +76,11 @@ | |||||
android:screenOrientation="portrait" | android:screenOrientation="portrait" | ||||
android:launchMode="singleTask" | android:launchMode="singleTask" | ||||
android:exported="false" /> | android:exported="false" /> | ||||
<activity | |||||
android:name=".ui.activity.DeviceRecordActivity" | |||||
android:screenOrientation="portrait" | |||||
android:launchMode="singleTask" | |||||
android:exported="true" /> | |||||
<activity | <activity | ||||
android:name=".ui.activity.ErrorInfoActivity" | android:name=".ui.activity.ErrorInfoActivity" | ||||
android:screenOrientation="portrait" | android:screenOrientation="portrait" | ||||
@@ -388,7 +388,7 @@ public class ModbusMaster implements IRead,IWrite ,IModbusMaster{ | |||||
if(address==null||address.isEmpty()){ return OperateResultT.CreateFailedT("无效的地址");} | if(address==null||address.isEmpty()){ return OperateResultT.CreateFailedT("无效的地址");} | ||||
if(!getConnected()){ return OperateResultT.CreateFailedT("设备未连接");} | if(!getConnected()){ return OperateResultT.CreateFailedT("设备未连接");} | ||||
AtomicReference<OperateResultT<Integer>>resultValue=new AtomicReference<>(); | AtomicReference<OperateResultT<Integer>>resultValue=new AtomicReference<>(); | ||||
ReadInt(address,1).OnSource((s)->{ | |||||
ReadInt(address,2).OnSource((s)->{ | |||||
resultValue.set(OperateResultT.CreateSuccess(s.Content[0])); | resultValue.set(OperateResultT.CreateSuccess(s.Content[0])); | ||||
}).OnFailed(s->{ | }).OnFailed(s->{ | ||||
resultValue.set(OperateResultT.CreateFailedT(s.message)); | resultValue.set(OperateResultT.CreateFailedT(s.message)); | ||||
@@ -0,0 +1,32 @@ | |||||
package com.bonait.bnframework.Model; | |||||
/** | |||||
* @author: liup | |||||
* @description: | |||||
* @date: 2024/6/11 11:24. | |||||
*/ | |||||
public class DeviceRecordBean { | |||||
private String name; | |||||
private String value; | |||||
public DeviceRecordBean(String name, String value){ | |||||
this.name = name; | |||||
this.value = value; | |||||
} | |||||
public String getName() { | |||||
return name; | |||||
} | |||||
public void setName(String name) { | |||||
this.name = name; | |||||
} | |||||
public String getValue() { | |||||
return value; | |||||
} | |||||
public void setValue(String value) { | |||||
this.value = value; | |||||
} | |||||
} |
@@ -51,6 +51,20 @@ public enum ControlAdress { | |||||
下降超时报警,//M105 | 下降超时报警,//M105 | ||||
升降传感器异常,//M106 | 升降传感器异常,//M106 | ||||
搅拌传感器异常,//M107 | 搅拌传感器异常,//M107 | ||||
//统计使用时间和次数 | |||||
上升次数,//D1050 | |||||
下降次数,//D1052 | |||||
投料1次数,//D1054 | |||||
投料2次数,//D1056 | |||||
投料3次数,//D1058 | |||||
投料4次数,//D1060 | |||||
投料5次数,//D1062 | |||||
投料6次数,//D1064 | |||||
加热时间,//D1066 | |||||
搅拌时间,//D1068 | |||||
// | // | ||||
// 搅拌检测,//X2 | // 搅拌检测,//X2 | ||||
// 升降检测上限位,//X1 | // 升降检测上限位,//X1 | ||||
@@ -4,9 +4,6 @@ import com.apkfuns.logutils.LogUtils; | |||||
import com.bonait.bnframework.HBL.Communication.Modbus.ModbusMaster; | import com.bonait.bnframework.HBL.Communication.Modbus.ModbusMaster; | ||||
import com.bonait.bnframework.HBL.DataUtil.DataConvertLib; | import com.bonait.bnframework.HBL.DataUtil.DataConvertLib; | ||||
import com.bonait.bnframework.HBL.DataUtil.DataType; | import com.bonait.bnframework.HBL.DataUtil.DataType; | ||||
import com.bonait.bnframework.HBL.DataUtil.NotifyPropVar; | |||||
import com.bonait.bnframework.HBL.Executor; | |||||
import com.bonait.bnframework.HBL.Interface.IRunT; | |||||
import com.bonait.bnframework.HBL.Logs.MessageLog; | import com.bonait.bnframework.HBL.Logs.MessageLog; | ||||
import com.bonait.bnframework.HBL.Result.OperateResultT; | import com.bonait.bnframework.HBL.Result.OperateResultT; | ||||
import com.bonait.bnframework.HBL.Thread.ThreadManager; | import com.bonait.bnframework.HBL.Thread.ThreadManager; | ||||
@@ -91,6 +88,17 @@ public class ModbusHelper extends ModbusMaster { | |||||
put(ControlAdress.下降超时报警,new PLCModel("M105",DataType.BOOLEAN,OperationModel.W)); | put(ControlAdress.下降超时报警,new PLCModel("M105",DataType.BOOLEAN,OperationModel.W)); | ||||
put(ControlAdress.升降传感器异常,new PLCModel("M106",DataType.BOOLEAN,OperationModel.W)); | put(ControlAdress.升降传感器异常,new PLCModel("M106",DataType.BOOLEAN,OperationModel.W)); | ||||
put(ControlAdress.搅拌传感器异常,new PLCModel("M107",DataType.BOOLEAN,OperationModel.W)); | put(ControlAdress.搅拌传感器异常,new PLCModel("M107",DataType.BOOLEAN,OperationModel.W)); | ||||
//统计使用时间和次数 | |||||
put(ControlAdress.上升次数,new PLCModel("D1050",DataType.SHORT,OperationModel.R)); | |||||
put(ControlAdress.下降次数,new PLCModel("D1052",DataType.SHORT,OperationModel.R)); | |||||
put(ControlAdress.投料1次数,new PLCModel("D1054",DataType.SHORT,OperationModel.R)); | |||||
put(ControlAdress.投料2次数,new PLCModel("D1056",DataType.SHORT,OperationModel.R)); | |||||
put(ControlAdress.投料3次数,new PLCModel("D1058",DataType.SHORT,OperationModel.R)); | |||||
put(ControlAdress.投料4次数,new PLCModel("D1060",DataType.SHORT,OperationModel.R)); | |||||
put(ControlAdress.投料5次数,new PLCModel("D1062",DataType.SHORT,OperationModel.R)); | |||||
put(ControlAdress.投料6次数,new PLCModel("D1064",DataType.SHORT,OperationModel.R)); | |||||
put(ControlAdress.加热时间,new PLCModel("D1066",DataType.SHORT,OperationModel.R)); | |||||
put(ControlAdress.搅拌时间,new PLCModel("D1068",DataType.SHORT,OperationModel.R)); | |||||
}}; | }}; | ||||
private ConcurrentHashMap<String, BPA_SILOS_CALIBRATE> calibrationParMap=new ConcurrentHashMap<>(); | private ConcurrentHashMap<String, BPA_SILOS_CALIBRATE> calibrationParMap=new ConcurrentHashMap<>(); | ||||
@@ -401,7 +409,7 @@ public class ModbusHelper extends ModbusMaster { | |||||
/** | /** | ||||
* 搅拌电机控制 | * 搅拌电机控制 | ||||
* @param status 1 正转启动 2停止 | |||||
* @param status 1 启动 2停止 | |||||
*/ | */ | ||||
public void setStirMotor(int position,int status){ | public void setStirMotor(int position,int status){ | ||||
if(status == 2){ | if(status == 2){ | ||||
@@ -456,62 +464,11 @@ public class ModbusHelper extends ModbusMaster { | |||||
} | } | ||||
} | } | ||||
public NotifyPropVar<Boolean> IsRunning=new NotifyPropVar<Boolean>(false); | |||||
public int CurrentTime=0; | |||||
public void RtuInit(String comName,int baudRate){ | public void RtuInit(String comName,int baudRate){ | ||||
new Thread(()->{ RtuConnect(comName,baudRate).OnSource(()->{ GetLooperStatus();});}).start(); | new Thread(()->{ RtuConnect(comName,baudRate).OnSource(()->{ GetLooperStatus();});}).start(); | ||||
} | } | ||||
/** | |||||
* 设置变量监听通知 | |||||
* @param func | |||||
* @param action | |||||
* @param <T> | |||||
*/ | |||||
public <T> void setPLCNotify(ControlAdress func,String key, IRunT<T> action){ | |||||
// if(controlAddress.containsKey(func)){ | |||||
// controlAddress.get(func).Value.Register(key,action); | |||||
// } | |||||
} | |||||
/** | |||||
* 写布尔信号 | |||||
* @param func | |||||
* @param value | |||||
*/ | |||||
public void WriteBoolSingle(ControlAdress func, boolean value){ | |||||
// if(controlAddress.containsKey(func)){ | |||||
// Executor.get().runThread(()->{ | |||||
// WriteBool(controlAddress.get(func).PlcAddress,value).OnSource(()->{ | |||||
// MessageLog.ShowInfo("写入 "+controlAddress.get(func).PlcAddress+":"+value); | |||||
// }); | |||||
// }); | |||||
// } | |||||
} | |||||
/** | |||||
* 写脉冲信号 | |||||
* @param func | |||||
*/ | |||||
public void PulseSignal(ControlAdress func){ | |||||
// if(controlAddress.containsKey(func)){ | |||||
// Executor.get().runThread(()->{ | |||||
// WriteBool(controlAddress.get(func).PlcAddress,true); | |||||
// Sleep(1000); | |||||
// WriteBool(controlAddress.get(func).PlcAddress,false); | |||||
// }); | |||||
// } | |||||
} | |||||
public <T> void WriteAsync(String address,T value) { | |||||
Executor.get().runThread(()->{ | |||||
Write(address,value); | |||||
}); | |||||
} | |||||
public void reset(){ | public void reset(){ | ||||
try { | try { | ||||
NewToastUtil.getInstance().showToast("正在复位"); | NewToastUtil.getInstance().showToast("正在复位"); | ||||
@@ -524,7 +481,7 @@ public class ModbusHelper extends ModbusMaster { | |||||
break; | break; | ||||
} | } | ||||
stirStop = ConfigName.TEST?false:setStirStop(); | stirStop = ConfigName.TEST?false:setStirStop(); | ||||
Thread.sleep(10); | |||||
Thread.sleep(50); | |||||
} | } | ||||
Thread.sleep(100); | Thread.sleep(100); | ||||
setUpdDownMotor(1); | setUpdDownMotor(1); | ||||
@@ -535,7 +492,7 @@ public class ModbusHelper extends ModbusMaster { | |||||
break; | break; | ||||
} | } | ||||
upStop = ConfigName.TEST?false: ModbusHelper.get().readUpdDownStop(1); | upStop = ConfigName.TEST?false: ModbusHelper.get().readUpdDownStop(1); | ||||
Thread.sleep(10); | |||||
Thread.sleep(50); | |||||
} | } | ||||
setCookStatus(false); | setCookStatus(false); | ||||
NewToastUtil.getInstance().showToast("完成复位"); | NewToastUtil.getInstance().showToast("完成复位"); | ||||
@@ -654,10 +611,10 @@ public class ModbusHelper extends ModbusMaster { | |||||
PLCModel<short[]> statusModel = controlAddress.get(ControlAdress.状态读取); | PLCModel<short[]> statusModel = controlAddress.get(ControlAdress.状态读取); | ||||
WriteBool(getPLC(ControlAdress.状态读取启动).PlcAddress,true); | WriteBool(getPLC(ControlAdress.状态读取启动).PlcAddress,true); | ||||
OperateResultT<short[]> res = ReadShort(statusModel.PlcAddress,1); | |||||
if(res.isSuccess){ | |||||
OperateResultT<short[]> deviceStatusRes = ReadShort(statusModel.PlcAddress,1); | |||||
if(deviceStatusRes.isSuccess){ | |||||
// statusModel.Value.setValue(res.Content); | // statusModel.Value.setValue(res.Content); | ||||
byte[] bytes = DataConvertLib.shorts2Bytes(res.Content); | |||||
byte[] bytes = DataConvertLib.shorts2Bytes(deviceStatusRes.Content); | |||||
if(bytes.length>=2){ | if(bytes.length>=2){ | ||||
deviceErrorCode = bytes[0] & 0xFF; | deviceErrorCode = bytes[0] & 0xFF; | ||||
} | } | ||||
@@ -669,10 +626,20 @@ public class ModbusHelper extends ModbusMaster { | |||||
if(isBtnStop||upError||upDownError||downError||stirError){ | if(isBtnStop||upError||upDownError||downError||stirError){ | ||||
NewExecuteTheRecipe.IsStart =false; | NewExecuteTheRecipe.IsStart =false; | ||||
} | } | ||||
Thread.sleep(ConfigName.TEST?500:200); | Thread.sleep(ConfigName.TEST?500:200); | ||||
}); | }); | ||||
} | } | ||||
public int deal2ShortDataToInt(short short1,short short2){ | |||||
LogUtils.d(" deal2ShortDataToString short1="+short1+" ;short2="+short2); | |||||
// 将两个short组合成一个int | |||||
int result = (short1 & 0xFFFF) << 16 | (short2 & 0xFFFF); | |||||
LogUtils.d(" deal2ShortDataToString result="+result+" Integer.toHexString(combinedInt)="+Integer.toHexString(result)); | |||||
return result; | |||||
} | |||||
private int deviceErrorCode = 0; | private int deviceErrorCode = 0; | ||||
public int getDeviceErrorCode() { | public int getDeviceErrorCode() { | ||||
@@ -13,7 +13,6 @@ import androidx.viewpager.widget.ViewPager; | |||||
import com.apkfuns.logutils.LogUtils; | import com.apkfuns.logutils.LogUtils; | ||||
import com.bonait.bnframework.HBL.Logs.MessageLog; | import com.bonait.bnframework.HBL.Logs.MessageLog; | ||||
import com.bonait.bnframework.HBL.Thread.IThread; | |||||
import com.bonait.bnframework.HBL.Thread.ThreadManager; | import com.bonait.bnframework.HBL.Thread.ThreadManager; | ||||
import com.bonait.bnframework.R; | import com.bonait.bnframework.R; | ||||
import com.bonait.bnframework.Service.ModbusHelper; | import com.bonait.bnframework.Service.ModbusHelper; | ||||
@@ -265,36 +264,36 @@ public class BottomNavigationNewActivity extends BaseActivity { | |||||
public void ReconnectModbus() { | public void ReconnectModbus() { | ||||
try { | try { | ||||
ThreadManager.get().StartLong("PLC断线重连线程", true, new IThread() { | |||||
@Override | |||||
public void Run() throws InterruptedException { | |||||
// try { | |||||
// if (ConfigName.getInstance().PlcIsConnect) { | |||||
// //ping 不通 | |||||
// boolean status = ModbusTcpServer.ping2(ConfigName.getInstance().Address, 1, 1); | |||||
// if (!status) //ping 不通 连接 | |||||
// { | |||||
// MessageLog.ShowInfo("PLC状态断开,尝试连接..."); | |||||
// ConfigName.getInstance().PlcIsConnect = false; | |||||
// } | |||||
// } else { | |||||
// boolean status = ModbusTcpServer.ping2(ConfigName.getInstance().Address, 1, 1); | |||||
// if (status) { | |||||
// MessageLog.ShowInfo("设备 " + ConfigName.getInstance().Address + " PLC通讯正常,准备连接!"); | |||||
// ModbusTcpServer.ConnectPLC(); | |||||
// } else { | |||||
// MessageLog.ShowInfo("PLC状态断开,尝试连接..."); | |||||
// ConfigName.getInstance().PlcIsConnect = false; | |||||
// } | |||||
// } | |||||
// Thread.sleep(10000); | |||||
// } catch (Exception e) { | |||||
// Log.i("PLC", "PLC重连接失败!" + e.getMessage()); | |||||
// } | |||||
} | |||||
}); | |||||
// ThreadManager.get().StartLong("PLC断线重连线程", true, new IThread() { | |||||
// @Override | |||||
// public void Run() throws InterruptedException { | |||||
//// try { | |||||
//// if (ConfigName.getInstance().PlcIsConnect) { | |||||
//// //ping 不通 | |||||
//// boolean status = ModbusTcpServer.ping2(ConfigName.getInstance().Address, 1, 1); | |||||
//// if (!status) //ping 不通 连接 | |||||
//// { | |||||
//// MessageLog.ShowInfo("PLC状态断开,尝试连接..."); | |||||
//// ConfigName.getInstance().PlcIsConnect = false; | |||||
//// } | |||||
//// } else { | |||||
//// boolean status = ModbusTcpServer.ping2(ConfigName.getInstance().Address, 1, 1); | |||||
//// if (status) { | |||||
//// MessageLog.ShowInfo("设备 " + ConfigName.getInstance().Address + " PLC通讯正常,准备连接!"); | |||||
//// ModbusTcpServer.ConnectPLC(); | |||||
//// } else { | |||||
//// MessageLog.ShowInfo("PLC状态断开,尝试连接..."); | |||||
//// ConfigName.getInstance().PlcIsConnect = false; | |||||
//// } | |||||
//// } | |||||
//// Thread.sleep(10000); | |||||
//// } catch (Exception e) { | |||||
//// Log.i("PLC", "PLC重连接失败!" + e.getMessage()); | |||||
//// } | |||||
// } | |||||
// | |||||
// | |||||
// }); | |||||
} catch (Exception e) { | } catch (Exception e) { | ||||
MessageLog.ShowInfo("重新连接Modbus异常," + e.getMessage()); | MessageLog.ShowInfo("重新连接Modbus异常," + e.getMessage()); | ||||
} | } | ||||
@@ -12,8 +12,6 @@ import androidx.annotation.NonNull; | |||||
import com.apkfuns.logutils.LogUtils; | import com.apkfuns.logutils.LogUtils; | ||||
import com.bonait.bnframework.HBL.Interface.IRun; | import com.bonait.bnframework.HBL.Interface.IRun; | ||||
import com.bonait.bnframework.HBL.Interface.IRunT; | import com.bonait.bnframework.HBL.Interface.IRunT; | ||||
import com.bonait.bnframework.HBL.Thread.IThread; | |||||
import com.bonait.bnframework.HBL.Thread.ThreadManager; | |||||
import com.bonait.bnframework.Service.ModbusHelper; | import com.bonait.bnframework.Service.ModbusHelper; | ||||
import com.bonait.bnframework.ViewModel.CustomView.MyStatus; | import com.bonait.bnframework.ViewModel.CustomView.MyStatus; | ||||
import com.bonait.bnframework.common.constant.ConfigName; | import com.bonait.bnframework.common.constant.ConfigName; | ||||
@@ -427,6 +425,7 @@ public class ExecuteTheRecipe { | |||||
break; | break; | ||||
} | } | ||||
isStop = ConfigName.TEST?false:ModbusHelper.get().setStirStop(); | isStop = ConfigName.TEST?false:ModbusHelper.get().setStirStop(); | ||||
Thread.sleep(50); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -485,7 +484,9 @@ public class ExecuteTheRecipe { | |||||
break; | break; | ||||
} | } | ||||
isStop = ConfigName.TEST?false:ModbusHelper.get().setStirStop(); | isStop = ConfigName.TEST?false:ModbusHelper.get().setStirStop(); | ||||
Thread.sleep(50); | |||||
} | } | ||||
Thread.sleep(100); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -987,7 +988,9 @@ public class ExecuteTheRecipe { | |||||
break; | break; | ||||
} | } | ||||
isStop = ConfigName.TEST?false: ModbusHelper.get().setStirStop(); | isStop = ConfigName.TEST?false: ModbusHelper.get().setStirStop(); | ||||
Thread.sleep(50); | |||||
} | } | ||||
Thread.sleep(100); | |||||
ModbusHelper.get().setUpdDownMotor(1); | ModbusHelper.get().setUpdDownMotor(1); | ||||
ModbusHelper.get().setCookStatus(false); | ModbusHelper.get().setCookStatus(false); | ||||
ToastUtils.info("出菜完成,结束制作!"); | ToastUtils.info("出菜完成,结束制作!"); | ||||
@@ -1201,32 +1204,32 @@ public class ExecuteTheRecipe { | |||||
} | } | ||||
ThreadManager.get().StartLong("PLC设备数据监听", true, new IThread() { | |||||
@Override | |||||
public void Run() throws InterruptedException { | |||||
try { | |||||
for (String item : ConfigName.getInstance().PLC_Address.keySet()) { | |||||
String key = item; | |||||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(item); | |||||
if (plcaddress.isread == 1) { | |||||
Object val = ReadPLC(key); | |||||
ListeningValue.put(key, val); | |||||
} | |||||
} | |||||
if (ConfigName.getInstance().PlcIsConnect) { | |||||
TempControl(); | |||||
ReadPLCStatus(); | |||||
} | |||||
} catch (Exception ex) { | |||||
LogUtils.d("异常信息:" + ex.getMessage()); | |||||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||||
} | |||||
Thread.sleep(50); | |||||
} | |||||
}); | |||||
// ThreadManager.get().StartLong("PLC设备数据监听", true, new IThread() { | |||||
// @Override | |||||
// public void Run() throws InterruptedException { | |||||
// try { | |||||
// for (String item : ConfigName.getInstance().PLC_Address.keySet()) { | |||||
// String key = item; | |||||
// BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(item); | |||||
// if (plcaddress.isread == 1) { | |||||
// Object val = ReadPLC(key); | |||||
// ListeningValue.put(key, val); | |||||
// } | |||||
// } | |||||
// | |||||
// if (ConfigName.getInstance().PlcIsConnect) { | |||||
// TempControl(); | |||||
// | |||||
// ReadPLCStatus(); | |||||
// } | |||||
// | |||||
// } catch (Exception ex) { | |||||
// LogUtils.d("异常信息:" + ex.getMessage()); | |||||
// ToastUtils.error("异常信息:" + ex.getMessage()); | |||||
// } | |||||
// Thread.sleep(50); | |||||
// } | |||||
// }); | |||||
} | } | ||||
//endregion | //endregion | ||||
@@ -341,9 +341,9 @@ public class NewExecuteTheRecipe { | |||||
break; | break; | ||||
} | } | ||||
isStop = ConfigName.TEST?false:ModbusHelper.get().setStirStop(); | isStop = ConfigName.TEST?false:ModbusHelper.get().setStirStop(); | ||||
Thread.sleep(10); | |||||
Thread.sleep(50); | |||||
} | } | ||||
Thread.sleep(50); | |||||
Thread.sleep(100); | |||||
if(isTest && IsStart){ | if(isTest && IsStart){ | ||||
Thread.sleep(1000); | Thread.sleep(1000); | ||||
} | } | ||||
@@ -421,7 +421,7 @@ public class NewExecuteTheRecipe { | |||||
break; | break; | ||||
} | } | ||||
isStop = ConfigName.TEST?false:ModbusHelper.get().setStirStop(); | isStop = ConfigName.TEST?false:ModbusHelper.get().setStirStop(); | ||||
Thread.sleep(10); | |||||
Thread.sleep(50); | |||||
} | } | ||||
Thread.sleep(50); | Thread.sleep(50); | ||||
if(IsStart && isTest){ | if(IsStart && isTest){ | ||||
@@ -687,7 +687,7 @@ public class NewExecuteTheRecipe { | |||||
break; | break; | ||||
} | } | ||||
isStop = ConfigName.TEST?false: ModbusHelper.get().setStirStop(); | isStop = ConfigName.TEST?false: ModbusHelper.get().setStirStop(); | ||||
Thread.sleep(10); | |||||
Thread.sleep(50); | |||||
} | } | ||||
Thread.sleep(50); | Thread.sleep(50); | ||||
ModbusHelper.get().setUpdDownMotor(1); | ModbusHelper.get().setUpdDownMotor(1); | ||||
@@ -789,9 +789,9 @@ public class NewExecuteTheRecipe { | |||||
break; | break; | ||||
} | } | ||||
stirStop = ConfigName.TEST?false:ModbusHelper.get().setStirStop(); | stirStop = ConfigName.TEST?false:ModbusHelper.get().setStirStop(); | ||||
Thread.sleep(10); | |||||
Thread.sleep(50); | |||||
} | } | ||||
Thread.sleep(50); | |||||
Thread.sleep(100); | |||||
EventBus.getDefault().post(new ProcessMakingEvent(4,"停止搅拌")); | EventBus.getDefault().post(new ProcessMakingEvent(4,"停止搅拌")); | ||||
boolean isStop = true; | boolean isStop = true; | ||||
long lastTime = System.currentTimeMillis(); | long lastTime = System.currentTimeMillis(); | ||||
@@ -800,8 +800,9 @@ public class NewExecuteTheRecipe { | |||||
break; | break; | ||||
} | } | ||||
isStop = ConfigName.TEST?false: ModbusHelper.get().readUpdDownStop(1); | isStop = ConfigName.TEST?false: ModbusHelper.get().readUpdDownStop(1); | ||||
Thread.sleep(10); | |||||
Thread.sleep(50); | |||||
} | } | ||||
Thread.sleep(50); | |||||
if(IsStart && isTest){ | if(IsStart && isTest){ | ||||
for(int i = 0;i<8 ;i++){ | for(int i = 0;i<8 ;i++){ | ||||
if(!IsStart){ | if(!IsStart){ | ||||
@@ -823,8 +824,9 @@ public class NewExecuteTheRecipe { | |||||
break; | break; | ||||
} | } | ||||
isStop = ConfigName.TEST?false: ModbusHelper.get().readUpdDownStop(2); | isStop = ConfigName.TEST?false: ModbusHelper.get().readUpdDownStop(2); | ||||
Thread.sleep(10); | |||||
Thread.sleep(50); | |||||
} | } | ||||
Thread.sleep(50); | |||||
if(IsStart && isTest){ | if(IsStart && isTest){ | ||||
for(int i = 0;i<8 ;i++){ | for(int i = 0;i<8 ;i++){ | ||||
if(!IsStart){ | if(!IsStart){ | ||||
@@ -27,7 +27,9 @@ import java.util.concurrent.ConcurrentHashMap; | |||||
*/ | */ | ||||
public class ConfigName { | public class ConfigName { | ||||
//是否是测试模式 | //是否是测试模式 | ||||
public final static boolean TEST = true; | |||||
public final static boolean TEST = false; | |||||
//崩溃重启 | |||||
public final static boolean ERROR_ROOT = false; | |||||
//日志打印 | //日志打印 | ||||
public final static boolean LOG_TEST = false; | public final static boolean LOG_TEST = false; | ||||
//region 单例模式 | //region 单例模式 | ||||
@@ -2,7 +2,6 @@ package com.bonait.bnframework.common.helper; | |||||
import android.annotation.SuppressLint; | import android.annotation.SuppressLint; | ||||
import android.content.Context; | import android.content.Context; | ||||
import android.content.Intent; | |||||
import android.content.pm.PackageInfo; | import android.content.pm.PackageInfo; | ||||
import android.content.pm.PackageManager; | import android.content.pm.PackageManager; | ||||
import android.content.pm.PackageManager.NameNotFoundException; | import android.content.pm.PackageManager.NameNotFoundException; | ||||
@@ -14,7 +13,8 @@ import android.util.Log; | |||||
import android.widget.Toast; | import android.widget.Toast; | ||||
import com.apkfuns.logutils.LogUtils; | import com.apkfuns.logutils.LogUtils; | ||||
import com.bonait.bnframework.common.constant.ConfigName; | |||||
import com.bonait.bnframework.HBL.Thread.ThreadManager; | |||||
import com.bonait.bnframework.business.RecordManager; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileOutputStream; | import java.io.FileOutputStream; | ||||
@@ -88,7 +88,9 @@ public class CrashHandler implements UncaughtExceptionHandler { | |||||
* @return true:��������˸��쳣��Ϣ; ����false. | * @return true:��������˸��쳣��Ϣ; ����false. | ||||
*/ | */ | ||||
private boolean handleException(Throwable ex) { | private boolean handleException(Throwable ex) { | ||||
if(ConfigName.TEST) return false; | |||||
ThreadManager.get().Stop("Modbus变量状态"); | |||||
ThreadManager.get().Stop("日志信息保存"); | |||||
// if(!ConfigName.ERROR_ROOT) return false; | |||||
if (ex == null) | if (ex == null) | ||||
return false; | return false; | ||||
@@ -103,18 +105,19 @@ public class CrashHandler implements UncaughtExceptionHandler { | |||||
Looper.loop(); | Looper.loop(); | ||||
} | } | ||||
}.start(); | }.start(); | ||||
RecordManager.getInstance().addLogRecord("设备异常日志"," 设备崩溃了"); | |||||
collectDeviceInfo(mContext); | collectDeviceInfo(mContext); | ||||
saveCrashInfoFile(ex); | saveCrashInfoFile(ex); | ||||
Intent intent = mContext.getPackageManager().getLaunchIntentForPackage(mContext.getPackageName()); | |||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); | |||||
mContext.startActivity(intent); | |||||
SystemClock.sleep(3000); | |||||
// Intent intent = mContext.getPackageManager().getLaunchIntentForPackage(mContext.getPackageName()); | |||||
// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); | |||||
// mContext.startActivity(intent); | |||||
// SystemClock.sleep(3000); | |||||
} catch (Exception e) { | } catch (Exception e) { | ||||
e.printStackTrace(); | e.printStackTrace(); | ||||
} | } | ||||
return true; | |||||
return false; | |||||
// return true; | |||||
} | } | ||||
/** | /** | ||||
@@ -2,11 +2,11 @@ package com.bonait.bnframework.common.utils; | |||||
import android.util.Log; | import android.util.Log; | ||||
import com.apkfuns.logutils.LogUtils; | |||||
import com.bonait.bnframework.HBL.Thread.ThreadManager; | import com.bonait.bnframework.HBL.Thread.ThreadManager; | ||||
import java.io.DataOutputStream; | import java.io.DataOutputStream; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.nio.charset.StandardCharsets; | |||||
/** | /** | ||||
* @author: liup | * @author: liup | ||||
@@ -28,13 +28,17 @@ public class AdbCommandUtil { | |||||
process = Runtime.getRuntime().exec("su"); | process = Runtime.getRuntime().exec("su"); | ||||
dataOutputStream = new DataOutputStream(process.getOutputStream()); | dataOutputStream = new DataOutputStream(process.getOutputStream()); | ||||
// 执行命令 | // 执行命令 | ||||
String command = hide?"am broadcast -a action.HIDE_STATUSBAR":"am broadcast -a action.SHOW_STATUSBAR"; | |||||
dataOutputStream.write(command.getBytes(StandardCharsets.UTF_8)); | |||||
// process = Runtime.getRuntime().exec("system/bin/su"); | |||||
// String command = hide?"am broadcast -a action.HIDE_STATUSBAR\n":"am broadcast -a action.SHOW_STATUSBAR\n"; | |||||
String command = "am broadcast -a action.SHOW_STATUSBAR\n"; | |||||
LogUtils.d("hideStatusBar command="+command); | |||||
dataOutputStream.write(command.getBytes()); | |||||
dataOutputStream.flush(); | dataOutputStream.flush(); | ||||
dataOutputStream.writeBytes("exit\n"); | dataOutputStream.writeBytes("exit\n"); | ||||
dataOutputStream.flush(); | dataOutputStream.flush(); | ||||
process.waitFor(); | process.waitFor(); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
e.printStackTrace(); | |||||
Log.e("hideStatusBar", e.getMessage(), e); | Log.e("hideStatusBar", e.getMessage(), e); | ||||
} finally { | } finally { | ||||
try { | try { | ||||
@@ -232,20 +232,20 @@ public class CookingActivity extends BaseActivity { | |||||
private void startMakingThread(){ | private void startMakingThread(){ | ||||
ThreadManager.get().execute(new Thread(()->{ | ThreadManager.get().execute(new Thread(()->{ | ||||
if (NewExecuteTheRecipe.IsStart && goodsSubattributeGroup != null) { | if (NewExecuteTheRecipe.IsStart && goodsSubattributeGroup != null) { | ||||
ModbusHelper.get().reset(); | |||||
if(!isTest){ | |||||
ModbusHelper.get().reset(); | |||||
} | |||||
long startTime= System.currentTimeMillis(); //起始时间 | long startTime= System.currentTimeMillis(); //起始时间 | ||||
boolean hasError = false;//设备有异常报警 | boolean hasError = false;//设备有异常报警 | ||||
boolean isError = false;//执行异常 | boolean isError = false;//执行异常 | ||||
try { | try { | ||||
RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-开始制作"); | RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-开始制作"); | ||||
//获取工艺 | |||||
ArrayList<BPA_GOODS_PROCESS_DETAIL> goodsrecipes = GoodsProcessDetailDBUtil.getByGroupId(goodsSubattributeGroup.id); | |||||
LogUtils.d("制作线程 MakeThread 启动 ==》 菜品配方 goodsrecipes="+goodsrecipes.toString()); | |||||
LogUtils.d("制作线程 MakeThread 启动 ==》 菜品配方 goodsrecipes="+stepList.toString()); | |||||
int position = 0; | int position = 0; | ||||
if(!isTest){ | if(!isTest){ | ||||
ModbusHelper.get().setCookStatus(true); | ModbusHelper.get().setCookStatus(true); | ||||
} | } | ||||
for (BPA_GOODS_PROCESS_DETAIL item : goodsrecipes) { | |||||
for (BPA_GOODS_PROCESS_DETAIL item : stepList) { | |||||
if( !NewExecuteTheRecipe.IsStart){ | if( !NewExecuteTheRecipe.IsStart){ | ||||
NewToastUtil.getInstance().showToastBottom("客官,当前菜品已停止炒制!!!"); | NewToastUtil.getInstance().showToastBottom("客官,当前菜品已停止炒制!!!"); | ||||
break; | break; | ||||
@@ -253,11 +253,13 @@ public class CookingActivity extends BaseActivity { | |||||
if(!isTest){ | if(!isTest){ | ||||
if(ModbusHelper.get().isBtnStop()){ | if(ModbusHelper.get().isBtnStop()){ | ||||
NewToastUtil.getInstance().showToastBottom("设备已急停,请关闭急停按钮再调试!"); | NewToastUtil.getInstance().showToastBottom("设备已急停,请关闭急停按钮再调试!"); | ||||
Thread.sleep(2000); | |||||
hasError = true; | hasError = true; | ||||
break; | break; | ||||
} | } | ||||
if(ModbusHelper.get().hasErrorInfo()){ | if(ModbusHelper.get().hasErrorInfo()){ | ||||
String tip = ModbusHelper.get().isBtnStop()?"设备已急停,请关闭急停按钮再调试!":"设备有报警,请前往设备故障页检查!"; | String tip = ModbusHelper.get().isBtnStop()?"设备已急停,请关闭急停按钮再调试!":"设备有报警,请前往设备故障页检查!"; | ||||
Thread.sleep(2000); | |||||
NewToastUtil.getInstance().showToastBottom(tip); | NewToastUtil.getInstance().showToastBottom(tip); | ||||
runOnUiThread(new Runnable() { | runOnUiThread(new Runnable() { | ||||
@Override | @Override | ||||
@@ -279,7 +281,7 @@ public class CookingActivity extends BaseActivity { | |||||
boolean status = NewExecuteTheRecipe.Execute(item); | boolean status = NewExecuteTheRecipe.Execute(item); | ||||
position++; | position++; | ||||
} | } | ||||
LogUtils.d("制作线程 MakeThread 结束 ==》 菜品配方 goodsrecipes="+goodsrecipes.toString()); | |||||
LogUtils.d("制作线程 MakeThread 结束 ==》 菜品配方 goodsrecipes="+stepList.toString()); | |||||
} catch (Exception ex) { | } catch (Exception ex) { | ||||
isError = true; | isError = true; | ||||
LogUtils.d("异常信息:" + ex.getMessage()); | LogUtils.d("异常信息:" + ex.getMessage()); | ||||
@@ -288,20 +290,35 @@ public class CookingActivity extends BaseActivity { | |||||
RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-制作异常"); | RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-制作异常"); | ||||
RecordManager.getInstance().addOrderRecord(goodsSubattributeGroup,"异常"); | RecordManager.getInstance().addOrderRecord(goodsSubattributeGroup,"异常"); | ||||
RecordManager.getInstance().addSubOrderRecord(goodsSubattributeGroup,"异常"); | RecordManager.getInstance().addSubOrderRecord(goodsSubattributeGroup,"异常"); | ||||
}else { | |||||
RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-模拟制作异常"); | |||||
RecordManager.getInstance().addOrderRecord(goodsSubattributeGroup,"异常"); | |||||
RecordManager.getInstance().addSubOrderRecord(goodsSubattributeGroup,"异常"); | |||||
} | } | ||||
} finally { | } finally { | ||||
isMaking = false; | isMaking = false; | ||||
if(!isError && !isTest){ | |||||
if(NewExecuteTheRecipe.IsForcedEnd){ | |||||
RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-制作强行停止"); | |||||
RecordManager.getInstance().addOrderRecord(goodsSubattributeGroup,"取消"); | |||||
RecordManager.getInstance().addSubOrderRecord(goodsSubattributeGroup,"取消"); | |||||
if(isTest){ | |||||
if(!isError){ | |||||
if(NewExecuteTheRecipe.IsForcedEnd){ | |||||
RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-制作强行停止"); | |||||
RecordManager.getInstance().addOrderRecord(goodsSubattributeGroup,"取消"); | |||||
RecordManager.getInstance().addSubOrderRecord(goodsSubattributeGroup,"取消"); | |||||
}else { | |||||
RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-制作完成"); | |||||
RecordManager.getInstance().addOrderRecord(goodsSubattributeGroup,"完成"); | |||||
RecordManager.getInstance().addSubOrderRecord(goodsSubattributeGroup,"完成"); | |||||
} | |||||
}else { | }else { | ||||
RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-制作完成"); | |||||
RecordManager.getInstance().addOrderRecord(goodsSubattributeGroup,"完成"); | |||||
RecordManager.getInstance().addSubOrderRecord(goodsSubattributeGroup,"完成"); | |||||
RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-制作异常"); | |||||
RecordManager.getInstance().addOrderRecord(goodsSubattributeGroup,"异常"); | |||||
RecordManager.getInstance().addSubOrderRecord(goodsSubattributeGroup,"异常"); | |||||
} | } | ||||
}else { | |||||
RecordManager.getInstance().addLogRecord("订单处理日志",goodsSubattributeGroup.name+"-模拟制作完成"); | |||||
RecordManager.getInstance().addOrderRecord(goodsSubattributeGroup,"完成"); | |||||
RecordManager.getInstance().addSubOrderRecord(goodsSubattributeGroup,"完成"); | |||||
} | } | ||||
if (!NewExecuteTheRecipe.IsForcedEnd && !ModbusHelper.get().hasErrorInfo() && NewExecuteTheRecipe.IsStart && !isTest){ | if (!NewExecuteTheRecipe.IsForcedEnd && !ModbusHelper.get().hasErrorInfo() && NewExecuteTheRecipe.IsStart && !isTest){ | ||||
long endTime = System.currentTimeMillis(); //结束时间 | long endTime = System.currentTimeMillis(); //结束时间 | ||||
int time=(int) ((endTime-startTime)/1000); | int time=(int) ((endTime-startTime)/1000); | ||||
@@ -311,7 +328,9 @@ public class CookingActivity extends BaseActivity { | |||||
} | } | ||||
NewExecuteTheRecipe.IsStart = false; | NewExecuteTheRecipe.IsStart = false; | ||||
ModbusHelper.get().reset(); | |||||
if(!isTest&&!hasError){ | |||||
ModbusHelper.get().reset(); | |||||
} | |||||
boolean finalIsError = hasError; | boolean finalIsError = hasError; | ||||
if(handler!=null){ | if(handler!=null){ | ||||
handler.post(new Runnable() { | handler.post(new Runnable() { | ||||
@@ -328,6 +347,8 @@ public class CookingActivity extends BaseActivity { | |||||
}else{ | }else{ | ||||
if(!finalIsError){ | if(!finalIsError){ | ||||
NewToastUtil.getInstance().showToastBottom("客官,当前菜品已制作完成!!!"); | NewToastUtil.getInstance().showToastBottom("客官,当前菜品已制作完成!!!"); | ||||
}else { | |||||
NewToastUtil.getInstance().showToastBottom("客官,设备有报警,请前往设备报警页查看!!!"); | |||||
} | } | ||||
} | } | ||||
if(progressDialog !=null){ | if(progressDialog !=null){ | ||||
@@ -0,0 +1,94 @@ | |||||
package com.bonait.bnframework.ui.activity; | |||||
import android.os.Bundle; | |||||
import android.os.Handler; | |||||
import android.os.Looper; | |||||
import android.os.Message; | |||||
import androidx.annotation.NonNull; | |||||
import com.apkfuns.logutils.LogUtils; | |||||
import com.bonait.bnframework.HBL.Result.OperateResultT; | |||||
import com.bonait.bnframework.HBL.Thread.ThreadManager; | |||||
import com.bonait.bnframework.Model.DeviceRecordBean; | |||||
import com.bonait.bnframework.Service.ControlAdress; | |||||
import com.bonait.bnframework.Service.ModbusHelper; | |||||
import com.bonait.bnframework.common.base.BaseActivity; | |||||
import com.bonait.bnframework.common.utils.DisplayManager; | |||||
import com.bonait.bnframework.databinding.ActivityDeviceRecordBinding; | |||||
import com.bonait.bnframework.ui.adapter.DeviceRecordAdapter; | |||||
import com.bonait.bnframework.ui.widget.NewToastUtil; | |||||
import java.util.ArrayList; | |||||
import java.util.List; | |||||
/** | |||||
* @author: liup | |||||
* @description: 统计使用时间和次数 | |||||
* @date: 2024/6/11 11:16. | |||||
*/ | |||||
public class DeviceRecordActivity extends BaseActivity { | |||||
private ActivityDeviceRecordBinding viewBinding; | |||||
private List<DeviceRecordBean> dataList = new ArrayList<>(); | |||||
private Handler handler = new Handler(Looper.getMainLooper()){ | |||||
@Override | |||||
public void handleMessage(@NonNull Message msg) { | |||||
super.handleMessage(msg); | |||||
initView(); | |||||
} | |||||
}; | |||||
@Override | |||||
protected void onCreate(Bundle savedInstanceState) { | |||||
super.onCreate(savedInstanceState); | |||||
viewBinding = ActivityDeviceRecordBinding.inflate(getLayoutInflater()); | |||||
setContentView(viewBinding.getRoot()); | |||||
DisplayManager.scaleViewGroup(viewBinding.getRoot()); | |||||
initTopBar(); | |||||
NewToastUtil.getInstance().showToast("正在刷新数据..."); | |||||
initData(); | |||||
} | |||||
private void initTopBar(){ | |||||
viewBinding.back.setOnClickListener(v->{ | |||||
finish(); | |||||
}); | |||||
} | |||||
private void initData(){ | |||||
dataList.clear(); | |||||
ThreadManager.get().execute(new Thread(()->{ | |||||
getData("上升次数",ControlAdress.上升次数); | |||||
getData("下降次数",ControlAdress.下降次数); | |||||
getData("投料1次数",ControlAdress.投料1次数); | |||||
getData("投料2次数",ControlAdress.投料2次数); | |||||
getData("投料3次数",ControlAdress.投料3次数); | |||||
getData("投料4次数",ControlAdress.投料4次数); | |||||
getData("投料5次数",ControlAdress.投料5次数); | |||||
getData("投料6次数",ControlAdress.投料6次数); | |||||
getData("加热时间(分钟)",ControlAdress.加热时间); | |||||
getData("搅拌时间(分钟)",ControlAdress.搅拌时间); | |||||
handler.sendEmptyMessage(0); | |||||
})); | |||||
} | |||||
private void getData(String name,ControlAdress controlAddress){ | |||||
try { | |||||
OperateResultT<Integer> upNumRes = ModbusHelper.get().ReadInt(ModbusHelper.get().getPLC(controlAddress).PlcAddress); | |||||
OperateResultT<int[]> upNumRes2 = ModbusHelper.get().ReadInt(ModbusHelper.get().getPLC(controlAddress).PlcAddress,2); | |||||
if(upNumRes.isSuccess){ | |||||
LogUtils.d("Combined int upNumRes= " + upNumRes.Content+" upNumRes2="+upNumRes2.Content); | |||||
dataList.add(new DeviceRecordBean(name,upNumRes.Content+"")); | |||||
} | |||||
}catch (Exception e){ | |||||
e.printStackTrace(); | |||||
} | |||||
} | |||||
private void initView(){ | |||||
DeviceRecordAdapter adapter = new DeviceRecordAdapter(); | |||||
adapter.setNewData(dataList); | |||||
viewBinding.recyclerView.setAdapter(adapter); | |||||
} | |||||
} |
@@ -5,19 +5,25 @@ import static com.bonait.bnframework.MainApplication.getContext; | |||||
import android.annotation.SuppressLint; | import android.annotation.SuppressLint; | ||||
import android.content.Intent; | import android.content.Intent; | ||||
import android.os.Bundle; | import android.os.Bundle; | ||||
import android.os.Handler; | |||||
import android.os.Looper; | |||||
import android.os.Message; | |||||
import android.view.MotionEvent; | import android.view.MotionEvent; | ||||
import android.view.View; | import android.view.View; | ||||
import android.widget.AdapterView; | import android.widget.AdapterView; | ||||
import android.widget.ArrayAdapter; | import android.widget.ArrayAdapter; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import androidx.core.content.ContextCompat; | import androidx.core.content.ContextCompat; | ||||
import com.apkfuns.logutils.LogUtils; | import com.apkfuns.logutils.LogUtils; | ||||
import com.bonait.bnframework.R; | import com.bonait.bnframework.R; | ||||
import com.bonait.bnframework.ViewModel.CustomView.XComDialog; | |||||
import com.bonait.bnframework.ViewModel.CustomView.item_gx; | import com.bonait.bnframework.ViewModel.CustomView.item_gx; | ||||
import com.bonait.bnframework.business.RecordManager; | import com.bonait.bnframework.business.RecordManager; | ||||
import com.bonait.bnframework.common.base.BaseActivity; | import com.bonait.bnframework.common.base.BaseActivity; | ||||
import com.bonait.bnframework.common.constant.ConfigName; | |||||
import com.bonait.bnframework.common.db.QueryDB; | import com.bonait.bnframework.common.db.QueryDB; | ||||
import com.bonait.bnframework.common.db.mode.BPA_GOODS; | import com.bonait.bnframework.common.db.mode.BPA_GOODS; | ||||
import com.bonait.bnframework.common.db.mode.BPA_GOODS_PROCESS_DETAIL; | import com.bonait.bnframework.common.db.mode.BPA_GOODS_PROCESS_DETAIL; | ||||
@@ -27,12 +33,15 @@ import com.bonait.bnframework.common.db.mode.BPA_PROCESSModel; | |||||
import com.bonait.bnframework.common.db.util.GoodsDBUtil; | import com.bonait.bnframework.common.db.util.GoodsDBUtil; | ||||
import com.bonait.bnframework.common.db.util.GoodsProcessDetailDBUtil; | import com.bonait.bnframework.common.db.util.GoodsProcessDetailDBUtil; | ||||
import com.bonait.bnframework.common.db.util.SubAttributeGroupDBUtil; | import com.bonait.bnframework.common.db.util.SubAttributeGroupDBUtil; | ||||
import com.bonait.bnframework.common.utils.AlertDialogUtils; | |||||
import com.bonait.bnframework.common.utils.CookTimeUtils; | import com.bonait.bnframework.common.utils.CookTimeUtils; | ||||
import com.bonait.bnframework.common.utils.DisplayManager; | import com.bonait.bnframework.common.utils.DisplayManager; | ||||
import com.bonait.bnframework.common.utils.ProcessValueUtil; | import com.bonait.bnframework.common.utils.ProcessValueUtil; | ||||
import com.bonait.bnframework.databinding.ActivityEditProcessBinding; | import com.bonait.bnframework.databinding.ActivityEditProcessBinding; | ||||
import com.bonait.bnframework.databinding.DialogWithCancelConfirmBinding; | |||||
import com.bonait.bnframework.ui.adapter.DiyStepAdapter; | import com.bonait.bnframework.ui.adapter.DiyStepAdapter; | ||||
import com.bonait.bnframework.ui.dialog.AttributeSelectDialog; | import com.bonait.bnframework.ui.dialog.AttributeSelectDialog; | ||||
import com.bonait.bnframework.ui.dialog.WaiteProgressDialog; | |||||
import com.bonait.bnframework.ui.widget.NewToastUtil; | import com.bonait.bnframework.ui.widget.NewToastUtil; | ||||
import com.bonait.bnframework.ui.widget.ProcessValueView; | import com.bonait.bnframework.ui.widget.ProcessValueView; | ||||
@@ -71,11 +80,11 @@ public class DiyProcessActivity extends BaseActivity { | |||||
/** | /** | ||||
* 工序数据 | * 工序数据 | ||||
*/ | */ | ||||
Map<String, String> processMap = new LinkedHashMap<>(); | |||||
private Map<String, String> processMap = new LinkedHashMap<>(); | |||||
/** | /** | ||||
* 工序坐标 | * 工序坐标 | ||||
*/ | */ | ||||
Map<String, Integer> processMapIndex = new LinkedHashMap<>(); | |||||
private Map<String, Integer> processMapIndex = new LinkedHashMap<>(); | |||||
/** | /** | ||||
* 工序步骤 | * 工序步骤 | ||||
*/ | */ | ||||
@@ -89,7 +98,41 @@ public class DiyProcessActivity extends BaseActivity { | |||||
* 导入已有属性组合弹窗 | * 导入已有属性组合弹窗 | ||||
*/ | */ | ||||
private AttributeSelectDialog attributeSelectDialog; | private AttributeSelectDialog attributeSelectDialog; | ||||
private WaiteProgressDialog progressDialog; | |||||
private Handler handler = new Handler(Looper.getMainLooper()){ | |||||
@Override | |||||
public void handleMessage(@NonNull Message msg) { | |||||
super.handleMessage(msg); | |||||
switch (msg.what){ | |||||
case 1: | |||||
if(progressDialog ==null){ | |||||
progressDialog = new WaiteProgressDialog(DiyProcessActivity.this); | |||||
}else { | |||||
progressDialog.dismiss(); | |||||
} | |||||
progressDialog.setTitleAndMessage("温馨提示","正在保存工序,请稍等..."); | |||||
progressDialog.setCancelable(false); | |||||
progressDialog.show(); | |||||
List<BPA_GOODS_PROCESS_DETAIL> processDetails1 = GoodsProcessDetailDBUtil.getByGroupId(subAttributeGroupId); | |||||
GoodsProcessDetailDBUtil.removeList(processDetails1); | |||||
for (int i =0;i<processDetails.size();i++){ | |||||
processDetails.get(i).sort = i+1; | |||||
processDetails.get(i).goodsSubAttributeGroupId = subAttributeGroupId; | |||||
} | |||||
SubAttributeGroupDBUtil.updateMakeTime(subAttributeGroupId, CookTimeUtils.measureCookingTime(processDetails)); | |||||
if(GoodsProcessDetailDBUtil.addList(processDetails)){ | |||||
NewToastUtil.getInstance().showToast("保存成功"); | |||||
RecordManager.getInstance().addLogRecord("角色操作日志","工序保存并返回-成功"); | |||||
}else { | |||||
NewToastUtil.getInstance().showToastError("保存失败"); | |||||
RecordManager.getInstance().addLogRecord("角色操作日志","工序保存并返回-失败"); | |||||
} | |||||
LogUtils.d(TAG+" back"); | |||||
finish(); | |||||
break; | |||||
} | |||||
} | |||||
}; | |||||
@Override | @Override | ||||
protected void onCreate(@Nullable Bundle savedInstanceState) { | protected void onCreate(@Nullable Bundle savedInstanceState) { | ||||
@@ -174,7 +217,9 @@ public class DiyProcessActivity extends BaseActivity { | |||||
updateProcessSpinner(mData.get(position)); | updateProcessSpinner(mData.get(position)); | ||||
} | } | ||||
}; | }; | ||||
processDetails = GoodsProcessDetailDBUtil.getByGroupId(subAttributeGroupId); | |||||
processDetails.clear(); | |||||
processDetails.addAll(GoodsProcessDetailDBUtil.getByGroupId(subAttributeGroupId)); | |||||
stepAdapter.setCurrentPosition(0); | stepAdapter.setCurrentPosition(0); | ||||
stepAdapter.setNewData(processDetails); | stepAdapter.setNewData(processDetails); | ||||
if(!processDetails.isEmpty()){ | if(!processDetails.isEmpty()){ | ||||
@@ -262,7 +307,7 @@ public class DiyProcessActivity extends BaseActivity { | |||||
@Override | @Override | ||||
public void submit() { | public void submit() { | ||||
processDetails.clear(); | processDetails.clear(); | ||||
processDetails = GoodsProcessDetailDBUtil.getByGroupId(subAttributeGroupId); | |||||
processDetails.addAll(GoodsProcessDetailDBUtil.getByGroupId(subAttributeGroupId)); | |||||
changeMainFoods(); | changeMainFoods(); | ||||
stepAdapter.setCurrentPosition(0); | stepAdapter.setCurrentPosition(0); | ||||
stepAdapter.setNewData(processDetails); | stepAdapter.setNewData(processDetails); | ||||
@@ -516,7 +561,37 @@ public class DiyProcessActivity extends BaseActivity { | |||||
viewBinding.topbar.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.topbj1)); | viewBinding.topbar.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.topbj1)); | ||||
viewBinding.topbar.setTitle("编辑工序"); | viewBinding.topbar.setTitle("编辑工序"); | ||||
viewBinding.back.setOnClickListener(v->{ | viewBinding.back.setOnClickListener(v->{ | ||||
finish(); | |||||
AlertDialogUtils.showCancelAndConfirmDialog(this,R.layout.dialog_with_cancel_confirm, new XComDialog.OnDialogListener(){ | |||||
@Override | |||||
public void onDialogClick(View layoutView, XComDialog xCom) { | |||||
DialogWithCancelConfirmBinding binding = DialogWithCancelConfirmBinding.bind(layoutView); | |||||
DisplayManager.scaleView(binding.getRoot()); | |||||
binding.tvTitle.setText("保存并返回"); | |||||
binding.tvContent.setText("即将退出页面,是否保存工序?"); | |||||
binding.tvCancel.setText("不保存"); | |||||
binding.tvConfirm.setText("保存"); | |||||
binding.tvCancel.setOnClickListener(new View.OnClickListener() { | |||||
@Override | |||||
public void onClick(View view) { | |||||
xCom.dismissX(); | |||||
finish(); | |||||
} | |||||
}); | |||||
binding.tvConfirm.setOnClickListener(new View.OnClickListener() { | |||||
@Override | |||||
public void onClick(View view) { | |||||
if(ConfigName.getInstance().isFastClick()){ | |||||
return; | |||||
} | |||||
xCom.dismissX(); | |||||
handler.sendEmptyMessage(1); | |||||
} | |||||
}); | |||||
} | |||||
}); | |||||
}); | }); | ||||
} | } | ||||
@@ -691,8 +766,10 @@ public class DiyProcessActivity extends BaseActivity { | |||||
processDetails.clear(); | processDetails.clear(); | ||||
processDetails.addAll(GoodsProcessDetailDBUtil.getByGroupId(subAttributeGroupId)); | processDetails.addAll(GoodsProcessDetailDBUtil.getByGroupId(subAttributeGroupId)); | ||||
changeMainFoods(); | changeMainFoods(); | ||||
stepAdapter.setCurrentPosition(0); | |||||
stepAdapter.notifyDataSetChanged(); | |||||
if(stepAdapter!=null){ | |||||
stepAdapter.setCurrentPosition(0); | |||||
stepAdapter.notifyDataSetChanged(); | |||||
} | |||||
if(!processDetails.isEmpty()){ | if(!processDetails.isEmpty()){ | ||||
updateProcessSpinner(processDetails.get(0)); | updateProcessSpinner(processDetails.get(0)); | ||||
} | } | ||||
@@ -703,18 +780,34 @@ public class DiyProcessActivity extends BaseActivity { | |||||
@Override | @Override | ||||
protected void onPause() { | protected void onPause() { | ||||
LogUtils.d(TAG+" onPause1"); | LogUtils.d(TAG+" onPause1"); | ||||
List<BPA_GOODS_PROCESS_DETAIL> processDetails1 = GoodsProcessDetailDBUtil.getByGroupId(subAttributeGroupId); | |||||
GoodsProcessDetailDBUtil.removeList(processDetails1); | |||||
for (int i =0;i<processDetails.size();i++){ | |||||
processDetails.get(i).sort = i+1; | |||||
processDetails.get(i).goodsSubAttributeGroupId = subAttributeGroupId; | |||||
if(progressDialog !=null){ | |||||
progressDialog.dismiss(); | |||||
} | } | ||||
GoodsProcessDetailDBUtil.addList(processDetails); | |||||
SubAttributeGroupDBUtil.updateMakeTime(subAttributeGroupId, CookTimeUtils.measureCookingTime(processDetails)); | |||||
LogUtils.d(TAG+" onPause2"); | |||||
progressDialog = null; | |||||
super.onPause(); | super.onPause(); | ||||
} | } | ||||
@Override | |||||
protected void onDestroy() { | |||||
super.onDestroy(); | |||||
if(handler!=null){ | |||||
handler.removeCallbacksAndMessages(null); | |||||
handler = null; | |||||
} | |||||
if(processDetails!=null){ | |||||
processDetails.clear(); | |||||
processDetails = null; | |||||
} | |||||
if(processMapIndex!=null){ | |||||
processMapIndex.clear(); | |||||
processMapIndex = null; | |||||
} | |||||
if(processMap!=null){ | |||||
processMap.clear(); | |||||
processMap = null; | |||||
} | |||||
} | |||||
@Override | @Override | ||||
protected String getClassName() { | protected String getClassName() { | ||||
return "编辑工序页"; | return "编辑工序页"; | ||||
@@ -0,0 +1,47 @@ | |||||
package com.bonait.bnframework.ui.adapter; | |||||
import android.view.LayoutInflater; | |||||
import android.view.View; | |||||
import android.view.ViewGroup; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.recyclerview.widget.RecyclerView; | |||||
import com.bonait.bnframework.Model.DeviceRecordBean; | |||||
import com.bonait.bnframework.common.base.BaseAdapter; | |||||
import com.bonait.bnframework.databinding.ItemDeviceRecordBinding; | |||||
/** | |||||
* @author: liup | |||||
* @description: | |||||
* @date: 2024/6/11 11:23. | |||||
*/ | |||||
public class DeviceRecordAdapter extends BaseAdapter<DeviceRecordBean,DeviceRecordAdapter.ViewHolder> { | |||||
@Override | |||||
protected void onItemClick(View v, int position) { | |||||
} | |||||
@NonNull | |||||
@Override | |||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { | |||||
return new DeviceRecordAdapter.ViewHolder(ItemDeviceRecordBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); | |||||
} | |||||
@Override | |||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { | |||||
holder.binding.name.setText(mData.get(position).getName()+""); | |||||
holder.binding.value.setText(mData.get(position).getValue()+""); | |||||
} | |||||
public static class ViewHolder extends RecyclerView.ViewHolder { | |||||
private ItemDeviceRecordBinding binding; | |||||
public ViewHolder(ItemDeviceRecordBinding view) { | |||||
super(view.getRoot()); | |||||
binding = view; | |||||
} | |||||
} | |||||
} |
@@ -5,6 +5,7 @@ import android.content.DialogInterface; | |||||
import android.content.Intent; | import android.content.Intent; | ||||
import android.graphics.Color; | import android.graphics.Color; | ||||
import android.graphics.drawable.ColorDrawable; | import android.graphics.drawable.ColorDrawable; | ||||
import android.os.Build; | |||||
import android.os.Bundle; | import android.os.Bundle; | ||||
import android.view.Gravity; | import android.view.Gravity; | ||||
import android.view.LayoutInflater; | import android.view.LayoutInflater; | ||||
@@ -92,11 +93,34 @@ public class AddGoodsDialog extends DialogFragment { | |||||
params.width = ViewGroup.LayoutParams.MATCH_PARENT; | params.width = ViewGroup.LayoutParams.MATCH_PARENT; | ||||
params.height = ViewGroup.LayoutParams.MATCH_PARENT; | params.height = ViewGroup.LayoutParams.MATCH_PARENT; | ||||
window.setAttributes(params); | window.setAttributes(params); | ||||
fullScreen(window); | |||||
} | } | ||||
AdbCommandUtil.hideStatusBar(true); | AdbCommandUtil.hideStatusBar(true); | ||||
updateClassifyData(classifyPosition); | updateClassifyData(classifyPosition); | ||||
} | } | ||||
private void fullScreen(Window window){ | |||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { | |||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | |||||
// 全屏显示,隐藏状态栏和导航栏,拉出状态栏和导航栏显示一会儿后消失。 | |||||
// 启动游戏模式,设置状态栏和导航栏中的图标变小,变模糊或者弱化其效果 | |||||
window.getDecorView().setSystemUiVisibility( | |||||
View.SYSTEM_UI_FLAG_LOW_PROFILE | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | |||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | |||||
| View.SYSTEM_UI_FLAG_FULLSCREEN | |||||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); | |||||
//activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_FULLSCREEN); | |||||
//activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); | |||||
} else { | |||||
// 全屏显示,隐藏状态栏 | |||||
window.getDecorView().setSystemUiVisibility(View.INVISIBLE); | |||||
} | |||||
} | |||||
} | |||||
@Override | @Override | ||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { | ||||
super.onViewCreated(view, savedInstanceState); | super.onViewCreated(view, savedInstanceState); | ||||
@@ -3,6 +3,7 @@ package com.bonait.bnframework.ui.dialog; | |||||
import android.content.DialogInterface; | import android.content.DialogInterface; | ||||
import android.graphics.Color; | import android.graphics.Color; | ||||
import android.graphics.drawable.ColorDrawable; | import android.graphics.drawable.ColorDrawable; | ||||
import android.os.Build; | |||||
import android.os.Bundle; | import android.os.Bundle; | ||||
import android.view.Gravity; | import android.view.Gravity; | ||||
import android.view.LayoutInflater; | import android.view.LayoutInflater; | ||||
@@ -71,7 +72,27 @@ public class AttributeSelectDialog extends DialogFragment { | |||||
attributeList = AttributeDBUtil.getByClassify(goods.classifyId); | attributeList = AttributeDBUtil.getByClassify(goods.classifyId); | ||||
} | } | ||||
} | } | ||||
private void fullScreen(Window window){ | |||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { | |||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | |||||
// 全屏显示,隐藏状态栏和导航栏,拉出状态栏和导航栏显示一会儿后消失。 | |||||
// 启动游戏模式,设置状态栏和导航栏中的图标变小,变模糊或者弱化其效果 | |||||
window.getDecorView().setSystemUiVisibility( | |||||
View.SYSTEM_UI_FLAG_LOW_PROFILE | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | |||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | |||||
| View.SYSTEM_UI_FLAG_FULLSCREEN | |||||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); | |||||
//activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_FULLSCREEN); | |||||
//activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); | |||||
} else { | |||||
// 全屏显示,隐藏状态栏 | |||||
window.getDecorView().setSystemUiVisibility(View.INVISIBLE); | |||||
} | |||||
} | |||||
} | |||||
@Nullable | @Nullable | ||||
@Override | @Override | ||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { | ||||
@@ -92,6 +113,7 @@ public class AttributeSelectDialog extends DialogFragment { | |||||
params.width = ViewGroup.LayoutParams.MATCH_PARENT; | params.width = ViewGroup.LayoutParams.MATCH_PARENT; | ||||
params.height = ViewGroup.LayoutParams.MATCH_PARENT; | params.height = ViewGroup.LayoutParams.MATCH_PARENT; | ||||
window.setAttributes(params); | window.setAttributes(params); | ||||
fullScreen(window); | |||||
} | } | ||||
AdbCommandUtil.hideStatusBar(true); | AdbCommandUtil.hideStatusBar(true); | ||||
updateAttributeData(); | updateAttributeData(); | ||||
@@ -3,6 +3,7 @@ package com.bonait.bnframework.ui.dialog; | |||||
import android.content.DialogInterface; | import android.content.DialogInterface; | ||||
import android.graphics.Color; | import android.graphics.Color; | ||||
import android.graphics.drawable.ColorDrawable; | import android.graphics.drawable.ColorDrawable; | ||||
import android.os.Build; | |||||
import android.os.Bundle; | import android.os.Bundle; | ||||
import android.view.Gravity; | import android.view.Gravity; | ||||
import android.view.LayoutInflater; | import android.view.LayoutInflater; | ||||
@@ -109,11 +110,34 @@ public class DeviceControlDialog extends DialogFragment { | |||||
params.height = ViewGroup.LayoutParams.MATCH_PARENT; | params.height = ViewGroup.LayoutParams.MATCH_PARENT; | ||||
window.setAttributes(params); | window.setAttributes(params); | ||||
window.setDimAmount(0.5f); | window.setDimAmount(0.5f); | ||||
fullScreen(window); | |||||
} | } | ||||
AdbCommandUtil.hideStatusBar(true); | AdbCommandUtil.hideStatusBar(true); | ||||
initView(); | initView(); | ||||
} | } | ||||
private void fullScreen(Window window){ | |||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { | |||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | |||||
// 全屏显示,隐藏状态栏和导航栏,拉出状态栏和导航栏显示一会儿后消失。 | |||||
// 启动游戏模式,设置状态栏和导航栏中的图标变小,变模糊或者弱化其效果 | |||||
window.getDecorView().setSystemUiVisibility( | |||||
View.SYSTEM_UI_FLAG_LOW_PROFILE | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | |||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | |||||
| View.SYSTEM_UI_FLAG_FULLSCREEN | |||||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); | |||||
//activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_FULLSCREEN); | |||||
//activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); | |||||
} else { | |||||
// 全屏显示,隐藏状态栏 | |||||
window.getDecorView().setSystemUiVisibility(View.INVISIBLE); | |||||
} | |||||
} | |||||
} | |||||
private void initView(){ | private void initView(){ | ||||
viewBinding.layoutFire.getRoot().setVisibility(type==1?View.VISIBLE:View.GONE); | viewBinding.layoutFire.getRoot().setVisibility(type==1?View.VISIBLE:View.GONE); | ||||
viewBinding.layoutSilos.getRoot().setVisibility(type==2?View.VISIBLE:View.GONE); | viewBinding.layoutSilos.getRoot().setVisibility(type==2?View.VISIBLE:View.GONE); | ||||
@@ -483,22 +507,33 @@ public class DeviceControlDialog extends DialogFragment { | |||||
viewBinding.layoutStir.stirProgress.setValue(progressStir,true); | viewBinding.layoutStir.stirProgress.setValue(progressStir,true); | ||||
}); | }); | ||||
viewBinding.layoutStir.btnStirStart.setOnClickListener(v->{ | viewBinding.layoutStir.btnStirStart.setOnClickListener(v->{ | ||||
String timeS1 = viewBinding.layoutStir.edittextTime1.getText().toString(); | |||||
String timeS2 = viewBinding.layoutStir.edittextTime2.getText().toString(); | |||||
if(timeS1.isEmpty()){ | |||||
timeS1 = "3"; | |||||
} | |||||
if(timeS2.isEmpty()){ | |||||
timeS2 = "3"; | |||||
} | |||||
int time1 = Math.max(Integer.parseInt(timeS1),3); | |||||
int time2 = Math.max(Integer.parseInt(timeS2),3); | |||||
BPA_GOODS_PROCESS_DETAIL detail = new BPA_GOODS_PROCESS_DETAIL(); | BPA_GOODS_PROCESS_DETAIL detail = new BPA_GOODS_PROCESS_DETAIL(); | ||||
detail.processname = "双向搅拌"; | detail.processname = "双向搅拌"; | ||||
detail.materialType = 1; | detail.materialType = 1; | ||||
detail.processvalue = "搅拌档位,"+progressStir+"档|搅拌控制,启动搅拌|正转时间,3|反转时间,3|延迟(秒),0"; | |||||
detail.processms = "双向搅拌("+progressStir+"档,启动搅拌,3,3,0)"; | |||||
detail.processvalue = "搅拌档位,"+progressStir+"档|搅拌控制,启动搅拌|正转时间,"+time1+"|反转时间,"+time2+"|延迟(秒),0"; | |||||
detail.processms = "双向搅拌("+progressStir+"档,启动搅拌,"+time1+","+time2+",0)"; | |||||
if(progressStir==0){ | if(progressStir==0){ | ||||
NewToastUtil.getInstance().showToast("启动搅拌 档位:0"); | NewToastUtil.getInstance().showToast("启动搅拌 档位:0"); | ||||
deviceCallBack.onClickEvent(type,"停止搅拌",0,detail); | deviceCallBack.onClickEvent(type,"停止搅拌",0,detail); | ||||
return; | return; | ||||
} | } | ||||
NewToastUtil.getInstance().showToast("启动搅拌 档位:"+progressStir); | |||||
RecordManager.getInstance().addLogRecord("角色操作日志", "手动控制-"+"启动搅拌 档位:"+progressStir); | |||||
NewToastUtil.getInstance().showToast("启动双向搅拌 档位:"+progressStir); | |||||
RecordManager.getInstance().addLogRecord("角色操作日志", "手动控制-"+"启动双向搅拌 档位:"+progressStir); | |||||
ThreadManager.get().execute(new Thread(() -> { | ThreadManager.get().execute(new Thread(() -> { | ||||
ModbusHelper.get().setStirModel(2); | ModbusHelper.get().setStirModel(2); | ||||
ModbusHelper.get().setStirTime(1,3); | |||||
ModbusHelper.get().setStirTime(2,3); | |||||
ModbusHelper.get().setStirTime(1, time1); | |||||
ModbusHelper.get().setStirTime(2,time2); | |||||
ModbusHelper.get().setStirMotor(progressStir,1); | ModbusHelper.get().setStirMotor(progressStir,1); | ||||
})); | })); | ||||
deviceCallBack.onClickEvent(type,"启动搅拌",0,detail); | deviceCallBack.onClickEvent(type,"启动搅拌",0,detail); | ||||
@@ -5,6 +5,7 @@ import android.content.DialogInterface; | |||||
import android.content.Intent; | import android.content.Intent; | ||||
import android.graphics.Color; | import android.graphics.Color; | ||||
import android.graphics.drawable.ColorDrawable; | import android.graphics.drawable.ColorDrawable; | ||||
import android.os.Build; | |||||
import android.os.Bundle; | import android.os.Bundle; | ||||
import android.view.Gravity; | import android.view.Gravity; | ||||
import android.view.LayoutInflater; | import android.view.LayoutInflater; | ||||
@@ -93,14 +94,6 @@ public class EditGoodsDialog extends DialogFragment { | |||||
public void onCreate(@Nullable Bundle savedInstanceState) { | public void onCreate(@Nullable Bundle savedInstanceState) { | ||||
super.onCreate(savedInstanceState); | super.onCreate(savedInstanceState); | ||||
setStyle(STYLE_NORMAL, R.style.DialogScale); | setStyle(STYLE_NORMAL, R.style.DialogScale); | ||||
if(getArguments()!=null){ | |||||
goodId = getArguments().getString("goodId"); | |||||
isEdit = getArguments().getBoolean("isEdit"); | |||||
} | |||||
goods = GoodsDBUtil.getById(goodId); | |||||
if(goods!=null){ | |||||
attributeList = AttributeDBUtil.getByClassify(goods.classifyId); | |||||
} | |||||
} | } | ||||
@Nullable | @Nullable | ||||
@@ -124,6 +117,15 @@ public class EditGoodsDialog extends DialogFragment { | |||||
params.width = ViewGroup.LayoutParams.MATCH_PARENT; | params.width = ViewGroup.LayoutParams.MATCH_PARENT; | ||||
params.height = ViewGroup.LayoutParams.MATCH_PARENT; | params.height = ViewGroup.LayoutParams.MATCH_PARENT; | ||||
window.setAttributes(params); | window.setAttributes(params); | ||||
fullScreen(window); | |||||
} | |||||
if(getArguments()!=null){ | |||||
goodId = getArguments().getString("goodId"); | |||||
isEdit = getArguments().getBoolean("isEdit"); | |||||
} | |||||
goods = GoodsDBUtil.getById(goodId); | |||||
if(goods!=null){ | |||||
attributeList = AttributeDBUtil.getByClassify(goods.classifyId); | |||||
} | } | ||||
AdbCommandUtil.hideStatusBar(true); | AdbCommandUtil.hideStatusBar(true); | ||||
initView(); | initView(); | ||||
@@ -141,7 +143,27 @@ public class EditGoodsDialog extends DialogFragment { | |||||
updateAttributeData(""); | updateAttributeData(""); | ||||
groupSpinnerView(); | groupSpinnerView(); | ||||
} | } | ||||
private void fullScreen(Window window){ | |||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { | |||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | |||||
// 全屏显示,隐藏状态栏和导航栏,拉出状态栏和导航栏显示一会儿后消失。 | |||||
// 启动游戏模式,设置状态栏和导航栏中的图标变小,变模糊或者弱化其效果 | |||||
window.getDecorView().setSystemUiVisibility( | |||||
View.SYSTEM_UI_FLAG_LOW_PROFILE | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | |||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | |||||
| View.SYSTEM_UI_FLAG_FULLSCREEN | |||||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); | |||||
//activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_FULLSCREEN); | |||||
//activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); | |||||
} else { | |||||
// 全屏显示,隐藏状态栏 | |||||
window.getDecorView().setSystemUiVisibility(View.INVISIBLE); | |||||
} | |||||
} | |||||
} | |||||
@Override | @Override | ||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { | ||||
super.onViewCreated(view, savedInstanceState); | super.onViewCreated(view, savedInstanceState); | ||||
@@ -2,6 +2,7 @@ package com.bonait.bnframework.ui.dialog; | |||||
import android.graphics.Color; | import android.graphics.Color; | ||||
import android.graphics.drawable.ColorDrawable; | import android.graphics.drawable.ColorDrawable; | ||||
import android.os.Build; | |||||
import android.os.Bundle; | import android.os.Bundle; | ||||
import android.view.Gravity; | import android.view.Gravity; | ||||
import android.view.LayoutInflater; | import android.view.LayoutInflater; | ||||
@@ -63,7 +64,27 @@ public class SubOrderDialog extends DialogFragment { | |||||
DisplayManager.scaleViewGroup(viewBinding.getRoot()); | DisplayManager.scaleViewGroup(viewBinding.getRoot()); | ||||
return viewBinding.getRoot(); | return viewBinding.getRoot(); | ||||
} | } | ||||
private void fullScreen(Window window){ | |||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { | |||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | |||||
// 全屏显示,隐藏状态栏和导航栏,拉出状态栏和导航栏显示一会儿后消失。 | |||||
// 启动游戏模式,设置状态栏和导航栏中的图标变小,变模糊或者弱化其效果 | |||||
window.getDecorView().setSystemUiVisibility( | |||||
View.SYSTEM_UI_FLAG_LOW_PROFILE | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | |||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | |||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | |||||
| View.SYSTEM_UI_FLAG_FULLSCREEN | |||||
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); | |||||
//activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_FULLSCREEN); | |||||
//activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); | |||||
} else { | |||||
// 全屏显示,隐藏状态栏 | |||||
window.getDecorView().setSystemUiVisibility(View.INVISIBLE); | |||||
} | |||||
} | |||||
} | |||||
@Override | @Override | ||||
public void onStart() { | public void onStart() { | ||||
super.onStart(); | super.onStart(); | ||||
@@ -76,6 +97,7 @@ public class SubOrderDialog extends DialogFragment { | |||||
params.width = ViewGroup.LayoutParams.WRAP_CONTENT; | params.width = ViewGroup.LayoutParams.WRAP_CONTENT; | ||||
params.height = ViewGroup.LayoutParams.WRAP_CONTENT; | params.height = ViewGroup.LayoutParams.WRAP_CONTENT; | ||||
window.setAttributes(params); | window.setAttributes(params); | ||||
fullScreen(window); | |||||
} | } | ||||
AdbCommandUtil.hideStatusBar(true); | AdbCommandUtil.hideStatusBar(true); | ||||
initView(); | initView(); | ||||
@@ -3,6 +3,7 @@ package com.bonait.bnframework.ui.fragment; | |||||
import android.animation.ObjectAnimator; | import android.animation.ObjectAnimator; | ||||
import android.animation.PropertyValuesHolder; | import android.animation.PropertyValuesHolder; | ||||
import android.annotation.SuppressLint; | import android.annotation.SuppressLint; | ||||
import android.content.Intent; | |||||
import android.graphics.Color; | import android.graphics.Color; | ||||
import android.graphics.drawable.AnimationDrawable; | import android.graphics.drawable.AnimationDrawable; | ||||
import android.os.Bundle; | import android.os.Bundle; | ||||
@@ -30,6 +31,7 @@ import com.bonait.bnframework.common.db.mode.BPA_GOODS_PROCESS_DETAIL; | |||||
import com.bonait.bnframework.common.utils.DimensUtil; | import com.bonait.bnframework.common.utils.DimensUtil; | ||||
import com.bonait.bnframework.common.utils.DisplayManager; | import com.bonait.bnframework.common.utils.DisplayManager; | ||||
import com.bonait.bnframework.databinding.FragmentHomeDevicesBinding; | import com.bonait.bnframework.databinding.FragmentHomeDevicesBinding; | ||||
import com.bonait.bnframework.ui.activity.DeviceRecordActivity; | |||||
import com.bonait.bnframework.ui.dialog.DeviceControlDialog; | import com.bonait.bnframework.ui.dialog.DeviceControlDialog; | ||||
import com.bonait.bnframework.ui.widget.NewToastUtil; | import com.bonait.bnframework.ui.widget.NewToastUtil; | ||||
@@ -108,20 +110,7 @@ public class HomeDevicesFragment extends BaseFragment { | |||||
isUp = true; | isUp = true; | ||||
isStir = false; | isStir = false; | ||||
changeDevicePic(); | changeDevicePic(); | ||||
ThreadManager.get().execute(new Thread(() -> ModbusHelper.get().setStirMotor(0,2))); | |||||
ThreadManager.get().execute(new Thread(() -> ModbusHelper.get().setUpdDownMotor(1))); | |||||
ThreadManager.get().execute(new Thread(() -> ModbusHelper.get().Heating(0,false))); | |||||
ThreadManager.get().execute(new Thread(() -> { | |||||
ModbusHelper.get().addWater(0f,true); | |||||
})); | |||||
ThreadManager.get().execute(new Thread(() -> { | |||||
ModbusHelper.get().addThickenWater(0f,true); | |||||
})); | |||||
ThreadManager.get().execute(new Thread(() -> { | |||||
for(int i =1;i<=9;i++){ | |||||
ModbusHelper.get().addMaterial(0f,i,true); | |||||
} | |||||
})); | |||||
ModbusHelper.get().reset(); | |||||
} | } | ||||
@Override | @Override | ||||
@@ -164,6 +153,11 @@ public class HomeDevicesFragment extends BaseFragment { | |||||
clear(); | clear(); | ||||
NewToastUtil.getInstance().showToast("复位完成"); | NewToastUtil.getInstance().showToast("复位完成"); | ||||
}); | }); | ||||
viewBinding.deviceRecord.setOnClickListener(v->{ | |||||
Intent intent = new Intent(getContext(), DeviceRecordActivity.class); | |||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK); | |||||
startActivity(intent); | |||||
}); | |||||
} | } | ||||
private DeviceControlDialog.DeviceCallBack deviceCallBack = new DeviceControlDialog.DeviceCallBack() { | private DeviceControlDialog.DeviceCallBack deviceCallBack = new DeviceControlDialog.DeviceCallBack() { | ||||
@@ -58,7 +58,7 @@ public class NewToastUtil { | |||||
ViewLayoutToastBinding binding = ViewLayoutToastBinding.bind(layout); | ViewLayoutToastBinding binding = ViewLayoutToastBinding.bind(layout); | ||||
DisplayManager.scaleViewGroup(binding.getRoot()); | DisplayManager.scaleViewGroup(binding.getRoot()); | ||||
binding.toastText.setText(content); | binding.toastText.setText(content); | ||||
toast.setGravity(Gravity.BOTTOM,0, (int) (DisplayManager.getWidthScaleRate()*DimensUtil.getDimens(100))); | |||||
toast.setGravity(Gravity.BOTTOM,0, (int) (DisplayManager.getWidthScaleRate()*DimensUtil.getDimens(10))); | |||||
toast.setDuration(Toast.LENGTH_SHORT); | toast.setDuration(Toast.LENGTH_SHORT); | ||||
toast.setView(layout); | toast.setView(layout); | ||||
toast.show(); | toast.show(); | ||||
@@ -133,7 +133,7 @@ public class NewToastUtil { | |||||
spannableStringBuilder.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.red_primary)),index,index+colorText.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE); | spannableStringBuilder.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.red_primary)),index,index+colorText.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE); | ||||
} | } | ||||
binding.toastText.setText(spannableStringBuilder); | binding.toastText.setText(spannableStringBuilder); | ||||
toast.setGravity(Gravity.BOTTOM,0, (int) (DisplayManager.getWidthScaleRate()*DimensUtil.getDimens(180))); | |||||
toast.setGravity(Gravity.BOTTOM,0, (int) (DisplayManager.getWidthScaleRate()*DimensUtil.getDimens(10))); | |||||
toast.setDuration(Toast.LENGTH_SHORT); | toast.setDuration(Toast.LENGTH_SHORT); | ||||
toast.setView(layout); | toast.setView(layout); | ||||
toast.show(); | toast.show(); | ||||
@@ -0,0 +1,55 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<com.qmuiteam.qmui.widget.QMUIWindowInsetLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
xmlns:app="http://schemas.android.com/apk/res-auto" | |||||
android:orientation="vertical" | |||||
android:background="@color/white" | |||||
android:id="@+id/root" | |||||
android:fitsSystemWindows="true"> | |||||
<com.qmuiteam.qmui.widget.QMUITopBarLayout | |||||
android:id="@+id/topbar" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content"> | |||||
<TextView | |||||
android:id="@+id/back" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="match_parent" | |||||
android:drawableLeft="@mipmap/fanhui" | |||||
android:drawablePadding="@dimen/dp_5" | |||||
android:gravity="center" | |||||
android:paddingLeft="@dimen/dp_5" | |||||
android:paddingRight="@dimen/dp_50" | |||||
android:text=" 返 回" | |||||
android:textColor="@color/white" | |||||
android:textSize="@dimen/sp_32" /> | |||||
<TextView | |||||
android:layout_gravity="center" | |||||
android:gravity="center" | |||||
android:text="设备使用统计" | |||||
android:textColor="@color/white" | |||||
android:textSize="@dimen/sp_36" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent"/> | |||||
</com.qmuiteam.qmui.widget.QMUITopBarLayout> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_marginTop="?attr/qmui_topbar_height" | |||||
android:orientation="vertical" | |||||
android:layout_height="match_parent"> | |||||
<androidx.recyclerview.widget.RecyclerView | |||||
android:id="@+id/recycler_view" | |||||
android:layout_marginTop="@dimen/dp_10" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:orientation="vertical" | |||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" | |||||
/> | |||||
</LinearLayout> | |||||
</com.qmuiteam.qmui.widget.QMUIWindowInsetLayout> |
@@ -259,18 +259,18 @@ | |||||
android:id="@+id/topbar" | android:id="@+id/topbar" | ||||
android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
android:layout_height="wrap_content" > | android:layout_height="wrap_content" > | ||||
<TextView | <TextView | ||||
android:id="@+id/back" | android:id="@+id/back" | ||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="match_parent" | android:layout_height="match_parent" | ||||
android:textColor="@color/white" | |||||
android:textSize="@dimen/sp_32" | |||||
android:text=" 返 回" | |||||
android:paddingRight="@dimen/dp_50" | |||||
android:drawableLeft="@mipmap/fanhui" | android:drawableLeft="@mipmap/fanhui" | ||||
android:drawablePadding="@dimen/dp_5" | |||||
android:gravity="center" | android:gravity="center" | ||||
android:paddingLeft="@dimen/dp_5" | android:paddingLeft="@dimen/dp_5" | ||||
android:drawablePadding="@dimen/dp_5" | |||||
/> | |||||
android:paddingRight="@dimen/dp_50" | |||||
android:text=" 保存并返回" | |||||
android:textColor="@color/white" | |||||
android:textSize="@dimen/sp_32" /> | |||||
</com.qmuiteam.qmui.widget.QMUITopBarLayout> | </com.qmuiteam.qmui.widget.QMUITopBarLayout> | ||||
</com.qmuiteam.qmui.widget.QMUIWindowInsetLayout> | </com.qmuiteam.qmui.widget.QMUIWindowInsetLayout> |
@@ -15,8 +15,6 @@ | |||||
android:textColor="#BEAA6A" | android:textColor="#BEAA6A" | ||||
android:textStyle="bold" | android:textStyle="bold" | ||||
android:text="搅拌模组:" | android:text="搅拌模组:" | ||||
android:paddingTop="@dimen/dp_20" | |||||
android:paddingBottom="@dimen/dp_20" | |||||
android:paddingLeft="@dimen/dp_20" | android:paddingLeft="@dimen/dp_20" | ||||
/> | /> | ||||
@@ -26,7 +24,7 @@ | |||||
android:layout_height="@dimen/dp_70" | android:layout_height="@dimen/dp_70" | ||||
app:layout_constraintTop_toBottomOf="@id/title_fire" | app:layout_constraintTop_toBottomOf="@id/title_fire" | ||||
app:layout_constraintLeft_toLeftOf="parent" | app:layout_constraintLeft_toLeftOf="parent" | ||||
android:layout_marginTop="@dimen/dp_20" | |||||
android:layout_marginTop="@dimen/dp_10" | |||||
android:layout_marginLeft="@dimen/dp_20" | android:layout_marginLeft="@dimen/dp_20" | ||||
android:text="搅拌档位" | android:text="搅拌档位" | ||||
android:textSize="@dimen/sp_36" | android:textSize="@dimen/sp_36" | ||||
@@ -91,6 +89,62 @@ | |||||
android:layout_marginLeft="@dimen/dp_10" | android:layout_marginLeft="@dimen/dp_10" | ||||
/> | /> | ||||
<TextView | |||||
android:id="@+id/tv_time1" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="@dimen/dp_70" | |||||
app:layout_constraintTop_toBottomOf="@id/tv_fire_select" | |||||
app:layout_constraintLeft_toLeftOf="parent" | |||||
android:layout_marginTop="@dimen/dp_20" | |||||
android:layout_marginLeft="@dimen/dp_20" | |||||
android:text="正转时间:" | |||||
android:textSize="@dimen/sp_36" | |||||
android:gravity="center" | |||||
android:textColor="@color/black" | |||||
/> | |||||
<EditText | |||||
android:id="@+id/edittext_time1" | |||||
android:layout_width="@dimen/dp_200" | |||||
android:layout_height="@dimen/dp_70" | |||||
android:layout_marginLeft="5dp" | |||||
android:background="@drawable/input_bj" | |||||
android:hint="至少为3(s)" | |||||
android:inputType="number" | |||||
android:maxLines="1" | |||||
android:padding="3dp" | |||||
android:text="3" | |||||
app:layout_constraintTop_toTopOf="@id/tv_time1" | |||||
app:layout_constraintLeft_toRightOf="@id/tv_time1" | |||||
android:textSize="@dimen/sp_32" /> | |||||
<TextView | |||||
android:id="@+id/tv_time2" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="@dimen/dp_70" | |||||
app:layout_constraintTop_toBottomOf="@id/tv_fire_select" | |||||
app:layout_constraintLeft_toRightOf="@id/edittext_time1" | |||||
android:layout_marginTop="@dimen/dp_20" | |||||
android:layout_marginLeft="@dimen/dp_20" | |||||
android:text="反转时间:" | |||||
android:textSize="@dimen/sp_36" | |||||
android:gravity="center" | |||||
android:textColor="@color/black" | |||||
/> | |||||
<EditText | |||||
android:id="@+id/edittext_time2" | |||||
android:layout_width="@dimen/dp_200" | |||||
android:layout_height="@dimen/dp_70" | |||||
android:layout_marginLeft="5dp" | |||||
android:background="@drawable/input_bj" | |||||
android:hint="至少为3(s)" | |||||
android:text="3" | |||||
android:inputType="number" | |||||
android:maxLines="1" | |||||
android:padding="3dp" | |||||
app:layout_constraintTop_toTopOf="@id/tv_time2" | |||||
app:layout_constraintLeft_toRightOf="@id/tv_time2" | |||||
android:textSize="@dimen/sp_32" /> | |||||
<TextView | <TextView | ||||
android:id="@+id/btn_stir_start" | android:id="@+id/btn_stir_start" | ||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
@@ -101,13 +155,13 @@ | |||||
android:paddingBottom="@dimen/dp_10" | android:paddingBottom="@dimen/dp_10" | ||||
android:paddingLeft="@dimen/dp_40" | android:paddingLeft="@dimen/dp_40" | ||||
android:paddingRight="@dimen/dp_40" | android:paddingRight="@dimen/dp_40" | ||||
android:layout_marginTop="@dimen/dp_30" | |||||
android:layout_marginTop="@dimen/dp_10" | |||||
android:layout_marginLeft="@dimen/dp_80" | android:layout_marginLeft="@dimen/dp_80" | ||||
android:gravity="center" | android:gravity="center" | ||||
android:clickable="true" | android:clickable="true" | ||||
android:textColor="@color/white" | android:textColor="@color/white" | ||||
android:background="@drawable/selector_text_click_yellow_round15" | android:background="@drawable/selector_text_click_yellow_round15" | ||||
app:layout_constraintTop_toBottomOf="@id/tv_fire_select" | |||||
app:layout_constraintTop_toBottomOf="@id/tv_time1" | |||||
app:layout_constraintLeft_toLeftOf="parent" | app:layout_constraintLeft_toLeftOf="parent" | ||||
/> | /> | ||||
@@ -12,8 +12,8 @@ | |||||
android:orientation="vertical" | android:orientation="vertical" | ||||
android:layout_gravity="center" | android:layout_gravity="center" | ||||
android:padding="@dimen/dp_20" | android:padding="@dimen/dp_20" | ||||
android:layout_marginStart="@dimen/dp_50" | |||||
android:layout_marginEnd="@dimen/dp_50" | |||||
android:layout_marginStart="@dimen/dp_40" | |||||
android:layout_marginEnd="@dimen/dp_40" | |||||
> | > | ||||
<TextView | <TextView | ||||
@@ -49,18 +49,18 @@ | |||||
<TextView | <TextView | ||||
android:id="@+id/tv_cancel" | android:id="@+id/tv_cancel" | ||||
android:layout_width="100dp" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="100dp" | android:layout_height="100dp" | ||||
android:textSize="@dimen/sp_38" | android:textSize="@dimen/sp_38" | ||||
android:textColor="@color/blue_primary" | android:textColor="@color/blue_primary" | ||||
android:text="@string/tip_save_cancel" | |||||
android:text="取消" | |||||
android:layout_alignParentLeft="true" | android:layout_alignParentLeft="true" | ||||
android:layout_marginLeft="@dimen/dp_50" | android:layout_marginLeft="@dimen/dp_50" | ||||
android:gravity="center" | android:gravity="center" | ||||
/> | /> | ||||
<TextView | <TextView | ||||
android:id="@+id/tv_confirm" | android:id="@+id/tv_confirm" | ||||
android:layout_width="100dp" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="100dp" | android:layout_height="100dp" | ||||
android:textSize="38sp" | android:textSize="38sp" | ||||
android:textColor="@color/blue_primary" | android:textColor="@color/blue_primary" | ||||
@@ -50,4 +50,21 @@ | |||||
android:textColor="@color/white" | android:textColor="@color/white" | ||||
android:background="@drawable/selector_text_click_yellow_round15" | android:background="@drawable/selector_text_click_yellow_round15" | ||||
/> | /> | ||||
<TextView | |||||
android:id="@+id/device_record" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="@dimen/dp_90" | |||||
android:textSize="@dimen/sp_32" | |||||
android:text="使用统计" | |||||
android:paddingLeft="@dimen/dp_20" | |||||
android:paddingRight="@dimen/dp_20" | |||||
android:layout_marginEnd="@dimen/dp_20" | |||||
android:layout_gravity="bottom|end" | |||||
android:layout_marginBottom="@dimen/dp_170" | |||||
android:gravity="center" | |||||
android:clickable="true" | |||||
android:textColor="@color/white" | |||||
android:background="@drawable/selector_text_click_yellow_round15" | |||||
/> | |||||
</FrameLayout> | </FrameLayout> |
@@ -0,0 +1,41 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:background="@color/white" | |||||
xmlns:tools="http://schemas.android.com/tools"> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:background="@drawable/bg_bottom_line" | |||||
android:layout_height="wrap_content"> | |||||
<TextView | |||||
android:id="@+id/name" | |||||
android:layout_width="0dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="2" | |||||
tools:text="上升次数" | |||||
android:textSize="32sp" | |||||
android:textColor="@color/black" | |||||
android:gravity="center" | |||||
/> | |||||
<TextView | |||||
android:layout_width="1dp" | |||||
android:layout_height="match_parent" | |||||
android:background="@color/color3" | |||||
/> | |||||
<TextView | |||||
android:id="@+id/value" | |||||
android:layout_width="0dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="2" | |||||
android:gravity="center_vertical" | |||||
android:textSize="32sp" | |||||
android:textColor="@color/black" | |||||
tools:text="100次" | |||||
android:padding="@dimen/dp_10" | |||||
/> | |||||
</LinearLayout> | |||||
</LinearLayout> |
@@ -5,15 +5,15 @@ | |||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:gravity="center" | android:gravity="center" | ||||
android:layout_marginLeft="@dimen/dp_50" | |||||
android:layout_marginRight="@dimen/dp_50" | |||||
android:layout_marginStart="@dimen/dp_10" | |||||
android:layout_marginEnd="@dimen/dp_10" | |||||
android:background="@drawable/bg_round50_green_btn" | android:background="@drawable/bg_round50_green_btn" | ||||
android:orientation="horizontal"> | android:orientation="horizontal"> | ||||
<ImageView | <ImageView | ||||
android:id="@+id/toast_icon" | android:id="@+id/toast_icon" | ||||
android:layout_width="@dimen/dp_70" | |||||
android:layout_height="@dimen/dp_70" | |||||
android:layout_width="@dimen/dp_50" | |||||
android:layout_height="@dimen/dp_50" | |||||
android:src="@mipmap/boluo" | android:src="@mipmap/boluo" | ||||
/> | /> | ||||
@@ -21,7 +21,7 @@ | |||||
android:id="@+id/toast_text" | android:id="@+id/toast_text" | ||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:textSize="@dimen/sp_32" | |||||
android:textSize="@dimen/sp_26" | |||||
android:textColor="@color/white" | android:textColor="@color/white" | ||||
android:layout_toRightOf="@id/toast_icon" | android:layout_toRightOf="@id/toast_icon" | ||||
android:paddingLeft="@dimen/dp_15" | android:paddingLeft="@dimen/dp_15" | ||||
@@ -35,8 +35,8 @@ task clean(type: Delete) { | |||||
ext { // 统一版本入口 | ext { // 统一版本入口 | ||||
//App版本号 | //App版本号 | ||||
versionCode = 207 | |||||
versionName = "2.0.7" | |||||
versionCode = 208 | |||||
versionName = "2.0.8" | |||||
// 支持Android版本 | // 支持Android版本 | ||||
buildToolsVersion = "33.0.0" | buildToolsVersion = "33.0.0" | ||||