提交 41e73bfa authored 作者: aiqingguo's avatar aiqingguo

Merge branch 'v5.5_settlement_20231011' into release

# Conflicts: # performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java # performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
...@@ -157,15 +157,7 @@ public class OrderChildVO { ...@@ -157,15 +157,7 @@ public class OrderChildVO {
@ApiModelProperty(value = "总运费(元)", example = "1.23") @ApiModelProperty(value = "总运费(元)", example = "1.23")
private BigDecimal totalFreight; private BigDecimal totalFreight;
public BigDecimal getTotalFreight() { public BigDecimal getTotalFreight() {
BigDecimal totalFreight = freightPrice.multiply(weight); return freightPrice.multiply(weight).setScale(2, RoundingMode.HALF_UP);
if (unloadNet != null){
totalFreight = freightPrice.multiply(unloadNet.compareTo(loadNet) < 0? unloadNet : loadNet);
BigDecimal dif = unloadNet.subtract(weight);
if (dif.compareTo(BigDecimal.ZERO) < 0){
totalFreight = totalFreight.add(lossPrice.multiply(dif));
}
}
return totalFreight.setScale(2, RoundingMode.HALF_UP);
} }
} }
\ No newline at end of file
...@@ -63,6 +63,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -63,6 +63,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> getOrderChildBussInfo(String truckNo); List<OrderChild> getOrderChildBussInfo(String truckNo);
OrderChild getGoingLatestOrderChildByOrderNo(String orderNo);
Page<OrderChild> pageOrderChild(PageMonitorOrderChildQCParam param); Page<OrderChild> pageOrderChild(PageMonitorOrderChildQCParam param);
List<OrderChild> listOrderChild(List<Integer> status); List<OrderChild> listOrderChild(List<Integer> status);
......
...@@ -206,6 +206,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -206,6 +206,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.last("limit 1")); .last("limit 1"));
} }
@Override
public OrderChild getGoingLatestOrderChildByOrderNo(String orderNo) {
return getOne(lQrWrapper().eq(OrderChild::getOrderNo,orderNo)
.le(OrderChild::getStatus,OrderChildEnum.Status.UNLOAD.getCode())
.orderByDesc(OrderChild::getId)
.last("limit 1"));
}
@Override @Override
public int countValidByOrderGoodsNo(String orderGoodsNo) { public int countValidByOrderGoodsNo(String orderGoodsNo) {
return baseMapper.countValidByOrderGoodsNo(orderGoodsNo); return baseMapper.countValidByOrderGoodsNo(orderGoodsNo);
......
...@@ -3,31 +3,51 @@ package com.clx.performance.listener; ...@@ -3,31 +3,51 @@ package com.clx.performance.listener;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient; import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.OrderChildMessage; import com.clx.open.sdk.callback.message.OrderChildMessage;
import com.clx.open.sdk.enums.ResultStatusEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.config.MslAppConfig; import com.clx.performance.config.MslAppConfig;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.dts.DataTransportDTO; import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum; import com.clx.performance.enums.DtsOperationTypeEnum;
import com.clx.performance.enums.OrderChildEnum; import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import com.msl.common.utils.DtsMapConvertUtil; import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Slf4j @Slf4j
//@Component @Component
@AllArgsConstructor @AllArgsConstructor
public class OrderChildDtsListener { public class OrderChildDtsListener {
private final MslAppConfig mslAppConfig; private final MslAppConfig mslAppConfig;
//@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_ORDER_CHILD_QUEUE) @Autowired
private OrderFeign orderFeign;
@Autowired
private OrderGoodsDao orderGoodsDao;
@Autowired
private OrderChildDao orderChildDao;
@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_ORDER_CHILD_QUEUE)
public void onMessage(Message message) { public void onMessage(Message message) {
try { try {
String msg = new String(message.getBody()); String msg = new String(message.getBody());
...@@ -49,9 +69,7 @@ public class OrderChildDtsListener { ...@@ -49,9 +69,7 @@ public class OrderChildDtsListener {
if(OrderChildEnum.SYNC_STATUS_lIST.contains(after.getStatus()) && !Objects.equals(before.getStatus(),after.getStatus())){ if(OrderChildEnum.SYNC_STATUS_lIST.contains(after.getStatus()) && !Objects.equals(before.getStatus(),after.getStatus())){
//同步after数据 //同步after数据
log.info("修改:{}"+after); log.info("修改:{}"+after);
// OpenCallBackClient client = new OpenCallBackClient(mslAppConfig.getUrl(),mslAppConfig.getAppId(),mslAppConfig.getSecret()); orderChildChangeAfter(after);
// Result result = client.encryptPost(JSON.toJSONString(after),after.topic());
// log.info("响应结果:{}",JSON.toJSONString(result));
} }
}else if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){ }else if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){
//数据删除 //数据删除
...@@ -65,4 +83,29 @@ public class OrderChildDtsListener { ...@@ -65,4 +83,29 @@ public class OrderChildDtsListener {
} }
} }
public void orderChildChangeAfter(OrderChildMessage after){
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(after.getOrderNo());
if (orderInfoFeign == null) {
return;
}
after.setLastFlag(ResultStatusEnum.NO.getCode());
long nowTimeMillis = System.currentTimeMillis();
LocalDateTime nowDateTime = new Date(nowTimeMillis).toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
//如果当前货单已完成,则判断之前所有货单是否等于订单总吨数,等于则更新订单为已完成
List<OrderGoods> list = orderGoodsDao.getOrderGoodsListByOrderNoAndLastArriveSendTime(after.getOrderNo(), nowDateTime);
BigDecimal childSum = list.stream().map(OrderGoods::getExtractWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
log.info("算出所有货单总量:{}, 订单总吨数:{}", childSum, orderInfoFeign.getTransportWeight());
if (childSum.compareTo(new BigDecimal(orderInfoFeign.getTransportWeight())) == 0) {
// 按照时间 倒序查出最后一条进行中的运单
OrderChild orderChild = orderChildDao.getGoingLatestOrderChildByOrderNo(after.getOrderNo());
if(Objects.nonNull(orderChild) && orderChild.getChildNo().equals(after.getChildNo())){
after.setLastFlag(ResultStatusEnum.YES.getCode());
}
}
OpenCallBackClient client = new OpenCallBackClient(mslAppConfig.getUrl(),mslAppConfig.getAppId(),mslAppConfig.getSecret());
Result result = client.encryptPost(JSON.toJSONString(after),after.topic());
log.info("订单信息同步,运单编号:{},响应结果:{}",after.getChildNo(),JSON.toJSONString(result));
}
} }
...@@ -165,7 +165,7 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer ...@@ -165,7 +165,7 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
* 运费计算 * 运费计算
*/ */
public BigDecimal orderChildFreightCalc(OrderChild orderChild){ public BigDecimal orderChildFreightCalc(OrderChild orderChild){
BigDecimal totalFreight = orderChild.getFreightPrice().multiply(orderChild.getUnloadNet().compareTo(orderChild.getLoadNet()) < 0? orderChild.getUnloadNet() : orderChild.getLoadNet()); BigDecimal totalFreight = orderChild.getFreightPrice().multiply(orderChild.getWeight());
BigDecimal dif = orderChild.getUnloadNet().subtract(orderChild.getLoadNet()); BigDecimal dif = orderChild.getUnloadNet().subtract(orderChild.getLoadNet());
if (dif.compareTo(BigDecimal.ZERO) < 0){ if (dif.compareTo(BigDecimal.ZERO) < 0){
totalFreight = totalFreight.add(orderChild.getLossPrice().multiply(dif)); totalFreight = totalFreight.add(orderChild.getLossPrice().multiply(dif));
......
...@@ -1368,10 +1368,9 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1368,10 +1368,9 @@ public class OrderChildServiceImpl implements OrderChildService {
*/ */
private BigDecimal orderChildFreightCalc(OrderChild orderChild) { private BigDecimal orderChildFreightCalc(OrderChild orderChild) {
BigDecimal totalFreight = orderChild.getFreightPrice().multiply(orderChild.getWeight()); BigDecimal totalFreight = orderChild.getFreightPrice().multiply(orderChild.getWeight());
if (orderChild.getUnloadNet() != null) { if (orderChild.getUnloadNet() != null){
totalFreight = orderChild.getFreightPrice().multiply(orderChild.getUnloadNet().compareTo(orderChild.getLoadNet()) < 0? orderChild.getUnloadNet() : orderChild.getLoadNet()); BigDecimal dif = orderChild.getUnloadNet().subtract(orderChild.getLoadNet());
BigDecimal dif = orderChild.getUnloadNet().subtract(orderChild.getWeight()); if (dif.compareTo(BigDecimal.ZERO) < 0){
if (dif.compareTo(BigDecimal.ZERO) < 0) {
totalFreight = totalFreight.add(orderChild.getLossPrice().multiply(dif)); totalFreight = totalFreight.add(orderChild.getLossPrice().multiply(dif));
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论