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;
|
}
|
|
|
|
|
|
}
|