提交 f5b9eb54 authored 作者: 刘海泉's avatar 刘海泉

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

......@@ -272,6 +272,9 @@ public class OrderChildVO {
@ApiModelProperty(value = "监装联系人电话")
private String superviseMobile;
@ApiModelProperty(value = "是否解除监装限制 0 未解除 1 解除")
private Integer removeLoadLimitStatus;
@ApiModelProperty(value = "发货地采样照片")
public List<String> getSendSamplingPicList() {
......
package com.clx.performance.vo.mq.settle;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class SettlementInvoiceStatusUpdateMqParam {
private String settlementNo;
}
......@@ -162,4 +162,17 @@ public class RabbitSettlementConfig {
.with(RabbitKeySettlementConstants.SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_ROUTING_KEY);
}
/**
* 结算单开票状态更新
*/
@Bean
public Queue settlementInvoiceStatusUpdateQueue() {
return new Queue(RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_UPDATE_QUEUE);
}
@Bean
public Binding settlementInvoiceStatusUpdateQueueBinding() {
return BindingBuilder.bind(settlementInvoiceStatusUpdateQueue()).to(settlementDefaultExchange())
.with(RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_UPDATE_ROUTING_KEY);
}
}
......@@ -86,4 +86,10 @@ public class RabbitKeySettlementConstants {
public static final String SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_QUEUE = PREFIX +"settlementPlatformAutoConfirm.update"+QUEUE;
public static final String SETTLEMENT_PLATFORM_AUTO_CONFIRM_UPDATE_ROUTING_KEY = PREFIX +"settlementPlatformAutoConfirm.update"+QUEUE_ROUTING_KEY;
/**
* 结算单开票状态更新
*/
public static final String SETTLEMENT_INVOICE_STATUS_UPDATE_QUEUE = PREFIX +"settlementInvoice.update"+QUEUE;
public static final String SETTLEMENT_INVOICE_STATUS_UPDATE_ROUTING_KEY = PREFIX +"settlementInvoice.update"+QUEUE_ROUTING_KEY;
}
......@@ -48,4 +48,13 @@ public class RedisConstants {
*/
public static final String ORDER_LAST_TRUCK_CHILD = "clx-performance:order:last:truck:child:";
/**
* 电子围栏短信通知 未装车
*/
public static final String NOTICE_MESSAGE_LIMIT_UNLOAD = "clx-performance:notice_message_limit_unload:";
/**
* 电子围栏短信通知 未监装
*/
public static final String NOTICE_MESSAGE_LIMIT_UNSUPERVISED = "clx-performance:notice_message_limit_unsupervised:";
}
......@@ -35,6 +35,13 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
.set(SettlementOwner::getStatus, item.getStatus())
);
}
@Override
public boolean updateInvoiceStatus(SettlementOwner item) {
return update(lUdWrapper()
.eq(SettlementOwner::getId, item.getId())
.set(SettlementOwner::getInvoiceStatus, item.getInvoiceStatus())
);
}
@Override
public boolean updateSettlementPeriodMonth(SettlementOwner item) {
......
......@@ -19,7 +19,6 @@ import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
......@@ -116,6 +115,16 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
);
}
@Override
public void updateInvoiceStatusByIdList(List<Integer> idList, Integer invoiceStatus) {
update(lUdWrapper()
.in(SettlementOwnerDetail::getId, idList)
.set(SettlementOwnerDetail::getInvoiceStatus, invoiceStatus)
.set(SettlementOwnerDetail::getInvoiceTime,LocalDateTime.now())
);
}
@Override
public boolean updateInvoiceStatusBySettlementNo(String settlementNo, Integer invoiceStatus){
return update(lUdWrapper()
......@@ -163,6 +172,13 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
)
.map(super::getOne);
}
@Override
public List<SettlementOwnerDetail> getListByChildNoList(List<String> childNoList) {
return list(lQrWrapper()
.in(SettlementOwnerDetail::getChildNo, childNoList));
}
@Override
public List<SettlementOwnerDetail> getBySettlementNo(String settlementNo) {
return list(lQrWrapper().eq(SettlementOwnerDetail::getSettlementNo, settlementNo));
......@@ -311,7 +327,7 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
public List<SettlementOwnerDetail> listInvoiceTypeSync() {
return list(lUdWrapper()
.gt(SettlementOwnerDetail::getCreateTime, LocalDateTime.now().minusMonths(1))
.le(SettlementOwnerDetail::getCreateTime, LocalDateTime.now().minusMinutes(3))
.le(SettlementOwnerDetail::getCreateTime, LocalDateTime.now().minusMinutes(1))
.eq(SettlementOwnerDetail::getInvoiceChannel, SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode())
.isNull(SettlementOwnerDetail::getInvoiceType)
);
......
......@@ -16,6 +16,8 @@ import java.util.List;
public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, SettlementOwner, Integer> {
boolean updateStatus(SettlementOwner item);
boolean updateInvoiceStatus(SettlementOwner item);
boolean updateSettlementPeriodMonth(SettlementOwner item);
boolean updateLock(SettlementOwner item);
......
......@@ -33,6 +33,8 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM
boolean updateInvoiceType(SettlementOwnerDetail item);
boolean updatePreFreight(SettlementOwnerDetail item);
void updateInvoiceStatusByIdList(List<Integer> idList, Integer invoiceStatus);
boolean updateInvoiceStatusBySettlementNo(@Param("settlementNo")String settlementNo, @Param("invoiceStatus")Integer invoiceStatus);
boolean updateFinalPaymentStatusBySettlementNo(@Param("settlementNo")String settlementNo, @Param("finalPaymentStatus")Integer finalPaymentStatus);
......@@ -45,6 +47,7 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM
Optional<SettlementOwnerDetail> findById(Integer id);
Optional<SettlementOwnerDetail> getByChildNo(String childNo);
List<SettlementOwnerDetail> getListByChildNoList(List<String> childNoList);
List<SettlementOwnerDetail> getBySettlementNo(String settlementNo);
List<SettlementOwnerDetail> getBySettlementNoAndInvoiceType(String settlementNo, Integer invoiceType, Integer invoiceStatus);
......
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.vo.mq.SettlementSettleMqParam;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 结算 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public class SettlementInvoiceStatusUpdateListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_UPDATE_QUEUE)
public void process(Message message) {
try{
log.info("结算-开票状态更新, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementInvoiceStatusUpdateMqParam>>(){}).getData());
}catch (Exception e){
log.info("结算-开票状态更新 失败",e);
}
}
private void process(SettlementInvoiceStatusUpdateMqParam mq){
settlementMqHandlerService.settlementInvoiceStatusUpdate(mq);
}
}
......@@ -2,6 +2,7 @@ package com.clx.performance.service.broker;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
......@@ -10,5 +11,5 @@ public interface OrderChildBrokerService {
void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail);
void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail);
SettlementDriverDetail settlementDriverDetail, SettlementDriver settlementDriver);
}
......@@ -516,7 +516,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
OrderChildEnum.Status.ARRIVE_SEND.getCode(),
OrderChildEnum.Status.UNLOAD.getCode())
.contains(orderChild.getStatus())) {
log.error("运单:{} 状态:{}不在【装车成功】【前往目的地】【到达目的地】【收货待确认】范围中,不允许取消", orderChildNo, orderChild.getStatus());
log.info("运单:{} 状态:{}不在【装车成功】【前往目的地】【到达目的地】【收货待确认】范围中,不允许取消", orderChildNo, orderChild.getStatus());
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID, "不可操作");
}
......@@ -579,7 +579,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
@Override
// todo :jiangwujie 事务判断 ,其他也检查一下
@Transactional(rollbackFor = Exception.class)
public void removeLoadLimit(ArtificialCancelOrderParam param) {
OrderChild orderChild = orderChildDao.getByChildNo(param.getOrderChildNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
//判断运单状态【已接单】【前往货源地】【到达货源地】时可对该运单解除装车限制,否则toast:不可操作
......@@ -587,7 +587,6 @@ public class OrderCancelServiceImpl implements OrderCancelService {
OrderChildEnum.Status.GO_TO_SEND.getCode(),
OrderChildEnum.Status.ARRIVE_SEND.getCode())
.contains(orderChild.getStatus())) {
//todo log.error 检查一下
log.info("运单:{} 状态:{}不在【已接单】【前往货源地】【到达货源地】范围中,不允许解除装车限制", param.getOrderChildNo(), orderChild.getStatus());
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID, "不可操作");
}
......
......@@ -1789,7 +1789,6 @@ public class OrderChildServiceImpl implements OrderChildService {
}
/**
* todo 要改成两个
* 获取监装
* @param orderNo
* @param childNo
......@@ -1815,7 +1814,6 @@ public class OrderChildServiceImpl implements OrderChildService {
if (Objects.isNull(supervisionLoadInfo)) {//有监装信息
return null;
}
//通过运单号查询监装监卸子任务状态
return new SuperviseInfo(supervisionLoadInfo.getTaskContracts(), supervisionLoadInfo.getTaskMobile(), supervisionLoadInfo.getTaskAddress());
}
......@@ -1825,7 +1823,7 @@ public class OrderChildServiceImpl implements OrderChildService {
* @param childNo
* @return
*/
private SuperviseInfo getSuperviseInfoWithSubStatus(String orderNo, String childNo) {
private SuperviseInfo getSuperviseInfoWithSubStatus(String orderNo, String childNo, String truckNo) {
NeedAlertSuperviseInfoResultVO result = new NeedAlertSuperviseInfoResultVO();
App app = appConfig.getPurchaseManageApp();//对接马上来供应链配置信息
//组装配置信息
......@@ -1853,10 +1851,15 @@ public class OrderChildServiceImpl implements OrderChildService {
if (!supervisionLoadTruckInfoDto.succeed()) {//接口调用失败
return null;
}
//监装子任务状态
SupervisionLoadTruckInfoDto supervisionLoadTruckInfo = supervisionLoadTruckInfoDto.getData();
if (Objects.isNull(supervisionLoadTruckInfo) || !supervisionLoadTruckInfo.getLoadStatus()) {
return null;
}
//判断当前卡车是否是监装车辆
if (!Objects.equals(truckNo, supervisionLoadTruckInfo.getTruckNo())) {
return null;
}
return new SuperviseInfo(supervisionLoadInfo.getTaskContracts(), supervisionLoadInfo.getTaskMobile(), supervisionLoadInfo.getTaskAddress());
}
......@@ -3287,8 +3290,8 @@ public class OrderChildServiceImpl implements OrderChildService {
truckLatitudeY = truckTraceDTO.getLocation()[1];
}
if (truckLongitudeX == null || truckLatitudeY == null) {
BigDecimal[] location = truckTraceService.getTruckCurrentPosition(truckNo);
log.info("运单号:{},卡车:{},卡车经纬度:{}", childNo, truckNo, location);
BigDecimal[] location = truckTraceService.getCurrentPosition(truckNo, driverUserNo);
log.info("运单号:{},卡车:{},卡车/司机经纬度:{}", childNo, truckNo, location);
if (location != null && location.length >= 2) {
truckLongitudeX = location[0];
truckLatitudeY = location[1];
......@@ -3300,10 +3303,10 @@ public class OrderChildServiceImpl implements OrderChildService {
BigDecimal siteLongitudeX = orderGoods.getSendLongitude();
BigDecimal siteLatitudeY = orderGoods.getSendLatitude();
log.info("运单号:{},卡车:{},status:{},站点经度:{},站点纬度:{},卡车经度:{},卡车纬度:{}", childNo, truckNo, child.getStatus(), siteLongitudeX, siteLatitudeY, truckLongitudeX, truckLatitudeY);
//调高德获取距离
if (Objects.isNull(truckLongitudeX) || Objects.isNull(truckLatitudeY)) {
continue;
}
//调高德获取距离
Integer distance = getGdRoute(truckNo, truckLongitudeX, truckLatitudeY, siteLongitudeX,
siteLatitudeY);
if (distance == null) {
......@@ -3313,22 +3316,35 @@ public class OrderChildServiceImpl implements OrderChildService {
log.info("运单号:{},卡车:{},status:{},站点经度:{},站点纬度:{},卡车经度:{},卡车纬度:{},距离:{}", orderGoodsNo, truckNo, child.getStatus(), siteLongitudeX, siteLatitudeY, truckLongitudeX, truckLatitudeY, distance);
// 超出货源地+通知触发距离
if (distance > driverNoticeConfigVO.getNoticeTriggerDistanceMeter()) {
if (Objects.equals(child.getExitNoticeStatus(), OrderChildEnum.ExitNoticeStatus.NOT_NOTIFIED.getCode())
// 运单驶入过1km且通知状态为未通知
if (Objects.equals(child.getEnterExitSendStatus(), OrderChildEnum.EnterExitSendStatus.DRIVE_IN.getCode()) &&
Objects.equals(child.getExitNoticeStatus(), OrderChildEnum.ExitNoticeStatus.NOT_NOTIFIED.getCode())
) {
// todo :jiangwujie 增加短信次数限制
//超出货源地x公里范围了,且通知状态为未通知
// 到达货源地
if (Objects.equals(child.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())) {
Integer count = (Integer) redisTemplate.opsForValue().get(RedisConstants.NOTICE_MESSAGE_LIMIT_UNLOAD + childNo);
if (count != null && count > 3) {
log.info("{}超出货源地x公里范围了,运单{}为到达货源地状态,运单已发送短信次数:{},不进行短信通知", truckNo, childNo, count);
continue;
}
log.info("{}超出货源地x公里范围了,运单{}为到达货源地状态,发送短信", truckNo, childNo);
sendLoadSms(child.getDriverMobile(), child.getTruckNo(), child.getChildNo());
redisTemplate.opsForValue().increment(RedisConstants.NOTICE_MESSAGE_LIMIT_UNLOAD + childNo);
}
// 已装货
if (Objects.equals(child.getStatus(), OrderChildEnum.Status.LOAD.getCode())) {
SuperviseInfo superviseInfo = getSuperviseInfoWithSubStatus(child.getOrderNo(), child.getChildNo());
SuperviseInfo superviseInfo = getSuperviseInfoWithSubStatus(child.getOrderNo(), child.getChildNo(), child.getTruckNo());
log.info("运单号:{},卡车:{},监装信息{}", childNo, truckNo, superviseInfo);
if (superviseInfo != null) {
Integer count = (Integer) redisTemplate.opsForValue().get(RedisConstants.NOTICE_MESSAGE_LIMIT_UNSUPERVISED + childNo);
if (count != null && count > 3) {
log.info("{}超出货源地x公里范围了,运单{}为装货成功状态,运单已发送短信次数:{},不进行短信通知", truckNo, childNo, count);
continue;
}
log.info("{}超出货源地x公里范围了,运单{}为装货成功状态,发送短信", truckNo, childNo);
sendSupervisionSms(child.getDriverMobile(), child.getTruckNo(), child.getChildNo(), superviseInfo.getTaskAddress());
redisTemplate.opsForValue().increment(RedisConstants.NOTICE_MESSAGE_LIMIT_UNSUPERVISED + childNo);
}
}
// 修改 通知状态 为已通知
......@@ -3703,56 +3719,17 @@ public class OrderChildServiceImpl implements OrderChildService {
public NeedAlertSuperviseInfoResultVO needAlertSuperviseInfo(NeedAlertSuperviseInfoParam param) {
//查询运单信息
OrderChild orderChild = orderChildDao.getByChildNo(param.getChildNo()).orElseThrow(DATA_NOT_FIND);
SuperviseInfo superviseInfo = getSuperviseInfoWithSubStatus(orderChild.getOrderNo(), orderChild.getChildNo(), orderChild.getTruckNo());
//返回对象
NeedAlertSuperviseInfoResultVO result = new NeedAlertSuperviseInfoResultVO();
App app = appConfig.getPurchaseManageApp();//对接马上来供应链配置信息
//组装配置信息
RequestConfig config = new RequestConfig()
.setAppId(app.getAppNo())
.setAppKey(app.getAppKey())
.setGatewayUrl(app.getCallback());
//通过订单号查询监装监卸信息
SupplyChainSupervisionLoadAction action = new SupplyChainSupervisionLoadAction();
action.setOrderNo(orderChild.getOrderNo());
action.setType(param.getType());
log.info("请求获取监装监卸信息参数,{}",action);
Result<SupervisionLoadInfoDto> supervisionLoadInfoDto = OpenClient.doAction(config, action);
if(!supervisionLoadInfoDto.succeed()){//接口调用失败
result.setNeedAlert(0);
return result;
//throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "获取监装监卸信息失败");
}
SupervisionLoadInfoDto supervisionLoadInfo = supervisionLoadInfoDto.getData();//监装信息
if(Objects.nonNull(supervisionLoadInfo)){//有监装信息
//通过运单号查询监装监卸子任务状态
SupplyChainSupervisionLoadTruckAction truckAction = new SupplyChainSupervisionLoadTruckAction();
truckAction.setChildNo(param.getChildNo());
truckAction.setType(param.getType());
log.info("请求获取监装监卸子任务信息参数,{}",truckAction);
Result<SupervisionLoadTruckInfoDto> supervisionLoadTruckInfoDto = OpenClient.doAction(config, truckAction);
if(!supervisionLoadTruckInfoDto.succeed()){//接口调用失败
result.setNeedAlert(0);
return result;
//throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "获取监装监卸信息子任务失败");
}
SupervisionLoadTruckInfoDto supervisionLoadTruckInfo = supervisionLoadTruckInfoDto.getData();
if(Objects.nonNull(supervisionLoadTruckInfo)){
if(supervisionLoadTruckInfo.getLoadStatus()){
result.setNeedAlert(1);
result.setLocation(supervisionLoadInfo.getTaskAddress());
result.setMobile(supervisionLoadInfo.getTaskMobile());
result.setSupervisor(supervisionLoadInfo.getTaskContracts());
if (superviseInfo != null) {
result.setNeedAlert(OrderChildEnum.NeedAlertEnum.FAIL.getCode());
result.setLocation(superviseInfo.getTaskAddress());
result.setMobile(superviseInfo.getSuperviseMobile());
result.setSupervisor(superviseInfo.getSuperviseContacts());
return result;
}
}
}
result.setNeedAlert(0);
result.setNeedAlert(OrderChildEnum.NeedAlertEnum.OK.getCode());
return result;
}
}
......@@ -2,6 +2,7 @@ package com.clx.performance.service.impl.broker;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.SettlementDriverDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOrderChildRiskDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
......@@ -10,6 +11,7 @@ import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.model.settle.SettlementOwnerDetail;
......@@ -41,6 +43,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
@Autowired
private SettlementDriverDetailDao settlementDriverDetailDao;
@Autowired
private SettlementDriverDao settlementDriverDao;
@Autowired
private OrderChildBrokerService orderChildBrokerService;
@Autowired
private OrderChildBrokerMqService orderChildBrokerMqService;
......@@ -115,6 +119,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriver settlementDriver = settlementDriverDao
.getByChildNo(orderChild.getChildNo()).orNull();
if (Objects.equals(settlementOwnerDetail.getReportFlag(), com.clx.order.enums.OrderEnum.ReportFlag.NO.getCode())){
return;
......@@ -129,7 +135,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
try{
// 更新broker
orderChildBrokerService.orderChildUpdate(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
orderChildBrokerService.orderChildUpdate(orderChild, orderGoods, settlementOwnerDetail,
settlementDriverDetail, settlementDriver);
} catch (Exception e) {
log.info("更新无车承运失败, child:{}, msg:{}", orderChild.getChildNo(), ExceptionUtils.getStackTrace(e));
}
......
......@@ -8,6 +8,7 @@ import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.PowerTypeEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.extranal.broker.BrokerService;
......@@ -15,6 +16,7 @@ import com.clx.performance.extranal.order.InvoicingCompanyService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildImage;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.broker.OrderChildBrokerService;
......@@ -66,21 +68,24 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
public void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail) {
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail,
settlementDriverDetail, null);
brokerService.orderChildSync(transportParam);
}
@Override
public void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail, SettlementDriverDetail settlementDriverDetail) {
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
public void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail, SettlementDriver settlementDriver) {
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail,
settlementDriverDetail, settlementDriver);
// 运单更新
brokerService.orderChildUpdate(transportParam);
}
private TransportParam buildParam(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail){
SettlementDriverDetail settlementDriverDetail, SettlementDriver settlementDriver){
String host = documentFeign.getHost().getData();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderGoods.getOrderNo());
......@@ -278,7 +283,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
orderChildInfo.setInvoicePlatform(settlementOwnerDetail.getInvoicingCompanyShorterName());
orderChildInfo.setInvoiceStatus(Objects.equals(settlementOwnerDetail.getInvoiceStatus(),
SettlementOwnerDetailEnum.InvoiceStatus.YES.getCode())? 1 : 0);
orderChildInfo.setSettleStatus(Objects.equals(settlementOwnerDetail.getPayStatus(), SettlementOwnerDetailEnum.PayStatus.YES.getCode())? 1 : 0);
orderChildInfo.setSettleStatus(settlementDriver!=null
&& Objects.equals(settlementDriver.getStatus(), SettlementDriverEnum.Status.SETTLED.getCode())? 1 : 0);
transportParam.setOrder(orderInfo);
transportParam.setOrderChildImage(imageList);
......
......@@ -25,7 +25,6 @@ import com.clx.performance.struct.settle.SettlementDriverDetailStruct;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -130,6 +129,6 @@ public class OrderChildSyncTransportRecordServiceImpl implements OrderChildSyncT
log.error("支付平台服务费异常 {}",e);
}
settlementPostService.updatePaySuccess(settlementOwnerDetail);
settlementPostService.updateDriverPaySuccess(orderChild.getChildNo());
}
}
......@@ -40,6 +40,7 @@ import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.RedisUtil;
import com.clx.performance.utils.spring.ApplicationContextUtils;
import com.clx.performance.vo.mq.*;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
......@@ -157,6 +158,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Autowired
private NetworkDriverRunningWaterRecordService networkDriverRunningWaterRecordService;
@Autowired
private SettlementPostService settlementPostService;
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -660,6 +664,8 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.COMPLETE.getCode(),
OrderChildLogEnum.Type.COMPLETE.getMsg(), 0L, "系统");
settlementPostService.updateDriverPaySuccess(childNo);
}else{
settlementDriverDao.updatePayErrorMsg(settlementDriver.getId(),payErrorMsg);
}
......@@ -1037,6 +1043,60 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwnerDao.updateStatus(settlementOwner);
}
@Override
public void settlementInvoiceStatusUpdate(SettlementInvoiceStatusUpdateMqParam mq) {
SettlementOwner settlementOwner = settlementOwnerDao.findBySettlementNo(mq.getSettlementNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
if (!Objects.equals(settlementOwner.getStatus(), SettlementOwnerEnum.Status.COMPLETED.getCode())){
return;
}
if (Objects.equals(settlementOwner.getInvoiceStatus(), SettlementOwnerEnum.InvoiceStatus.INVOICED.getCode())){
return;
}
List<SettlementOwnerDetail> list = settlementOwnerDetailDao.getBySettlementNo(settlementOwner.getSettlementNo());
// 无需开票运单
List<SettlementOwnerDetail> list1 = list.stream()
.filter(item -> Objects.equals(item.getInvoiceStatus(),SettlementOwnerDetailEnum.InvoiceStatus.NO.getCode())
&& item.getInvoiceFreight().compareTo(BigDecimal.ZERO) <= 0).collect(Collectors.toList());
// 需要开票运单
List<SettlementOwnerDetail> list2 = list.stream()
.filter(item -> Objects.equals(item.getInvoiceStatus(),SettlementOwnerDetailEnum.InvoiceStatus.NO.getCode())
&& item.getInvoiceFreight().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
// 已开票运单
List<SettlementOwnerDetail> list3 = list.stream()
.filter(item -> Objects.equals(item.getInvoiceStatus(),SettlementOwnerDetailEnum.InvoiceStatus.YES.getCode()))
.collect(Collectors.toList());
if (!list1.isEmpty()) {
settlementOwnerDetailDao
.updateInvoiceStatusByIdList(list1.stream().map(item->item.getId()).collect(Collectors.toList()),
SettlementOwnerDetailEnum.InvoiceStatus.NO_INVOICE.getCode());
}
if (list2.isEmpty()){
if (list3.isEmpty()) {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.NO_NEED_INVOICE.getCode());
}
else {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.INVOICED.getCode());
}
}
else {
if (list3.isEmpty()) {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.NOT_INVOICE.getCode());
}
else {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.PART_INVOICE.getCode());
}
}
settlementOwnerDao.updateInvoiceStatus(settlementOwner);
}
private BigDecimal invoiceFreightCalc(Integer settlementWay, BigDecimal invoiceServiceFeeRate, SettlementOwnerDetail settlementOwnerDetail) {
if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
......
......@@ -6,6 +6,7 @@ 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.*;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
......@@ -149,4 +150,16 @@ public class SettlementMqServiceImpl implements SettlementMqService {
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void settlementInvoiceStatusUpdate(String settlementNo) {
SettlementInvoiceStatusUpdateMqParam mq = new SettlementInvoiceStatusUpdateMqParam();
mq.setSettlementNo(settlementNo);
MqDelay delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.SETTLEMENT_INVOICE_STATUS_UPDATE_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
}
......@@ -806,5 +806,8 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetailDao.updateSettlementByChildNoList(childNoList);
// 发送mq (运单更新)
orderChildBrokerMqService.orderChildUpdate(childNoList);
settlementPostService.updateInvoice(childNoList);
}
}
......@@ -44,13 +44,15 @@ public class SettlementOwnerExportServiceImpl implements SettlementOwnerExportSe
fieldList.add(new ExcelField(10, "预付运费金额", "prepayFreight", 5000));
fieldList.add(new ExcelField(11, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(12, "管理费", "invoiceServiceFee", 5000));
fieldList.add(new ExcelField(13, "借款抵扣金额", "loanFreight", 5000));
fieldList.add(new ExcelField(14, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(12, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(13, "管理费", "invoiceServiceFee", 5000));
fieldList.add(new ExcelField(14, "借款抵扣金额", "loanFreight", 5000));
fieldList.add(new ExcelField(15, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(16, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(17, "状态", "status", 5000));
fieldList.add(new ExcelField(15, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(16, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(17, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(18, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(19, "状态", "status", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
......@@ -73,11 +75,13 @@ public class SettlementOwnerExportServiceImpl implements SettlementOwnerExportSe
rowData.add(new ExcelData(dto.getPrepayFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getLossWeight()));
rowData.add(new ExcelData(dto.getLossFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getInvoiceServiceFee().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getLoanFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getSettlementFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getSettlementFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getInvoiceFreight().movePointLeft(2).setScale(2, RoundingMode.HALF_UP)));
rowData.add(new ExcelData(dto.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData(dto.getCreateTime()));
rowData.add(new ExcelData(dto.getStatusMsg()));
......
......@@ -33,6 +33,7 @@ import com.clx.performance.service.PlatformAccountConfigService;
import com.clx.performance.service.settle.SettlementLogService;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.service.settle.SettlementOwnerService;
import com.clx.performance.service.settle.SettlementPostService;
import com.clx.performance.struct.settle.SettlementLogStruct;
import com.clx.performance.struct.settle.SettlementOwnerStruct;
import com.clx.performance.utils.MyMD5Util;
......@@ -88,6 +89,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
private final OwnerAccountService ownerAccountService;
private final OwnerAccountPasswordDao ownerAccountPasswordDao;
private final SettlementPostService settlementPostService;
private final NetworkSyncComponent networkSyncComponent;
private final SettlementMqHandlerService settlementMqHandlerService;
......@@ -96,9 +100,6 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
private final BreakContractSettlementOwnerDao breakContractSettlementOwnerDao;
private final OwnerAccountPasswordDao ownerAccountPasswordDao;
@Override
public CarrierSettlementOwnerDetailVO getCarrierSettlementOwnerDetail(Integer id) {
//结算单详情
......@@ -687,12 +688,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
networkSyncComponent.ownerSettlementSync(settlementOwner,settlementOwnerDetailList);
}else{
// 小于0不开票
if(settlementOwner.getInvoiceFreight().compareTo(BigDecimal.ZERO) <= 0 ) {
settlementOwner.setInvoiceStatus(SettlementOwnerEnum.InvoiceStatus.NO_NEED_INVOICE.getCode());
}
settlementOwner.setStatus(SettlementOwnerEnum.Status.COMPLETED.getCode());
settlementOwnerDao.updateInvoiceStatusAndStatus(settlementOwner);
settlementOwnerDao.updateStatusBySettlementNo(settlementNo,SettlementOwnerEnum.Status.COMPLETED.getCode());
}
}
......@@ -708,6 +704,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
SettlementLogEnum.Type.COMPLETED.getCode(),SettlementLogEnum.Type.COMPLETED.getMsg(),
OrderChildLogEnum.CreateType.PLATFORM.getCode(),loginUserInfo.getUserNo(),loginUserInfo.getUserName());
}
settlementPostService.updatePayConfirm(settlementOwner);
}
@Override
......@@ -761,7 +760,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
Integer invoicingCompanyId = null;
//开票公司上报标识
Integer reportFlag = null ;
String tip = "结算单状态“待对账”且同一货主,同一开票标识,同一结算方式,同一开票公司,同一上报标识 支持合并";
String tip = "结算单状态“待对账或待货主确认”且同一货主,同一开票标识,同一结算方式,同一开票公司,同一上报标识 支持合并";
SettlementOwner merge = null;
String settlementNo = settlementMqHandlerService.settlementNoGenerate();
......@@ -771,8 +770,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
log.warn("货主结算单号:{} 结算单不允许二次合并",item.getSettlementNo());
throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,"结算单不允许二次合并");
}
if(!Objects.equals(SettlementOwnerEnum.Status.TO_BE_ACCOUNT.getCode(),item.getStatus())){
log.warn("货主结算单号:{} 的结算状态非待对账",item.getSettlementNo());
if(!Objects.equals(SettlementOwnerEnum.Status.TO_BE_ACCOUNT.getCode(),item.getStatus())
&& !Objects.equals(SettlementOwnerEnum.Status.OWNER_TO_BE_CONFIRMED.getCode(),item.getStatus())){
log.warn("货主结算单号:{} 的结算状态非待对账或待货主确认",item.getSettlementNo());
throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,tip);
}
if(Objects.nonNull(ownerUserNo) && !Objects.equals(ownerUserNo,item.getOwnerUserNo())){
......@@ -811,6 +811,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
merge.setPrepayFreight(merge.getPrepayFreight().add(item.getPrepayFreight()));
merge.setSettlementFreight(merge.getSettlementFreight().add(item.getSettlementFreight()));
merge.setInvoiceFreight(merge.getInvoiceFreight().add(item.getInvoiceFreight()));
merge.setLoadNet(merge.getLoadNet().add(item.getLoadNet()));
merge.setUnloadNet(merge.getUnloadNet().add(item.getUnloadNet()));
merge.setDriverFreight(merge.getDriverFreight().add(item.getDriverFreight()));
}else{
merge = item;
......
package com.clx.performance.service.impl.settle;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.broker.OrderChildBrokerMqService;
import com.clx.performance.service.settle.SettlementMqService;
......@@ -9,11 +11,16 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Slf4j
@Service
public class SettlementPostServiceImpl implements SettlementPostService {
@Autowired
private SettlementOwnerDetailDao settlementOwnerDetailDao;
@Autowired
private SettlementMqService settlementMqService;
......@@ -32,8 +39,25 @@ public class SettlementPostServiceImpl implements SettlementPostService {
}
@Override
public void updatePaySuccess(SettlementOwnerDetail settlementOwnerDetail) {
public void updateDriverPaySuccess(String childNo) {
// 发送mq (更新无车承运)
orderChildBrokerMqService.orderChildUpdate(childNo);
}
@Override
public void updatePayConfirm(SettlementOwner settlementOwner) {
settlementMqService.settlementInvoiceStatusUpdate(settlementOwner.getSettlementNo());
}
@Override
public void updateInvoice(List<String> childNoList) {
List<SettlementOwnerDetail> settlementOwnerDetailList = settlementOwnerDetailDao.getListByChildNoList(childNoList);
Set<String> set = settlementOwnerDetailList.stream().map(item -> item.getSettlementNo()).collect(Collectors.toSet());
for (String item : set) {
// 发送mq (更新无车承运)
orderChildBrokerMqService.orderChildUpdate(settlementOwnerDetail.getChildNo());
settlementMqService.settlementInvoiceStatusUpdate(item);
}
}
}
......@@ -2,6 +2,7 @@ package com.clx.performance.service.settle;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.vo.mq.*;
import com.clx.performance.vo.mq.settle.SettlementInvoiceStatusUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementOrderChildRiskProcessMqParam;
import com.clx.performance.vo.mq.settle.SettlementOwnerDetialInvoiceCompanyUpdateMqParam;
import com.clx.performance.vo.mq.settle.SettlementPlatformAutoConfirmMqParam;
......@@ -32,4 +33,6 @@ public interface SettlementMqHandlerService {
void settlementPlatformAutoConfirm(SettlementPlatformAutoConfirmMqParam mq);
void settlementInvoiceStatusUpdate(SettlementInvoiceStatusUpdateMqParam mq);
}
......@@ -21,4 +21,6 @@ public interface SettlementMqService {
void settlementPlatformAutoConfirmUpdate(String settlementNo);
void settlementInvoiceStatusUpdate(String settlementNo);
}
package com.clx.performance.service.settle;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import java.util.List;
......@@ -8,5 +9,10 @@ public interface SettlementPostService {
void updateInvoiceCompany(List<SettlementOwnerDetail> list);
void updatePaySuccess(SettlementOwnerDetail settlementOwnerDetail);
void updateDriverPaySuccess(String childNo);
void updatePayConfirm(SettlementOwner settlementOwner);
void updateInvoice(List<String> childNoList);
}
......@@ -16,8 +16,6 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.jdbc.SQL;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.StringJoiner;
......@@ -181,40 +179,34 @@ public class OrderChildSqlProvider {
return sql;
}
public String findArtificialCancelOrder(@Param("param") ArtificialCancelOrderQueryParam param) {
//todo jiangwujie 改成 new SQL()形式
StringBuilder sql = new StringBuilder();
sql.append("SELECT child_no, goods_name, freight_price, order_no, ");
sql.append("send_address, receive_address, ");
sql.append("driver_user_no, driver_name, driver_mobile, ");
sql.append("truck_no, unload_pound_no, weight, ");
sql.append("cancel_remark, pound_status, status, ");
sql.append("DATE_FORMAT(load_deadline, '%Y-%m-%d %H:%i:%s') AS loadDeadline, ");
sql.append("DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS createTime, ");
sql.append("DATE_FORMAT(unload_time, '%Y-%m-%d %H:%i:%s') AS unloadTime ");
sql.append("FROM order_child ");
sql.append("WHERE 1=1 ");
List<String> conditions = new ArrayList<>();
public String findArtificialCancelOrder(ArtificialCancelOrderQueryParam param) {
return new SQL() {{
SELECT("child_no, goods_name, freight_price, order_no, " +
"send_address, receive_address, " +
"driver_user_no, driver_name, driver_mobile, " +
"truck_no, unload_pound_no, weight, " +
"cancel_remark, pound_status, status, remove_load_limit_status, " +
"DATE_FORMAT(load_deadline, '%Y-%m-%d %H:%i:%s') AS loadDeadline, " +
"DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS createTime, " +
"DATE_FORMAT(unload_time, '%Y-%m-%d %H:%i:%s') AS unloadTime ");
FROM("order_child ");
if (StringUtils.isNotBlank(param.getOrderChildNo())) {
conditions.add("child_no = #{param.orderChildNo}");
WHERE("child_no = #{param.orderChildNo,jdbcType=VARCHAR}");
}
if (StringUtils.isNotBlank(param.getTruckNo())) {
conditions.add("truck_no = #{param.truckNo}");
WHERE("truck_no = #{param.truckNo,jdbcType=VARCHAR}");
}
//todo :jiangwujie 支付状态 可以忽略 ,还是使用<= >=
List<Integer> statuses = Arrays.asList(
OrderChildEnum.Status.CREATED.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(),
OrderChildEnum.Status.ARRIVE_SEND.getCode(),
OrderChildEnum.Status.LOAD.getCode(),
OrderChildEnum.Status.GO_TO_RECEIVE.getCode(),
OrderChildEnum.Status.ARRIVE_RECEIVE.getCode()
);
conditions.add("status IN (" + StringUtils.join(statuses, ", ") + ")");
sql.append("AND ");
sql.append(StringUtils.join(conditions, " AND "));
return sql.toString();
//支付状态 可以忽略
WHERE("status >=" + OrderChildEnum.Status.CREATED.getCode());
WHERE("status <=" + OrderChildEnum.Status.ARRIVE_RECEIVE.getCode());
}}.toString();
}
public static void main(String[] args) {
ArtificialCancelOrderQueryParam param = new ArtificialCancelOrderQueryParam();
param.setTruckNo("A123456");
param.setOrderChildNo("CYD1234567890");
System.out.println(new OrderChildSqlProvider().findArtificialCancelOrder(param));
}
public String orderChildCancelRecord(@Param("page") Page<OrderChildVO> page, @Param("param") OrderChildCancelRecordParam param) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论