@@ -65,6 +65,8 @@ dependencies { | |||||
implementation files('libs\\sdkapi.jar') | implementation files('libs\\sdkapi.jar') | ||||
compileOnly files('libs/sdkapi.jar') | compileOnly files('libs/sdkapi.jar') | ||||
implementation files('libs/modbus4Android-1.2.jar') | implementation files('libs/modbus4Android-1.2.jar') | ||||
implementation 'com.contrarywind:Android-PickerView:3.2.6' | |||||
// implementation 'androidx.databinding:databinding-runtime:4.1.4' | // implementation 'androidx.databinding:databinding-runtime:4.1.4' | ||||
// implementation 'androidx.appcompat:appcompat:1.3.1' | // implementation 'androidx.appcompat:appcompat:1.3.1' | ||||
// implementation 'androidx.core:core-ktx:1.6.0' | // implementation 'androidx.core:core-ktx:1.6.0' | ||||
@@ -14,6 +14,7 @@ import com.example.bpa.db.QueryDB; | |||||
import com.example.bpa.db.mode.BPA_USER; | import com.example.bpa.db.mode.BPA_USER; | ||||
import com.example.bpa.helper.MessageLog; | import com.example.bpa.helper.MessageLog; | ||||
import com.example.bpa.helper.T; | import com.example.bpa.helper.T; | ||||
import com.example.bpa.view.mode.UserLogEnum; | |||||
public class LoginActivity extends Activity implements View.OnClickListener { | public class LoginActivity extends Activity implements View.OnClickListener { | ||||
//region 界面变量 | //region 界面变量 | ||||
@@ -65,7 +66,7 @@ public class LoginActivity extends Activity implements View.OnClickListener { | |||||
if (user!=null) { | if (user!=null) { | ||||
ConfigName.getInstance().user = user; | ConfigName.getInstance().user = user; | ||||
Main.getInstance().SavePZ();//保存配置 | Main.getInstance().SavePZ();//保存配置 | ||||
MessageLog.ShowInfo("登录"); | |||||
MessageLog.ShowUserMessage(UserLogEnum.登录日志,user.name+"-登录成功"); | |||||
T.show(LoginActivity.this, "登录成功!"); | T.show(LoginActivity.this, "登录成功!"); | ||||
try { | try { | ||||
Intent intent = new Intent(LoginActivity.this, MainActivity.class); | Intent intent = new Intent(LoginActivity.this, MainActivity.class); | ||||
@@ -74,6 +75,7 @@ public class LoginActivity extends Activity implements View.OnClickListener { | |||||
throw new RuntimeException(e); | throw new RuntimeException(e); | ||||
} | } | ||||
} else { | } else { | ||||
MessageLog.ShowUserMessage(UserLogEnum.登录日志,user+"-用户密码错误!"); | |||||
T.show(LoginActivity.this, "用户密码错误!"); | T.show(LoginActivity.this, "用户密码错误!"); | ||||
} | } | ||||
} | } | ||||
@@ -1,9 +1,17 @@ | |||||
package com.example.bpa.Model; | package com.example.bpa.Model; | ||||
import com.example.bpa.view.mode.AlertLogEnum; | |||||
import com.example.bpa.view.mode.UserLogEnum; | |||||
public interface IMessageLogNotify { | public interface IMessageLogNotify { | ||||
void ErrorMsg(String msg); | void ErrorMsg(String msg); | ||||
void InfoMsg(String msg,String datetiem); | |||||
void InfoMsg(String msg); | |||||
void WarnMsg(String msg); | void WarnMsg(String msg); | ||||
void UserMsg(UserLogEnum type,String msg); | |||||
void AlertMsg(AlertLogEnum type, String msg); | |||||
} | } |
@@ -14,6 +14,7 @@ import com.example.bpa.helper.MessageLog; | |||||
import com.example.bpa.helper.ThreadManager; | import com.example.bpa.helper.ThreadManager; | ||||
import com.example.bpa.view.mode.MakeStatus; | import com.example.bpa.view.mode.MakeStatus; | ||||
import com.example.bpa.view.mode.ResGoodsRecipe; | import com.example.bpa.view.mode.ResGoodsRecipe; | ||||
import com.example.bpa.view.mode.UserLogEnum; | |||||
import java.sql.Ref; | import java.sql.Ref; | ||||
import java.text.SimpleDateFormat; | import java.text.SimpleDateFormat; | ||||
@@ -54,142 +55,26 @@ public class BusinessServer { | |||||
} | } | ||||
/** | /** | ||||
* 订单制作线程 | |||||
* 订单制作线程新->增加物料检查(物料检测临时屏蔽-后续 需放开) | |||||
*/ | */ | ||||
public void Init() { | public void Init() { | ||||
ThreadManager.Get().StartLong("订单执行业务流程", true, new IThread() { | |||||
@Override | |||||
public void Run() throws InterruptedException { | |||||
while (Commoditys.size() > 0) { | |||||
//0.验证物料是否充足【待编写】 | |||||
//1.取出需要制作的订单商品 | |||||
String GoodId = Commoditys.poll(); | |||||
//2.获取商品的配方信息 | |||||
ArrayList<ResGoodsRecipe> goods = QueryDB.GetGoodsSrecipeList(GoodId); | |||||
BPA_GOODS good= QueryDB.GetGoodsId(GoodId); | |||||
//3.根据物料配方排序Sort步骤分组 | |||||
//region 根据物料配方排序Sort步骤分组 | |||||
LinkedHashMap<Integer, List<ResGoodsRecipe>> rgrs = new LinkedHashMap<>(); | |||||
for (int i = 0; i < goods.size(); i++) { | |||||
if (!rgrs.containsKey(goods.get(i).sort)) | |||||
rgrs.put(goods.get(i).sort, new ArrayList<>()); | |||||
rgrs.get(goods.get(i).sort).add(goods.get(i)); | |||||
} | |||||
//endregion | |||||
//4.根据步骤分组进行物料下发 | |||||
//region 物料下发 | |||||
int count=0; | |||||
for (LinkedHashMap.Entry<Integer, List<ResGoodsRecipe>> entry : rgrs.entrySet()) { | |||||
final Integer key=entry.getKey(); | |||||
//当前一次性下发物料集合 | |||||
List<ResGoodsRecipe> goodsRecipes= entry.getValue(); | |||||
String RecipesNames=""; | |||||
for (ResGoodsRecipe item:goodsRecipes ){RecipesNames+=item.materialName+",";} | |||||
DataBus.getInstance().UpdateGoodsMake(good.id,"步骤【" + key+ "】准备下发物料:"+RecipesNames,count); | |||||
for (int m = 0; m < goodsRecipes.size(); m++) { | |||||
ResGoodsRecipe recipe=goodsRecipes.get(m); | |||||
int materialType = recipe.materialType; | |||||
final String message="步骤【" + key+ "】下发【"+recipe.materialName+"】"; | |||||
if(materialType==1)//1.正常物料 | |||||
{ | |||||
//获取物料关联的料仓信息 | |||||
BPA_SILOS silos=null; | |||||
List<BPA_SILOS> siloslist = QueryDB.GetSolisByMaterialID(recipe.materialID); | |||||
for (BPA_SILOS item:siloslist) | |||||
{ | |||||
//临时屏蔽物料量检测 | |||||
// if(DeviceData.Get().getCallCurrentWeight(item.num)>=recipe.value){silos=item;break;} | |||||
silos=item;break; | |||||
} | |||||
if (silos==null) | |||||
{ | |||||
MessageLog.ShowInfo(message+"下发失败!物料没有管理料仓!"); | |||||
}else | |||||
{ | |||||
MessageLog.ShowInfo(message+"准备下发【" + silos.num + "】号料仓PLC控制命令,需求量:=" + recipe.value); | |||||
DeviceData.Get().setDemandValue((short) recipe.value, silos.num, new IWriteCallBack() { | |||||
@Override | |||||
public void onSuccess() { | |||||
MessageLog.ShowInfo(message+"下发成功!"); | |||||
} | |||||
@Override | |||||
public void onFailure(String ErrorMsg) { | |||||
MessageLog.ShowInfo(message+"下发失败!"+ErrorMsg); | |||||
} | |||||
}); | |||||
} | |||||
}else if (materialType == 2)//果糖 | |||||
{ | |||||
BPA_SUGAR bs = QueryDB.GetsugarId(recipe.materialID); | |||||
ModbusTcpServer.get().WriteBool(bs.plcvar, true); | |||||
Thread.sleep(200); | |||||
ModbusTcpServer.get().WriteBool(bs.plcvar, false); | |||||
MessageLog.ShowInfo(message+"下发成功!"); | |||||
} | |||||
} | |||||
//启动配料 | |||||
DeviceData.Get().setChargeMixtureStart(new IWriteCallBack() { | |||||
@Override | |||||
public void onSuccess() { | |||||
MessageLog.ShowInfo("步骤【" + key+ "】启动配料成功!"); | |||||
} | |||||
@Override | |||||
public void onFailure(String ErrorMsg) { | |||||
MessageLog.ShowInfo("步骤【" + key+ "】启动配料失败!"); | |||||
} | |||||
}); | |||||
//等待配料完成,一直等待 | |||||
final boolean[] IsComplete = {false}; | |||||
DeviceData.Get().OnChargeMixtureCompleteNotify = new IRun() { | |||||
@Override | |||||
public void Run() { | |||||
IsComplete[0] = true; | |||||
MessageLog.ShowInfo("步骤【" + key+ "】配料完成!"); | |||||
} | |||||
}; | |||||
while (!IsComplete[0]) { | |||||
Thread.sleep(100); | |||||
} | |||||
//更新缓存商品制作列表状态 | |||||
count+=goodsRecipes.size(); | |||||
DataBus.getInstance().UpdateGoodsMake(good.id,"步骤【" + key+ "】:"+RecipesNames+"-配料完成",count); | |||||
MessageLog.ShowInfo("步骤【" + key + "】执行完成"); | |||||
} | |||||
//endregion | |||||
//5.设置数据中心商品已制作完成 | |||||
DataBus.getInstance().DeleteGoodsMake(GoodId); | |||||
MessageLog.ShowInfo(good.name+"-订单执行完成"); | |||||
} | |||||
Thread.sleep(1000); | |||||
} | |||||
@Override | |||||
public void RunComplete() throws InterruptedException { | |||||
} | |||||
}); | |||||
} | |||||
/** | |||||
* 订单制作线程新->增加物料检查 | |||||
*/ | |||||
public void InitNew() { | |||||
ThreadManager.Get().StartLong("订单执行业务流程-新", true, new IThread() { | ThreadManager.Get().StartLong("订单执行业务流程-新", true, new IThread() { | ||||
@Override | @Override | ||||
public void Run() throws InterruptedException { | public void Run() throws InterruptedException { | ||||
while (Commoditys.size() > 0) { | while (Commoditys.size() > 0) { | ||||
//1.取出需要制作的订单商品 验证物料是否充足 | //1.取出需要制作的订单商品 验证物料是否充足 | ||||
String GoodId = Commoditys.poll(); | String GoodId = Commoditys.poll(); | ||||
boolean IsMake=true; | |||||
ResultA resultA= DataBus.getInstance().InspectMaterial(GoodId); | |||||
if(resultA.IsMake==false)//如果商品物料不足 | |||||
{ | |||||
DataBus.getInstance().UpdateGoodsMake(GoodId,resultA.Message,0); | |||||
IsMake=false; | |||||
} | |||||
while (!IsMake) { | |||||
IsMake=DataBus.getInstance().InspectMaterial(GoodId).IsMake; | |||||
Thread.sleep(2000); | |||||
} | |||||
// boolean IsMake=true; | |||||
// ResultA resultA= DataBus.getInstance().InspectMaterial(GoodId); | |||||
// if(resultA.IsMake==false)//如果商品物料不足 | |||||
// { | |||||
// DataBus.getInstance().UpdateGoodsMake(GoodId,resultA.Message,0); | |||||
// IsMake=false; | |||||
// } | |||||
// while (!IsMake) { | |||||
// IsMake=DataBus.getInstance().InspectMaterial(GoodId).IsMake; | |||||
// Thread.sleep(2000); | |||||
// } | |||||
//2.获取商品的配方信息 | //2.获取商品的配方信息 | ||||
ArrayList<ResGoodsRecipe> goods = QueryDB.GetGoodsSrecipeList(GoodId); | ArrayList<ResGoodsRecipe> goods = QueryDB.GetGoodsSrecipeList(GoodId); | ||||
BPA_GOODS good= QueryDB.GetGoodsId(GoodId); | BPA_GOODS good= QueryDB.GetGoodsId(GoodId); | ||||
@@ -215,7 +100,7 @@ public class BusinessServer { | |||||
for (int m = 0; m < goodsRecipes.size(); m++) { | for (int m = 0; m < goodsRecipes.size(); m++) { | ||||
ResGoodsRecipe recipe=goodsRecipes.get(m); | ResGoodsRecipe recipe=goodsRecipes.get(m); | ||||
int materialType = recipe.materialType; | int materialType = recipe.materialType; | ||||
final String message="步骤【" + key+ "】下发【"+recipe.materialName+"】"; | |||||
final String message="["+good.name+"]步骤【" + key+ "】下发【"+recipe.materialName+"】"; | |||||
if(materialType==1)//1.正常物料 | if(materialType==1)//1.正常物料 | ||||
{ | { | ||||
//获取物料关联的料仓信息 | //获取物料关联的料仓信息 | ||||
@@ -224,22 +109,23 @@ public class BusinessServer { | |||||
for (BPA_SILOS item:siloslist) | for (BPA_SILOS item:siloslist) | ||||
{ | { | ||||
//临时屏蔽物料量检测 | //临时屏蔽物料量检测 | ||||
if(DeviceData.Get().getCallCurrentWeight(item.num)>=recipe.value){silos=item;break;} | |||||
// if(DeviceData.Get().getCallCurrentWeight(item.num)>=recipe.value){silos=item;break;} | |||||
silos=item; | |||||
} | } | ||||
if (silos==null) | if (silos==null) | ||||
{ | { | ||||
MessageLog.ShowInfo(message+"下发失败!物料没有管理料仓!"); | |||||
MessageLog.ShowUserMessage(UserLogEnum.订单处理日志,message+"下发失败!物料没有管理料仓!"); | |||||
}else | }else | ||||
{ | { | ||||
MessageLog.ShowInfo(message+"准备下发【" + silos.num + "】号料仓PLC控制命令,需求量:=" + recipe.value); | |||||
MessageLog.ShowUserMessage(UserLogEnum.订单处理日志,message+"准备下发【" + silos.num + "】号料仓PLC控制命令,需求量:=" + recipe.value); | |||||
DeviceData.Get().setDemandValue((short) recipe.value, silos.num, new IWriteCallBack() { | DeviceData.Get().setDemandValue((short) recipe.value, silos.num, new IWriteCallBack() { | ||||
@Override | @Override | ||||
public void onSuccess() { | public void onSuccess() { | ||||
MessageLog.ShowInfo(message+"下发成功!"); | |||||
MessageLog.ShowUserMessage(UserLogEnum.订单处理日志,message+"下发成功!"); | |||||
} | } | ||||
@Override | @Override | ||||
public void onFailure(String ErrorMsg) { | public void onFailure(String ErrorMsg) { | ||||
MessageLog.ShowInfo(message+"下发失败!"+ErrorMsg); | |||||
MessageLog.ShowUserMessage(UserLogEnum.订单处理日志,message+"下发失败!"+ErrorMsg); | |||||
} | } | ||||
}); | }); | ||||
} | } | ||||
@@ -249,18 +135,18 @@ public class BusinessServer { | |||||
ModbusTcpServer.get().WriteBool(bs.plcvar, true); | ModbusTcpServer.get().WriteBool(bs.plcvar, true); | ||||
Thread.sleep(200); | Thread.sleep(200); | ||||
ModbusTcpServer.get().WriteBool(bs.plcvar, false); | ModbusTcpServer.get().WriteBool(bs.plcvar, false); | ||||
MessageLog.ShowInfo(message+"下发成功!"); | |||||
MessageLog.ShowUserMessage(UserLogEnum.订单处理日志,message+"下发成功!"); | |||||
} | } | ||||
} | } | ||||
//启动配料 | //启动配料 | ||||
DeviceData.Get().setChargeMixtureStart(new IWriteCallBack() { | DeviceData.Get().setChargeMixtureStart(new IWriteCallBack() { | ||||
@Override | @Override | ||||
public void onSuccess() { | public void onSuccess() { | ||||
MessageLog.ShowInfo("步骤【" + key+ "】启动配料成功!"); | |||||
MessageLog.ShowInfo("["+good.name+"]步骤【" + key+ "】启动配料成功!"); | |||||
} | } | ||||
@Override | @Override | ||||
public void onFailure(String ErrorMsg) { | public void onFailure(String ErrorMsg) { | ||||
MessageLog.ShowInfo("步骤【" + key+ "】启动配料失败!"); | |||||
MessageLog.ShowInfo("["+good.name+"]步骤【" + key+ "】启动配料失败!"); | |||||
} | } | ||||
}); | }); | ||||
@@ -270,7 +156,7 @@ public class BusinessServer { | |||||
@Override | @Override | ||||
public void Run() { | public void Run() { | ||||
IsComplete[0] = true; | IsComplete[0] = true; | ||||
MessageLog.ShowInfo("步骤【" + key+ "】配料完成!"); | |||||
MessageLog.ShowUserMessage(UserLogEnum.订单处理日志,"["+good.name+"]步骤【" + key+ "】配料完成!"); | |||||
} | } | ||||
}; | }; | ||||
while (!IsComplete[0]) { | while (!IsComplete[0]) { | ||||
@@ -278,13 +164,13 @@ public class BusinessServer { | |||||
} | } | ||||
//更新缓存商品制作列表状态 | //更新缓存商品制作列表状态 | ||||
count+=goodsRecipes.size(); | count+=goodsRecipes.size(); | ||||
DataBus.getInstance().UpdateGoodsMake(good.id,"步骤【" + key+ "】:"+RecipesNames+"-配料完成",count); | |||||
MessageLog.ShowInfo("步骤【" + key + "】执行完成"); | |||||
DataBus.getInstance().UpdateGoodsMake(good.id,"步骤【" + key+ "】:"+RecipesNames+"-配料完成!",count); | |||||
MessageLog.ShowUserMessage(UserLogEnum.订单处理日志,"["+good.name+"]步骤【" + key + "】执行完成!"); | |||||
} | } | ||||
//endregion | //endregion | ||||
//5.设置数据中心商品已制作完成 | //5.设置数据中心商品已制作完成 | ||||
DataBus.getInstance().DeleteGoodsMake(GoodId); | DataBus.getInstance().DeleteGoodsMake(GoodId); | ||||
MessageLog.ShowInfo(good.name+"-订单执行完成"); | |||||
MessageLog.ShowUserMessage(UserLogEnum.订单处理日志,"["+good.name+"]-订单执行完成,请取餐!"); | |||||
} | } | ||||
Thread.sleep(1000); | Thread.sleep(1000); | ||||
} | } | ||||
@@ -7,6 +7,7 @@ import android.util.Log; | |||||
import com.example.bpa.Model.IMessageLogNotify; | import com.example.bpa.Model.IMessageLogNotify; | ||||
import com.example.bpa.config.ConfigName; | import com.example.bpa.config.ConfigName; | ||||
import com.example.bpa.db.QueryDB; | import com.example.bpa.db.QueryDB; | ||||
import com.example.bpa.db.mode.BPA_ALERTLOG; | |||||
import com.example.bpa.db.mode.BPA_LOG; | import com.example.bpa.db.mode.BPA_LOG; | ||||
import com.example.bpa.db.mode.BPA_MATERIAL; | import com.example.bpa.db.mode.BPA_MATERIAL; | ||||
import com.example.bpa.db.mode.BPA_SILOS; | import com.example.bpa.db.mode.BPA_SILOS; | ||||
@@ -17,6 +18,8 @@ import com.example.bpa.helper.Json; | |||||
import com.example.bpa.helper.MessageLog; | import com.example.bpa.helper.MessageLog; | ||||
import com.example.bpa.helper.SdCart; | import com.example.bpa.helper.SdCart; | ||||
import com.example.bpa.helper.ToastUtil; | import com.example.bpa.helper.ToastUtil; | ||||
import com.example.bpa.view.mode.AlertLogEnum; | |||||
import com.example.bpa.view.mode.UserLogEnum; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
@@ -39,6 +42,8 @@ public class ICSApp extends Application { | |||||
Main.getInstance(); | Main.getInstance(); | ||||
//5.PLC数据监控 | //5.PLC数据监控 | ||||
ModbusTcpServer.get().Connect(ConfigName.getInstance().Address, ConfigName.getInstance().Post); | ModbusTcpServer.get().Connect(ConfigName.getInstance().Address, ConfigName.getInstance().Post); | ||||
//BusinessServer.Get().Init(); | |||||
} | } | ||||
/** | /** | ||||
@@ -51,13 +56,52 @@ public class ICSApp extends Application { | |||||
Log.e("Error", msg); | Log.e("Error", msg); | ||||
} | } | ||||
@Override | @Override | ||||
public void InfoMsg(String msg, String datetime) { | |||||
public void InfoMsg(String msg) { | |||||
Log.i("Info", msg); | Log.i("Info", msg); | ||||
} | } | ||||
@Override | @Override | ||||
public void WarnMsg(String msg) { | public void WarnMsg(String msg) { | ||||
Log.w("Warn", msg); | Log.w("Warn", msg); | ||||
} | } | ||||
@Override | |||||
public void UserMsg(UserLogEnum type, String msg) { | |||||
BPA_LOG log = new BPA_LOG(); | |||||
log.userID = ConfigName.getInstance().user.userID; | |||||
switch (type.toString()) | |||||
{ | |||||
case "登录日志":log.type=1; | |||||
break; | |||||
case "角色操作日志":log.type=2; | |||||
break; | |||||
case "数据接收":log.type=3; | |||||
break; | |||||
case "上传日志":log.type=4; | |||||
break; | |||||
case "订单处理日志":log.type=5; | |||||
break; | |||||
} | |||||
log.text = msg; | |||||
QueryDB.Addlog(log); | |||||
} | |||||
@Override | |||||
public void AlertMsg(AlertLogEnum type, String msg) { | |||||
BPA_ALERTLOG log = new BPA_ALERTLOG(); | |||||
log.userID = ConfigName.getInstance().user.userID; | |||||
switch (type.toString()) | |||||
{ | |||||
case "异常订单未制作日志":log.type=1; | |||||
break; | |||||
case "料仓缺料日志":log.type=2; | |||||
break; | |||||
case "传感器异常日志":log.type=3; | |||||
break; | |||||
case "其他":log.type=4; | |||||
break; | |||||
} | |||||
log.text = msg; | |||||
QueryDB.AddAlertlog(log); | |||||
} | |||||
}; | }; | ||||
} | } | ||||
/** | /** | ||||
@@ -4,7 +4,9 @@ import com.example.bpa.Model.ResultA; | |||||
import com.example.bpa.R; | import com.example.bpa.R; | ||||
import com.example.bpa.app.DeviceData; | import com.example.bpa.app.DeviceData; | ||||
import com.example.bpa.db.QueryDB; | import com.example.bpa.db.QueryDB; | ||||
import com.example.bpa.db.mode.BPA_ALERTLOG; | |||||
import com.example.bpa.db.mode.BPA_GOODS; | import com.example.bpa.db.mode.BPA_GOODS; | ||||
import com.example.bpa.db.mode.BPA_LOG; | |||||
import com.example.bpa.db.mode.BPA_SILOS; | import com.example.bpa.db.mode.BPA_SILOS; | ||||
import com.example.bpa.view.adapter.maingoods_adapter; | import com.example.bpa.view.adapter.maingoods_adapter; | ||||
import com.example.bpa.view.adapter.makegood_adapter; | import com.example.bpa.view.adapter.makegood_adapter; | ||||
@@ -195,5 +197,14 @@ public class DataBus { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/** | |||||
* 员工操作日志 | |||||
*/ | |||||
public List<BPA_LOG> bpa_logs = new ArrayList<BPA_LOG>(); | |||||
/** | |||||
* 订单操作日志 | |||||
*/ | |||||
public List<BPA_ALERTLOG> bpa_alertlogs = new ArrayList<BPA_ALERTLOG>(); | |||||
//endregion | //endregion | ||||
} | } |
@@ -23,6 +23,7 @@ import com.example.bpa.db.mode.BPA_USER; | |||||
import com.example.bpa.db.mode.ModeBase; | import com.example.bpa.db.mode.ModeBase; | ||||
import com.example.bpa.helper.Tools; | import com.example.bpa.helper.Tools; | ||||
import com.example.bpa.view.mode.ResGoodsRecipe; | import com.example.bpa.view.mode.ResGoodsRecipe; | ||||
import com.example.bpa.view.mode.ResLog; | |||||
import com.example.bpa.view.mode.ResSilosMode; | import com.example.bpa.view.mode.ResSilosMode; | ||||
import java.lang.reflect.Field; | import java.lang.reflect.Field; | ||||
import java.text.SimpleDateFormat; | import java.text.SimpleDateFormat; | ||||
@@ -1009,6 +1010,61 @@ public class QueryDB { | |||||
return data; | return data; | ||||
} | } | ||||
/** | |||||
* | |||||
* @return | |||||
*/ | |||||
public static ArrayList<ResLog> Getlogs(String sta, String stp, int lx, String text) { | |||||
String orderby = Desc_Time_Down;//先按排序 创建时间倒序 | |||||
String where = "isDelete=? and createTime>=? and createTime<=?"; | |||||
String[] args = new String[]{"0", sta,stp}; | |||||
if(lx!=0) | |||||
{ | |||||
where = "isDelete=? and createTime>=? and createTime<=? and type=?"; | |||||
args = new String[]{"0", sta,stp,String.valueOf(lx)}; | |||||
if(!text.isEmpty()) | |||||
{ | |||||
where = "isDelete=? and createTime>=? and createTime<=? and text like ? and type=?"; | |||||
args = new String[]{"0", sta,stp,"%"+text+"%",String.valueOf(lx)}; | |||||
} | |||||
}else | |||||
{ | |||||
if(!text.isEmpty()) | |||||
{ | |||||
where = "isDelete=? and createTime>=? and createTime<=? and text like ?"; | |||||
args = new String[]{"0", sta,stp,"%"+text+"%"}; | |||||
} | |||||
} | |||||
ArrayList<BPA_USER> Users=GetUserALL(); | |||||
ArrayList<ResLog> data = new ArrayList<>(); | |||||
ArrayList<Object> obj = Get(BPA_LOG.class, where, args, orderby); | |||||
for (Object k : obj) { | |||||
BPA_LOG o=(BPA_LOG) k; | |||||
ResLog log=new ResLog(); | |||||
log.type=o.type; | |||||
log.text=o.text; | |||||
log.id=o.id; | |||||
log.createTime=o.createTime; | |||||
log.updateTime=o.updateTime; | |||||
log.deleteTime=o.deleteTime; | |||||
log.deviceID=o.deviceID; | |||||
log.userID=o.userID; | |||||
log.isDelete=o.isDelete; | |||||
log.exp=o.exp; | |||||
BPA_USER user=null; | |||||
for (BPA_USER i:Users) | |||||
{ | |||||
if(i.id.equals(log.userID)){user =i; break;} | |||||
} | |||||
if(user!=null) | |||||
{ | |||||
log.Name=user.name; | |||||
} | |||||
data.add(log); | |||||
} | |||||
return data; | |||||
} | |||||
/** | /** | ||||
* 获取所有今日日志 | * 获取所有今日日志 | ||||
@@ -0,0 +1,86 @@ | |||||
package com.example.bpa.helper; | |||||
import java.text.ParseException; | |||||
import java.text.SimpleDateFormat; | |||||
import java.util.Date; | |||||
public class DateUtils { | |||||
/** | |||||
* 比较两个日期的大小,日期格式为yyyy-MM-dd | |||||
* | |||||
* @param str1 the first date | |||||
* @param str2 the second date | |||||
* @return true <br/>false | |||||
*/ | |||||
public static boolean isDateOneBigger(String str1, String str2) { | |||||
boolean isBigger = false; | |||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |||||
Date dt1 = null; | |||||
Date dt2 = null; | |||||
try { | |||||
dt1 = sdf.parse(str1); | |||||
dt2 = sdf.parse(str2); | |||||
} catch (ParseException e) { | |||||
e.printStackTrace(); | |||||
} | |||||
if (dt1.getTime() > dt2.getTime()) { | |||||
isBigger = true; | |||||
} else if (dt1.getTime() < dt2.getTime()) { | |||||
isBigger = false; | |||||
} | |||||
return isBigger; | |||||
} | |||||
/** | |||||
* 比较两个日期的大小,日期格式为yyyy-MM-dd | |||||
* | |||||
* @param str1 the first date | |||||
* @param str2 the second date | |||||
* @return true <br/>false | |||||
*/ | |||||
public static boolean isDate2Bigger(String str1, String str2) { | |||||
boolean isBigger = false; | |||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |||||
Date dt1 = null; | |||||
Date dt2 = null; | |||||
try { | |||||
dt1 = sdf.parse(str1); | |||||
dt2 = sdf.parse(str2); | |||||
} catch (ParseException e) { | |||||
e.printStackTrace(); | |||||
} | |||||
if (dt1.getTime() > dt2.getTime()) { | |||||
isBigger = false; | |||||
} else if (dt1.getTime() <= dt2.getTime()) { | |||||
isBigger = true; | |||||
} | |||||
return isBigger; | |||||
} | |||||
/** | |||||
* 比较当前时间和服务器返回时间大小 | |||||
* | |||||
* @param nowDate | |||||
* @param compareDate | |||||
* @return | |||||
*/ | |||||
public static boolean compareDate(String nowDate, String compareDate) { | |||||
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |||||
try { | |||||
Date now = df.parse(nowDate); | |||||
Date compare = df.parse(compareDate); | |||||
if (now.before(compare)) { | |||||
return true; | |||||
} else { | |||||
return false; | |||||
} | |||||
} catch (ParseException e) { | |||||
e.printStackTrace(); | |||||
return false; | |||||
} | |||||
} | |||||
} | |||||
@@ -2,6 +2,8 @@ package com.example.bpa.helper; | |||||
import com.example.bpa.Model.IMessageLogNotify; | import com.example.bpa.Model.IMessageLogNotify; | ||||
import com.example.bpa.Model.IRun; | import com.example.bpa.Model.IRun; | ||||
import com.example.bpa.view.mode.AlertLogEnum; | |||||
import com.example.bpa.view.mode.UserLogEnum; | |||||
import java.text.SimpleDateFormat; | import java.text.SimpleDateFormat; | ||||
import java.util.Date; | import java.util.Date; | ||||
@@ -22,7 +24,7 @@ public class MessageLog { | |||||
String tempMsg = formatter.format(date) + ":" + msg; | String tempMsg = formatter.format(date) + ":" + msg; | ||||
MsgInfo = tempMsg + "\r\n" + MsgInfo; | MsgInfo = tempMsg + "\r\n" + MsgInfo; | ||||
if (MsgNotify != null) | if (MsgNotify != null) | ||||
MsgNotify.InfoMsg(tempMsg, formatter.format(date)); | |||||
MsgNotify.InfoMsg(tempMsg); | |||||
if (AddNotify != null) AddNotify.Run(); | if (AddNotify != null) AddNotify.Run(); | ||||
} | } | ||||
@@ -45,4 +47,38 @@ public class MessageLog { | |||||
MsgNotify.ErrorMsg(tempMsg); | MsgNotify.ErrorMsg(tempMsg); | ||||
if (AddNotify != null) AddNotify.Run(); | if (AddNotify != null) AddNotify.Run(); | ||||
} | } | ||||
/** | |||||
* 用户操作日志 | |||||
* @param type | |||||
* @param msg | |||||
*/ | |||||
public static void ShowUserMessage(UserLogEnum type, String msg) | |||||
{ | |||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |||||
Date date = new Date(); | |||||
String tempMsg = formatter.format(date) + ":" + msg; | |||||
MsgInfo = tempMsg + "\r\n" + MsgInfo; | |||||
if (MsgNotify != null) | |||||
MsgNotify.UserMsg(type,tempMsg); | |||||
if (AddNotify != null) AddNotify.Run(); | |||||
} | |||||
/** | |||||
* 预警日志 | |||||
* @param type | |||||
* @param msg | |||||
*/ | |||||
public static void ShowAlertMessage(AlertLogEnum type, String msg) | |||||
{ | |||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |||||
Date date = new Date(); | |||||
String tempMsg = formatter.format(date) + ":" + msg; | |||||
MsgInfo = tempMsg + "\r\n" + MsgInfo; | |||||
if (MsgNotify != null) | |||||
MsgNotify.AlertMsg(type,tempMsg); | |||||
if (AddNotify != null) AddNotify.Run(); | |||||
} | |||||
} | } |
@@ -0,0 +1,109 @@ | |||||
package com.example.bpa.view.adapter; | |||||
import android.app.Activity; | |||||
import android.content.Context; | |||||
import android.content.ContextWrapper; | |||||
import android.view.LayoutInflater; | |||||
import android.view.View; | |||||
import android.view.ViewGroup; | |||||
import android.widget.ArrayAdapter; | |||||
import android.widget.Button; | |||||
import android.widget.ImageView; | |||||
import android.widget.ProgressBar; | |||||
import android.widget.TextView; | |||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | |||||
import androidx.recyclerview.widget.RecyclerView; | |||||
import com.example.bpa.R; | |||||
import com.example.bpa.config.ConfigName; | |||||
import com.example.bpa.config.DataBus; | |||||
import com.example.bpa.db.mode.BPA_LOG; | |||||
import com.example.bpa.db.mode.BPA_MATERIAL; | |||||
import com.example.bpa.helper.T; | |||||
import com.example.bpa.view.inteface.MyClickListener; | |||||
import com.example.bpa.view.mode.MakeStatus; | |||||
import com.example.bpa.view.mode.ResGoodsMake; | |||||
import com.example.bpa.view.mode.ResLog; | |||||
import java.util.List; | |||||
public class ygcarz_adapter extends ArrayAdapter<ResLog> { | |||||
private List<ResLog> datas; | |||||
private Context context; | |||||
private int resource; | |||||
public ygcarz_adapter(@NonNull Context context, int resource, @NonNull List<ResLog> objects) { | |||||
super(context, resource, objects); | |||||
this.context = context; | |||||
this.resource=resource; | |||||
datas=objects; | |||||
} | |||||
//每个子项被滚动到屏幕内的时候会被调用 | |||||
@NonNull | |||||
@Override | |||||
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { | |||||
ResLog log = (ResLog) getItem(position);//得到当前项选中item实例 | |||||
//为每一个子项加载设定的布局 | |||||
View view = LayoutInflater.from(getContext()).inflate(this.resource, parent, false); | |||||
//分别获取 image view 和 textview 的实例 | |||||
TextView name,type,time,message; | |||||
name = (TextView) view.findViewById(R.id.name); | |||||
type = (TextView) view.findViewById(R.id.type); | |||||
time = (TextView) view.findViewById(R.id.time); | |||||
message = (TextView) view.findViewById(R.id.message); | |||||
name.setText(log.Name); | |||||
switch (log.type) | |||||
{ | |||||
case 1: | |||||
type.setText("登录日志"); | |||||
break; | |||||
case 2: | |||||
type.setText("角色操作日志"); | |||||
break; | |||||
case 3: | |||||
type.setText("数据接收"); | |||||
break; | |||||
case 4: | |||||
type.setText("上传日志"); | |||||
break; | |||||
case 5: | |||||
type.setText("订单处理日志"); | |||||
break; | |||||
} | |||||
time.setText(log.createTime); | |||||
message.setText(log.text); | |||||
return view; | |||||
} | |||||
private Activity findActivity(@NonNull Context context) { | |||||
if (context instanceof Activity) { | |||||
return (Activity) context; | |||||
} else if (context instanceof ContextWrapper) { | |||||
return findActivity(((ContextWrapper) context).getBaseContext()); | |||||
} else { | |||||
return null; | |||||
} | |||||
} | |||||
/** | |||||
* 刷新 | |||||
* @param | |||||
*/ | |||||
public void refresh(){ | |||||
Activity activity= findActivity(context); | |||||
if(activity!=null) | |||||
{ | |||||
activity.runOnUiThread(new Runnable() { | |||||
@Override | |||||
public void run() { | |||||
try { | |||||
notifyDataSetChanged(); | |||||
} catch (Exception e) { | |||||
} | |||||
} | |||||
}); | |||||
} | |||||
} | |||||
} |
@@ -54,30 +54,6 @@ public class SystemSetFragment extends Fragment implements View.OnClickListener | |||||
Systemparameter = new systemparameter(); | Systemparameter = new systemparameter(); | ||||
btn_system_set = view.findViewById(R.id.stparameter); | btn_system_set = view.findViewById(R.id.stparameter); | ||||
btn_lc_set = view.findViewById(R.id.lcparameter); | btn_lc_set = view.findViewById(R.id.lcparameter); | ||||
MessageLog.MsgNotify = new IMessageLogNotify() { | |||||
@Override | |||||
public void ErrorMsg(String msg) { | |||||
Log.e("Error", msg); | |||||
} | |||||
@Override | |||||
public void InfoMsg(String msg, String datetime) { | |||||
BPA_LOG log = new BPA_LOG(); | |||||
log.userID = ConfigName.getInstance().user.userID; | |||||
log.createTime = datetime; | |||||
log.type = 1; | |||||
log.text = msg; | |||||
QueryDB.Addlog(log); | |||||
Log.i("Info", msg); | |||||
} | |||||
@Override | |||||
public void WarnMsg(String msg) { | |||||
Log.w("Warn", msg); | |||||
} | |||||
}; | |||||
//默认打开参数设置界面 | //默认打开参数设置界面 | ||||
ShowFragment(Systemparameter); | ShowFragment(Systemparameter); | ||||
} | } | ||||
@@ -1,20 +1,45 @@ | |||||
package com.example.bpa.view.from; | package com.example.bpa.view.from; | ||||
import androidx.appcompat.app.AppCompatActivity; | import androidx.appcompat.app.AppCompatActivity; | ||||
import androidx.recyclerview.widget.LinearLayoutManager; | |||||
import android.graphics.Color; | |||||
import android.os.Bundle; | import android.os.Bundle; | ||||
import android.view.View; | import android.view.View; | ||||
import android.view.Window; | import android.view.Window; | ||||
import android.view.WindowManager; | import android.view.WindowManager; | ||||
import android.widget.ArrayAdapter; | |||||
import android.widget.Button; | |||||
import android.widget.EditText; | |||||
import android.widget.ImageView; | import android.widget.ImageView; | ||||
import android.widget.ListView; | |||||
import android.widget.Spinner; | |||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import com.bigkoo.pickerview.TimePickerView; | |||||
import com.example.bpa.R; | import com.example.bpa.R; | ||||
import com.example.bpa.config.DataBus; | |||||
import com.example.bpa.db.QueryDB; | |||||
import com.example.bpa.db.mode.BPA_LOG; | |||||
import com.example.bpa.db.mode.BPA_MATERIAL; | |||||
import com.example.bpa.helper.DateUtils; | |||||
import com.example.bpa.helper.T; | |||||
import com.example.bpa.view.adapter.makegood_adapter; | |||||
import com.example.bpa.view.adapter.wl_adapter; | |||||
import com.example.bpa.view.adapter.ygcarz_adapter; | |||||
import com.example.bpa.view.mode.ResLog; | |||||
import java.text.SimpleDateFormat; | |||||
import java.util.ArrayList; | |||||
import java.util.Calendar; | |||||
import java.util.Date; | |||||
import java.util.LinkedHashMap; | |||||
import java.util.Map; | |||||
/** | /** | ||||
* 员工操作日志 | * 员工操作日志 | ||||
*/ | */ | ||||
public class ygczrz_activity extends AppCompatActivity implements View.OnClickListener{ | |||||
public class ygczrz_activity extends AppCompatActivity implements View.OnClickListener { | |||||
//region 变量 | //region 变量 | ||||
/** | /** | ||||
* 返回按钮 | * 返回按钮 | ||||
@@ -26,6 +51,42 @@ public class ygczrz_activity extends AppCompatActivity implements View.OnClickLi | |||||
TextView gongneng_title; | TextView gongneng_title; | ||||
//endregion | //endregion | ||||
//region 操作变量 | |||||
/** | |||||
* 输入框 | |||||
*/ | |||||
TextView edittext; | |||||
/** | |||||
* 查询按钮 | |||||
*/ | |||||
Button button; | |||||
/** | |||||
* 表格显示 | |||||
*/ | |||||
ListView datatab; | |||||
/** | |||||
* 日志数据 | |||||
*/ | |||||
ArrayList<ResLog> bpa_logs = new ArrayList<>(); | |||||
/** | |||||
* 员工操作日志控制器 | |||||
*/ | |||||
ygcarz_adapter ygcarz_adapter; | |||||
/** | |||||
* 日期选择器 | |||||
*/ | |||||
TimePickerView pvTime; | |||||
/** | |||||
* 开始时间-结束时间 | |||||
*/ | |||||
EditText starttime, stoptime; | |||||
/** | |||||
* 日志类型 | |||||
*/ | |||||
Spinner rzlx; | |||||
Map<String,Integer> lx_map = new LinkedHashMap<>(); | |||||
//endregion | |||||
//region 私有函数 | //region 私有函数 | ||||
@Override | @Override | ||||
protected void onCreate(Bundle savedInstanceState) { | protected void onCreate(Bundle savedInstanceState) { | ||||
@@ -43,14 +104,81 @@ public class ygczrz_activity extends AppCompatActivity implements View.OnClickLi | |||||
/** | /** | ||||
* 初始化 | * 初始化 | ||||
*/ | */ | ||||
private void Init(){ | |||||
private void Init() { | |||||
gongneng_fanhui = this.findViewById(R.id.gongneng_fanhui); | gongneng_fanhui = this.findViewById(R.id.gongneng_fanhui); | ||||
gongneng_title = this.findViewById(R.id.gongneng_title); | gongneng_title = this.findViewById(R.id.gongneng_title); | ||||
edittext = this.findViewById(R.id.edittext); | |||||
button = this.findViewById(R.id.button); | |||||
datatab = this.findViewById(R.id.datatab); | |||||
starttime = this.findViewById(R.id.starttime); | |||||
stoptime = this.findViewById(R.id.stoptime); | |||||
rzlx = this.findViewById(R.id.rzlx); | |||||
//通过Activity.getIntent()获取当前页面接收到的Intent。 getXxxExtra方法获取Intent传递过来的数据 | //通过Activity.getIntent()获取当前页面接收到的Intent。 getXxxExtra方法获取Intent传递过来的数据 | ||||
String msg=getIntent().getStringExtra("data"); | |||||
String msg = getIntent().getStringExtra("data"); | |||||
gongneng_title.setText(msg); | gongneng_title.setText(msg); | ||||
lx_map.put("全部日志",0); | |||||
lx_map.put("登录日志",1); | |||||
lx_map.put("角色操作日志",2); | |||||
lx_map.put("数据接收",3); | |||||
lx_map.put("上传日志",4); | |||||
lx_map.put("订单处理日志",5); | |||||
ArrayAdapter<String> adapter2 = new ArrayAdapter<>(this, R.layout.spinner_text_item, new ArrayList<>(lx_map.keySet())); | |||||
adapter2.setDropDownViewResource(R.layout.spinner_dropdown_item); | |||||
rzlx.setAdapter(adapter2); | |||||
starttime.setText(new SimpleDateFormat("yyyy-MM-dd 00:00:00").format(new Date())); | |||||
stoptime.setText(new SimpleDateFormat("yyyy-MM-dd 23:59:59").format(new Date())); | |||||
starttime.setOnClickListener(new View.OnClickListener() { | |||||
@Override | |||||
public void onClick(View view) { | |||||
if (pvTime != null) { | |||||
pvTime.show(starttime); | |||||
} | |||||
} | |||||
}); | |||||
stoptime.setOnClickListener(new View.OnClickListener() { | |||||
@Override | |||||
public void onClick(View view) { | |||||
if (pvTime != null) { | |||||
pvTime.show(stoptime); | |||||
} | |||||
} | |||||
}); | |||||
CalendarTime(); | |||||
Initdata(); | |||||
} | |||||
((TextView)this.findViewById(R.id.test_view)).setText(msg); | |||||
/** | |||||
* CalendarTime | |||||
* 时间选择器 | |||||
*/ | |||||
public void CalendarTime() { | |||||
//控制时间范围(如果不设置范围,则使用默认时间1900-2100年,此段代码可注释) | |||||
//因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11 | |||||
Calendar selectedDate = Calendar.getInstance(); | |||||
Calendar startDate = Calendar.getInstance(); | |||||
startDate.set(2023, 0, 23); | |||||
Calendar endDate = Calendar.getInstance(); | |||||
endDate.set(2099, 11, 28); | |||||
//时间选择器 | |||||
pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() { | |||||
@Override | |||||
public void onTimeSelect(Date date, View v) {//选中事件回调 | |||||
// 这里回调过来的v,就是show()方法里面所添加的 View 参数,如果show的时候没有添加参数,v则为null | |||||
TextView btn = (TextView) v; | |||||
btn.setText(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)); | |||||
} | |||||
}) | |||||
//年月日时分秒 的显示与否,不设置则默认全部显示 | |||||
.setType(new boolean[]{true, true, true, true, true, false}) | |||||
.setLabel("年", "月", "日", "时", "分", "秒") | |||||
.isCenterLabel(true) | |||||
.setDividerColor(Color.DKGRAY) | |||||
.setContentSize(16)//字号 | |||||
.setDate(selectedDate) | |||||
.setRangDate(startDate, endDate) | |||||
.setDecorView(null) | |||||
.build(); | |||||
} | } | ||||
/** | /** | ||||
@@ -58,10 +186,34 @@ public class ygczrz_activity extends AppCompatActivity implements View.OnClickLi | |||||
*/ | */ | ||||
private void initEvents() { | private void initEvents() { | ||||
gongneng_fanhui.setOnClickListener(this); | gongneng_fanhui.setOnClickListener(this); | ||||
button.setOnClickListener(this); | |||||
} | |||||
/** | |||||
* 初始化数据加载 | |||||
*/ | |||||
public void Initdata() { | |||||
try { | |||||
String str= starttime.getText().toString(); | |||||
String stop= stoptime.getText().toString(); | |||||
if(DateUtils.compareDate(stop,str)) | |||||
{ | |||||
T.show(ygczrz_activity.this,"开始时间不能大于结束时间!!!"); | |||||
return; | |||||
} | |||||
String lx= rzlx.getSelectedItem().toString(); | |||||
String text= edittext.getText().toString(); | |||||
bpa_logs= QueryDB.Getlogs(str,stop, lx_map.get(lx),text); | |||||
ygcarz_adapter = new ygcarz_adapter(ygczrz_activity.this,R.layout.ygcarz_item,bpa_logs); | |||||
datatab.setAdapter(ygcarz_adapter); | |||||
} catch (Exception e) { | |||||
} | |||||
} | } | ||||
//endregion | //endregion | ||||
//region 点击事件 | //region 点击事件 | ||||
/** | /** | ||||
* 本页面点击事件监听 | * 本页面点击事件监听 | ||||
* | * | ||||
@@ -73,6 +225,9 @@ public class ygczrz_activity extends AppCompatActivity implements View.OnClickLi | |||||
case R.id.gongneng_fanhui://返回按钮 | case R.id.gongneng_fanhui://返回按钮 | ||||
this.finish(); | this.finish(); | ||||
break; | break; | ||||
case R.id.button://查询按钮 | |||||
Initdata(); | |||||
break; | |||||
} | } | ||||
} | } | ||||
//endregion | //endregion |
@@ -0,0 +1,8 @@ | |||||
package com.example.bpa.view.mode; | |||||
public enum AlertLogEnum { | |||||
异常订单未制作日志, | |||||
料仓缺料日志, | |||||
传感器异常日志, | |||||
其他 | |||||
} |
@@ -0,0 +1,13 @@ | |||||
package com.example.bpa.view.mode; | |||||
import com.example.bpa.db.mode.BPA_LOG; | |||||
/** | |||||
* 返回Log信息 | |||||
*/ | |||||
public class ResLog extends BPA_LOG { | |||||
/** | |||||
* 用户名称 | |||||
*/ | |||||
public String Name; | |||||
} |
@@ -0,0 +1,9 @@ | |||||
package com.example.bpa.view.mode; | |||||
public enum UserLogEnum { | |||||
登录日志, | |||||
角色操作日志, | |||||
数据接收, | |||||
上传日志, | |||||
订单处理日志 | |||||
} |
@@ -0,0 +1,77 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<RelativeLayout | |||||
xmlns:android="http://schemas.android.com/apk/res/android" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:orientation="horizontal"> | |||||
<TableLayout | |||||
android:background="@mipmap/bgxz" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:gravity="center" | |||||
android:layout_gravity="center" | |||||
android:stretchColumns="0"> | |||||
<TableRow | |||||
android:layout_width="fill_parent" | |||||
android:layout_height="wrap_content" | |||||
android:gravity="center_horizontal"> | |||||
<RelativeLayout | |||||
android:layout_width="0dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1"> | |||||
<TextView | |||||
android:id="@+id/name" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="20dp" | |||||
android:layout_alignParentLeft="true" | |||||
android:text="员工名称" | |||||
android:textColor="@color/foreground" | |||||
android:textSize="@dimen/textSize" /> | |||||
</RelativeLayout> | |||||
<RelativeLayout | |||||
android:layout_width="0dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1"> | |||||
<TextView | |||||
android:id="@+id/type" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="20dp" | |||||
android:layout_alignParentLeft="true" | |||||
android:text="日志类型" | |||||
android:textColor="@color/foreground" | |||||
android:textSize="@dimen/textSize" /> | |||||
</RelativeLayout> | |||||
<RelativeLayout | |||||
android:layout_width="0dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="2"> | |||||
<TextView | |||||
android:id="@+id/time" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="20dp" | |||||
android:layout_alignParentLeft="true" | |||||
android:text="日志时间" | |||||
android:textColor="@color/foreground" | |||||
android:textSize="@dimen/textSize" /> | |||||
</RelativeLayout> | |||||
<RelativeLayout | |||||
android:layout_width="0dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="4"> | |||||
<TextView | |||||
android:id="@+id/message" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="20dp" | |||||
android:layout_alignParentLeft="true" | |||||
android:text="日志描述日志描述" | |||||
android:textColor="@color/foreground" | |||||
android:textSize="@dimen/textSize" /> | |||||
</RelativeLayout> | |||||
</TableRow> | |||||
</TableLayout> | |||||
</RelativeLayout> |
@@ -79,13 +79,195 @@ | |||||
android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
android:layout_height="match_parent" | android:layout_height="match_parent" | ||||
android:layout_margin="10dp"> | android:layout_margin="10dp"> | ||||
<TextView | |||||
android:id="@+id/test_view" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:textColor="@color/foreground" | |||||
android:textSize="@dimen/TitleSize"> | |||||
</TextView> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:orientation="vertical"> | |||||
<RelativeLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="50dp"> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:layout_alignParentBottom="true"> | |||||
<EditText | |||||
android:id="@+id/starttime" | |||||
android:layout_width="140dp" | |||||
android:layout_height="wrap_content" | |||||
android:inputType="text" | |||||
android:padding="3dp" | |||||
android:textColor="@color/foreground" | |||||
android:theme="@style/MyEditText1" | |||||
android:background="@drawable/round_corners_bg" | |||||
android:layout_marginLeft="5dp" | |||||
android:maxLines="1" | |||||
android:focusable="false" | |||||
android:text="2023-02-33 00:00:00" | |||||
android:textSize="@dimen/textSize"/> | |||||
<TextView | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="5dp" | |||||
android:textColor="@color/foreground" | |||||
android:text="--"> | |||||
</TextView> | |||||
<EditText | |||||
android:id="@+id/stoptime" | |||||
android:layout_width="140dp" | |||||
android:layout_height="wrap_content" | |||||
android:inputType="text" | |||||
android:padding="3dp" | |||||
android:focusable="false" | |||||
android:textColor="@color/foreground" | |||||
android:theme="@style/MyEditText1" | |||||
android:background="@drawable/round_corners_bg" | |||||
android:layout_marginLeft="5dp" | |||||
android:maxLines="1" | |||||
android:text="2023-02-33 00:00:00" | |||||
android:textSize="@dimen/textSize"/> | |||||
<TextView | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="5dp" | |||||
android:textColor="@color/foreground" | |||||
android:text="日志类型"> | |||||
</TextView> | |||||
<Spinner | |||||
android:id="@+id/rzlx" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
style="@style/commonSpinnerStyle"/> | |||||
<EditText | |||||
android:id="@+id/edittext" | |||||
android:layout_width="200dp" | |||||
android:layout_height="wrap_content" | |||||
android:inputType="text" | |||||
android:padding="3dp" | |||||
android:textColor="@color/foreground" | |||||
android:theme="@style/MyEditText1" | |||||
android:background="@drawable/round_corners_bg" | |||||
android:layout_marginLeft="5dp" | |||||
android:hint="请输入查询条件" | |||||
android:maxLines="1" | |||||
android:textSize="@dimen/textSize"/> | |||||
<Button | |||||
android:id="@+id/button" | |||||
android:text="查询" | |||||
android:background="@drawable/btn_button" | |||||
android:textSize="@dimen/textSize" | |||||
android:textColor="@color/foreground" | |||||
android:layout_marginLeft="5dp" | |||||
android:layout_gravity="center" | |||||
android:layout_width="60dp" | |||||
android:layout_height="26dp" | |||||
/> | |||||
</LinearLayout> | |||||
</RelativeLayout> | |||||
<RelativeLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent"> | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:layout_marginTop="10dp" | |||||
android:orientation="vertical"> | |||||
<RelativeLayout | |||||
android:layout_width="match_parent" | |||||
android:background="@mipmap/bgbtbj" | |||||
android:layout_height="26dp"> | |||||
<View | |||||
android:layout_width="match_parent" | |||||
android:layout_height="1dp" | |||||
android:background="#FF03668F" /> | |||||
<View | |||||
android:layout_width="match_parent" | |||||
android:layout_height="1dp" | |||||
android:layout_alignParentBottom="true" | |||||
android:background="#FF03668F" /> | |||||
<TableLayout | |||||
android:layout_centerVertical="true" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:gravity="center" | |||||
android:layout_gravity="center" | |||||
android:stretchColumns="0"> | |||||
<TableRow | |||||
android:layout_width="fill_parent" | |||||
android:layout_height="wrap_content" | |||||
android:gravity="center_horizontal"> | |||||
<RelativeLayout | |||||
android:layout_width="0dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1"> | |||||
<TextView | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="20dp" | |||||
android:layout_alignParentLeft="true" | |||||
android:text="员工名称" | |||||
android:textColor="@color/dataGridColumnHeaderColor" | |||||
android:textSize="@dimen/textSize" /> | |||||
</RelativeLayout> | |||||
<RelativeLayout | |||||
android:layout_width="0dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="1"> | |||||
<TextView | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="20dp" | |||||
android:layout_alignParentLeft="true" | |||||
android:text="日志类型" | |||||
android:textColor="@color/dataGridColumnHeaderColor" | |||||
android:textSize="@dimen/textSize" /> | |||||
</RelativeLayout> | |||||
<RelativeLayout | |||||
android:layout_width="0dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="2"> | |||||
<TextView | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="20dp" | |||||
android:layout_alignParentLeft="true" | |||||
android:text="日志时间" | |||||
android:textColor="@color/dataGridColumnHeaderColor" | |||||
android:textSize="@dimen/textSize" /> | |||||
</RelativeLayout> | |||||
<RelativeLayout | |||||
android:layout_width="0dp" | |||||
android:layout_height="wrap_content" | |||||
android:layout_weight="4"> | |||||
<TextView | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="20dp" | |||||
android:layout_alignParentLeft="true" | |||||
android:text="日志描述" | |||||
android:textColor="@color/dataGridColumnHeaderColor" | |||||
android:textSize="@dimen/textSize" /> | |||||
</RelativeLayout> | |||||
</TableRow> | |||||
</TableLayout> | |||||
</RelativeLayout> | |||||
<RelativeLayout | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent"> | |||||
<ListView | |||||
android:id="@+id/datatab" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="match_parent" | |||||
android:divider="#00000000" | |||||
android:dividerHeight="3dp" | |||||
android:layout_marginTop="3dp" | |||||
/> | |||||
</RelativeLayout> | |||||
</LinearLayout> | |||||
</RelativeLayout> | |||||
</LinearLayout> | |||||
</RelativeLayout> | </RelativeLayout> | ||||
</RelativeLayout> | </RelativeLayout> | ||||
</LinearLayout> | </LinearLayout> |