123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- 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.HashMap;
- 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<Map<String, Object>> getOilPriceList(Map<String, Object> mapVal) {
- List<Map<String, Object>> oilPriceList = rmsOilPriceMapper.getOilPriceList(mapVal);
- BigDecimal num = new BigDecimal(100);
- for (Map<String, Object> map : oilPriceList) {
- BigDecimal floatingScale = DataChange.dataToBigDecimal(map.get("floatingScale"));
- map.put("floatingScale", floatingScale.multiply(num).setScale(2, BigDecimal.ROUND_HALF_UP) + "%");
- }
- return oilPriceList;
- }
- /**
- * 启用油价
- * @Author TXF
- * @Date 2022/1/21 9:08
- * @param id
- * @return
- **/
- @Transactional
- @Override
- public int updateOilPrice(Integer id) {
- RmsOilPrice rmsOilPrice = new RmsOilPrice();
- //查询该启用油价的信息
- Map<String, Object> mesMap = rmsOilPriceMapper.getOilPriceById(new BigDecimal(id));
- if(DataChange.dataToBigDecimal(mesMap.get("priceStatus")).intValue() == 0){
- return 0;
- }else{
- //通过油品信息关闭该油品所有正在启用的油价
- rmsOilPriceMapper.closeLastOilPrice(mesMap);
- }
- rmsOilPrice.setId(new BigDecimal(id));
- rmsOilPrice.setUpdateTime(new Date());
- rmsOilPrice.setPriceStatus(new BigDecimal(0));
- //加入正数条件
- mesMap.put("flag","1");
- //油价联动
- amsFeign.batchUpdateTransportPriceByOilPrice1(mesMap);
- return rmsOilPriceMapper.updateByPrimaryKeySelective(rmsOilPrice);
- }
- //根据Id删除油价,该操作通过测试,排查第三优先级
- @Override
- public int deleteOilPrice(BigDecimal id) {
- //如果是已经启用的则不能删除
- Map<String, Object> mesMap = rmsOilPriceMapper.getOilPriceById(id);
- BigDecimal priceStatus = DataChange.dataToBigDecimal(mesMap.get("priceStatus"));
- if(priceStatus.intValue() != 1) return 0;
- RmsOilPrice rmsOilPrice = new RmsOilPrice();
- rmsOilPrice.setPriceId(id);
- rmsOilPrice.setDeleted(new BigDecimal(1));
- return rmsOilPriceMapper.updateByPrimaryKeySelective(rmsOilPrice) ;
- }
- //根据Id查询油价
- @Override
- public Map<String, Object> getOilPriceById(BigDecimal id) {
- return this.rmsOilPriceMapper.getOilPriceById(id);
- }
- /**
- * 新增油价
- * @Author TXF
- * @Date 2022/1/19 17:09
- * @param map
- * @return
- **/
- @Transactional
- @Override
- public int insertOilPrice(Map<String,Object> map) {
- RmsOilPrice rmsOilPrice = new RmsOilPrice();
- rmsOilPrice.setPriceId(rmsOilPriceMapper.selectOilPriceId());
- //获取油品ID、油价日期、油价
- BigDecimal oilTypeId = DataChange.dataToBigDecimal(map.get("oilNameId"));
- rmsOilPrice.setPriceOilTypeId(oilTypeId);
- rmsOilPrice.setPriceDate(new Date((long) map.get("priceDate")));
- BigDecimal priceValue = DataChange.dataToBigDecimal(map.get("priceValue"));
- rmsOilPrice.setPriceValue(priceValue);
- //根据油品ID获取上一次油价价格计算油价浮动
- Map<String, Object> mesMap = rmsOilPriceMapper.getLastOilPrice(oilTypeId);
- BigDecimal n = null; //浮动比例
- if(mesMap != null){
- BigDecimal lastPrice = DataChange.dataToBigDecimal(mesMap.get("priceValue"));
- BigDecimal subtract = priceValue.subtract(lastPrice); //当前油价减去上一次油价
- n = subtract.divide(lastPrice, 4,BigDecimal.ROUND_HALF_UP);
- rmsOilPrice.setFloatingScale(n); //四舍五入
- }
- //如果新增的油价是启用的则关闭该油品之前的已启用的
- Boolean priceStatus = (Boolean) map.get("priceStatus");
- if(priceStatus && n.compareTo(BigDecimal.ZERO)==-1){
- if(mesMap != null){
- map.put("oilTypeId", oilTypeId);
- rmsOilPriceMapper.closeLastOilPrice(map);
- }
- //设置启用状态
- rmsOilPrice.setPriceStatus(new BigDecimal(0));
- //批量修改油价
- Map<String, Object> updateMesMap = new HashMap<>();
- updateMesMap.put("oilTypeId",oilTypeId);
- updateMesMap.put("newOilPrice", priceValue);
- amsFeign.batchUpdateTransportPriceByOilPrice1(updateMesMap);
- }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);
- }
- }
|