package com.steerinfo.dil.service.impl; import com.steerinfo.dil.feign.AmsFeign; import com.steerinfo.dil.mapper.RmsOilTypeMapper; import com.steerinfo.dil.model.RmsOilType; import com.steerinfo.dil.util.DataChange; import com.steerinfo.framework.mapper.IBaseMapper; import com.steerinfo.framework.service.impl.BaseServiceImpl; import com.steerinfo.dil.model.RmsOilPrice; import com.steerinfo.dil.mapper.RmsOilPriceMapper; import com.steerinfo.dil.service.IRmsOilPriceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.math.BigDecimal; import java.util.List; import java.util.Map; /** * RmsOilPricea服务实现: * @author generator * @version 1.0-SNAPSHORT 2021-11-23 05:01 * 类描述 * 修订历史: * 日期:2021-11-23 * 作者:generator * 参考: * 描述:RmsOilPricea服务实现 * @see null * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved. */ @Service(value = "rmsOilPriceService") public class RmsOilPriceServiceImpl implements IRmsOilPriceService { @Autowired private RmsOilPriceMapper rmsOilPriceMapper; @Autowired private AmsFeign amsFeign; @Autowired private RmsOilTypeMapper rmsOilTypeMapper; @Override //展示油价,该操作还有一些元素未明,框计算报错,但能通过测试,bug排除第二优先级 public List> getOilPriceList(Map mapVal) { List> oilPriceList = rmsOilPriceMapper.getOilPriceList(mapVal); BigDecimal num = new BigDecimal(100); for (Map map : oilPriceList) { BigDecimal floatingScale = DataChange.dataToBigDecimal(map.get("floatingScale")); map.put("floatingScale", floatingScale.multiply(num) + "%"); } return oilPriceList; } @Override //更新油价,还需要改改,排查bug第一优先级 public int updateOilPrice(RmsOilPrice rmsOilPrice) { rmsOilPrice.setUpdateUsername("admin"); rmsOilPrice.setUpdateTime(new Date()); //油价联动 amsFeign.batchUpdateTransportPriceByOilPrice1(); return this.rmsOilPriceMapper.updateByPrimaryKeySelective(rmsOilPrice); } //根据Id删除油价,该操作通过测试,排查第三优先级 @Override public Object deleteOilPrice(BigDecimal id) { RmsOilPrice rmsOilPrice = new RmsOilPrice(); rmsOilPrice.setPriceId(id); rmsOilPrice.setDeleted(new BigDecimal(1)); return this.rmsOilPriceMapper.updateByPrimaryKeySelective(rmsOilPrice) ; } //根据Id查询油价 @Override public List> getOilPriceById(BigDecimal id) { return this.rmsOilPriceMapper.getOilPriceById(id); } //批量修改油价 // amsFeign.batchUpdateTransportPriceByOilPrice1(); /** * 新增油价 * @Author TXF * @Date 2022/1/19 17:09 * @param map * @return **/ @Transactional @Override public int insertOilPrice(Map map) { RmsOilPrice rmsOilPrice = new RmsOilPrice(); rmsOilPrice.setPriceId(rmsOilPriceMapper.selectOilPriceId()); //获取油品ID、油价日期、油价 BigDecimal oilNameId = DataChange.dataToBigDecimal(map.get("oilNameId")); rmsOilPrice.setPriceOilName(oilNameId); rmsOilPrice.setPriceDate(new Date((long) map.get("priceDate"))); BigDecimal priceValue = DataChange.dataToBigDecimal(map.get("priceValue")); rmsOilPrice.setPriceValue(priceValue); //根据油品ID获取上一次油价价格计算油价浮动 Map mesMap = rmsOilPriceMapper.getLastOilPrice(oilNameId); if(mesMap != null){ BigDecimal lastPrice = DataChange.dataToBigDecimal(mesMap.get("priceValue")); BigDecimal subtract = priceValue.subtract(lastPrice); //当前油价减去上一次油价 rmsOilPrice.setFloatingScale(subtract.divide(lastPrice, 4,BigDecimal.ROUND_HALF_UP)); //四舍五入 } //如果新增的油价是启用的则关闭之前的已启用的 Boolean priceStatus = (Boolean) map.get("priceStatus"); if(priceStatus){ if(mesMap != null){ RmsOilPrice rmsOilPrice2 = new RmsOilPrice(); rmsOilPrice2.setPriceStatus(new BigDecimal(1)); rmsOilPrice2.setPriceId(DataChange.dataToBigDecimal(mesMap.get("priceId"))); rmsOilPriceMapper.updateByPrimaryKeySelective(rmsOilPrice2); } //设置启用状态 rmsOilPrice.setPriceStatus(new BigDecimal(0)); }else { //否则设置停用状态 rmsOilPrice.setPriceStatus(new BigDecimal(1)); } rmsOilPrice.setInsertUsername("admin"); rmsOilPrice.setInsertTime(new Date()); rmsOilPrice.setDeleted(new BigDecimal(0)); return rmsOilPriceMapper.insertSelective(rmsOilPrice); } /** * 添加油品名称 * @Author TXF * @Date 2022/1/19 17:11 * @param oilTypeName * @return **/ public int addOilType(String oilTypeName){ RmsOilType rmsOilType = new RmsOilType(); Integer maxId = rmsOilTypeMapper.selectMaxId(); rmsOilType.setOilTypeId(new BigDecimal(maxId==null?1:maxId)); rmsOilType.setOilTypeName(oilTypeName); rmsOilType.setDeleted(new BigDecimal(0)); rmsOilType.setInsertTime(new Date()); rmsOilType.setInsertUsername("admin"); return rmsOilTypeMapper.insertSelective(rmsOilType); } }