提交 d5a037bf authored 作者: 杨启发's avatar 杨启发

结算单优化

上级 acc86185
......@@ -7,6 +7,7 @@ import com.clx.performance.component.GoodsOrderStrategyContext;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.param.pc.*;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsAdjustmentPriceService;
import com.clx.performance.service.OrderGoodsService;
......@@ -19,13 +20,17 @@ import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -130,6 +135,15 @@ public class GoodsOrderController {
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "导出货单列表",notes = "<br>By:杨启发")
@PostMapping("/exportOrderGoods")
public void exportOrderGoods(@RequestBody PageOrderGoodsListParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = orderGoodsService.exportOrderGoods(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
@ApiOperation(value = "货单编辑查询", notes = "<br>By:胡宇帆")
@GetMapping("/findOrderGoodsByBatchNumber")
@UnitCovert
......
......@@ -127,6 +127,7 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.set(OrderChild::getWeight, item.getWeight())
.set(OrderChild::getFreight, item.getFreight())
.set(OrderChild::getPlatformServiceFee, item.getPlatformServiceFee())
.set(OrderChild::getPoundAuditTime,item.getPoundAuditTime())
);
}
......
......@@ -104,6 +104,7 @@ public class OrderChild implements HasKey<Integer> {
private BigDecimal platformServiceFee; //平台服务费(分)
private BigDecimal platformServiceFeeRate; //平台服务费费率%
private BigDecimal deposit; //接单保证金(分/车)
private LocalDateTime poundAuditTime; //磅单审核通过时间
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
......
......@@ -8,6 +8,7 @@ import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.FreightEstimateVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
......@@ -15,6 +16,7 @@ import com.clx.performance.vo.pc.DriverFreightPriceVO;
import com.clx.performance.vo.pc.OrderGoodsEditVO;
import com.clx.performance.vo.pc.OrderGoodsPendingVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -32,6 +34,8 @@ public interface OrderGoodsService {
IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param);
SXSSFWorkbook exportOrderGoods(PageOrderGoodsListParam param);
void updateOrderGoodsReduceWeightAndStatusAmountLoad(OrderGoods orderGoods, BigDecimal orderChildWeight, Integer orderGoodsStatus);
void borrowWeight(OrderGoods orderGoods,String orderChildNo,BigDecimal subOrderGoodsResidue, BigDecimal addAlready,BigDecimal borrowOrderWeight,
......
package com.clx.performance.service.impl;
import com.alibaba.druid.sql.visitor.functions.If;
import com.clx.order.enums.QuotationEnum;
import com.clx.performance.dao.*;
import com.clx.performance.dto.payment.PaymentDTO;
......@@ -22,11 +23,13 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.clx.performance.enums.OrderChildPoundAuditEnum.Status.APPROVED;
import static com.msl.common.utils.LocalDateTimeUtils.convertLocalDateTimeToDefaultString;
/**
......@@ -169,6 +172,10 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
//更新运单数据
orderChild.setPoundStatus(param.getStatus());
//磅单审核通过时间
if (APPROVED.getCode().equals(param.getStatus())){
orderChild.setPoundAuditTime(LocalDateTime.now());
}
orderChildDao.updatePoundAuditStatus(orderChild);
//保存磅单审核数据
......
......@@ -2294,7 +2294,7 @@ public class OrderChildServiceImpl implements OrderChildService {
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("运单列表", "运单列表", fieldList, dataList);
ExcelSheet excelSheet = new ExcelSheet("运单明细", "运单明细", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
......
......@@ -21,6 +21,8 @@ import com.clx.performance.dao.*;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.dto.OrderGoodsCancelDTO;
import com.clx.performance.enums.*;
import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.extranal.order.QuotationService;
import com.clx.performance.extranal.user.DriverService;
......@@ -36,6 +38,10 @@ import com.clx.performance.service.OrderGoodsLogService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.struct.OrderGoodsStruct;
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.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.FreightEstimateVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
......@@ -44,6 +50,7 @@ import com.clx.performance.vo.pc.DriverFreightPriceVO;
import com.clx.performance.vo.pc.OrderGoodsEditVO;
import com.clx.performance.vo.pc.OrderGoodsPendingVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.clx.performance.vo.pc.carrier.settle.SettlementOrderChildRiskVO;
import com.clx.user.enums.driver.DriverInfoEnum;
import com.clx.user.feign.UserClxFeign;
import com.msl.common.base.Optional;
......@@ -56,6 +63,7 @@ import com.msl.user.utils.TokenUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
......@@ -200,6 +208,56 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
return page;
}
@Override
public SXSSFWorkbook exportOrderGoods(PageOrderGoodsListParam param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<OrderGoodsVO> orderGoodsPage = pageOrderGoodsList(param);
List<OrderGoodsVO> list = orderGoodsPage.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, "发货地址", "sendAddressShorter", 5000));
fieldList.add(new ExcelField(3, "收货地址", "receiveAddressShorter", 5000));
fieldList.add(new ExcelField(4, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(5, "提取吨数", "extractWeight", 5000));
fieldList.add(new ExcelField(6, "已派单", "dispatchedOrders", 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 (OrderGoodsVO vo : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(vo.getOrderGoodsNo()));
rowData.add(new ExcelData(vo.getOrderNo()));
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.getDispatchedOrders()));
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);
}
@Override
public void updateOrderGoodsReduceWeightAndStatusAmountLoad(OrderGoods orderGoods, BigDecimal orderChildWeight, Integer orderGoodsStatus) {
if (orderGoods.getOrderGoodsStatus().equals(OrderGoodsStatusEnum.Status.CANCEL.getCode())
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论