package com.vincent.rsf.server.manager.entity;
|
|
import com.baomidou.mybatisplus.annotation.*;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.vincent.rsf.server.manager.utils.AreasDeserializer;
|
import com.vincent.rsf.server.manager.utils.AreasSerializer;
|
import com.vincent.rsf.server.manager.utils.AreasTypeHandler;
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.vincent.rsf.server.system.entity.DictData;
|
import com.vincent.rsf.server.system.service.DictDataService;
|
import lombok.experimental.Accessors;
|
import org.springframework.format.annotation.DateTimeFormat;
|
|
import io.swagger.annotations.ApiModelProperty;
|
import lombok.Data;
|
import com.vincent.rsf.framework.common.Cools;
|
import com.vincent.rsf.framework.common.SpringUtils;
|
import com.vincent.rsf.server.system.service.UserService;
|
import com.vincent.rsf.server.system.entity.User;
|
import java.io.Serializable;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.ArrayList;
|
import java.util.stream.Collectors;
|
|
@Data
|
@Accessors(chain = true)
|
@TableName(value = "man_bas_container", autoResultMap = true)
|
public class BasContainer implements Serializable {
|
|
private static final long serialVersionUID = 1L;
|
|
/**
|
* id
|
*/
|
@ApiModelProperty(value = "id")
|
@TableId(value = "id", type = IdType.AUTO)
|
private Long id;
|
|
@ApiModelProperty("唯一编码")
|
private String code;
|
|
/**
|
* 容器类型
|
*/
|
@ApiModelProperty(value = "容器类型")
|
private Long containerType;
|
|
/**
|
* 容器条码类型
|
*/
|
@ApiModelProperty(value = "容器条码类型")
|
private String codeType;
|
|
/**
|
* 可入库区(包含排序信息)
|
* 格式: [{"id": 1, "sort": 1}, {"id": 2, "sort": 2}]
|
*/
|
@ApiModelProperty(value = "可入库区(包含排序信息)")
|
@TableField(typeHandler = AreasTypeHandler.class)
|
@JsonDeserialize(using = AreasDeserializer.class)
|
@JsonSerialize(using = AreasSerializer.class)
|
private List<Map<String, Object>> areas;
|
|
/**
|
* 是否删除 1: 是 0: 否
|
*/
|
@ApiModelProperty(value = "是否删除 1: 是 0: 否 ")
|
private Integer deleted;
|
|
/**
|
* 状态
|
*/
|
@ApiModelProperty(value = "状态")
|
private Integer status;
|
|
/**
|
* 租户
|
*/
|
@ApiModelProperty(value = "租户")
|
private Integer tenantId;
|
|
/**
|
* 添加人员
|
*/
|
@ApiModelProperty(value = "添加人员")
|
private Long createBy;
|
|
/**
|
* 添加时间
|
*/
|
@ApiModelProperty(value = "添加时间")
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
private Date createTime;
|
|
/**
|
* 修改人员
|
*/
|
@ApiModelProperty(value = "修改人员")
|
private Long updateBy;
|
|
/**
|
* 修改时间
|
*/
|
@ApiModelProperty(value = "修改时间")
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
private Date updateTime;
|
|
/**
|
* 备注
|
*/
|
@ApiModelProperty(value = "备注")
|
private String memo;
|
|
|
|
public BasContainer() {
|
}
|
|
public BasContainer(Long containerType, String codeType, List<Map<String, Object>> areas, Integer deleted, Integer status,
|
Integer tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
|
this.containerType = containerType;
|
this.codeType = codeType;
|
this.areas = areas;
|
this.deleted = deleted;
|
this.status = status;
|
this.tenantId = tenantId;
|
this.createBy = createBy;
|
this.createTime = createTime;
|
this.updateBy = updateBy;
|
this.updateTime = updateTime;
|
this.memo = memo;
|
}
|
|
// BasContainer basContainer = new BasContainer(
|
// null, // 容器类型
|
// null, // 容器条码类型
|
// null, // 可入库区
|
// null, // 是否删除
|
// null, // 状态
|
// null, // 租户
|
// null, // 添加人员
|
// null, // 添加时间[非空]
|
// null, // 修改人员
|
// null, // 修改时间[非空]
|
// null // 备注
|
// );
|
|
public String getContainerType$(){
|
if (Cools.isEmpty(this.containerType)){
|
return "";
|
}
|
DictDataService service = SpringUtils.getBean(DictDataService.class);
|
DictData dictData = service.getOne(new LambdaQueryWrapper<DictData>()
|
.eq(DictData::getDictTypeCode, "sys_container_type")
|
.eq(DictData::getValue, this.containerType));
|
if (!Cools.isEmpty(dictData)) {
|
return String.valueOf(dictData.getLabel());
|
}
|
return "";
|
}
|
|
public String getCreateBy$() {
|
UserService service = SpringUtils.getBean(UserService.class);
|
User user = service.getById(this.createBy);
|
if (!Cools.isEmpty(user)) {
|
return String.valueOf(user.getNickname());
|
}
|
return null;
|
}
|
|
public String getCreateTime$() {
|
if (Cools.isEmpty(this.createTime)) {
|
return "";
|
}
|
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
|
}
|
|
public String getUpdateBy$() {
|
UserService service = SpringUtils.getBean(UserService.class);
|
User user = service.getById(this.updateBy);
|
if (!Cools.isEmpty(user)) {
|
return String.valueOf(user.getNickname());
|
}
|
return null;
|
}
|
|
public String getUpdateTime$() {
|
if (Cools.isEmpty(this.updateTime)) {
|
return "";
|
}
|
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
|
}
|
|
public Boolean getStatusBool() {
|
if (null == this.status) {
|
return null;
|
}
|
switch (this.status) {
|
case 1:
|
return true;
|
case 0:
|
return false;
|
default:
|
return null;
|
}
|
}
|
|
/**
|
* 获取排序后的库区ID列表(向后兼容方法)
|
* @return 排序后的库区ID列表
|
*/
|
public List<Integer> getAreasIds() {
|
if (Cools.isEmpty(this.areas)) {
|
return new ArrayList<>();
|
}
|
return this.areas.stream()
|
.sorted((a, b) -> {
|
Integer sortA = a.get("sort") != null ? ((Number) a.get("sort")).intValue() : Integer.MAX_VALUE;
|
Integer sortB = b.get("sort") != null ? ((Number) b.get("sort")).intValue() : Integer.MAX_VALUE;
|
return sortA.compareTo(sortB);
|
})
|
.map(area -> {
|
Object id = area.get("id");
|
if (id instanceof Number) {
|
return ((Number) id).intValue();
|
}
|
return null;
|
})
|
.filter(id -> id != null)
|
.collect(Collectors.toList());
|
}
|
|
/**
|
* 对areas按sort字段进行排序
|
*/
|
public void sortAreas() {
|
if (this.areas != null && !this.areas.isEmpty()) {
|
this.areas.sort((a, b) -> {
|
Integer sortA = a.get("sort") != null ? ((Number) a.get("sort")).intValue() : Integer.MAX_VALUE;
|
Integer sortB = b.get("sort") != null ? ((Number) b.get("sort")).intValue() : Integer.MAX_VALUE;
|
return sortA.compareTo(sortB);
|
});
|
}
|
}
|
|
}
|