提交 bbbc459a authored 作者: huyufan's avatar huyufan

Merge remote-tracking branch 'origin/v5.5_settlement_20231011' into v5.5_settlement_20231011

...@@ -68,7 +68,7 @@ public enum PerformanceResultEnum implements ResultEnum { ...@@ -68,7 +68,7 @@ public enum PerformanceResultEnum implements ResultEnum {
ORDER_GOODS_ID_GENERATE_LOCK(1384, "货单编号ID获取锁出问题"), ORDER_GOODS_ID_GENERATE_LOCK(1384, "货单编号ID获取锁出问题"),
SETTLEMENT_ORDER_STATUS_CHANGED(1401, "结算单状态已变更,请重新刷新页面"), SETTLEMENT_ORDER_STATUS_CHANGED(1401, "结算单状态已变更,请重新刷新页面"),
SETTLEMENT_NO_FOUND(1401, "结算单不存在"),
; ;
......
package com.clx.performance.param.pc;
import com.clx.performance.param.app.PositionParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class SettlementInvoiceExpressParam extends PositionParam {
@ApiModelProperty(value = "结算id", example = "1")
@NotNull(message = "结算id不能为空")
private Integer settlementId;
@ApiModelProperty(value = "快递公司", example = "顺丰")
@NotBlank(message = "快递公司不能为空")
private String expressCompany;
@ApiModelProperty(value = "快递编号", example = "1000000")
@NotBlank(message = "快递编号不能为空")
private String expressNo;
}
package com.clx.performance.param.pc;
import com.clx.performance.param.app.PositionParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
public class SettlementInvoiceImageUpdateParam extends PositionParam {
@ApiModelProperty(value = "结算id", example = "1")
@NotNull(message = "结算id不能为空")
private Integer settlementId;
@ApiModelProperty(value = "结算凭证", example = "url")
@NotBlank(message = "结算凭证不能为空")
private String invoiceImg;
}
package com.clx.performance.config;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: aiqingguo
* @Description: 司机积分 MQ
* @Date: 2023-10-12 16:27:30
* @Version: 1.0
*/
@Configuration
public class RabbitSettlementConfig {
@Bean
public DirectExchange settlementDefaultExchange() {
return new DirectExchange(RabbitKeySettlementConstants.DEFAULT_EXCHANGE);
}
@Bean
public Queue settlementDefaultDelayQueue() {
Map<String, Object> params = new HashMap<>(8);
params.put("x-message-ttl", 15 * 60 * 1000);
params.put("x-max-length", 5000000);
params.put("x-dead-letter-exchange", RabbitKeySettlementConstants.DEFAULT_EXCHANGE);
params.put("x-dead-letter-routing-key", RabbitKeySettlementConstants.DEFAULT_DEAD_ROUTING_KEY);
return new Queue(RabbitKeySettlementConstants.DEFAULT_DELAY_QUEUE, true, false, false, params);
}
@Bean
public Binding settlementDefaultDelayQueueBinding() {
return BindingBuilder.bind(settlementDefaultDelayQueue()).to(settlementDefaultExchange()).with(RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY);
}
@Bean
public Queue settlementDefaultDeadQueue() {
return new Queue(RabbitKeySettlementConstants.DEFAULT_DEAD_QUEUE);
}
@Bean
public Binding settlementDefaultDeadQueueBinding() {
return BindingBuilder.bind(settlementDefaultDeadQueue()).to(settlementDefaultExchange()).with(RabbitKeySettlementConstants.DEFAULT_DEAD_ROUTING_KEY);
}
/**
* 计费明细新增
*/
@Bean
public Queue settlementDetailAddQueue() {
return new Queue(RabbitKeySettlementConstants.SETTLEMENT_DETAIL_ADD_QUEUE);
}
@Bean
public Binding settlementDetailAddQueueBinding() {
return BindingBuilder.bind(settlementDetailAddQueue()).to(settlementDefaultExchange()).with(RabbitKeySettlementConstants.SETTLEMENT_DETAIL_ROUTING_KEY);
}
}
package com.clx.performance.constant;
/**
* @Author: aiqingguo
* @Description: 结算-mq
* @Date: 2023-10-19 15:10:10
* @Version: 1.0
*/
public class RabbitKeyOrderChildConstants {
private static final String PREFIX = "clx-performance.orderChild.";
private static final String EXCHANGE = ".exchange";
private static final String QUEUE = ".queue";
private static final String QUEUE_ROUTING_KEY = ".routing.key";
private static final String DELAY_QUEUE = ".delay.queue";
private static final String DELAY_ROUTING_KEY = ".delay.routing.key";
private static final String DEAD_QUEUE = ".dead.queue";
private static final String DEAD_ROUTING_KEY = ".dead.routing.key";
private RabbitKeyOrderChildConstants() {
}
/**
* 缺省交换机
*/
public static final String DEFAULT_EXCHANGE = PREFIX +"default"+EXCHANGE;
/**
* 缺省延迟队列
*/
public static final String DEFAULT_DELAY_QUEUE = PREFIX +"default"+DELAY_QUEUE;
public static final String DEFAULT_DELAY_ROUTING_KEY = PREFIX +"default"+DELAY_ROUTING_KEY;
public static final String DEFAULT_DEAD_QUEUE = PREFIX +"default"+DEAD_QUEUE;
public static final String DEFAULT_DEAD_ROUTING_KEY = PREFIX +"default"+DEAD_ROUTING_KEY;
/**
* 运单完成
*/
public static final String CHILD_FINISH_QUEUE = PREFIX +"child.finish"+QUEUE;
public static final String CHILD_FINISH_ROUTING_KEY = PREFIX +"child.finish"+QUEUE_ROUTING_KEY;
}
package com.clx.performance.constant;
/**
* @Author: aiqingguo
* @Description: 结算-mq
* @Date: 2023-10-19 15:13:06
* @Version: 1.0
*/
public class RabbitKeySettlementConstants {
private static final String PREFIX = "clx-performance.settlement.";
private static final String EXCHANGE = ".exchange";
private static final String QUEUE = ".queue";
private static final String QUEUE_ROUTING_KEY = ".routing.key";
private static final String DELAY_QUEUE = ".delay.queue";
private static final String DELAY_ROUTING_KEY = ".delay.routing.key";
private static final String DEAD_QUEUE = ".dead.queue";
private static final String DEAD_ROUTING_KEY = ".dead.routing.key";
private RabbitKeySettlementConstants() {
}
/**
* 缺省交换机
*/
public static final String DEFAULT_EXCHANGE = PREFIX +"default"+EXCHANGE;
/**
* 缺省延迟队列
*/
public static final String DEFAULT_DELAY_QUEUE = PREFIX +"default"+DELAY_QUEUE;
public static final String DEFAULT_DELAY_ROUTING_KEY = PREFIX +"default"+DELAY_ROUTING_KEY;
public static final String DEFAULT_DEAD_QUEUE = PREFIX +"default"+DEAD_QUEUE;
public static final String DEFAULT_DEAD_ROUTING_KEY = PREFIX +"default"+DEAD_ROUTING_KEY;
/**
* 新增计费单
*/
public static final String SETTLEMENT_DETAIL_ADD_QUEUE = PREFIX +"settlementDetail.add"+QUEUE;
public static final String SETTLEMENT_DETAIL_ROUTING_KEY = PREFIX +"settlementDetail.add"+QUEUE_ROUTING_KEY;
}
package com.clx.performance.extranal.user;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import org.springframework.web.bind.annotation.RequestParam;
public interface OwnerInfoService {
OwnerInfoFeignVO getOwnerInfo(@RequestParam("userNo") Long userNo);
}
package com.clx.performance.extranal.user.impl;
import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.user.feign.OwnerInfoFeign;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.msl.common.base.Optional;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
@AllArgsConstructor
public class OwnerInfoServiceImpl implements OwnerInfoService {
private final OwnerInfoFeign ownerInfoFeign;
@Override
public OwnerInfoFeignVO getOwnerInfo(Long userNo) {
return Optional.ofNullable(ownerInfoFeign.getOwnerInfo(userNo))
.filter(Result::succeed).map(item->item.getData()).orElseThrow(ResultCodeEnum.FAIL);
}
}
...@@ -47,6 +47,7 @@ public class SettlementOwner implements HasKey<Integer> { ...@@ -47,6 +47,7 @@ public class SettlementOwner implements HasKey<Integer> {
private String paymentImg; //付款凭证 private String paymentImg; //付款凭证
private String paymentBankName; //付款银行 private String paymentBankName; //付款银行
private String paymentBankCardNo; //付款银行卡卡号 private String paymentBankCardNo; //付款银行卡卡号
private BigDecimal paymentAmount; //付款金额
private String companyName; //公司名称 private String companyName; //公司名称
private String companyTaxCode; //企业税号 private String companyTaxCode; //企业税号
private String companyAddress; //公司地址 private String companyAddress; //公司地址
......
...@@ -34,6 +34,10 @@ public class SettlementOwnerDetail implements HasKey<Integer> { ...@@ -34,6 +34,10 @@ public class SettlementOwnerDetail implements HasKey<Integer> {
private String childNo; //运单编号 private String childNo; //运单编号
private String orderGoodsNo; //货单编号 private String orderGoodsNo; //货单编号
private String orderNo; //订单编号 private String orderNo; //订单编号
private Integer sendAddressId; //发货地址id
private String sendAddress; //发货地址
private Integer receiveAddressId; //收货地址id
private String receiveAddress; //收货地址
private Integer goodsId; //货物id private Integer goodsId; //货物id
private String goodsName; //货物名称 private String goodsName; //货物名称
private BigDecimal freightPrice; //平台运费单价(分) private BigDecimal freightPrice; //平台运费单价(分)
......
...@@ -20,6 +20,8 @@ import com.clx.performance.service.OrderChildLogService; ...@@ -20,6 +20,8 @@ import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildPoundLogService; import com.clx.performance.service.OrderChildPoundLogService;
import com.clx.performance.service.OrderChildService; import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsService; import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.struct.*; import com.clx.performance.struct.*;
import com.clx.performance.utils.spring.ApplicationContextUtils; import com.clx.performance.utils.spring.ApplicationContextUtils;
import com.clx.performance.vo.app.*; import com.clx.performance.vo.app.*;
...@@ -91,6 +93,9 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -91,6 +93,9 @@ public class OrderChildServiceImpl implements OrderChildService {
private final OrderFeign orderFeign; private final OrderFeign orderFeign;
private final RedissonClient redissonClient; private final RedissonClient redissonClient;
private final SettlementDriverDetailService settlementDriverDetailService;
private final SettlementOwnerDetailService settlementOwnerDetailService;
@Override @Override
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) { public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
...@@ -810,6 +815,9 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -810,6 +815,9 @@ public class OrderChildServiceImpl implements OrderChildService {
// 更新车辆状态 // 更新车辆状态
updateDriverOrderStatusDriverConfirm(orderChild.getTruckId()); updateDriverOrderStatusDriverConfirm(orderChild.getTruckId());
// 生成计费单
saveSettlementDetail(orderChild);
// 日志 // 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(), OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(), OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
...@@ -926,6 +934,17 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -926,6 +934,17 @@ public class OrderChildServiceImpl implements OrderChildService {
loginUserInfo.getUserNo(), loginUserInfo.getUserName()); loginUserInfo.getUserNo(), loginUserInfo.getUserName());
} }
/**
* 生成计费单
*/
private void saveSettlementDetail(OrderChild orderChild){
settlementDriverDetailService.saveSettlementDetail(orderChild);
settlementOwnerDetailService.saveSettlementDetail(orderChild);
}
@Override @Override
public OrderChildVO getOrderChildInfo(String childNo) { public OrderChildVO getOrderChildInfo(String childNo) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
......
...@@ -3,6 +3,7 @@ package com.clx.performance.service.impl.settle; ...@@ -3,6 +3,7 @@ package com.clx.performance.service.impl.settle;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementDriverDetailDao; import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam; import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
import com.clx.performance.service.settle.SettlementDriverDetailService; import com.clx.performance.service.settle.SettlementDriverDetailService;
...@@ -12,6 +13,8 @@ import lombok.AllArgsConstructor; ...@@ -12,6 +13,8 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List; import java.util.List;
/** /**
...@@ -27,6 +30,82 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai ...@@ -27,6 +30,82 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
private final SettlementDriverDetailDao settlementDriverDetailDao; private final SettlementDriverDetailDao settlementDriverDetailDao;
private final SettlementDriverDetailStruct settlementOwnerDetailStruct; private final SettlementDriverDetailStruct settlementOwnerDetailStruct;
@Override
public void saveSettlementDetail(OrderChild orderChild) {
SettlementDriverDetail settlementDriverDetail = new SettlementDriverDetail();
settlementDriverDetail.setChildNo(orderChild.getChildNo());
settlementDriverDetail.setOrderGoodsNo(orderChild.getOrderGoodsNo());
settlementDriverDetail.setOrderNo(orderChild.getOrderNo());
settlementDriverDetail.setDriverUserNo(orderChild.getTruckOwnUserNo());
settlementDriverDetail.setDriverName(orderChild.getOwnerName());
settlementDriverDetail.setTruckNo(orderChild.getTruckNo());
settlementDriverDetail.setGoodsId(orderChild.getGoodsId());
settlementDriverDetail.setGoodsName(orderChild.getGoodsName());
// 运费
settlementDriverDetail.setFreightPrice(orderChild.getFreightPrice()); //平台运费
settlementDriverDetail.setWeight(weightCalc(orderChild.getLoadNet(), orderChild.getUnloadNet()));
settlementDriverDetail.setFreight(freightCalc(settlementDriverDetail.getFreightPrice(), settlementDriverDetail.getWeight()));
// 亏吨
settlementDriverDetail.setLossPrice(orderChild.getLossPrice());
settlementDriverDetail.setLossWeight(lossWeightCalc(orderChild.getLoadNet(), orderChild.getUnloadNet()));
settlementDriverDetail.setLossFreight(lossFreightCalc(settlementDriverDetail.getLossPrice(), settlementDriverDetail.getLossWeight()));
// 预付运费
settlementDriverDetail.setPrepayFreight(BigDecimal.ZERO);
// 结算金额
settlementDriverDetail.setSettlementFreight(settlementFreightCalc(settlementDriverDetail.getFreight(), settlementDriverDetail.getLossFreight()));
settlementDriverDetailDao.saveEntity(settlementDriverDetail);
}
private BigDecimal weightCalc(BigDecimal loadNet, BigDecimal unLoadNet){
return unLoadNet.compareTo(loadNet) < 0? unLoadNet : loadNet;
}
/**
* 运费计算
*/
public BigDecimal freightCalc(BigDecimal freightPrice, BigDecimal weight){
return freightPrice.multiply(weight).setScale(0, RoundingMode.HALF_UP);
}
/**
* 亏吨计算
*/
private BigDecimal lossWeightCalc(BigDecimal loadNet, BigDecimal unLoadNet){
return unLoadNet.compareTo(loadNet) < 0? unLoadNet.subtract(loadNet) : BigDecimal.ZERO;
}
/**
* 亏吨运费
*/
private BigDecimal lossFreightCalc(BigDecimal freightPrice, BigDecimal weight){
return freightPrice.multiply(weight).setScale(0, RoundingMode.HALF_UP);
}
/**
* 开票金额
*/
private BigDecimal invoiceFreightCalc(BigDecimal freight, BigDecimal lossFreight){
return freight.subtract(lossFreight);
}
/**
* 结算金额
*/
private BigDecimal settlementFreightCalc(BigDecimal freight, BigDecimal lossFreight){
return freight.subtract(lossFreight);
}
@Override @Override
public IPage<CarrierPageSettlementDriverDetailVO> pageSettlementDriverDetail( public IPage<CarrierPageSettlementDriverDetailVO> pageSettlementDriverDetail(
......
...@@ -3,7 +3,9 @@ package com.clx.performance.service.impl.settle; ...@@ -3,7 +3,9 @@ package com.clx.performance.service.impl.settle;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementDriverDao; import com.clx.performance.dao.settle.SettlementDriverDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.model.settle.SettlementDriver; import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam; import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.clx.performance.service.settle.SettlementDriverService; import com.clx.performance.service.settle.SettlementDriverService;
import com.clx.performance.struct.settle.SettlementDriverStruct; import com.clx.performance.struct.settle.SettlementDriverStruct;
...@@ -11,6 +13,7 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverVO; ...@@ -11,6 +13,7 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverVO;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
...@@ -27,6 +30,42 @@ public class SettlementDriverServiceImpl implements SettlementDriverService { ...@@ -27,6 +30,42 @@ public class SettlementDriverServiceImpl implements SettlementDriverService {
SettlementDriverStruct settlementDriverStruct; SettlementDriverStruct settlementDriverStruct;
private final SettlementDriverDetailDao settlementDriverDetailDao;
@Override
public void saveSettlement(SettlementDriverDetail settlementDetail) {
SettlementDriver settlementDriver = new SettlementDriver();
settlementDriver.setSettlementNo("");
settlementDriver.setDriverUserNo(settlementDetail.getDriverUserNo());
settlementDriver.setDriverName(settlementDetail.getDriverName());
settlementDriver.setTruckNo(settlementDetail.getTruckNo());
settlementDriver.setChildNo(settlementDetail.getChildNo());
settlementDriver.setOrderGoodsNo(settlementDetail.getOrderGoodsNo());
settlementDriver.setOrderNo(settlementDetail.getOrderNo());
settlementDriver.setGoodsId(settlementDetail.getGoodsId());
settlementDriver.setGoodsName(settlementDetail.getGoodsName());
settlementDriver.setFreightPrice(settlementDetail.getFreightPrice());
settlementDriver.setWeight(settlementDetail.getWeight());
settlementDriver.setFreight(settlementDetail.getFreight());
settlementDriver.setLossPrice(settlementDetail.getLossPrice());
settlementDriver.setLossWeight(settlementDetail.getLossWeight());
settlementDriver.setLossFreight(settlementDetail.getLossFreight());
settlementDriver.setSettlementFreight(BigDecimal.ZERO);
settlementDriver.setSettlementPlatform("");
settlementDriver.setInvoiceType(settlementDetail.getInvoiceType());
settlementDriverDao.saveEntity(settlementDriver);
}
@Override @Override
public IPage<CarrierPageSettlementDriverVO> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param) { public IPage<CarrierPageSettlementDriverVO> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param) {
IPage<SettlementDriver> page = settlementDriverDao.pageCarrierSettlementDriver(param); IPage<SettlementDriver> page = settlementDriverDao.pageCarrierSettlementDriver(param);
......
...@@ -3,6 +3,7 @@ package com.clx.performance.service.impl.settle; ...@@ -3,6 +3,7 @@ package com.clx.performance.service.impl.settle;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
...@@ -19,6 +20,8 @@ import lombok.extern.slf4j.Slf4j; ...@@ -19,6 +20,8 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -35,6 +38,93 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -35,6 +38,93 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
private final SettlementOwnerDetailDao settlementOwnerDetailDao; private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final SettlementOwnerDetailStruct settlementOwnerDetailStruct; private final SettlementOwnerDetailStruct settlementOwnerDetailStruct;
@Override
public void saveSettlementDetail(OrderChild orderChild) {
SettlementOwnerDetail settlementOwnerDetail = new SettlementOwnerDetail();
settlementOwnerDetail.setChildNo(orderChild.getChildNo());
settlementOwnerDetail.setOrderGoodsNo(orderChild.getOrderGoodsNo());
settlementOwnerDetail.setOrderNo(orderChild.getOrderNo());
settlementOwnerDetail.setOwnerUserNo(orderChild.getOwnerUserNo());
settlementOwnerDetail.setOwnerName(orderChild.getOwnerName());
settlementOwnerDetail.setSendAddressId(orderChild.getSendAddressId());
settlementOwnerDetail.setSendAddress(orderChild.getSendAddress());
settlementOwnerDetail.setReceiveAddressId(orderChild.getReceiveAddressId());
settlementOwnerDetail.setReceiveAddress(orderChild.getReceiveAddress());
settlementOwnerDetail.setGoodsId(orderChild.getGoodsId());
settlementOwnerDetail.setGoodsName(orderChild.getGoodsName());
// 运费
settlementOwnerDetail.setFreightPrice(BigDecimal.ZERO); //平台运费
settlementOwnerDetail.setWeight(weightCalc(orderChild.getLoadNet(), orderChild.getUnloadNet()));
settlementOwnerDetail.setFreight(freightCalc(settlementOwnerDetail.getFreightPrice(), settlementOwnerDetail.getWeight()));
// 亏吨
settlementOwnerDetail.setLossPrice(orderChild.getLossPrice());
settlementOwnerDetail.setLossWeight(lossWeightCalc(orderChild.getLoadNet(), orderChild.getUnloadNet()));
settlementOwnerDetail.setLossFreight(lossFreightCalc(settlementOwnerDetail.getLossPrice(), settlementOwnerDetail.getLossWeight()));
// 预付运费
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
// 开票金额
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(settlementOwnerDetail.getFreight(), settlementOwnerDetail.getLossFreight()));
// 结算金额
settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(settlementOwnerDetail.getFreight(), settlementOwnerDetail.getLossFreight()));
settlementOwnerDetailDao.saveEntity(settlementOwnerDetail);
}
/**
* 吨数计算
*/
private BigDecimal weightCalc(BigDecimal loadNet, BigDecimal unLoadNet){
return unLoadNet.compareTo(loadNet) < 0? unLoadNet : loadNet;
}
/**
* 运费计算
*/
public BigDecimal freightCalc(BigDecimal freightPrice, BigDecimal weight){
return freightPrice.multiply(weight).setScale(0, RoundingMode.HALF_UP);
}
/**
* 亏吨计算
*/
private BigDecimal lossWeightCalc(BigDecimal loadNet, BigDecimal unLoadNet){
return unLoadNet.compareTo(loadNet) < 0? unLoadNet.subtract(loadNet) : BigDecimal.ZERO;
}
/**
* 亏吨运费
*/
private BigDecimal lossFreightCalc(BigDecimal freightPrice, BigDecimal weight){
return freightPrice.multiply(weight).setScale(0, RoundingMode.HALF_UP);
}
/**
* 开票金额
*/
private BigDecimal invoiceFreightCalc(BigDecimal freight, BigDecimal lossFreight){
return freight.subtract(lossFreight);
}
/**
* 结算金额
*/
private BigDecimal settlementFreightCalc(BigDecimal freight, BigDecimal lossFreight){
return freight.subtract(lossFreight);
}
@Override @Override
public IPage<CarrierPageSettlementOwnerDetailVO> pageSettlementOwnerDetail( public IPage<CarrierPageSettlementOwnerDetailVO> pageSettlementOwnerDetail(
PageCarrierSettlementOwnerDetailParam param) { PageCarrierSettlementOwnerDetailParam param) {
......
package com.clx.performance.service.settle; package com.clx.performance.service.settle;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam; import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetailVO; import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetailVO;
...@@ -10,5 +11,8 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetai ...@@ -10,5 +11,8 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetai
* Time 09:43 * Time 09:43
*/ */
public interface SettlementDriverDetailService { public interface SettlementDriverDetailService {
void saveSettlementDetail(OrderChild orderChild);
IPage<CarrierPageSettlementDriverDetailVO> pageSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param); IPage<CarrierPageSettlementDriverDetailVO> pageSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param);
} }
package com.clx.performance.service.settle; package com.clx.performance.service.settle;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam; import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverVO; import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverVO;
...@@ -10,5 +11,8 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverVO; ...@@ -10,5 +11,8 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverVO;
* Time 09:43 * Time 09:43
*/ */
public interface SettlementDriverService { public interface SettlementDriverService {
void saveSettlement(SettlementDriverDetail settlementDetail);
IPage<CarrierPageSettlementDriverVO> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param); IPage<CarrierPageSettlementDriverVO> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param);
} }
...@@ -2,6 +2,7 @@ package com.clx.performance.service.settle; ...@@ -2,6 +2,7 @@ package com.clx.performance.service.settle;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementParam; import com.clx.performance.param.pc.owner.PageOwnerSettlementParam;
...@@ -17,6 +18,8 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook; ...@@ -17,6 +18,8 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
*/ */
public interface SettlementOwnerDetailService { public interface SettlementOwnerDetailService {
void saveSettlementDetail(OrderChild orderChild);
IPage<PageOwnerSettlementOwnerDetailVO> pageOwnerSettlementOrderDetailList(PageOwnerSettlementOwnerDetailParam param); IPage<PageOwnerSettlementOwnerDetailVO> pageOwnerSettlementOrderDetailList(PageOwnerSettlementOwnerDetailParam param);
IPage<CarrierPageSettlementOwnerDetailVO> pageSettlementOwnerDetail(PageCarrierSettlementOwnerDetailParam param); IPage<CarrierPageSettlementOwnerDetailVO> pageSettlementOwnerDetail(PageCarrierSettlementOwnerDetailParam param);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论