Browse Source

update 更新扣亏量计算

chenlin 2 years ago
parent
commit
84d3f9b5e2

+ 24 - 7
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -417,15 +417,32 @@ public class KwTransportService {
                     null : DateUtil.getDateTime(waybillOrder.getCreateTime()));
             vo.setUpdateTime(waybillOrder.getUpdateTime() == null ?
                     null : DateUtil.getDateTime(waybillOrder.getUpdateTime()));
-            vo.setDeficitAmount(waybillOrder.getDeficitAmount() == null ?
-                    null : String.valueOf(waybillOrder.getDeficitAmount()));
-            BigDecimal deficitLoss = waybillOrder.getLoss() == null ? BigDecimal.valueOf(0) : waybillOrder.getLoss();
-            BigDecimal deficitAmount = waybillOrder.getDeficitAmount() == null ? BigDecimal.valueOf(0) : waybillOrder.getDeficitAmount();
-            BigDecimal deficitRealAmount = BigDecimal.valueOf(0);
+            // 货损量
+            BigDecimal deficitAmount = waybillOrder.getDeficitAmount() == null ?
+                    BigDecimal.valueOf(0) : waybillOrder.getDeficitAmount();
+            vo.setDeficitAmount(String.valueOf(deficitAmount));
+            // 存在装卸货差时 计算扣亏量
+            BigDecimal lossAmount = BigDecimal.valueOf(0);
             if(deficitAmount.compareTo(BigDecimal.valueOf(0)) > 0) {
-                deficitRealAmount = deficitLoss.subtract(deficitAmount);
+                String lossUnit = waybillOrder.getLossUnit();
+                Map<String, SysDictResDto> LossUnitType = remoteSystemService.queryDictMapByType(DictTypeEnum.TAX_RATE_TYPE.getType());
+                SysDictResDto sysDictRes = LossUnitType.get(lossUnit);
+                BigDecimal loss = waybillOrder.getLoss() == null ? BigDecimal.valueOf(0) : waybillOrder.getLoss();
+
+                if(sysDictRes.getLabel().equals("%")) {
+                    // 百分比
+                    lossAmount = loss.multiply(waybillOrder.getLoadAmount()).divide(BigDecimal.valueOf(100));
+                } else {
+                    // 千分比
+                    lossAmount = loss.multiply(waybillOrder.getLoadAmount()).divide(BigDecimal.valueOf(1000));
+                }
+                lossAmount = deficitAmount.subtract(lossAmount);
+                if(lossAmount.compareTo(BigDecimal.valueOf(0)) < 0) {
+                    lossAmount = BigDecimal.valueOf(0);
+                }
             }
-            vo.setDeficitRealAmount(deficitRealAmount.toString());
+            // 实际扣亏量
+            vo.setDeficitRealAmount(lossAmount.setScale(2).toString());
             vo.setGoodsPriceUnit(waybillOrder.getGoodsPriceUnit() == null ?
                     null : String.valueOf(waybillOrder.getGoodsPriceUnit()));
             returnList.add(vo);