|
|
|
@ -62,10 +62,15 @@ public class TyreSearchActivity extends AppCompatActivity {
|
|
|
|
EditText inSantext;
|
|
|
|
EditText inSantext;
|
|
|
|
Button basemessage;
|
|
|
|
Button basemessage;
|
|
|
|
Button button;
|
|
|
|
Button button;
|
|
|
|
|
|
|
|
Button scanButton;
|
|
|
|
TextView pinpai;
|
|
|
|
TextView pinpai;
|
|
|
|
TextView xinghao;
|
|
|
|
TextView xinghao;
|
|
|
|
TextView cengji;
|
|
|
|
TextView cengji;
|
|
|
|
TextView huawen;
|
|
|
|
TextView huawen;
|
|
|
|
|
|
|
|
TextView huawendepth;
|
|
|
|
|
|
|
|
TextView shengyuhuawen;
|
|
|
|
|
|
|
|
TextView zhuangtai;
|
|
|
|
|
|
|
|
TextView qiya;
|
|
|
|
private int power = 0;
|
|
|
|
private int power = 0;
|
|
|
|
private int area = 0;
|
|
|
|
private int area = 0;
|
|
|
|
private SharedPreferences shared;
|
|
|
|
private SharedPreferences shared;
|
|
|
|
@ -84,7 +89,7 @@ public class TyreSearchActivity extends AppCompatActivity {
|
|
|
|
binding = ActivityTyresearchBinding.inflate(getLayoutInflater());
|
|
|
|
binding = ActivityTyresearchBinding.inflate(getLayoutInflater());
|
|
|
|
setContentView(binding.getRoot());
|
|
|
|
setContentView(binding.getRoot());
|
|
|
|
bindViews();
|
|
|
|
bindViews();
|
|
|
|
// setupClickListeners();
|
|
|
|
setupClickListeners();
|
|
|
|
manager = MyApplication.getManager();
|
|
|
|
manager = MyApplication.getManager();
|
|
|
|
initView();
|
|
|
|
initView();
|
|
|
|
Thread thread = new InventoryThread();
|
|
|
|
Thread thread = new InventoryThread();
|
|
|
|
@ -127,29 +132,29 @@ public class TyreSearchActivity extends AppCompatActivity {
|
|
|
|
inSantext = binding.inSantext;
|
|
|
|
inSantext = binding.inSantext;
|
|
|
|
// basemessage = binding.basemessage;
|
|
|
|
// basemessage = binding.basemessage;
|
|
|
|
button = binding.button;
|
|
|
|
button = binding.button;
|
|
|
|
|
|
|
|
scanButton = binding.scanButton;
|
|
|
|
pinpai = binding.pinpai;
|
|
|
|
pinpai = binding.pinpai;
|
|
|
|
xinghao = binding.xinghao;
|
|
|
|
xinghao = binding.xinghao;
|
|
|
|
cengji = binding.cengji;
|
|
|
|
cengji = binding.cengji;
|
|
|
|
huawen = binding.huawen;
|
|
|
|
huawen = binding.huawen;
|
|
|
|
|
|
|
|
huawendepth = binding.huawendepth;
|
|
|
|
|
|
|
|
shengyuhuawen = binding.shengyuhuawen;
|
|
|
|
|
|
|
|
scanButton = binding.scanButton;
|
|
|
|
|
|
|
|
zhuangtai = binding.zhuangtai;
|
|
|
|
|
|
|
|
qiya = binding.qiya;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// private void setupClickListeners() {
|
|
|
|
private void setupClickListeners() {
|
|
|
|
// binding.scanButton.setOnClickListener(v -> {
|
|
|
|
binding.scanButton.setOnClickListener(v -> {
|
|
|
|
// if (!startFlag) {
|
|
|
|
find(textVersion.getText().toString().trim());
|
|
|
|
// startFlag = true;
|
|
|
|
finish();
|
|
|
|
// binding.scanButton.setText("停 止");
|
|
|
|
});
|
|
|
|
// } else {
|
|
|
|
binding.button.setOnClickListener(v -> {
|
|
|
|
// startFlag = false;
|
|
|
|
Intent intent = new Intent(this, HomePageActivity.class);
|
|
|
|
// binding.scanButton.setText("扫 描");
|
|
|
|
startActivity(intent);
|
|
|
|
// }
|
|
|
|
finish();
|
|
|
|
// });
|
|
|
|
});
|
|
|
|
// binding.button.setOnClickListener(v -> {
|
|
|
|
}
|
|
|
|
// // Intent intent = new Intent(this, HomePageActivity.class);
|
|
|
|
|
|
|
|
// // startActivity(intent);
|
|
|
|
|
|
|
|
// finish();
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -200,7 +205,10 @@ public class TyreSearchActivity extends AppCompatActivity {
|
|
|
|
xinghao = binding.xinghao;
|
|
|
|
xinghao = binding.xinghao;
|
|
|
|
cengji = binding.cengji;
|
|
|
|
cengji = binding.cengji;
|
|
|
|
huawen = binding.huawen;
|
|
|
|
huawen = binding.huawen;
|
|
|
|
|
|
|
|
huawendepth = binding.huawendepth;
|
|
|
|
|
|
|
|
shengyuhuawen = binding.shengyuhuawen;
|
|
|
|
|
|
|
|
zhuangtai = binding.zhuangtai;
|
|
|
|
|
|
|
|
qiya = binding.qiya;
|
|
|
|
listEPC = new ArrayList<EPC>();
|
|
|
|
listEPC = new ArrayList<EPC>();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
private long exitTime = 0;
|
|
|
|
private long exitTime = 0;
|
|
|
|
@ -387,6 +395,8 @@ public class TyreSearchActivity extends AppCompatActivity {
|
|
|
|
String model = safeGetString(baseTyre.getTyreModel());
|
|
|
|
String model = safeGetString(baseTyre.getTyreModel());
|
|
|
|
String level = safeGetString(baseTyre.getTyreLevel());
|
|
|
|
String level = safeGetString(baseTyre.getTyreLevel());
|
|
|
|
String pattern = safeGetString(baseTyre.getTyrePattern());
|
|
|
|
String pattern = safeGetString(baseTyre.getTyrePattern());
|
|
|
|
|
|
|
|
String patternDeepth = safeGetString(baseTyre.getPatternDepth());
|
|
|
|
|
|
|
|
String pressure = safeGetString(baseTyre.getPressure());
|
|
|
|
team = safeGetString(baseTyre.getTeam());
|
|
|
|
team = safeGetString(baseTyre.getTeam());
|
|
|
|
TYREPYTE = "new".equals(TYREPYTE) ? "全新胎" : TYREPYTE;
|
|
|
|
TYREPYTE = "new".equals(TYREPYTE) ? "全新胎" : TYREPYTE;
|
|
|
|
patternDepth = safeGetString(baseTyre.getPatternDepth());
|
|
|
|
patternDepth = safeGetString(baseTyre.getPatternDepth());
|
|
|
|
@ -394,15 +404,160 @@ public class TyreSearchActivity extends AppCompatActivity {
|
|
|
|
xinghao.setText(model);
|
|
|
|
xinghao.setText(model);
|
|
|
|
cengji.setText(level);
|
|
|
|
cengji.setText(level);
|
|
|
|
huawen.setText(pattern);
|
|
|
|
huawen.setText(pattern);
|
|
|
|
|
|
|
|
huawendepth.setText(patternDeepth);
|
|
|
|
|
|
|
|
shengyuhuawen.setText(patternDeepth);
|
|
|
|
|
|
|
|
qiya.setText(pressure);
|
|
|
|
|
|
|
|
String carNo = baseTyre.getCarNo();
|
|
|
|
|
|
|
|
if (carNo == null || "".equals(carNo)) {
|
|
|
|
|
|
|
|
zhuangtai.setText("未装车");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
zhuangtai.setText("已装车|车牌号:"+ carNo);
|
|
|
|
|
|
|
|
}
|
|
|
|
}else {
|
|
|
|
}else {
|
|
|
|
pinpai.setText("");
|
|
|
|
pinpai.setText("");
|
|
|
|
xinghao.setText("");
|
|
|
|
xinghao.setText("");
|
|
|
|
cengji.setText("");
|
|
|
|
cengji.setText("");
|
|
|
|
huawen.setText("");
|
|
|
|
huawen.setText("");
|
|
|
|
|
|
|
|
huawendepth.setText("");
|
|
|
|
|
|
|
|
qiya.setText("");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//出入库数据
|
|
|
|
|
|
|
|
List<TimelineItem> data = new ArrayList<>();
|
|
|
|
List<TimelineItem> data = new ArrayList<>();
|
|
|
|
|
|
|
|
if (dataObject.has("bizMaintenanceOrder") && !dataObject.get("bizMaintenanceOrder").isJsonNull()){
|
|
|
|
|
|
|
|
JsonObject maintenanceOrderObj = dataObject.get("bizMaintenanceOrder").getAsJsonObject();
|
|
|
|
|
|
|
|
if (maintenanceOrderObj.has("bizOrderTireDetailList") && !maintenanceOrderObj.get("bizOrderTireDetailList").isJsonNull()) {
|
|
|
|
|
|
|
|
JsonArray detailListArray = maintenanceOrderObj.get("bizOrderTireDetailList").getAsJsonArray();
|
|
|
|
|
|
|
|
String mileage = maintenanceOrderObj.has("lastMileage") ? maintenanceOrderObj.get("lastMileage").getAsString() : "";
|
|
|
|
|
|
|
|
String inputmileage = maintenanceOrderObj.has("inputMileage") ? maintenanceOrderObj.get("inputMileage").getAsString() : "";
|
|
|
|
|
|
|
|
String type = maintenanceOrderObj.has("typeCode") ? maintenanceOrderObj.get("typeCode").getAsString() : "";
|
|
|
|
|
|
|
|
String teams = maintenanceOrderObj.has("factoryName") ? maintenanceOrderObj.get("factoryName").getAsString() : "";
|
|
|
|
|
|
|
|
String plateNumber = maintenanceOrderObj.has("plateNumber") ? maintenanceOrderObj.get("plateNumber").getAsString() : "";
|
|
|
|
|
|
|
|
for (JsonElement element : detailListArray) {
|
|
|
|
|
|
|
|
// 3. 将每个元素转为 JsonObject,方便通过键名取值
|
|
|
|
|
|
|
|
JsonObject itemObject = element.getAsJsonObject();
|
|
|
|
|
|
|
|
// 4. 提取你需要的字段(假设里面有 "warehouseId" 和 "status" 字段)
|
|
|
|
|
|
|
|
String tyreNo = itemObject.has("tireCode") ? itemObject.get("tireCode").getAsString() : "";
|
|
|
|
|
|
|
|
String time = itemObject.has("createTime") ? itemObject.get("createTime").getAsString() : "";
|
|
|
|
|
|
|
|
String user = itemObject.has("createBy") ? itemObject.get("createBy").getAsString() : "";
|
|
|
|
|
|
|
|
String wheel = itemObject.has("positionName") ? itemObject.get("positionName").getAsString() : "";
|
|
|
|
|
|
|
|
String tirePress = itemObject.has("tirePress") ? itemObject.get("tirePress").getAsString() : "";
|
|
|
|
|
|
|
|
// 直接获取,如果为 null 或不存在,自动返回 ""
|
|
|
|
|
|
|
|
String depth = itemObject.has("treadDepth") && !itemObject.get("treadDepth").isJsonNull()
|
|
|
|
|
|
|
|
? itemObject.get("treadDepth").getAsString()
|
|
|
|
|
|
|
|
: "";
|
|
|
|
|
|
|
|
if (type.equals("1")){
|
|
|
|
|
|
|
|
data.add(new TimelineItem(time, "二级保养", Html.fromHtml("操作人:"+user+"<br>场站: "+teams+
|
|
|
|
|
|
|
|
"<br>车辆信息: "+plateNumber+
|
|
|
|
|
|
|
|
"<br>当前车辆里程: "+mileage+" KM"+
|
|
|
|
|
|
|
|
"<br>上次车辆里程: "+inputmileage+"KM"+
|
|
|
|
|
|
|
|
"<br>轮位: "+wheel+
|
|
|
|
|
|
|
|
"<br>剩余花纹深度: "+depth+"mm"+
|
|
|
|
|
|
|
|
"<br>胎压: "+tirePress)));
|
|
|
|
|
|
|
|
shengyuhuawen.setText(depth);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else if (type.equals("2")){
|
|
|
|
|
|
|
|
data.add(new TimelineItem(time, "二级保养", Html.fromHtml("操作人:"+user+"<br>场站: "+teams+
|
|
|
|
|
|
|
|
"<br>车辆信息: "+plateNumber+
|
|
|
|
|
|
|
|
"<br>当前车辆里程: "+mileage+" KM"+
|
|
|
|
|
|
|
|
"<br>上次车辆里程: "+inputmileage+"KM"+
|
|
|
|
|
|
|
|
"<br>轮位: "+wheel+
|
|
|
|
|
|
|
|
"<br>剩余花纹深度: "+depth+"mm"+
|
|
|
|
|
|
|
|
"<br>胎压: "+tirePress)));
|
|
|
|
|
|
|
|
shengyuhuawen.setText(depth);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (type.equals("3")){
|
|
|
|
|
|
|
|
data.add(new TimelineItem(time, "二级保养", Html.fromHtml("操作人:"+user+"<br>场站: "+teams+
|
|
|
|
|
|
|
|
"<br>车辆信息: "+plateNumber+
|
|
|
|
|
|
|
|
"<br>当前车辆里程: "+mileage+" KM"+
|
|
|
|
|
|
|
|
"<br>上次车辆里程: "+inputmileage+"KM"+
|
|
|
|
|
|
|
|
"<br>轮位: "+wheel+
|
|
|
|
|
|
|
|
"<br>剩余花纹深度: "+depth+"mm"+
|
|
|
|
|
|
|
|
"<br>胎压: "+tirePress)));
|
|
|
|
|
|
|
|
shengyuhuawen.setText(depth);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (type.equals("4")){
|
|
|
|
|
|
|
|
data.add(new TimelineItem(time, "二级保养", Html.fromHtml("操作人:"+user+"<br>场站: "+teams+
|
|
|
|
|
|
|
|
"<br>车辆信息: "+plateNumber+
|
|
|
|
|
|
|
|
"<br>当前车辆里程: "+mileage+" KM"+
|
|
|
|
|
|
|
|
"<br>上次车辆里程: "+inputmileage+"KM"+
|
|
|
|
|
|
|
|
"<br>轮位: "+wheel+
|
|
|
|
|
|
|
|
"<br>剩余花纹深度: "+depth+"mm"+
|
|
|
|
|
|
|
|
"<br>胎压: "+tirePress)));
|
|
|
|
|
|
|
|
shengyuhuawen.setText(depth);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (type.equals("5")){
|
|
|
|
|
|
|
|
data.add(new TimelineItem(time, "二级保养", Html.fromHtml("操作人:"+user+"<br>场站: "+teams+
|
|
|
|
|
|
|
|
"<br>车辆信息: "+plateNumber+
|
|
|
|
|
|
|
|
"<br>当前车辆里程: "+mileage+" KM"+
|
|
|
|
|
|
|
|
"<br>上次车辆里程: "+inputmileage+"KM"+
|
|
|
|
|
|
|
|
"<br>轮位: "+wheel+
|
|
|
|
|
|
|
|
"<br>剩余花纹深度: "+depth+"mm"+
|
|
|
|
|
|
|
|
"<br>胎压: "+tirePress)));
|
|
|
|
|
|
|
|
shengyuhuawen.setText(depth);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (type.equals("6")){
|
|
|
|
|
|
|
|
data.add(new TimelineItem(time, "二级保养", Html.fromHtml("操作人:"+user+"<br>场站: "+teams+
|
|
|
|
|
|
|
|
"<br>车辆信息: "+plateNumber+
|
|
|
|
|
|
|
|
"<br>当前车辆里程: "+mileage+" KM"+
|
|
|
|
|
|
|
|
"<br>上次车辆里程: "+inputmileage+"KM"+
|
|
|
|
|
|
|
|
"<br>轮位: "+wheel+
|
|
|
|
|
|
|
|
"<br>剩余花纹深度: "+depth+"mm"+
|
|
|
|
|
|
|
|
"<br>胎压: "+tirePress)));
|
|
|
|
|
|
|
|
shengyuhuawen.setText(depth);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (type.equals("7")){
|
|
|
|
|
|
|
|
data.add(new TimelineItem(time, "二级保养", Html.fromHtml("操作人:"+user+"<br>场站: "+teams+
|
|
|
|
|
|
|
|
"<br>车辆信息: "+plateNumber+
|
|
|
|
|
|
|
|
"<br>当前车辆里程: "+mileage+" KM"+
|
|
|
|
|
|
|
|
"<br>上次车辆里程: "+inputmileage+"KM"+
|
|
|
|
|
|
|
|
"<br>轮位: "+wheel+
|
|
|
|
|
|
|
|
"<br>剩余花纹深度: "+depth+"mm"+
|
|
|
|
|
|
|
|
"<br>胎压: "+tirePress)));
|
|
|
|
|
|
|
|
shengyuhuawen.setText(depth);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 2. 遍历数组中的每一个元素
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (dataObject.has("recordTyreInstallList") && !dataObject.get("recordTyreInstallList").isJsonNull()){
|
|
|
|
|
|
|
|
JsonElement resultBaseElement = dataObject.get("recordTyreInstallList");
|
|
|
|
|
|
|
|
JsonArray jsonArray = resultBaseElement.getAsJsonArray();
|
|
|
|
|
|
|
|
// 2. 遍历数组中的每一个元素
|
|
|
|
|
|
|
|
for (JsonElement element : jsonArray) {
|
|
|
|
|
|
|
|
// 3. 将每个元素转为 JsonObject,方便通过键名取值
|
|
|
|
|
|
|
|
JsonObject itemObject = element.getAsJsonObject();
|
|
|
|
|
|
|
|
// 4. 提取你需要的字段(假设里面有 "warehouseId" 和 "status" 字段)
|
|
|
|
|
|
|
|
String tyreNo = itemObject.has("tyreNo") ? itemObject.get("tyreNo").getAsString() : "";
|
|
|
|
|
|
|
|
String type = itemObject.has("type") ? itemObject.get("type").getAsString() : "";
|
|
|
|
|
|
|
|
String time = itemObject.has("createTime") ? itemObject.get("createTime").getAsString() : "";
|
|
|
|
|
|
|
|
String user = itemObject.has("createBy") ? itemObject.get("createBy").getAsString() : "";
|
|
|
|
|
|
|
|
String wheel = itemObject.has("wheelPostion") ? itemObject.get("wheelPostion").getAsString() : "";
|
|
|
|
|
|
|
|
String mileage = itemObject.has("mileage") ? itemObject.get("mileage").getAsString() : "";
|
|
|
|
|
|
|
|
String carNo = itemObject.has("carNo") ? itemObject.get("carNo").getAsString() : "";
|
|
|
|
|
|
|
|
// 直接获取,如果为 null 或不存在,自动返回 ""
|
|
|
|
|
|
|
|
String depth = itemObject.has("patternDepth") && !itemObject.get("patternDepth").isJsonNull()
|
|
|
|
|
|
|
|
? itemObject.get("patternDepth").getAsString()
|
|
|
|
|
|
|
|
: "";
|
|
|
|
|
|
|
|
if (type.equals("0")){
|
|
|
|
|
|
|
|
data.add(new TimelineItem(time, "轮胎装车", Html.fromHtml("操作人:"+user+"<br>场站: "+team+
|
|
|
|
|
|
|
|
"<br>车牌号: "+carNo+
|
|
|
|
|
|
|
|
"<br>安装轮位: "+wheel+
|
|
|
|
|
|
|
|
"<br>装车里程: "+mileage+" KM"+
|
|
|
|
|
|
|
|
"<br>花纹深度: "+depth+"mm")));
|
|
|
|
|
|
|
|
shengyuhuawen.setText(depth);
|
|
|
|
|
|
|
|
}else if (type.equals("1")){
|
|
|
|
|
|
|
|
data.add(new TimelineItem(time, "轮胎卸车", Html.fromHtml("操作人:"+user+"<br>场站: "+team+
|
|
|
|
|
|
|
|
"<br>车牌号: "+carNo+
|
|
|
|
|
|
|
|
"<br>卸下轮位: "+wheel+
|
|
|
|
|
|
|
|
"<br>剩余花纹深度: "+depth+"mm"+
|
|
|
|
|
|
|
|
"<br>卸车里程: "+mileage+"KM")));
|
|
|
|
|
|
|
|
shengyuhuawen.setText(depth);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//出入库数据
|
|
|
|
|
|
|
|
|
|
|
|
if(dataObject.has("recordWarehousingList") && !dataObject.get("recordWarehousingList").isJsonNull()){
|
|
|
|
if(dataObject.has("recordWarehousingList") && !dataObject.get("recordWarehousingList").isJsonNull()){
|
|
|
|
JsonElement resultBaseElement = dataObject.get("recordWarehousingList");
|
|
|
|
JsonElement resultBaseElement = dataObject.get("recordWarehousingList");
|
|
|
|
JsonArray jsonArray = resultBaseElement.getAsJsonArray();
|
|
|
|
JsonArray jsonArray = resultBaseElement.getAsJsonArray();
|
|
|
|
@ -419,21 +574,19 @@ public class TyreSearchActivity extends AppCompatActivity {
|
|
|
|
if (type.equals("0")){
|
|
|
|
if (type.equals("0")){
|
|
|
|
data.add(new TimelineItem(time, "轮胎入库", Html.fromHtml("操作人:"+user+"<br>场站: "+team+
|
|
|
|
data.add(new TimelineItem(time, "轮胎入库", Html.fromHtml("操作人:"+user+"<br>场站: "+team+
|
|
|
|
"<br>轮胎类型: "+TYREPYTE+
|
|
|
|
"<br>轮胎类型: "+TYREPYTE+
|
|
|
|
"<br>剩余花纹深度: "+patternDepth+"mm"+
|
|
|
|
"<br>剩余花纹深度: "+patternDepth+"mm")));
|
|
|
|
"<br>里程: "+"0")));
|
|
|
|
}else if (type.equals("1")){
|
|
|
|
|
|
|
|
data.add(new TimelineItem(time, "轮胎出库", Html.fromHtml("操作人:"+user+"<br>场站: "+team+
|
|
|
|
|
|
|
|
"<br>轮胎类型: "+TYREPYTE+
|
|
|
|
|
|
|
|
"<br>剩余花纹深度: "+patternDepth+"mm")));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 1. 生成模拟数据 (按时间倒序)
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// data.add(new TimelineItem("2026-04-20 12:23:28", "轮胎安装: 赵宁波", "车辆: 粤B08499D | 轮位: 右外轮"));
|
|
|
|
|
|
|
|
// data.add(new TimelineItem("2026-04-20 12:17:46", "轮胎出库: 赵宁波", "仓库: 轮胎仓库"));
|
|
|
|
|
|
|
|
// data.add(new TimelineItem("2026-04-20 12:15:37", "轮胎入库: 赵宁波", "仓库: 轮胎仓库"));
|
|
|
|
|
|
|
|
// data.add(new TimelineItem("2026-04-19 09:00:00", "轮胎采购", "供应商: 某某橡胶厂"));
|
|
|
|
|
|
|
|
// // 2. 动态添加视图
|
|
|
|
|
|
|
|
renderTimeline(data);
|
|
|
|
|
|
|
|
data.clear();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
renderTimeline(data);
|
|
|
|
|
|
|
|
data.clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (JsonSyntaxException e) {
|
|
|
|
} catch (JsonSyntaxException e) {
|
|
|
|
pinpai.setText("");
|
|
|
|
pinpai.setText("");
|
|
|
|
|