| package com.xzx.gc.order.service;  | 
|   | 
| import cn.hutool.core.collection.CollUtil;  | 
| import cn.hutool.core.comparator.IndexedComparator;  | 
| import cn.hutool.core.convert.Convert;  | 
| import cn.hutool.core.lang.Dict;  | 
| import com.xzx.gc.common.constant.Constants;  | 
| import com.xzx.gc.entity.SysEnvironmentalInfo;  | 
| import com.xzx.gc.order.mapper.SysEnvironmentalInfoMapper;  | 
| import org.springframework.beans.factory.annotation.Autowired;  | 
| import org.springframework.stereotype.Service;  | 
| import org.springframework.transaction.annotation.Transactional;  | 
| import tk.mybatis.mapper.entity.Example;  | 
|   | 
| import java.math.BigDecimal;  | 
| import java.util.List;  | 
| import java.util.stream.Collectors;  | 
|   | 
| @Service  | 
| @Transactional  | 
| public class SysEnvironmentalInfoService {  | 
|     @Autowired  | 
|     private SysEnvironmentalInfoMapper sysEnvironmentalInfoMapper;  | 
|   | 
|     public SysEnvironmentalInfo findById(Long id) {  | 
|         return sysEnvironmentalInfoMapper.selectByPrimaryKey(id);  | 
|     }  | 
|   | 
|   | 
|     public List<SysEnvironmentalInfo> find() {  | 
|         Example example=new Example(SysEnvironmentalInfo.class);  | 
|         Example.Criteria criteria = example.createCriteria();  | 
|         criteria.andEqualTo("delFlag",Constants.DEL_NOT_FLAG);  | 
|         criteria.andIsNotNull("parentId");  | 
|         return sysEnvironmentalInfoMapper.selectByExample(example);  | 
|     }  | 
|   | 
|   | 
|     /**  | 
|      * 根据父Id查找子类  | 
|      * @param parentId  | 
|      * @return  | 
|      */  | 
|     public List<SysEnvironmentalInfo> findByParentId(Long parentId){  | 
|         SysEnvironmentalInfo sysEnvironmentalInfo=new SysEnvironmentalInfo();  | 
|         sysEnvironmentalInfo.setParentId(parentId);  | 
|         sysEnvironmentalInfo.setDelFlag(Constants.DEL_NOT_FLAG);  | 
|         List<SysEnvironmentalInfo> sysEnvironmentalInfo2 = sysEnvironmentalInfoMapper.select(sysEnvironmentalInfo);  | 
|         return  sysEnvironmentalInfo2;  | 
|     }  | 
|   | 
|     /**  | 
|      * 查找所有子类的itemType集合  | 
|      * @param areaId  | 
|      * @param itemType  | 
|      * @return  | 
|      */  | 
|     public List<String> findChildItemTypeByType(String areaId,String itemType){  | 
|         SysEnvironmentalInfo sysEnvironmentalInfo1 =   findByItemTypeAndArea(itemType,Convert.toInt(areaId));  | 
|         long parentId = sysEnvironmentalInfo1.getId();  | 
|         List<SysEnvironmentalInfo> byParentId = findByParentId(parentId);  | 
|         return byParentId.stream().map(x->x.getItemType()).collect(Collectors.toList());  | 
|     }  | 
|   | 
|   | 
|   | 
|     /**  | 
|      * 根据itemType查找类型  | 
|      * @param itemType  | 
|      * @param areaId  | 
|      * @return  | 
|      */  | 
|     public SysEnvironmentalInfo findByItemTypeAndArea(String itemType,Integer areaId) {  | 
|         Example example=new Example(SysEnvironmentalInfo.class);  | 
|         Example.Criteria criteria = example.createCriteria();  | 
|         criteria.andEqualTo("itemType",itemType);  | 
|         criteria.andEqualTo("cityId",areaId);  | 
| //        criteria.andEqualTo("delFlag",Constants.DEL_NOT_FLAG);  | 
|         SysEnvironmentalInfo sysEnvironmentalInfo1 = sysEnvironmentalInfoMapper.selectOneByExample(example);  | 
|         return  sysEnvironmentalInfo1;  | 
|     }  | 
|   | 
|     public SysEnvironmentalInfo findByItemTypeAndAreaNotDel(String itemType,Integer areaId) {  | 
|         Example example=new Example(SysEnvironmentalInfo.class);  | 
|         Example.Criteria criteria = example.createCriteria();  | 
|         criteria.andEqualTo("itemType",itemType);  | 
|         criteria.andEqualTo("cityId",areaId);  | 
|         criteria.andEqualTo("delFlag",Constants.DEL_NOT_FLAG);  | 
|         SysEnvironmentalInfo sysEnvironmentalInfo1 = sysEnvironmentalInfoMapper.selectOneByExample(example);  | 
|         return  sysEnvironmentalInfo1;  | 
|     }  | 
|   | 
|   | 
|     /**  | 
|      * 根据区域查询废纸及杂纸的最低单价  先算废纸再算杂纸  | 
|      * @param areaIds  | 
|      * @return  | 
|      */  | 
|     public String findByMinItemPriceTypeAndAreaIds(List<String> areaIds) {  | 
|         String paperBasic=null;  | 
|         Dict dict=Dict.create();  | 
|         for (String areaId : areaIds) {  | 
|             SysEnvironmentalInfo byItemTypeAndArea = findByItemTypeAndArea(Constants.PAPER_WASTE_ITEM_TYPE, Convert.toInt(areaId));  | 
|             if (byItemTypeAndArea != null&&Convert.toBigDecimal(byItemTypeAndArea.getPrice(),Constants.MONEY_INIT).compareTo(BigDecimal.ZERO)>0) {  | 
|                 //废纸  | 
|                 List<BigDecimal> list= (List<BigDecimal>) dict.get("fz");  | 
|                 if(CollUtil.isEmpty(list)){  | 
|                     list=CollUtil.newArrayList();  | 
|                 }  | 
|                 list.add(Convert.toBigDecimal(byItemTypeAndArea.getPrice()));  | 
|                 dict.put("fz", list);  | 
|             } else {  | 
|                 byItemTypeAndArea = findByItemTypeAndArea(Constants.PAPER_MIX_ITEM_TYPE, Convert.toInt(areaId));  | 
|                 if (byItemTypeAndArea != null&&Convert.toBigDecimal(byItemTypeAndArea.getPrice(),Constants.MONEY_INIT).compareTo(BigDecimal.ZERO)>0) {  | 
|                     List<BigDecimal> list= (List<BigDecimal>) dict.get("zz");  | 
|                     if(CollUtil.isEmpty(list)){  | 
|                         list=CollUtil.newArrayList();  | 
|                     }  | 
|                     list.add(Convert.toBigDecimal(byItemTypeAndArea.getPrice()));  | 
|                     dict.put("zz", list);  | 
|                 }  | 
|             }  | 
|         }  | 
|   | 
|         List<BigDecimal> list= (List<BigDecimal>) dict.get("fz");  | 
|         if(CollUtil.isNotEmpty(list)) {  | 
|             CollUtil.sort(list, new IndexedComparator<>());  | 
|             return Convert.toStr(CollUtil.getFirst(list));  | 
|         }  | 
|   | 
|         list= (List<BigDecimal>) dict.get("zz");  | 
|         if(CollUtil.isNotEmpty(list)) {  | 
|             CollUtil.sort(list, new IndexedComparator<>());  | 
|             return Convert.toStr(CollUtil.getFirst(list));  | 
|         }  | 
|   | 
|         return paperBasic;  | 
|     }  | 
|   | 
|   | 
|   | 
|   | 
|   | 
| }  |