提交 08641ee1 authored 作者: 艾庆国's avatar 艾庆国

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

...@@ -70,4 +70,7 @@ public class OpenOrderChildDTO { ...@@ -70,4 +70,7 @@ public class OpenOrderChildDTO {
@ApiModelProperty(value = "线下平台", example = "华祥", required = true, dataType = "String") @ApiModelProperty(value = "线下平台", example = "华祥", required = true, dataType = "String")
private String invoicePlatform; private String invoicePlatform;
@ApiModelProperty(value = "开票状态 0 未开票 1 已开票 ", example = "1")
private Integer invoiceStatus;
} }
package com.clx.performance.vo.pc.owner.settle;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class UploadBatchInvoiceFileResultVO {
@ApiModelProperty(value="校验结果,0:数据无误,1:数据有误")
private Integer verifyResult;
@ApiModelProperty(value="错误文件地址")
private String errorFileUrl;
@ApiModelProperty(value="运单数")
private Integer orderChildSum;
@ApiModelProperty("装车吨数")
private BigDecimal loadWeightSum;
@ApiModelProperty(value="开票金额")
private BigDecimal invoiceFreightSum;
}
\ No newline at end of file
...@@ -14,6 +14,7 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwne ...@@ -14,6 +14,7 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwne
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO; import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.CountOwnerSettlementOwnerDetailVO; 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.msl.common.base.PageData; import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert; import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
...@@ -27,8 +28,10 @@ import org.springframework.http.HttpHeaders; ...@@ -27,8 +28,10 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Slf4j @Slf4j
@RestController @RestController
...@@ -81,6 +84,12 @@ public class CarrierSettlementOwnerDetailController { ...@@ -81,6 +84,12 @@ public class CarrierSettlementOwnerDetailController {
} }
} }
@ApiOperation(value = "上传批量开票文件",notes = "<br>By:杨启发")
@PostMapping("/uploadBatchInvoiceFile")
public Result<UploadBatchInvoiceFileResultVO> uploadBatchInvoiceFile(@RequestParam("file") MultipartFile file) throws IOException {
return Result.ok(settlementOwnerDetailService.uploadBatchInvoiceFile(file));
}
@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 {
......
package com.clx.performance.dto.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class InvoiceData {
@ExcelProperty("运单编号")
private String childNo;
@ExcelProperty("开票标识")
private String invoiceType;
@ExcelProperty("开票金额")
private Double invoiceFreight;
@ExcelProperty("备注")
private String remark;
}
package com.clx.performance.listener.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.clx.performance.dto.excel.InvoiceData;
import lombok.AllArgsConstructor;
import java.util.List;
@AllArgsConstructor
public class InvoiceDataListener extends AnalysisEventListener<InvoiceData> {
private final List<InvoiceData> invoiceDataList;
@Override
public void invoke(InvoiceData invoiceData, AnalysisContext context) {
// 每解析一行都会调用一次,逐行校验数据
invoiceDataList.add(invoiceData);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 解析完成后调用
// 可在此进行后续操作,如保存数据到数据库
}
}
package com.clx.performance.service.broker; package com.clx.performance.service.broker;
import java.util.List;
public interface OrderChildBrokerMqService { public interface OrderChildBrokerMqService {
void orderChildSync(String childNo); void orderChildSync(String childNo);
void orderChildUpdate(String childNo); void orderChildUpdate(String childNo);
void orderChildUpdate(List<String> childNoList);
} }
...@@ -14,6 +14,8 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; ...@@ -14,6 +14,8 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
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.List;
@Slf4j @Slf4j
@Service @Service
public class OrderChildBrokerMqServiceImpl implements OrderChildBrokerMqService { public class OrderChildBrokerMqServiceImpl implements OrderChildBrokerMqService {
...@@ -47,4 +49,13 @@ public class OrderChildBrokerMqServiceImpl implements OrderChildBrokerMqService ...@@ -47,4 +49,13 @@ public class OrderChildBrokerMqServiceImpl implements OrderChildBrokerMqService
rabbitTemplate.send(RabbitKeyBrokerConstants.DEFAULT_EXCHANGE, rabbitTemplate.send(RabbitKeyBrokerConstants.DEFAULT_EXCHANGE,
RabbitKeyBrokerConstants.DEFAULT_DELAY_ROUTING_KEY, message); RabbitKeyBrokerConstants.DEFAULT_DELAY_ROUTING_KEY, message);
} }
@Override
public void orderChildUpdate(List<String> childNoList) {
for (String childNo : childNoList) {
orderChildUpdate(childNo);
}
}
} }
...@@ -66,7 +66,7 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService { ...@@ -66,7 +66,7 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail); TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
// 更新状态 // 运单同步
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.PROCESSING.getCode()); settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.PROCESSING.getCode());
settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail); settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail);
...@@ -77,12 +77,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService { ...@@ -77,12 +77,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
public void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail, SettlementDriverDetail settlementDriverDetail) { public void orderChildUpdate(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail, SettlementDriverDetail settlementDriverDetail) {
TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail); TransportParam transportParam = buildParam(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
// 更新状态 // 运单更新
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.PROCESSING.getCode()); brokerService.orderChildUpdate(transportParam);
settlementOwnerDetailDao.updateInvoiceTypeStatus(settlementOwnerDetail);
brokerService.orderChildSync(transportParam);
brokerService.orderChildSync(transportParam);
} }
private TransportParam buildParam(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail, private TransportParam buildParam(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
...@@ -278,6 +274,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService { ...@@ -278,6 +274,8 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
orderChildInfo.setReceiveNet(orderChild.getUnloadNet()); orderChildInfo.setReceiveNet(orderChild.getUnloadNet());
orderChildInfo.setInvoiceFlag(settlementOwnerDetail.getInvoiceType()); orderChildInfo.setInvoiceFlag(settlementOwnerDetail.getInvoiceType());
orderChildInfo.setInvoicePlatform(settlementOwnerDetail.getInvoicingCompanyShorterName()); orderChildInfo.setInvoicePlatform(settlementOwnerDetail.getInvoicingCompanyShorterName());
orderChildInfo.setInvoiceStatus(Objects.equals(settlementOwnerDetail.getInvoiceStatus(),
SettlementOwnerDetailEnum.InvoiceStatus.YES.getCode())? 1 : 0);
transportParam.setOrder(orderInfo); transportParam.setOrder(orderInfo);
transportParam.setOrderChildImage(imageList); transportParam.setOrderChildImage(imageList);
......
...@@ -481,8 +481,8 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -481,8 +481,8 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
// 预付运费判断 // 预付运费判断
if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) <= 0) { if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) <= 0) {
// 转普通单 // // 转普通单
settlementOwnerDetail.setInvoiceType(SettlementOwnerEnum.InvoiceType.ORDINARY.getCode()); // settlementOwnerDetail.setInvoiceType(SettlementOwnerEnum.InvoiceType.ORDINARY.getCode());
settlementOwnerDetail.setInvoicingCompanyId(null); settlementOwnerDetail.setInvoicingCompanyId(null);
settlementOwnerDetail.setInvoicingCompanyShorterName(null); settlementOwnerDetail.setInvoicingCompanyShorterName(null);
settlementOwnerDetail.setInvoicingCompanyGroupCode(null); settlementOwnerDetail.setInvoicingCompanyGroupCode(null);
...@@ -497,6 +497,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -497,6 +497,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwnerDetailDao.updatePreFreight(settlementOwnerDetail); settlementOwnerDetailDao.updatePreFreight(settlementOwnerDetail);
settlementDriverDetailDao.updatePreFreight(settlementDriverDetail); settlementDriverDetailDao.updatePreFreight(settlementDriverDetail);
// 发送mq (更新无车承运)
orderChildBrokerMqService.orderChildSync(orderChild.getChildNo());
} else { } else {
if (Objects.equals(settlementOwnerDetail.getReportFlag(), com.clx.order.enums.OrderEnum.ReportFlag.NO.getCode())){ if (Objects.equals(settlementOwnerDetail.getReportFlag(), com.clx.order.enums.OrderEnum.ReportFlag.NO.getCode())){
......
package com.clx.performance.service.impl.settle; package com.clx.performance.service.impl.settle;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao; import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.excel.InvoiceData;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum; import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum; import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementWayEnum; import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.listener.excel.InvoiceDataListener;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
...@@ -20,6 +23,7 @@ import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam; ...@@ -20,6 +23,7 @@ import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageInvoiceOwnerSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageInvoiceOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PagePendingCarrierSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PagePendingCarrierSettlementOwnerDetailParam;
import com.clx.performance.service.broker.OrderChildBrokerMqService;
import com.clx.performance.service.settle.SettlementCommonService; import com.clx.performance.service.settle.SettlementCommonService;
import com.clx.performance.service.settle.SettlementOwnerDetailService; import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.service.settle.SettlementPostService; import com.clx.performance.service.settle.SettlementPostService;
...@@ -32,7 +36,15 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwne ...@@ -32,7 +36,15 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwne
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO; import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.CountOwnerSettlementOwnerDetailVO; 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.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.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -40,10 +52,7 @@ import java.util.ArrayList; ...@@ -40,10 +52,7 @@ 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 lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/** /**
...@@ -73,6 +82,8 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -73,6 +82,8 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
@Autowired @Autowired
private SettlementPostService settlementPostService; private SettlementPostService settlementPostService;
@Autowired
private OrderChildBrokerMqService orderChildBrokerMqService;
@Override @Override
...@@ -666,4 +677,24 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -666,4 +677,24 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
//创建excel //创建excel
return ExcelUtil.create(excelSheet); return ExcelUtil.create(excelSheet);
} }
@Override
public UploadBatchInvoiceFileResultVO uploadBatchInvoiceFile(MultipartFile file) throws IOException {
List<InvoiceData> invoiceDataList = new ArrayList<>();
EasyExcel.read(file.getInputStream(), InvoiceData.class, new InvoiceDataListener(invoiceDataList)).sheet().doRead();
UploadBatchInvoiceFileResultVO vo = new UploadBatchInvoiceFileResultVO();
vo.setVerifyResult(0);
vo.setErrorFileUrl("");
vo.setOrderChildSum(0);
vo.setLoadWeightSum(new BigDecimal("0"));
vo.setInvoiceFreightSum(new BigDecimal("0"));
List<String> childNoList = new ArrayList<>();
// 发送mq (运单更新)
orderChildBrokerMqService.orderChildUpdate(childNoList);
return vo;
}
} }
...@@ -15,7 +15,11 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwne ...@@ -15,7 +15,11 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPagePendingSettlementOwne
import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO; import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.owner.settle.CountOwnerSettlementOwnerDetailVO; 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 org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
/** /**
* @author liruixin * @author liruixin
...@@ -49,4 +53,6 @@ public interface SettlementOwnerDetailService { ...@@ -49,4 +53,6 @@ public interface SettlementOwnerDetailService {
SXSSFWorkbook exportBatchSettlementOwnerDetail(ExportBatchOwnerSettlementDetailParam param); SXSSFWorkbook exportBatchSettlementOwnerDetail(ExportBatchOwnerSettlementDetailParam param);
SXSSFWorkbook exportInvoiceOwnerSettlementOrderDetail(PageInvoiceOwnerSettlementOwnerDetailParam param); SXSSFWorkbook exportInvoiceOwnerSettlementOrderDetail(PageInvoiceOwnerSettlementOwnerDetailParam param);
UploadBatchInvoiceFileResultVO uploadBatchInvoiceFile(MultipartFile file) throws IOException;
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论