RmsOilPriceServiceImpl.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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.List;
  17. import java.util.Map;
  18. /**
  19. * RmsOilPricea服务实现:
  20. * @author generator
  21. * @version 1.0-SNAPSHORT 2021-11-23 05:01
  22. * 类描述
  23. * 修订历史:
  24. * 日期:2021-11-23
  25. * 作者:generator
  26. * 参考:
  27. * 描述:RmsOilPricea服务实现
  28. * @see null
  29. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  30. */
  31. @Service(value = "rmsOilPriceService")
  32. public class RmsOilPriceServiceImpl implements IRmsOilPriceService {
  33. @Autowired
  34. private RmsOilPriceMapper rmsOilPriceMapper;
  35. @Autowired
  36. private AmsFeign amsFeign;
  37. @Autowired
  38. private RmsOilTypeMapper rmsOilTypeMapper;
  39. @Override
  40. //展示油价,该操作还有一些元素未明,框计算报错,但能通过测试,bug排除第二优先级
  41. public List<Map<String, Object>> getOilPriceList(Map<String, Object> mapVal) {
  42. List<Map<String, Object>> oilPriceList = rmsOilPriceMapper.getOilPriceList(mapVal);
  43. BigDecimal num = new BigDecimal(100);
  44. for (Map<String, Object> map : oilPriceList) {
  45. BigDecimal floatingScale = DataChange.dataToBigDecimal(map.get("floatingScale"));
  46. map.put("floatingScale", floatingScale.multiply(num) + "%");
  47. }
  48. return oilPriceList;
  49. }
  50. @Override
  51. //更新油价,还需要改改,排查bug第一优先级
  52. public int updateOilPrice(RmsOilPrice rmsOilPrice) {
  53. rmsOilPrice.setUpdateUsername("admin");
  54. rmsOilPrice.setUpdateTime(new Date());
  55. //油价联动
  56. amsFeign.batchUpdateTransportPriceByOilPrice1();
  57. return this.rmsOilPriceMapper.updateByPrimaryKeySelective(rmsOilPrice);
  58. }
  59. //根据Id删除油价,该操作通过测试,排查第三优先级
  60. @Override
  61. public Object deleteOilPrice(BigDecimal id) {
  62. RmsOilPrice rmsOilPrice = new RmsOilPrice();
  63. rmsOilPrice.setPriceId(id);
  64. rmsOilPrice.setDeleted(new BigDecimal(1));
  65. return this.rmsOilPriceMapper.updateByPrimaryKeySelective(rmsOilPrice) ;
  66. }
  67. //根据Id查询油价
  68. @Override
  69. public List<Map<String, Object>> getOilPriceById(BigDecimal id) {
  70. return this.rmsOilPriceMapper.getOilPriceById(id);
  71. }
  72. //批量修改油价
  73. // amsFeign.batchUpdateTransportPriceByOilPrice1();
  74. /**
  75. * 新增油价
  76. * @Author TXF
  77. * @Date 2022/1/19 17:09
  78. * @param map
  79. * @return
  80. **/
  81. @Transactional
  82. @Override
  83. public int insertOilPrice(Map<String,Object> map) {
  84. RmsOilPrice rmsOilPrice = new RmsOilPrice();
  85. rmsOilPrice.setPriceId(rmsOilPriceMapper.selectOilPriceId());
  86. //获取油品ID、油价日期、油价
  87. BigDecimal oilNameId = DataChange.dataToBigDecimal(map.get("oilNameId"));
  88. rmsOilPrice.setPriceOilName(oilNameId);
  89. rmsOilPrice.setPriceDate(new Date((long) map.get("priceDate")));
  90. BigDecimal priceValue = DataChange.dataToBigDecimal(map.get("priceValue"));
  91. rmsOilPrice.setPriceValue(priceValue);
  92. //根据油品ID获取上一次油价价格计算油价浮动
  93. Map<String, Object> mesMap = rmsOilPriceMapper.getLastOilPrice(oilNameId);
  94. if(mesMap != null){
  95. BigDecimal lastPrice = DataChange.dataToBigDecimal(mesMap.get("priceValue"));
  96. BigDecimal subtract = priceValue.subtract(lastPrice); //当前油价减去上一次油价
  97. rmsOilPrice.setFloatingScale(subtract.divide(lastPrice, 4,BigDecimal.ROUND_HALF_UP)); //四舍五入
  98. }
  99. //如果新增的油价是启用的则关闭之前的已启用的
  100. Boolean priceStatus = (Boolean) map.get("priceStatus");
  101. if(priceStatus){
  102. if(mesMap != null){
  103. RmsOilPrice rmsOilPrice2 = new RmsOilPrice();
  104. rmsOilPrice2.setPriceStatus(new BigDecimal(1));
  105. rmsOilPrice2.setPriceId(DataChange.dataToBigDecimal(mesMap.get("priceId")));
  106. rmsOilPriceMapper.updateByPrimaryKeySelective(rmsOilPrice2);
  107. }
  108. //设置启用状态
  109. rmsOilPrice.setPriceStatus(new BigDecimal(0));
  110. }else {
  111. //否则设置停用状态
  112. rmsOilPrice.setPriceStatus(new BigDecimal(1));
  113. }
  114. rmsOilPrice.setInsertUsername("admin");
  115. rmsOilPrice.setInsertTime(new Date());
  116. rmsOilPrice.setDeleted(new BigDecimal(0));
  117. return rmsOilPriceMapper.insertSelective(rmsOilPrice);
  118. }
  119. /**
  120. * 添加油品名称
  121. * @Author TXF
  122. * @Date 2022/1/19 17:11
  123. * @param oilTypeName
  124. * @return
  125. **/
  126. public int addOilType(String oilTypeName){
  127. RmsOilType rmsOilType = new RmsOilType();
  128. Integer maxId = rmsOilTypeMapper.selectMaxId();
  129. rmsOilType.setOilTypeId(new BigDecimal(maxId==null?1:maxId));
  130. rmsOilType.setOilTypeName(oilTypeName);
  131. rmsOilType.setDeleted(new BigDecimal(0));
  132. rmsOilType.setInsertTime(new Date());
  133. rmsOilType.setInsertUsername("admin");
  134. return rmsOilTypeMapper.insertSelective(rmsOilType);
  135. }
  136. }