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

Merge remote-tracking branch 'origin/dev' into dev

package com.clx.performance.enums.settle;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;
public enum SettlementOrderChildRiskEnum {
;
@Getter
@AllArgsConstructor
public enum RiskType {
SYNC_FAIL(1, "同步失败"),
SETTLE_FAIL(2, "结算打回");
private final Integer code;
private final String msg;
public static Optional<RiskType> 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(RiskType::getMsg).orElse(null);
}
}
@Getter
@AllArgsConstructor
public enum processMethod {
SYNC_RETRY(1, "重新同步"),
CONVERT_NORMAL(2, "转普通单"),
;
private final Integer code;
private final String msg;
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);
}
}
@Getter
@AllArgsConstructor
public enum Status {
INIT(0, "待处理"),
PROCESSED(1, "已处理");
private final Integer code;
private final String msg;
public static Optional<Status> 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(Status::getMsg).orElse(null);
}
}
}
......@@ -84,4 +84,21 @@ public enum SettlementOwnerDetailEnum {
}
}
@Getter
@AllArgsConstructor
public enum HandleStatus {
NO(0, "待处理"),
YES(1, "已处理"),
;
private final Integer code;
private final String msg;
public static Optional<HandleStatus> 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(HandleStatus::getMsg).orElse(null);
}
}
}
......@@ -23,5 +23,9 @@ public class PageCarrierSettlementDriverDetailParam extends PageParam {
@ApiModelProperty(value="订单编号",example = "201457878")
private String orderNo;
@ApiModelProperty(value="开始时间")
private String startTime;
@ApiModelProperty(value="结束时间")
private String endTime;
}
......@@ -25,5 +25,9 @@ public class PageCarrierSettlementOwnerDetailParam extends PageParam {
@ApiModelProperty(value="订单编号",example = "201457878")
private String orderNo;
@ApiModelProperty(value="开始时间")
private String startTime;
@ApiModelProperty(value="结束时间")
private String endTime;
}
package com.clx.performance.param.pc.owner;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class PagePendingCarrierSettlementOwnerDetailParam extends PageCarrierSettlementOwnerDetailParam {
@ApiModelProperty(value = "处理状态,0:待处理,1:已处理")
private Integer handleStatus;
}
package com.clx.performance.vo.pc.carrier.settle;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
public class CarrierPagePendingSettlementOwnerDetailVO extends CarrierPageSettlementOwnerDetailVO{
@ApiModelProperty(value = "处理状态,0:待处理,1:已处理")
private Integer handleStatus;
@ApiModelProperty(value = "磅单审核通过时间")
private String poundAuditTime;
@ApiModelProperty(value = "操作人")
private String invoicingCompanyModifiedBy;
@ApiModelProperty(value = "操作时间")
private String invoicingCompanyModifiedTime;
}
......@@ -46,6 +46,20 @@ public class PageOwnerSettlementOwnerDetailVO {
@ApiModelProperty(value="实际净重(吨)",example = "2.3")
private BigDecimal weight;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "1.23")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
private BigDecimal loadNet;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "1.23")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
private BigDecimal unloadNet;
@MoneyOutConvert
@ApiModelProperty(value="实际运费",example = "2.52")
private BigDecimal freight;
......
......@@ -11,12 +11,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/settlementDriverDetail")
......@@ -36,5 +41,12 @@ public class CarrierSettlementDriverDetailController {
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "导出车主运单计费",notes = "<br>By:杨启发")
@PostMapping("/exportSettlementDriverDetail")
public void exportSettlementDriverDetail(@RequestBody @Validated PageCarrierSettlementDriverDetailParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = settlementDriverDetailService.exportSettlementDriverDetail(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
}
package com.clx.performance.controller.pc.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PagePendingCarrierSettlementOwnerDetailParam;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import com.msl.common.base.PageData;
......@@ -56,6 +59,20 @@ public class CarrierSettlementOwnerDetailController {
workbook.write(response.getOutputStream());
}
@ApiOperation(value = "待处理运单计费列表(货主)",notes = "<br>By:杨启发")
@PostMapping("/pagePendingSettlementOwnerDetail")
@UnitCovert(param = false)
public Result<PageData<CarrierPagePendingSettlementOwnerDetailVO>> pagePendingSettlementOwnerDetail(@RequestBody @Validated PagePendingCarrierSettlementOwnerDetailParam param) {
IPage<CarrierPagePendingSettlementOwnerDetailVO> page = settlementOwnerDetailService.pagePendingSettlementOwnerDetail(param);
return Result.page(page.getRecords(),page.getTotal(),page.getPages());
}
@ApiOperation(value = "导出货主待处理运单计费",notes = "<br>By:杨启发")
@PostMapping("/exportPendingSettlementOwnerDetail")
public void exportPendingSettlementOwnerDetail(@RequestBody @Validated PagePendingCarrierSettlementOwnerDetailParam param, HttpServletResponse response) throws Exception {
try (SXSSFWorkbook workbook = settlementOwnerDetailService.exportPendingSettlementOwnerDetail(param)) {
response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
workbook.write(response.getOutputStream());
}
}
}
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;
......@@ -75,6 +76,11 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
if(StringUtils.isNotBlank(param.getDriverUserName())){
query.like(SettlementDriverDetail :: getDriverName,param.getDriverUserName());
}
if(StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())){
query.between(SettlementDriverDetail :: getCreateTime,param.getStartTime(),param.getEndTime());
}else {
query.between(SettlementDriverDetail :: getCreateTime, LocalDateTimeUtil.now().minusMonths(3),LocalDateTimeUtil.now());
}
query.orderByDesc(SettlementDriverDetail :: getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
......
package com.clx.performance.dao.impl.settle;
import com.clx.performance.dao.settle.SettlementOrderChildRiskDao;
import com.clx.performance.mapper.settle.SettlementOrderChildRiskMapper;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
@Repository
public class SettlementOrderChildRiskDaoImpl
extends BaseDaoImpl<SettlementOrderChildRiskMapper, SettlementOrderChildRisk, Integer>
implements SettlementOrderChildRiskDao {
}
\ No newline at end of file
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,9 +8,11 @@ import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.mapper.settle.SettlementOwnerDetailMapper;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PagePendingCarrierSettlementOwnerDetailParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
......@@ -19,6 +22,9 @@ import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import static com.clx.performance.enums.settle.SettlementOwnerDetailEnum.HandleStatus.NO;
import static com.clx.performance.enums.settle.SettlementOwnerDetailEnum.HandleStatus.YES;
/**
* @Author: aiqinguo
* @Description: 货主运单计费明细
......@@ -105,21 +111,31 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
@Override
public IPage<SettlementOwnerDetail> pageSettlementOwnerDetail(
PageCarrierSettlementOwnerDetailParam param) {
LambdaQueryWrapper<SettlementOwnerDetail> query = buildQuery(param);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
private LambdaQueryWrapper<SettlementOwnerDetail> buildQuery(PageCarrierSettlementOwnerDetailParam param) {
LambdaQueryWrapper<SettlementOwnerDetail> query = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(param.getChildNo())){
query.eq(SettlementOwnerDetail :: getChildNo,param.getChildNo());
query.eq(SettlementOwnerDetail :: getChildNo, param.getChildNo());
}
if(StringUtils.isNotBlank(param.getOrderNo())){
query.eq(SettlementOwnerDetail :: getOrderNo,param.getOrderNo());
query.eq(SettlementOwnerDetail :: getOrderNo, param.getOrderNo());
}
if(Objects.nonNull(param.getOwnerUserNo())){
query.eq(SettlementOwnerDetail :: getOwnerUserNo,param.getOwnerUserNo());
query.eq(SettlementOwnerDetail :: getOwnerUserNo, param.getOwnerUserNo());
}
if(Objects.nonNull(param.getOwnerUserName())){
query.like(SettlementOwnerDetail :: getOwnerName,param.getOwnerUserName());
query.like(SettlementOwnerDetail :: getOwnerName, param.getOwnerUserName());
}
if(StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())){
query.between(SettlementOwnerDetail:: getCreateTime, param.getStartTime(), param.getEndTime());
}else {
query.between(SettlementOwnerDetail :: getCreateTime, LocalDateTimeUtil.now().minusMonths(3),LocalDateTimeUtil.now());
}
query.orderByDesc(SettlementOwnerDetail ::getCreateTime);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
return query;
}
@Override
......@@ -201,4 +217,15 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
);
}
@Override
public IPage<SettlementOwnerDetail> pagePendingSettlementOwnerDetail(PagePendingCarrierSettlementOwnerDetailParam param) {
LambdaQueryWrapper<SettlementOwnerDetail> query = buildQuery(param);
if (Objects.equals(param.getHandleStatus(),NO.getCode())) {
query.isNull(SettlementOwnerDetail::getInvoicingCompanyId);
}else if (Objects.equals(param.getHandleStatus(),YES.getCode())){
query.isNotNull(SettlementOwnerDetail::getInvoicingCompanyId);
}
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
}
package com.clx.performance.dao.settle;
import com.clx.performance.mapper.settle.SettlementOrderChildRiskMapper;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.msl.common.dao.BaseDao;
public interface SettlementOrderChildRiskDao
extends BaseDao<SettlementOrderChildRiskMapper,
SettlementOrderChildRisk, Integer> {
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ import com.clx.performance.mapper.settle.SettlementOwnerDetailMapper;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PagePendingCarrierSettlementOwnerDetailParam;
import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param;
......@@ -53,4 +54,6 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM
List<SettlementOwnerDetail> listPayStatusSync();
List<SettlementOwnerDetail> listInvoiceTypeSync();
IPage<SettlementOwnerDetail> pagePendingSettlementOwnerDetail(PagePendingCarrierSettlementOwnerDetailParam param);
}
package com.clx.performance.mapper.settle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SettlementOrderChildRiskMapper extends BaseMapper<SettlementOrderChildRisk> {
String TABLE = "settlement_order_child_risk";
}
\ No newline at end of file
package com.clx.performance.model.settle;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class SettlementOrderChildRisk implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; // ID
private String childNo; // 子订单编号
private String truckNo; // 车牌号
private String driverName; // 司机姓名
private String driverMobile; // 司机手机号
private String goodsName; // 货物名称
private Integer invoiceType; // 开票标识:1网运单 2普通单
private LocalDateTime poundAuditTime; // 磅单审核通过时间
private Integer riskType; // 风控标识:1同步失败 2结算打回
private String riskRemark; // 风控失败原因
private Integer processMethod; // 处理方式:1重新同步 2转普通单
private String processBy; // 处理人
private LocalDateTime processTime; // 处理时间
private Integer status; // 处理状态:1待处理 2已处理
private LocalDateTime createTime; // 创建时间
private LocalDateTime modifiedTime; // 修改时间
@Override
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
\ No newline at end of file
......@@ -43,6 +43,13 @@ public class SettlementOwnerDetail implements HasKey<Integer> {
private String goodsName; //货物名称
private BigDecimal freightPrice; //平台运费单价(分)
private BigDecimal weight; //实际净重(吨)
private BigDecimal loadRough; //装货毛重(单位吨)
private BigDecimal loadTare; //装货皮重(单位吨)
private BigDecimal loadNet; //装货净重(单位吨)
private BigDecimal unloadRough; //卸货毛重(单位吨)
private BigDecimal unloadTare; //卸货皮重(单位吨)
private BigDecimal unloadNet; //卸货净重(单位吨)
private BigDecimal freight; //实际运费(分)
private BigDecimal lossPrice; //损耗单价(分)
private BigDecimal lossWeight; //货损吨数(吨)
......@@ -63,6 +70,9 @@ public class SettlementOwnerDetail implements HasKey<Integer> {
private Integer invoiceChannel; //开票渠道:1无车承运
private String remark; //备注
private Integer payStatus; //支付状态:0未支付 1已支付(网络货运是否支付)
private LocalDateTime poundAuditTime; //磅单审核通过时间
private String invoicingCompanyModifiedBy; //开票公司修改人
private LocalDateTime invoicingCompanyModifiedTime; //开票公司修改时间
private Integer status; //状态
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
......
package com.clx.performance.service.child;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildPoundAudit;
public interface OrderChildPostService {
......@@ -18,4 +19,5 @@ public interface OrderChildPostService {
void orderChildFinish(String childNo);
void orderChildPoundAudit(OrderChild orderChild, OrderChildPoundAudit poundAuditDetail);
}
......@@ -9,6 +9,7 @@ import com.clx.performance.model.*;
import com.clx.performance.param.pc.PoundAuditParam;
import com.clx.performance.param.pc.payment.PayPlatformFeeParam;
import com.clx.performance.service.*;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.vo.pc.OrderChildPoundAuditDetailVO;
import com.msl.common.exception.ServiceSystemException;
import com.msl.user.data.UserSessionData;
......@@ -55,6 +56,7 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
private final OrderChildService orderChildService;
private final PaymentService paymentService;
private final OcrRecognitionDao ocrRecognitionDao;
private final OrderChildPostService orderChildPostService;
@Override
public OrderChildPoundAuditDetailVO getPoundAuditDetail(String childNo) {
......@@ -187,6 +189,7 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
orderChildLogService.saveOrderChildLog(param.getChildNo(),type,OrderChildLogEnum.Type.getByCode(type).isPresent() ? OrderChildLogEnum.Type.getByCode(type).get().getMsg() :"",
OrderChildLogEnum.CreateType.PLATFORM.getCode(), loginUserInfo.getUserNo(),loginUserInfo.getUserName());
orderChildPostService.orderChildPoundAudit(orderChild, poundAuditDetail);
}
/***
......
......@@ -1444,9 +1444,6 @@ public class OrderChildServiceImpl implements OrderChildService {
// 更新车辆状态
updateDriverOrderStatusDriverConfirm(orderChild.getTruckId());
// 生成计费单
saveSettlementDetail(orderChild,orderGoods);
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(),
OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
......@@ -1646,17 +1643,7 @@ public class OrderChildServiceImpl implements OrderChildService {
return result;
}
/**
* 生成计费单
*/
private void saveSettlementDetail(OrderChild orderChild,OrderGoods orderGoods){
Integer settlementDriverDetailId = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild,orderGoods);
log.info("生成计费单 {} ",orderChild.getChildNo());
settlementMqService.settlementDetailAdd(settlementDriverDetailId, settlementOwnerDetailId);
}
......
package com.clx.performance.service.impl.child;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.UserTypeEnum;
import com.clx.performance.dao.OrderGoodsDao;
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.param.mq.IntegralOrderChildFinishMqParam;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderChildMqService;
import com.clx.performance.service.breakcontract.BreakContractDriverRecordService;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.service.vehiclewarn.VehicleWarnMqService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
@Slf4j
@Service
public class OrderChildPostServiceImpl implements OrderChildPostService {
......@@ -30,6 +36,18 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
@Autowired
private VehicleWarnMqService vehicleWarnMqService;
@Autowired
private SettlementDriverDetailService settlementDriverDetailService;
@Autowired
private SettlementOwnerDetailService settlementOwnerDetailService;
@Autowired
private SettlementMqService settlementMqService;
@Autowired
private OrderGoodsDao orderGoodsDao;
@Override
public void orderChildAdd(String childNo) {
// 发送mq 新增运单
......@@ -173,4 +191,18 @@ public class OrderChildPostServiceImpl implements OrderChildPostService {
}
@Override
public void orderChildPoundAudit(OrderChild orderChild, OrderChildPoundAudit poundAuditDetail){
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(
PerformanceResultEnum.DATA_NOT_FIND);
if (Objects.equals(poundAuditDetail.getStatus(), OrderChildPoundAuditEnum.Status.APPROVED.getCode())) {
// 生成计费单
Integer settlementDriverDetailId = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild, orderGoods);
log.info("生成计费单 {} ", orderChild.getChildNo());
settlementMqService.settlementDetailAdd(settlementDriverDetailId, settlementOwnerDetailId);
}
}
}
......@@ -4,18 +4,28 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
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.service.settle.SettlementDriverDetailService;
import com.clx.performance.struct.settle.SettlementDriverDetailStruct;
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.PageCarrierBreakContractSettlementDriverDetailVO;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetailVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
......@@ -127,6 +137,79 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
return settlementDriverDetailDao.getByChildNo(childNo).get();
}
@Override
public SXSSFWorkbook exportSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<CarrierPageSettlementDriverDetailVO> settlementDriverDetailPage = pageSettlementDriverDetail(param);
List<CarrierPageSettlementDriverDetailVO> list = settlementDriverDetailPage.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, "车牌号", "truckNo", 5000));
fieldList.add(new ExcelField(7, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(8, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(9, "预付标识", "prepayFreightFlag", 5000));
fieldList.add(new ExcelField(10, "借款标识", "loanFlagMsg", 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, "货损单价", "lossPrice", 5000));
fieldList.add(new ExcelField(15, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(16, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(17, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(18, "毛利率", "platformServiceFeeRate", 5000));
fieldList.add(new ExcelField(19, "毛利润", "platformServiceFee", 5000));
fieldList.add(new ExcelField(20, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(21, "创建时间", "createTime", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (CarrierPageSettlementDriverDetailVO dto : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(dto.getChildNo()));
rowData.add(new ExcelData(dto.getOrderGoodsNo()));
rowData.add(new ExcelData(dto.getOrderNo()));
rowData.add(new ExcelData(dto.getDriverUserNo() + ""));
rowData.add(new ExcelData(dto.getDriverName()));
rowData.add(new ExcelData(dto.getGoodsName()));
rowData.add(new ExcelData(dto.getTruckNo()));
rowData.add(new ExcelData(dto.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData(SettlementOwnerEnum.InvoiceType.getMsgByCode(dto.getInvoiceType())));
rowData.add(new ExcelData(SettlementDriverEnum.PrepayFreightFlag.getMsgByCode(dto.getPrepayFreightFlag())));
rowData.add(new ExcelData(dto.getLoanFlagMsg()));
rowData.add(new ExcelData(dto.getWeight()));
rowData.add(new ExcelData(dto.getFreightPrice()));
rowData.add(new ExcelData(dto.getFreight()));
rowData.add(new ExcelData(dto.getLossPrice()));
rowData.add(new ExcelData(dto.getLossWeight()));
rowData.add(new ExcelData(dto.getLossFreight()));
rowData.add(new ExcelData(dto.getSettlementFreight()));
rowData.add(new ExcelData(dto.getPlatformServiceFeeRate() + "%"));
rowData.add(new ExcelData(dto.getPlatformServiceFee()));
rowData.add(new ExcelData(dto.getSettlementNo()));
rowData.add(new ExcelData(dto.getCreateTime()));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("车主运单计费", "车主运单计费", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
public static String formatLoanMsg(Integer loanFlag) {
if (Objects.equals(loanFlag, OwnerLoanRecordEnum.LoanFlag.LOAN.getCode())) {
return OwnerLoanRecordEnum.LoanFlag.LOAN.getMsg();
......
......@@ -8,10 +8,12 @@ import com.clx.performance.constant.RedissonConstants;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.SettlementOrderChildRiskDao;
import com.clx.performance.dao.settle.*;
import com.clx.performance.dto.InvoicingStatusNotifyDTO;
import com.clx.performance.dto.PayStatusNotifyDTO;
import com.clx.performance.enums.*;
import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
import com.clx.performance.enums.settle.*;
import com.clx.performance.extranal.broker.BrokerService;
import com.clx.performance.extranal.user.DriverService;
......@@ -19,8 +21,8 @@ import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.performance.listener.OrderChildSyncTransportListener;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementOrderChildRisk;
import com.clx.performance.model.settle.*;
import com.clx.performance.param.pc.payment.PayParam;
import com.clx.performance.param.pc.payment.PayPlatformFeeParam;
......@@ -125,6 +127,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Autowired
private OrderChildSyncTransportRecordDao orderChildSyncTransportRecordDao;
@Autowired
private SettlementOrderChildRiskDao settlementOrderChildRiskDao;
@Override
@Transactional(rollbackFor = Exception.class)
public void settlementStatistics(SettlementStatisticsMqParam mq) {
......@@ -262,9 +267,22 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
// remark += result.getRiskReason();
// }
// 同步失败
if (Objects.equals(result.getSyncStatus(), 2)) {
invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode();
remark += result.getSyncMsg();
SettlementOrderChildRisk settlementOrderChildRisk = new SettlementOrderChildRisk();
settlementOrderChildRisk.setChildNo(orderChild.getChildNo());
settlementOrderChildRisk.setTruckNo(orderChild.getTruckNo());
settlementOrderChildRisk.setDriverName(orderChild.getDriverName());
settlementOrderChildRisk.setDriverMobile(orderChild.getDriverMobile());
settlementOrderChildRisk.setGoodsName(orderChild.getGoodsName());
settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
settlementOrderChildRisk.setPoundAuditTime(settlementOwnerDetail.getPoundAuditTime());
settlementOrderChildRisk.setRiskType(SettlementOrderChildRiskEnum.RiskType.SYNC_FAIL.getCode());
settlementOrderChildRisk.setRiskRemark(result.getSyncMsg());
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
}
if (Objects.equals(result.getSyncStatus(), 0)) {
......@@ -338,6 +356,19 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
payStatusNotifyDTO.setChildNo(mq.getChildNo());
orderChildSyncTransportRecordService.updateStatus(payStatusNotifyDTO);
}
else {
SettlementOrderChildRisk settlementOrderChildRisk = new SettlementOrderChildRisk();
settlementOrderChildRisk.setChildNo(orderChild.getChildNo());
settlementOrderChildRisk.setTruckNo(orderChild.getTruckNo());
settlementOrderChildRisk.setDriverName(orderChild.getDriverName());
settlementOrderChildRisk.setDriverMobile(orderChild.getDriverMobile());
settlementOrderChildRisk.setGoodsName(orderChild.getGoodsName());
settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
settlementOrderChildRisk.setPoundAuditTime(settlementOwnerDetail.getPoundAuditTime());
settlementOrderChildRisk.setRiskType(SettlementOrderChildRiskEnum.RiskType.SETTLE_FAIL.getCode());
settlementOrderChildRisk.setRiskRemark(result.getSyncMsg());
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
}
}
@Override
......
......@@ -6,7 +6,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.PlatformAccountConfigEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
......@@ -14,6 +17,7 @@ import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PagePendingCarrierSettlementOwnerDetailParam;
import com.clx.performance.service.settle.SettlementCommonService;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.struct.settle.SettlementOwnerDetailStruct;
......@@ -21,6 +25,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.carrier.settle.CarrierPagePendingSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetailVO;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import lombok.AllArgsConstructor;
......@@ -77,6 +83,12 @@ 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.setLoadRough(orderChild.getLoadRough());
settlementOwnerDetail.setLoadTare(orderChild.getLoadTare());
settlementOwnerDetail.setLoadNet(orderChild.getLoadNet());
settlementOwnerDetail.setUnloadRough(orderChild.getUnloadRough());
settlementOwnerDetail.setUnloadTare(orderChild.getUnloadTare());
settlementOwnerDetail.setUnloadNet(orderChild.getUnloadNet());
// 亏吨
settlementOwnerDetail.setLossPrice(orderChild.getLossPrice());
......@@ -294,4 +306,97 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
return false;
}
}
@Override
public IPage<CarrierPagePendingSettlementOwnerDetailVO> pagePendingSettlementOwnerDetail(PagePendingCarrierSettlementOwnerDetailParam param) {
IPage<SettlementOwnerDetail> result = settlementOwnerDetailDao.pagePendingSettlementOwnerDetail(param);
List<CarrierPagePendingSettlementOwnerDetailVO> list = settlementOwnerDetailStruct.covertPendingList(result.getRecords());
list.forEach(vo->{
vo.setHandleStatus(Objects.isNull(vo.getInvoicingCompanyId())? SettlementOwnerDetailEnum.HandleStatus.NO.getCode(): SettlementOwnerDetailEnum.HandleStatus.YES.getCode());
});
return new Page<CarrierPagePendingSettlementOwnerDetailVO>().setRecords(list).setTotal(result.getTotal()).setPages(result.getPages());
}
@Override
public SXSSFWorkbook exportPendingSettlementOwnerDetail(PagePendingCarrierSettlementOwnerDetailParam param) {
param.setPage(1);
param.setPageSize(1000000);
IPage<CarrierPagePendingSettlementOwnerDetailVO> settlementOwnerDetailPage = pagePendingSettlementOwnerDetail(param);
List<CarrierPagePendingSettlementOwnerDetailVO> list = settlementOwnerDetailPage.getRecords();
// 组装表头
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "运单编号", "childNo", 5000));
fieldList.add(new ExcelField(1, "货主编码", "ownerUserNo", 5000));
fieldList.add(new ExcelField(2, "货主名称", "ownerName", 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, "借款抵扣金额", "loanFreight", 5000));
fieldList.add(new ExcelField(15, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(16, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(17, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(18, "状态", "handleStatus", 5000));
fieldList.add(new ExcelField(19, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(20, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(21, "磅单审核通过时间", "poundAuditTime", 5000));
fieldList.add(new ExcelField(22, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(23, "操作人", "invoicingCompanyModifiedBy", 5000));
fieldList.add(new ExcelField(24, "操作时间", "invoicingCompanyModifiedTime", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
for (CarrierPagePendingSettlementOwnerDetailVO dto : list) {
List<ExcelData> rowData = new ArrayList<>();
rowData.add(new ExcelData(dto.getChildNo()));
rowData.add(new ExcelData(dto.getOwnerUserNo()+""));
rowData.add(new ExcelData(dto.getOwnerName()));
rowData.add(new ExcelData(SettlementWayEnum.WayType.getMsgByCode(dto.getSettlementWay())));
rowData.add(new ExcelData(dto.getGoodsName()));
rowData.add(new ExcelData(dto.getWeight()));
rowData.add(new ExcelData(dto.getFreightPrice()));
rowData.add(new ExcelData(dto.getFreight()));
rowData.add(new ExcelData(dto.getLossWeight()));
rowData.add(new ExcelData(dto.getLossPrice()));
rowData.add(new ExcelData(dto.getLossFreight()));
rowData.add(new ExcelData(dto.getFreightPrice()));
rowData.add(new ExcelData(dto.getFreight()));
rowData.add(new ExcelData(dto.getLossPrice()));
rowData.add(new ExcelData(dto.getLossWeight()));
rowData.add(new ExcelData(dto.getLossFreight()));
rowData.add(new ExcelData(dto.getInvoiceServiceFeeRate()));
rowData.add(new ExcelData(dto.getInvoiceServiceFee()));
rowData.add(new ExcelData(dto.getPrepayFreight()));
rowData.add(new ExcelData(dto.getLoanFreight()));
rowData.add(new ExcelData(dto.getSettlementFreight()));
rowData.add(new ExcelData(dto.getInvoiceFreight()));
rowData.add(new ExcelData(SettlementOwnerEnum.InvoiceType.getMsgByCode(dto.getInvoiceType())));
rowData.add(new ExcelData(SettlementOwnerDetailEnum.HandleStatus.getMsgByCode(dto.getHandleStatus())));
rowData.add(new ExcelData(dto.getOrderNo()));
rowData.add(new ExcelData(dto.getSettlementNo()));
rowData.add(new ExcelData(dto.getPoundAuditTime()));
rowData.add(new ExcelData(dto.getCreateTime()));
rowData.add(new ExcelData(dto.getInvoicingCompanyModifiedBy()));
rowData.add(new ExcelData(dto.getInvoicingCompanyModifiedTime()));
dataList.add(rowData);
}
ExcelSheet excelSheet = new ExcelSheet("货主运单计费-待处理", "货主运单计费-待处理", fieldList, dataList);
//创建excel
return ExcelUtil.create(excelSheet);
}
}
......@@ -3,8 +3,10 @@ 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;
/**
* @author liruixin
......@@ -18,4 +20,6 @@ public interface SettlementDriverDetailService {
IPage<CarrierPageSettlementDriverDetailVO> pageSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param);
SettlementDriverDetail selectOneByChildNo(String childNo);
SXSSFWorkbook exportSettlementDriverDetail(PageCarrierSettlementDriverDetailParam param);
}
......@@ -4,8 +4,11 @@ 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.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PagePendingCarrierSettlementOwnerDetailParam;
import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
......@@ -28,4 +31,8 @@ public interface SettlementOwnerDetailService {
Integer getInvoiceType(String orderNo);
Boolean thawAndLockSettlement(String orderNo);
IPage<CarrierPagePendingSettlementOwnerDetailVO> pagePendingSettlementOwnerDetail(PagePendingCarrierSettlementOwnerDetailParam param);
SXSSFWorkbook exportPendingSettlementOwnerDetail(PagePendingCarrierSettlementOwnerDetailParam param);
}
......@@ -3,6 +3,7 @@ package com.clx.performance.struct.settle;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import com.msl.common.utils.DateStructUtil;
......@@ -20,7 +21,7 @@ public interface SettlementOwnerDetailStruct {
List<CarrierPageSettlementOwnerDetailVO> covertList(List<SettlementOwnerDetail> list);
List<CarrierPagePendingSettlementOwnerDetailVO> covertPendingList(List<SettlementOwnerDetail> list);
@Named("toBaseVo")
@Mapping(target = "invoiceTypeMsg", expression = "java(SettlementOwnerEnum.InvoiceType.getMsgByCode(settlementOwner.getInvoiceType()))")
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论