提交 345792ef authored 作者: liuhaiquan's avatar liuhaiquan

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

package com.clx.performance.common;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* @Author: aiqingguo
* @Description:
* @Date: 2023-10-12 14:00:14
* @Version: 1.0
*/
@Setter
@Getter
@NoArgsConstructor
public class MqDelay<T> {
private String exchange;
private String routerKey;
private T data;
public MqDelay(String exchange, String routerKey, T data) {
this.exchange = exchange;
this.routerKey = routerKey;
this.data = data;
}
}
package com.clx.performance.common;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @Author: aiqingguo
* @Description:
* @Date: 2023-10-12 11:59:33
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
public class MqWrapper<T> {
private T data;
private String exchange; //交换机
private String routeKey; //路由键
private String createTime; //创建时间
public MqWrapper(T data) {
this.data = data;
this.createTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
}
public MqWrapper(T data, String exchange, String routeKey) {
this.data = data;
this.exchange = exchange;
this.routeKey = routeKey;
this.createTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
}
}
......@@ -91,5 +91,21 @@ public enum SettlementOwnerEnum {
}
}
@Getter
@AllArgsConstructor
public enum SettlementPeriodType {
IMMEDIATE(1, "拉运完成结算"),
MONTH(2, "月结"),
;
private final int code;
private final String name;
public static Optional<SettlementPeriodType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
package com.clx.performance.param.pc.owner;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SaveExpressParam {
@ApiModelProperty(value = "结算编号", example = "JS415")
private String settlementNo;
@ApiModelProperty(value = "快递公司", example = "顺风")
private String expressCompany;
@ApiModelProperty(value = "快递编号", example = "SF145787")
private String expressNo;
}
package com.clx.performance.param.pc.owner;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SavePayeeParam {
@ApiModelProperty(value = "结算编号", example = "JS415")
private String settlementNo;
@ApiModelProperty(value = "收款人", example = "收款人")
private String payee;
@ApiModelProperty(value = "收款银行", example = "浙江银行")
private String payeeBankName;
@ApiModelProperty(value = "收款银行卡卡号", example = "62213545878787")
private String payeeBankCardNo;
@ApiModelProperty(value = "付款凭证", example = "/a.png")
private String paymentImg;
@ApiModelProperty(value = "付款银行", example = "浙江银行")
private String paymentBankName;
@ApiModelProperty(value = "付款银行卡卡号", example = "62213545878787")
private String paymentBankCardNo;
@ApiModelProperty(value = "付款金额", example = "123")
private String paymentAmount;
}
package com.clx.performance.param.pc.owner;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class UpdateStatusParam {
@ApiModelProperty(value = "订单编号", example = "JS415")
private String orderNo;
@ApiModelProperty(value = "结算类型:1拉运完成结 2月结", example = "收款人")
private Integer settlementPeriodType;
@ApiModelProperty(value = "当前状态", example = "收款人")
private Integer fromStatus;
@ApiModelProperty(value = "目标状态", example = "收款人")
private Integer toStatus;
}
package com.clx.performance.param.pc.owner;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class UploadInvoiceImgParam{
@ApiModelProperty(value = "结算编号", example = "JS415")
private String settlementNo;
@ApiModelProperty(value="结算凭证",example = "/123.img")
private String invoiceImg;
}
package com.clx.performance.vo.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 新增
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class OrderChildAddMqParam {
private String childNo; //运单编号
}
package com.clx.performance.vo.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 司机确认收货
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class OrderChildDriverConfirmMqParam {
private String childNo; //运单编号
}
package com.clx.performance.vo.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 新增计费明细
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class SettlementDetailAddMqParam {
private Integer settlementOwnerDetailId; //货主计费明细id
private Integer settlementDriverDetailId; //司机计费明细id
}
package com.clx.performance.vo.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 开票标识同步
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class SettlementDetailInvoiceTypeSyncMqParam {
private String childNo; //运单编号
private Integer InvoiceType; //司机计费明细id
}
......@@ -32,6 +32,11 @@ public class CarrierSettlementOwnerDetailVO {
@ApiModelProperty(value = "结算子单号", example = "JS012")
private String settlementSubNo;
@ApiModelProperty(value = "结算周期类型:1拉运完成结 2月结", example = "")
private Integer settlementPeriodType;
@ApiModelProperty(value = "结算周期时间(月结)", example = "")
private String settlementPeriodTime;
@ApiModelProperty(value = "订单编号", example = "123")
private String orderNo;
......
package com.clx.performance.config;
import com.clx.performance.constant.RabbitKeyOrderChildConstants;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* @Author: aiqingguo
* @Description: 运单 MQ
* @Date: 2023-10-12 16:27:30
* @Version: 1.0
*/
@Configuration
public class RabbitOrderChildConfig {
@Bean
public DirectExchange orderChildDefaultExchange() {
return new DirectExchange(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE);
}
@Bean
public Queue orderChildDefaultDelayQueue() {
Map<String, Object> params = new HashMap<>(8);
params.put("x-message-ttl", 15 * 60 * 1000);
params.put("x-max-length", 5000000);
params.put("x-dead-letter-exchange", RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE);
params.put("x-dead-letter-routing-key", RabbitKeyOrderChildConstants.DEFAULT_DEAD_ROUTING_KEY);
return new Queue(RabbitKeyOrderChildConstants.DEFAULT_DELAY_QUEUE, true, false, false, params);
}
@Bean
public Binding orderChildDefaultDelayQueueBinding() {
return BindingBuilder.bind(orderChildDefaultDelayQueue()).to(orderChildDefaultExchange()).with(RabbitKeyOrderChildConstants.DEFAULT_DELAY_ROUTING_KEY);
}
@Bean
public Queue orderChildDefaultDeadQueue() {
return new Queue(RabbitKeyOrderChildConstants.DEFAULT_DEAD_QUEUE);
}
@Bean
public Binding orderChildDefaultDeadQueueBinding() {
return BindingBuilder.bind(orderChildDefaultDeadQueue()).to(orderChildDefaultExchange()).with(RabbitKeyOrderChildConstants.DEFAULT_DEAD_ROUTING_KEY);
}
/**
* 新增
*/
@Bean
public Queue orderChildAddQueue() {
return new Queue(RabbitKeyOrderChildConstants.ORDER_CHILD_ADD_QUEUE);
}
@Bean
public Binding orderChildAddQueueBinding() {
return BindingBuilder.bind(orderChildAddQueue()).to(orderChildDefaultExchange()).with(RabbitKeyOrderChildConstants.ORDER_CHILD_ADD_ROUTING_KEY);
}
/**
* 司机确认收货
*/
@Bean
public Queue orderChildDriverConfirmQueue() {
return new Queue(RabbitKeyOrderChildConstants.ORDER_CHILD_DRIVER_CONFIRM_QUEUE);
}
@Bean
public Binding orderChildDriverConfirmQueueBinding() {
return BindingBuilder.bind(orderChildDriverConfirmQueue()).to(orderChildDefaultExchange()).with(RabbitKeyOrderChildConstants.ORDER_CHILD_DRIVER_CONFIRM_ROUTING_KEY);
}
}
......@@ -58,7 +58,19 @@ public class RabbitSettlementConfig {
}
@Bean
public Binding settlementDetailAddQueueBinding() {
return BindingBuilder.bind(settlementDetailAddQueue()).to(settlementDefaultExchange()).with(RabbitKeySettlementConstants.SETTLEMENT_DETAIL_ROUTING_KEY);
return BindingBuilder.bind(settlementDetailAddQueue()).to(settlementDefaultExchange()).with(RabbitKeySettlementConstants.SETTLEMENT_DETAIL_ADD_ROUTING_KEY);
}
/**
* 计费明细新增
*/
@Bean
public Queue settlementDetailInvoiceTypeSyncQueue() {
return new Queue(RabbitKeySettlementConstants.SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_QUEUE);
}
@Bean
public Binding settlementDetailInvoiceTypeSyncQueueBinding() {
return BindingBuilder.bind(settlementDetailInvoiceTypeSyncQueue()).to(settlementDefaultExchange()).with(RabbitKeySettlementConstants.SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY);
}
......
......@@ -33,6 +33,18 @@ public class RabbitKeyOrderChildConstants {
public static final String DEFAULT_DEAD_QUEUE = PREFIX +"default"+DEAD_QUEUE;
public static final String DEFAULT_DEAD_ROUTING_KEY = PREFIX +"default"+DEAD_ROUTING_KEY;
/**
* 新增
*/
public static final String ORDER_CHILD_ADD_QUEUE = PREFIX +"orderChild.add"+QUEUE;
public static final String ORDER_CHILD_ADD_ROUTING_KEY = PREFIX +"orderChild.add"+QUEUE_ROUTING_KEY;
/**
* 司机确认
*/
public static final String ORDER_CHILD_DRIVER_CONFIRM_QUEUE = PREFIX +"orderChild.driverConfirm"+QUEUE;
public static final String ORDER_CHILD_DRIVER_CONFIRM_ROUTING_KEY = PREFIX +"orderChild.driverConfirm"+QUEUE_ROUTING_KEY;
/**
* 运单完成
*/
......
......@@ -37,6 +37,12 @@ public class RabbitKeySettlementConstants {
* 新增计费单
*/
public static final String SETTLEMENT_DETAIL_ADD_QUEUE = PREFIX +"settlementDetail.add"+QUEUE;
public static final String SETTLEMENT_DETAIL_ROUTING_KEY = PREFIX +"settlementDetail.add"+QUEUE_ROUTING_KEY;
public static final String SETTLEMENT_DETAIL_ADD_ROUTING_KEY = PREFIX +"settlementDetail.add"+QUEUE_ROUTING_KEY;
/**
* 同步开票标识
*/
public static final String SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_QUEUE = PREFIX +"settlementDetailInvoiceType.sync"+QUEUE;
public static final String SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY = PREFIX +"settlementDetailInvoiceType.sync"+QUEUE_ROUTING_KEY;
}
package com.clx.performance.controller.pc.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerParam;
import com.clx.performance.param.pc.owner.*;
import com.clx.performance.service.settle.SettlementOwnerService;
import com.clx.performance.vo.pc.carrier.settle.*;
import com.msl.common.base.PageData;
......@@ -85,4 +85,41 @@ public class CarrierSettlementOwnerController {
return Result.ok(settlementOwnerService.getCarrierSettlementOwnerExpress(id));
}
@ApiOperation(value = "货主结算单上传结算凭证",notes = "<br>By:姜文业")
@PostMapping("/uploadInvoiceImg")
public Result uploadInvoiceImg(@RequestBody @Validated UploadInvoiceImgParam param) {
settlementOwnerService.uploadInvoiceImg(param);
return Result.ok();
}
@ApiOperation(value = "货主结算单填写快递信息",notes = "<br>By:姜文业")
@PostMapping("/saveExpress")
public Result saveExpress(@RequestBody @Validated SaveExpressParam param) {
settlementOwnerService.saveExpress(param);
return Result.ok();
}
@ApiOperation(value = "货主结算单付款提交",notes = "<br>By:姜文业")
@PostMapping("/savePayee")
public Result savePayee(@RequestBody @Validated SavePayeeParam param) {
settlementOwnerService.savePayee(param);
return Result.ok();
}
@ApiOperation(value = "编辑结算单状态",notes = "<br>By:姜文业")
@PostMapping("/updateStatusByOrderNo")
public Result updateStatusByOrderNo(@RequestBody @Validated UpdateStatusParam param) {
settlementOwnerService.updateStatusByOrderNo(param.getOrderNo(), param.getSettlementPeriodType(), param.getFromStatus(), param.getToStatus());
return Result.ok();
}
@ApiOperation(value = "货主结算单付款确认",notes = "<br>By:姜文业")
@GetMapping("/payeeConfirm")
@UnitCovert(param = false)
public Result payeeConfirm(@NotNull(message = "结算单号不能为空") String settlementNo) {
settlementOwnerService.payeeConfirm(settlementNo);
return Result.ok();
}
}
......@@ -2,8 +2,10 @@ package com.clx.performance.controller.pc.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result;
......@@ -33,5 +35,14 @@ public class CarrierSettlementOwnerDetailController {
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "货主结算单运单明细",notes = "<br>By:姜文业")
@PostMapping("/pageOwnerSettlementOrderDetailList")
@UnitCovert(param = false)
public Result<PageData<PageOwnerSettlementOwnerDetailVO>> pageOwnerSettlementOrderDetailList(@RequestBody @Validated PageOwnerSettlementOwnerDetailParam param) {
IPage<PageOwnerSettlementOwnerDetailVO> page = settlementOwnerDetailService.pageOwnerSettlementOrderDetailList(param);
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
}
package com.clx.performance.controller.temp;
import com.clx.performance.service.TempService;
import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
......@@ -19,6 +21,10 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping(value="/temp")
public class TempController {
@Autowired
private TempService tempService;
@ApiOperation(value = "test", notes = "<br>By:艾庆国")
@RequestMapping(value = "/test", method = RequestMethod.GET)
......@@ -26,4 +32,13 @@ public class TempController {
return Result.ok();
}
@ApiOperation(value = "更新网运标识", notes = "<br>By:艾庆国")
@RequestMapping(value = "/updateInvoiceType", method = RequestMethod.POST)
public Result<Void> updateInvoiceType(String childNo, Integer invoiceType) {
tempService.updateInvoiceType(childNo, invoiceType);
return Result.ok();
}
}
......@@ -7,6 +7,7 @@ import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.mapper.settle.SettlementDriverDetailMapper;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
......@@ -21,6 +22,31 @@ import java.util.Objects;
*/
@Repository
public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverDetailMapper, SettlementDriverDetail, Integer> implements SettlementDriverDetailDao {
@Override
public boolean updateInvoiceType(SettlementDriverDetail item) {
return update(lUdWrapper()
.eq(SettlementDriverDetail::getId, item.getId())
.set(SettlementDriverDetail::getInvoiceType, item.getInvoiceType())
);
}
@Override
public boolean updateSettlementNo(SettlementDriverDetail item) {
return update(lUdWrapper()
.eq(SettlementDriverDetail::getId, item.getId())
.set(SettlementDriverDetail::getSettlementNo, item.getSettlementNo())
);
}
@Override
public Optional<SettlementDriverDetail> getByChildNo(String childNo) {
return Optional.of(childNo)
.map(item -> lQrWrapper()
.eq(SettlementDriverDetail::getChildNo, item)
)
.map(super::getOne);
}
@Override
public IPage<SettlementDriverDetail> pageSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param) {
LambdaQueryWrapper<SettlementDriverDetail> query = new LambdaQueryWrapper<>();
......
......@@ -14,6 +14,7 @@ import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
......@@ -25,6 +26,29 @@ import java.util.Objects;
*/
@Repository
public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, SettlementOwner, Integer> implements SettlementOwnerDao {
@Override
public boolean updateSettlementPeriodMonth(SettlementOwner item) {
return update(lUdWrapper()
.eq(SettlementOwner::getId, item.getId())
.set(SettlementOwner::getWeight, item.getWeight())
.set(SettlementOwner::getFreight, item.getFreight())
.set(SettlementOwner::getLossFreight, item.getLossFreight())
.set(SettlementOwner::getSettlementFreight, item.getSettlementFreight())
.set(SettlementOwner::getInvoiceFreight, item.getInvoiceFreight())
.set(SettlementOwner::getPrepayFreight, item.getPrepayFreight())
);
}
@Override
public boolean updateLock(SettlementOwner item) {
return update(lUdWrapper()
.eq(SettlementOwner::getId, item.getId())
.eq(SettlementOwner::getStatus, SettlementOwnerEnum.Status.TO_BE_LOCKED.getCode())
.set(SettlementOwner::getStatus, item.getStatus())
);
}
@Override
public List<SettlementOwner> getMergeSettlementNos(String settlementNo) {
return super.list(lQrWrapper()
......@@ -94,4 +118,85 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
query.orderByDesc(SettlementOwner :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(),param.getPageSize()),query);
}
@Override
public Optional<SettlementOwner> selectUnlockOfSettlementPeriodMonth(String orderNo, LocalDateTime settlementPeriodTime, Integer invoiceType) {
return Optional.of(lQrWrapper()
.eq(SettlementOwner::getOrderNo, orderNo)
.eq(SettlementOwner::getSettlementPeriodType, SettlementOwnerEnum.SettlementPeriodType.MONTH.getCode())
.eq(SettlementOwner::getSettlementPeriodTime, settlementPeriodTime)
.eq(SettlementOwner::getInvoiceType, invoiceType)
.eq(SettlementOwner::getStatus, SettlementOwnerEnum.Status.TO_BE_LOCKED.getCode())
)
.map(super::getOne);
}
@Override
public Optional<SettlementOwner> selectUnlockOfSettlementPeriodImmediate(String orderNo, Integer invoiceType) {
return Optional.of(lQrWrapper()
.eq(SettlementOwner::getOrderNo, orderNo)
.eq(SettlementOwner::getSettlementPeriodType, SettlementOwnerEnum.SettlementPeriodType.IMMEDIATE.getCode())
.eq(SettlementOwner::getInvoiceType, invoiceType)
.eq(SettlementOwner::getStatus, SettlementOwnerEnum.Status.TO_BE_LOCKED.getCode())
)
.map(super::getOne);
}
@Override
public List<SettlementOwner> listToBeLockOfSettlementPeriodMonth(LocalDateTime settlementPeriodTime) {
return list(lQrWrapper()
.eq(SettlementOwner::getSettlementPeriodType, SettlementOwnerEnum.SettlementPeriodType.MONTH.getCode())
.lt(SettlementOwner::getSettlementPeriodTime, settlementPeriodTime)
.le(SettlementOwner::getStatus, SettlementOwnerEnum.Status.TO_BE_LOCKED.getCode())
);
}
@Override
public boolean uploadInvoiceImg(String settlementNo, String invoiceImg) {
return update(lUdWrapper()
.eq(SettlementOwner::getSettlementNo, settlementNo)
.set(SettlementOwner::getInvoiceImg, invoiceImg)
);
}
@Override
public boolean saveExpress(String settlementNo, String expressCompany, String expressNo){
return update(lUdWrapper()
.eq(SettlementOwner::getSettlementNo, settlementNo)
.set(SettlementOwner::getExpressCompany, expressCompany)
.set(SettlementOwner::getExpressNo, expressNo)
);
}
@Override
public boolean savePayee(String settlementNo,
String payee,
String payeeBankName,
String payeeBankCardNo,
String paymentImg,
String paymentBankCardNo,
String paymentBankName,
String paymentAmount){
return update(lUdWrapper()
.eq(SettlementOwner::getSettlementNo, settlementNo)
.set(SettlementOwner::getPayee, payee)
.set(SettlementOwner::getPayeeBankName, payeeBankName)
.set(SettlementOwner::getPayeeBankCardNo, payeeBankCardNo)
.set(SettlementOwner::getPaymentImg, paymentImg)
.set(SettlementOwner::getPaymentBankCardNo, paymentBankCardNo)
.set(SettlementOwner::getPaymentBankName, paymentBankName)
.set(SettlementOwner::getPaymentAmount, paymentAmount)
);
}
@Override
public boolean updateStatusByOrderNo(String orderNo, Integer settlementPeriodType,Integer fromStatus,Integer toStatus){
return update(lUdWrapper()
.eq(Objects.nonNull(orderNo),SettlementOwner::getOrderNo, orderNo)
.eq(SettlementOwner::getSettlementPeriodType, settlementPeriodType)
.eq(SettlementOwner::getStatus, fromStatus)
.set(SettlementOwner::getStatus, toStatus)
);
}
}
......@@ -4,15 +4,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.mapper.settle.SettlementOwnerDetailMapper;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Objects;
/**
......@@ -23,6 +26,38 @@ import java.util.Objects;
*/
@Repository
public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDetailMapper, SettlementOwnerDetail, Integer> implements SettlementOwnerDetailDao {
@Override
public boolean updateInvoiceType(SettlementOwnerDetail item) {
return update(lUdWrapper()
.eq(SettlementOwnerDetail::getId, item.getId())
.set(SettlementOwnerDetail::getInvoiceType, item.getInvoiceType())
.set(SettlementOwnerDetail::getPrepayFreight, item.getPrepayFreight())
);
}
@Override
public boolean updateSettlementNo(SettlementOwnerDetail item) {
return update(lUdWrapper()
.eq(SettlementOwnerDetail::getId, item.getId())
.set(SettlementOwnerDetail::getSettlementNo, item.getSettlementNo())
);
}
@Override
public Optional<SettlementOwnerDetail> getByChildNo(String childNo) {
return Optional.of(childNo)
.map(item -> lQrWrapper()
.eq(SettlementOwnerDetail::getChildNo, item)
)
.map(super::getOne);
}
@Override
public List<SettlementOwnerDetail> getBySettlementNo(String settlementNo) {
return list(lQrWrapper().eq(SettlementOwnerDetail::getSettlementNo, settlementNo));
}
@Override
public IPage<SettlementOwnerDetail> pageSettlementOwnerDetail(
PageCarrierSettlementOwnerDetailParam param) {
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.settle.SettlementDriverDetailMapper;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
/**
......@@ -13,5 +14,13 @@ import com.msl.common.dao.BaseDao;
* @Version: 1.0
*/
public interface SettlementDriverDetailDao extends BaseDao<SettlementDriverDetailMapper, SettlementDriverDetail, Integer> {
boolean updateInvoiceType(SettlementDriverDetail item);
boolean updateSettlementNo(SettlementDriverDetail item);
Optional<SettlementDriverDetail> getByChildNo(String childNo);
IPage<SettlementDriverDetail> pageSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param);
}
......@@ -9,10 +9,14 @@ import com.clx.performance.param.pc.owner.PageOwnerSettlementParam;
import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, SettlementOwner, Integer> {
boolean updateSettlementPeriodMonth(SettlementOwner item);
boolean updateLock(SettlementOwner item);
List<SettlementOwner> getMergeSettlementNos(@Param("settlementNo")String settlementNo);
......@@ -25,4 +29,33 @@ public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, Settl
Optional<SettlementOwner> selectBySettlementNo(@Param("settlementNo")String settlementNo);
IPage<SettlementOwner> pageSettlementOwner(Long userNo,PageOwnerSettlementParam param);
Optional<SettlementOwner> selectUnlockOfSettlementPeriodMonth(@Param("orderNo")String orderNo,
@Param("settlementPeriodTime") LocalDateTime settlementPeriodTime,
@Param("invoiceType")Integer invoiceType);
Optional<SettlementOwner> selectUnlockOfSettlementPeriodImmediate(@Param("orderNo")String orderNo,
@Param("invoiceType")Integer invoiceType);
List<SettlementOwner> listToBeLockOfSettlementPeriodMonth(@Param("settlementPeriodTime") LocalDateTime settlementPeriodTime);
boolean uploadInvoiceImg(@Param("settlementNo")String settlementNo, @Param("invoiceImg")String invoiceImg);
boolean saveExpress(@Param("settlementNo")String settlementNo, @Param("expressCompany")String expressCompany, @Param("expressNo")String expressNo);
boolean savePayee(@Param("settlementNo")String settlementNo,
@Param("payee")String payee,
@Param("payeeBankName")String payeeBankName,
@Param("payeeBankCardNo")String payeeBankCardNo,
@Param("paymentImg")String paymentImg,
@Param("paymentBankCardNo")String paymentBankCardNo,
@Param("paymentBankName")String paymentBankName,
@Param("paymentAmount")String paymentAmount);
boolean updateStatusByOrderNo(@Param("orderNo")String orderNo,
@Param("settlementPeriodType")Integer settlementPeriodType,
@Param("fromStatus")Integer fromStatus,
@Param("toStatus")Integer toStatus);
}
......@@ -5,9 +5,11 @@ import com.clx.performance.mapper.settle.SettlementOwnerDetailMapper;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import java.util.List;
/**
* @Author: aiqinguo
......@@ -17,6 +19,12 @@ import com.msl.common.dao.BaseDao;
*/
public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailMapper, SettlementOwnerDetail, Integer> {
boolean updateInvoiceType(SettlementOwnerDetail item);
boolean updateSettlementNo(SettlementOwnerDetail item);
Optional<SettlementOwnerDetail> getByChildNo(String childNo);
List<SettlementOwnerDetail> getBySettlementNo(String settlementNo);
IPage<SettlementOwnerDetail> pageOwnerSettlementOrderDetailList(PageOwnerSettlementOwnerDetailParam param);
IPage<SettlementOwnerDetail> pageSettlementOwnerDetail(PageCarrierSettlementOwnerDetailParam param);
......
package com.clx.performance.job;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.service.settle.SettlementOwnerService;
import com.msl.common.job.JobLog;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class SettlementOwnerMontnJob {
@Autowired
SettlementOwnerService settlementOwnerService;
/**
* 月结货主结算单状态变更为锁定
*/
@XxlJob("settlementOwnerMontnInit")
public void settlementOwnerMontnInit() {
try {
//所有月结的待锁定的货主结算单修改状态为锁定
settlementOwnerService.updateStatusByOrderNo(null,
SettlementOwnerEnum.SettlementPeriodType.MONTH.getCode(),
SettlementOwnerEnum.Status.TO_BE_LOCKED.getCode(),
SettlementOwnerEnum.Status.TO_BE_ACCOUNT.getCode());
} catch (Exception e) {
log.warn("月结货主结算单状态变更为锁定,异常原因:{}",e);
JobLog.error("月结货主结算单状态变更为锁定,异常原因=====================", e);
}
}
}
package com.clx.performance.listener.child;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyOrderChildConstants;
import com.clx.performance.service.OrderChildMqHandlerService;
import com.clx.performance.vo.mq.OrderChildAddMqParam;
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 16:34:40
* @Version: 1.0
*/
@Slf4j
@Component
public class OrderChildAddListener {
@Autowired
private OrderChildMqHandlerService orderChildMqHandlerService;
@RabbitListener(queues = RabbitKeyOrderChildConstants.ORDER_CHILD_ADD_QUEUE)
public void process(Message message) {
try{
log.info("运单-新增, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<OrderChildAddMqParam>>(){}).getData());
}catch (Exception e){
log.info("运单-新增 失败",e);
}
}
private void process(OrderChildAddMqParam mq){
orderChildMqHandlerService.orderChildAdd(mq);
}
}
package com.clx.performance.listener.child;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyOrderChildConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 运单 mq
* @Date: 2023-10-20 10:30:49
* @Version: 1.0
*/
@Slf4j
@Component
public class OrderChildDelayListener {
@Autowired
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitKeyOrderChildConstants.DEFAULT_DEAD_QUEUE)
public void process(Message message) {
try{
log.info("运单-延迟, message:{}", message);
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<MqDelay>>(){}).getData());
}catch (Exception e){
log.info("运单-延迟 失败",e);
}
}
void process(MqDelay mq){
Message message = MessageBuilder.withBody(JSON.toJSONString(mq.getData()).getBytes()).build();
rabbitTemplate.send(mq.getExchange(), mq.getRouterKey(), message);
}
}
package com.clx.performance.listener.child;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyOrderChildConstants;
import com.clx.performance.service.OrderChildMqHandlerService;
import com.clx.performance.vo.mq.OrderChildDriverConfirmMqParam;
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 17:39:27
* @Version: 1.0
*/
@Slf4j
@Component
public class OrderChildDriverConfirmListener {
@Autowired
private OrderChildMqHandlerService orderChildMqHandlerService;
@RabbitListener(queues = RabbitKeyOrderChildConstants.ORDER_CHILD_ADD_QUEUE)
public void process(Message message) {
try{
log.info("运单-司机确认收货, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<OrderChildDriverConfirmMqParam>>(){}).getData());
}catch (Exception e){
log.info("运单-司机确认收货 失败",e);
}
}
private void process(OrderChildDriverConfirmMqParam mq){
orderChildMqHandlerService.orderChildDriverConfirm(mq);
}
}
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 结算 mq
* @Date: 2023-10-20 16:14:30
* @Version: 1.0
*/
@Slf4j
@Component
public class SettlementDelayListener {
@Autowired
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitKeySettlementConstants.DEFAULT_DEAD_QUEUE)
public void process(Message message) {
try{
log.info("结算-延迟, message:{}", message);
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<MqDelay>>(){}).getData());
}catch (Exception e){
log.info("结算-延迟 失败",e);
}
}
void process(MqDelay mq){
Message message = MessageBuilder.withBody(JSON.toJSONString(mq.getData()).getBytes()).build();
rabbitTemplate.send(mq.getExchange(), mq.getRouterKey(), message);
}
}
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.SettlementDetailAddMqParam;
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 SettlementDetailAddListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_DETAIL_ADD_QUEUE)
public void process(Message message) {
try{
log.info("结算-计费明细新增, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementDetailAddMqParam>>(){}).getData());
}catch (Exception e){
log.info("结算-计费明细新增 失败",e);
}
}
private void process(SettlementDetailAddMqParam mq){
settlementMqHandlerService.settlementDetailAdd(mq);
}
}
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.SettlementDetailInvoiceTypeSyncMqParam;
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 SettlementInvoiceTypeSyncListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_QUEUE)
public void process(Message message) {
try{
log.info("结算-开票标识同步, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementDetailInvoiceTypeSyncMqParam>>(){}).getData());
}catch (Exception e){
log.info("结算-开票标识同步 失败",e);
}
}
private void process(SettlementDetailInvoiceTypeSyncMqParam mq){
settlementMqHandlerService.settlementDetailInvoiceTypeSync(mq);
}
}
......@@ -31,6 +31,8 @@ public class SettlementOwner implements HasKey<Integer> {
private String ownerName; //货主名称
private String settlementNo; //结算单编号
private String settlementSubNo; //结算子单号
private Integer settlementPeriodType; //结算周期类型:1拉运完成结 2月结
private LocalDateTime settlementPeriodTime; //结算周期时间(月结)
private String orderNo; //订单编号
private BigDecimal weight; //实际净重(吨)
private BigDecimal freight; //实际运费(分)
......@@ -47,6 +49,7 @@ public class SettlementOwner implements HasKey<Integer> {
private String paymentImg; //付款凭证
private String paymentBankName; //付款银行
private String paymentBankCardNo; //付款银行卡卡号
private String paymentAmount; //付款金额
private String companyName; //公司名称
private String companyTaxCode; //企业税号
private String companyAddress; //公司地址
......@@ -72,4 +75,4 @@ public class SettlementOwner implements HasKey<Integer> {
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
}
......@@ -34,6 +34,10 @@ public class SettlementOwnerDetail implements HasKey<Integer> {
private String childNo; //运单编号
private String orderGoodsNo; //货单编号
private String orderNo; //订单编号
private Integer sendAddressId; //发货地址id
private String sendAddress; //发货地址
private Integer receiveAddressId; //收货地址id
private String receiveAddress; //收货地址
private Integer goodsId; //货物id
private String goodsName; //货物名称
private BigDecimal freightPrice; //平台运费单价(分)
......
package com.clx.performance.service;
import com.clx.performance.vo.mq.OrderChildAddMqParam;
import com.clx.performance.vo.mq.OrderChildDriverConfirmMqParam;
public interface OrderChildMqHandlerService {
void orderChildAdd(OrderChildAddMqParam mq);
void orderChildDriverConfirm(OrderChildDriverConfirmMqParam mq);
}
package com.clx.performance.service;
public interface OrderChildMqService {
void orderChildAdd(String childNo);
void orderChildDriverConfirm(String childNo);
}
package com.clx.performance.service;
public interface TempService {
void updateInvoiceType(String childNo, Integer InvoiceType);
}
package com.clx.performance.service.impl;
import com.clx.performance.service.OrderChildMqHandlerService;
import com.clx.performance.vo.mq.OrderChildAddMqParam;
import com.clx.performance.vo.mq.OrderChildDriverConfirmMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class OrderChildMqHandlerServiceImpl implements OrderChildMqHandlerService {
@Override
public void orderChildAdd(OrderChildAddMqParam mq) {
}
@Override
public void orderChildDriverConfirm(OrderChildDriverConfirmMqParam mq) {
}
}
package com.clx.performance.service.impl;
import com.alibaba.fastjson.JSON;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeyOrderChildConstants;
import com.clx.performance.service.OrderChildMqService;
import com.clx.performance.vo.mq.OrderChildAddMqParam;
import com.clx.performance.vo.mq.OrderChildDriverConfirmMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class OrderChildMqServiceImpl implements OrderChildMqService {
@Autowired
private RabbitTemplate rabbitTemplate;
@Override
public void orderChildAdd(String childNo) {
OrderChildAddMqParam mq = new OrderChildAddMqParam();
mq.setChildNo(childNo);
MqDelay<MqWrapper<OrderChildAddMqParam>> delay = new MqDelay<>(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.ORDER_CHILD_ADD_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void orderChildDriverConfirm(String childNo) {
OrderChildDriverConfirmMqParam mq = new OrderChildDriverConfirmMqParam();
mq.setChildNo(childNo);
MqDelay<MqWrapper<OrderChildDriverConfirmMqParam>> delay = new MqDelay<>(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.ORDER_CHILD_DRIVER_CONFIRM_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeyOrderChildConstants.DEFAULT_EXCHANGE, RabbitKeyOrderChildConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
}
......@@ -20,6 +20,10 @@ import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildPoundLogService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.*;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.struct.*;
import com.clx.performance.utils.spring.ApplicationContextUtils;
import com.clx.performance.vo.app.*;
......@@ -91,6 +95,11 @@ public class OrderChildServiceImpl implements OrderChildService {
private final OrderFeign orderFeign;
private final RedissonClient redissonClient;
private final SettlementDriverDetailService settlementDriverDetailService;
private final SettlementOwnerDetailService settlementOwnerDetailService;
private final SettlementMqService settlementMqService;
private final OrderChildMqService orderChildMqService;
@Override
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
......@@ -155,6 +164,7 @@ public class OrderChildServiceImpl implements OrderChildService {
String childNo = childNoGenerate();
// 查询司机车辆信息
DriverTruckInfoFeignVo driverTruckInfo = driverService.getUserDetailInfo(param.getDriverUserNo(), param.getTruckId()).orElseThrow(ResultCodeEnum.FAIL);
BigDecimal truckLoad = driverTruckInfo.getLoad();
......@@ -168,6 +178,9 @@ public class OrderChildServiceImpl implements OrderChildService {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_INVALID1);
}
FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderGoods.getOrderNo()).orElseThrow(PerformanceResultEnum.ORDER_INVALID);
// // 车型限制
// FeignOrderInfoVO orderInfo = orderService.getOrderInfo(orderGoods.getOrderNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// if (StringUtils.isNotBlank(orderInfo.getTruckModelList())){
......@@ -206,7 +219,7 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
orderChild.setFreightPrice(orderGoods.getPendingOrderFreight());
orderChild.setLossPrice(orderGoods.getLossPrice());
orderChild.setOrderFreightPrice(BigDecimal.ZERO);
orderChild.setOrderFreightPrice(orderInfo.getValidFreightPrice());
orderChild.setGoodsId(orderGoods.getGoodsId());
orderChild.setGoodsName(orderGoods.getGoodsName());
......@@ -246,6 +259,9 @@ public class OrderChildServiceImpl implements OrderChildService {
// 更新出车状态
updateDriverOrderStatusLock(orderChild.getDriverUserNo(), orderChild.getTruckId());
// 发送mq 新增运单
orderChildMqService.orderChildAdd(orderChild.getChildNo());
// 新增日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.CREATED.getCode(), OrderChildLogEnum.Type.CREATED.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
......@@ -810,6 +826,12 @@ public class OrderChildServiceImpl implements OrderChildService {
// 更新车辆状态
updateDriverOrderStatusDriverConfirm(orderChild.getTruckId());
// 生成计费单
saveSettlementDetail(orderChild);
// 发送mq 司机确认收货
orderChildMqService.orderChildDriverConfirm(orderChild.getChildNo());
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(), OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
......@@ -926,6 +948,19 @@ public class OrderChildServiceImpl implements OrderChildService {
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
}
/**
* 生成计费单
*/
private void saveSettlementDetail(OrderChild orderChild){
Integer settlementDriverDetailId = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild);
settlementMqService.settlementDetailAdd(settlementDriverDetailId, settlementOwnerDetailId);
}
@Override
public OrderChildVO getOrderChildInfo(String childNo) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
......
package com.clx.performance.service.impl;
import com.clx.performance.service.TempService;
import com.clx.performance.service.settle.SettlementService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class TempServiceImpl implements TempService {
@Autowired
private SettlementService settlementService;
@Override
public void updateInvoiceType(String childNo, Integer invoiceType) {
settlementService.updateSettlementDetailInvoiceType(childNo, invoiceType);
}
}
package com.clx.performance.service.impl.settle;
import com.clx.performance.dao.settle.SettlementOwnerDao;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.settle.CarrierSettlementOwnerService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@Slf4j
@Service
@AllArgsConstructor
public class CarrierSettlementOwnerServiceImpl implements CarrierSettlementOwnerService {
private final SettlementOwnerDao settlementOwnerDao;
@Override
public void saveSettlement(SettlementOwnerDetail settlementDetail) {
SettlementOwner settlementOwner = new SettlementOwner();
settlementOwner.setSettlementNo("");
settlementOwner.setOwnerUserNo(settlementDetail.getOwnerUserNo());
settlementOwner.setOwnerName(settlementDetail.getOwnerName());
settlementOwner.setOrderNo(settlementDetail.getOrderNo());
settlementOwner.setWeight(BigDecimal.ZERO);
settlementOwner.setFreight(BigDecimal.ZERO);
settlementOwner.setLossFreight(BigDecimal.ZERO);
settlementOwner.setSettlementFreight(BigDecimal.ZERO);
settlementOwner.setInvoiceType(settlementDetail.getInvoiceType());
settlementOwner.setInvoiceFreight(BigDecimal.ZERO);
settlementOwner.setPrepayFreight(BigDecimal.ZERO);
settlementOwnerDao.saveEntity(settlementOwner);
}
}
......@@ -3,6 +3,7 @@ package com.clx.performance.service.impl.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
import com.clx.performance.service.settle.SettlementDriverDetailService;
......@@ -12,6 +13,8 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
/**
......@@ -27,6 +30,83 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
private final SettlementDriverDetailDao settlementDriverDetailDao;
private final SettlementDriverDetailStruct settlementOwnerDetailStruct;
@Override
public Integer saveSettlementDetail(OrderChild orderChild) {
SettlementDriverDetail settlementDriverDetail = new SettlementDriverDetail();
settlementDriverDetail.setChildNo(orderChild.getChildNo());
settlementDriverDetail.setOrderGoodsNo(orderChild.getOrderGoodsNo());
settlementDriverDetail.setOrderNo(orderChild.getOrderNo());
settlementDriverDetail.setDriverUserNo(orderChild.getTruckOwnUserNo());
settlementDriverDetail.setDriverName(orderChild.getOwnerName());
settlementDriverDetail.setTruckNo(orderChild.getTruckNo());
settlementDriverDetail.setGoodsId(orderChild.getGoodsId());
settlementDriverDetail.setGoodsName(orderChild.getGoodsName());
// 运费
settlementDriverDetail.setFreightPrice(orderChild.getFreightPrice()); //平台运费
settlementDriverDetail.setWeight(weightCalc(orderChild.getLoadNet(), orderChild.getUnloadNet()));
settlementDriverDetail.setFreight(freightCalc(settlementDriverDetail.getFreightPrice(), settlementDriverDetail.getWeight()));
// 亏吨
settlementDriverDetail.setLossPrice(orderChild.getLossPrice());
settlementDriverDetail.setLossWeight(lossWeightCalc(orderChild.getLoadNet(), orderChild.getUnloadNet()));
settlementDriverDetail.setLossFreight(lossFreightCalc(settlementDriverDetail.getLossPrice(), settlementDriverDetail.getLossWeight()));
// 预付运费
settlementDriverDetail.setPrepayFreight(BigDecimal.ZERO);
// 结算金额
settlementDriverDetail.setSettlementFreight(settlementFreightCalc(settlementDriverDetail.getFreight(), settlementDriverDetail.getLossFreight()));
settlementDriverDetailDao.saveEntity(settlementDriverDetail);
return settlementDriverDetail.getId();
}
private BigDecimal weightCalc(BigDecimal loadNet, BigDecimal unLoadNet){
return unLoadNet.compareTo(loadNet) < 0? unLoadNet : loadNet;
}
/**
* 运费计算
*/
public BigDecimal freightCalc(BigDecimal freightPrice, BigDecimal weight){
return freightPrice.multiply(weight).setScale(0, RoundingMode.HALF_UP);
}
/**
* 亏吨计算
*/
private BigDecimal lossWeightCalc(BigDecimal loadNet, BigDecimal unLoadNet){
return unLoadNet.compareTo(loadNet) < 0? unLoadNet.subtract(loadNet) : BigDecimal.ZERO;
}
/**
* 亏吨运费
*/
private BigDecimal lossFreightCalc(BigDecimal freightPrice, BigDecimal weight){
return freightPrice.multiply(weight).setScale(0, RoundingMode.HALF_UP);
}
/**
* 开票金额
*/
private BigDecimal invoiceFreightCalc(BigDecimal freight, BigDecimal lossFreight){
return freight.subtract(lossFreight);
}
/**
* 结算金额
*/
private BigDecimal settlementFreightCalc(BigDecimal freight, BigDecimal lossFreight){
return freight.subtract(lossFreight);
}
@Override
public IPage<CarrierPageSettlementDriverDetailVO> pageSettlementDriverDetail(
......
package com.clx.performance.service.impl.settle;
import com.alibaba.fastjson.JSON;
import com.clx.performance.common.MqDelay;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.vo.mq.SettlementDetailAddMqParam;
import com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class SettlementMqServiceImpl implements SettlementMqService {
@Autowired
private RabbitTemplate rabbitTemplate;
@Override
public void settlementDetailAdd(Integer settlementDriverDetailId, Integer settlementOwnerDetailId) {
SettlementDetailAddMqParam mq = new SettlementDetailAddMqParam();
mq.setSettlementDriverDetailId(settlementDriverDetailId);
mq.setSettlementOwnerDetailId(settlementOwnerDetailId);
MqDelay<MqWrapper<SettlementDetailAddMqParam>> delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE, RabbitKeySettlementConstants.SETTLEMENT_DETAIL_ADD_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);
}
@Override
public void invoiceTypeSync(String childNo, Integer invoiceType) {
SettlementDetailInvoiceTypeSyncMqParam mq = new SettlementDetailInvoiceTypeSyncMqParam();
mq.setChildNo(childNo);
mq.setInvoiceType(invoiceType);
MqDelay<MqWrapper<SettlementDetailInvoiceTypeSyncMqParam>> delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE, RabbitKeySettlementConstants.SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_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);
}
}
......@@ -3,6 +3,7 @@ package com.clx.performance.service.impl.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
......@@ -19,6 +20,8 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
......@@ -35,6 +38,94 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final SettlementOwnerDetailStruct settlementOwnerDetailStruct;
@Override
public Integer saveSettlementDetail(OrderChild orderChild) {
SettlementOwnerDetail settlementOwnerDetail = new SettlementOwnerDetail();
settlementOwnerDetail.setChildNo(orderChild.getChildNo());
settlementOwnerDetail.setOrderGoodsNo(orderChild.getOrderGoodsNo());
settlementOwnerDetail.setOrderNo(orderChild.getOrderNo());
settlementOwnerDetail.setOwnerUserNo(orderChild.getOwnerUserNo());
settlementOwnerDetail.setOwnerName(orderChild.getOwnerName());
settlementOwnerDetail.setSendAddressId(orderChild.getSendAddressId());
settlementOwnerDetail.setSendAddress(orderChild.getSendAddress());
settlementOwnerDetail.setReceiveAddressId(orderChild.getReceiveAddressId());
settlementOwnerDetail.setReceiveAddress(orderChild.getReceiveAddress());
settlementOwnerDetail.setGoodsId(orderChild.getGoodsId());
settlementOwnerDetail.setGoodsName(orderChild.getGoodsName());
// 运费
settlementOwnerDetail.setFreightPrice(orderChild.getOrderFreightPrice()); //平台运费
settlementOwnerDetail.setWeight(weightCalc(orderChild.getLoadNet(), orderChild.getUnloadNet()));
settlementOwnerDetail.setFreight(freightCalc(settlementOwnerDetail.getFreightPrice(), settlementOwnerDetail.getWeight()));
// 亏吨
settlementOwnerDetail.setLossPrice(orderChild.getLossPrice());
settlementOwnerDetail.setLossWeight(lossWeightCalc(orderChild.getLoadNet(), orderChild.getUnloadNet()));
settlementOwnerDetail.setLossFreight(lossFreightCalc(settlementOwnerDetail.getLossPrice(), settlementOwnerDetail.getLossWeight()));
// 预付运费
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
// 开票金额
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(settlementOwnerDetail.getFreight(), settlementOwnerDetail.getLossFreight()));
// 结算金额
settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(settlementOwnerDetail.getFreight(), settlementOwnerDetail.getLossFreight()));
settlementOwnerDetailDao.saveEntity(settlementOwnerDetail);
return settlementOwnerDetail.getId();
}
/**
* 吨数计算
*/
private BigDecimal weightCalc(BigDecimal loadNet, BigDecimal unLoadNet){
return unLoadNet.compareTo(loadNet) < 0? unLoadNet : loadNet;
}
/**
* 运费计算
*/
public BigDecimal freightCalc(BigDecimal freightPrice, BigDecimal weight){
return freightPrice.multiply(weight).setScale(0, RoundingMode.HALF_UP);
}
/**
* 亏吨计算
*/
private BigDecimal lossWeightCalc(BigDecimal loadNet, BigDecimal unLoadNet){
return unLoadNet.compareTo(loadNet) < 0? unLoadNet.subtract(loadNet) : BigDecimal.ZERO;
}
/**
* 亏吨运费
*/
private BigDecimal lossFreightCalc(BigDecimal freightPrice, BigDecimal weight){
return freightPrice.multiply(weight).setScale(0, RoundingMode.HALF_UP);
}
/**
* 开票金额
*/
private BigDecimal invoiceFreightCalc(BigDecimal freight, BigDecimal lossFreight){
return freight.subtract(lossFreight);
}
/**
* 结算金额
*/
private BigDecimal settlementFreightCalc(BigDecimal freight, BigDecimal lossFreight){
return freight.subtract(lossFreight);
}
@Override
public IPage<CarrierPageSettlementOwnerDetailVO> pageSettlementOwnerDetail(
PageCarrierSettlementOwnerDetailParam param) {
......
......@@ -12,9 +12,7 @@ import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.model.settle.SettlementLog;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementPlatformAccount;
import com.clx.performance.param.pc.owner.OwnerPaymentSettlementParam;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementParam;
import com.clx.performance.param.pc.owner.*;
import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.service.settle.SettlementLogService;
import com.clx.performance.service.settle.SettlementOwnerService;
......@@ -292,5 +290,46 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
CarrierSettlementOwnerExpressVO detail = settlementOwnerStruct.convertToExpress(settlementOwner);
return detail;
}
@Override
public void uploadInvoiceImg(UploadInvoiceImgParam param){
settlementOwnerDao.uploadInvoiceImg(param.getSettlementNo(),param.getInvoiceImg());
settlementOwnerDao.updateStatusBySettlementNo(param.getSettlementNo()
,SettlementOwnerEnum.Status.OWNER_TO_BE_CONFIRMED.getCode());
}
@Override
public void saveExpress(SaveExpressParam param){
settlementOwnerDao.saveExpress(param.getSettlementNo(),param.getExpressCompany(),param.getExpressNo());
settlementOwnerDao.updateStatusBySettlementNo(param.getSettlementNo()
,SettlementOwnerEnum.Status.COMPLETED.getCode());
}
@Override
public void savePayee(SavePayeeParam param){
settlementOwnerDao.savePayee(param.getSettlementNo(),
param.getPayee(),
param.getPayeeBankName(),
param.getPayeeBankCardNo(),
param.getPaymentImg(),
param.getPaymentBankCardNo(),
param.getPaymentBankName(),
param.getPaymentAmount());
settlementOwnerDao.updateStatusBySettlementNo(param.getSettlementNo()
,SettlementOwnerEnum.Status.PLATFORM_CONFIRMED_OWNER_PAYMENT.getCode());
}
@Override
public void updateStatusByOrderNo(String orderNo, Integer settlementPeriodType, Integer fromStatus, Integer toStatus){
settlementOwnerDao.updateStatusByOrderNo( orderNo, settlementPeriodType, fromStatus, toStatus);
}
@Override
public void payeeConfirm(String settlementNo){
settlementOwnerDao.updateStatusBySettlementNo(settlementNo,SettlementOwnerEnum.Status.PLATFORM_TO_PAYMENT.getCode());
}
}
package com.clx.performance.service.impl.settle;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.service.settle.SettlementService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Objects;
@Slf4j
@Service
public class SettlementServiceImpl implements SettlementService {
@Autowired
private OrderChildDao orderChildDao;
@Autowired
private SettlementOwnerDetailDao settlementOwnerDetailDao;
@Autowired
private SettlementDriverDetailDao settlementDriverDetailDao;
@Autowired
private SettlementMqService settlementMqService;
@Override
@Transactional(rollbackFor = Exception.class)
public void updateSettlementDetailInvoiceType(String childNo, Integer invoiceType) {
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (settlementOwnerDetail.getInvoiceType() != null) {return;}
// 结算金额<0走普通单
if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) < 0){
invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode();
}
settlementOwnerDetail.setInvoiceType(invoiceType);
settlementDriverDetail.setInvoiceType(invoiceType);
// 网运单更新预付运费
if (Objects.equals(settlementOwnerDetail.getInvoiceType(), SettlementOwnerEnum.InvoiceType.ONLINE.getCode())) {
settlementOwnerDetail.setPrepayFreight(updatePrepayFreightPay(settlementOwnerDetail.getChildNo(),
settlementOwnerDetail.getFreight(), settlementOwnerDetail.getLossFreight()));
}
settlementOwnerDetailDao.updateInvoiceType(settlementOwnerDetail);
settlementDriverDetailDao.updateInvoiceType(settlementDriverDetail);
// 发送mq 通过开票标识
settlementMqService.invoiceTypeSync(childNo, invoiceType);
}
/**
* 预付运费支付
*/
private BigDecimal updatePrepayFreightPay(String childNo, BigDecimal freight, BigDecimal lossFreight){
BigDecimal prepayFreight = freight.subtract(lossFreight);
if (prepayFreight.compareTo(BigDecimal.ZERO) <= 0) {return BigDecimal.ZERO;}
//扣减预付运费
return prepayFreight;
}
}
package com.clx.performance.service.settle;
import com.clx.performance.model.settle.SettlementOwnerDetail;
public interface CarrierSettlementOwnerService {
void saveSettlement(SettlementOwnerDetail settlementDetail);
}
package com.clx.performance.service.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetailVO;
......@@ -10,5 +11,8 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetai
* Time 09:43
*/
public interface SettlementDriverDetailService {
Integer saveSettlementDetail(OrderChild orderChild);
IPage<CarrierPageSettlementDriverDetailVO> pageSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param);
}
package com.clx.performance.service.settle;
import com.clx.performance.vo.mq.SettlementDetailAddMqParam;
import com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam;
public interface SettlementMqHandlerService {
void settlementDetailAdd(SettlementDetailAddMqParam mq);
void settlementDetailInvoiceTypeSync(SettlementDetailInvoiceTypeSyncMqParam mq);
}
package com.clx.performance.service.settle;
public interface SettlementMqService {
void settlementDetailAdd(Integer settlementOwnerDetailId, Integer settlementDriverDetailId);
void invoiceTypeSync(String childNo, Integer invoiceType);
}
......@@ -2,11 +2,10 @@ package com.clx.performance.service.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementParam;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.OwnerPageSettlementOwnerVO;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
......@@ -17,6 +16,8 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
*/
public interface SettlementOwnerDetailService {
Integer saveSettlementDetail(OrderChild orderChild);
IPage<PageOwnerSettlementOwnerDetailVO> pageOwnerSettlementOrderDetailList(PageOwnerSettlementOwnerDetailParam param);
IPage<CarrierPageSettlementOwnerDetailVO> pageSettlementOwnerDetail(PageCarrierSettlementOwnerDetailParam param);
......
package com.clx.performance.service.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.owner.OwnerPaymentSettlementParam;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementParam;
import com.clx.performance.param.pc.owner.*;
import com.clx.performance.vo.pc.carrier.settle.*;
import com.clx.performance.vo.pc.owner.settle.OwnerPageSettlementOwnerVO;
import com.clx.performance.vo.pc.owner.settle.SettlementPlatformAccountVO;
......@@ -42,5 +40,15 @@ public interface SettlementOwnerService {
CarrierSettlementOwnerExpressVO getCarrierSettlementOwnerExpress(Integer id);
void uploadInvoiceImg(UploadInvoiceImgParam param);
void saveExpress(SaveExpressParam param);
void savePayee(SavePayeeParam param);
void updateStatusByOrderNo(String orderNo, Integer settlementPeriodType, Integer fromStatus, Integer toStatus);
void payeeConfirm(String settlementNo);
}
package com.clx.performance.service.settle;
public interface SettlementService {
void updateSettlementDetailInvoiceType(String childNo, Integer invoiceType);
}
package com.clx.performance.utils;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.job.JobLog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
import java.util.function.Consumer;
/**
* @Author: aiqingguo
* @Description:
* @Date: 2023-10-12 19:38:41
* @Version: 1.0
*/
@Component
public class JobHandlerService {
protected Logger logger = LoggerFactory.getLogger(this.getClass());
public <T> void handler(String title, Runnable target) {
handler(title, null, target);
}
public <T> void handler(String title, T data, Runnable target) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
logger.info("{}, 主任务开始, data:{}", title, data);
try {
target.run();
}catch (ServiceSystemException e){
logger.info("{}, 主任务执行失败, data:{}, error:{}, detail:{}", title, data, e.getResultEnum().getMsg(), e.getDetail());
JobLog.error(title + "定时任务处理失败", e);
}catch (Exception e){
logger.error("{}, 主任务执行异常, data:{}, error:{}", title, data, e.getMessage());
JobLog.error(title + "定时任务处理失败", e);
}
stopWatch.stop();
logger.info("{}, 主任务结束, data:{}, duration:{}", title, data, stopWatch.getTotalTimeMillis());
}
public <T> void subHandler(String title, T data, Consumer<T> target) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
logger.info("{}, 子任务开始, data:{}", title, data);
try {
target.accept(data);
}catch (ServiceSystemException e){
logger.info("{}, 子任务执行失败, data:{}, error:{}, detail:{}", title, data, e.getResultEnum().getMsg(), e.getDetail());
JobLog.error(title + "定时任务处理失败", e);
}catch (Exception e){
logger.error("{}, 子任务执行异常, data:{}, error:{}", title, data, e.getMessage());
JobLog.error(title + "定时任务处理失败", e);
}
stopWatch.stop();
logger.info("{}, 子任务结束, data:{}, duration:{}", title, data, stopWatch.getTotalTimeMillis());
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论