| package com.zy.asrs.wms.asrs.entity;  | 
|   | 
| import com.baomidou.mybatisplus.annotation.TableLogic;  | 
|   | 
| 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.entity.param.FieldParam;  | 
| import com.zy.asrs.wms.asrs.service.MatFieldService;  | 
| import com.zy.asrs.wms.asrs.service.MatService;  | 
| import com.zy.asrs.wms.asrs.service.OrderService;  | 
| import com.zy.asrs.wms.asrs.service.WaitPakinService;  | 
| import com.zy.asrs.wms.system.entity.Host;  | 
| import com.zy.asrs.wms.system.entity.User;  | 
| import org.springframework.format.annotation.DateTimeFormat;  | 
| import java.util.Date;  | 
|   | 
| import com.baomidou.mybatisplus.annotation.IdType;  | 
| import com.baomidou.mybatisplus.annotation.TableId;  | 
| import com.baomidou.mybatisplus.annotation.TableName;  | 
| import io.swagger.annotations.ApiModelProperty;  | 
| import lombok.Data;  | 
| import com.zy.asrs.framework.common.Cools;  | 
| import com.zy.asrs.framework.common.SpringUtils;  | 
| import com.zy.asrs.wms.system.service.UserService;  | 
| import com.zy.asrs.wms.system.service.HostService;  | 
|   | 
| import java.io.Serializable;  | 
|   | 
| @Data  | 
| @TableName("man_order_detl")  | 
| public class OrderDetl implements Serializable {  | 
|   | 
|     private static final long serialVersionUID = 1L;  | 
|   | 
|     /**  | 
|      * ID  | 
|      */  | 
|     @ApiModelProperty(value= "ID")  | 
|     @TableId(value = "id", type = IdType.AUTO)  | 
|     private Long id;  | 
|   | 
|     /**  | 
|      * 订单ID  | 
|      */  | 
|     @ApiModelProperty(value= "订单ID")  | 
|     private Long orderId;  | 
|   | 
|     /**  | 
|      * 订单编号  | 
|      */  | 
|     @ApiModelProperty(value= "订单编号")  | 
|     private String orderNo;  | 
|   | 
|     /**  | 
|      * 数量  | 
|      */  | 
|     @ApiModelProperty(value= "数量")  | 
|     private Double anfme;  | 
|   | 
|     /**  | 
|      * 已完成数量  | 
|      */  | 
|     @ApiModelProperty(value= "已完成数量")  | 
|     private Double qty;  | 
|   | 
|     /**  | 
|      * 作业中数量  | 
|      */  | 
|     @ApiModelProperty(value= "作业中数量")  | 
|     private Double workQty;  | 
|   | 
|     /**  | 
|      * 物料  | 
|      */  | 
|     @ApiModelProperty(value= "物料")  | 
|     private Long matId;  | 
|   | 
|     /**  | 
|      * 批号  | 
|      */  | 
|     @ApiModelProperty(value= "批号")  | 
|     private String batch;  | 
|   | 
|     /**  | 
|      * 所属机构  | 
|      */  | 
|     @ApiModelProperty(value= "所属机构")  | 
|     private Long hostId;  | 
|   | 
|     /**  | 
|      * 状态 1: 正常  0: 禁用    | 
|      */  | 
|     @ApiModelProperty(value= "状态 1: 正常  0: 禁用  ")  | 
|     private Integer status;  | 
|   | 
|     @ApiModelProperty(value = "拣货状态:0 未拣货 1 完成拣货  2 ,部分拣货")  | 
|     private Integer pickStatus;  | 
|   | 
|     /**  | 
|      * 是否删除 1: 是  0: 否    | 
|      */  | 
|     @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")  | 
|     private Integer deleted;  | 
|   | 
|     /**  | 
|      * 添加时间  | 
|      */  | 
|     @ApiModelProperty(value= "添加时间")  | 
|     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")  | 
|     private Date createTime;  | 
|   | 
|     /**  | 
|      * 添加人员  | 
|      */  | 
|     @ApiModelProperty(value= "添加人员")  | 
|     private Long createBy;  | 
|   | 
|     /**  | 
|      * 修改时间  | 
|      */  | 
|     @ApiModelProperty(value= "修改时间")  | 
|     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")  | 
|     private Date updateTime;  | 
|   | 
|     /**  | 
|      * 修改人员  | 
|      */  | 
|     @ApiModelProperty(value= "修改人员")  | 
|     private Long updateBy;  | 
|   | 
|     /**  | 
|      * 备注  | 
|      */  | 
|     @ApiModelProperty(value= "备注")  | 
|     private String memo;  | 
|   | 
|     /**  | 
|      * 商品库存索引  | 
|      */  | 
|     @ApiModelProperty(value= "商品库存索引")  | 
|     private String stockIndex;  | 
|   | 
|     public OrderDetl() {}  | 
|   | 
|     public OrderDetl(Long orderId,String orderNo,Double anfme,Double qty,Double workQty,Long matId,String batch,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {  | 
|         this.orderId = orderId;  | 
|         this.orderNo = orderNo;  | 
|         this.anfme = anfme;  | 
|         this.qty = qty;  | 
|         this.workQty = workQty;  | 
|         this.matId = matId;  | 
|         this.batch = batch;  | 
|         this.hostId = hostId;  | 
|         this.status = status;  | 
|         this.deleted = deleted;  | 
|         this.createTime = createTime;  | 
|         this.createBy = createBy;  | 
|         this.updateTime = updateTime;  | 
|         this.updateBy = updateBy;  | 
|         this.memo = memo;  | 
|     }  | 
|   | 
| //    OrderDetl orderDetl = new OrderDetl(  | 
| //            null,    // 订单ID  | 
| //            null,    // 订单编号  | 
| //            null,    // 数量  | 
| //            null,    // 已完成数量  | 
| //            null,    // 作业中数量  | 
| //            null,    // 物料  | 
| //            null,    // 批号  | 
| //            null,    // 所属机构  | 
| //            null,    // 状态  | 
| //            null,    // 是否删除  | 
| //            null,    // 添加时间  | 
| //            null,    // 添加人员  | 
| //            null,    // 修改时间  | 
| //            null,    // 修改人员  | 
| //            null    // 备注  | 
| //    );  | 
|   | 
|     //获取组托数量  | 
|     public Double getWaitQty(){  | 
|         Double qty = 0D;  | 
|         WaitPakinService service = SpringUtils.getBean(WaitPakinService.class);  | 
|         List<WaitPakin> waitPakins = service.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getDetlId, id));  | 
|         for (WaitPakin waitPakin : waitPakins) {  | 
|             qty += waitPakin.getAnfme();  | 
|         }  | 
|         return qty;  | 
|     }  | 
|   | 
|     public String getOrderId$(){  | 
|         OrderService service = SpringUtils.getBean(OrderService.class);  | 
|         Order order = service.getById(this.orderId);  | 
|         if (!Cools.isEmpty(order)){  | 
|             return String.valueOf(order.getId());  | 
|         }  | 
|         return null;  | 
|     }  | 
|   | 
|     public Mat getMat$(){  | 
|         MatService service = SpringUtils.getBean(MatService.class);  | 
|         Mat mat = service.getById(this.matId);  | 
|         if (!Cools.isEmpty(mat)){  | 
|             return mat;  | 
|         }  | 
|         return null;  | 
|     }  | 
|   | 
|     public String getMatId$(){  | 
|         MatService service = SpringUtils.getBean(MatService.class);  | 
|         Mat mat = service.getById(this.matId);  | 
|         if (!Cools.isEmpty(mat)){  | 
|             return String.valueOf(mat.getId());  | 
|         }  | 
|         return null;  | 
|     }  | 
|   | 
|     public String getHostId$(){  | 
|         HostService service = SpringUtils.getBean(HostService.class);  | 
|         Host host = service.getById(this.hostId);  | 
|         if (!Cools.isEmpty(host)){  | 
|             return String.valueOf(host.getName());  | 
|         }  | 
|         return null;  | 
|     }  | 
|   | 
|     public String getStatus$(){  | 
|         if (null == this.status){ return null; }  | 
|         switch (this.status){  | 
|             case 1:  | 
|                 return "正常";  | 
|             case 0:  | 
|                 return "禁用";  | 
|             default:  | 
|                 return String.valueOf(this.status);  | 
|         }  | 
|     }  | 
|   | 
|     public String getDeleted$(){  | 
|         if (null == this.deleted){ return null; }  | 
|         switch (this.deleted){  | 
|             case 1:  | 
|                 return "是";  | 
|             case 0:  | 
|                 return "否";  | 
|             default:  | 
|                 return String.valueOf(this.deleted);  | 
|         }  | 
|     }  | 
|   | 
|     public String getCreateTime$(){  | 
|         if (Cools.isEmpty(this.createTime)){  | 
|             return "";  | 
|         }  | 
|         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);  | 
|     }  | 
|   | 
|     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 getUpdateTime$(){  | 
|         if (Cools.isEmpty(this.updateTime)){  | 
|             return "";  | 
|         }  | 
|         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);  | 
|     }  | 
|   | 
|     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 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<OrderDetlField> 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 (OrderDetlField orderDetlField : list) {  | 
|             if (keys.contains(orderDetlField.getName())) {  | 
|                 continue;  | 
|             }  | 
|             dynamicFields.put(orderDetlField.getName(), orderDetlField.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<FieldParam> getUniqueField() {  | 
|         MatFieldService service = SpringUtils.getBean(MatFieldService.class);  | 
|   | 
|         List<FieldParam> list = new ArrayList<>();  | 
|         for (MatField matField : service.list(new LambdaQueryWrapper<MatField>().eq(MatField::getUnique, 1))) {  | 
|             FieldParam param = new FieldParam();  | 
|             param.setName(matField.getName());  | 
|             param.setValue(dynamicFields.getOrDefault(matField.getName(), ""));  | 
|             list.add(param);  | 
|         }  | 
|         return list;  | 
|     }  | 
|   | 
| }  |