/* ========== SynchronizableEntity.java ========== */
package com.example.kucun2.entity.data;
import com.example.kucun2.function.MyAppFnction;
public abstract class SynchronizableEntity implements EntityClassGrassrootsid {
/**
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
/**
* 添加url
* @return
*/
public String getEndpoint(){
//从String.xml获取url
return MyAppFnction.getStringResource("String","url_add_"+this.getClass().getSimpleName());
}
}
/* ========== SynchronizedList.java ========== */
package com.example.kucun2.entity.data;
import android.util.Log;
import androidx.annotation.NonNull;
import com.example.kucun2.function.MyAppFnction;
import com.google.gson.Gson;
import java.io.IOException;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
/**
* 支持数据变更自动同步的泛型集合类
* @param <T> 继承自 SynchronizableEntity 的实体类型
*/
public class SynchronizedList<T extends SynchronizableEntity> implements List<T> {
private final List<T> list = new ArrayList<>();
private final OkHttpClient client = new OkHttpClient();
private static final Gson gson = new Gson();
private static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
private final Class<T> entityClass; // 类型标记
// 属性变更监听器
private final List<PropertyChangeListener<T>> listeners = new ArrayList<>();
public SynchronizedList(Class<T> entityClass) {
Type superClass = getClass().getGenericSuperclass();
ParameterizedType type = (ParameterizedType) superClass;
Type[] typeArgs = type.getActualTypeArguments();
this.entityClass = (Class<T>) typeArgs[0];
}
// 安全的类型转换方法
private T safeCast(Object o) {
if (o != null && entityClass.isInstance(o)) {
return entityClass.cast(o);
}
return null;
}
public interface PropertyChangeListener<T> {
void onPropertyChange(T entity, String propertyName, Object oldValue, Object newValue);
}
public void addPropertyChangeListener(PropertyChangeListener<T> listener) {
listeners.add(listener);
}
public void removePropertyChangeListener(PropertyChangeListener<T> listener) {
listeners.remove(listener);
}
/**
* 同步实体到后端
* @param entity 要同步的实体
*/
private void syncEntity(T entity) {
String endpoint = entity.getEndpoint(); // 从实体类获取API端点
String json = gson.toJson(entity);
RequestBody body = RequestBody.create(json, JSON);
Request request = new Request.Builder()
.url(endpoint)
.put(body) // 使用PUT更新实体
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
Log.e("SynchronizedList", "同步失败: " + entity.getClass().getSimpleName(), e);
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) {
if (!response.isSuccessful()) {
Log.e("SynchronizedList", "同步失败: " +
response.code() + " - " + response.message());
}
response.close();
}
});
}
/**
* 创建代理对象,用于监听属性变更
*/
private T createProxy(T original) {
if (!entityClass.isInstance(original)) {
throw new IllegalArgumentException("Invalid entity type");
}
// 这里使用动态代理模式监听setter方法调用
return (T) java.lang.reflect.Proxy.newProxyInstance(
original.getClass().getClassLoader(),
original.getClass().getInterfaces(),
(proxy, method, args) -> {
// 只拦截setter方法
if (method.getName().startsWith("set") && args.length == 1) {
String propertyName = method.getName().substring(3);
propertyName = propertyName.substring(0, 1).toLowerCase() + propertyName.substring(1);
// 获取旧值
Object oldValue = original.getClass()
.getMethod("get" + propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1))
.invoke(original);
// 调用原始方法
Object result = method.invoke(original, args);
// 触发监听器
for (PropertyChangeListener<T> listener : listeners) {
listener.onPropertyChange(original, propertyName, oldValue, args[0]);
}
// 自动同步到后端
syncEntity(original);
return result;
}
return method.invoke(original, args);
}
);
}
// 以下是List接口的实现
@Override
public int size() {
return list.size();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public boolean contains(Object o) {
return list.contains(o);
}
@NonNull
@Override
public Iterator<T> iterator() {
return list.iterator();
}
@NonNull
@Override
public Object[] toArray() {
return list.toArray();
}
@NonNull
@Override
public <T1> T1[] toArray(@NonNull T1[] a) {
return list.toArray(a);
}
@Override
public boolean add(T t) {
return list.add(createProxy(t)); // 添加时创建代理
}
@Override
public boolean remove(Object o) {
T entity = safeCast(o);
if (entity != null) {
syncEntity((T) entity); // 删除前同步
}
return list.remove(o);
}
@Override
public boolean containsAll(@NonNull Collection<?> c) {
return list.containsAll(c);
}
@Override
public boolean addAll(@NonNull Collection<? extends T> c) {
boolean modified = false;
for (T t : c) {
modified |= add(t);
}
return modified;
}
@Override
public boolean addAll(int index, @NonNull Collection<? extends T> c) {
for (T t : c) {
add(index++, t);
}
return true;
}
@Override
public boolean removeAll(@NonNull Collection<?> c) {
for (Object o : c) {
T entity = safeCast(o);
if (entity != null) {
syncEntity(entity);
}
}
return list.removeAll(c);
}
@Override
public boolean retainAll(@NonNull Collection<?> c) {
List<T> toRemove = new ArrayList<>();
for (T t : list) {
if (!c.contains(t)) {
toRemove.add(t);
}
}
// 使用安全转换
for (T entity : toRemove) {
syncEntity(entity);
}
return list.retainAll(c);
}
@Override
public void clear() {
for (T t : list) {
syncEntity(t); // 清空前同步
}
list.clear();
}
@Override
public T get(int index) {
return list.get(index);
}
@Override
public T set(int index, T element) {
T old = list.set(index, createProxy(element));
if (old != null) {
syncEntity(old); // 替换旧元素前同步
}
return old;
}
@Override
public void add(int index, T element) {
list.add(index, createProxy(element));
}
@Override
public T remove(int index) {
T removed = list.remove(index);
if (removed != null) {
syncEntity(removed); // 删除前同步
}
return removed;
}
@Override
public int indexOf(Object o) {
return list.indexOf(o);
}
@Override
public int lastIndexOf(Object o) {
return list.lastIndexOf(o);
}
@NonNull
@Override
public ListIterator<T> listIterator() {
return list.listIterator();
}
@NonNull
@Override
public ListIterator<T> listIterator(int index) {
return list.listIterator(index);
}
@NonNull
@Override
public List<T> subList(int fromIndex, int toIndex) {
return list.subList(fromIndex, toIndex);
}
}
/* ========== EntityClassGrassrootsid.java ========== */
package com.example.kucun2.entity.data;
public interface EntityClassGrassrootsid {
Integer getId();
}
/* ========== Dingdan_Bancai.java ========== */
package com.example.kucun2.entity;
import com.example.kucun2.entity.data.SynchronizableEntity;
/**、
* 订单板材关联
*/
public class Dingdan_Bancai extends SynchronizableEntity {
private Integer id;
private Dingdan dingdian;
private Chanpin_Zujian zujian;
private Bancai bancai;
private Integer shuliang;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Dingdan getDingdian() {
return dingdian;
}
public void setDingdian(Dingdan dingdian) {
this.dingdian = dingdian;
}
public Chanpin_Zujian getZujian() {
return zujian;
}
public void setZujian(Chanpin_Zujian zujian) {
this.zujian = zujian;
}
public Bancai getBancai() {
return bancai;
}
public void setBancai(Bancai bancai) {
this.bancai = bancai;
}
public Integer getShuliang() {
return shuliang;
}
public void setShuliang(Integer shuliang) {
this.shuliang = shuliang;
}
public Dingdan_Bancai() {
}
}
/* ========== Dingdan_Chanpin.java ========== */
package com.example.kucun2.entity;
import com.example.kucun2.entity.data.SynchronizableEntity;
/**
* 订单产品关联
*/
public class Dingdan_Chanpin extends SynchronizableEntity {
private Integer id;
private Dingdan dingdan;
private Chanpin chanpin;
private Integer shuliang;
public Dingdan_Chanpin(Integer id, Dingdan dingdan, Chanpin chanpin, Integer shuliang) {
this.id = id;
this.dingdan = dingdan;
this.chanpin = chanpin;
this.shuliang = shuliang;
}
public Integer getShuliang() {
return shuliang;
}
public void setShuliang(Integer shuliang) {
this.shuliang = shuliang;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Dingdan getDingdan() {
return dingdan;
}
public void setDingdan(Dingdan dingdan) {
this.dingdan = dingdan;
}
public Chanpin getChanpin() {
return chanpin;
}
public void setChanpin(Chanpin chanpin) {
this.chanpin = chanpin;
}
public Dingdan_Chanpin() {
}
}
/* ========== Information.java ========== */
package com.example.kucun2.entity;
import android.annotation.SuppressLint;
import androidx.annotation.Keep;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
@Keep // 防止Proguard混淆
public class Information<T> {
private Integer status;
private String text;
private T data; // 使用泛型保证类型安全
private static final Gson gson = new Gson(); // Gson实例复用
// 构造方法
public Information(Integer status, String text, T data) {
this.status = status;
this.text = text;
this.data = data;
}
// JSON反序列化构造方法
@SuppressLint("NewApi")
public Information(Integer status, String text, String jsonData, Type dataType) {
this.status = status;
this.text = text;
try {
this.data = gson.fromJson(jsonData, dataType);
} catch (JsonSyntaxException e) {
this.data = null; // 处理解析失败
}
}
// 空构造方法
public Information() {}
// 序列化为JSON
public String toJson() {
return gson.toJson(this);
}
// 静态创建方法
public static <T> Information<T> newSuccess(T data) {
return new Information<>(200, "success", data);
}
public static Information<String> newSuccess(String text) {
return new Information<>(200, "success", text);
}
public static <T> Information<T> newFail(int status, String text, T data) {
return new Information<>(status, text, data);
}
// Getter/Setter
public Integer getStatus() { return status; }
public void setStatus(Integer status) { this.status = status; }
public String getText() { return text; }
public void setText(String text) { this.text = text; }
public T getData() { return data; }
public void setData(T data) { this.data = data; }
}
/* ========== Jinhuo.java ========== */
package com.example.kucun2.entity;
import com.example.kucun2.entity.data.SynchronizableEntity;
import java.util.Date;
/**
* 进货消耗类
*/
public class Jinhuo extends SynchronizableEntity {
private Integer id;
//属于哪个订单
private Dingdan dingdan;
//属于哪个产品
private Chanpin chanpin;
//属于哪个组件
private Zujian zujian;
//进的什么板材
private Bancai bancai;
//进货数量
private Integer shuliang;
private Date date;
private User user;
public Jinhuo(Integer id, Dingdan dingdan, Chanpin chanpin, Zujian zujian, Bancai bancai, Integer shuliang,
Date date, User user) {
super();
this.id = id;
this.dingdan = dingdan;
this.chanpin = chanpin;
this.zujian = zujian;
this.bancai = bancai;
this.shuliang = shuliang;
this.date = date;
this.user = user;
}
public Jinhuo() {
super();
// TODO Auto-generated constructor stub
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Dingdan getDingdan() {
return dingdan;
}
public void setDingdan(Dingdan dingdan) {
this.dingdan = dingdan;
}
public Chanpin getChanpin() {
return chanpin;
}
public void setChanpin(Chanpin chanpin) {
this.chanpin = chanpin;
}
public Zujian getZujian() {
return zujian;
}
public void setZujian(Zujian zujian) {
this.zujian = zujian;
}
public Bancai getBancai() {
return bancai;
}
public void setBancai(Bancai bancai) {
this.bancai = bancai;
}
public Integer getShuliang() {
return shuliang;
}
public void setShuliang(Integer shuliang) {
this.shuliang = shuliang;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
/* ========== Kucun.java ========== */
package com.example.kucun2.entity;
import com.example.kucun2.entity.data.SynchronizableEntity;
/**
* 库存
*/
public class Kucun extends SynchronizableEntity {
private Integer id;
private Integer shuliang;
private Bancai bancai;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getShuliang() {
return shuliang;
}
public void setShuliang(Integer shuliang) {
this.shuliang = shuliang;
}
public Bancai getBancai() {
return bancai;
}
public void setBancai(Bancai bancai) {
this.bancai = bancai;
}
public Kucun() {
}
public Kucun(Integer id, Integer shuliang, Bancai bancai) {
this.id = id;
this.shuliang = shuliang;
this.bancai = bancai;
}
}
/* ========== Mupi.java ========== */
package com.example.kucun2.entity;
import android.annotation.SuppressLint;
import com.example.kucun2.entity.data.SynchronizableEntity;
import java.util.ArrayList;
import java.util.List;
public class Mupi extends SynchronizableEntity {
private Integer id;
private String name;
/**
* 是否有油漆
*/
private Boolean you=false;
private List<Bancai> bancais=new ArrayList<>();
public Boolean getYou() {
return you;
}
public void setYou(Boolean you) {
this.you = you;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Bancai> getBancais() {
return bancais;
}
public void setBancais(List<Bancai> bancais) {
this.bancais = bancais;
}
public Mupi() {
}
public Mupi(Integer id, String name, List<Bancai> bancais) {
this.id = id;
this.name = name;
this.bancais = bancais;
}
public Mupi(List<Bancai> bancais, Boolean you, String name, Integer id) {
this.bancais = bancais;
this.you = you;
this.name = name;
this.id = id;
}
// 3. 木皮显示格式化方法
public String formatMupiDisplay() {
return getName() + (getYou() ? "油" : "");
}
}
/* ========== User.java ========== */
package com.example.kucun2.entity;
import com.example.kucun2.entity.data.SynchronizableEntity;
/**
* 用户
*/
public class User extends SynchronizableEntity {
private Integer id;
private String name;
private String andy;
private String pass;
private Integer role;
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public String getAndy() {
return andy;
}
public String getPass() {
return pass;
}
public int getRole() {
return role;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAndy(String andy) {
this.andy = andy;
}
public void setPass(String pass) {
this.pass = pass;
}
public void setRole(int role) {
this.role = role;
}
public User(int id, String name, String andy, String pass, int role) {
this.id = id;
this.name = name;
this.andy = andy;
this.pass = pass;
this.role = role;
}
public User() {
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("{");
// 处理属性名
sb.append("\"id\": ");
// 处理不同数据类型
// 其他对象类型
sb.append((id != null) ? id : "null");
sb.append(",");
// 处理属性名
sb.append("\"name\": ");
// 处理不同数据类型
// 字符串类型处理(含转义)
sb.append("\"")
.append(name
.replace("\\", "\\\\")
.replace("\"", "\\\"")
.replace("\b", "\\b")
.replace("\f", "\\f")
.replace("\n", "\\n")
.replace("\r", "\\r")
.replace("\t", "\\t"))
.append("\"");
sb.append(",");
// 处理属性名
sb.append("\"andy\": ");
// 处理不同数据类型
// 字符串类型处理(含转义)
sb.append("\"")
.append(andy
.replace("\\", "\\\\")
.replace("\"", "\\\"")
.replace("\b", "\\b")
.replace("\f", "\\f")
.replace("\n", "\\n")
.replace("\r", "\\r")
.replace("\t", "\\t"))
.append("\"");
sb.append(",");
// 处理属性名
sb.append("\"pass\": ");
// 处理不同数据类型
// 字符串类型处理(含转义)
sb.append("\"")
.append(pass
.replace("\\", "\\\\")
.replace("\"", "\\\"")
.replace("\b", "\\b")
.replace("\f", "\\f")
.replace("\n", "\\n")
.replace("\r", "\\r")
.replace("\t", "\\t"))
.append("\"");
sb.append(",");
// 处理属性名
sb.append("\"role\": ");
// 处理不同数据类型
// 其他对象类型
sb.append((role != null) ? role : "null");
sb.append("}");
return sb.toString();
}
}
/* ========== Zujian.java ========== */
package com.example.kucun2.entity;
import com.example.kucun2.entity.data.SynchronizableEntity;
/**
* 组件
*/
public class Zujian extends SynchronizableEntity {
private Integer id;
private String name;
public Zujian() {
}
public Zujian(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/* ========== Bancai.java ========== */
package com.example.kucun2.entity;
import android.annotation.SuppressLint;
import com.example.kucun2.entity.data.SynchronizableEntity;
import java.util.Objects;
//板材
public class Bancai extends SynchronizableEntity {
private Integer id;
private Caizhi caizhi;
private Mupi mupi1;
private Mupi mupi2;
private Double houdu;
public Bancai() {
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Bancai bancai = (Bancai) o;
return Objects.equals(id, bancai.id) && Objects.equals(caizhi, bancai.caizhi) && Objects.equals(mupi1, bancai.mupi1) && Objects.equals(mupi2, bancai.mupi2) && Objects.equals(houdu, bancai.houdu);
}
@Override
public int hashCode() {
return Objects.hash(id, caizhi, mupi1, mupi2, houdu);
}
public Bancai(Integer id, Caizhi caizhi, Mupi mupi1, Mupi mupi2, Double houdu) {
this.id = id;
this.caizhi = caizhi;
this.mupi1 = mupi1;
this.mupi2 = mupi2;
this.houdu = houdu;
}
public Integer getId() {
return id;
}
public Caizhi getCaizhi() {
return caizhi;
}
public Mupi getMupi1() {
return mupi1;
}
public Mupi getMupi2() {
return mupi2;
}
public Double getHoudu() {
return houdu;
}
public void setId(Integer id) {
this.id = id;
}
public void setCaizhi(Caizhi caizhi) {
this.caizhi = caizhi;
if (caizhi!=null&&caizhi.getBancais()!=null){
this.caizhi.getBancais().add(this);
}
}
public void setMupi1(Mupi mupi1) {
this.mupi1 = mupi1;
if (mupi1!=null&&mupi1.getBancais()!=null){
this.mupi1.getBancais().add(this);
}
}
public void setMupi2(Mupi mupi2) {
this.mupi2 = mupi2;
if (mupi2!=null&&mupi2.getBancais()!=null){
this.mupi2.getBancais().add(this);
}
}
public void setHoudu(Double houdu) {
this.houdu = houdu;
}
/**
* 表格中显示的文字
* @return
*/
@SuppressLint("DefaultLocale")
public String TableText(){
String boardInfo="";
boardInfo +=String.format("%.1f", this.getHoudu())+this.getCaizhi().getName()+"(";
if (mupi1 != null) {
boardInfo += (this.getMupi1().getYou()?this.getMupi1().getName()+"油":this.getMupi1().getName());
}
if (mupi2 != null&&mupi1 != null) {
boardInfo+=",";
}
if (mupi2 != null) {
boardInfo += (this.getMupi2().getYou()?this.getMupi2().getName()+"油":this.getMupi2().getName());
}
boardInfo+=")";
return boardInfo;
}
}
/* ========== Caizhi.java ========== */
package com.example.kucun2.entity;
import com.example.kucun2.entity.data.SynchronizableEntity;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
//材质
public class Caizhi extends SynchronizableEntity {
private Integer id;
private String name;
private List<Bancai> bancais=new ArrayList<>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Bancai> getBancais() {
return bancais;
}
public void setBancais(List<Bancai> bancais) {
this.bancais = bancais;
}
public Caizhi() {
}
public Caizhi(Integer id, String name, List<Bancai> bancais) {
this.id = id;
this.name = name;
this.bancais = bancais;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Caizhi caizhi = (Caizhi) o;
return Objects.equals(name, caizhi.name);
}
@Override
public int hashCode() {
return Objects.hashCode(name);
}
}
/* ========== Chanpin.java ========== */
package com.example.kucun2.entity;
import com.example.kucun2.entity.data.SynchronizableEntity;
import java.util.List;
//产品
public class Chanpin extends SynchronizableEntity {
private Integer id;
private String name;
private List<Chanpin_Zujian> zujians;
public Chanpin(Integer id, String name, List<Chanpin_Zujian> zujians) {
this.id = id;
this.name = name;
this.zujians = zujians;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Chanpin_Zujian> getZujians() {
return zujians;
}
public void setZujians(List<Chanpin_Zujian> zujians) {
this.zujians = zujians;
}
public Chanpin() {
}
}
/* ========== Chanpin_Zujian.java ========== */
package com.example.kucun2.entity;
import com.example.kucun2.entity.data.SynchronizableEntity;
//产品组件关联
public class Chanpin_Zujian extends SynchronizableEntity {
private Integer id;
private Chanpin chanpin;
private Zujian zujian ;
private Double one_several;
private Bancai bancai;
public Chanpin_Zujian(Integer id, Chanpin chanpin, Zujian zujian, Double one_several, Bancai bancai) {
this.id = id;
this.chanpin = chanpin;
this.zujian = zujian;
this.one_several = one_several;
this.bancai = bancai;
}
public Chanpin_Zujian(int i, Chanpin chanpin, Zujian zujian, double v, Bancai bancai1) {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Chanpin getChanpin() {
return chanpin;
}
public void setChanpin(Chanpin chanpin) {
this.chanpin = chanpin;
}
public Zujian getZujian() {
return zujian;
}
public void setZujian(Zujian zujian) {
this.zujian = zujian;
}
public Double getOne_several() {
return one_several;
}
public void setOne_several(Double one_several) {
this.one_several = one_several;
}
public Bancai getBancai() {
return bancai;
}
public void setBancai(Bancai bancai) {
this.bancai = bancai;
}
public Chanpin_Zujian() {
}
}
/* ========== Dingdan.java ========== */
package com.example.kucun2.entity;
import com.example.kucun2.entity.data.SynchronizableEntity;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 订单
*/
public class Dingdan extends SynchronizableEntity {
private Integer id;
private String number;
private List<Dingdan_Chanpin> chanpins;
private Date xiadan;
private Date jiaohuo;
public Dingdan(Integer id, String number, List<Dingdan_Chanpin> chanpins, Date xiadan, Date jiaohuo) {
this.id = id;
this.number = number;
this.chanpins = chanpins;
this.xiadan = xiadan;
this.jiaohuo = jiaohuo;
}
public Date getXiadan() {
return xiadan;
}
public void setXiadan(Date xiadan) {
this.xiadan = xiadan;
}
public Date getJiaohuo() {
return jiaohuo;
}
public void setJiaohuo(Date jiaohuo) {
this.jiaohuo = jiaohuo;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public List<Dingdan_Chanpin> getChanpins() {
return chanpins;
}
public void setChanpins(List<Dingdan_Chanpin> chanpins) {
this.chanpins = chanpins;
}
public Dingdan() {
}
}
<string name="url">https://tian.sef/Kucun2</string>
<string name="url_all">/app/all</string>
<string name="url_bancis">/app/bancai/all</string>
<string name="url_caizhis">/app/caizhi/all</string>
<string name="url_mupis">/app/mupi/all</string>
<string name="url_dingdans">/app/dingdan/all</string>
<string name="url_chanpins">/app/chanpin/all</string>
<string name="url_zujians">/app/zujian/all</string>
<string name="url_chanpin_zujians">/app/chanpin_zujian/all</string>
<string name="url_dingdan_zujians">/app/dingdan_zujian/all</string>
<string name="url_dingdan_chanpins">/app/dingdan_chanpin/all</string>
<string name="url_jinhuos">/app/jinhuo/all</string>
<string name="url_add_bancai">/app/bancai/add</string>
<string name="url_add_dingdan">/app/dingdan/add</string>
<string name="url_add_chanpin">/app/chanpin/add</string>
<string name="url_add_zujian">/app/zujian/add</string>
<string name="url_add_caizhi">/app/caizhi/add</string>
<string name="url_add_mupi">/app/mupi/add</string>
<string name="url_add_dingdan_chanpin">/app/dingdan_chanpi/add</string>
<string name="url_add_dingdan_zujian">/app/dingdan_zujian/add</string>
<string name="url_add_chanpin_zujian">/app/chanpin_zujian/add</string>
<string name="url_add_jinhuo">/app/jinhuo/add</string>
<string name="url_login">/user/login</string>/app/all返回json数据{
"status": "200",
"text": "success",
"data": {
"bancais": [
{
"houdu": 15,
"mupi1": {
"id": 1
},
"mupi2": {
"id": 1
},
"caizhi": {
"id": 1
},
"kucun": {
"id": 1
},
"id": 1
},
{
"houdu": 15,
"mupi1": {
"id": 2
},
"mupi2": {
"id": 2
},
"caizhi": {
"id": 1
},
"kucun": {
"id": 2
},
"id": 2
}
],
"dingdans": [
{
"dingdanChanpinZujian": [
],
"number": "直接入库",
"id": 1,
"dingdanChanpin": [
{"id":1}
]
}
],
"mupis": [
{
"name": "千和板",
"id": 1,
"you": null
},
{
"name": "桃花芯",
"id": 2,
"you": null
},
{
"name": "杉木",
"id": 3,
"you": null
}
],
"chanpins": [
{
"chanpinZujian": [
{
"id": 1
}
],
"bianhao": "直接入库",
"id": 1,
"dingdanChanpin": [
{"id":1}
]
}
],
"kucuns": [
{
"bancai": {
"Id": 1
},
"shuliang": 12,
"id": 1
},
{
"bancai": {
"Id": 2
},
"shuliang": 32,
"id": 2
}
],
"chanpin_zujians": [
{
"chanpin": {
"Id": 1
},
"bancai": {
"id": 1
},
"id": 1,
"zujian": {
"Id": 1
},
"one_howmany": 15
}
],
"zujians": [
{
"chanpinZujian": [
{
"id": 1
}
],
"name": "前板",
"id": 1
}
],
"caizhis": [
{
"name": "千和板",
"bancai": [
{
"id": 1
},
{
"id": 2
}
],
"id": 1
},
{
"name": "杉木",
"bancai": [
],
"id": 3
},
{
"name": "桃花芯",
"bancai": [
],
"id": 2
}
],
"users": [
{
"role": 0,
"name": "超管",
"id": 1,
"andy": "123456"
}
]
}
}
public class Data1 {
// 虚拟数据集合声明
public final static List<Bancai> bancais = new ArrayList<>();
public final static List<Caizhi> caizhis = new ArrayList<>();
public final static List<Mupi> mupis = new ArrayList<>();
public final static List<Chanpin> chanpins = new ArrayList<>();
public final static List<Chanpin_Zujian> chanpinZujians = new ArrayList<>();
public final static List<Dingdan> dingdans = new ArrayList<>();
public final static List<Dingdan_Chanpin> dingdanChanpins = new ArrayList<>();
public final static List<Dingdan_Bancai> dingdanBancais = new ArrayList<>();
public final static List<Kucun> kucuns = new ArrayList<>();
public final static List<Zujian> zujians = new ArrayList<>();
public final static List<User> users = new ArrayList<>();
public final static AbstractCollection<Jinhuo> jinhuoList=new ArrayList<>();
static {
// 确保随机数生成可预测(开发环境)
Random rand = new Random(12345);
data类改造为获取api数据,属性名不能改因为其他地方都在用,