|
@@ -285,6 +285,39 @@ public class BmstruckDetailsOrderServiceImpl implements IBmstruckDetailsOrderSer
|
|
|
return calSufExpr(s);
|
|
|
}
|
|
|
|
|
|
+ public BigDecimal updateSteelAmounts(Map<String,Object> map) throws Exception {
|
|
|
+ BigDecimal orderId = DataChange.dataToBigDecimal(map.get("orderId"));
|
|
|
+ BigDecimal weightTaskResultId = DataChange.dataToBigDecimal(map.get("weightTaskResultId"));
|
|
|
+ BigDecimal orderType = bmstruckDetailsOrderMapper.getOrderType(orderId);
|
|
|
+ BigDecimal priceId = DataChange.dataToBigDecimal(map.get("priceId"));
|
|
|
+ BigDecimal priceValue = getPriceValue(priceId);
|
|
|
+ BigDecimal netWeight = getNetWeight(weightTaskResultId);
|
|
|
+ // 得到计费公式
|
|
|
+ String formula_string = null;
|
|
|
+ if (orderType.intValue() >= 1 && orderType.intValue() <= 3) {
|
|
|
+// BigDecimal distance = new BigDecimal(101);
|
|
|
+ // 得到销售汽运计费公式
|
|
|
+// if (distance.intValue() >= 91 || distance.intValue() <= 109) {
|
|
|
+ // 得到销售10km差距内的汽运计费公式
|
|
|
+ formula_string = bmstruckFormulaService.getTruckFormula(new BigDecimal(10));
|
|
|
+ // 替换采购汽运运计算公式
|
|
|
+ formula_string = formula_string.replace("运输单价",priceValue.toString())
|
|
|
+ .replace("物资净重",netWeight.toString());
|
|
|
+// }
|
|
|
+// else {
|
|
|
+// // 得到销售10km差距外的汽运计费公式
|
|
|
+// formula_string = bmstruckFormulaService.getTruckFormula(new BigDecimal(11));
|
|
|
+// // 替换采购汽运运计算公式
|
|
|
+// formula_string = formula_string.replace("运输单价",priceValue.toString())
|
|
|
+// .replace("运输距离",distance.toString())
|
|
|
+// .replace("物资净重",netWeight.toString());
|
|
|
+// }
|
|
|
+ }
|
|
|
+ String s = toSufExpr(formula_string);
|
|
|
+ return calSufExpr(s);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 中缀转换后缀表达式
|
|
|
*/
|
|
@@ -501,6 +534,10 @@ public class BmstruckDetailsOrderServiceImpl implements IBmstruckDetailsOrderSer
|
|
|
}
|
|
|
BigDecimal priceId = DataChange.dataToBigDecimal(mapValue.get("priceId"));
|
|
|
//根据运输订单id查询计费详单id
|
|
|
+ OmstruckOrder omstruckOrder = new OmstruckOrder();
|
|
|
+ omstruckOrder.setOrderId(orderId);
|
|
|
+ omstruckOrder.setPriceId(priceId);
|
|
|
+ omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
|
|
|
List<BigDecimal> detailIds = bmstruckDetailsOrderMapper.getDetailIds(orderId);
|
|
|
int result = 0;
|
|
|
for (BigDecimal detailsId : detailIds) {
|
|
@@ -510,9 +547,13 @@ public class BmstruckDetailsOrderServiceImpl implements IBmstruckDetailsOrderSer
|
|
|
bmstruckDetailsOrder.setPriceids(priceId1+","+priceId);
|
|
|
bmstruckDetailsOrder.setPriceId(priceId);
|
|
|
BigDecimal weightTaskResultId = bmstruckDetailsOrder.getWeightTaskResultId();
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ map.put("orderId",orderId);
|
|
|
+ map.put("weightTaskResultId",weightTaskResultId);
|
|
|
+ map.put("priceId",priceId);
|
|
|
try {
|
|
|
// 计算出新的详单金额
|
|
|
- BigDecimal newAmount = generateTruckFees(orderId,weightTaskResultId);
|
|
|
+ BigDecimal newAmount = updateSteelAmounts(map);
|
|
|
bmstruckDetailsOrder.setDetailsAmount(newAmount);
|
|
|
//修改计量表的历史时间
|
|
|
omstruckOrderMapper.modifyOldTime(priceId,new Date());
|
|
@@ -526,15 +567,11 @@ public class BmstruckDetailsOrderServiceImpl implements IBmstruckDetailsOrderSer
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
- OmstruckOrder omstruckOrder = new OmstruckOrder();
|
|
|
- omstruckOrder.setOrderId(orderId);
|
|
|
- omstruckOrder.setPriceId(priceId);
|
|
|
- omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
|
|
|
if(DataChange.dataToBigDecimal(mapValue.get("updatePlace")).intValue() == 1) {
|
|
|
//修改地址
|
|
|
bmstruckDetailsOrderMapper.updatePlace(mapValue);
|
|
|
}
|
|
|
- //BigDecimal detailsId = DataChange.dataToBigDecimal(mapValue.get("detailsId"));
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|