diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/SrvBillAirController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/SrvBillAirController.java new file mode 100644 index 00000000..503111b6 --- /dev/null +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/SrvBillAirController.java @@ -0,0 +1,58 @@ +package com.bms.web.controller.price; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import com.bms.common.core.controller.BaseController; +import com.bms.common.core.domain.AjaxResult; +import com.bms.common.core.page.TableDataInfo; +import com.bms.common.utils.StringUtils; +import com.bms.price.domain.vo.SrvBillAirQuery; +import com.bms.price.domain.vo.SrvBillAirVo; +import com.bms.price.service.ISrvBillAirService; + +/** + * 空运提单(计费中心) + */ +@RestController +@RequestMapping("/price/airBill") +public class SrvBillAirController extends BaseController +{ + @Autowired + private ISrvBillAirService srvBillAirService; + + /** + * 提单列表 + */ + @PreAuthorize("@ss.hasPermi('price:airBill:list')") + @GetMapping("/list") + public TableDataInfo list(SrvBillAirQuery query) + { + startPage(); + List list = srvBillAirService.selectSrvBillAirList(query); + return getDataTable(list); + } + + /** + * 提单详情(按提单号) + */ + @PreAuthorize("@ss.hasAnyPermi('price:airBill:list,price:airBill:query')") + @GetMapping("/detail") + public AjaxResult getInfo(@RequestParam("billCode") String billCode) + { + if (StringUtils.isEmpty(billCode)) + { + return error("提单号不能为空"); + } + SrvBillAirVo vo = srvBillAirService.selectSrvBillAirByBillCode(billCode); + if (vo == null) + { + return error("提单不存在"); + } + return success(vo); + } +} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/SrvBillAirQuery.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/SrvBillAirQuery.java new file mode 100644 index 00000000..77b53366 --- /dev/null +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/SrvBillAirQuery.java @@ -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 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; +} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/SrvBillAirVo.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/SrvBillAirVo.java new file mode 100644 index 00000000..fea3218b --- /dev/null +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/SrvBillAirVo.java @@ -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; +} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/SrvBillAirMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/SrvBillAirMapper.java new file mode 100644 index 00000000..824fcaf5 --- /dev/null +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/SrvBillAirMapper.java @@ -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 selectSrvBillAirList(SrvBillAirQuery query); + + SrvBillAirVo selectSrvBillAirByBillCode(String billCode); + + SrvBillAirVo selectSrvBillAirByGuid(String guid); +} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/ISrvBillAirService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/ISrvBillAirService.java new file mode 100644 index 00000000..284ed9ef --- /dev/null +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/ISrvBillAirService.java @@ -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 selectSrvBillAirList(SrvBillAirQuery query); + + SrvBillAirVo selectSrvBillAirByBillCode(String billCode); + + SrvBillAirVo selectSrvBillAirByGuid(String guid); +} diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirServiceImpl.java new file mode 100644 index 00000000..b6a47bdb --- /dev/null +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirServiceImpl.java @@ -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 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); + } +} diff --git a/bms-back/bms-system/src/main/resources/mapper/price/SrvBillAirMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/SrvBillAirMapper.xml new file mode 100644 index 00000000..277cb38c --- /dev/null +++ b/bms-back/bms-system/src/main/resources/mapper/price/SrvBillAirMapper.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + AND a.bill_code like concat('%', #{billCode}, '%') + + + AND a.bill_code in + + #{code} + + + + AND a.bill_type = #{billType} + + + AND a.start_airport like concat('%', #{startAirport}, '%') + + + AND a.end_airport like concat('%', #{endAirport}, '%') + + + AND a.des_port like concat('%', #{desPort}, '%') + + + AND a.route_name like concat('%', #{routeName}, '%') + + + AND a.air_company like concat('%', #{airCompany}, '%') + + + AND fl.air_no like concat('%', #{airNo}, '%') + + + AND t.shipping_date >= #{shippingDateBegin} + + + AND t.shipping_date <= #{shippingDateEnd} + + + AND a.create_time >= #{createTimeBegin} + + + AND a.create_time <= #{createTimeEnd} + + + + + + + + + + diff --git a/bms-back/sql/price/air_bill_menu.sql b/bms-back/sql/price/air_bill_menu.sql new file mode 100644 index 00000000..5e24971b --- /dev/null +++ b/bms-back/sql/price/air_bill_menu.sql @@ -0,0 +1,19 @@ +-- 空运提单列表: under 计费中心 +SET NAMES utf8mb4; + +INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) +SELECT 2520, N'提单列表', 2300, 2, 'airBill', 'price/billing/airBill', '', 'AirBill', 1, 0, 'C', '0', '0', + 'price:airBill:list', 'list', 'admin', sysdate(), N'查看空运提单列表与详情(srv_bill_air*)' +WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2520 OR perms = 'price:airBill:list'); + +INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) +SELECT 2521, N'查询', 2520, 1, '', NULL, 1, 0, 'F', '0', '0', 'price:airBill:list', '#', 'admin', sysdate(), N'提单列表查询' +WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2521); + +INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark) +SELECT 2522, N'详情', 2520, 2, '', NULL, 1, 0, 'F', '0', '0', 'price:airBill:query', '#', 'admin', sysdate(), N'提单详情' +WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2522 OR perms = 'price:airBill:query'); + +INSERT INTO sys_role_menu (role_id, menu_id) +SELECT 1, m.menu_id FROM (SELECT 2520 AS menu_id UNION SELECT 2521 UNION SELECT 2522) m +WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = 1 AND rm.menu_id = m.menu_id); diff --git a/bms-back/sql/price/air_bill_type_dict.sql b/bms-back/sql/price/air_bill_type_dict.sql new file mode 100644 index 00000000..8e5ee774 --- /dev/null +++ b/bms-back/sql/price/air_bill_type_dict.sql @@ -0,0 +1,18 @@ +-- 空运提单类型字典 srv_air_bill_type +-- 0=整板 1=散板 2=其他(对应 srv_bill_air.bill_type) +SET NAMES utf8mb4; + +INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark) +SELECT N'提单类型', 'srv_air_bill_type', '0', 'admin', sysdate(), N'空运提单 bill_type:整板/散板/其他' +FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'srv_air_bill_type'); + +INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark) +SELECT v.dict_sort, v.dict_label, v.dict_value, 'srv_air_bill_type', '', v.list_class, 'N', '0', 'admin', sysdate(), v.remark +FROM ( + SELECT 1 AS dict_sort, N'整板' AS dict_label, '0' AS dict_value, 'primary' AS list_class, N'bill_type=0' AS remark + UNION ALL SELECT 2, N'散板', '1', 'success', N'bill_type=1' + UNION ALL SELECT 3, N'其他', '2', 'info', N'bill_type=2' +) v +WHERE NOT EXISTS ( + SELECT 1 FROM sys_dict_data d WHERE d.dict_type = 'srv_air_bill_type' AND d.dict_value = v.dict_value +); diff --git a/bms-front/src/api/price/airBill.js b/bms-front/src/api/price/airBill.js new file mode 100644 index 00000000..1f37b2f5 --- /dev/null +++ b/bms-front/src/api/price/airBill.js @@ -0,0 +1,19 @@ +import request from '@/utils/request' + +/** Air bill list */ +export function listAirBill(query) { + return request({ + url: '/price/airBill/list', + method: 'get', + params: query + }) +} + +/** Air bill detail by bill code */ +export function getAirBill(billCode) { + return request({ + url: '/price/airBill/detail', + method: 'get', + params: { billCode } + }) +} diff --git a/bms-front/src/views/price/billing/airBill.vue b/bms-front/src/views/price/billing/airBill.vue new file mode 100644 index 00000000..ace29c7b --- /dev/null +++ b/bms-front/src/views/price/billing/airBill.vue @@ -0,0 +1,205 @@ + + + diff --git a/bms-front/src/views/price/billing/components/AirBillDetail.vue b/bms-front/src/views/price/billing/components/AirBillDetail.vue new file mode 100644 index 00000000..1f485f4d --- /dev/null +++ b/bms-front/src/views/price/billing/components/AirBillDetail.vue @@ -0,0 +1,116 @@ + + + + +