package com.zy.asrs.wms.asrs.service.impl; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.zy.asrs.wms.asrs.entity.LocDetlField; 
 | 
import com.zy.asrs.wms.asrs.entity.ViewLocDetl; 
 | 
import com.zy.asrs.wms.asrs.entity.param.FieldParam; 
 | 
import com.zy.asrs.wms.asrs.mapper.LocDetlMapper; 
 | 
import com.zy.asrs.wms.asrs.entity.LocDetl; 
 | 
import com.zy.asrs.wms.asrs.mapper.ViewLocDetlMapper; 
 | 
import com.zy.asrs.wms.asrs.service.LocDetlFieldService; 
 | 
import com.zy.asrs.wms.asrs.service.LocDetlService; 
 | 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
 | 
import com.zy.asrs.wms.common.domain.BaseParam; 
 | 
import com.zy.asrs.wms.common.domain.PageParam; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.util.*; 
 | 
  
 | 
@Service("locDetlService") 
 | 
public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService { 
 | 
  
 | 
    @Autowired 
 | 
    private ViewLocDetlMapper viewLocDetlMapper; 
 | 
    @Autowired 
 | 
    private LocDetlFieldService locDetlFieldService; 
 | 
  
 | 
    @Override 
 | 
    public PageParam<ViewLocDetl, BaseParam> getPage(PageParam<ViewLocDetl, BaseParam> pageParam, QueryWrapper<ViewLocDetl> buildWrapper) { 
 | 
        PageParam<ViewLocDetl, BaseParam> result = viewLocDetlMapper.selectPage(pageParam, buildWrapper); 
 | 
  
 | 
        //解析动态字段 
 | 
        JSONObject data = JSON.parseObject(JSON.toJSONString(result)); 
 | 
        List<ViewLocDetl> records = result.getRecords(); 
 | 
        data.put("records", records); 
 | 
        for (ViewLocDetl locDetl : records) { 
 | 
            Map<String, Object> resultMap = viewLocDetlMapper.getById(locDetl.getId()); 
 | 
            locDetl.syncFieldMap(resultMap); 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<LocDetl> getLocDetlList(Map<String, Object> map) { 
 | 
        String matnr = null; 
 | 
        String batch = null; 
 | 
        if (map.containsKey("matnr")) { 
 | 
            matnr = map.get("matnr").toString(); 
 | 
            map.remove("matnr"); 
 | 
        } 
 | 
        if (map.containsKey("batch")) { 
 | 
            batch = map.get("batch").toString(); 
 | 
            map.remove("batch"); 
 | 
        } 
 | 
        ArrayList<FieldParam> param = new ArrayList<>(); 
 | 
        for (Map.Entry<String, Object> entry : map.entrySet()) { 
 | 
            if (entry.getValue() == null) { 
 | 
                continue; 
 | 
            } 
 | 
            FieldParam fieldParam = new FieldParam(); 
 | 
            fieldParam.setName(entry.getKey()); 
 | 
            fieldParam.setValue(entry.getValue()); 
 | 
            param.add(fieldParam); 
 | 
        } 
 | 
  
 | 
        List<Map<String, Object>> list2 = viewLocDetlMapper.getList(matnr, batch, param); 
 | 
        List<LocDetl> locDetls = new ArrayList<>(); 
 | 
        for (Map<String, Object> objectMap : list2) { 
 | 
            LocDetl locDetl = JSON.parseObject(JSON.toJSONString(objectMap), LocDetl.class); 
 | 
            locDetl.syncFieldMap(objectMap); 
 | 
            locDetls.add(locDetl); 
 | 
        } 
 | 
        return locDetls; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<LocDetl> parseLocDetl(List<LocDetl> list) { 
 | 
        for (LocDetl locDetl : list) { 
 | 
            List<LocDetlField> locDetlFieldList = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId())); 
 | 
            locDetl.syncField(locDetlFieldList); 
 | 
        } 
 | 
        return list; 
 | 
    } 
 | 
} 
 |