提交 95a347b5 authored 作者: jiangwujie's avatar jiangwujie

fix(货单、认证): merge branch into dev

......@@ -30,7 +30,7 @@ public enum SettlementOrderChildRiskEnum {
@Getter
@AllArgsConstructor
public enum processMethod {
public enum ProcessMethod {
SYNC_RETRY(1, "重新同步"),
CONVERT_NORMAL(2, "转普通单"),
;
......@@ -38,12 +38,12 @@ public enum SettlementOrderChildRiskEnum {
private final Integer code;
private final String msg;
public static Optional<processMethod> getByCode(int code) {
public static Optional<ProcessMethod> getByCode(int code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(processMethod::getMsg).orElse(null);
return getByCode(code).map(ProcessMethod::getMsg).orElse(null);
}
}
......
package com.clx.performance.param.pc.carrier;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class PageSettlementOrderChildRiskParam extends PageParam {
@ApiModelProperty(value = "运单编号")
private String childNo;
@ApiModelProperty(value="车牌号")
private String truckNo;
@ApiModelProperty(value = "处理状态:1待处理 2已处理")
private Integer status;
@ApiModelProperty(value="开始时间")
private String startTime;
@ApiModelProperty(value="结束时间")
private String endTime;
}
......@@ -28,9 +28,9 @@ public class PageCarrierSettlementDriverParam extends PageParam {
@ApiModelProperty(value="状态 1:待结算 2:已结算",example = "10")
private String status;
@ApiModelProperty(value="开始时间")
private String startTime;
@ApiModelProperty(value="结束时间")
private String endTime;
}
......@@ -32,7 +32,7 @@ public class CarrierPageSettlementOwnerVO {
@ApiModelProperty(value = "实际净重(吨)")
private BigDecimal weight;
@MoneyOutConvert
@ApiModelProperty(value = "实际运费金额")
@ApiModelProperty(value = "应付运费")
private BigDecimal freight;
@MoneyOutConvert
@ApiModelProperty(value = "预付运费金额")
......@@ -68,4 +68,12 @@ public class CarrierPageSettlementOwnerVO {
@ApiModelProperty("是否上报 0-否;1-是")
private Integer reportFlag;
@ApiModelProperty("装车净重(单位吨)")
private BigDecimal loadNet;
@ApiModelProperty("卸车净重(单位吨)")
private BigDecimal unloadNet;
@ApiModelProperty("司机实收(分)")
private BigDecimal driverFreight;
}
package com.clx.performance.vo.pc.carrier.settle;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class SettlementOrderChildRiskVO {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "运单编号")
private String childNo;
@ApiModelProperty(value = "车牌号")
private String truckNo;
@ApiModelProperty(value = "司机名称")
private String driverName;
@ApiModelProperty(value = "司机联系电话")
private String driverMobile;
@ApiModelProperty(value = "货物名称")
private String goodsName;
@ApiModelProperty(value = "开票标识:1网运单 2普通单")
private Integer invoiceType;
@ApiModelProperty(value = "磅单审核通过时间")
private String poundAuditTime;
@ApiModelProperty(value = "风控标识:1同步失败 2结算打回")
private Integer riskType;
@ApiModelProperty(value = "风控失败原因")
private String riskRemark;
@ApiModelProperty(value = "处理方式:1重新同步 2转普通单")
private Integer processMethod;
@ApiModelProperty(value = "处理人")
private String processBy;
@ApiModelProperty(value = "处理时间")
private String processTime;
@ApiModelProperty(value = "处理状态:1待处理 2已处理")
private Integer status;
@ApiModelProperty(value = "创建时间")
private String createTime;
@ApiModelProperty(value = "修改时间")
private String modifiedTime;
}
\ No newline at end of file
......@@ -47,23 +47,27 @@ public class PageOwnerSettlementOwnerDetailVO {
private BigDecimal weight;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "1.23")
@ApiModelProperty(value = "装车毛重(吨)", example = "1.23")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
@ApiModelProperty(value = "装车皮重(吨)", example = "1.23")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
@ApiModelProperty(value = "装车净重(吨)", example = "1.23")
private BigDecimal loadNet;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "1.23")
@ApiModelProperty(value = "卸车毛重(吨)", example = "1.23")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
@ApiModelProperty(value = "卸车皮重(吨)", example = "1.23")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
@ApiModelProperty(value = "卸车净重(吨)", example = "1.23")
private BigDecimal unloadNet;
@MoneyOutConvert
@ApiModelProperty(value="实际运费",example = "2.52")
@ApiModelProperty(value="应付运费",example = "2.52")
private BigDecimal freight;
@MoneyOutConvert
@ApiModelProperty(value="司机实收",example = "2.52")
private BigDecimal driverFreight;
@MoneyOutConvert
@ApiModelProperty(value="损耗单价",example = "1.2")
private BigDecimal lossPrice;
......@@ -122,4 +126,6 @@ public class PageOwnerSettlementOwnerDetailVO {
@ApiModelProperty(value="创建时间",example = "2013-01-01 00:00:00")
private String createTime;
@ApiModelProperty(value="备注")
private String remark;
}
\ No newline at end of file
......@@ -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
......
......@@ -61,6 +61,15 @@ public class CarrierAccountController {
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "预付运费账户列表")
@PostMapping("/exportPrepaidFreightList")
public void exportPrepaidFreightList(@RequestBody PageOwnerAccountListParam param, HttpServletResponse response) throws Exception {
SXSSFWorkbook workbook = ownerAccountService.exportPrepaidFreightList(param);
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
@ApiOperation(value = "保证金账户详情流水列表", notes = "<br>By:胡宇帆")
@PostMapping("/marginAccountPageList")
@UnitCovert(param = false)
......
package com.clx.performance.controller.pc.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.clx.performance.param.pc.driver.BatchUpdatePayDriverSettlementParam;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.clx.performance.service.settle.SettlementDriverService;
......@@ -12,12 +13,17 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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;
import javax.servlet.http.HttpServletResponse;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/settlementDriver")
......@@ -44,4 +50,12 @@ public class CarrierSettlementDriverController {
return Result.ok();
}
@ApiOperation(value = "导出车主结算单",notes = "<br>By:杨启发")
@PostMapping("/exportSettlementDriver")
public void exportSettlementDriver(@RequestBody @Validated PageCarrierSettlementDriverParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = settlementDriverService.exportSettlementDriver(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
}
......@@ -51,7 +51,7 @@ public class CarrierSettlementOwnerDetailController {
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "货主结算单下载",notes = "<br>By:姜文业")
@ApiOperation(value = "导出货主结算单运单明细",notes = "<br>By:姜文业")
@PostMapping("/exportOwnerSettlementOrderDetailList")
public void exportCarrierSettlementOwnerPageList(@RequestBody @Validated PageOwnerSettlementOwnerDetailParam param, HttpServletResponse response) throws Exception {
SXSSFWorkbook workbook = settlementOwnerDetailService.exportOwnerSettlementOrderDetail(param);
......
package com.clx.performance.controller.pc.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.clx.performance.service.settle.SettlementOrderChildRiskService;
import com.clx.performance.vo.pc.carrier.settle.SettlementOrderChildRiskVO;
import com.msl.common.base.PageData;
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.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 javax.servlet.http.HttpServletResponse;
@Slf4j
@RestController
@RequestMapping(value="/pc/carrier/settlementOrderChildRisk")
@Validated
@Api(tags = "承运端-风控管理")
@AllArgsConstructor
public class SettlementOrderChildRiskController {
private final SettlementOrderChildRiskService settlementOrderChildRiskService;
@ApiOperation(value = "风控异常处理列表",notes = "<br>By:杨启发")
@PostMapping("/pageSettlementOrderChildRisk")
@UnitCovert(param = false)
public Result<PageData<SettlementOrderChildRiskVO>> pageSettlementOrderChildRisk(@RequestBody @Validated PageSettlementOrderChildRiskParam param) {
IPage<SettlementOrderChildRiskVO> page = settlementOrderChildRiskService.pageSettlementOrderChildRisk(param);
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "导出风控异常处理",notes = "<br>By:杨启发")
@PostMapping("/exportSettlementOrderChildRisk")
public void exportSettlementOrderChildRisk(@RequestBody @Validated PageSettlementOrderChildRiskParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = settlementOrderChildRiskService.exportSettlementOrderChildRisk(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
}
......@@ -128,6 +128,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())
);
}
......
package com.clx.performance.dao.impl.settle;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -7,6 +8,7 @@ import com.clx.performance.dao.settle.SettlementDriverDao;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.mapper.settle.SettlementDriverMapper;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
......@@ -47,7 +49,11 @@ public class SettlementDriverDaoImpl extends BaseDaoImpl<SettlementDriverMapper,
if(StringUtils.isNotBlank(param.getDriverUserName())){
query.like(SettlementDriver :: getDriverName,param.getDriverUserName());
}
if(StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())){
query.between(SettlementDriver:: getCreateTime,param.getStartTime(),param.getEndTime());
}else {
query.between(SettlementDriver :: getCreateTime, LocalDateTimeUtil.now().minusMonths(3),LocalDateTimeUtil.now());
}
query.orderByDesc(SettlementDriver :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(),param.getPageSize()),query);
}
......
package com.clx.performance.dao.impl.settle;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementOrderChildRiskDao;
import com.clx.performance.mapper.settle.SettlementOrderChildRiskMapper;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.util.Objects;
@Repository
public class SettlementOrderChildRiskDaoImpl
extends BaseDaoImpl<SettlementOrderChildRiskMapper, SettlementOrderChildRisk, Integer>
implements SettlementOrderChildRiskDao {
@Override
public IPage<SettlementOrderChildRisk> pageSettlementOrderChildRisk(PageSettlementOrderChildRiskParam param) {
LambdaQueryWrapper<SettlementOrderChildRisk> query = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(param.getChildNo())){
query.eq(SettlementOrderChildRisk :: getChildNo,param.getChildNo());
}
if(StringUtils.isNotBlank(param.getTruckNo())){
query.eq(SettlementOrderChildRisk :: getTruckNo,param.getTruckNo());
}
if(Objects.nonNull(param.getStatus())){
query.eq(SettlementOrderChildRisk :: getStatus,param.getStatus());
}
if(StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())){
query.between(SettlementOrderChildRisk :: getCreateTime,param.getStartTime(),param.getEndTime());
}else {
query.between(SettlementOrderChildRisk :: getCreateTime, LocalDateTimeUtil.now().minusMonths(3),LocalDateTimeUtil.now());
}
query.orderByAsc(SettlementOrderChildRisk :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
}
\ No newline at end of file
......@@ -24,6 +24,7 @@ import java.util.Objects;
import static com.clx.performance.enums.settle.SettlementOwnerDetailEnum.HandleStatus.NO;
import static com.clx.performance.enums.settle.SettlementOwnerDetailEnum.HandleStatus.YES;
import static com.clx.performance.enums.settle.SettlementOwnerEnum.InvoiceType.ORDINARY;
/**
* @Author: aiqinguo
......@@ -112,6 +113,7 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
public IPage<SettlementOwnerDetail> pageSettlementOwnerDetail(
PageCarrierSettlementOwnerDetailParam param) {
LambdaQueryWrapper<SettlementOwnerDetail> query = buildQuery(param);
query.orderByDesc(SettlementOwnerDetail ::getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
......@@ -134,7 +136,6 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
}else {
query.between(SettlementOwnerDetail :: getCreateTime, LocalDateTimeUtil.now().minusMonths(3),LocalDateTimeUtil.now());
}
query.orderByDesc(SettlementOwnerDetail ::getCreateTime);
return query;
}
......@@ -220,11 +221,14 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
@Override
public IPage<SettlementOwnerDetail> pagePendingSettlementOwnerDetail(PagePendingCarrierSettlementOwnerDetailParam param) {
LambdaQueryWrapper<SettlementOwnerDetail> query = buildQuery(param);
query.eq(SettlementOwnerDetail::getInvoiceType,ORDINARY.getCode());
//todo 演练数据不展示,根据上线时间排除
if (Objects.equals(param.getHandleStatus(),NO.getCode())) {
query.isNull(SettlementOwnerDetail::getInvoicingCompanyId);
}else if (Objects.equals(param.getHandleStatus(),YES.getCode())){
query.isNotNull(SettlementOwnerDetail::getInvoicingCompanyId);
}
query.orderByAsc(SettlementOwnerDetail ::getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
......
package com.clx.performance.dao.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.settle.SettlementOrderChildRiskMapper;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.msl.common.dao.BaseDao;
public interface SettlementOrderChildRiskDao
extends BaseDao<SettlementOrderChildRiskMapper,
SettlementOrderChildRisk, Integer> {
IPage<SettlementOrderChildRisk> pageSettlementOrderChildRisk(PageSettlementOrderChildRiskParam param);
}
\ No newline at end of file
......@@ -11,6 +11,7 @@ import com.clx.performance.feign.TransportFeignService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.OrderChildSyncTransportRecord;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.feign.transport.OrderChildPaySyncParam;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementMqHandlerService;
......@@ -89,16 +90,17 @@ public class OrderChildPaySyncTransportJob {
}
@Deprecated
@XxlJob("testJob")
public void test2() {
String jobParam = XxlJobHelper.getJobParam();
log.info("XxlJobHelper jobParam:{}", jobParam);
OrderChild orderChild = orderChildDao.getByChildNo(jobParam).get();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get();
Integer settlementDriverDetailId = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild, orderGoods);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild, orderGoods, settlementDriverDetail);
settlementMqService.settlementDetailAdd(settlementDriverDetailId, settlementOwnerDetailId);
settlementMqService.settlementDetailAdd(settlementDriverDetail.getId(), settlementOwnerDetailId);
}
......
......@@ -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; //修改时间
......
......@@ -36,7 +36,10 @@ public class SettlementOwner implements HasKey<Integer> {
private LocalDateTime settlementPeriodTime; //结算周期时间(月结)
private String orderNo; //订单编号
private BigDecimal weight; //实际净重(吨)
private BigDecimal loadNet; //装货净重(单位吨)
private BigDecimal unloadNet; //卸货净重(单位吨)
private BigDecimal freight; //实际运费(分)
private BigDecimal driverFreight; //司机实收(分)
private BigDecimal lossWeight; //货损吨数(吨)
private BigDecimal lossFreight; //货损金额(分)
private BigDecimal prepayFreight; //预付运费金额(分)
......
......@@ -51,6 +51,7 @@ public class SettlementOwnerDetail implements HasKey<Integer> {
private BigDecimal unloadNet; //卸货净重(单位吨)
private BigDecimal freight; //实际运费(分)
private BigDecimal driverFreight; //司机实收(分)
private BigDecimal lossPrice; //损耗单价(分)
private BigDecimal lossWeight; //货损吨数(吨)
private BigDecimal lossFreight; //货损金额(分)
......
......@@ -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,
......
......@@ -106,4 +106,6 @@ public interface OwnerAccountService {
OwnerAccountAllVO accountAllInfo(Long userNo);
OwnerAccountArrearsVO accountArrearsInfo(Long userNo, BigDecimal prepaidArrearsOrder, BigDecimal marginArrearsOrder);
SXSSFWorkbook exportPrepaidFreightList(PageOwnerAccountListParam param);
}
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);
//保存磅单审核数据
......
......@@ -2418,7 +2418,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;
......@@ -205,6 +213,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())
......
......@@ -43,12 +43,8 @@ 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.*;
import com.clx.performance.vo.feign.OwnerInfoVO;
import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO;
import com.clx.performance.vo.pc.OwnerAccountVO;
import com.clx.performance.vo.pc.OwnerLoanAccountVO;
import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.pc.carrier.settle.CarrierPagePlatformAccountConfigVO;
import com.clx.user.enums.owner.FreezeSettingEnum;
import com.clx.user.feign.OwnerFeign;
......@@ -78,10 +74,6 @@ import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
@Slf4j
@Service
......@@ -1301,4 +1293,45 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
return build;
}
@Override
public SXSSFWorkbook exportPrepaidFreightList(PageOwnerAccountListParam param) {
IPage<OwnerAccountVO> page = ownerAccountDao.pageList(param);
List<OwnerAccountVO> list = page.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "货主编码", "index", 5000));
fieldList.add(new ExcelField(1, "货主名称", "ownerUserNo", 5000));
fieldList.add(new ExcelField(2, "联系电话", "ownerName", 5000));
fieldList.add(new ExcelField(3, "账户类型", "mobile", 5000));
fieldList.add(new ExcelField(4, "账户余额", "accountType", 15000));
fieldList.add(new ExcelField(5, "可用余额", "runningWaterType", 5000));
fieldList.add(new ExcelField(6, "冻结余额", "orderNo", 5000));
fieldList.add(new ExcelField(7, "创建人", "alterationBalance", 5000));
fieldList.add(new ExcelField(8, "创建时间", "frozenBalance", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (OwnerAccountVO dto : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(dto.getOwnerUserNo()));
rowData.add(new ExcelData(dto.getOwnerUserName()));
rowData.add(new ExcelData(dto.getMobile()));
OwnerAccountEnum.AccountTypeStatus.getByCode(dto.getAccountType()).ifPresent(a ->
rowData.add(new ExcelData(a.getMsg()))
);
rowData.add(new ExcelData(dto.getAccountBalance() == null ? null : dto.getAccountBalance().movePointLeft(2)));
rowData.add(new ExcelData(dto.getUsableBalance() == null ? null : dto.getUsableBalance().movePointLeft(2)));
rowData.add(new ExcelData(dto.getFrozenBalance() == null ? null : dto.getFrozenBalance().movePointLeft(2)));
rowData.add(new ExcelData(dto.getCreateBy()));
rowData.add(new ExcelData(dto.getCreateTime()));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("预付运费账户列表", "预付运费账户列表", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
}
......@@ -5,6 +5,7 @@ import com.clx.performance.enums.*;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildPoundAudit;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.mq.IntegralOrderChildFinishMqParam;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderChildMqService;
......@@ -198,10 +199,10 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
if (Objects.equals(poundAuditDetail.getStatus(), OrderChildPoundAuditEnum.Status.APPROVED.getCode())) {
// 生成计费单
Integer settlementDriverDetailId = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild, orderGoods);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild, orderGoods, settlementDriverDetail);
log.info("生成计费单 {} ", orderChild.getChildNo());
settlementMqService.settlementDetailAdd(settlementDriverDetailId, settlementOwnerDetailId);
settlementMqService.settlementDetailAdd(settlementDriverDetail.getId(), settlementOwnerDetailId);
}
}
......
......@@ -43,7 +43,7 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
private final SettlementDriverDetailStruct settlementOwnerDetailStruct;
@Override
public Integer saveSettlementDetail(OrderChild orderChild) {
public SettlementDriverDetail saveSettlementDetail(OrderChild orderChild) {
SettlementDriverDetail settlementDriverDetail = new SettlementDriverDetail();
settlementDriverDetail.setChildNo(orderChild.getChildNo());
......@@ -87,7 +87,7 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
settlementDriverDetailDao.saveEntity(settlementDriverDetail);
return settlementDriverDetail.getId();
return settlementDriverDetail;
}
private BigDecimal weightCalc(BigDecimal loadNet, BigDecimal unLoadNet){
......
......@@ -7,6 +7,9 @@ import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementPlatformEnum;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.driver.BatchUpdatePayDriverSettlementParam;
......@@ -14,14 +17,21 @@ import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.clx.performance.service.settle.SettlementDriverService;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.struct.settle.SettlementDriverStruct;
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.carrier.settle.CarrierPageSettlementDriverVO;
import com.clx.performance.vo.pc.carrier.settle.SettlementOrderChildRiskVO;
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.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
......@@ -76,6 +86,87 @@ public class SettlementDriverServiceImpl implements SettlementDriverService {
}
}
@Override
public SXSSFWorkbook exportSettlementDriver(PageCarrierSettlementDriverParam param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<CarrierPageSettlementDriverVO> settlementDriverPage = pageCarrierSettlementDriver(param);
List<CarrierPageSettlementDriverVO> list = settlementDriverPage.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "运单编号", "childNo", 5000));
fieldList.add(new ExcelField(1, "货单编号", "orderGoodsNo", 5000));
fieldList.add(new ExcelField(2, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(3, "车主编码", "driverUserNo", 5000));
fieldList.add(new ExcelField(4, "车主名称", "driverName", 5000));
fieldList.add(new ExcelField(5, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(6, "预付标识", "prepayFreightFlag", 5000));
fieldList.add(new ExcelField(7, "借款标识", "loanFlagMsg", 5000));
fieldList.add(new ExcelField(8, "车牌号", "truckNo", 5000));
fieldList.add(new ExcelField(9, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(10, "实际净重(吨)", "weight", 5000));
fieldList.add(new ExcelField(11, "运费单价", "freightPrice", 5000));
fieldList.add(new ExcelField(12, "实际运费金额", "freight", 5000));
fieldList.add(new ExcelField(13, "货损单价", "lossPrice", 5000));
fieldList.add(new ExcelField(14, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(15, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(16, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(17, "状态", "status", 5000));
fieldList.add(new ExcelField(18, "结算结果", "settlementResult", 5000));
fieldList.add(new ExcelField(19, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(20, "结算平台", "settlementPlatform", 5000));
fieldList.add(new ExcelField(21, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(22, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(23, "毛利率", "grossMargin", 5000));
fieldList.add(new ExcelField(24, "毛利润", "grossProfit", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (CarrierPageSettlementDriverVO vo : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(vo.getChildNo()));
rowData.add(new ExcelData(vo.getOrderGoodsNo()));
rowData.add(new ExcelData(vo.getOrderNo()));
rowData.add(new ExcelData(vo.getDriverUserNo()+""));
rowData.add(new ExcelData(vo.getDriverName()));
rowData.add(new ExcelData(vo.getGoodsName()));
rowData.add(new ExcelData(vo.getGoodsName()));
rowData.add(new ExcelData(SettlementDriverEnum.PrepayFreightFlag.getMsgByCode(vo.getPrepayFreightFlag())));
rowData.add(new ExcelData(vo.getLoanFlagMsg()));
rowData.add(new ExcelData(vo.getTruckNo()));
rowData.add(new ExcelData(SettlementDriverEnum.InvoiceType.getMsgByCode(vo.getInvoiceType())));
rowData.add(new ExcelData(vo.getWeight()));
rowData.add(new ExcelData(vo.getFreightPrice()));
rowData.add(new ExcelData(vo.getFreight()));
rowData.add(new ExcelData(vo.getLossPrice()));
rowData.add(new ExcelData(vo.getLossWeight()));
rowData.add(new ExcelData(vo.getLossFreight()));
rowData.add(new ExcelData(vo.getSettlementFreight()));
rowData.add(new ExcelData(SettlementDriverEnum.Status.getMsgByCode(vo.getStatus())));
rowData.add(new ExcelData("-"));
rowData.add(new ExcelData(vo.getSettlementNo()));
rowData.add(new ExcelData(SettlementPlatformEnum.Platform.getMsgByCode(Integer.parseInt(vo.getSettlementPlatform()))));
rowData.add(new ExcelData(vo.getCreateTime()));
rowData.add(new ExcelData(vo.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData("0"));
rowData.add(new ExcelData("0"));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("车主结算单", "车主结算单", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
public static String formatPayMsg(Integer settlementStatus,String payMsg) {
if (!Objects.equals(settlementStatus, SettlementDriverEnum.Status.SETTLED.getCode()) || StringUtils.equals("success",payMsg)) {
return null;
......
......@@ -624,6 +624,10 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwner.setInvoiceFreight(settlementOwnerDetail.getInvoiceFreight());
settlementOwner.setInvoiceServiceFee(settlementOwnerDetail.getInvoiceServiceFee());
settlementOwner.setDriverFreight(settlementOwnerDetail.getDriverFreight());
settlementOwner.setLoadNet(settlementOwnerDetail.getLoadNet());
settlementOwner.setUnloadNet(settlementOwnerDetail.getUnloadNet());
List<SettlementOwnerDetail> details = settlementOwnerDetailDao.getBySettlementNo(settlementOwner.getSettlementNo());
details.forEach(item->{
......@@ -636,6 +640,10 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwner.setSettlementFreight(settlementOwner.getSettlementFreight().add(item.getSettlementFreight()));
settlementOwner.setInvoiceFreight(settlementOwner.getInvoiceFreight().add(item.getInvoiceFreight()));
settlementOwner.setInvoiceServiceFee(settlementOwner.getInvoiceServiceFee().add(item.getInvoiceServiceFee()));
settlementOwner.setDriverFreight(settlementOwner.getDriverFreight().add(item.getDriverFreight()));
settlementOwner.setLoadNet(settlementOwner.getLoadNet().add(item.getLoadNet()));
settlementOwner.setUnloadNet(settlementOwner.getUnloadNet().add(item.getUnloadNet()));
});
settlementOwnerDao.updateSettlementPeriodMonth(settlementOwner);
......
package com.clx.performance.service.impl.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementOrderChildRiskDao;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.clx.performance.service.settle.SettlementOrderChildRiskService;
import com.clx.performance.struct.settle.SettlementOrderChildRiskStruct;
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.carrier.settle.CarrierPageSettlementDriverDetailVO;
import com.clx.performance.vo.pc.carrier.settle.SettlementOrderChildRiskVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
@Slf4j
@AllArgsConstructor
public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChildRiskService {
private final SettlementOrderChildRiskDao settlementOrderChildRiskDao;
private final SettlementOrderChildRiskStruct settlementOrderChildRiskStruct;
@Override
public IPage<SettlementOrderChildRiskVO> pageSettlementOrderChildRisk(
PageSettlementOrderChildRiskParam param) {
IPage<SettlementOrderChildRisk> result = settlementOrderChildRiskDao.pageSettlementOrderChildRisk(param);
List<SettlementOrderChildRiskVO> list = settlementOrderChildRiskStruct.covertList(result.getRecords());
return new Page<SettlementOrderChildRiskVO>().setRecords(list).setTotal(result.getTotal()).setPages(result.getPages());
}
@Override
public SXSSFWorkbook exportSettlementOrderChildRisk(PageSettlementOrderChildRiskParam param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<SettlementOrderChildRiskVO> settlementDriverDetailPage = pageSettlementOrderChildRisk(param);
List<SettlementOrderChildRiskVO> list = settlementDriverDetailPage.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "运单编号", "childNo", 5000));
fieldList.add(new ExcelField(1, "车牌号", "truckNo", 5000));
fieldList.add(new ExcelField(2, "司机名称", "driverName", 5000));
fieldList.add(new ExcelField(3, "司机联系电话", "driverMobile", 5000));
fieldList.add(new ExcelField(4, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(5, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(6, "风控标识", "riskType", 5000));
fieldList.add(new ExcelField(7, "风控失败原因", "riskRemark", 5000));
fieldList.add(new ExcelField(8, "处理状态", "status", 5000));
fieldList.add(new ExcelField(9, "处理方式", "processMethod", 5000));
fieldList.add(new ExcelField(10, "磅单审核通过时间", "poundAuditTime", 5000));
fieldList.add(new ExcelField(11, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(12, "处理人", "processBy", 5000));
fieldList.add(new ExcelField(13, "处理时间", "processTime", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (SettlementOrderChildRiskVO vo : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(vo.getChildNo()));
rowData.add(new ExcelData(vo.getTruckNo()));
rowData.add(new ExcelData(vo.getDriverName()));
rowData.add(new ExcelData(vo.getDriverMobile()));
rowData.add(new ExcelData(vo.getGoodsName()));
rowData.add(new ExcelData(SettlementOwnerEnum.InvoiceType.getMsgByCode(vo.getInvoiceType())));
rowData.add(new ExcelData(SettlementOrderChildRiskEnum.RiskType.getMsgByCode(vo.getRiskType())));
rowData.add(new ExcelData(SettlementOrderChildRiskEnum.Status.getMsgByCode(vo.getStatus())));
rowData.add(new ExcelData(SettlementOrderChildRiskEnum.ProcessMethod.getMsgByCode(vo.getProcessMethod())));
rowData.add(new ExcelData(vo.getPoundAuditTime()));
rowData.add(new ExcelData(vo.getCreateTime()));
rowData.add(new ExcelData(vo.getProcessBy()));
rowData.add(new ExcelData(vo.getProcessTime()));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("风控异常列表", "风控异常列表", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
}
......@@ -36,6 +36,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
......@@ -59,7 +60,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
@Override
public Integer saveSettlementDetail(OrderChild orderChild, OrderGoods orderGoods) {
public Integer saveSettlementDetail(OrderChild orderChild, OrderGoods orderGoods, SettlementDriverDetail settlementDriverDetail) {
SettlementOwnerDetail settlementOwnerDetail = new SettlementOwnerDetail();
//设置结算方式
......@@ -83,6 +84,8 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetail.setFreightPrice(orderChild.getOrderFreightPrice()); //平台运费
settlementOwnerDetail.setWeight(weightCalc(orderGoods.getSettlementWay(),orderChild.getLoadNet(), orderChild.getUnloadNet()));
settlementOwnerDetail.setFreight(freightCalc(settlementOwnerDetail.getFreightPrice(), settlementOwnerDetail.getWeight()));
settlementOwnerDetail.setDriverFreight(settlementDriverDetail.getSettlementFreight());
settlementOwnerDetail.setLoadRough(orderChild.getLoadRough());
settlementOwnerDetail.setLoadTare(orderChild.getLoadTare());
settlementOwnerDetail.setLoadNet(orderChild.getLoadNet());
......@@ -126,6 +129,8 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetail.setInvoiceChannel(SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode());
settlementOwnerDetail.setPoundAuditTime(LocalDateTime.now());
settlementOwnerDetailDao.saveEntity(settlementOwnerDetail);
return settlementOwnerDetail.getId();
}
......@@ -196,26 +201,35 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
fieldList.add(new ExcelField(2, "货主编码", "ownerUserNno", 5000));
fieldList.add(new ExcelField(3, "结算方式", "settlementWay", 5000));
fieldList.add(new ExcelField(4, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(5, "实际净重(吨)", "weight", 5000));
fieldList.add(new ExcelField(6, "平台运费报价", "freightPrice", 5000));
fieldList.add(new ExcelField(7, "实际运费金额", "freight", 5000));
fieldList.add(new ExcelField(8, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(9, "货损单价", "lossPrice", 5000));
fieldList.add(new ExcelField(10, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(11, "开票费率", "invoiceServiceFeeRate", 5000));
fieldList.add(new ExcelField(12, "开票服务费", "invoiceServiceFee", 5000));
fieldList.add(new ExcelField(13, "预付运费金额", "prepayFreight", 5000));
fieldList.add(new ExcelField(14, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(15, "借款抵扣金额", "loanFreight", 5000));
fieldList.add(new ExcelField(16, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(17, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(18, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(19, "结算单号", "settlementNo", 15000));
fieldList.add(new ExcelField(20, "结算子单号", "settlementSubNo", 15000));
fieldList.add(new ExcelField(21, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(22, "是否已付尾款", "finalPaymentStatus", 5000));
fieldList.add(new ExcelField(23, "是否已开票", "invoiceStatus", 5000));
fieldList.add(new ExcelField(5, "装车皮重(吨)", "loadTare", 5000));
fieldList.add(new ExcelField(6, "装车毛重(吨)", "loadRough", 5000));
fieldList.add(new ExcelField(7, "装车净重(吨)", "loadNet", 5000));
fieldList.add(new ExcelField(8, "卸车毛重(吨)", "unloadRough", 5000));
fieldList.add(new ExcelField(9, "卸车皮重(吨)", "unloadTare", 5000));
fieldList.add(new ExcelField(10, "卸车净重(吨)", "unloadNet", 5000));
fieldList.add(new ExcelField(11, "实际净重(吨)", "weight", 5000));
fieldList.add(new ExcelField(12, "平台运费报价", "freightPrice", 5000));
fieldList.add(new ExcelField(13, "应付运费", "freight", 5000));
fieldList.add(new ExcelField(14, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(15, "货损单价", "lossPrice", 5000));
fieldList.add(new ExcelField(16, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(17, "司机实收", "driverActualIncome", 5000));
fieldList.add(new ExcelField(18, "管理费率(%)", "invoiceServiceFeeRate", 5000));
fieldList.add(new ExcelField(19, "管理费", "invoiceServiceFee", 5000));
fieldList.add(new ExcelField(20, "预付运费金额", "prepayFreight", 5000));
fieldList.add(new ExcelField(21, "借款抵扣金额", "loanFreight", 5000));
fieldList.add(new ExcelField(22, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(23, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(24, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(25, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(26, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(27, "结算单号", "settlementNo", 15000));
fieldList.add(new ExcelField(28, "结算子单号", "settlementSubNo", 15000));
fieldList.add(new ExcelField(29, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(30, "是否已付尾款", "finalPaymentStatus", 5000));
fieldList.add(new ExcelField(31, "是否已开票", "invoiceStatus", 5000));
fieldList.add(new ExcelField(32, "备注", "remark", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
......@@ -231,19 +245,27 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
rowData.add(new ExcelData(dto.getOwnerUserNo()+""));
rowData.add(new ExcelData(settlementWay));
rowData.add(new ExcelData(dto.getGoodsName()));
rowData.add(new ExcelData(dto.getLoadTare()));
rowData.add(new ExcelData(dto.getLoadRough()));
rowData.add(new ExcelData(dto.getLoadNet()));
rowData.add(new ExcelData(dto.getUnloadRough()));
rowData.add(new ExcelData(dto.getUnloadTare()));
rowData.add(new ExcelData(dto.getUnloadNet()));
rowData.add(new ExcelData(dto.getWeight()));
rowData.add(new ExcelData(dto.getFreightPrice().movePointLeft(2)));
rowData.add(new ExcelData(dto.getFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getLossWeight()));
rowData.add(new ExcelData(dto.getLossPrice().movePointLeft(2)));
rowData.add(new ExcelData(dto.getLossFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getDriverFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getInvoiceServiceFeeRate().toString()+ "%"));
rowData.add(new ExcelData(dto.getInvoiceServiceFee().movePointLeft(2)));
rowData.add(new ExcelData(dto.getPrepayFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getSettlementFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getLoanFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getSettlementFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getInvoiceFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData(dto.getInvoiceTypeMsg()));
rowData.add(new ExcelData(dto.getOrderNo()));
rowData.add(new ExcelData(dto.getSettlementNo()));
......@@ -251,6 +273,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
rowData.add(new ExcelData(dto.getCreateTime()));
rowData.add(new ExcelData(dto.getFinalPaymentStatusMsg()));
rowData.add(new ExcelData(dto.getInvoiceStatusMsg()));
rowData.add(new ExcelData(dto.getRemark()));
dataList.add(rowData);
}
......
......@@ -423,18 +423,21 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
fieldList.add(new ExcelField(4, "货主名称", "ownerUserName", 5000));
fieldList.add(new ExcelField(5, "结算方式", "settlementWay", 5000));
fieldList.add(new ExcelField(6, "订单编号", "orderNo", 15000));
fieldList.add(new ExcelField(7, "实际净重", "weight", 5000));
fieldList.add(new ExcelField(8, "实际运费金额", "freight", 5000));
fieldList.add(new ExcelField(9, "预付运费金额", "prepayFreight", 5000));
fieldList.add(new ExcelField(10, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(11, "货损金额", "lossFreight", 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(15, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(16, "开票公司", "invoiceCompany", 5000));
fieldList.add(new ExcelField(17, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(18, "状态", "status", 5000));
fieldList.add(new ExcelField(7, "装车净重", "loadNet", 15000));
fieldList.add(new ExcelField(8, "卸车净重", "unloadNet", 15000));
fieldList.add(new ExcelField(9, "实际净重", "weight", 5000));
fieldList.add(new ExcelField(10, "应付运费", "freight", 5000));
fieldList.add(new ExcelField(11, "预付运费金额", "prepayFreight", 5000));
fieldList.add(new ExcelField(12, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(13, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(14, "管理费", "invoiceServiceFee", 5000));
fieldList.add(new ExcelField(15, "借款抵扣金额", "loanFreight", 5000));
fieldList.add(new ExcelField(16, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(17, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(18, "司机实收", "driverFreight", 5000));
fieldList.add(new ExcelField(19, "开票公司", "invoiceCompany", 5000));
fieldList.add(new ExcelField(20, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(21, "状态", "status", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
......@@ -450,6 +453,8 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
rowData.add(new ExcelData(dto.getOwnerName()));
rowData.add(new ExcelData(SettlementWayEnum.WayType.getMsgByCode(dto.getSettlementWay())));
rowData.add(new ExcelData(dto.getOrderNo()));
rowData.add(new ExcelData(dto.getLoadNet()));
rowData.add(new ExcelData(dto.getUnloadNet()));
rowData.add(new ExcelData(dto.getWeight()));
rowData.add(new ExcelData(dto.getFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getPrepayFreight().movePointLeft(2)));
......@@ -459,6 +464,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
rowData.add(new ExcelData(dto.getLoanFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getSettlementFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getInvoiceFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getDriverFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData(dto.getCreateTime()));
rowData.add(new ExcelData(SettlementOwnerEnum.Status.getMsgByCode(dto.getStatus())));
......
......@@ -3,7 +3,6 @@ package com.clx.performance.service.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverDetailParam;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetailVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
......@@ -15,7 +14,7 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
*/
public interface SettlementDriverDetailService {
Integer saveSettlementDetail(OrderChild orderChild);
SettlementDriverDetail saveSettlementDetail(OrderChild orderChild);
IPage<CarrierPageSettlementDriverDetailVO> pageSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param);
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.driver.BatchUpdatePayDriverSettlementParam;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverParam;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
/**
* @author liruixin
......@@ -14,4 +15,6 @@ public interface SettlementDriverService {
IPage<CarrierPageSettlementDriverVO> pageCarrierSettlementDriver(PageCarrierSettlementDriverParam param);
void updateBatchPayDriverSettlement(BatchUpdatePayDriverSettlementParam param);
SXSSFWorkbook exportSettlementDriver(PageCarrierSettlementDriverParam param);
}
package com.clx.performance.service.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.carrier.PageSettlementOrderChildRiskParam;
import com.clx.performance.vo.pc.carrier.settle.SettlementOrderChildRiskVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
public interface SettlementOrderChildRiskService {
IPage<SettlementOrderChildRiskVO> pageSettlementOrderChildRisk(PageSettlementOrderChildRiskParam param);
SXSSFWorkbook exportSettlementOrderChildRisk(PageSettlementOrderChildRiskParam param);
}
......@@ -4,7 +4,7 @@ package com.clx.performance.service.settle;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PagePendingCarrierSettlementOwnerDetailParam;
......@@ -20,7 +20,7 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
*/
public interface SettlementOwnerDetailService {
Integer saveSettlementDetail(OrderChild orderChild, OrderGoods orderGoods);
Integer saveSettlementDetail(OrderChild orderChild, OrderGoods orderGoods, SettlementDriverDetail settlementDriverDetail);
IPage<PageOwnerSettlementOwnerDetailVO> pageOwnerSettlementOrderDetailList(PageOwnerSettlementOwnerDetailParam param);
......
package com.clx.performance.struct.settle;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.vo.pc.carrier.settle.SettlementOrderChildRiskVO;
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 SettlementOrderChildRiskStruct {
List<SettlementOrderChildRiskVO> covertList(List<SettlementOrderChildRisk> records);
SettlementOrderChildRiskVO convert(SettlementOrderChildRisk detail);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论