#
Junjie
2024-08-19 18147c6baeb59f3427eba5904614e924a6a72785
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/LocDetl.java
@@ -1,10 +1,16 @@
package com.zy.asrs.wms.asrs.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.zy.asrs.common.utils.Synchro;
import com.zy.asrs.wms.asrs.service.LocService;
import com.zy.asrs.wms.asrs.service.MatFieldService;
import com.zy.asrs.wms.asrs.service.MatService;
import com.zy.asrs.wms.system.entity.Host;
import com.zy.asrs.wms.system.entity.User;
@@ -53,15 +59,15 @@
    private String locNo;
    /**
     * 物料
     * 商品
     */
    @ApiModelProperty(value= "物料")
    @ApiModelProperty(value= "商品")
    private Long matId;
    /**
     * 物料号
     * 商品编号
     */
    @ApiModelProperty(value= "物料号")
    @ApiModelProperty(value= "商品编号")
    private String matnr;
    /**
@@ -81,12 +87,6 @@
     */
    @ApiModelProperty(value= "数量")
    private Double anfme;
    /**
     * 扩展
     */
    @ApiModelProperty(value= "扩展")
    private String extend;
    /**
     * 所属机构
@@ -141,7 +141,7 @@
    public LocDetl() {}
    public LocDetl(Long locId,String locNo,Long matId,String matnr,String orderNo,String batch,Double anfme,String extend,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
    public LocDetl(Long locId,String locNo,Long matId,String matnr,String orderNo,String batch,Double anfme,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
        this.locId = locId;
        this.locNo = locNo;
        this.matId = matId;
@@ -149,7 +149,6 @@
        this.orderNo = orderNo;
        this.batch = batch;
        this.anfme = anfme;
        this.extend = extend;
        this.hostId = hostId;
        this.status = status;
        this.deleted = deleted;
@@ -164,7 +163,7 @@
//            null,    // 库位
//            null,    // 库位号[非空]
//            null,    // 物料
//            null,    // 物料号
//            null,    // 商品编号
//            null,    // 订单号
//            null,    // 批号
//            null,    // 数量
@@ -262,5 +261,80 @@
        return null;
    }
    public void sync(Object source) {
        Synchro.Copy(source, this);
    }
    //动态扩展字段
    public transient Map<String, Object> dynamicFields = new HashMap<>();
    @JsonAnyGetter
    public Map<String,Object> getDynamicFields() {
        return dynamicFields;
    }
    public void syncField(List<LocDetlField> list) {
        ArrayList<String> keys = new ArrayList<>();
        Field[] fields = this.getClass().getFields();
        for (Field field : fields) {
            keys.add(field.getName());
        }
        Map<String, Object> dynamicFields = new HashMap<>();
        for (LocDetlField locDetlField : list) {
            if (keys.contains(locDetlField.getName())) {
                continue;
            }
            dynamicFields.put(locDetlField.getName(), locDetlField.getValue());
        }
        this.dynamicFields = dynamicFields;
    }
    public void syncFieldMap(Map<String, Object> map) {
        ArrayList<String> keys = new ArrayList<>();
        Field[] fields = this.getClass().getDeclaredFields();
        for (Field field : fields) {
            keys.add(field.getName());
        }
        keys.add("detlId");
        Map<String, Object> dynamicFields = new HashMap<>();
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            if (keys.contains(entry.getKey())) {
                continue;
            }
            dynamicFields.put(entry.getKey(), entry.getValue());
        }
        this.dynamicFields = dynamicFields;
    }
    public String getFieldString(String key) {
        return dynamicFields.get(key).toString();
    }
    public void setField(String key, Object value) {
        dynamicFields.put(key, value);
    }
    public List<Map<String, Object>> getDynamicFieldsList() {
        MatFieldService service = SpringUtils.getBean(MatFieldService.class);
        List<MatField> matFields = service.list(new LambdaQueryWrapper<MatField>().eq(MatField::getFieldType, 1));
        HashMap<String, Object> fieldMap = new HashMap<>();
        for (MatField matField : matFields) {
            fieldMap.put(matField.getName(), matField.getDescribe());
        }
        List<Map<String, Object>> list = new ArrayList<>();
        for (Map.Entry<String, Object> entry : dynamicFields.entrySet()) {
            HashMap<String, Object> map = new HashMap<>();
            map.put("key", entry.getKey());
            map.put("value", entry.getValue());
            map.put("desc", fieldMap.get(entry.getKey()));
            list.add(map);
        }
        return list;
    }
}