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

Merge branch 'v1.0_init_contract_20240306' into release

......@@ -18,7 +18,7 @@ public interface PerformanceSDKFeign {
@PostMapping(value = {"clx-performance/feign/sdk/ownCancelOrderPre"})
Result<String> ownCancelOrderPre(@RequestBody OrderCancelParam param);
Result<Integer> ownCancelOrderPre(@RequestBody OrderCancelParam param);
@GetMapping(value = {"clx-performance/feign/sdk/orderCancelResidueWeight"})
......
package com.clx.performance.feign;
import com.clx.open.sdk.request.action.BreakContractSettlementGenerateAction;
import com.msl.common.result.Result;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = "clx-performance",configuration = PerformanceClientConfiguration.class)
......@@ -14,4 +17,8 @@ public interface SettlementFeign {
@GetMapping("clx-performance/feign/settlement/thawAndLockSettlement")
Result<Boolean> thawAndLockSettlement(@RequestParam String orderNo);
@ApiOperation(value = "确认或驳回违约")
@PostMapping("clx-performance/feign/breakContract/updateBreakContract")
Result updateBreakContract(@RequestBody @Validated BreakContractSettlementGenerateAction action);
}
......@@ -11,6 +11,7 @@ import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.OrderCancelDTO;
import com.clx.performance.dto.OrderCancelResult;
import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.DriverService;
......@@ -89,7 +90,7 @@ public class OrderCancelComponent implements InitializingBean {
* @param param
* @return
*/
public List<String> ownerProcess(OrderCancelParam param) {
public OrderCancelDTO ownerProcess(OrderCancelParam param) {
String orderNo = param.getOrderNo();
Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode();
......@@ -109,7 +110,8 @@ public class OrderCancelComponent implements InitializingBean {
orderChildPostService.orderCancel(childNo);
}
}
return childNoList;
return OrderCancelDTO.builder().status(orderStatusCode)
.childNoList(childNoList).build();
}
......
......@@ -97,4 +97,14 @@ public class RabbitKeyConstants {
public static final String OWNER_REPAYMENT_QUEUE ="clx-performance.owner.repayment.queue";
public static final String OWNER_REPAYMENT_ROUTE_KEY ="clx-performance.owner.repayment.route.key";
//承运违约结算单同步货主客户端 需要手动创建对列交换机
public static final String CLX_PERFORMANCE_BREAK_CONTRACT_OWNER_RECORD_QUEUE = "clx_performance.break_contract_owner_record_queue";
//承运货主计费数据同步货主客户端 需要手动创建对列交换机
public static final String CLX_PERFORMANCE_SETTLEMENT_OWNER_DETAIL_QUEUE = "clx_performance.settlement_owner_detail_queue";
//货主结算单数据同步货主客户端 需要手动创建对列交换机
public static final String CLX_PERFORMANCE_SETTLEMENT_OWNER_QUEUE = "clx_performance.settlement_owner_queue";
}
package com.clx.performance.controller.feign;
import com.clx.open.sdk.request.action.BreakContractSettlementGenerateAction;
import com.clx.performance.param.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.param.pc.owner.OwnerConfirmBreakContractSettlementParam;
import com.clx.performance.service.breakcontract.BreakContractOwnerRecordService;
import com.clx.performance.service.breakcontract.BreakContractOwnerRuleService;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractOwnerRuleVO;
......@@ -25,6 +28,10 @@ public class BreakContractSettlementOwnerFeignController {
private final BreakContractOwnerRuleService breakContractOwnerRuleService;
private final BreakContractOwnerRecordService breakContractOwnerRecordService;
@ApiOperation(value = "货主订单吨数下调自动保存违约结算单")
@PostMapping("/saveSettlementOwnerForTonnageDown")
......@@ -39,4 +46,15 @@ public class BreakContractSettlementOwnerFeignController {
return Result.ok(breakContractOwnerRuleService.getRuleInfo(id));
}
@ApiOperation(value = "货主客户端货主确认生成违约结算单")
@PostMapping("/updateBreakContract")
Result updateBreakContract(@RequestBody @Validated BreakContractSettlementGenerateAction param){
OwnerConfirmBreakContractSettlementParam settlementParam = new OwnerConfirmBreakContractSettlementParam();
settlementParam.setConfirmStatus(param.getConfirmStatus());
settlementParam.setId(param.getBreakContractId());
settlementParam.setRejectReason(param.getRejectReason());
breakContractOwnerRecordService.updateConfirmStatus(settlementParam);
return Result.ok();
}
}
......@@ -41,10 +41,9 @@ public class PerformanceSdkFeignController {
@ApiOperation(value = "货主端取消订单", notes = "<br>By:胡宇帆")
@PostMapping("/ownCancelOrderPre")
public Result<Object> ownCancelOrderPre(@RequestBody OrderCancelParam param) {
log.info("取消订单参数:{}", TokenUtil.getLoginUserInfo());
orderCancelService.ownerCancelOrderPre(param);
return Result.ok();
public Result<Integer> ownCancelOrderPre(@RequestBody OrderCancelParam param) {
log.info("取消订单参数:{}", param);
return Result.ok(orderCancelService.ownerCancelOrderPre(param));
}
@ApiOperation(value = "获取当前订单可取消吨数", notes = "<br>By:胡宇帆")
......
......@@ -39,6 +39,7 @@ public class BreakContractOwnerRecordDaoImpl extends BaseDaoImpl<BreakContractOw
LambdaQueryWrapper<BreakContractOwnerRecord> query = new LambdaQueryWrapper<>();
query.eq(StringUtils.isNotBlank(param.getOrderNo()),BreakContractOwnerRecord :: getOrderNo,param.getOrderNo());
query.eq(Objects.nonNull(param.getOwnerUserNo()),BreakContractOwnerRecord :: getOwnerUserNo,param.getOwnerUserNo());
query.notIn(Objects.nonNull(param.getOwnerUserNo()),BreakContractOwnerRecord :: getOrderSource,3);
query.eq(Objects.nonNull(param.getBreakContractPartyType()),BreakContractOwnerRecord :: getBreakContractPartyType,param.getBreakContractPartyType());
query.eq(Objects.nonNull(param.getPayStatus()),BreakContractOwnerRecord :: getPayStatus,param.getPayStatus());
if(Objects.equals(param.getBreakContractPartyType(), BreakContractSettlementDriverEnum.BreakContractPartyType.PLATFORM.getCode())){
......
package com.clx.performance.dto;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class OrderCancelDTO {
private Integer status;
private List<String> childNoList;
}
package com.clx.performance.listener.breakcontract;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.BreakContractOwnerRecordMessage;
import com.clx.order.enums.SyncPlatformEnum;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum;
import com.msl.common.result.Result;
import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.Objects;
@Slf4j
@Component
@AllArgsConstructor
public class BreakContractOwnerRecordDtsListener {
private final ThirdAppConfig thirdAppConfig;
@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_BREAK_CONTRACT_OWNER_RECORD_QUEUE)
public void onMessage(Message message) {
try {
String msg = new String(message.getBody());
log.info("DTS消息同步开始, database:clx_performance.break_contract_owner_record, msg:{}", msg);
DataTransportDTO dataTransportDTO = JSON.parseObject(msg, DataTransportDTO.class);
log.info("DTS消息同步开始, database:clx_performance.break_contract_owner_record, 实体:{}", dataTransportDTO);
log.info("操作类型:{}",dataTransportDTO.getOperationType().getCode());
BreakContractOwnerRecordMessage before = DtsMapConvertUtil.convert(dataTransportDTO.getBeforeMap(), new BreakContractOwnerRecordMessage());
BreakContractOwnerRecordMessage after = DtsMapConvertUtil.convert(dataTransportDTO.getAfterMap(), new BreakContractOwnerRecordMessage());
if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){
//数据删除
log.info("删除:{}",before);
return;
}
//违约结算单数据同步
thirdpartySync(after);
} catch (Exception e) {
log.info("DTS消息同步失败, database:clx_performance.break_contract_owner_record, error:{}", e.getMessage());
}
}
/**
* 第三方同步
*/
public void thirdpartySync(BreakContractOwnerRecordMessage message){
// 同步货主客户端的违约结算单
if(!Objects.equals(message.getOrderSource(), SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode())){
return;
}
try{
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode().toString());
log.info("违约结算单同步:{}", message.getId());
Result<?> result = openCallBackClient.encryptPost(JSON.toJSONString(message), message.topic());
if (result.succeed()) {
log.info("违约结算单同步成功:{}", message.getId());
}else{
log.info("违约结算单同步失败:{}", message.getId());
}
}catch (Exception e){
}
}
}
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.SettlementOwnerDetailMessage;
import com.clx.order.enums.SyncPlatformEnum;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum;
import com.msl.common.result.Result;
import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.Objects;
@Slf4j
@Component
@AllArgsConstructor
public class SettlementOwnerDetailDtsListener {
private final ThirdAppConfig thirdAppConfig;
@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_SETTLEMENT_OWNER_DETAIL_QUEUE)
public void onMessage(Message message) {
try {
String msg = new String(message.getBody());
log.info("DTS消息同步开始, database:clx_performance.settlement_owner_detail, msg:{}", msg);
DataTransportDTO dataTransportDTO = JSON.parseObject(msg, DataTransportDTO.class);
log.info("DTS消息同步开始, database:clx_performance.settlement_owner_detail, 实体:{}", dataTransportDTO);
log.info("操作类型:{}",dataTransportDTO.getOperationType().getCode());
SettlementOwnerDetailMessage before = DtsMapConvertUtil.convert(dataTransportDTO.getBeforeMap(), new SettlementOwnerDetailMessage());
SettlementOwnerDetailMessage after = DtsMapConvertUtil.convert(dataTransportDTO.getAfterMap(), new SettlementOwnerDetailMessage());
if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){
//数据删除
log.info("删除:{}",before);
return;
}
//违约结算单数据同步
thirdpartySync(after);
} catch (Exception e) {
log.info("DTS消息同步失败, database:clx_performance.settlement_owner_detail, error:{}", e.getMessage());
}
}
/**
* 第三方同步
*/
public void thirdpartySync(SettlementOwnerDetailMessage message){
try{
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode().toString());
log.info("货主运单计费同步:{}", message.getId());
Result<?> result = openCallBackClient.encryptPost(JSON.toJSONString(message), message.topic());
if (result.succeed()) {
log.info("货主运单计费同步成功:{}", message.getId());
}else{
log.info("货主运单计费同步失败:{}", message.getId());
}
}catch (Exception e){
}
}
}
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.SettlementOwnerBillMessage;
import com.clx.order.enums.SyncPlatformEnum;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.msl.common.result.Result;
import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j
@Component
@AllArgsConstructor
public class SettlementOwnerDtsListener {
private final ThirdAppConfig thirdAppConfig;
private final SettlementOwnerDetailDao settlementOwnerDetailDao;
@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_SETTLEMENT_OWNER_QUEUE)
public void onMessage(Message message) {
try {
String msg = new String(message.getBody());
log.info("DTS消息同步开始, database:clx_performance.settlement_owner, msg:{}", msg);
DataTransportDTO dataTransportDTO = JSON.parseObject(msg, DataTransportDTO.class);
log.info("DTS消息同步开始, database:clx_performance.settlement_owner, 实体:{}", dataTransportDTO);
log.info("操作类型:{}",dataTransportDTO.getOperationType().getCode());
SettlementOwnerBillMessage before = DtsMapConvertUtil.convert(dataTransportDTO.getBeforeMap(), new SettlementOwnerBillMessage());
SettlementOwnerBillMessage after = DtsMapConvertUtil.convert(dataTransportDTO.getAfterMap(), new SettlementOwnerBillMessage());
List<SettlementOwnerDetail> settlementOwnerDetails = settlementOwnerDetailDao.getBySettlementNo(after.getSettlementNo());
after.setChildNos(settlementOwnerDetails.stream().map(SettlementOwnerDetail::getChildNo).collect(Collectors.toList()));
if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){
//数据删除
log.info("删除:{}",before);
return;
}
//违约结算单数据同步
thirdpartySync(after);
} catch (Exception e) {
log.info("DTS消息同步失败, database:clx_performance.settlement_owner_detail, error:{}", e.getMessage());
}
}
/**
* 第三方同步
*/
public void thirdpartySync(SettlementOwnerBillMessage message){
try{
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(SyncPlatformEnum.Source.NEW_OWNER_CLIENT.getCode().toString());
log.info("货主结算单同步:{}", message.getId());
Result<?> result = openCallBackClient.encryptPost(JSON.toJSONString(message), message.topic());
if (result.succeed()) {
log.info("货主结算单同步成功:{}", message.getId());
}else{
log.info("货主结算单同步失败:{}", message.getId());
}
}catch (Exception e){
}
}
}
......@@ -27,6 +27,10 @@ public class BreakContractOwnerRecord implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("order_source")
@ApiModelProperty(value = "订单来源 1:交易平台 2:货主端 3:货主客户端")
private Integer orderSource;
@TableField("trigger_type")
@ApiModelProperty("触发类型:1系统触发 2手动触发")
private Integer triggerType;
......@@ -51,6 +55,10 @@ public class BreakContractOwnerRecord implements HasKey<Integer> {
@ApiModelProperty("货主名称")
private String ownerName;
@TableField("owner_company_no")
@ApiModelProperty("货主用户编号")
private Long ownerCompanyNo;
@TableField("figure")
@ApiModelProperty("违约金(分)")
private BigDecimal figure;
......
......@@ -22,7 +22,7 @@ public interface OrderCancelService {
* 货主取消订单前置(只修改订单状态)
* @param param
*/
void ownerCancelOrderPre(OrderCancelParam param);
Integer ownerCancelOrderPre(OrderCancelParam param);
/**
* 平台取消订单前置(只修改订单状态)
......
......@@ -18,6 +18,7 @@ import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.OrderCancelDTO;
import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OwnerInfoService;
......@@ -327,11 +328,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerCancelOrderPre(OrderCancelParam param) {
public Integer ownerCancelOrderPre(OrderCancelParam param) {
String orderNo = param.getOrderNo();
List<String> childNoList = orderCancelComponent.ownerProcess(param);
param.setChildNoList(childNoList);
OrderCancelDTO orderCancelDTO = orderCancelComponent.ownerProcess(param);
param.setChildNoList(orderCancelDTO.getChildNoList());
OrderCancelReasonParam orderCancelReasonParam = new OrderCancelReasonParam();
orderCancelReasonParam.setOrderNo(orderNo);
orderCancelReasonParam.setReason(param.getCancelReason());
......@@ -357,6 +358,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
rabbitTemplate.send(
RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_EXCHANGE, RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_ROUTE_KEY, message2
);
return orderCancelDTO.getStatus();
}
// /**
......
......@@ -82,6 +82,8 @@ public class BreakContractOwnerRecordServiceImpl implements BreakContractOwnerR
OwnerInfoFeignVO ownerInfo = ownerInfoService.getOwnerInfo(orderInfo.getOwnerUserNo());
BreakContractOwnerRecord record = new BreakContractOwnerRecord();
record.setOrderSource(orderInfo.getOrderSource());
record.setOwnerCompanyNo(orderInfo.getCompanyNo());
record.setBreakNo(breakNo);
record.setTriggerType(BreakContractRecordEnum.TriggerType.MANUAL.getCode());
if (Objects.equals(param.getBreakContractPartyType(), BreakContractRecordEnum.BreakContractPartyType.OWNER.getCode())) {
......@@ -164,6 +166,8 @@ public class BreakContractOwnerRecordServiceImpl implements BreakContractOwnerR
BreakContractOwnerRecord record = new BreakContractOwnerRecord();
record.setBreakNo(breakNo);
record.setOrderSource(orderInfo.getOrderSource());
record.setOwnerCompanyNo(orderInfo.getCompanyNo());
record.setTriggerType(BreakContractRecordEnum.TriggerType.SYSTEM.getCode());
record.setBreakContractPartyType(BreakContractRecordEnum.BreakContractPartyType.OWNER.getCode());
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论