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 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 findByParentId(Long parentId){ SysEnvironmentalInfo sysEnvironmentalInfo=new SysEnvironmentalInfo(); sysEnvironmentalInfo.setParentId(parentId); sysEnvironmentalInfo.setDelFlag(Constants.DEL_NOT_FLAG); List sysEnvironmentalInfo2 = sysEnvironmentalInfoMapper.select(sysEnvironmentalInfo); return sysEnvironmentalInfo2; } /** * 查找所有子类的itemType集合 * @param areaId * @param itemType * @return */ public List findChildItemTypeByType(String areaId,String itemType){ SysEnvironmentalInfo sysEnvironmentalInfo1 = findByItemTypeAndArea(itemType,Convert.toInt(areaId)); long parentId = sysEnvironmentalInfo1.getId(); List 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 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 list= (List) 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 list= (List) dict.get("zz"); if(CollUtil.isEmpty(list)){ list=CollUtil.newArrayList(); } list.add(Convert.toBigDecimal(byItemTypeAndArea.getPrice())); dict.put("zz", list); } } } List list= (List) dict.get("fz"); if(CollUtil.isNotEmpty(list)) { CollUtil.sort(list, new IndexedComparator<>()); return Convert.toStr(CollUtil.getFirst(list)); } list= (List) dict.get("zz"); if(CollUtil.isNotEmpty(list)) { CollUtil.sort(list, new IndexedComparator<>()); return Convert.toStr(CollUtil.getFirst(list)); } return paperBasic; } }