Compare commits

...

2 Commits

Author SHA1 Message Date
chenxiky
46517c7c28 Merge remote-tracking branch 'origin/master' 2025-07-26 17:40:04 +08:00
chenxiky
489cafbe43 feat:完成打印结算单接口 2025-07-26 17:39:25 +08:00
7 changed files with 192 additions and 9 deletions

View File

@ -2,6 +2,7 @@ package com.aircraft.modules.order.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.NumberChineseFormatter;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@ -17,14 +18,12 @@ import com.aircraft.modules.order.domain.dto.AddOrderTaskDTO;
import com.aircraft.modules.order.domain.dto.OrderMainPageQueryDTO;
import com.aircraft.modules.order.domain.dto.UpdateOrderDTO;
import com.aircraft.modules.order.domain.enums.*;
import com.aircraft.modules.order.domain.vo.GenerateSettlementOrderConfirmVO;
import com.aircraft.modules.order.domain.vo.OrderAllDetailVO;
import com.aircraft.modules.order.domain.vo.OrderMainPageQueryVO;
import com.aircraft.modules.order.domain.vo.OrderTaskDetailVO;
import com.aircraft.modules.order.domain.vo.*;
import com.aircraft.modules.order.service.*;
import com.aircraft.modules.route.domain.CpRoute;
import com.aircraft.modules.route.service.CpRouteService;
import com.aircraft.modules.system.domain.AttachmentMaterial;
import com.aircraft.modules.system.domain.CnCustomer;
import com.aircraft.modules.system.domain.EmEmployees;
import com.aircraft.modules.system.domain.EmScenic;
import com.aircraft.modules.system.domain.dto.LocalAttachmentMaterialDTO;
@ -736,10 +735,58 @@ public class OrderBiz {
* 打印结算单数据
*
* @param settlementOrderId 结算订单ID
* @return Boolean
* @return {@link PrintSettlementOrderDataVO}
*/
public Boolean printSettlementOrder(Long settlementOrderId) {
return true;
public PrintSettlementOrderDataVO printSettlementOrder(Long settlementOrderId) {
// 查询结算订单是否存在
SettlementMain settlementMain = settlementMainService.obtainSettlementMainById(settlementOrderId);
if (ObjectUtil.isNull(settlementMain)) {
throw new BadRequestException("结算订单不存在");
}
// 获取结算订单明细
List<SettlementDetail> settlementDetailList = settlementDetailService.obtainDetailBySettlementOrderId(settlementOrderId);
if (CollectionUtil.isEmpty(settlementDetailList)) {
throw new BadRequestException("结算订单明细不存在");
}
// 获取所有客户
List<CnCustomer> cnCustomerList = cnCustomerService.list();
// 根据ID 转换成map
Map<Long, CnCustomer> customerMap = cnCustomerList.stream().collect(Collectors.toMap(CnCustomer::getId, v -> v));
// 构建数据
PrintSettlementOrderDataVO printSettlement = new PrintSettlementOrderDataVO();
printSettlement.setSettlementTimeScope(settlementMain.getSettlementTimeScope());
// 获取景区
EmScenic scenic = emScenicService.obtainScenicById(settlementMain.getAttractionId());
if (ObjectUtil.isNotNull(scenic)) {
printSettlement.setClientName(scenic.getName());
}
// 获取重量
printSettlement.setCargoWeight(settlementDetailList.stream().map(SettlementDetail::getCargoWeight).reduce(BigDecimal.ZERO, BigDecimal::add));
BigDecimal totalAmount = settlementDetailList.stream().map(SettlementDetail::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
// 保留小数点2位
totalAmount = totalAmount.setScale(2, BigDecimal.ROUND_HALF_UP);
// 金额转换成中文
printSettlement.setTotalAmountUpper(NumberChineseFormatter.format(totalAmount, true, true));
printSettlement.setTotalAmount(totalAmount);
// 构建List
List<SettlementDetailVO> settlementDetailVOList = new ArrayList<>();
for (SettlementDetail settlementDetail : settlementDetailList) {
SettlementDetailVO settlementDetailVO = new SettlementDetailVO();
settlementDetailVO.setOrderNo(settlementDetail.getOrderNo());
settlementDetailVO.setOrderCreateTime(settlementDetail.getOrderCreateTime());
settlementDetailVO.setCargoWeight(settlementDetail.getCargoWeight());
settlementDetailVO.setTotalAmount(settlementDetail.getTotalAmount());
// 客户ID
CnCustomer cnCustomer = customerMap.get(settlementDetail.getCustomerId());
if (ObjectUtil.isNotNull(cnCustomer)) {
settlementDetailVO.setConfirmPerson(cnCustomer.getName());
}
settlementDetailVOList.add(settlementDetailVO);
}
printSettlement.setSettlementDetailList(settlementDetailVOList);
return printSettlement;
}
/**

View File

@ -5,6 +5,7 @@ import com.aircraft.modules.order.biz.OrderBiz;
import com.aircraft.modules.order.domain.SettlementDetail;
import com.aircraft.modules.order.domain.SettlementMain;
import com.aircraft.modules.order.domain.vo.GenerateSettlementOrderConfirmVO;
import com.aircraft.modules.order.domain.vo.PrintSettlementOrderDataVO;
import com.aircraft.modules.order.service.ISettlementMainService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -63,8 +64,8 @@ public class SettlementMainController {
@ApiOperation("打印结算单数据-返回对应的数据集前端进行打印PDF")
@GetMapping("/printSettlementOrder/{settlementOrderId}")
public ResponseEntity<Boolean> printSettlementOrder(
@ApiParam(value = "结算订单ID", required = true, example = "1946509536383438850")
public ResponseEntity<PrintSettlementOrderDataVO> printSettlementOrder(
@ApiParam(value = "结算订单ID", required = true, example = "1948997367110451201")
@PathVariable("settlementOrderId") Long settlementOrderId) {
return new ResponseEntity<>(orderBiz.printSettlementOrder(settlementOrderId),HttpStatus.OK);
}

View File

@ -61,6 +61,12 @@ public class SettlementDetail extends BaseEntity {
@ApiModelProperty(value = "订单发起人ID")
private Long orderInitiatorId;
/**
* 客户ID
*/
@ApiModelProperty(value = "客户ID")
private Long customerId;
/**
* 客户电话
*/
@ -123,5 +129,11 @@ public class SettlementDetail extends BaseEntity {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date orderFinishTime;
/**
* 重量
*/
@ApiModelProperty(value = "重量")
private BigDecimal cargoWeight;
}

View File

@ -0,0 +1,59 @@
package com.aircraft.modules.order.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
*
* 打印订单数据
*
* @author chenxiky
* @version 1.0.0
* @since 2025/7/26
*/
@Data
public class PrintSettlementOrderDataVO {
/**
* 结算单号
*/
@ApiModelProperty(value = "结算单号")
private String batchNo;
/**
* 结算时间
*/
@ApiModelProperty(value = "结算时间")
private String settlementTimeScope;
/**
* 委托方
*/
@ApiModelProperty(value = "委托方")
private String clientName;
/**
* 重量
*/
@ApiModelProperty(value = "重量")
private BigDecimal cargoWeight;
/**
* 金额RMB
*/
@ApiModelProperty(value = "金额RMB")
private BigDecimal totalAmount;
/**
* 金额大写
*/
@ApiModelProperty(value = "金额大写")
private String totalAmountUpper;
@ApiModelProperty(value = "结算明细")
private List<SettlementDetailVO> settlementDetailList;
}

View File

@ -0,0 +1,52 @@
package com.aircraft.modules.order.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
*
* 结算单明细 VO
*
* @author chenxiky
* @version 1.0.0
* @since 2025/7/26
*/
@Data
public class SettlementDetailVO {
/**
* 订单号
*/
@ApiModelProperty(value = "订单号")
private String orderNo;
/**
* 订单创建时间
*/
@ApiModelProperty(value = "订单创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date orderCreateTime;
/**
* 重量
*/
@ApiModelProperty(value = "重量")
private BigDecimal cargoWeight;
/**
* 金额
*/
@ApiModelProperty(value = "金额")
private BigDecimal totalAmount;
/**
* 确认人
*/
@ApiModelProperty(value = "确认人")
private String confirmPerson;
}

View File

@ -34,4 +34,11 @@ public interface ISettlementMainService extends IService<SettlementMain> {
*/
List<SettlementMain> batchInsert(List<SettlementMain> settlementMainList);
/**
* 根据ID获取数据
*
* @param settlementOrderId 结算单ID
* @return {@link SettlementMain}
*/
SettlementMain obtainSettlementMainById(Long settlementOrderId);
}

View File

@ -33,4 +33,9 @@ public class SettlementMainServiceImpl extends ServiceImpl<SettlementMainMapper,
this.saveBatch(settlementMainList);
return settlementMainList;
}
@Override
public SettlementMain obtainSettlementMainById(Long settlementOrderId) {
return this.getById(settlementOrderId);
}
}