提交 e6cb8783 authored 作者: jiangwujie's avatar jiangwujie

Merge remote-tracking branch 'origin/test' into test

Former-commit-id: 57882307
......@@ -50,8 +50,8 @@ public enum SettlementOrderChildRiskEnum {
@Getter
@AllArgsConstructor
public enum Status {
INIT(0, "待处理"),
PROCESSED(1, "已处理");
INIT(1, "待处理"),
PROCESSED(2, "已处理");
private final Integer code;
private final String msg;
......
......@@ -51,6 +51,10 @@ public class CarrierPageSettlementOwnerVO {
@MoneyOutConvert
@ApiModelProperty(value = "开票金额")
private BigDecimal invoiceFreight;
@ApiModelProperty(value = "结算凭证")
private String invoiceImg;
@MoneyOutConvert
@ApiModelProperty(value = "开票服务费")
private BigDecimal invoiceServiceFee;
......
......@@ -2,7 +2,6 @@ package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
......@@ -114,5 +113,4 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList);
List<OrderExtractWeightDTO> calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList);
}
......@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.mapper.OrderGoodsMapper;
......@@ -306,9 +305,4 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
public void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList) {
baseMapper.batchCancelOrderGoodsWeight(cancelOrderGoodsList);
}
@Override
public List<OrderExtractWeightDTO> calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList) {
return baseMapper.calcOrderGoodsExtractWeightByOrderNoList(orderNoList);
}
}
......@@ -46,6 +46,14 @@ public class SettlementDriverDaoImpl extends BaseDaoImpl<SettlementDriverMapper,
.map(super::getOne);
}
@Override
public Optional<SettlementDriver> findByChildNo(String childNo) {
return Optional.of(lQrWrapper()
.eq(SettlementDriver::getChildNo, childNo)
)
.map(super::getOne);
}
@Override
public IPage<SettlementDriver> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param) {
LambdaQueryWrapper<SettlementDriver> query = new LambdaQueryWrapper<>();
......
......@@ -3,14 +3,11 @@ package com.clx.performance.dao.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.settle.SettlementDriverMapper;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import java.util.List;
import java.util.Set;
/**
* @Author: aiqinguo
......@@ -25,6 +22,7 @@ public interface SettlementDriverDao extends BaseDao<SettlementDriverMapper, Set
Optional<SettlementDriver> findBySettlementNo(String settlementNo);
Optional<SettlementDriver> findByChildNo(String childNo);
IPage<SettlementDriver> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param);
......
package com.clx.performance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
* @ClassName OrderExtractWeightDTO
* @Description
* @Author kavin
* @Date 2024/8/8 11:47
* @Version 1.0
*/
@Getter
@Setter
public class OrderExtractWeightDTO {
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("已提取吨数")
private BigDecimal extractWeight;
}
......@@ -26,7 +26,7 @@ public class SettlementInvoiceCompanyUpdateListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_RISK_PROCESS_QUEUE)
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_INVOICE_COMPANY_UPDATE_QUEUE)
public void process(Message message) {
try{
log.info("结算-开票公司更新, message:{}", new String(message.getBody()));
......
......@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
......@@ -110,7 +109,4 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@UpdateProvider(type = OrderGoodsSqlProvider.class, method = "batchCancelOrderGoodsWeight")
void batchCancelOrderGoodsWeight(@Param("cancelOrderGoodsList") List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "calcOrderGoodsExtractWeightByOrderNoList")
List<OrderExtractWeightDTO> calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList);
}
package com.clx.performance.service;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.vo.feign.OrderExtractWeightVO;
import java.math.BigDecimal;
......@@ -8,4 +9,7 @@ public interface OrderWeightService {
OrderExtractWeightVO getOrderCanExtractWeight(String orderNo);
BigDecimal getOrderResidueWeight(String orderNo);
//计算货单真实的提取量
BigDecimal calcOrderGoodsRealExtractWeight(OrderGoods item);
}
......@@ -18,7 +18,6 @@ import com.clx.performance.component.OrderCancelComponent;
import com.clx.performance.component.OrderGoodsStatusLazyComponent;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.*;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.dto.OrderGoodsCancelDTO;
import com.clx.performance.enums.*;
......@@ -175,7 +174,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
orderGoodsVO.setUnloadEndTime(orderInfoFeign.getUnloadEndTime());
orderGoodsVO.setLoadBeginTime(orderInfoFeign.getLoadBeginTime());
orderGoodsVO.setLoadEndTime(orderInfoFeign.getLoadEndTime());
orderGoodsVO.setResidueTransportWeight(BigDecimal.ZERO.compareTo(orderGoodsVO.getResidueTransportWeight()) > 0 ? BigDecimal.ZERO : orderGoodsVO.getResidueTransportWeight());
orderGoodsVO.setResidueTransportWeight(residueWeight);
//货源地信息
orderGoodsVO.setSendContact(orderInfoFeign.getSendContact());
orderGoodsVO.setSendContactPhone(orderInfoFeign.getSendContactPhone());
......@@ -230,12 +229,19 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
log.warn("通过订单号批量查询订单信息失败,失败原因");
throw new ServiceSystemException(ResultEnum.DATA_ERROR,"查询货单对应的订单信息失败");
}
Map<String, FeignOrderInfoVO> orderInfoMap = orderListOption.get();
List<OrderExtractWeightDTO> list = orderGoodsDao.calcOrderGoodsExtractWeightByOrderNoList(orderNoList);
Map<String, BigDecimal> orderExtractWeightMap = list.stream().collect(
Collectors.toMap(OrderExtractWeightDTO::getOrderNo, OrderExtractWeightDTO::getExtractWeight));
List<OrderGoods> orderGoods = orderGoodsDao.listInField(OrderGoods::getOrderNo, orderNoList);
Map<String, BigDecimal> orderExtractWeightMap = new HashMap<>();
for (OrderGoods orderGood : orderGoods) {
//计算货单真实的提取量
BigDecimal weight = orderWeightService.calcOrderGoodsRealExtractWeight(orderGood);
String orderNo = orderGood.getOrderNo();
orderExtractWeightMap.put(orderNo,Objects.nonNull(orderExtractWeightMap.get(orderNo))?
orderExtractWeightMap.get(orderNo).add(weight): weight);
}
Map<String, FeignOrderInfoVO> orderInfoMap = orderListOption.get();
page.getRecords().forEach(item->{
FeignOrderInfoVO orderInfo = orderInfoMap.get(item.getOrderNo());
BigDecimal orderExtractWeight = orderExtractWeightMap.get(item.getOrderNo());
......@@ -761,7 +767,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
}
}
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoods.getOrderGoodsNo(), OrderGoodsTruckBindEnum.Status.CANCEL.getCode());
orderGoodsDao.updateOrderGoodsWeightAlreadyAndStatus(orderGoods.getGoodsId(),childResidueWeight,OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateOrderGoodsWeightAlreadyAndStatus(orderGoods.getId(),childResidueWeight,OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
private void cancelOperateOneTypeStrategy(OrderGoodsCancelDTO dto) {
......
......@@ -63,15 +63,7 @@ public class OrderWeightServiceImpl implements OrderWeightService {
BigDecimal platOrderGoodsWeight = BigDecimal.ZERO;
for (OrderGoods item : orderGoodsList) {
BigDecimal weight; //取消,完成,完结的货单取 已拉运吨数 作为提取吨数,
if(Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.CANCEL.getCode())
|| Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.SUCCESS.getCode())
|| Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.COMPLETED.getCode())){
weight = item.getAlreadyTransportWeight();
}else{
weight = item.getExtractWeight();
}
BigDecimal weight = calcOrderGoodsRealExtractWeight(item);
if(Objects.equals(item.getVehicleUsage(), VehicleUsageEnum.Status.OWN.getCode())){
ownOrderGoodsWeight = ownOrderGoodsWeight.add(weight);
}
......@@ -155,4 +147,26 @@ public class OrderWeightServiceImpl implements OrderWeightService {
}
return orderInfo.getTransportWeight().subtract(alreadyWeight);
}
//计算货单真实的提取量
@Override
public BigDecimal calcOrderGoodsRealExtractWeight(OrderGoods item){
//取消,完成,完结的货单取 已拉运吨数 作为提取吨数,
BigDecimal weight;
if(Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.CANCEL.getCode())
|| Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.SUCCESS.getCode())
|| Objects.equals(item.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.COMPLETED.getCode())){
weight = item.getAlreadyTransportWeight();
}else{
//货单的已拉运吨数大于提取吨数,使用已拉运吨数作为提取吨数
if(item.getExtractWeight().compareTo
(Objects.nonNull(item.getAlreadyLoadWeight())?item.getAlreadyLoadWeight():BigDecimal.ZERO) >=0){
weight = item.getExtractWeight();
}else{
weight = item.getAlreadyTransportWeight();
}
}
return weight;
}
}
......@@ -9,6 +9,7 @@ import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.PowerTypeEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.extranal.broker.BrokerService;
import com.clx.performance.extranal.order.InvoicingCompanyService;
import com.clx.performance.model.OrderChild;
......@@ -29,6 +30,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
......@@ -245,7 +247,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
orderChildInfo.setSourceOrderNo(orderChild.getOrderNo());
orderChildInfo.setSourceSettlementNo(settlementOwnerDetail.getSettlementNo());
orderChildInfo.setFreight(orderChild.getFreight().intValue());
orderChildInfo.setFreight(orderChild.getFreightPrice().multiply(orderChild.getUnloadNet())
.setScale(0, RoundingMode.HALF_UP).intValue());
orderChildInfo.setDriverFreight(orderChild.getFreight().intValue());
orderChildInfo.setDriverFreightPrice(orderChild.getFreightPrice().intValue());
......@@ -269,7 +272,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
orderChildInfo.setReceiveTare(orderChild.getUnloadTare());
orderChildInfo.setReceiveRough(orderChild.getUnloadRough());
orderChildInfo.setReceiveNet(orderChild.getUnloadNet());
orderChildInfo.setInvoiceFlag(settlementOwnerDetail.getInvoiceType());
orderChildInfo.setInvoiceFlag(Objects.equals(settlementOwnerDetail.getInvoiceType(),
SettlementOwnerEnum.InvoiceType.ONLINE.getCode())? 2 : 1);
orderChildInfo.setInvoicePlatform(settlementOwnerDetail.getInvoicingCompanyShorterName());
orderChildInfo.setInvoiceStatus(Objects.equals(settlementOwnerDetail.getInvoiceStatus(),
SettlementOwnerDetailEnum.InvoiceStatus.YES.getCode())? 1 : 0);
......
......@@ -84,7 +84,7 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriver settlementDriver = settlementDriverDao
.findBySettlementNo(settlementOwnerDetail.getSettlementNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
.findByChildNo(settlementOwnerDetail.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
settlementDriver.setStatus(SettlementDriverEnum.Status.SETTLED.getCode());
settlementDriverDao.updatePayStatus(settlementDriver);
......
......@@ -313,9 +313,8 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
return;
}
// 同步失败
if (Objects.equals(result.getSyncStatus(), 2)) {
else if (Objects.equals(result.getSyncStatus(), 2)) {
// 更新状态
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.FAIL.getCode());
......@@ -332,14 +331,17 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOrderChildRisk.setRiskType(SettlementOrderChildRiskEnum.RiskType.SYNC_FAIL.getCode());
settlementOrderChildRisk.setRiskRemark(result.getSyncMsg());
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
}
// 更新状态
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.SUCCESS.getCode());
settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail);
return;
}
else {
// 更新状态
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.SUCCESS.getCode());
settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail);
// 发送mq (结算)
settlementMqService.settle(orderChild.getChildNo(), invoiceType, remark);
// 发送mq (结算)
settlementMqService.settle(orderChild.getChildNo(), invoiceType, remark);
}
}catch (Exception e){
log.info("结算获取状态失败, 运单号 {}",mq.getChildNo(),e);
}
......@@ -526,7 +528,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
}
private void settlementDriverSave(SettlementDriverDetail detail,String settlementNo){
SettlementDriver settlementDriver = new SettlementDriver();
SettlementDriver settlementDriver = settlementDriverDao.findByChildNo(detail.getChildNo()).orElse(new SettlementDriver());
settlementDriver.setDriverUserNo(detail.getDriverUserNo());
settlementDriver.setDriverName(detail.getDriverName());
settlementDriver.setSettlementNo(settlementNo);
......@@ -558,7 +560,11 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementDriver.setPlatformServiceFeeRate(detail.getPlatformServiceFeeRate());
settlementDriver.setPlatformServiceFee(detail.getPlatformServiceFee());
settlementDriverDao.saveEntity(settlementDriver);
if (settlementDriver.getId() == null) {
settlementDriverDao.saveEntity(settlementDriver);
}else {
settlementDriverDao.updateEntityByKey(settlementDriver);
}
}
@Override
......@@ -770,8 +776,6 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
String settlementNo = settlementOwnerDetail.getSettlementNo();
SettlementOwner settlementOwner = settlementOwnerDao
.findBySettlementNo(settlementNo).orElseThrow(ResultEnum.DATA_NOT_FIND);
SettlementDriver settlementDriver = settlementDriverDao
.findBySettlementNo(settlementNo).orElseThrow(ResultEnum.DATA_NOT_FIND);
settlementOwner.setWeight(BigDecimal.ZERO);
settlementOwner.setFreight(BigDecimal.ZERO);
......
......@@ -140,10 +140,11 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
rowData.add(new ExcelData(vo.getDriverMobile()));
rowData.add(new ExcelData(vo.getGoodsName()));
rowData.add(new ExcelData(SettlementOwnerEnum.InvoiceType.getMsgByCode(vo.getInvoiceType())));
rowData.add(new ExcelData(SettlementOrderChildRiskEnum.RiskType.getMsgByCode(vo.getRiskType())));
rowData.add(new ExcelData(SettlementOrderChildRiskEnum.Status.getMsgByCode(vo.getStatus())));
rowData.add(new ExcelData(SettlementOrderChildRiskEnum.ProcessMethod.getMsgByCode(vo.getProcessMethod())));
rowData.add(new ExcelData(vo.getInvoiceType()==null?null:SettlementOwnerEnum.InvoiceType.getMsgByCode(vo.getInvoiceType())));
rowData.add(new ExcelData(vo.getRiskType()==null?null:SettlementOrderChildRiskEnum.RiskType.getMsgByCode(vo.getRiskType())));
rowData.add(new ExcelData(vo.getRiskRemark()));
rowData.add(new ExcelData(vo.getStatus()==null?null:SettlementOrderChildRiskEnum.Status.getMsgByCode(vo.getStatus())));
rowData.add(new ExcelData(vo.getProcessMethod()==null?null:SettlementOrderChildRiskEnum.ProcessMethod.getMsgByCode(vo.getProcessMethod())));
rowData.add(new ExcelData(vo.getPoundAuditTime()));
rowData.add(new ExcelData(vo.getCreateTime()));
rowData.add(new ExcelData(vo.getProcessBy()));
......
......@@ -402,18 +402,5 @@ public class OrderGoodsSqlProvider {
return sj.toString();
}
public String calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList){
String sql = new SQL() {{
SELECT("order_no,sum(extract_weight) extractWeight");
FROM("order_goods");
StringJoiner sj = new StringJoiner(",","order_no in (",")");
orderNoList.forEach(item -> sj.add("'"+item+"'"));
WHERE(sj.toString());
GROUP_BY("order_no");
}}.toString();
return sql;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论