提交 2f019662 authored 作者: liruixin's avatar liruixin

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

......@@ -44,6 +44,8 @@ public enum PerformanceResultEnum implements ResultEnum {
ORDER_CHILD_CANCELED(1303, "运单状态已取消"),
ORDER_CHILD_COMPLETE(1304, "运单状态已完成"),
ORDER_CHILD_OPERATION_FORBID(1305, "没有权限操作"),
ORDER_CHILD_LOAD_NET_ERROR(1306, "净重不能大于99吨"),
ORDER_CHILD_TRACE_GT_ROUGH(1306, "皮重不能大于毛重"),
ORDER_CHILD_SAVE_FAIL(1321, "接单失败,请稍后再试"),
ORDER_CHILD_SAVE_FREQUENCY_ERROR(1322, "请误频繁点击"),
......
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;
public enum TransportSyncTypeEnum {
;
@Getter
@AllArgsConstructor
public enum Type {
NO_PASS(1, "未通过风控异常"),
EXCEPTION(2, "同步异常"),
;
private final Integer code;
private final String msg;
public static Optional<Type> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
public static Optional<Type> getByName(String name) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getMsg(), name)).findFirst();
}
public static Integer getCodeByName(String name) {
return getByName(name).map(TransportSyncTypeEnum.Type::getCode).orElse(3);
}
}
}
......@@ -26,13 +26,12 @@ public class OrderChildLoadAndUnloadAgainParam extends PositionParam {
private String unloadPoundNo;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "2.46")
@NotNull
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
@NotNull
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
@Max(value = 999, message = "最大999吨")
private BigDecimal loadNet;
@ApiModelProperty(value = "磅单图片列表")
@NotEmpty(message = "请上传磅单照片")
......
......@@ -22,13 +22,12 @@ public class OrderChildLoadParam extends PositionParam {
private String childNo;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "2.46")
@NotNull
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
@NotNull
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
@Max(value = 999, message = "最大999吨")
private BigDecimal loadNet;
@ApiModelProperty(value = "磅单图片列表")
@NotEmpty(message = "请上传磅单照片")
......
......@@ -27,12 +27,9 @@ public class OrderChildUnloadParam extends PositionParam {
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "2.46")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
@Max(value = 999, message = "最大999吨")
private BigDecimal unloadNet;
@ApiModelProperty(value = "磅单图片列表")
@NotEmpty(message = "请上传磅单照片")
......
package com.clx.performance.param.feign.transport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class ThirdOrderChildInvoiceStatusDTO {
@ApiModelProperty(value = "开票状态:0未开票 1已开票 2运单不存在")
private Integer status;
}
package com.clx.performance.param.feign.transport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class ThirdOrderChildInvoiceStatusParam {
@ApiModelProperty(value = "运单编号")
@NotBlank(message = "运单编号不能为空")
private String childNo;
}
package com.clx.performance.param.feign.transport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class ThirdOrderChildRiskStatusDTO {
@ApiModelProperty(value = "运单编号")
private String childNo;
@ApiModelProperty(value = "合规状态:0不合规 1合规 2未同步 ")
private Integer status;
@ApiModelProperty(value = "风控原因")
private String riskReason;
}
package com.clx.performance.param.feign.transport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.*;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@ToString
@NoArgsConstructor
@Builder
public class ThirdOrderChildRiskStatusParam {
@ApiModelProperty(value = "运单编号")
@NotBlank(message = "运单编号不能为空")
private String childNo;
@ApiModelProperty(value = "合规状态:0不合规 1合规 2未同步 ")
private Integer status;
@ApiModelProperty(value = "风控原因")
private String riskReason;
}
......@@ -34,11 +34,19 @@ public class PoundAuditParam {
@ApiModelProperty(value="审核状态 0 待审核 1 审核通过 2 审核驳回",example = "1")
private Integer status;
@ApiModelProperty(value="装货净重",example = "11")
private BigDecimal loadNet;
@ApiModelProperty(value = "装货毛重", example = "10")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重", example = "10")
private BigDecimal loadTare;
@ApiModelProperty(value="卸货毛重",example = "41")
private BigDecimal unloadRough;
@ApiModelProperty(value="卸货皮重",example = "41")
private BigDecimal unloadTare;
@ApiModelProperty(value="卸货净重",example = "22")
private BigDecimal unloadNet;
}
package com.clx.performance.vo.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class OrderTruckBindCancelParam {
//货单编号
private String orderGoodsNo;
//订单编号
private String orderNo;
}
......@@ -46,7 +46,6 @@ public class CarrierOrderChildDetailVO {
@MoneyOutConvert
private BigDecimal realFreight;
@ApiModelProperty(value = "损耗单价(元)", example = "1.23")
@MoneyOutConvert
private BigDecimal lossPrice;
......@@ -79,6 +78,18 @@ public class CarrierOrderChildDetailVO {
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
private BigDecimal unloadNet;
@ApiModelProperty(value = "装货毛重", example = "10")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重", example = "10")
private BigDecimal loadTare;
@ApiModelProperty(value="卸货毛重",example = "41")
private BigDecimal unloadRough;
@ApiModelProperty(value="卸货皮重",example = "41")
private BigDecimal unloadTare;
@ApiModelProperty(value = "取消原因", example = "取消原因类型:1个人原因, 2价格不合适, 3无法装货, 4车辆原因, 5交通管制, 6交通事故, 7无法找到地址, 8排队时间较长, 9其他原因")
private Integer cancelType;
@ApiModelProperty(value = "取消原因", example = "抢错了")
......
......@@ -23,6 +23,18 @@ public class OrderChildPoundAuditDetailVO {
@ApiModelProperty(value="卸货净重",example = "41")
private BigDecimal unloadNet;
@ApiModelProperty(value = "装货毛重", example = "10")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重", example = "10")
private BigDecimal loadTare;
@ApiModelProperty(value="卸货毛重",example = "41")
private BigDecimal unloadRough;
@ApiModelProperty(value="卸货皮重",example = "41")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货磅单编号", example = "url")
private String unloadPoundNo;
......
......@@ -43,6 +43,18 @@ public class PageCarrierOrderChildVO {
@ApiModelProperty(value="卸货净重",example = "41")
private BigDecimal unloadNet;
@ApiModelProperty(value = "装货毛重", example = "10")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重", example = "10")
private BigDecimal loadTare;
@ApiModelProperty(value="卸货毛重",example = "41")
private BigDecimal unloadRough;
@ApiModelProperty(value="卸货皮重",example = "41")
private BigDecimal unloadTare;
@ApiModelProperty(value="接单时间",example = "2020-01-01 10:10:10")
private String payTime;
......
......@@ -43,6 +43,18 @@ public class PageOrderChildPoundAuditVO {
@ApiModelProperty(value="卸货净重",example = "41")
private BigDecimal unloadNet;
@ApiModelProperty(value = "装货毛重", example = "10")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重", example = "10")
private BigDecimal loadTare;
@ApiModelProperty(value="卸货毛重",example = "41")
private BigDecimal unloadRough;
@ApiModelProperty(value="卸货皮重",example = "41")
private BigDecimal unloadTare;
@ApiModelProperty(value="审核状态 0 待审核 1 审核通过 2 审核驳回",example = "1")
private Integer status;
......
......@@ -59,6 +59,8 @@ public class CarrierPageSettlementDriverDetailVO {
@MoneyOutConvert
@ApiModelProperty(value = "预付运费金额")
private BigDecimal prepayFreight;
@ApiModelProperty(value = "预付运费标示 0:未预付 1:已预付")
private Integer prepayFreightFlag;
@MoneyOutConvert
@ApiModelProperty(value = "结算金额")
private BigDecimal settlementFreight;
......
package com.clx.performance.component;
import cn.hutool.json.JSONUtil;
import com.clx.order.feign.OrderFeign;
import com.clx.performance.enums.OwnerAccountEnum;
import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.service.settle.SettlementOwnerService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
@AllArgsConstructor
public class OwnerAccountComponent {
private final SettlementOwnerDetailService settlementOwnerDetailService;
private final OwnerAccountService ownerAccountService;
private final SettlementOwnerService settlementOwnerService;
private final OrderFeign orderFeign;
public void thawOwnerAccountByOrderNo(String orderNo) {
Boolean flag = settlementOwnerDetailService.thawAndLockSettlement(orderNo);
if (flag) {
log.info("当前存在在途运单");
orderFeign.saveOrderSettlementJobRecord(orderNo);
return;
}
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
Integer invoiceType = settlementOwnerDetailService.getInvoiceType(orderNo);
//1 网运单 2 普通单
log.info("invoiceType={}", invoiceType);
ThawAccountParam thawAccountParam = new ThawAccountParam();
thawAccountParam.setOrderNo(orderNo);
if (OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode().equals(invoiceType)) {
log.info("执行普通单解冻");
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode());
} else {
log.info("执行网运单解冻");
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode());
}
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
//通知结算单锁定
settlementOwnerService.updateStatusByOrderNo(orderNo, 1, 10, 20);
}
}
......@@ -115,4 +115,55 @@ public class RabbitBeanConfig {
public Binding orderCancelExchangeBind() {
return BindingBuilder.bind(orderCancelQueue()).to(orderCancelExchange()).with(RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY);
}
/**
* 运单同步网络货运队列
* @return
*/
@Bean
public Queue orderChildSyncTransportQueue() {
return new Queue(RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_QUEUE, true, false, false);
}
/**
* 运单同步网络货运交换机
**/
@Bean
public DirectExchange orderChildSyncTransportExchange() {
return new DirectExchange(RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE);
}
/**
* 运单同步网络货运绑定
*/
@Bean
public Binding orderChildSyncTransportExchangeBind() {
return BindingBuilder.bind(orderChildSyncTransportQueue()).to(orderChildSyncTransportExchange()).with(RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY);
}
/**
* 处理延迟消息orderGoodsTruckBind
* @return
*/
@Bean
public Queue orderGoodsTruckBindQueue() {
return new Queue(RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_QUEUE, true, false, false);
}
/**
* 处理延迟消息orderGoodsTruckBind
**/
@Bean
public CustomExchange orderGoodsTruckBindExchange() {
Map<String, Object> arguments = new HashMap<>();
//设置路由模式 direct模式
arguments.put("x-delayed-type", "direct");
return new CustomExchange(RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_EXCHANGE,"x-delayed-message", true, false, arguments);
}
//绑定交换机,队列和routingKey
@Bean
public Binding orderGoodsTruckBindBindingDelayedExchange(@Qualifier("orderGoodsTruckBindQueue")Queue queue,@Qualifier("orderGoodsTruckBindExchange")CustomExchange customExchange) {
return BindingBuilder.bind(queue).to(customExchange).with(RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_ROUTE_KEY).noargs();
}
}
......@@ -63,11 +63,24 @@ public class RabbitKeyConstants {
public static final String ORDER_LARGE_SCREEN_QUEUE ="clx-order.order.large.screen.queue";
public static final String ORDER_CHILD_SYNC_TRANSPORT_QUEUE ="clx-order.order.child.sync.transport.queue";
public static final String ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE ="clx-order.order.child.sync.transport.exchange";
public static final String ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY ="clx-order.order.child.sync.transport.route.key";
public static final String ORDER_THAW_SETTLEMENT_LAZY_EXCHANGE ="clx-order.thaw.settlement.lazy.exchange";
public static final String ORDER_THAW_SETTLEMENT_LAZY_ROUTE_KEY ="clx-order.thaw.settlement.lazy.route.key";
// 预付运费和保证金 自动冻结 触发消息队列
public static final String FREEZE_TRIGGER_EXCHANGE = "clx-order.freeze.trigger.exchange";
public static final String FREEZE_TRIGGER_QUEUE = "clx-order.freeze.trigger.queue";
public static final String FREEZE_TRIGGER_ROUTING_KEY = "clx-order.freeze.trigger.routing.key";
public static final String ORDER_TRUCK_BIND_LAZY_EXCHANGE ="clx-order.truck.bind.lazy.exchange";
public static final String ORDER_TRUCK_BIND_LAZY_QUEUE ="clx-order.truck.bind.lazy.queue";
public static final String ORDER_TRUCK_BIND_LAZY_ROUTE_KEY ="clx-order.truck.bind.lazy.route.key";
}
......@@ -2,7 +2,6 @@ package com.clx.performance.controller.feign;
import com.clx.performance.param.pc.OrderCancelFeignParam;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.service.OrderCancelService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
......@@ -26,14 +25,9 @@ public class OrderCancelFeignController {
private final OrderCancelService orderCancelService;
@ApiOperation(value = "承运发起订单取消货主端进行确认", notes = "<br>By:胡宇帆")
@ApiOperation(value = "承运发起订单取消货主端进行确认", notes = "<br>By:胡宇帆")
@PostMapping("/orderCancel")
public Result<Object> orderCancel(@RequestBody OrderCancelFeignParam param) {
// OrderCancelParam cancelParam = new OrderCancelParam();
// cancelParam.setOrderNo(param.getOrderNo());
// cancelParam.setCancelType(3);
// cancelParam.setCreateByType(1);
// orderCancelService.platformCancelOrderPrePC(cancelParam);
orderCancelService.ownerConfirmCancelOrderPre(param.getOrderNo());
return Result.ok();
}
......
......@@ -34,12 +34,12 @@ public class OrderCancelController {
private final OrderCancelService orderCancelService;
@ApiOperation(value = "承运端取消订单", notes = "<br>By:胡宇帆")
@PostMapping("/platformCancelOrderPre")
public Result<Object> platformCancelOrderPre(@RequestBody OrderCancelParam param) {
orderCancelService.platformCancelOrderPre(param);
return Result.ok();
}
// @ApiOperation(value = "承运端取消订单", notes = "<br>By:胡宇帆")
// @PostMapping("/platformCancelOrderPre")
// public Result<Object> platformCancelOrderPre(@RequestBody OrderCancelParam param) {
// orderCancelService.platformCancelOrderPre(param);
// return Result.ok();
// }
@ApiOperation(value = "货主端取消订单", notes = "<br>By:胡宇帆")
@PostMapping("/ownCancelOrderPre")
......
......@@ -48,7 +48,7 @@ public class OrderChildPoundAuditController {
@ApiOperation(value = "磅单审核接口",notes = "<br>By:李瑞新")
@PostMapping("/updatePoundAudit")
public Result updatePoundAudit(@RequestBody @Validated PoundAuditParam param) {
public Result<Object> updatePoundAudit(@RequestBody @Validated PoundAuditParam param) {
orderChildPoundAuditService.updatePoundAudit(param);
return Result.ok();
}
......
package com.clx.performance.controller.pc.carrier;
import com.clx.performance.service.DictionaryService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/dictionary")
@Validated
@Api(tags = "承运端-字典")
@AllArgsConstructor
public class DictionaryController {
private final DictionaryService dictionaryService;
@ApiOperation(value = "结算单列表(车主)",notes = "<br>By:刘海泉")
@GetMapping("/getOneByKey")
public Result<String> getOneByKey(String key) {
return Result.ok(dictionaryService.getOneByKey(key));
}
}
......@@ -162,7 +162,7 @@ public class OwnerAccountController {
@ApiOperation(value = "创建账户", notes = "<br>By:胡宇帆")
@PostMapping("/createAccount")
public Result<Object> createAccount(CreteAccountParam param) {
public Result<Object> createAccount(@RequestBody CreteAccountParam param) {
ownerAccountService.createAccount(param);
return Result.ok();
}
......
......@@ -18,7 +18,7 @@ import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam;
import com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusParam;
import com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusDTO;
import com.clx.performance.service.TransportSyncService;
import com.clx.performance.service.settle.OrderChildSyncTransportRecordService;
import com.clx.performance.service.settle.SettlementOwnerService;
......@@ -56,6 +56,9 @@ public class TransportSyncController {
private final SettlementOwnerService settlementOwnerService;
private final OrderChildSyncTransportRecordService childSyncTransportRecordService;
/**
* 支付结果
* @param param
......@@ -103,11 +106,17 @@ public class TransportSyncController {
log.info("riskStatusNotify 原始报文:{}", bean);
String decrypt = ThirdComponent.decrypt(bean.getData());
log.info("riskStatusNotify 解密后:{}", decrypt);
ThirdOrderChildRiskStatusParam invoicingStatusNotifyDTO = JSONUtil.toBean(decrypt, ThirdOrderChildRiskStatusParam.class);
ThirdOrderChildRiskStatusDTO invoicingStatusNotifyDTO = JSONUtil.toBean(decrypt, ThirdOrderChildRiskStatusDTO.class);
return ThirdComponent.encrypt(JSON.toJSONString(Result.ok()));
}
@ApiOperation(value = "addOrderChildSyncTransportRecord", notes = "<br>By:胡宇帆")
@GetMapping("/addOrderChildSyncTransportRecord")
public Result<Object> syncTest(@RequestParam("id") Integer id) {
SettlementDriverDetail driverDetail = settlementDriverDetailDao.getEntityByKey(id).get();
childSyncTransportRecordService.addOrderChildSyncTransportRecord(driverDetail);
return Result.ok();
}
@ApiOperation(value = "syncTest", notes = "<br>By:胡宇帆")
@GetMapping("/syncTest")
......
......@@ -5,6 +5,7 @@ import com.clx.performance.extranal.transport.TransportService;
import com.clx.performance.feign.TransportFeignService;
import com.clx.performance.param.feign.transport.OrderChildPaySyncParam;
import com.clx.performance.param.feign.transport.OwnerSettlementSyncParam;
import com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusParam;
import com.clx.performance.service.TempService;
import com.clx.performance.service.child.FeignOrderChildService;
import com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO;
......@@ -109,4 +110,15 @@ public class TempController {
return Result.ok();
}
@ApiOperation(value = "获取风控状态 (临时接口)", notes = "<br>By:艾庆国")
@RequestMapping(value = "/getRiskStatus", method = RequestMethod.POST)
public Result<Void> getRiskStatus(String childNo) {
ThirdOrderChildRiskStatusParam param = ThirdOrderChildRiskStatusParam.builder().build();
param.setChildNo(childNo);
HttpDTO httpDTO = transportFeignService.getRiskStatus(param);
String decrypt = ThirdComponent.decrypt(httpDTO.getData());
log.info("{}", decrypt);
return Result.ok();
}
}
package com.clx.performance.dao;
import com.msl.common.dao.BaseDao;
import com.clx.performance.mapper.DictionaryMapper;
import com.clx.performance.model.Dictionary;
/**
* @author kavin
* Date 2024-01-24
* Time 13:34
*/
public interface DictionaryDao extends BaseDao<DictionaryMapper, Dictionary, Integer> {
}
package com.clx.performance.dao;
import com.msl.common.dao.BaseDao;
import com.clx.performance.mapper.OrderChildSyncTransportInvoiceRecordMapper;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
import java.util.List;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
public interface OrderChildSyncTransportInvoiceRecordDao extends BaseDao<OrderChildSyncTransportInvoiceRecordMapper, OrderChildSyncTransportInvoiceRecord, Integer> {
List<OrderChildSyncTransportInvoiceRecord> selectListForJob();
}
......@@ -31,6 +31,8 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code);
void updateOrderGoodsBindStatus(List<String> orderGoodsList, Integer code);
void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, List<String> truckList);
void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, String truckNo);
......
package com.clx.performance.dao.impl;
import com.msl.common.dao.impl.BaseDaoImpl;
import com.clx.performance.dao.DictionaryDao;
import com.clx.performance.mapper.DictionaryMapper;
import com.clx.performance.model.Dictionary;
import org.springframework.stereotype.Repository;
/**
* @author kavin
* Date 2024-01-24
* Time 13:34
*/
@Repository
public class DictionaryDaoImpl extends BaseDaoImpl<DictionaryMapper, Dictionary, Integer> implements DictionaryDao {
}
......@@ -111,6 +111,10 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.set(OrderChild::getPoundStatus, item.getPoundStatus())
.set(OrderChild::getLoadNet, item.getLoadNet())
.set(OrderChild::getUnloadNet, item.getUnloadNet())
.set(OrderChild::getLoadRough, item.getLoadRough())
.set(OrderChild::getLoadTare, item.getLoadTare())
.set(OrderChild::getUnloadRough, item.getUnloadRough())
.set(OrderChild::getUnloadTare, item.getUnloadTare())
.set(OrderChild::getWeight, item.getWeight())
.set(OrderChild::getFreight, item.getFreight())
);
......
package com.clx.performance.dao.impl;
import com.clx.performance.enums.TransportSyncTypeEnum;
import com.msl.common.dao.impl.BaseDaoImpl;
import com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao;
import com.clx.performance.mapper.OrderChildSyncTransportInvoiceRecordMapper;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
@Repository
public class OrderChildSyncTransportInvoiceRecordDaoImpl extends BaseDaoImpl<OrderChildSyncTransportInvoiceRecordMapper, OrderChildSyncTransportInvoiceRecord, Integer> implements OrderChildSyncTransportInvoiceRecordDao {
@Override
public List<OrderChildSyncTransportInvoiceRecord> selectListForJob() {
return baseMapper.selectList(null);
}
}
......@@ -87,6 +87,15 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
);
}
@Override
public void updateOrderGoodsBindStatus(List<String> orderGoodsList, Integer code) {
update(lUdWrapper()
.in(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsList)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode())
.set(OrderGoodsTruckBind::getStatus, code)
);
}
@Override
public void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, List<String> truckList) {
update(lUdWrapper()
......
package com.clx.performance.dto;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class OrderCancelResult {
private Integer orderStatusCode;
private List<String> childNoList;
}
package com.clx.performance.dto;
import com.clx.order.param.feign.RollbackOrderWeightParam;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderGoodsCancelParam;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class OrderGoodsCancelDTO {
private OrderGoodsCancelParam orderGoodsCancelParam;
private Integer orderGoodsStatus;
private OrderGoods orderGoods;
private List<String> childNoList;
}
......@@ -10,8 +10,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@FeignClient(name = "transport-service-yitu", url = "${transport-service.host}", configuration = FeignInterceptor.class)
public interface TransportFeignService {
......@@ -25,10 +23,10 @@ public interface TransportFeignService {
/**
* 获取风控状态
* @return
* @see com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusParam
* @see ThirdOrderChildRiskStatusDTO
*/
@RequestMapping(value = "/transport-service/thirdParty/order/getRiskStatus", method = RequestMethod.POST)
HttpDTO getRiskStatus(@RequestBody @NotBlank(message = "运单编号不能为空") String childNo);
HttpDTO getRiskStatus(@RequestBody ThirdOrderChildRiskStatusParam param);
/**
* 运单支付运费同步
......@@ -38,10 +36,11 @@ public interface TransportFeignService {
/**
* 获取运单开票状态
* @return 0-未申请,10-已申请,20-审核失败,30-已开票
* @return
* @see ThirdOrderChildInvoiceStatusDTO
*/
@RequestMapping(value = "/transport-service/thirdParty/order/getInvoiceStatus", method = RequestMethod.POST)
Result<Integer> getInvoiceStatus(@RequestBody @NotBlank(message = "运单编号不能为空") String childNo);
HttpDTO getInvoiceStatus(@RequestBody ThirdOrderChildInvoiceStatusParam param);
/**
* 货主结算单同步 (只推同一货主)
......
package com.clx.performance.job;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import com.clx.performance.component.ThirdComponent;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.OrderChildSyncDTO;
import com.clx.performance.dto.OrderChildSyncResultDTO;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.TransportSyncTypeEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.feign.TransportFeignService;
import com.clx.performance.listener.OrderChildSyncTransportListener;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusParam;
import com.msl.common.result.Result;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.LinkedList;
import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
public class OrderChildSyncTransportInvoiceExceptionJob {
private final OrderChildSyncTransportInvoiceRecordDao orderChildSyncTransportInvoiceRecordDao;
private final OrderChildSyncTransportListener orderChildPaySync;
private final OrderChildDao orderChildDao;
private final TransportFeignService transportFeignService;
private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final SettlementDriverDetailDao settlementDriverDetailDao;
/**
* 同步网络货运
*/
@XxlJob("orderChildSyncTransportInvoiceExceptionJob")
@Transactional(rollbackFor = Exception.class)
public void orderChildSyncTransportInvoiceExceptionJob() {
//只查询同步异常的网络货运任务
List<OrderChildSyncTransportInvoiceRecord> recordList = orderChildSyncTransportInvoiceRecordDao.selectListForJob();
if (CollectionUtil.isEmpty(recordList)) {
return;
}
List<Integer> ids = new LinkedList<>();
for (OrderChildSyncTransportInvoiceRecord record : recordList) {
log.info("orderChildSyncTransportInvoiceExceptionJob执行:{}", JSONUtil.parse(record));
String data = transportFeignService.getRiskStatus(ThirdOrderChildRiskStatusParam.builder().childNo(record.getChildNo()).build()).getData();
String decrypt = ThirdComponent.decrypt(data);
Result result = JSONUtil.toBean(decrypt, Result.class);
if (result.succeed()) {
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(record.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(record.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
JSON json = JSONUtil.parse(result.getData());
Object status = json.getByPath("status");
ids.add(record.getId());
OrderChildSyncDTO bean = new OrderChildSyncDTO();
bean.setCode(0);
OrderChildSyncResultDTO dto = new OrderChildSyncResultDTO();
OrderChild orderChild = orderChildDao.getByChildNo(record.getChildNo()).get();
log.info("查询网络货运结果数据:{}", JSONUtil.parse(result));
if (ObjectUtil.equal(status, 1)) {
dto.setStatus(1);
bean.setData(dto);
orderChildPaySync.extracted(orderChild, bean, "", settlementOwnerDetail,
SettlementOwnerEnum.InvoiceType.ONLINE.getCode(), settlementDriverDetail);
} else if (ObjectUtil.equal(status, 0)){
dto.setStatus(2);
bean.setData(dto);
orderChildPaySync.extracted(orderChild, bean, "", settlementOwnerDetail,
SettlementOwnerEnum.InvoiceType.ORDINARY.getCode(), settlementDriverDetail);
}else if (ObjectUtil.equal(status, 2)){
// orderChildPaySync.transportOrderChildProcess(orderChild);
dto.setStatus(2);
bean.setData(dto);
orderChildPaySync.extracted(orderChild, bean, "", settlementOwnerDetail,
SettlementOwnerEnum.InvoiceType.ORDINARY.getCode(), settlementDriverDetail);
} else {
Object riskReason = json.getByPath("riskReason");
OrderChildSyncTransportInvoiceRecord entity = new OrderChildSyncTransportInvoiceRecord();
entity.setChildNo(json.getByPath("childNo").toString());
entity.setType(TransportSyncTypeEnum.Type.NO_PASS.getCode());
entity.setRemark(riskReason == null ? "" : riskReason.toString());
orderChildSyncTransportInvoiceRecordDao.saveEntity(entity);
}
}
}
orderChildSyncTransportInvoiceRecordDao.deleteByKeys(ids);
}
}
package com.clx.performance.listener;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.vo.mq.OrderTruckBindCancelParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
@Component
@Slf4j
@AllArgsConstructor
public class OrderGoodsDriverBindListener {
private final OrderGoodsTruckBindDao orderGoodsTruckBindDao;
private final OrderGoodsDao orderGoodsDao;
@RabbitListener(queues = RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_QUEUE)
@Transactional(rollbackFor = Exception.class)
public void onMessage(String message) throws Exception {
OrderTruckBindCancelParam param = JSONUtil.toBean(message, OrderTruckBindCancelParam.class);
log.info("OrderGoodsDriverBindListener请求参数{}", JSONUtil.parse(param));
if (StringUtils.isNotBlank(param.getOrderGoodsNo())) {
String orderGoodsNo = param.getOrderGoodsNo();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsNo).get();
if (VehicleUsageEnum.Status.OWN.getCode().equals(orderGoods.getVehicleUsage())) {
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoodsNo, OrderGoodsTruckBindEnum.Status.CANCEL.getCode());
}
} else if (StringUtils.isNotBlank(param.getOrderNo())) {
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(param.getOrderNo());
List<String> orderGoodsNoList = orderGoodsList.stream().filter(i -> VehicleUsageEnum.Status.OWN.getCode().equals(i.getVehicleUsage()))
.map(OrderGoods::getOrderGoodsNo).collect(Collectors.toList());
if (CollectionUtil.isEmpty(orderGoodsNoList)) {
return;
}
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoodsNoList, OrderGoodsTruckBindEnum.Status.CANCEL.getCode());
}
}
}
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.Dictionary;
/**
* @author kavin
* Date 2024-01-24
* Time 13:34
*/
public interface DictionaryMapper extends BaseMapper<Dictionary> {
}
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
public interface OrderChildSyncTransportInvoiceRecordMapper extends BaseMapper<OrderChildSyncTransportInvoiceRecord> {
}
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
/**
* @author kavin
* Date 2024-01-24
* Time 13:34
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("dictionary")
public class Dictionary implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("dictionary_name")
@ApiModelProperty("")
private String dictionaryName;
@TableField("dictionary_value")
@ApiModelProperty("")
private String dictionaryValue;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
......@@ -33,6 +33,10 @@ public class OrderChildPoundAudit implements HasKey<Integer> {
private String childNo; //运单编号
private BigDecimal loadNet; //装货净重(单位吨)
private BigDecimal unloadNet; //卸货净重(单位吨)
private BigDecimal loadRough; //装货毛重(单位吨)
private BigDecimal loadTare; //装货皮重(单位吨)
private BigDecimal unloadRough; //卸货毛重(单位吨)
private BigDecimal unloadTare; //卸货皮重(单位吨)
private String unloadPoundNo; //卸货磅单编号
private Integer status; //审核状态 0 待审核 1 审核通过 2 审核驳回
private Integer rejectType; //审核驳回类型:1装车 2卸车 3装车+卸车
......
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("order_child_sync_transport_invoice_record")
public class OrderChildSyncTransportInvoiceRecord implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("child_no")
@ApiModelProperty("运单编号")
private String childNo;
@TableField("remark")
@ApiModelProperty("备注")
private String remark;
@TableField("type")
@ApiModelProperty("备注 1: 未风控 2: 同步异常")
private Integer type;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@TableField("modified_time")
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
package com.clx.performance.service;
/**
* @author kavin
* Date 2024-01-24
* Time 13:34
*/
public interface DictionaryService {
String getOneByKey(String key);
}
......@@ -28,10 +28,10 @@ public interface OrderCancelService {
* 平台取消订单前置(只修改订单状态)
* @param param
*/
void platformCancelOrderPre(OrderCancelParam param);
// void platformCancelOrderPre(OrderCancelParam param);
/**
* 修改订单状态后执行规划吨数
* 修改订单状态后执行归还吨数
* @param param
*/
void orderCancelProcess(OrderCancelParam param);
......
package com.clx.performance.service;
import com.msl.common.service.BaseService;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
public interface OrderChildSyncTransportInvoiceRecordService {
}
package com.clx.performance.service.impl;
import com.clx.performance.dao.DictionaryDao;
import com.clx.performance.model.Dictionary;
import com.clx.performance.service.DictionaryService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* @author kavin
* Date 2024-01-24
* Time 13:34
*/
@Service
@AllArgsConstructor
public class DictionaryServiceImpl implements DictionaryService {
private final DictionaryDao dictionaryDao;
@Override
public String getOneByKey(String key) {
Dictionary dictionary = dictionaryDao.getOneByField(Dictionary::getDictionaryName, key).get();
return dictionary.getDictionaryValue();
}
}
......@@ -62,6 +62,10 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
vo.setLoadNet(poundAuditDetail.getLoadNet());
vo.setUnloadNet(poundAuditDetail.getUnloadNet());
vo.setUnloadPoundNo(poundAuditDetail.getUnloadPoundNo());
vo.setUnloadTare(poundAuditDetail.getUnloadTare());
vo.setUnloadRough(poundAuditDetail.getUnloadRough());
vo.setLoadRough(poundAuditDetail.getLoadRough());
vo.setLoadTare(poundAuditDetail.getLoadTare());
vo.setStatus(poundAuditDetail.getStatus());
vo.setRemark(poundAuditDetail.getRemark());
vo.setRejectType(poundAuditDetail.getRejectType());
......@@ -74,7 +78,15 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
public void updatePoundAudit(PoundAuditParam param) {
//运单详情
OrderChild orderChild = orderChildDao.getByChildNo(param.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
BigDecimal loadNet = param.getLoadRough().subtract(param.getLoadTare());
if (loadNet.compareTo(new BigDecimal(99)) > 0) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_NET_ERROR);
}
if (param.getLoadTare().compareTo(param.getLoadRough()) > 0) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_TRACE_GT_ROUGH);
}
BigDecimal unLoadNet = param.getUnloadRough().subtract(param.getUnloadTare());
if(OrderChildEnum.CANCEL_lIST.contains(orderChild.getStatus())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCELED);
}
......@@ -94,21 +106,24 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
poundAuditDetail.setCreateTime(null);
poundAuditDetail.setModifiedTime(null);
BigDecimal dif = param.getLoadNet().subtract(orderChild.getLoadNet());
BigDecimal dif = loadNet.subtract(orderChild.getLoadNet());
int type = OrderChildLogEnum.Type.POUND_AUDIT.getCode();
if(Objects.equals(param.getStatus(), OrderChildPoundAuditEnum.Status.REJECT.getCode())){
type = OrderChildLogEnum.Type.POUND_AUDIT_REJECT.getCode();
}else{
if(Objects.nonNull(param.getLoadNet())){
poundAuditDetail.setLoadNet(param.getLoadNet());
orderChild.setLoadNet(param.getLoadNet());
}
if(Objects.nonNull(param.getUnloadNet())){
poundAuditDetail.setUnloadNet(param.getUnloadNet());
orderChild.setUnloadNet(param.getUnloadNet());
}
poundAuditDetail.setLoadNet(loadNet);
poundAuditDetail.setUnloadNet(unLoadNet);
poundAuditDetail.setLoadRough(param.getLoadRough());
poundAuditDetail.setLoadTare(param.getLoadTare());
poundAuditDetail.setUnloadRough(param.getUnloadRough());
poundAuditDetail.setUnloadTare(param.getUnloadTare());
orderChild.setLoadNet(loadNet);
orderChild.setUnloadNet(unLoadNet);
orderChild.setLoadRough(param.getLoadRough());
orderChild.setLoadTare(param.getLoadTare());
orderChild.setUnloadRough(param.getUnloadRough());
orderChild.setUnloadTare(param.getUnloadTare());
}
orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setFreight(orderChildFreightCalc(orderChild));
......
package com.clx.performance.service.impl;
import com.clx.performance.service.OrderChildSyncTransportInvoiceRecordService;
import org.springframework.stereotype.Service;
/**
* @author kavin
* Date 2024-01-03
* Time 10:17
*/
@Service
public class OrderChildSyncTransportInvoiceRecordServiceImpl implements OrderChildSyncTransportInvoiceRecordService {
}
......@@ -1213,7 +1213,4 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
}
}
public static void main(String[] args) {
}
}
package com.clx.performance.service.impl.settle;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.component.IdGenerateSnowFlake;
......@@ -217,7 +218,24 @@ public class NetworkDriverRunningWaterRecordServiceImpl implements NetworkDriver
public IPage<APPNetworkDriverRunningWaterRecordVO> runningWaterList(NetworkDriverPageParam param) {
Long userNo = TokenUtil.getLoginUserInfo().getUserNo();
param.setUserNo(userNo);
return networkDriverRunningWaterRecordDao.runningWaterList(param);
IPage<APPNetworkDriverRunningWaterRecordVO> page = networkDriverRunningWaterRecordDao.runningWaterList(param);
if (NetworkDriverAccountEnum.FundType.EXPENDITURE.getCode().equals(param.getFundType())) {
if (CollectionUtil.isNotEmpty(page.getRecords())) {
for (APPNetworkDriverRunningWaterRecordVO record : page.getRecords()) {
record.setAlterationBalance(record.getAlterationBalance().negate());
}
}
} else if (param.getFundType() == null ) {
if (CollectionUtil.isNotEmpty(page.getRecords())) {
for (APPNetworkDriverRunningWaterRecordVO record : page.getRecords()) {
if (NetworkDriverAccountEnum.RunningWaterStatus.CASE_OUT_SUCCESS.getCode().equals( record.getRunningWaterType())){
record.setAlterationBalance(record.getAlterationBalance().negate());
}
}
}
}
return page;
}
@Override
......
......@@ -130,7 +130,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
}
}
else {
log.info("结初始化货主结算单");
log.info("拉运完成结初始化货主结算单");
settlementOwner = settlementOwnerDao.selectUnlockOfSettlementPeriodImmediate(settlementOwnerDetail.getOrderNo(), settlementOwnerDetail.getInvoiceType()).orNull();
if (settlementOwner == null){ // 拉运完成初始化
......
......@@ -83,7 +83,8 @@ public class OrderChildSqlProvider {
public String pagePoundAuditList(@Param("page") Page<PageOrderChildPoundAuditVO> page, @Param("param") PagePoundAuditParam param) {
return new SQL(){{
SELECT("child_no,pound_status as status,goods_name,send_address,receive_address,driver_name,driver_mobile,load_net,unload_net," +
SELECT("child_no,pound_status as status,goods_name,send_address,receive_address,driver_name," +
"driver_mobile,load_net,unload_net,load_rough,load_tare,unload_rough,unload_tare," +
"date_format(pay_time, '%Y-%m-%d %H:%i:%s') as payTime," +
"date_format(load_time, '%Y-%m-%d %H:%i:%s') as loadTime," +
"date_format(unload_time, '%Y-%m-%d %H:%i:%s') as unloadTime ");
......@@ -107,7 +108,9 @@ public class OrderChildSqlProvider {
public String pageCarrierOrderChildList(@Param("page") Page<PageCarrierOrderChildVO> page, @Param("param") PageCarrierOrderChildParam param) {
return new SQL(){{
SELECT("child_no,order_goods_no,status,goods_name,freight_price,send_address,receive_address,driver_name,driver_mobile,load_net,unload_net," +
SELECT("child_no,order_goods_no,status,goods_name," +
"freight_price,send_address,receive_address,load_rough,load_tare,unload_rough,unload_tare," +
"driver_name,driver_mobile,load_net,unload_net," +
"date_format(pay_time, '%Y-%m-%d %H:%i:%s') as payTime," +
"date_format(finish_time, '%Y-%m-%d %H:%i:%s') as finishTime");
FROM("order_child ");
......
......@@ -62,7 +62,11 @@ public class NetworkDriverRunningWaterRecordProvider {
}
if (ObjectUtil.isNotNull(param.getFundType())) {
WHERE("a.fund_type = #{param.fundType}");
} else {
WHERE("a.fund_type != " + NetworkDriverAccountEnum.FundType.FROZEN.getCode());
}
WHERE("a.running_water_type != " + NetworkDriverAccountEnum.RunningWaterStatus.CASE_OUT_FROZEN.getCode());
ORDER_BY("a.create_time desc");
}}.toString();
return sql;
......
......@@ -11,12 +11,15 @@ import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.clx.performance.utils.SpringContextUtils;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
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.core.env.Environment;
import java.time.LocalDateTime;
import java.util.*;
......@@ -25,6 +28,9 @@ import java.util.stream.Collectors;
@Slf4j
public abstract class GoodsOrderStrategy {
@Autowired
private Environment environment;
/**
* 不同的用车需求执行不同的策略 1:one 2:two 3:three
......@@ -43,6 +49,16 @@ public abstract class GoodsOrderStrategy {
if (Objects.equals(orderInfo.getStopFlag(), OrderStopEnum.Status.YES.getCode())) {
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "订单已暂停,无法进行提量");
}
String transportBeginTime = orderInfo.getTransportBeginTime();
if (!"test".equals(environment.getActiveProfiles()[0])) {
for (OrderGoodsChildParams param : orderGoodsParams.getOrderGoodsChildParams()) {
String pendingOrderTime = param.getPendingOrderTime();
if (DateUtils.parseDateTime(pendingOrderTime).get().isBefore(DateUtils.parseDateTime(transportBeginTime).get())) {
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "挂单时间不能早于拉运开始时间");
}
}
}
//多个定向单不允许车辆重复
List<OrderGoodsChildParams> orderGoodsChildParams = orderGoodsParams.getOrderGoodsChildParams();
Set<String> set = new HashSet<>();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论