Forráskód Böngészése

Merge branch 'master' of https://git.steerinfo.com/DAL-DAZHOU/DAL-DAZHOU-RMS-API

zhouzh 3 éve
szülő
commit
38c8851e99

+ 3 - 0
src/main/java/com/steerinfo/dil/mapper/RmsOilPriceMapper.java

@@ -23,4 +23,7 @@ public interface RmsOilPriceMapper extends IBaseMapper<RmsOilPrice, BigDecimal>
 
     //通过油品ID获取上一次油品价格
     Map<String, Object> getLastOilPrice(BigDecimal oilNameId);
+
+    //关闭油价
+    int closeLastOilPrice(Map<String, Object> map);
 }

+ 14 - 13
src/main/java/com/steerinfo/dil/service/impl/RmsOilPriceServiceImpl.java

@@ -49,7 +49,7 @@ public class RmsOilPriceServiceImpl implements IRmsOilPriceService {
         BigDecimal num = new BigDecimal(100);
         for (Map<String, Object> map : oilPriceList) {
             BigDecimal floatingScale = DataChange.dataToBigDecimal(map.get("floatingScale"));
-            map.put("floatingScale", floatingScale.multiply(num) + "%");
+            map.put("floatingScale", floatingScale.multiply(num).setScale(2, BigDecimal.ROUND_HALF_UP) + "%");
         }
         return oilPriceList;
     }
@@ -62,12 +62,17 @@ public class RmsOilPriceServiceImpl implements IRmsOilPriceService {
      * @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());
@@ -83,9 +88,7 @@ public class RmsOilPriceServiceImpl implements IRmsOilPriceService {
         //如果是已经启用的则不能删除
         Map<String, Object> mesMap = rmsOilPriceMapper.getOilPriceById(id);
         BigDecimal priceStatus = DataChange.dataToBigDecimal(mesMap.get("priceStatus"));
-        if(priceStatus.intValue() != 1){
-            return 0;
-        }
+        if(priceStatus.intValue() != 1) return 0;
         RmsOilPrice rmsOilPrice = new RmsOilPrice();
         rmsOilPrice.setPriceId(id);
         rmsOilPrice.setDeleted(new BigDecimal(1));
@@ -115,13 +118,13 @@ public class RmsOilPriceServiceImpl implements IRmsOilPriceService {
         rmsOilPrice.setPriceId(rmsOilPriceMapper.selectOilPriceId());
 
         //获取油品ID、油价日期、油价
-        BigDecimal oilNameId = DataChange.dataToBigDecimal(map.get("oilNameId"));
-        rmsOilPrice.setPriceOilTypeId(oilNameId);
+        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(oilNameId);
+        Map<String, Object> mesMap = rmsOilPriceMapper.getLastOilPrice(oilTypeId);
         BigDecimal n = null; //浮动比例
         if(mesMap != null){
             BigDecimal lastPrice = DataChange.dataToBigDecimal(mesMap.get("priceValue"));
@@ -129,20 +132,18 @@ public class RmsOilPriceServiceImpl implements IRmsOilPriceService {
             n = subtract.divide(lastPrice, 4,BigDecimal.ROUND_HALF_UP);
             rmsOilPrice.setFloatingScale(n); //四舍五入
         }
-        //如果新增的油价是启用的则关闭之前的已启用的
+        //如果新增的油价是启用的则关闭该油品之前的已启用的
         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);
+                map.put("oilTypeId", oilTypeId);
+                rmsOilPriceMapper.closeLastOilPrice(map);
             }
             //设置启用状态
             rmsOilPrice.setPriceStatus(new BigDecimal(0));
             //批量修改油价
             Map<String, Object> updateMesMap = new HashMap<>();
-            updateMesMap.put("oilTypeId",oilNameId);
+            updateMesMap.put("oilTypeId",oilTypeId);
             updateMesMap.put("newOilPrice", priceValue);
             amsFeign.batchUpdateTransportPriceByOilPrice1(updateMesMap);
         }else {

+ 6 - 1
src/main/resources/com/steerinfo/dil/mapper/RmsOilPriceMapper.xml

@@ -488,7 +488,12 @@
       and ROP.PRICE_STATUS = 0
   </select>
 
-
+<!-- 关闭之前当前油品所有正在启用的油价 -->
+  <update id="closeLastOilPrice" parameterType="map">
+    update RMS_OIL_PRICE RP
+        set RP.PRICE_STATUS = 1
+    where RP.PRICE_OIL_TYPE_ID = #{oilTypeId} and RP.PRICE_STATUS = 0
+  </update>
 
 
 </mapper>