From 37140c9cea5a04dfbdfc49388654c5d557271bd6 Mon Sep 17 00:00:00 2001 From: linfso Date: Sat, 11 May 2024 14:29:24 +0800 Subject: [PATCH] md --- .../erp/web/emis/EmisWaybillController.java | 23 ++++++++++++ .../erp/emis/service/IEmisWaybillService.java | 2 ++ .../service/impl/EmisWaybillServiceImpl.java | 35 +++++++++++++++++-- 3 files changed, 58 insertions(+), 2 deletions(-) diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java index cbd4c4420..9b85bb5bf 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisWaybillController.java @@ -195,7 +195,30 @@ public class EmisWaybillController extends BaseController return AjaxResult.error("服务器异常,联系客服"); } + } + @Log(title = "计算体积重量", businessType = BusinessType.OTHER) + @PostMapping(value = "/calcVolumeWeight") + public AjaxResult calcVolumeWeight(@RequestBody WaybillOrder waybillOrder) + { + try { + EmisWaybill emisWaybillSave = waybillOrder.toDb(); + + emisWaybillService.calcVolumeWeight(emisWaybillSave); + + JSONObject jObjRst = new JSONObject(); + jObjRst.put("volumeWeight", emisWaybillSave.getVolumeWeight()); + return AjaxResult.success("计算成功", jObjRst); + } + catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error("("+((EmisBizError)ex).getErrorCode()+")"+ex.getMessage()); + } + + return AjaxResult.error("服务器异常,联系客服"); + } } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisWaybillService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisWaybillService.java index 3ded5d79c..83889135a 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisWaybillService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisWaybillService.java @@ -115,6 +115,8 @@ public interface IEmisWaybillService //计算运单费用 public void calcWaybillFee(EmisWaybill emisWaybill) throws EmisBizError; + // 计算体积重量 + public void calcVolumeWeight(EmisWaybill emisWaybill) throws EmisBizError; // 计算结算重量 public void calcSettledWeight(EmisWaybill emisWaybill) throws EmisBizError; diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index 8124784d7..e05b8d7c8 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -567,8 +567,8 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb if ( StringUtils.isEmpty(emisWaybill.getProductType()) - || emisWaybill.getBillWeight() == null - || emisWaybill.getTotalVolume() == null + || emisWaybill.getBillWeight() == null + || emisWaybill.getTotalVolume() == null ) { @@ -606,6 +606,37 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb } + + @Override + public void calcVolumeWeight(EmisWaybill emisWaybill) throws EmisBizError { + + if ( + StringUtils.isEmpty(emisWaybill.getProductType()) + || emisWaybill.getTotalVolume() == null + ) + { + + throw new EmisBizError(EmisBizErrorType.PARAM_ERROR1, "参数不完整"); + } + + double totalVolume=emisWaybill.getTotalVolume().doubleValue(); + + // 获取产品信息 + EmisTransProduct emisTransProduct = getTransProductByCode(emisWaybill.getProductType()); + + // 获取泡重比,计算体积重量 + EmisTransLine emisTransLine= getTransLineByCode(emisTransProduct.getTransLineCode()); + + double volumeWeight=0.0D; + if(!StringUtils.isEmpty(emisTransLine.getMeterRate())) { + volumeWeight=totalVolume * (1000000 / Double.valueOf(emisTransLine.getMeterRate())); + DecimalFormat df = new DecimalFormat("#.#####"); + volumeWeight= Double.parseDouble(df.format(volumeWeight)); + } + emisWaybill.setVolumeWeight(BigDecimal.valueOf(volumeWeight)); + emisWaybill.setMeterType(emisTransLine.getMeterRate()); + } + @Override public List selectEmisWaybillByMutiBillCode(String[] billCodes){ return emisWaybillMapper.selectEmisWaybillByMutiBillCode(billCodes);