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

新增挂单运费页面接口

上级 b58df0d0
package com.clx.performance.controller.pc;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.PagePendingFreightParam;
import com.clx.performance.service.PendingFreightService;
import com.clx.performance.vo.pc.PagePendingFreightVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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;
/**
* @ClassName PendingFreightController
* @Description
* @Author kavin
* @Date 2024/10/21 9:47
* @Version 1.0
*/
@Slf4j
@RestController
@RequestMapping(value="/pc/pendingFreight")
@Validated
@Tag(name = "挂单运费")
@AllArgsConstructor
public class PendingFreightController {
private final PendingFreightService pendingFreightService;
@Operation(summary = "查看挂单运费分页列表", description = "<br>By:刘海泉")
@PostMapping("/pagePendingFreight")
@UnitCovert(param = false)
public Result<PageData<PagePendingFreightVO>> pagePendingFreight(@RequestBody @Validated PagePendingFreightParam param) {
IPage<PagePendingFreightVO> page = pendingFreightService.pagePendingFreight(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@Operation(summary = "导出挂单运费", description = "<br>By:刘海泉")
@PostMapping("/exportPendingFreight")
@UnitCovert(param = false)
public void exportPendingFreight(@RequestBody @Validated PagePendingFreightParam param, HttpServletResponse response) throws Exception {
SXSSFWorkbook workbook = pendingFreightService.exportPendingFreight(param);
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.PagePendingFreightParam;
import com.msl.common.dao.BaseDao;
import com.clx.performance.mapper.PendingFreightMapper;
import com.clx.performance.model.PendingFreight;
......@@ -15,4 +17,6 @@ public interface PendingFreightDao extends BaseDao<PendingFreightMapper, Pending
long updateInternalReportData(String orderNo, String name, BigDecimal logisticsFreight);
void updateOrderedAndLoadTruckRate(String orderNo, BigDecimal orderedRate, BigDecimal loadTruckRate);
IPage<PendingFreight> pagePendingFreight(PagePendingFreightParam param);
}
package com.clx.performance.dao.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.PendingFreightDao;
import com.clx.performance.mapper.PendingFreightMapper;
import com.clx.performance.model.PendingFreight;
import com.clx.performance.param.pc.PagePendingFreightParam;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
......@@ -35,4 +39,11 @@ public class PendingFreightDaoImpl extends BaseDaoImpl<PendingFreightMapper, Pen
update.eq(PendingFreight :: getOrderNo,orderNo);
baseMapper.update(update);
}
@Override
public IPage<PendingFreight> pagePendingFreight(PagePendingFreightParam param) {
LambdaQueryWrapper<PendingFreight> query = new LambdaQueryWrapper<>();
query.orderByDesc(PendingFreight :: getId);
return baseMapper.selectPage(Page.of(param.getPage(),param.getPageSize()),query);
}
}
package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.open.sdk.callback.message.OrderInfoMessage;
import com.clx.order.param.mq.SyncPendingFreightInternalReportParam;
import com.clx.performance.param.pc.PagePendingFreightParam;
import com.clx.performance.vo.pc.PagePendingFreightVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
/**
* @author kavin
......@@ -17,4 +21,8 @@ public interface PendingFreightService {
void dealPendingFreight4OrderGoods(String orderNo);
void dealPendingFreight4OrderChild(String orderNo);
IPage<PagePendingFreightVO> pagePendingFreight(PagePendingFreightParam param);
SXSSFWorkbook exportPendingFreight(PagePendingFreightParam param);
}
package com.clx.performance.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.open.sdk.callback.message.OrderInfoMessage;
import com.clx.order.param.mq.SyncPendingFreightInternalReportParam;
import com.clx.order.vo.feign.FeignAddressVO;
......@@ -8,25 +10,37 @@ import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.PendingFreightDao;
import com.clx.performance.dto.OrderedAndLoadTruckRateDTO;
import com.clx.performance.dto.gd.GdRouteDTO;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.ResultEnum;
import com.clx.performance.extranal.user.AddressService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.PendingFreight;
import com.clx.performance.param.pc.PageOrderGoodsListParam;
import com.clx.performance.param.pc.PagePendingFreightParam;
import com.clx.performance.service.PendingFreightService;
import com.clx.performance.service.PerformanceProgressService;
import com.clx.performance.struct.PendingFreightStruct;
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.utils.gd.GdService;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.clx.performance.vo.pc.PagePendingFreightVO;
import com.msl.common.base.Optional;
import com.msl.common.exception.ServiceSystemException;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
......@@ -47,6 +61,7 @@ public class PendingFreightServiceImpl implements PendingFreightService {
private final PerformanceProgressService performanceProgressService;
private final OrderGoodsDao orderGoodsDao;
private final OrderChildDao orderChildDao;
private final PendingFreightStruct pendingFreightStruct;
//处理挂单运费订单部分
......@@ -196,4 +211,67 @@ public class PendingFreightServiceImpl implements PendingFreightService {
return distance;
}
@Override
public IPage<PagePendingFreightVO> pagePendingFreight(PagePendingFreightParam param) {
IPage<PendingFreight> page = pendingFreightDao.pagePendingFreight(param);
List<PagePendingFreightVO> list = pendingFreightStruct.convertList(page.getRecords());
return new Page<PagePendingFreightVO>().setRecords(list).setTotal(page.getTotal()).setPages(page.getPages());
}
@Override
public SXSSFWorkbook exportPendingFreight(PagePendingFreightParam param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<PagePendingFreightVO> page = pagePendingFreight(param);
List<PagePendingFreightVO> list = page.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "货单编号", "orderGoodsNo", 5000));
fieldList.add(new ExcelField(1, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(2, "订单来源", "orderSourceMsg", 5000));
fieldList.add(new ExcelField(3, "发货地址", "sendAddressShorter", 5000));
fieldList.add(new ExcelField(4, "收货地址", "receiveAddressShorter", 5000));
fieldList.add(new ExcelField(5, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(6, "提取吨数", "extractWeight", 5000));
fieldList.add(new ExcelField(7, "已抢单吨数", "alreadyTransportWeight", 5000));
fieldList.add(new ExcelField(8, "未抢单吨数", "residueTransportWeight", 5000));
fieldList.add(new ExcelField(9, "已装车吨数", "alreadyLoadWeight", 5000));
fieldList.add(new ExcelField(10, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(11, "货单状态", "orderGoodsStatus", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
/* for (PagePendingFreightVO vo : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(vo.getOrderGoodsNo()));
rowData.add(new ExcelData(vo.getOrderNo()));
rowData.add(new ExcelData(vo.getOrderSourceMsg(), "-"));
rowData.add(new ExcelData(vo.getSendAddressShorter()));
rowData.add(new ExcelData(vo.getReceiveAddressShorter()));
rowData.add(new ExcelData(vo.getGoodsName()));
rowData.add(new ExcelData(vo.getExtractWeight()));
rowData.add(new ExcelData(vo.getAlreadyTransportWeight()));
rowData.add(new ExcelData(vo.getResidueTransportWeight()));
rowData.add(new ExcelData(vo.getAlreadyLoadWeight()));
rowData.add(new ExcelData(vo.getCreateTime()));
rowData.add(new ExcelData(OrderGoodsStatusEnum.Status.getMsgByCode(vo.getOrderGoodsStatus())));
dataList.add(rowData);
}
*/
ExcelSheet excelSheet = new ExcelSheet("货单明细", "货单明细", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
}
package com.clx.performance.struct;
import com.clx.performance.model.PendingFreight;
import com.clx.performance.vo.pc.PagePendingFreightVO;
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 PendingFreightStruct {
List<PagePendingFreightVO> convertList(List<PendingFreight> records);
}
package com.clx.performance.param.pc;
import com.msl.common.base.PageParam;
/**
* @ClassName PagePendingFreightParam
* @Description
* @Author kavin
* @Date 2024/10/21 9:50
* @Version 1.0
*/
public class PagePendingFreightParam extends PageParam {
}
package com.clx.performance.vo.pc;
import com.clx.performance.enums.OrderEnum;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
* @ClassName PagePendingFreightVO
* @Description
* @Author kavin
* @Date 2024/10/21 9:51
* @Version 1.0
*/
@Getter
@Setter
public class PagePendingFreightVO {
private Integer id;
@Schema(description="订单编号")
private String orderNo;
@Schema(description="订单状态")
private Integer orderStatus;
@Schema(description="货源地")
private String sendAddressShorter;
@Schema(description="煤源位置")
private String sendAddress;
@Schema(description="物流经理")
private String seniorLogisticsManagerName;
@Schema(description="货物名称id")
private Integer goodsNameId;
@Schema(description="货物名称")
private String goodsName;
@Schema(description="热值编码")
private String goodsTypeCode;
@Schema(description="热值名称")
private String goodsTypeName;
@Schema(description="是否C类煤源 0 否 1 是")
private Integer sendOverStandard;
public String sendOverStandardMsg;
public String getSendOverStandardMsg(){
return OrderEnum.OverWeight.getNameByCode(sendOverStandard);
}
@Schema(description="任务吨数")
private BigDecimal taskWeight;
@Schema(description="接单率")
private BigDecimal orderedRate;
@Schema(description="装车率")
private BigDecimal loadTruckRate;
@Schema(description="重车运距(公里)")
private BigDecimal orderDistance;
@Schema(description="煤源地开支")
private String sendAddressExpenses;
@Schema(description="历史运费")
@MoneyOutConvert
private BigDecimal historyFreight;
@Schema(description="历史平均运费")
@MoneyOutConvert
private BigDecimal historyAvgFreight;
@Schema(description="测算运费")
@MoneyOutConvert
private BigDecimal predictionFreightPrice;
@Schema(description="物流运费")
@MoneyOutConvert
private BigDecimal logisticsFreight;
@Schema(description="创建时间")
private String createTime;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论