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

Merge branch 'refs/heads/v20.9_settlement_20240805' into dev

package com.clx.performance.param.pc.owner;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class ConfirmBatchInvoiceParam {
@NotEmpty(message = "运单号不能为空")
@ApiModelProperty(value = "运单号")
private List<String> childNoList;
}
...@@ -27,7 +27,7 @@ public class TransportVO { ...@@ -27,7 +27,7 @@ public class TransportVO {
@ApiModelProperty(value = "同步失败原因", example = "1", dataType = "String") @ApiModelProperty(value = "同步失败原因", example = "1", dataType = "String")
private String syncMsg; private String syncMsg;
@ApiModelProperty(value = "结算状态 0 未结算 1 已结算 2结算中 ", example = "1234124", dataType = "String") @ApiModelProperty(value = "结算状态 0 未结算 1 已结算 2结算中 3结算失败 ", example = "1234124", dataType = "String")
private Integer settleStatus; private Integer settleStatus;
@ApiModelProperty(value = "结算方", example = "1", dataType = "String") @ApiModelProperty(value = "结算方", example = "1", dataType = "String")
private Integer settleOrg; private Integer settleOrg;
......
...@@ -7,6 +7,7 @@ import lombok.Setter; ...@@ -7,6 +7,7 @@ import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Getter @Getter
...@@ -15,8 +16,8 @@ import java.math.BigDecimal; ...@@ -15,8 +16,8 @@ import java.math.BigDecimal;
@NoArgsConstructor @NoArgsConstructor
public class UploadBatchInvoiceFileResultVO { public class UploadBatchInvoiceFileResultVO {
@ApiModelProperty(value="校验结果,0:数据无误,1:数据有误") @ApiModelProperty(value="校验结果,true:数据无误,false:数据有误")
private Integer verifyResult; private Boolean verifyResult;
@ApiModelProperty(value="错误文件地址") @ApiModelProperty(value="错误文件地址")
private String errorFileUrl; private String errorFileUrl;
...@@ -29,4 +30,7 @@ public class UploadBatchInvoiceFileResultVO { ...@@ -29,4 +30,7 @@ public class UploadBatchInvoiceFileResultVO {
@ApiModelProperty(value="开票金额") @ApiModelProperty(value="开票金额")
private BigDecimal invoiceFreightSum; private BigDecimal invoiceFreightSum;
@ApiModelProperty(value="运单号")
private List<String> childNoList;
} }
\ No newline at end of file
...@@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.param.pc.carrier.CarrierSettlementOwnerDetailCompanyUpdateParam; import com.clx.performance.param.pc.carrier.CarrierSettlementOwnerDetailCompanyUpdateParam;
import com.clx.performance.param.pc.carrier.ExportBatchOwnerSettlementDetailParam; import com.clx.performance.param.pc.carrier.ExportBatchOwnerSettlementDetailParam;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.*;
import com.clx.performance.param.pc.owner.PageInvoiceOwnerSettlementOwnerDetailParam;
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.service.settle.SettlementOwnerDetailService;
import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwnerDetailVO; import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO; import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
...@@ -86,10 +83,17 @@ public class CarrierSettlementOwnerDetailController { ...@@ -86,10 +83,17 @@ public class CarrierSettlementOwnerDetailController {
@ApiOperation(value = "上传批量开票文件",notes = "<br>By:杨启发") @ApiOperation(value = "上传批量开票文件",notes = "<br>By:杨启发")
@PostMapping("/uploadBatchInvoiceFile") @PostMapping("/uploadBatchInvoiceFile")
public Result<UploadBatchInvoiceFileResultVO> uploadBatchInvoiceFile(@RequestParam("file") MultipartFile file) throws IOException { public Result<UploadBatchInvoiceFileResultVO> uploadBatchInvoiceFile(@RequestPart("file") MultipartFile file) throws IOException {
return Result.ok(settlementOwnerDetailService.uploadBatchInvoiceFile(file)); return Result.ok(settlementOwnerDetailService.uploadBatchInvoiceFile(file));
} }
@ApiOperation(value = "确认批量开票",notes = "<br>By:杨启发")
@PostMapping("/confirmBatchInvoice")
public Result<Object> confirmBatchInvoice(@RequestBody @Validated ConfirmBatchInvoiceParam param) {
settlementOwnerDetailService.confirmBatchInvoice(param.getChildNoList());
return Result.ok();
}
@ApiOperation(value = "导出货主结算单运单明细",notes = "<br>By:姜文业") @ApiOperation(value = "导出货主结算单运单明细",notes = "<br>By:姜文业")
@PostMapping("/exportOwnerSettlementOrderDetailList") @PostMapping("/exportOwnerSettlementOrderDetailList")
public void exportCarrierSettlementOwnerPageList(@RequestBody @Validated PageOwnerSettlementOwnerDetailParam param, HttpServletResponse response) throws Exception { public void exportCarrierSettlementOwnerPageList(@RequestBody @Validated PageOwnerSettlementOwnerDetailParam param, HttpServletResponse response) throws Exception {
......
...@@ -3,6 +3,8 @@ package com.clx.performance.dto.excel; ...@@ -3,6 +3,8 @@ package com.clx.performance.dto.excel;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
@Data @Data
public class InvoiceData { public class InvoiceData {
...@@ -13,9 +15,14 @@ public class InvoiceData { ...@@ -13,9 +15,14 @@ public class InvoiceData {
private String invoiceType; private String invoiceType;
@ExcelProperty("开票金额") @ExcelProperty("开票金额")
private Double invoiceFreight; private BigDecimal invoiceFreight;
@ExcelProperty("备注") @ExcelProperty("备注")
private String remark; private String remark;
/**
* 装货净重(单位吨)
*/
private BigDecimal loadNet;
} }
...@@ -2,20 +2,45 @@ package com.clx.performance.listener.excel; ...@@ -2,20 +2,45 @@ package com.clx.performance.listener.excel;
import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.event.AnalysisEventListener;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.excel.InvoiceData; import com.clx.performance.dto.excel.InvoiceData;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.owner.PageInvoiceOwnerSettlementOwnerDetailParam;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import static com.clx.performance.enums.settle.SettlementOwnerDetailEnum.InvoiceStatus.NO;
import static com.clx.performance.enums.settle.SettlementOwnerEnum.InvoiceType.ORDINARY;
@AllArgsConstructor @AllArgsConstructor
public class InvoiceDataListener extends AnalysisEventListener<InvoiceData> { public class InvoiceDataListener extends AnalysisEventListener<InvoiceData> {
private final List<InvoiceData> invoiceDataList; private final List<InvoiceData> invoiceDataList;
private final SettlementOwnerDetailDao settlementOwnerDetailDao;;
@Override @Override
public void invoke(InvoiceData invoiceData, AnalysisContext context) { public void invoke(InvoiceData invoiceData, AnalysisContext context) {
// 每解析一行都会调用一次,逐行校验数据 // 每解析一行都会调用一次,逐行校验数据
PageInvoiceOwnerSettlementOwnerDetailParam param = new PageInvoiceOwnerSettlementOwnerDetailParam();
param.setInvoiceStatus(NO.getCode());
param.setChildNo(invoiceData.getChildNo());
//param.setInvoiceType(ORDINARY.getCode());
IPage<SettlementOwnerDetail> page = settlementOwnerDetailDao.pageInvoiceOwnerSettlementOrderDetailList(param);
List<SettlementOwnerDetail> records = page.getRecords();
if (CollectionUtils.isEmpty(records)) {
invoiceData.setRemark("校验失败(运单编号不匹配)");
}else if(!ORDINARY.getCode().equals(records.get(0).getInvoiceType())){
invoiceData.setRemark("校验失败(开票标识非普通单)");
}else if(records.get(0).getInvoiceFreight().compareTo(invoiceData.getInvoiceFreight().multiply(new BigDecimal(100))) != 0){
invoiceData.setRemark("校验失败(开票金额不匹配)");
}else {
invoiceData.setRemark("校验通过");
invoiceData.setLoadNet(records.get(0).getLoadNet());
}
invoiceDataList.add(invoiceData); invoiceDataList.add(invoiceData);
} }
......
...@@ -19,6 +19,8 @@ import org.apache.commons.lang3.exception.ExceptionUtils; ...@@ -19,6 +19,8 @@ import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Objects;
@Slf4j @Slf4j
@Service @Service
public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqHandlerService { public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqHandlerService {
...@@ -75,6 +77,10 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH ...@@ -75,6 +77,10 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); .getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (Objects.equals(settlementOwnerDetail.getReportFlag(), com.clx.order.enums.OrderEnum.ReportFlag.NO.getCode())){
return;
}
try{ try{
// 更新broker // 更新broker
orderChildBrokerService.orderChildUpdate(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail); orderChildBrokerService.orderChildUpdate(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
......
...@@ -427,7 +427,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -427,7 +427,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementMqService.settlementPlatformAutoConfirmUpdate(settlementOwnerDetail.getSettlementNo()); settlementMqService.settlementPlatformAutoConfirmUpdate(settlementOwnerDetail.getSettlementNo());
} }
else { else if (Objects.equals(result.getSettleStatus(), 3) ) {
SettlementOrderChildRisk settlementOrderChildRisk = new SettlementOrderChildRisk(); SettlementOrderChildRisk settlementOrderChildRisk = new SettlementOrderChildRisk();
settlementOrderChildRisk.setChildNo(orderChild.getChildNo()); settlementOrderChildRisk.setChildNo(orderChild.getChildNo());
settlementOrderChildRisk.setTruckNo(orderChild.getTruckNo()); settlementOrderChildRisk.setTruckNo(orderChild.getTruckNo());
......
...@@ -38,12 +38,8 @@ import com.clx.performance.vo.pc.owner.settle.CountOwnerSettlementOwnerDetailVO; ...@@ -38,12 +38,8 @@ import com.clx.performance.vo.pc.owner.settle.CountOwnerSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO; import com.clx.performance.vo.pc.owner.settle.PageOwnerSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.UploadBatchInvoiceFileResultVO; import com.clx.performance.vo.pc.owner.settle.UploadBatchInvoiceFileResultVO;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
...@@ -52,6 +48,15 @@ import java.util.ArrayList; ...@@ -52,6 +48,15 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors;
import com.msl.common.result.Result;
import com.msl.document.api.feign.FileUploadFeign;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
...@@ -84,6 +89,9 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -84,6 +89,9 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
@Autowired @Autowired
private OrderChildBrokerMqService orderChildBrokerMqService; private OrderChildBrokerMqService orderChildBrokerMqService;
@Autowired
private FileUploadFeign fileUploadFeign;
@Override @Override
...@@ -681,20 +689,33 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -681,20 +689,33 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
@Override @Override
public UploadBatchInvoiceFileResultVO uploadBatchInvoiceFile(MultipartFile file) throws IOException { public UploadBatchInvoiceFileResultVO uploadBatchInvoiceFile(MultipartFile file) throws IOException {
List<InvoiceData> invoiceDataList = new ArrayList<>(); List<InvoiceData> invoiceDataList = new ArrayList<>();
// 解析上传的Excel文件
EasyExcel.read(file.getInputStream(), InvoiceData.class, new InvoiceDataListener(invoiceDataList)).sheet().doRead(); EasyExcel.read(file.getInputStream(), InvoiceData.class, new InvoiceDataListener(invoiceDataList,settlementOwnerDetailDao)).sheet().doRead();
boolean verifyResult = invoiceDataList.stream().allMatch(item -> "校验通过".equals(item.getRemark()));
Result<String> uploadResult = null;
if (!verifyResult) {
// 将校验后的数据写入新的Excel文件
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
EasyExcel.write(outputStream, InvoiceData.class).sheet("校验结果").doWrite(invoiceDataList);
// 将文件上传到OSS
uploadResult = fileUploadFeign.uploadBytes(outputStream.toByteArray(), null, null);
}
UploadBatchInvoiceFileResultVO vo = new UploadBatchInvoiceFileResultVO(); UploadBatchInvoiceFileResultVO vo = new UploadBatchInvoiceFileResultVO();
vo.setVerifyResult(0); vo.setVerifyResult(verifyResult);
vo.setErrorFileUrl(""); vo.setErrorFileUrl(uploadResult==null?null:uploadResult.getData());
vo.setOrderChildSum(0); vo.setOrderChildSum(invoiceDataList.size());
vo.setLoadWeightSum(new BigDecimal("0")); vo.setLoadWeightSum(invoiceDataList.stream().map(InvoiceData::getLoadNet).reduce(BigDecimal.ZERO,BigDecimal::add));
vo.setInvoiceFreightSum(new BigDecimal("0")); vo.setInvoiceFreightSum(invoiceDataList.stream().map(InvoiceData::getInvoiceFreight).reduce(BigDecimal.ZERO,BigDecimal::add));
vo.setChildNoList(invoiceDataList.stream().map(InvoiceData::getChildNo).collect(Collectors.toList()));
List<String> childNoList = new ArrayList<>(); return vo;
}
@Override
public void confirmBatchInvoice(List<String> childNoList) {
settlementOwnerDetailDao.updateSettlementByChildNoList(childNoList);
// 发送mq (运单更新) // 发送mq (运单更新)
orderChildBrokerMqService.orderChildUpdate(childNoList); orderChildBrokerMqService.orderChildUpdate(childNoList);
return vo;
} }
} }
...@@ -20,6 +20,7 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook; ...@@ -20,6 +20,7 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.util.List;
/** /**
* @author liruixin * @author liruixin
...@@ -55,4 +56,6 @@ public interface SettlementOwnerDetailService { ...@@ -55,4 +56,6 @@ public interface SettlementOwnerDetailService {
SXSSFWorkbook exportInvoiceOwnerSettlementOrderDetail(PageInvoiceOwnerSettlementOwnerDetailParam param); SXSSFWorkbook exportInvoiceOwnerSettlementOrderDetail(PageInvoiceOwnerSettlementOwnerDetailParam param);
UploadBatchInvoiceFileResultVO uploadBatchInvoiceFile(MultipartFile file) throws IOException; UploadBatchInvoiceFileResultVO uploadBatchInvoiceFile(MultipartFile file) throws IOException;
void confirmBatchInvoice(List<String> childNoList);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论