提交 e2c6ac0d authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/v5.7_break_contract_reverse_20231020' into…

Merge remote-tracking branch 'origin/v5.7_break_contract_reverse_20231020' into v5.7_break_contract_reverse_20231020
......@@ -3,6 +3,7 @@ package com.clx.performance.controller.pc.breakcontract.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
......@@ -15,12 +16,10 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
@Slf4j
......@@ -52,4 +51,12 @@ public class CarrierBreakContractSettlementOwnerController {
return null;
}
@ApiOperation(value = "详情",notes = "<br>By:李瑞新")
@GetMapping("/getCarrierBreakContractSettlementOwnerDetail")
@UnitCovert(param = false)
public Result<CarrierBreakContractSettlementOwnerDetailVO> getCarrierBreakContractSettlementOwnerDetail(@NotNull(message = "id不能为空") Integer id) {
return Result.ok(breakContractSettlementOwnerService.getCarrierBreakContractSettlementOwnerDetail(id));
}
}
package com.clx.performance.controller.pc.breakcontract.owner;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO;
import com.msl.common.convertor.aspect.UnitCovert;
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;
import javax.validation.constraints.NotNull;
@Slf4j
@RestController
@RequestMapping(value="/pc/owner/breakContract")
@Validated
@Api(tags = "承运端-违约方案")
@Api(tags = "货主端-违约结算单(货主)")
@AllArgsConstructor
public class OwnerBreakContractSettlementOwnerController {
private final BreakContractSettlementOwnerService breakContractSettlementOwnerService;
@ApiOperation(value = "详情",notes = "<br>By:李瑞新")
@GetMapping("/getOwnerBreakContractSettlementOwnerDetail")
@UnitCovert(param = false)
public Result<CarrierBreakContractSettlementOwnerDetailVO> getCarrierBreakContractSettlementOwnerDetail(@NotNull(message = "id不能为空") Integer id) {
return Result.ok(breakContractSettlementOwnerService.getCarrierBreakContractSettlementOwnerDetail(id));
}
}
......@@ -5,10 +5,14 @@ import com.clx.performance.mapper.breakcontract.BreakContractSettlementLogMapper
import com.clx.performance.model.breakcontract.BreakContractSettlementLog;
import com.msl.common.dao.BaseDao;
import java.util.List;
/**
* @author liruixin
* Date 2023-10-24
* Time 16:02
*/
public interface BreakContractSettlementLogDao extends BaseDao<BreakContractSettlementLogMapper, BreakContractSettlementLog, Integer> {
List<BreakContractSettlementLog> getSettlementLogs(String settlementNo);
}
......@@ -7,6 +7,8 @@ import com.clx.performance.model.breakcontract.BreakContractSettlementLog;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author liruixin
* Date 2023-10-24
......@@ -14,4 +16,11 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public class BreakContractSettlementLogDaoImpl extends BaseDaoImpl<BreakContractSettlementLogMapper, BreakContractSettlementLog, Integer> implements BreakContractSettlementLogDao {
@Override
public List<BreakContractSettlementLog> getSettlementLogs(String settlementNo) {
return super.list(lQrWrapper()
.eq(BreakContractSettlementLog::getSettlementNo, settlementNo)
.orderByDesc(BreakContractSettlementLog::getId));
}
}
package com.clx.performance.service;
public interface OrderCancelService {
}
......@@ -2,6 +2,7 @@ package com.clx.performance.service.breakcontract;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
......@@ -15,4 +16,6 @@ public interface BreakContractSettlementOwnerService {
SXSSFWorkbook exportCarrierBreakContractSettlementOwnerList(PageCarrierBreakContractSettlementOwnerParam param);
CarrierBreakContractSettlementOwnerDetailVO getCarrierBreakContractSettlementOwnerDetail(Integer id);
}
package com.clx.performance.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.clx.order.enums.OrderEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.TruckDemandEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderCancelService;
import com.clx.performance.service.OrderChildService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
@Service
@AllArgsConstructor
public class OrderCancelServiceImpl implements OrderCancelService {
private final OrderFeign orderFeign;
private final OrderChildDao orderChildDao;
private final OrderGoodsDao orderGoodsDao;
@Transactional(rollbackFor = Exception.class)
public void ownerCancelOrderPre(String orderNo) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
BigDecimal orderResidueWeight = new BigDecimal(orderInfoFeign.getResidueWeight());
if (BigDecimal.ZERO.compareTo(orderResidueWeight) == 0) {
throw new RuntimeException("需要承运吨数的车辆,已全部到达货源地,无法取消");
}
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if (CollectionUtil.isEmpty(orderGoodsList)) {
//未产生货单
orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
}
BigDecimal orderGoodsResidueWeight = orderGoodsList.stream().map(OrderGoods::getResidueTransportWeight).reduce(BigDecimal::add).get();
if (BigDecimal.ZERO.compareTo(orderGoodsResidueWeight) == 0) {
throw new RuntimeException("需要承运吨数的车辆,已全部到达货源地,无法取消");
}
List<OrderChild> orderChildren = orderChildDao.selectResidueWeight(orderNo);
if (CollectionUtil.isEmpty(orderChildren)) {
//说明此刻未产生运单
for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao.updateEntityByKey(update);
}
orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
} else {
for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.COMPLETED.getCode());
}
}
@Transactional(rollbackFor = Exception.class)
public void ownerCancelOrder(String orderNo) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
BigDecimal orderResidueWeightAll = BigDecimal.ZERO;
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
Map<Integer, BigDecimal> truckDemandMap = new HashMap<>();
truckDemandMap.put(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode(), BigDecimal.ZERO);
truckDemandMap.put(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode(), BigDecimal.ZERO);
truckDemandMap.put(TruckDemandEnum.TruckType.OWNER_CAR.getCode(), BigDecimal.ZERO);
if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeign.getOrderStatus())) {
//已完结
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo);
for (OrderChild orderChild : orderChildrenList) {
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.OWNER_CANCEL.getCode());
orderChildDao.updateEntityByKey(update);
}
Map<String, List<OrderGoods>> orderGoodsMap = orderGoodsList.stream().collect(Collectors.groupingBy(OrderGoods::getOrderGoodsNo));
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream().collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
String orderGoodsNo = entry.getKey();
OrderGoods orderGoods = entry.getValue().get(0);
BigDecimal sum = orderChildMap.get(orderGoodsNo).stream().map(OrderChild::getWeight).reduce(BigDecimal::add).get();
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
update.setResidueTransportWeight(orderGoods.getResidueTransportWeight().add(sum));
truckDemandMap.put(orderGoods.getTruckDemand(), truckDemandMap.get(orderGoods.getTruckDemand()).add(update.getResidueTransportWeight()));
}
} else if (OrderEnum.Status.CANCELED.getCode().equals(orderInfoFeign.getOrderStatus())) {
//已取消
for (OrderGoods orderGoods : orderGoodsList) {
truckDemandMap.put(orderGoods.getTruckDemand(), truckDemandMap.get(orderGoods.getTruckDemand()).add(orderGoods.getResidueTransportWeight()));
}
}
}
}
......@@ -210,7 +210,9 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
String residueWeight = orderInfoFeign.getResidueWeight();
List<OrderChild> orderChildList = orderChildDao.selectResidueWeight(orderNo);
BigDecimal childResidueWeight = orderChildList.stream().map(OrderChild::getWeight).reduce(BigDecimal::add).get();
return childResidueWeight.add(new BigDecimal(residueWeight));
BigDecimal orderGoodsResidueWeight = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo).stream().map(OrderGoods::getResidueTransportWeight).reduce(BigDecimal::add).get();
return childResidueWeight.add(new BigDecimal(residueWeight)).add(orderGoodsResidueWeight);
}
}
......
......@@ -3,15 +3,21 @@ package com.clx.performance.service.impl.breakcontract;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.breakcontract.BreakContractSettlementLogDao;
import com.clx.performance.dao.breakcontract.BreakContractSettlementOwnerDao;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.model.breakcontract.BreakContractSettlementLog;
import com.clx.performance.model.breakcontract.BreakContractSettlementOwner;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.performance.struct.breakcontract.BreakContractSettlementLogStruct;
import com.clx.performance.struct.breakcontract.BreakContractSettlementOwnerStruct;
import com.clx.performance.utils.excel.ExcelData;
import com.clx.performance.utils.excel.ExcelField;
import com.clx.performance.utils.excel.ExcelSheet;
import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementLogVO;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -33,6 +39,9 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
private final BreakContractSettlementOwnerDao breakContractSettlementOwnerDao;
private final BreakContractSettlementOwnerStruct breakContractSettlementOwnerStruct;
private final BreakContractSettlementLogDao breakContractSettlementLogDao;
private final BreakContractSettlementLogStruct breakContractSettlementLogStruct;
@Override
public IPage<PageCarrierBreakContractSettlementOwnerVO> pageCarrierBreakContractSettlementOwnerList(PageCarrierBreakContractSettlementOwnerParam param) {
......@@ -94,4 +103,19 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
//创建excel
return ExcelUtil.create(excelSheet);
}
@Override
public CarrierBreakContractSettlementOwnerDetailVO getCarrierBreakContractSettlementOwnerDetail(Integer id) {
//结算单详情
BreakContractSettlementOwner settlementOwner =breakContractSettlementOwnerDao.getEntityByKey(id).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
CarrierBreakContractSettlementOwnerDetailVO detail = breakContractSettlementOwnerStruct.convertToDetail(settlementOwner);
String settlementNo = settlementOwner.getSettlementNo();
List<BreakContractSettlementLog> settlementLogs = breakContractSettlementLogDao.getSettlementLogs(settlementNo);
List<CarrierBreakContractSettlementLogVO> settlementLogVOS = breakContractSettlementLogStruct.covertToCarrierList(settlementLogs);
detail.setLogs(settlementLogVOS);
return detail;
}
}
package com.clx.performance.struct.breakcontract;
import com.clx.performance.model.breakcontract.BreakContractSettlementLog;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementLogVO;
import com.msl.common.utils.DateStructUtil;
import com.msl.common.utils.DateUtils;
import org.mapstruct.Mapper;
import java.util.List;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {DateUtils.class})
public interface BreakContractSettlementLogStruct {
List<CarrierBreakContractSettlementLogVO> covertToCarrierList(List<BreakContractSettlementLog> list);
}
......@@ -3,6 +3,7 @@ package com.clx.performance.struct.breakcontract;
import com.clx.performance.enums.BreakContractSettlementDriverEnum;
import com.clx.performance.enums.BreakContractSettlementOwnerEnum;
import com.clx.performance.model.breakcontract.BreakContractSettlementOwner;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerVO;
import com.msl.common.utils.DateStructUtil;
import com.msl.common.utils.DateUtils;
......@@ -25,4 +26,8 @@ public interface BreakContractSettlementOwnerStruct {
@IterableMapping(qualifiedByName = "toBaseVo")
List<PageCarrierBreakContractSettlementOwnerVO> covertToCarrierList(List<BreakContractSettlementOwner> list);
@Mapping(target = "breakContractPartyTypeMsg", expression = "java(BreakContractSettlementDriverEnum.BreachContractPartyType.getMsgByCode(settlementOwner.getBreakContractPartyType()))")
CarrierBreakContractSettlementOwnerDetailVO convertToDetail(BreakContractSettlementOwner settlementOwner);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论