RmsOilPriceServiceImpl.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.feign.AmsFeign;
  3. import com.steerinfo.dil.mapper.RmsOilTypeMapper;
  4. import com.steerinfo.dil.model.RmsOilType;
  5. import com.steerinfo.dil.util.DataChange;
  6. import com.steerinfo.framework.mapper.IBaseMapper;
  7. import com.steerinfo.framework.service.impl.BaseServiceImpl;
  8. import com.steerinfo.dil.model.RmsOilPrice;
  9. import com.steerinfo.dil.mapper.RmsOilPriceMapper;
  10. import com.steerinfo.dil.service.IRmsOilPriceService;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import java.util.Date;
  15. import java.math.BigDecimal;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. /**
  20. * RmsOilPricea服务实现:
  21. * @author generator
  22. * @version 1.0-SNAPSHORT 2021-11-23 05:01
  23. * 类描述
  24. * 修订历史:
  25. * 日期:2021-11-23
  26. * 作者:generator
  27. * 参考:
  28. * 描述:RmsOilPricea服务实现
  29. * @see null
  30. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  31. */
  32. @Service(value = "rmsOilPriceService")
  33. public class RmsOilPriceServiceImpl implements IRmsOilPriceService {
  34. @Autowired
  35. private RmsOilPriceMapper rmsOilPriceMapper;
  36. @Autowired
  37. private AmsFeign amsFeign;
  38. @Autowired
  39. private RmsOilTypeMapper rmsOilTypeMapper;
  40. @Override
  41. //展示油价,该操作还有一些元素未明,框计算报错,但能通过测试,bug排除第二优先级
  42. public List<Map<String, Object>> getOilPriceList(Map<String, Object> mapVal) {
  43. List<Map<String, Object>> oilPriceList = rmsOilPriceMapper.getOilPriceList(mapVal);
  44. BigDecimal num = new BigDecimal(100);
  45. for (Map<String, Object> map : oilPriceList) {
  46. BigDecimal floatingScale = DataChange.dataToBigDecimal(map.get("floatingScale"));
  47. map.put("floatingScale", floatingScale.multiply(num).setScale(2, BigDecimal.ROUND_HALF_UP) + "%");
  48. }
  49. return oilPriceList;
  50. }
  51. /**
  52. * 启用油价
  53. * @Author TXF
  54. * @Date 2022/1/21 9:08
  55. * @param id
  56. * @return
  57. **/
  58. @Transactional
  59. @Override
  60. public int updateOilPrice(Integer id) {
  61. RmsOilPrice rmsOilPrice = new RmsOilPrice();
  62. //查询该启用油价的信息
  63. Map<String, Object> mesMap = rmsOilPriceMapper.getOilPriceById(new BigDecimal(id));
  64. if(DataChange.dataToBigDecimal(mesMap.get("priceStatus")).intValue() == 0){
  65. return 0;
  66. }else{
  67. //通过油品信息关闭该油品所有正在启用的油价
  68. rmsOilPriceMapper.closeLastOilPrice(mesMap);
  69. }
  70. rmsOilPrice.setId(new BigDecimal(id));
  71. rmsOilPrice.setUpdateTime(new Date());
  72. rmsOilPrice.setPriceStatus(new BigDecimal(0));
  73. //加入正数条件
  74. mesMap.put("flag","1");
  75. //油价联动
  76. amsFeign.batchUpdateTransportPriceByOilPrice1(mesMap);
  77. return rmsOilPriceMapper.updateByPrimaryKeySelective(rmsOilPrice);
  78. }
  79. //根据Id删除油价,该操作通过测试,排查第三优先级
  80. @Override
  81. public int deleteOilPrice(BigDecimal id) {
  82. //如果是已经启用的则不能删除
  83. Map<String, Object> mesMap = rmsOilPriceMapper.getOilPriceById(id);
  84. BigDecimal priceStatus = DataChange.dataToBigDecimal(mesMap.get("priceStatus"));
  85. if(priceStatus.intValue() != 1) return 0;
  86. RmsOilPrice rmsOilPrice = new RmsOilPrice();
  87. rmsOilPrice.setPriceId(id);
  88. rmsOilPrice.setDeleted(new BigDecimal(1));
  89. return rmsOilPriceMapper.updateByPrimaryKeySelective(rmsOilPrice) ;
  90. }
  91. //根据Id查询油价
  92. @Override
  93. public Map<String, Object> getOilPriceById(BigDecimal id) {
  94. return this.rmsOilPriceMapper.getOilPriceById(id);
  95. }
  96. /**
  97. * 新增油价
  98. * @Author TXF
  99. * @Date 2022/1/19 17:09
  100. * @param map
  101. * @return
  102. **/
  103. @Transactional
  104. @Override
  105. public int insertOilPrice(Map<String,Object> map) {
  106. RmsOilPrice rmsOilPrice = new RmsOilPrice();
  107. rmsOilPrice.setPriceId(rmsOilPriceMapper.selectOilPriceId());
  108. //获取油品ID、油价日期、油价
  109. BigDecimal oilTypeId = DataChange.dataToBigDecimal(map.get("oilNameId"));
  110. rmsOilPrice.setPriceOilTypeId(oilTypeId);
  111. rmsOilPrice.setPriceDate(new Date((long) map.get("priceDate")));
  112. BigDecimal priceValue = DataChange.dataToBigDecimal(map.get("priceValue"));
  113. rmsOilPrice.setPriceValue(priceValue);
  114. //根据油品ID获取上一次油价价格计算油价浮动
  115. Map<String, Object> mesMap = rmsOilPriceMapper.getLastOilPrice(oilTypeId);
  116. BigDecimal n = null; //浮动比例
  117. if(mesMap != null){
  118. BigDecimal lastPrice = DataChange.dataToBigDecimal(mesMap.get("priceValue"));
  119. BigDecimal subtract = priceValue.subtract(lastPrice); //当前油价减去上一次油价
  120. n = subtract.divide(lastPrice, 4,BigDecimal.ROUND_HALF_UP);
  121. rmsOilPrice.setFloatingScale(n); //四舍五入
  122. }
  123. //如果新增的油价是启用的则关闭该油品之前的已启用的
  124. Boolean priceStatus = (Boolean) map.get("priceStatus");
  125. if(priceStatus && n.compareTo(BigDecimal.ZERO)==-1){
  126. if(mesMap != null){
  127. map.put("oilTypeId", oilTypeId);
  128. rmsOilPriceMapper.closeLastOilPrice(map);
  129. }
  130. //设置启用状态
  131. rmsOilPrice.setPriceStatus(new BigDecimal(0));
  132. //批量修改油价
  133. Map<String, Object> updateMesMap = new HashMap<>();
  134. updateMesMap.put("oilTypeId",oilTypeId);
  135. updateMesMap.put("newOilPrice", priceValue);
  136. amsFeign.batchUpdateTransportPriceByOilPrice1(updateMesMap);
  137. }else {
  138. //否则设置停用状态
  139. rmsOilPrice.setPriceStatus(new BigDecimal(1));
  140. }
  141. rmsOilPrice.setInsertUsername("admin");
  142. rmsOilPrice.setInsertTime(new Date());
  143. rmsOilPrice.setDeleted(new BigDecimal(0));
  144. return rmsOilPriceMapper.insertSelective(rmsOilPrice);
  145. }
  146. /**
  147. * 添加油品名称
  148. * @Author TXF
  149. * @Date 2022/1/19 17:11
  150. * @param oilTypeName
  151. * @return
  152. **/
  153. public int addOilType(String oilTypeName){
  154. RmsOilType rmsOilType = new RmsOilType();
  155. Integer maxId = rmsOilTypeMapper.selectMaxId();
  156. rmsOilType.setOilTypeId(new BigDecimal(maxId==null?1:maxId));
  157. rmsOilType.setOilTypeName(oilTypeName);
  158. rmsOilType.setDeleted(new BigDecimal(0));
  159. rmsOilType.setInsertTime(new Date());
  160. rmsOilType.setInsertUsername("admin");
  161. return rmsOilTypeMapper.insertSelective(rmsOilType);
  162. }
  163. }