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

Merge branch 'v17.3_youhua_20240615' into test

# Conflicts: # performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java # performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java
package com.clx.performance.feign;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO;
import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
......@@ -29,5 +29,8 @@ public interface OrderChildFeign {
@RequestMapping(value = "clx-performance/feign/orderChild/getInvoiceType", method = RequestMethod.GET)
Result<Integer> getInvoiceType(@RequestParam("orderNo") @NotBlank(message = "订单编号不能为空") String orderNo);
@PostMapping(value = {"clx-performance/feign/orderChild/cancelOrderChild"})
Result<Object> cancelOrderChild(@RequestBody @Validated CancelOrderGoodsParam param);
}
......@@ -4,9 +4,11 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
@Getter
......@@ -24,4 +26,19 @@ public class CancelOrderGoodsParam {
@Size(max=32,message = "操作人名称最多输入32个字符")
@ApiModelProperty("操作人名称")
private String createName;
@NotNull(message = "调整货物吨数不能为空")
@ApiModelProperty("调前煤炭交易数(吨)")
@DecimalMax(value = "999999999999.99",message = "调整货物吨数不能大于999999999999.99吨")
private BigDecimal beforeWeight;
@NotNull(message = "调整货物吨数不能为空")
@ApiModelProperty("调后煤炭交易数(吨)")
@DecimalMax(value = "999999999999.99",message = "调整货物吨数不能大于999999999999.99吨")
private BigDecimal afterWeight;
@NotNull(message = "已挂单的吨数不能为空")
@ApiModelProperty("已挂单的吨数(吨)")
@DecimalMax(value = "999999999999.99",message = "调整货物吨数不能大于999999999999.99吨")
private BigDecimal orderedWeight;
}
......@@ -2,6 +2,7 @@ package com.clx.performance.controller.feign;
import cn.hutool.core.collection.CollectionUtil;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.service.LastTruckService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.child.FeignOrderChildService;
......@@ -88,4 +89,11 @@ public class OrderChildFeignController {
return Result.ok(settlementOwnerDetailService.getInvoiceType(orderNo));
}
@ApiOperation(value = "取消运单", notes = "<br>By:李瑞新")
@PostMapping({"/cancelOrderChild"})
Result<Object> cancelOrderChild(@RequestBody @Validated CancelOrderGoodsParam param) {
orderChildService.cancelOrderChilds(param);
return Result.ok();
}
}
......@@ -192,6 +192,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<LineWarnOrderChildStatisticsDTO>sumLoadNumByOrderGoodsNoList(List<String> orderGoodsNoList);
List<LineWarnOrderChildStatisticsDTO>sumArriveRecieveNumByOrderGoodsNoList(List<String> orderGoodsNoList);
List<LineWarnOrderChildStatisticsDTO>sumUnloadNumByOrderGoodsNoList(List<String> orderGoodsNoList);
List<OrderChild> listByOrderNo(String orderNo,List<Integer> status);
void updateBatchOwnerCancel(List<String> childNos);
}
......@@ -634,4 +634,23 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return baseMapper.sumUnloadNumByOrderGoodsNoList(orderGoodsNoList);
}
@Override
public List<OrderChild> listByOrderNo(String orderNo,List<Integer> status) {
return list(lQrWrapper()
.eq(OrderChild :: getOrderNo,orderNo)
.in(OrderChild :: getStatus,status)
);
}
@Override
public void updateBatchOwnerCancel(List<String> childNos){
update(lUdWrapper()
.in(OrderChild::getChildNo, childNos)
.set(OrderChild::getStatus, OrderChildEnum.Status.OWNER_CANCEL.getCode())
.set(OrderChild::getCancelTime,LocalDateTime.now())
.set(OrderChild::getFinishTime,LocalDateTime.now())
.set(OrderChild::getCancelRemark,"货主减少拉运吨数,系统自动取消")
);
}
}
package com.clx.performance.service;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildLog;
import java.util.List;
......@@ -13,4 +14,6 @@ public interface OrderChildLogService {
List<OrderChildLog> getOrderChildNodeLog(String childNo);
void saveCarrierOrderChildLog(String childNo, Integer type, String remark, Long createBy, String createName);
void saveBatchOrderChildLog(List<OrderChildLog> logs);
}
......@@ -5,6 +5,7 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.*;
import com.clx.performance.param.app.owner.PageOwnerOrderChildListParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
......@@ -96,4 +97,6 @@ public interface OrderChildService {
OrderChildVO getOwnerOrderChildInfo(String childNo);
Integer getOrderChildCheck(OrderChildCheckParam param);
void cancelOrderChilds(CancelOrderGoodsParam param);
}
......@@ -48,4 +48,8 @@ public class OrderChildLogServiceImpl implements OrderChildLogService {
}
@Override
public void saveBatchOrderChildLog(List<OrderChildLog> logs) {
orderChildLogDao.saveBatchList(logs);
}
}
......@@ -38,6 +38,7 @@ import com.clx.performance.model.breakcontract.BreakContractDriverRecord;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.app.*;
import com.clx.performance.param.app.owner.PageOwnerOrderChildListParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
......@@ -2650,4 +2651,75 @@ public class OrderChildServiceImpl implements OrderChildService {
}
return new Page<>();
}
@Override
public void cancelOrderChilds(CancelOrderGoodsParam param) {
BigDecimal orderedWeight = param.getOrderedWeight();//已挂的吨数
BigDecimal availableWeight = param.getAfterWeight();//可拉运吨数
List<Integer> arriveAfterStatus = new ArrayList<>();//到达货源地后运单状态
arriveAfterStatus.add(OrderChildEnum.Status.ARRIVE_SEND.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.LOAD.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.GO_TO_RECEIVE.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.ARRIVE_RECEIVE.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.UNLOAD.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.UNSETTLE.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.COMPLETE.getCode());
List<Integer> arriveBeforeStatus = new ArrayList<>();//未到达货源地运单状态
arriveBeforeStatus.add(OrderChildEnum.Status.CREATED.getCode());
arriveBeforeStatus.add(OrderChildEnum.Status.PAY.getCode());
arriveBeforeStatus.add(OrderChildEnum.Status.GO_TO_SEND.getCode());
List<String> childNos;//取消运单
//未到达货源地之前运单(不包括取消)
List<OrderChild> arriveBeforeOrderChild = orderChildDao.listByOrderNo(param.getOrderNo(),arriveBeforeStatus);
log.info("arriveBeforeOrderChild:{}",arriveBeforeOrderChild);
if(orderedWeight.compareTo(availableWeight) > 0){//已挂吨数大于可拉运吨数 取消未到达货源地的运单
log.info("已挂吨数大于可拉运吨数,取消未到达货源地的运单:{}",orderedWeight.compareTo(availableWeight));
//到达货源地之后运单(不包括取消)
List<OrderChild> arriveAfterOrderChild = orderChildDao.listByOrderNo(param.getOrderNo(),arriveAfterStatus);
log.info("arriveAfterOrderChild:{}",arriveAfterOrderChild);
BigDecimal arriveAfterWeight = arriveAfterOrderChild.stream().map(OrderChild::getWeight)
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);//总拉运吨数
log.info("总拉运吨数:{}",arriveAfterWeight);
if(availableWeight.compareTo(arriveAfterWeight) >0){//可拉运吨数大于运单拉运吨数 取消未到达货源地的运单
log.info("可拉运吨数大于运单拉运吨数,取消未到达货源地的运单:{}",availableWeight.compareTo(arriveAfterWeight));
BigDecimal weight =BigDecimal.ZERO;//运单累加吨数
BigDecimal subtract = availableWeight.subtract(arriveAfterWeight);//可拉运吨数-运单拉运吨数=司机可以接单拉运吨数
List<String> notCancelChildNos = new ArrayList<>();//不需要取消的运单
for(OrderChild oc:arriveBeforeOrderChild){
weight = weight.add(oc.getWeight());
if(weight.compareTo(subtract) >=0){
break;
}
notCancelChildNos.add(oc.getChildNo());//获取可以取消的运单
}
log.info("notCancelChildNos:{}",notCancelChildNos);
childNos = arriveBeforeOrderChild.stream().map(OrderChild::getChildNo).collect(Collectors.toList());//未到达货源地
childNos.removeAll(notCancelChildNos);//剔除不需要取消的运单
}else{
childNos = arriveBeforeOrderChild.stream().map(OrderChild::getChildNo).collect(Collectors.toList());//未到达货源地
}
log.info("批量取消运单:childNos:{}",childNos);
//批量取消运单
if(CollectionUtils.isNotEmpty(childNos)){
orderChildDao.updateBatchOwnerCancel(childNos);
//保存日志
List<OrderChildLog> logs = new ArrayList<>();
OrderChildLog log = null;
for(String string :childNos){
log = new OrderChildLog();
log.setChildNo(string);
log.setType(OrderChildLogEnum.Type.OWNER_CANCEL.getCode());
log.setRemark(OrderChildLogEnum.Type.OWNER_CANCEL.getMsg());
log.setCreateBy(param.getCreateBy());
log.setCreateName(param.getCreateName());
logs.add(log);
}
orderChildLogService.saveBatchOrderChildLog(logs);
}
}
}
}
......@@ -1010,11 +1010,14 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
@Override
@Transactional(rollbackFor = Exception.class)
public void cancelOrderGoods(CancelOrderGoodsParam param) {
log.info("取消货单:{}",param);
//取消货单
orderGoodsDao.cancelOrderGoods(param.getOrderNo());
//批量保存货单日志
List<OrderGoods> orderGoodsListByOrderNo = orderGoodsDao.getOrderGoodsListByOrderNo(param.getOrderNo());
log.info("orderGoodsListByOrderNo:{}",orderGoodsListByOrderNo);
List<OrderGoodsLog> orderGoodsLogs = new ArrayList<>();
OrderGoodsLog orderGoodsLog = null;
for(OrderGoods orderGoods:orderGoodsListByOrderNo){
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论