增加提单功能

This commit is contained in:
wuweihua
2026-11-03 17:30:12 +08:00
parent 6b78e13e5c
commit c87f49a14b
12 changed files with 844 additions and 0 deletions
@@ -0,0 +1,50 @@
package com.bms.price.domain.vo;
import java.util.List;
import lombok.Data;
/**
* 空运提单查询条件
*/
@Data
public class SrvBillAirQuery
{
/** 提单号(单个,模糊) */
private String billCode;
/** 提单号列表(精确) */
private List<String> billCodes;
/** 提单类型 */
private Integer billType;
/** 始发机场 */
private String startAirport;
/** 目的机场 */
private String endAirport;
/** 目的港 */
private String desPort;
/** 航线名称 */
private String routeName;
/** 航空公司 */
private String airCompany;
/** 航班号 */
private String airNo;
/** 发货日期起 */
private String shippingDateBegin;
/** 发货日期止 */
private String shippingDateEnd;
/** 创建时间起 */
private String createTimeBegin;
/** 创建时间止 */
private String createTimeEnd;
}
@@ -0,0 +1,132 @@
package com.bms.price.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
/**
* 空运提单列表/详情视图(srv_bill_air + finance/flight/op/track)
*/
@Data
public class SrvBillAirVo
{
/** 主键 */
private String guid;
/** 提单号 */
private String billCode;
/** 提单类型 */
private Integer billType;
/** 状态 */
private Integer blStatus;
/** 始发机场 */
private String startAirport;
/** 目的机场 */
private String endAirport;
/** 目的港 */
private String desPort;
/** 航线名称 */
private String routeName;
/** 航空公司 */
private String airCompany;
/** 报关费 */
private BigDecimal baoguanFee;
/** 报关其他费用 */
private BigDecimal baoguanOtherFee;
/** 仓储费 */
private BigDecimal stockFee;
/** 目的港代理费 */
private BigDecimal desPortAgentFee;
/** 空运其他费用 */
private BigDecimal airOtherFee;
/** 其他费用 */
private BigDecimal otherFee;
/** 总件数 */
private Integer pieceNumber;
/** 总体积 */
private BigDecimal volume;
/** 实际重量 */
private BigDecimal actualWeight;
/** 实际体积 */
private BigDecimal actualVolume;
/** 体积重 */
private BigDecimal volumeWeight;
/** 首程落地时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date firstLandingTime;
/** 航班号 */
private String airNo;
/** 实际航班号 */
private String actualAirNo;
/** 航空公司代理 */
private String airCompanyAgent;
/** 目的港代理编码 */
private String desPortAgentCode;
/** 报关公司编码 */
private String declareCode;
/** 清关编码 */
private String clearanceCode;
/** 清关代理 */
private String qingguanAgent;
/** 出仓仓库地址 */
private String stockAddr;
/** 发货日期 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date shippingDate;
/** 起飞时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/** 到达时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date arriveTime;
/** 到仓时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date arriveStockTime;
/** 清关时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date clearanceTime;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date modifyTime;
/** 总备注 */
private String remark;
}
@@ -0,0 +1,17 @@
package com.bms.price.mapper;
import java.util.List;
import com.bms.price.domain.vo.SrvBillAirQuery;
import com.bms.price.domain.vo.SrvBillAirVo;
/**
* 空运提单 Mapper
*/
public interface SrvBillAirMapper
{
List<SrvBillAirVo> selectSrvBillAirList(SrvBillAirQuery query);
SrvBillAirVo selectSrvBillAirByBillCode(String billCode);
SrvBillAirVo selectSrvBillAirByGuid(String guid);
}
@@ -0,0 +1,17 @@
package com.bms.price.service;
import java.util.List;
import com.bms.price.domain.vo.SrvBillAirQuery;
import com.bms.price.domain.vo.SrvBillAirVo;
/**
* 空运提单 Service
*/
public interface ISrvBillAirService
{
List<SrvBillAirVo> selectSrvBillAirList(SrvBillAirQuery query);
SrvBillAirVo selectSrvBillAirByBillCode(String billCode);
SrvBillAirVo selectSrvBillAirByGuid(String guid);
}
@@ -0,0 +1,37 @@
package com.bms.price.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.bms.price.domain.vo.SrvBillAirQuery;
import com.bms.price.domain.vo.SrvBillAirVo;
import com.bms.price.mapper.SrvBillAirMapper;
import com.bms.price.service.ISrvBillAirService;
/**
* 空运提单 Service 实现
*/
@Service
public class SrvBillAirServiceImpl implements ISrvBillAirService
{
@Autowired
private SrvBillAirMapper srvBillAirMapper;
@Override
public List<SrvBillAirVo> selectSrvBillAirList(SrvBillAirQuery query)
{
return srvBillAirMapper.selectSrvBillAirList(query);
}
@Override
public SrvBillAirVo selectSrvBillAirByBillCode(String billCode)
{
return srvBillAirMapper.selectSrvBillAirByBillCode(billCode);
}
@Override
public SrvBillAirVo selectSrvBillAirByGuid(String guid)
{
return srvBillAirMapper.selectSrvBillAirByGuid(guid);
}
}
@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bms.price.mapper.SrvBillAirMapper">
<resultMap id="SrvBillAirResult" type="com.bms.price.domain.vo.SrvBillAirVo">
<result property="guid" column="guid"/>
<result property="billCode" column="bill_code"/>
<result property="billType" column="bill_type"/>
<result property="blStatus" column="bl_status"/>
<result property="startAirport" column="start_airport"/>
<result property="endAirport" column="end_airport"/>
<result property="desPort" column="des_port"/>
<result property="routeName" column="route_name"/>
<result property="airCompany" column="air_company"/>
<result property="baoguanFee" column="baoguan_fee"/>
<result property="baoguanOtherFee" column="baoguan_other_fee"/>
<result property="stockFee" column="stock_fee"/>
<result property="desPortAgentFee" column="des_port_agent_fee"/>
<result property="airOtherFee" column="air_other_fee"/>
<result property="otherFee" column="other_fee"/>
<result property="pieceNumber" column="piece_number"/>
<result property="volume" column="volume"/>
<result property="actualWeight" column="actual_weight"/>
<result property="actualVolume" column="actual_volume"/>
<result property="volumeWeight" column="volume_weight"/>
<result property="firstLandingTime" column="first_landing_time"/>
<result property="airNo" column="air_no"/>
<result property="actualAirNo" column="actual_air_no"/>
<result property="airCompanyAgent" column="air_ompany_agent"/>
<result property="desPortAgentCode" column="des_port_agent_code"/>
<result property="declareCode" column="declare_code"/>
<result property="clearanceCode" column="clearance_code"/>
<result property="qingguanAgent" column="qingguan_agent"/>
<result property="stockAddr" column="stock_addr"/>
<result property="shippingDate" column="shipping_date"/>
<result property="startTime" column="start_time"/>
<result property="arriveTime" column="arrive_time"/>
<result property="arriveStockTime" column="arrive_stock_time"/>
<result property="clearanceTime" column="clearance_time"/>
<result property="createTime" column="create_time"/>
<result property="modifyTime" column="modify_time"/>
<result property="remark" column="remark"/>
</resultMap>
<sql id="selectAirBillVo">
select a.guid,
a.bill_code,
a.bill_type,
a.bl_status,
a.start_airport,
a.end_airport,
a.des_port,
a.route_name,
a.air_company,
f.baoguan_fee,
f.baoguan_other_fee,
f.stock_fee,
f.des_port_agent_fee,
f.air_other_fee,
f.other_fee,
a.piece_number,
a.volume,
a.actual_weight,
a.actual_volume,
a.volume_weight,
fl.first_landing_time,
fl.air_no,
fl.actual_air_no,
fl.air_ompany_agent,
fl.des_port_agent_code,
o.declare_code,
o.clearance_code,
o.qingguan_agent,
o.stock_addr,
t.shipping_date,
t.start_time,
t.arrive_time,
t.arrive_stock_time,
t.clearance_time,
a.create_time,
a.modify_time,
a.remark
from srv_bill_air a
left join srv_bill_air_finance f on f.bill_code = a.bill_code
left join srv_bill_air_flight fl on fl.bill_code = a.bill_code
left join srv_bill_air_op o on o.bill_code = a.bill_code
left join srv_bill_air_track t on t.bill_code = a.bill_code
</sql>
<sql id="airBillWhere">
<where>
<if test="billCode != null and billCode != ''">
AND a.bill_code like concat('%', #{billCode}, '%')
</if>
<if test="billCodes != null and billCodes.size() > 0">
AND a.bill_code in
<foreach collection="billCodes" item="code" open="(" separator="," close=")">
#{code}
</foreach>
</if>
<if test="billType != null">
AND a.bill_type = #{billType}
</if>
<if test="startAirport != null and startAirport != ''">
AND a.start_airport like concat('%', #{startAirport}, '%')
</if>
<if test="endAirport != null and endAirport != ''">
AND a.end_airport like concat('%', #{endAirport}, '%')
</if>
<if test="desPort != null and desPort != ''">
AND a.des_port like concat('%', #{desPort}, '%')
</if>
<if test="routeName != null and routeName != ''">
AND a.route_name like concat('%', #{routeName}, '%')
</if>
<if test="airCompany != null and airCompany != ''">
AND a.air_company like concat('%', #{airCompany}, '%')
</if>
<if test="airNo != null and airNo != ''">
AND fl.air_no like concat('%', #{airNo}, '%')
</if>
<if test="shippingDateBegin != null and shippingDateBegin != ''">
AND t.shipping_date &gt;= #{shippingDateBegin}
</if>
<if test="shippingDateEnd != null and shippingDateEnd != ''">
AND t.shipping_date &lt;= #{shippingDateEnd}
</if>
<if test="createTimeBegin != null and createTimeBegin != ''">
AND a.create_time &gt;= #{createTimeBegin}
</if>
<if test="createTimeEnd != null and createTimeEnd != ''">
AND a.create_time &lt;= #{createTimeEnd}
</if>
</where>
</sql>
<select id="selectSrvBillAirList" parameterType="com.bms.price.domain.vo.SrvBillAirQuery" resultMap="SrvBillAirResult">
<include refid="selectAirBillVo"/>
<include refid="airBillWhere"/>
order by a.create_time desc, a.bill_code desc
</select>
<select id="selectSrvBillAirByBillCode" parameterType="String" resultMap="SrvBillAirResult">
<include refid="selectAirBillVo"/>
where a.bill_code = #{billCode}
limit 1
</select>
<select id="selectSrvBillAirByGuid" parameterType="String" resultMap="SrvBillAirResult">
<include refid="selectAirBillVo"/>
where a.guid = #{guid}
limit 1
</select>
</mapper>