提交 2f318d97 authored 作者: 李瑞鑫's avatar 李瑞鑫

Merge branch 'v20.9_settlement_20240805' into dev

package com.clx.performance.vo.mq.settle;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class SettlementInvoiceStatusUpdateMqParam {
private String settlementNo;
}
...@@ -73,4 +73,7 @@ public class OpenOrderChildDTO { ...@@ -73,4 +73,7 @@ public class OpenOrderChildDTO {
@ApiModelProperty(value = "开票状态 0 未开票 1 已开票 ", example = "1") @ApiModelProperty(value = "开票状态 0 未开票 1 已开票 ", example = "1")
private Integer invoiceStatus; private Integer invoiceStatus;
@ApiModelProperty(value = "结算状态 1 已结算 ", example = "1234124", dataType = "String")
private Integer settleStatus;
} }
...@@ -162,4 +162,17 @@ public class RabbitSettlementConfig { ...@@ -162,4 +162,17 @@ public class RabbitSettlementConfig {
.with(RabbitKeySettlementConstants.SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_ROUTING_KEY); .with(RabbitKeySettlementConstants.SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_ROUTING_KEY);
} }
/**
* 结算单开票状态更新
*/
@Bean
public Queue settlementInvoiceStatusUpdateQueue() {
return new Queue(RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_UPDATE_QUEUE);
}
@Bean
public Binding settlementInvoiceStatusUpdateQueueBinding() {
return BindingBuilder.bind(settlementInvoiceStatusUpdateQueue()).to(settlementDefaultExchange())
.with(RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_UPDATE_ROUTING_KEY);
}
} }
...@@ -86,4 +86,10 @@ public class RabbitKeySettlementConstants { ...@@ -86,4 +86,10 @@ public class RabbitKeySettlementConstants {
public static final String SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_QUEUE = PREFIX +"settlementPlatformAutoConfirm.update"+QUEUE; public static final String SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_QUEUE = PREFIX +"settlementPlatformAutoConfirm.update"+QUEUE;
public static final String SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_ROUTING_KEY = PREFIX +"settlementPlatformAutoConfirm.update"+QUEUE_ROUTING_KEY; public static final String SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_ROUTING_KEY = PREFIX +"settlementPlatformAutoConfirm.update"+QUEUE_ROUTING_KEY;
/**
* 结算单开票状态更新
*/
public static final String SETTLEMENT_INVOICE_STATUS_UPDATE_QUEUE = PREFIX +"settlementInvoice.update"+QUEUE;
public static final String SETTLEMENT_INVOICE_STATUS_UPDATE_ROUTING_KEY = PREFIX +"settlementInvoice.update"+QUEUE_ROUTING_KEY;
} }
...@@ -40,7 +40,6 @@ public class CarrierSettlementOwnerDetailController { ...@@ -40,7 +40,6 @@ public class CarrierSettlementOwnerDetailController {
private final SettlementOwnerDetailService settlementOwnerDetailService; private final SettlementOwnerDetailService settlementOwnerDetailService;
@ApiOperation(value = "运单计费列表(货主)",notes = "<br>By:刘海泉") @ApiOperation(value = "运单计费列表(货主)",notes = "<br>By:刘海泉")
@PostMapping("/pageSettlementOwnerDetail") @PostMapping("/pageSettlementOwnerDetail")
@UnitCovert(param = false) @UnitCovert(param = false)
...@@ -119,6 +118,14 @@ public class CarrierSettlementOwnerDetailController { ...@@ -119,6 +118,14 @@ public class CarrierSettlementOwnerDetailController {
} }
} }
@ApiOperation(value = "导出货主运单计费",notes = "<br>By:杨启发")
@PostMapping("/exportSettlementOwnerDetail")
public void exportSettlementOwnerDetail(@RequestBody @Validated PageCarrierSettlementOwnerDetailParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = settlementOwnerDetailService.exportSettlementOwnerDetail(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
@ApiOperation(value = "批量下载结算运单明细",notes = "<br>By:liruixin") @ApiOperation(value = "批量下载结算运单明细",notes = "<br>By:liruixin")
@PostMapping("/exportBatchSettlementOwnerDetail") @PostMapping("/exportBatchSettlementOwnerDetail")
......
...@@ -24,6 +24,7 @@ public class SettlementOrderChildRiskDaoImpl ...@@ -24,6 +24,7 @@ public class SettlementOrderChildRiskDaoImpl
public boolean updateProcess(SettlementOrderChildRisk item) { public boolean updateProcess(SettlementOrderChildRisk item) {
return update(lUdWrapper() return update(lUdWrapper()
.eq(SettlementOrderChildRisk::getId, item.getId()) .eq(SettlementOrderChildRisk::getId, item.getId())
.set(SettlementOrderChildRisk::getInvoiceType, item.getInvoiceType())
.set(SettlementOrderChildRisk::getStatus, item.getStatus()) .set(SettlementOrderChildRisk::getStatus, item.getStatus())
.set(SettlementOrderChildRisk::getProcessMethod, item.getProcessMethod()) .set(SettlementOrderChildRisk::getProcessMethod, item.getProcessMethod())
.set(SettlementOrderChildRisk::getProcessBy, item.getProcessBy()) .set(SettlementOrderChildRisk::getProcessBy, item.getProcessBy())
......
...@@ -35,6 +35,13 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S ...@@ -35,6 +35,13 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
.set(SettlementOwner::getStatus, item.getStatus()) .set(SettlementOwner::getStatus, item.getStatus())
); );
} }
@Override
public boolean updateInvoiceStatus(SettlementOwner item) {
return update(lUdWrapper()
.eq(SettlementOwner::getId, item.getId())
.set(SettlementOwner::getInvoiceStatus, item.getInvoiceStatus())
);
}
@Override @Override
public boolean updateSettlementPeriodMonth(SettlementOwner item) { public boolean updateSettlementPeriodMonth(SettlementOwner item) {
......
...@@ -19,7 +19,6 @@ import com.msl.common.dao.impl.BaseDaoImpl; ...@@ -19,7 +19,6 @@ import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -116,6 +115,16 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet ...@@ -116,6 +115,16 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
); );
} }
@Override
public void updateInvoiceStatusByIdList(List<Integer> idList, Integer invoiceStatus) {
update(lUdWrapper()
.in(SettlementOwnerDetail::getId, idList)
.set(SettlementOwnerDetail::getInvoiceStatus, invoiceStatus)
.set(SettlementOwnerDetail::getInvoiceTime,LocalDateTime.now())
);
}
@Override @Override
public boolean updateInvoiceStatusBySettlementNo(String settlementNo, Integer invoiceStatus){ public boolean updateInvoiceStatusBySettlementNo(String settlementNo, Integer invoiceStatus){
return update(lUdWrapper() return update(lUdWrapper()
...@@ -163,6 +172,13 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet ...@@ -163,6 +172,13 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
) )
.map(super::getOne); .map(super::getOne);
} }
@Override
public List<SettlementOwnerDetail> getListByChildNoList(List<String> childNoList) {
return list(lQrWrapper()
.in(SettlementOwnerDetail::getChildNo, childNoList));
}
@Override @Override
public List<SettlementOwnerDetail> getBySettlementNo(String settlementNo) { public List<SettlementOwnerDetail> getBySettlementNo(String settlementNo) {
return list(lQrWrapper().eq(SettlementOwnerDetail::getSettlementNo, settlementNo)); return list(lQrWrapper().eq(SettlementOwnerDetail::getSettlementNo, settlementNo));
......
...@@ -16,6 +16,8 @@ import java.util.List; ...@@ -16,6 +16,8 @@ import java.util.List;
public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, SettlementOwner, Integer> { public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, SettlementOwner, Integer> {
boolean updateStatus(SettlementOwner item); boolean updateStatus(SettlementOwner item);
boolean updateInvoiceStatus(SettlementOwner item);
boolean updateSettlementPeriodMonth(SettlementOwner item); boolean updateSettlementPeriodMonth(SettlementOwner item);
boolean updateLock(SettlementOwner item); boolean updateLock(SettlementOwner item);
......
...@@ -33,6 +33,8 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM ...@@ -33,6 +33,8 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM
boolean updateInvoiceType(SettlementOwnerDetail item); boolean updateInvoiceType(SettlementOwnerDetail item);
boolean updatePreFreight(SettlementOwnerDetail item); boolean updatePreFreight(SettlementOwnerDetail item);
void updateInvoiceStatusByIdList(List<Integer> idList, Integer invoiceStatus);
boolean updateInvoiceStatusBySettlementNo(@Param("settlementNo")String settlementNo, @Param("invoiceStatus")Integer invoiceStatus); boolean updateInvoiceStatusBySettlementNo(@Param("settlementNo")String settlementNo, @Param("invoiceStatus")Integer invoiceStatus);
boolean updateFinalPaymentStatusBySettlementNo(@Param("settlementNo")String settlementNo, @Param("finalPaymentStatus")Integer finalPaymentStatus); boolean updateFinalPaymentStatusBySettlementNo(@Param("settlementNo")String settlementNo, @Param("finalPaymentStatus")Integer finalPaymentStatus);
...@@ -45,6 +47,7 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM ...@@ -45,6 +47,7 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM
Optional<SettlementOwnerDetail> findById(Integer id); Optional<SettlementOwnerDetail> findById(Integer id);
Optional<SettlementOwnerDetail> getByChildNo(String childNo); Optional<SettlementOwnerDetail> getByChildNo(String childNo);
List<SettlementOwnerDetail> getListByChildNoList(List<String> childNoList);
List<SettlementOwnerDetail> getBySettlementNo(String settlementNo); List<SettlementOwnerDetail> getBySettlementNo(String settlementNo);
List<SettlementOwnerDetail> getBySettlementNoAndInvoiceType(String settlementNo, Integer invoiceType, Integer invoiceStatus); List<SettlementOwnerDetail> getBySettlementNoAndInvoiceType(String settlementNo, Integer invoiceType, Integer invoiceStatus);
......
...@@ -249,6 +249,9 @@ public class OrderChildSyncTransportListener { ...@@ -249,6 +249,9 @@ public class OrderChildSyncTransportListener {
dto.setOrderChild(orderChild); dto.setOrderChild(orderChild);
applicationEventPublisher.publishEvent(new OwnerLoanEvent(this, dto)); applicationEventPublisher.publishEvent(new OwnerLoanEvent(this, dto));
// 发送mq (运单更新)
orderChildBrokerMqService.orderChildUpdate(settlementOwnerDetail.getChildNo());
} }
private void generateTakeOutRunningWatter(OrderChild orderChild, BigDecimal ans, SettlementOwnerDetail settlementOwnerDetail, SettlementDriverDetail settlementDriverDetail) { private void generateTakeOutRunningWatter(OrderChild orderChild, BigDecimal ans, SettlementOwnerDetail settlementOwnerDetail, SettlementDriverDetail settlementDriverDetail) {
......
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.vo.mq.SettlementSettleMqParam;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 结算 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public class SettlementInvoiceStatusUpdateListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_UPDATE_QUEUE)
public void process(Message message) {
try{
log.info("结算-开票状态更新, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementInvoiceStatusUpdateMqParam>>(){}).getData());
}catch (Exception e){
log.info("结算-开票状态更新 失败",e);
}
}
private void process(SettlementInvoiceStatusUpdateMqParam mq){
settlementMqHandlerService.settlementInvoiceStatusUpdate(mq);
}
}
...@@ -2,6 +2,7 @@ package com.clx.performance.service.broker; ...@@ -2,6 +2,7 @@ package com.clx.performance.service.broker;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
...@@ -10,5 +11,5 @@ public interface OrderChildBrokerService { ...@@ -10,5 +11,5 @@ public interface OrderChildBrokerService {
void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail, void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail); SettlementDriverDetail settlementDriverDetail);
void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail, void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail); SettlementDriverDetail settlementDriverDetail, SettlementDriver settlementDriver);
} }
...@@ -2,6 +2,7 @@ package com.clx.performance.service.impl.broker; ...@@ -2,6 +2,7 @@ package com.clx.performance.service.impl.broker;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.SettlementDriverDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao; import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOrderChildRiskDao; import com.clx.performance.dao.settle.SettlementOrderChildRiskDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
...@@ -10,6 +11,7 @@ import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum; ...@@ -10,6 +11,7 @@ import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum; import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOrderChildRisk; import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
...@@ -41,6 +43,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH ...@@ -41,6 +43,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
@Autowired @Autowired
private SettlementDriverDetailDao settlementDriverDetailDao; private SettlementDriverDetailDao settlementDriverDetailDao;
@Autowired @Autowired
private SettlementDriverDao settlementDriverDao;
@Autowired
private OrderChildBrokerService orderChildBrokerService; private OrderChildBrokerService orderChildBrokerService;
@Autowired @Autowired
private OrderChildBrokerMqService orderChildBrokerMqService; private OrderChildBrokerMqService orderChildBrokerMqService;
...@@ -115,6 +119,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH ...@@ -115,6 +119,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); .getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); .getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriver settlementDriver = settlementDriverDao
.getByChildNo(orderChild.getChildNo()).orNull();
if (Objects.equals(settlementOwnerDetail.getReportFlag(), com.clx.order.enums.OrderEnum.ReportFlag.NO.getCode())){ if (Objects.equals(settlementOwnerDetail.getReportFlag(), com.clx.order.enums.OrderEnum.ReportFlag.NO.getCode())){
return; return;
...@@ -129,7 +135,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH ...@@ -129,7 +135,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
try{ try{
// 更新broker // 更新broker
orderChildBrokerService.orderChildUpdate(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail); orderChildBrokerService.orderChildUpdate(orderChild, orderGoods, settlementOwnerDetail,
settlementDriverDetail, settlementDriver);
} catch (Exception e) { } catch (Exception e) {
log.info("更新无车承运失败, child:{}, msg:{}", orderChild.getChildNo(), ExceptionUtils.getStackTrace(e)); log.info("更新无车承运失败, child:{}, msg:{}", orderChild.getChildNo(), ExceptionUtils.getStackTrace(e));
} }
......
...@@ -8,6 +8,7 @@ import com.clx.order.vo.pc.carrier.InvoicingCompanyVO; ...@@ -8,6 +8,7 @@ import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.dao.OrderChildImageDao; import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.PowerTypeEnum; import com.clx.performance.enums.PowerTypeEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum; import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum; import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.extranal.broker.BrokerService; import com.clx.performance.extranal.broker.BrokerService;
...@@ -15,6 +16,7 @@ import com.clx.performance.extranal.order.InvoicingCompanyService; ...@@ -15,6 +16,7 @@ import com.clx.performance.extranal.order.InvoicingCompanyService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildImage; import com.clx.performance.model.OrderChildImage;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.broker.OrderChildBrokerService; import com.clx.performance.service.broker.OrderChildBrokerService;
...@@ -66,21 +68,24 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService { ...@@ -66,21 +68,24 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
public void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail, public void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail) { SettlementDriverDetail settlementDriverDetail) {
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail); TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail,
settlementDriverDetail, null);
brokerService.orderChildSync(transportParam); brokerService.orderChildSync(transportParam);
} }
@Override @Override
public void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail, SettlementDriverDetail settlementDriverDetail) { public void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail); SettlementDriverDetail settlementDriverDetail, SettlementDriver settlementDriver) {
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail,
settlementDriverDetail, settlementDriver);
// 运单更新 // 运单更新
brokerService.orderChildUpdate(transportParam); brokerService.orderChildUpdate(transportParam);
} }
private TransportParam buildParam(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail, private TransportParam buildParam(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail){ SettlementDriverDetail settlementDriverDetail, SettlementDriver settlementDriver){
String host = documentFeign.getHost().getData(); String host = documentFeign.getHost().getData();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderGoods.getOrderNo()); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderGoods.getOrderNo());
...@@ -278,6 +283,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService { ...@@ -278,6 +283,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
orderChildInfo.setInvoicePlatform(settlementOwnerDetail.getInvoicingCompanyShorterName()); orderChildInfo.setInvoicePlatform(settlementOwnerDetail.getInvoicingCompanyShorterName());
orderChildInfo.setInvoiceStatus(Objects.equals(settlementOwnerDetail.getInvoiceStatus(), orderChildInfo.setInvoiceStatus(Objects.equals(settlementOwnerDetail.getInvoiceStatus(),
SettlementOwnerDetailEnum.InvoiceStatus.YES.getCode())? 1 : 0); SettlementOwnerDetailEnum.InvoiceStatus.YES.getCode())? 1 : 0);
orderChildInfo.setSettleStatus(settlementDriver!=null
&& Objects.equals(settlementDriver.getStatus(), SettlementDriverEnum.Status.SETTLED.getCode())? 1 : 0);
transportParam.setOrder(orderInfo); transportParam.setOrder(orderInfo);
transportParam.setOrderChildImage(imageList); transportParam.setOrderChildImage(imageList);
......
...@@ -20,15 +20,11 @@ import com.clx.performance.model.settle.SettlementDriverDetail; ...@@ -20,15 +20,11 @@ import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.payment.PayPlatformFeeParam; import com.clx.performance.param.pc.payment.PayPlatformFeeParam;
import com.clx.performance.service.PaymentService; import com.clx.performance.service.PaymentService;
import com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService; import com.clx.performance.service.settle.*;
import com.clx.performance.service.settle.OrderChildSyncTransportRecordService;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementDriverService;
import com.clx.performance.struct.settle.SettlementDriverDetailStruct; import com.clx.performance.struct.settle.SettlementDriverDetailStruct;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -64,6 +60,8 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT ...@@ -64,6 +60,8 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
private final SettlementOwnerDetailDao settlementOwnerDetailDao; private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final SettlementDriverDao settlementDriverDao; private final SettlementDriverDao settlementDriverDao;
private final SettlementPostService settlementPostService;
@Override @Override
public void addOrderChildSyncTransportRecord(SettlementDriverDetail detail) { public void addOrderChildSyncTransportRecord(SettlementDriverDetail detail) {
OrderChildSyncTransportRecord record = struct.convertRecord(detail); OrderChildSyncTransportRecord record = struct.convertRecord(detail);
...@@ -130,5 +128,7 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT ...@@ -130,5 +128,7 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
}catch (Exception e){ }catch (Exception e){
log.error("支付平台服务费异常 {}",e); log.error("支付平台服务费异常 {}",e);
} }
settlementPostService.updateDriverPaySuccess(orderChild.getChildNo());
} }
} }
...@@ -40,6 +40,7 @@ import com.clx.performance.utils.LocalDateTimeUtils; ...@@ -40,6 +40,7 @@ import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.RedisUtil; import com.clx.performance.utils.RedisUtil;
import com.clx.performance.utils.spring.ApplicationContextUtils; import com.clx.performance.utils.spring.ApplicationContextUtils;
import com.clx.performance.vo.mq.*; import com.clx.performance.vo.mq.*;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam; import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam; import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam; import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
...@@ -157,6 +158,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -157,6 +158,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Autowired @Autowired
private NetworkDriverRunningWaterRecordService networkDriverRunningWaterRecordService; private NetworkDriverRunningWaterRecordService networkDriverRunningWaterRecordService;
@Autowired
private SettlementPostService settlementPostService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -321,7 +325,13 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -321,7 +325,13 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.FAIL.getCode()); settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.FAIL.getCode());
settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail); settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail);
SettlementOrderChildRisk settlementOrderChildRisk = new SettlementOrderChildRisk(); SettlementOrderChildRisk settlementOrderChildRisk = settlementOrderChildRiskDao.findLastByChildNo(mq.getChildNo()).orNull();
if (settlementOrderChildRisk!=null
&& Objects.equals(settlementOrderChildRisk.getStatus(), SettlementOrderChildRiskEnum.Status.INIT.getCode())){
return;
}
settlementOrderChildRisk = new SettlementOrderChildRisk();
settlementOrderChildRisk.setChildNo(orderChild.getChildNo()); settlementOrderChildRisk.setChildNo(orderChild.getChildNo());
settlementOrderChildRisk.setTruckNo(orderChild.getTruckNo()); settlementOrderChildRisk.setTruckNo(orderChild.getTruckNo());
settlementOrderChildRisk.setDriverName(orderChild.getDriverName()); settlementOrderChildRisk.setDriverName(orderChild.getDriverName());
...@@ -340,9 +350,6 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -340,9 +350,6 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.SUCCESS.getCode()); settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.SUCCESS.getCode());
settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail); settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail);
// 发送mq (运单更新)
orderChildBrokerMqService.orderChildUpdate(settlementOwnerDetail.getChildNo());
// 发送mq (结算) // 发送mq (结算)
settlementMqService.settle(orderChild.getChildNo(), invoiceType, remark); settlementMqService.settle(orderChild.getChildNo(), invoiceType, remark);
} }
...@@ -360,6 +367,10 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -360,6 +367,10 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
if (!Objects.equals(settlementOwnerDetail.getInvoiceChannel(), SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode())){ if (!Objects.equals(settlementOwnerDetail.getInvoiceChannel(), SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode())){
return; return;
} }
if (Objects.equals(settlementOwnerDetail.getInvoiceType(), SettlementOwnerEnum.InvoiceType.ORDINARY.getCode())){
// 普通单不同步状态
return;
}
if (!Objects.equals(settlementOwnerDetail.getInvoiceStatus(), SettlementOwnerDetailEnum.InvoiceStatus.NO.getCode())){ if (!Objects.equals(settlementOwnerDetail.getInvoiceStatus(), SettlementOwnerDetailEnum.InvoiceStatus.NO.getCode())){
return; return;
...@@ -379,7 +390,12 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -379,7 +390,12 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.FAIL.getCode()); settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.FAIL.getCode());
settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail); settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail);
SettlementOrderChildRisk settlementOrderChildRisk = new SettlementOrderChildRisk(); SettlementOrderChildRisk settlementOrderChildRisk = settlementOrderChildRiskDao.findLastByChildNo(mq.getChildNo()).orNull();
if (settlementOrderChildRisk!=null
&& Objects.equals(settlementOrderChildRisk.getStatus(), SettlementOrderChildRiskEnum.Status.INIT.getCode())){
return;
}
settlementOrderChildRisk = new SettlementOrderChildRisk();
settlementOrderChildRisk.setChildNo(orderChild.getChildNo()); settlementOrderChildRisk.setChildNo(orderChild.getChildNo());
settlementOrderChildRisk.setTruckNo(orderChild.getTruckNo()); settlementOrderChildRisk.setTruckNo(orderChild.getTruckNo());
settlementOrderChildRisk.setDriverName(orderChild.getDriverName()); settlementOrderChildRisk.setDriverName(orderChild.getDriverName());
...@@ -419,6 +435,10 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -419,6 +435,10 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
if (!Objects.equals(settlementOwnerDetail.getInvoiceChannel(), SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode())){ if (!Objects.equals(settlementOwnerDetail.getInvoiceChannel(), SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode())){
return; return;
} }
if (Objects.equals(settlementOwnerDetail.getInvoiceType(), SettlementOwnerEnum.InvoiceType.ORDINARY.getCode())){
// 普通单不同步状态
return;
}
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); .getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
...@@ -445,7 +465,12 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -445,7 +465,12 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.FAIL.getCode()); settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.FAIL.getCode());
settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail); settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail);
SettlementOrderChildRisk settlementOrderChildRisk = new SettlementOrderChildRisk(); SettlementOrderChildRisk settlementOrderChildRisk = settlementOrderChildRiskDao.findLastByChildNo(mq.getChildNo()).orNull();
if (settlementOrderChildRisk!=null
&& Objects.equals(settlementOrderChildRisk.getStatus(), SettlementOrderChildRiskEnum.Status.INIT.getCode())){
return;
}
settlementOrderChildRisk = new SettlementOrderChildRisk();
settlementOrderChildRisk.setChildNo(orderChild.getChildNo()); settlementOrderChildRisk.setChildNo(orderChild.getChildNo());
settlementOrderChildRisk.setTruckNo(orderChild.getTruckNo()); settlementOrderChildRisk.setTruckNo(orderChild.getTruckNo());
settlementOrderChildRisk.setDriverName(orderChild.getDriverName()); settlementOrderChildRisk.setDriverName(orderChild.getDriverName());
...@@ -639,6 +664,8 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -639,6 +664,8 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
// 日志 // 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.COMPLETE.getCode(), orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.COMPLETE.getCode(),
OrderChildLogEnum.Type.COMPLETE.getMsg(), 0L, "系统"); OrderChildLogEnum.Type.COMPLETE.getMsg(), 0L, "系统");
settlementPostService.updateDriverPaySuccess(childNo);
}else{ }else{
settlementDriverDao.updatePayErrorMsg(settlementDriver.getId(),payErrorMsg); settlementDriverDao.updatePayErrorMsg(settlementDriver.getId(),payErrorMsg);
} }
...@@ -901,6 +928,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -901,6 +928,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
// 发送mq 结算统计 // 发送mq 结算统计
settlementMqService.settlementStatistics(childNo, SettlementStatisticsMqParam.Type.SEPARATE.getCode()); settlementMqService.settlementStatistics(childNo, SettlementStatisticsMqParam.Type.SEPARATE.getCode());
} }
// 发送mq (运单更新)
orderChildBrokerMqService.orderChildUpdate(childNo);
} }
else if (Objects.equals(settlementOrderChildRisk.getProcessMethod(), SettlementOrderChildRiskEnum.ProcessMethod.SYNC_RETRY.getCode())){ else if (Objects.equals(settlementOrderChildRisk.getProcessMethod(), SettlementOrderChildRiskEnum.ProcessMethod.SYNC_RETRY.getCode())){
...@@ -987,6 +1017,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -987,6 +1017,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
// 发送mq 结算统计 // 发送mq 结算统计
settlementMqService.settlementStatistics(childNo); settlementMqService.settlementStatistics(childNo);
// 发送mq (更新无车承运)
orderChildBrokerMqService.orderChildUpdate(settlementOwnerDetail.getChildNo());
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -1010,6 +1043,87 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -1010,6 +1043,87 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwnerDao.updateStatus(settlementOwner); settlementOwnerDao.updateStatus(settlementOwner);
} }
@Override
public void settlementInvoiceStatusUpdate(SettlementInvoiceStatusUpdateMqParam mq) {
SettlementOwner settlementOwner = settlementOwnerDao.findBySettlementNo(mq.getSettlementNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
if (!Objects.equals(settlementOwner.getStatus(), SettlementOwnerEnum.Status.COMPLETED.getCode())){
return;
}
if (Objects.equals(settlementOwner.getInvoiceStatus(), SettlementOwnerEnum.InvoiceStatus.INVOICED.getCode())){
return;
}
List<SettlementOwnerDetail> list = settlementOwnerDetailDao.getBySettlementNo(settlementOwner.getSettlementNo());
// 无需开票运单
List<SettlementOwnerDetail> list1 = list.stream()
.filter(item -> Objects.equals(item.getInvoiceStatus(),SettlementOwnerDetailEnum.InvoiceStatus.NO.getCode())
&& item.getInvoiceFreight().compareTo(BigDecimal.ZERO) <= 0).collect(Collectors.toList());
// 需要开票运单
List<SettlementOwnerDetail> list2 = list.stream()
.filter(item -> Objects.equals(item.getInvoiceStatus(),SettlementOwnerDetailEnum.InvoiceStatus.NO.getCode())
&& item.getInvoiceFreight().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
// 已开票运单
List<SettlementOwnerDetail> list3 = list.stream()
.filter(item -> Objects.equals(item.getInvoiceStatus(),SettlementOwnerDetailEnum.InvoiceStatus.YES.getCode()))
.collect(Collectors.toList());
if (!list1.isEmpty()) {
settlementOwnerDetailDao
.updateInvoiceStatusByIdList(list1.stream().map(item->item.getId()).collect(Collectors.toList()),
SettlementOwnerDetailEnum.InvoiceStatus.NO_INVOICE.getCode());
}
/**
* 无需开票+否:未开票
* 全部为否:未开票
* 无需开票+是 :部分开票
* 无需开票+是+否 :部分开票
* 全部为是:已开票
* 全部为无需开票:无需开票
*/
if(list1.isEmpty()){
if (list2.isEmpty()){
if (list3.isEmpty()) {
settlementOwner.setInvoiceStatus(settlementOwner.getInvoiceStatus());
}
else {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.INVOICED.getCode());
}
}
else {
if (list3.isEmpty()) {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.NOT_INVOICE.getCode());
}
else {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.PART_INVOICE.getCode());
}
}
}else{
if (list2.isEmpty()){
if (list3.isEmpty()) {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.NO_NEED_INVOICE.getCode());
}
else {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.PART_INVOICE.getCode());
}
}
else {
if (list3.isEmpty()) {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.NOT_INVOICE.getCode());
}
else {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.PART_INVOICE.getCode());
}
}
}
settlementOwnerDao.updateInvoiceStatus(settlementOwner);
}
private BigDecimal invoiceFreightCalc(Integer settlementWay, BigDecimal invoiceServiceFeeRate, SettlementOwnerDetail settlementOwnerDetail) { private BigDecimal invoiceFreightCalc(Integer settlementWay, BigDecimal invoiceServiceFeeRate, SettlementOwnerDetail settlementOwnerDetail) {
if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。 if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()) return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
......
...@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper; ...@@ -6,6 +6,7 @@ import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants; import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqService; import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.vo.mq.*; import com.clx.performance.vo.mq.*;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam; import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam; import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam; import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
...@@ -149,4 +150,16 @@ public class SettlementMqServiceImpl implements SettlementMqService { ...@@ -149,4 +150,16 @@ public class SettlementMqServiceImpl implements SettlementMqService {
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message); RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
} }
@Override
public void settlementInvoiceStatusUpdate(String settlementNo) {
SettlementInvoiceStatusUpdateMqParam mq = new SettlementInvoiceStatusUpdateMqParam();
mq.setSettlementNo(settlementNo);
MqDelay delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_UPDATE_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
} }
...@@ -2,14 +2,17 @@ package com.clx.performance.service.impl.settle; ...@@ -2,14 +2,17 @@ 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.SettlementDriverDetailDao; import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOrderChildRiskDao; import com.clx.performance.dao.settle.SettlementOrderChildRiskDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.ResultEnum; import com.clx.performance.enums.ResultEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum; import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum; import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum; import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOrderChildRisk; import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
...@@ -48,6 +51,8 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild ...@@ -48,6 +51,8 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
@Autowired @Autowired
private SettlementOrderChildRiskDao settlementOrderChildRiskDao; private SettlementOrderChildRiskDao settlementOrderChildRiskDao;
@Autowired @Autowired
private SettlementDriverDao settlementDriverDao;
@Autowired
private SettlementOrderChildRiskStruct settlementOrderChildRiskStruct; private SettlementOrderChildRiskStruct settlementOrderChildRiskStruct;
@Autowired @Autowired
...@@ -68,6 +73,8 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild ...@@ -68,6 +73,8 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
.getByChildNo(settlementOrderChildRisk.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); .getByChildNo(settlementOrderChildRisk.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriver settlementDriver = settlementDriverDao.findByChildNo(settlementOrderChildRisk.getChildNo()).orNull();
settlementOrderChildRisk.setStatus(SettlementOrderChildRiskEnum.Status.PROCESSED.getCode()); settlementOrderChildRisk.setStatus(SettlementOrderChildRiskEnum.Status.PROCESSED.getCode());
settlementOrderChildRisk.setProcessMethod(param.getProcessMethod()); settlementOrderChildRisk.setProcessMethod(param.getProcessMethod());
settlementOrderChildRisk.setProcessBy(loginUserInfo.getUserName()); settlementOrderChildRisk.setProcessBy(loginUserInfo.getUserName());
...@@ -90,6 +97,11 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild ...@@ -90,6 +97,11 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
settlementDriverDetailDao.updateConvertOrdinary(settlementDriverDetail); settlementDriverDetailDao.updateConvertOrdinary(settlementDriverDetail);
settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType()); settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
if (settlementDriver != null) {
// 删除结算单
settlementDriverDao.deleteByKey(settlementDriver.getId());
}
} }
else { else {
......
...@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollectionUtil; ...@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
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.order.enums.InvoicingCompanyEnum;
import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao; import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
...@@ -12,6 +14,7 @@ import com.clx.performance.enums.PerformanceResultEnum; ...@@ -12,6 +14,7 @@ import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum; import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum; import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementWayEnum; import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.extranal.order.InvoicingCompanyService;
import com.clx.performance.listener.excel.InvoiceDataListener; import com.clx.performance.listener.excel.InvoiceDataListener;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
...@@ -96,6 +99,9 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -96,6 +99,9 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
@Autowired @Autowired
private FileUploadFeign fileUploadFeign; private FileUploadFeign fileUploadFeign;
@Autowired
private InvoicingCompanyService invoicingCompanyService;
@Override @Override
public Integer saveSettlementDetail(OrderChild orderChild, OrderGoods orderGoods, SettlementDriverDetail settlementDriverDetail) { public Integer saveSettlementDetail(OrderChild orderChild, OrderGoods orderGoods, SettlementDriverDetail settlementDriverDetail) {
...@@ -141,9 +147,21 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -141,9 +147,21 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
//借款抵扣金额初始化 //借款抵扣金额初始化
settlementOwnerDetail.setLoanFreight(BigDecimal.ZERO); settlementOwnerDetail.setLoanFreight(BigDecimal.ZERO);
// 开票服务费 //设置开票公司信息
settlementOwnerDetail.setInvoiceServiceFeeRate( settlementOwnerDetail.setInvoicingCompanyId(orderChild.getInvoicingCompanyId());
orderGoods.getInvoiceServiceFeeRate()==null? BigDecimal.ZERO : orderGoods.getInvoiceServiceFeeRate()); settlementOwnerDetail.setInvoicingCompanyShorterName(orderChild.getInvoicingCompanyShorterName());
settlementOwnerDetail.setInvoicingCompanyGroupCode(orderChild.getInvoicingCompanyGroupCode());
// 查询开票公司
InvoicingCompanyVO invoiceCompany = invoicingCompanyService.getInvoicingCompany(
settlementOwnerDetail.getInvoicingCompanyId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 开票服务率
settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO);
if (Objects.equals(invoiceCompany.getQuotationType(), InvoicingCompanyEnum.TaxType.TAX_EXCLUDED.getCode())) {
settlementOwnerDetail.setInvoiceServiceFeeRate(
invoiceCompany.getServiceFeeRate() == null ? BigDecimal.ZERO : invoiceCompany.getServiceFeeRate());
}
// 开票服务费 // 开票服务费
settlementOwnerDetail.setInvoiceServiceFee( settlementOwnerDetail.setInvoiceServiceFee(
...@@ -158,10 +176,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -158,10 +176,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementCommonService.settlementFreightCalc(orderGoods.getSettlementWay(),settlementOwnerDetail)); settlementCommonService.settlementFreightCalc(orderGoods.getSettlementWay(),settlementOwnerDetail));
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode()); settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode());
//设置开票公司信息
settlementOwnerDetail.setInvoicingCompanyId(orderChild.getInvoicingCompanyId());
settlementOwnerDetail.setInvoicingCompanyShorterName(orderChild.getInvoicingCompanyShorterName());
settlementOwnerDetail.setInvoicingCompanyGroupCode(orderChild.getInvoicingCompanyGroupCode());
settlementOwnerDetail.setReportFlag(orderChild.getReportFlag()); settlementOwnerDetail.setReportFlag(orderChild.getReportFlag());
settlementOwnerDetail.setInvoiceChannel(SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode()); settlementOwnerDetail.setInvoiceChannel(SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode());
...@@ -494,6 +509,78 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -494,6 +509,78 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
return ExcelUtil.create(excelSheet); return ExcelUtil.create(excelSheet);
} }
@Override
public SXSSFWorkbook exportSettlementOwnerDetail(PageCarrierSettlementOwnerDetailParam param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<CarrierPageSettlementOwnerDetailVO> settlementOwnerDetailPage = pageSettlementOwnerDetail(param);
List<CarrierPageSettlementOwnerDetailVO> list = settlementOwnerDetailPage.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "运单编号", "childNo", 5000));
fieldList.add(new ExcelField(1, "货主编码", "ownerUserNo", 5000));
fieldList.add(new ExcelField(2, "货主名称", "ownerName", 5000));
fieldList.add(new ExcelField(3, "结算方式", "settlementWay", 5000));
fieldList.add(new ExcelField(4, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(5, "实际净重(吨)", "weight", 5000));
fieldList.add(new ExcelField(6, "平台运费报价", "freightPrice", 5000));
fieldList.add(new ExcelField(7, "应付运费", "freight", 5000));
fieldList.add(new ExcelField(8, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(9, "货损单价", "lossPrice", 5000));
fieldList.add(new ExcelField(10, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(11, "管理费率(%)", "invoiceServiceFeeRate", 5000));
fieldList.add(new ExcelField(12, "管理费", "invoiceServiceFee", 5000));
fieldList.add(new ExcelField(13, "预付运费金额", "prepayFreight", 5000));
fieldList.add(new ExcelField(14, "借款抵扣金额", "loanFreight", 5000));
fieldList.add(new ExcelField(15, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(16, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(17, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(18, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(19, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(20, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(21, "创建时间", "createTime", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (CarrierPageSettlementOwnerDetailVO dto : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(dto.getChildNo()));
rowData.add(new ExcelData(dto.getOwnerUserNo()+""));
rowData.add(new ExcelData(dto.getOwnerName()));
rowData.add(new ExcelData(dto.getSettlementWay()==null?null:SettlementWayEnum.WayType.getMsgByCode(dto.getSettlementWay())));
rowData.add(new ExcelData(dto.getGoodsName()));
rowData.add(new ExcelData(dto.getWeight()));
rowData.add(new ExcelData(dto.getFreightPrice()==null?null:dto.getFreightPrice().movePointLeft(2)));
rowData.add(new ExcelData(dto.getFreight()==null?null:dto.getFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getLossWeight()));
rowData.add(new ExcelData(dto.getLossPrice()==null?null:dto.getLossPrice().movePointLeft(2)));
rowData.add(new ExcelData(dto.getLossFreight()==null?null:dto.getLossFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getInvoiceServiceFeeRate()));
rowData.add(new ExcelData(dto.getInvoiceServiceFee()==null?null:dto.getInvoiceServiceFee().movePointLeft(2)));
rowData.add(new ExcelData(dto.getPrepayFreight()==null?null:dto.getPrepayFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getLoanFreight()==null?null:dto.getLoanFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getSettlementFreight()==null?null:dto.getSettlementFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getInvoiceFreight()==null?null:dto.getInvoiceFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData(dto.getInvoiceType()==null?null:SettlementOwnerEnum.InvoiceType.getMsgByCode(dto.getInvoiceType())));
rowData.add(new ExcelData(dto.getOrderNo()));
rowData.add(new ExcelData(dto.getSettlementNo()));
rowData.add(new ExcelData(dto.getCreateTime()));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("货主运单计费", "货主运单计费", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
@Override @Override
public SXSSFWorkbook exportBatchSettlementOwnerDetail(ExportBatchOwnerSettlementDetailParam param) { public SXSSFWorkbook exportBatchSettlementOwnerDetail(ExportBatchOwnerSettlementDetailParam param) {
//通过结算单号查询结算运单明细 //通过结算单号查询结算运单明细
...@@ -622,15 +709,14 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -622,15 +709,14 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
fieldList.add(new ExcelField(19, "开票金额", "invoiceFreight", 5000)); fieldList.add(new ExcelField(19, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(20, "订单编号", "orderNo", 5000)); fieldList.add(new ExcelField(20, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(21, "结算单号", "settlementNo", 5000)); fieldList.add(new ExcelField(21, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(22, "结算子单号", "settlementSubNo", 5000)); fieldList.add(new ExcelField(22, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(23, "创建时间", "createTime", 5000)); fieldList.add(new ExcelField(23, "是否已付尾款", "finalPaymentStatusMsg", 5000));
fieldList.add(new ExcelField(24, "是否已付尾款", "finalPaymentStatusMsg", 5000)); fieldList.add(new ExcelField(24, "是否已开票", "invoiceStatusMsg", 5000));
fieldList.add(new ExcelField(25, "是否已开票", "invoiceStatusMsg", 5000));
if (param.getInvoiceStatus().equals(SettlementOwnerDetailEnum.InvoiceStatus.NO.getCode())) { if (param.getInvoiceStatus().equals(SettlementOwnerDetailEnum.InvoiceStatus.NO.getCode())) {
fieldList.add(new ExcelField(26, "备注", "separateRemark", 5000)); fieldList.add(new ExcelField(25, "备注", "separateRemark", 5000));
}else { }else {
fieldList.add(new ExcelField(26, "开票时间", "invoiceTime", 5000)); fieldList.add(new ExcelField(25, "开票时间", "invoiceTime", 5000));
fieldList.add(new ExcelField(27, "备注", "separateRemark", 5000)); fieldList.add(new ExcelField(26, "备注", "separateRemark", 5000));
} }
// 组装数据 // 组装数据
...@@ -662,7 +748,6 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -662,7 +748,6 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
rowData.add(new ExcelData(vo.getInvoiceFreight()==null?null:vo.getInvoiceFreight().movePointLeft(2))); rowData.add(new ExcelData(vo.getInvoiceFreight()==null?null:vo.getInvoiceFreight().movePointLeft(2)));
rowData.add(new ExcelData(vo.getOrderNo())); rowData.add(new ExcelData(vo.getOrderNo()));
rowData.add(new ExcelData(vo.getSettlementNo())); rowData.add(new ExcelData(vo.getSettlementNo()));
rowData.add(new ExcelData(vo.getSettlementSubNo()));
rowData.add(new ExcelData(vo.getCreateTime())); rowData.add(new ExcelData(vo.getCreateTime()));
rowData.add(new ExcelData(vo.getFinalPaymentStatusMsg())); rowData.add(new ExcelData(vo.getFinalPaymentStatusMsg()));
rowData.add(new ExcelData(vo.getInvoiceStatusMsg())); rowData.add(new ExcelData(vo.getInvoiceStatusMsg()));
...@@ -721,5 +806,8 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -721,5 +806,8 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetailDao.updateSettlementByChildNoList(childNoList); settlementOwnerDetailDao.updateSettlementByChildNoList(childNoList);
// 发送mq (运单更新) // 发送mq (运单更新)
orderChildBrokerMqService.orderChildUpdate(childNoList); orderChildBrokerMqService.orderChildUpdate(childNoList);
settlementPostService.updateInvoice(childNoList);
} }
} }
...@@ -44,13 +44,15 @@ public class SettlementOwnerExportServiceImpl implements SettlementOwnerExportSe ...@@ -44,13 +44,15 @@ public class SettlementOwnerExportServiceImpl implements SettlementOwnerExportSe
fieldList.add(new ExcelField(10, "预付运费金额", "prepayFreight", 5000)); fieldList.add(new ExcelField(10, "预付运费金额", "prepayFreight", 5000));
fieldList.add(new ExcelField(11, "货损吨数", "lossWeight", 5000)); fieldList.add(new ExcelField(11, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(12, "管理费", "invoiceServiceFee", 5000)); fieldList.add(new ExcelField(12, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(13, "借款抵扣金额", "loanFreight", 5000)); fieldList.add(new ExcelField(13, "管理费", "invoiceServiceFee", 5000));
fieldList.add(new ExcelField(14, "结算金额", "settlementFreight", 5000)); fieldList.add(new ExcelField(14, "借款抵扣金额", "loanFreight", 5000));
fieldList.add(new ExcelField(15, "开票金额", "invoiceFreight", 5000)); fieldList.add(new ExcelField(15, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(16, "创建时间", "createTime", 5000)); fieldList.add(new ExcelField(16, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(17, "状态", "status", 5000)); fieldList.add(new ExcelField(17, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(18, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(19, "状态", "status", 5000));
// 组装数据 // 组装数据
List<List<ExcelData>> dataList = new ArrayList<>(); List<List<ExcelData>> dataList = new ArrayList<>();
...@@ -73,11 +75,13 @@ public class SettlementOwnerExportServiceImpl implements SettlementOwnerExportSe ...@@ -73,11 +75,13 @@ public class SettlementOwnerExportServiceImpl implements SettlementOwnerExportSe
rowData.add(new ExcelData(dto.getPrepayFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP))); rowData.add(new ExcelData(dto.getPrepayFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getLossWeight())); rowData.add(new ExcelData(dto.getLossWeight()));
rowData.add(new ExcelData(dto.getLossFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getInvoiceServiceFee().movePointLeft(2).setScale(2, RoundingMode.HALF_UP))); rowData.add(new ExcelData(dto.getInvoiceServiceFee().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getLoanFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP))); rowData.add(new ExcelData(dto.getLoanFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getSettlementFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getSettlementFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getInvoiceFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP))); rowData.add(new ExcelData(dto.getInvoiceFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData(dto.getCreateTime())); rowData.add(new ExcelData(dto.getCreateTime()));
rowData.add(new ExcelData(dto.getStatusMsg())); rowData.add(new ExcelData(dto.getStatusMsg()));
......
...@@ -33,6 +33,7 @@ import com.clx.performance.service.PlatformAccountConfigService; ...@@ -33,6 +33,7 @@ import com.clx.performance.service.PlatformAccountConfigService;
import com.clx.performance.service.settle.SettlementLogService; import com.clx.performance.service.settle.SettlementLogService;
import com.clx.performance.service.settle.SettlementMqHandlerService; import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.service.settle.SettlementOwnerService; import com.clx.performance.service.settle.SettlementOwnerService;
import com.clx.performance.service.settle.SettlementPostService;
import com.clx.performance.struct.settle.SettlementLogStruct; import com.clx.performance.struct.settle.SettlementLogStruct;
import com.clx.performance.struct.settle.SettlementOwnerStruct; import com.clx.performance.struct.settle.SettlementOwnerStruct;
import com.clx.performance.utils.MyMD5Util; import com.clx.performance.utils.MyMD5Util;
...@@ -89,6 +90,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -89,6 +90,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
private final OwnerAccountService ownerAccountService; private final OwnerAccountService ownerAccountService;
private final OwnerAccountPasswordDao ownerAccountPasswordDao; private final OwnerAccountPasswordDao ownerAccountPasswordDao;
private final SettlementPostService settlementPostService;
private final NetworkSyncComponent networkSyncComponent; private final NetworkSyncComponent networkSyncComponent;
private final SettlementMqHandlerService settlementMqHandlerService; private final SettlementMqHandlerService settlementMqHandlerService;
...@@ -572,8 +574,6 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -572,8 +574,6 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
String settlementNo = param.getSettlementNo(); String settlementNo = param.getSettlementNo();
settlementOwnerDao.uploadInvoiceImg(settlementNo,param.getInvoiceImg()); settlementOwnerDao.uploadInvoiceImg(settlementNo,param.getInvoiceImg());
settlementOwnerDao.updateStatusBySettlementNo(settlementNo
,SettlementOwnerEnum.Status.OWNER_TO_BE_CONFIRMED.getCode());
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
//保存结算单日志----上传结算凭证 //保存结算单日志----上传结算凭证
settlementLogService.saveSettlementLog(settlementNo, settlementLogService.saveSettlementLog(settlementNo,
...@@ -689,12 +689,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -689,12 +689,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
networkSyncComponent.ownerSettlementSync(settlementOwner,settlementOwnerDetailList); networkSyncComponent.ownerSettlementSync(settlementOwner,settlementOwnerDetailList);
}else{ }else{
// 小于0不开票 settlementOwnerDao.updateStatusBySettlementNo(settlementNo,SettlementOwnerEnum.Status.COMPLETED.getCode());
if(settlementOwner.getInvoiceFreight().compareTo(BigDecimal.ZERO) <= 0 ) {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.NO_NEED_INVOICE.getCode());
}
settlementOwner.setStatus(SettlementOwnerEnum.Status.COMPLETED.getCode());
settlementOwnerDao.updateInvoiceStatusAndStatus(settlementOwner);
} }
} }
...@@ -710,6 +705,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -710,6 +705,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
SettlementLogEnum.Type.COMPLETED.getCode(),SettlementLogEnum.Type.COMPLETED.getMsg(), SettlementLogEnum.Type.COMPLETED.getCode(),SettlementLogEnum.Type.COMPLETED.getMsg(),
OrderChildLogEnum.CreateType.PLATFORM.getCode(),loginUserInfo.getUserNo(),loginUserInfo.getUserName()); OrderChildLogEnum.CreateType.PLATFORM.getCode(),loginUserInfo.getUserNo(),loginUserInfo.getUserName());
} }
settlementPostService.updatePayConfirm(settlementOwner);
} }
@Override @Override
...@@ -763,7 +761,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -763,7 +761,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
Integer invoicingCompanyId = null; Integer invoicingCompanyId = null;
//开票公司上报标识 //开票公司上报标识
Integer reportFlag = null ; Integer reportFlag = null ;
String tip = "结算单状态“待对账”且同一货主,同一开票标识,同一结算方式,同一开票公司,同一上报标识 支持合并"; String tip = "结算单状态“待对账或待货主确认”且同一货主,同一开票标识,同一结算方式,同一开票公司,同一上报标识 支持合并";
SettlementOwner merge = null; SettlementOwner merge = null;
String settlementNo = settlementMqHandlerService.settlementNoGenerate(); String settlementNo = settlementMqHandlerService.settlementNoGenerate();
...@@ -773,8 +771,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -773,8 +771,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
log.warn("货主结算单号:{} 结算单不允许二次合并",item.getSettlementNo()); log.warn("货主结算单号:{} 结算单不允许二次合并",item.getSettlementNo());
throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,"结算单不允许二次合并"); throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,"结算单不允许二次合并");
} }
if(!Objects.equals(SettlementOwnerEnum.Status.TO_BE_ACCOUNT.getCode(),item.getStatus())){ if(!Objects.equals(SettlementOwnerEnum.Status.TO_BE_ACCOUNT.getCode(),item.getStatus())
log.warn("货主结算单号:{} 的结算状态非待对账",item.getSettlementNo()); && !Objects.equals(SettlementOwnerEnum.Status.OWNER_TO_BE_CONFIRMED.getCode(),item.getStatus())){
log.warn("货主结算单号:{} 的结算状态非待对账或待货主确认",item.getSettlementNo());
throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,tip); throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,tip);
} }
if(Objects.nonNull(ownerUserNo) && !Objects.equals(ownerUserNo,item.getOwnerUserNo())){ if(Objects.nonNull(ownerUserNo) && !Objects.equals(ownerUserNo,item.getOwnerUserNo())){
...@@ -813,6 +812,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -813,6 +812,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
merge.setPrepayFreight(merge.getPrepayFreight().add(item.getPrepayFreight())); merge.setPrepayFreight(merge.getPrepayFreight().add(item.getPrepayFreight()));
merge.setSettlementFreight(merge.getSettlementFreight().add(item.getSettlementFreight())); merge.setSettlementFreight(merge.getSettlementFreight().add(item.getSettlementFreight()));
merge.setInvoiceFreight(merge.getInvoiceFreight().add(item.getInvoiceFreight())); merge.setInvoiceFreight(merge.getInvoiceFreight().add(item.getInvoiceFreight()));
merge.setLoadNet(merge.getLoadNet().add(item.getLoadNet()));
merge.setUnloadNet(merge.getUnloadNet().add(item.getUnloadNet()));
merge.setDriverFreight(merge.getDriverFreight().add(item.getDriverFreight()));
}else{ }else{
merge = item; merge = item;
......
package com.clx.performance.service.impl.settle; package com.clx.performance.service.impl.settle;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.broker.OrderChildBrokerMqService;
import com.clx.performance.service.settle.SettlementMqService; import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.service.settle.SettlementPostService; import com.clx.performance.service.settle.SettlementPostService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -8,14 +11,22 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -8,14 +11,22 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
public class SettlementPostServiceImpl implements SettlementPostService { public class SettlementPostServiceImpl implements SettlementPostService {
@Autowired
private SettlementOwnerDetailDao settlementOwnerDetailDao;
@Autowired @Autowired
private SettlementMqService settlementMqService; private SettlementMqService settlementMqService;
@Autowired
private OrderChildBrokerMqService orderChildBrokerMqService;
@Override @Override
public void updateInvoiceCompany(List<SettlementOwnerDetail> list){ public void updateInvoiceCompany(List<SettlementOwnerDetail> list){
...@@ -26,4 +37,27 @@ public class SettlementPostServiceImpl implements SettlementPostService { ...@@ -26,4 +37,27 @@ public class SettlementPostServiceImpl implements SettlementPostService {
} }
} }
@Override
public void updateDriverPaySuccess(String childNo) {
// 发送mq (更新无车承运)
orderChildBrokerMqService.orderChildUpdate(childNo);
}
@Override
public void updatePayConfirm(SettlementOwner settlementOwner) {
settlementMqService.settlementInvoiceStatusUpdate(settlementOwner.getSettlementNo());
}
@Override
public void updateInvoice(List<String> childNoList) {
List<SettlementOwnerDetail> settlementOwnerDetailList = settlementOwnerDetailDao.getListByChildNoList(childNoList);
Set<String> set = settlementOwnerDetailList.stream().map(item -> item.getSettlementNo()).collect(Collectors.toSet());
for (String item : set) {
// 发送mq (更新无车承运)
settlementMqService.settlementInvoiceStatusUpdate(item);
}
}
} }
...@@ -2,6 +2,7 @@ package com.clx.performance.service.settle; ...@@ -2,6 +2,7 @@ package com.clx.performance.service.settle;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.vo.mq.*; import com.clx.performance.vo.mq.*;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam; import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam; import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam; import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
...@@ -32,4 +33,6 @@ public interface SettlementMqHandlerService { ...@@ -32,4 +33,6 @@ public interface SettlementMqHandlerService {
void settlementPlatformAutoConfirm(SettlementPlatformAutoConfirmMqParam mq); void settlementPlatformAutoConfirm(SettlementPlatformAutoConfirmMqParam mq);
void settlementInvoiceStatusUpdate(SettlementInvoiceStatusUpdateMqParam mq);
} }
...@@ -21,4 +21,6 @@ public interface SettlementMqService { ...@@ -21,4 +21,6 @@ public interface SettlementMqService {
void settlementPlatformAutoConfirmUpdate(String settlementNo); void settlementPlatformAutoConfirmUpdate(String settlementNo);
void settlementInvoiceStatusUpdate(String settlementNo);
} }
...@@ -51,6 +51,8 @@ public interface SettlementOwnerDetailService { ...@@ -51,6 +51,8 @@ public interface SettlementOwnerDetailService {
SXSSFWorkbook exportPendingSettlementOwnerDetail(PagePendingCarrierSettlementOwnerDetailParam param); SXSSFWorkbook exportPendingSettlementOwnerDetail(PagePendingCarrierSettlementOwnerDetailParam param);
SXSSFWorkbook exportSettlementOwnerDetail(PageCarrierSettlementOwnerDetailParam param);
SXSSFWorkbook exportBatchSettlementOwnerDetail(ExportBatchOwnerSettlementDetailParam param); SXSSFWorkbook exportBatchSettlementOwnerDetail(ExportBatchOwnerSettlementDetailParam param);
SXSSFWorkbook exportInvoiceOwnerSettlementOrderDetail(PageInvoiceOwnerSettlementOwnerDetailParam param); SXSSFWorkbook exportInvoiceOwnerSettlementOrderDetail(PageInvoiceOwnerSettlementOwnerDetailParam param);
......
package com.clx.performance.service.settle; package com.clx.performance.service.settle;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import java.util.List; import java.util.List;
...@@ -7,4 +8,11 @@ import java.util.List; ...@@ -7,4 +8,11 @@ import java.util.List;
public interface SettlementPostService { public interface SettlementPostService {
void updateInvoiceCompany(List<SettlementOwnerDetail> list); void updateInvoiceCompany(List<SettlementOwnerDetail> list);
void updateDriverPaySuccess(String childNo);
void updatePayConfirm(SettlementOwner settlementOwner);
void updateInvoice(List<String> childNoList);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论