Quellcode durchsuchen

凯和新增导出航运明细

Sun vor 3 Jahren
Ursprung
Commit
1c2463ec14

+ 18 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shipping/controller/KHUpdateOrderMessage.java

@@ -86,6 +86,24 @@ public class KHUpdateOrderMessage extends BaseController {
     }
 
     /**
+     * 凯和公司端导出订单明细
+     * 船名,航次必填
+     * @param tWarehouseBills
+     * @return
+     */
+    @Log(title = "凯和公司端导出订单", businessType = BusinessType.EXPORT)
+    @GetMapping("/exportDetails")
+    public AjaxResult exportVoyageDetails(TWarehouseBills tWarehouseBills) {
+        if (tWarehouseBills.getfVoyid() == null) {
+            return AjaxResult.error("航次不能为空");
+        }
+        if (tWarehouseBills.getfVslid() == null) {
+            return AjaxResult.error("船名不能为空");
+        }
+        return tWarehousebillsService.exportVoyageDetails(tWarehouseBills);
+    }
+
+    /**
      * 凯和若依端删除订单
      * @param tWarehouseBills
      * @return

+ 20 - 1
ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java

@@ -398,8 +398,27 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
         return sb.toString();
     }
 
+    public static String objToStr(Object obj) {
+        return obj == null ? "" : String.valueOf(obj);
+    }
+
+    public static String numHandle(String num) {
+        String[] valueSplit = num.split("\\.");
+        if (StringUtils.isNumeric(valueSplit[0]) && valueSplit.length > 1) {
+            if (StringUtils.isNumeric(valueSplit[1])) {
+                int valueInt = Integer.parseInt(valueSplit[1]);
+                if (valueInt > 0) {
+                    num = valueSplit[0] + "." + valueSplit[1].substring(0, 2);
+                } else {
+                    num = valueSplit[0];
+                }
+            }
+        }
+        return num;
+    }
+
     @SuppressWarnings("unchecked")
     public static <T> T cast(Object obj) {
         return (T) obj;
     }
-}
+}

+ 7 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/mapper/TFeesMapper.java

@@ -92,4 +92,11 @@ public interface TFeesMapper {
 
     // 根据查询仓储费费用信息
     public TFees seletFeesByCCF();
+
+    /**
+     * 查询费用名称列表
+     *
+     * @return 费用名称集合
+     */
+    public List<String> selectTFeesNameList();
 }

+ 8 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/mapper/TWarehouseBillsMapper.java

@@ -236,6 +236,14 @@ public interface TWarehouseBillsMapper extends BaseMapper<TWarehouseBills> {
     public List<DeriveInventoryExcel> deriveInventory(TWarehouseBills tWarehouseBills);
 
     /**
+     * 凯和根据船名航次导出清单
+     *
+     * @param tWarehouseBills
+     * @return
+     */
+    public List<Map<String, Object>> voyageDetails(TWarehouseBills tWarehouseBills);
+
+    /**
      * 批量查询凯和订单的船名航次信息
      *
      * @param fIds

+ 5 - 4
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/mapper/TWarehousebillsfeesMapper.java

@@ -105,10 +105,11 @@ public interface TWarehousebillsfeesMapper extends BaseMapper<TWarehousebillsfee
 
     public int selectPay(Long fId);
 
-    public List<TWarehousebillsfees> selectFeesByPId(@Param("fPid") Long fPid,
-                                                     @Param("fDc") String fDc);
-    int deleteFessByFPid(@Param("fPid") Long fPid,
-                         @Param("fDc") String fDc);
+    public List<TWarehousebillsfees> selectFeesByPId(@Param("fPid") Long fPid, @Param("fDc") String fDc);
+
+    public List<Map<String, Object>> voyageFeeDetails(@Param("fPid") Long fPid, @Param("fDc") String fDc);
+
+    int deleteFessByFPid(@Param("fPid") Long fPid, @Param("fDc") String fDc);
 
     /**
      *  查询总账统计报表

+ 8 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java

@@ -617,6 +617,14 @@ public interface ITWarehouseBillsService {
     public AjaxResult exportInventory(TWarehouseBills tWarehouseBills);
 
     /**
+     * 导出清单
+     *
+     * @param tWarehouseBills
+     * @return
+     */
+    public AjaxResult exportVoyageDetails(TWarehouseBills tWarehouseBills);
+
+    /**
      * 凯和若依端删除订单
      *
      * @param tWarehouseBills

+ 180 - 34
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -805,10 +805,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbDr.setfBilltype(billsType);
                 wbDr.setCreateTime(new Date());
                 wbDr.setSrcBillNo(warehouseBills.getfBillno());
-                wbDr.setfChargedate(warehouseBills.getfChargedate());
-                wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
                 wbDr.setCreateBy(loginUser.getUser().getUserName());
-                if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
+                if (warehouseBills.getfBsdate() != null) {
                     wbDr.setfBsdate(warehouseBills.getfBsdate());
                 }
                 tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
@@ -825,9 +823,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbCr.setCreateTime(new Date());
                 wbCr.setSrcBillNo(warehouseBills.getfBillno());
                 wbCr.setCreateBy(loginUser.getUser().getUserName());
-                wbCr.setfChargedate(warehouseBills.getfChargedate());
-                wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
-                if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
                     wbCr.setfBsdate(warehouseBills.getfBsdate());
                 }
                 tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
@@ -1461,9 +1457,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbCr.setCreateTime(new Date());
                 wbCr.setSrcBillNo(warehouseBills.getfBillno());
                 wbCr.setCreateBy(loginUser.getUser().getUserName());
-                wbCr.setfChargedate(warehouseBills.getfChargedate());
-                wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
-                if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
                     wbCr.setfBsdate(warehouseBills.getfBsdate());
                 }
                 tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
@@ -1482,9 +1476,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbDr.setCreateTime(new Date());
                 wbDr.setSrcBillNo(warehouseBills.getfBillno());
                 wbDr.setCreateBy(loginUser.getUser().getUserName());
-                wbDr.setfChargedate(warehouseBills.getfChargedate());
-                wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
-                if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
                     wbDr.setfBsdate(warehouseBills.getfBsdate());
                 }
                 tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
@@ -2375,8 +2367,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbCr.setCreateTime(new Date());
                 wbCr.setSrcBillNo(warehouseBills.getfBillno());
                 wbCr.setCreateBy(user.getUserName());
-                wbCr.setfChargedate(warehouseBills.getfChargedate());
-                wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
                 if (StringUtils.isNotNull(warehouseBills.getfBsdate())) {
                     wbCr.setfBsdate(warehouseBills.getfBsdate());
                 }
@@ -2394,8 +2384,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbDr.setCreateTime(new Date());
                 wbDr.setSrcBillNo(warehouseBills.getfBillno());
                 wbDr.setCreateBy(user.getUserName());
-                wbDr.setfChargedate(warehouseBills.getfChargedate());
-                wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
                 if (StringUtils.isNotNull(warehouseBills.getfBsdate())) {
                     wbDr.setfBsdate(warehouseBills.getfBsdate());
                 }
@@ -2711,9 +2699,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbCr.setCreateTime(new Date());
                 wbCr.setSrcBillNo(tWarehouseBills.getfBillno());
                 wbCr.setCreateBy(loginUser.getUser().getUserName());
-                //wbCr.setfChargedate(warehouseBills.getfChargedate());
-                //wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
-                if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
                     wbCr.setfBsdate(warehouseBills.getfBsdate());
                 }
                 tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
@@ -2731,9 +2717,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbDr.setCreateTime(new Date());
                 wbDr.setSrcBillNo(tWarehouseBills.getfBillno());
                 wbDr.setCreateBy(loginUser.getUser().getUserName());
-                //wbDr.setfChargedate(warehouseBills.getfChargedate());
-                //wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
-                if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
                     wbDr.setfBsdate(warehouseBills.getfBsdate());
                 }
                 tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
@@ -2834,9 +2818,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbCr.setCreateTime(new Date());
                 wbCr.setSrcBillNo(tWarehouseBills.getfBillno());
                 wbCr.setCreateBy(loginUser.getUser().getUserName());
-                //wbCr.setfChargedate(warehouseBills.getfChargedate());
-                //wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
-                if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
                     wbCr.setfBsdate(warehouseBills.getfBsdate());
                 }
                 tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
@@ -2855,9 +2837,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbDr.setCreateTime(new Date());
                 wbDr.setSrcBillNo(tWarehouseBills.getfBillno());
                 wbDr.setCreateBy(loginUser.getUser().getUserName());
-                //wbDr.setfChargedate(warehouseBills.getfChargedate());
-                //wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
-                if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
                     wbDr.setfBsdate(warehouseBills.getfBsdate());
                 }
                 tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
@@ -5812,6 +5792,176 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     }
 
     @Override
+    public AjaxResult exportVoyageDetails(TWarehouseBills tWarehouseBills) {
+        // 1.创建一个workbook,对应一个excel文件
+        HSSFWorkbook wb = new HSSFWorkbook();
+
+        // 2.在workbook中添加一个sheet,对应Excel中的sheet
+        HSSFSheet sheet = wb.createSheet("明细");
+
+        HSSFCellStyle cellStyle = wb.createCellStyle();
+        // 水平居中
+        cellStyle.setAlignment(HorizontalAlignment.CENTER);
+        // 垂直居中
+        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+        // 上边框
+        cellStyle.setBorderTop(BorderStyle.THIN);
+        // 下边框
+        cellStyle.setBorderBottom(BorderStyle.THIN);
+        // 左边框
+        cellStyle.setBorderLeft(BorderStyle.THIN);
+        // 右边框
+        cellStyle.setBorderRight(BorderStyle.THIN);
+
+        // 4.创建标题,合并标题单元格
+        // 行号
+        int rowNum = 0;
+
+        // 第一行
+        HSSFRow first = sheet.createRow(rowNum++);
+        String[] left = {"序号", "提单号", "航次", "箱型", "箱量", "始发港", "目的港", "运输条款", "货名", "装船日期", "卸船日期"};
+        List<String> middle = tFeesMapper.selectTFeesNameList();
+        String[] right = {"拖车费", "场地费", "换单费", "海运费", "合计金额", "改单费", "付款单位与日期", "换单费付费情况", "订舱公司全称", "收货公司全称", "收货公司联系人及联系方式"};
+        List<String> all = new ArrayList<>();
+        Collections.addAll(all, left);
+        all.addAll(middle);
+        Collections.addAll(all, right);
+
+        int size = all.size();
+        for (int i = 0; i < size; i++) {
+            HSSFCell tempCell = first.createCell(i);
+            if (i > 10 && i < size - 11) {
+                tempCell.setCellValue(all.get(i) + "单价");
+            } else {
+                tempCell.setCellValue(all.get(i));
+            }
+            tempCell.setCellStyle(cellStyle);
+        }
+
+        // 根据船名航次查询清单
+        List<Map<String, Object>> list = tWarehouseBillsMapper.voyageDetails(tWarehouseBills);
+        if (list.size() < 1) {
+            return AjaxResult.error("无数据,导出Excel失败");
+        }
+
+        for (Map<String, Object> map : list) {
+            Long fId = Long.parseLong(StringUtils.objToStr(map.get("fId")));
+            List<Map<String, Object>> fees = tWarehousebillsfeesMapper.voyageFeeDetails(fId, "D");
+
+            String count = map.get("fCntrcount") == null ? "0" : String.valueOf(map.get("fCntrcount"));
+            BigDecimal shipping = BigDecimal.ZERO;
+            BigDecimal documents = BigDecimal.ZERO;
+            BigDecimal insurance = BigDecimal.ZERO;
+            BigDecimal allAmount = BigDecimal.ZERO;
+            Map<Integer, String> feeMap = new HashMap<>();
+
+            for (Map<String, Object> fee : fees) {
+                String feeName = StringUtils.objToStr(fee.get("feeName"));
+                String unitPrice = fee.get("fUnitprice") == null ? "0" : String.valueOf(fee.get("fUnitprice"));
+                allAmount = allAmount.add(new BigDecimal(fee.get("fAmount") == null ? "0" : String.valueOf(fee.get("fAmount"))));
+                int i = middle.indexOf(feeName);
+                if (i >= 0) {
+                    feeMap.put(11 + i, StringUtils.numHandle(unitPrice));
+                }
+
+                if (StringUtils.equals(feeName, "海运费")) {
+                    shipping = new BigDecimal(unitPrice);
+                }
+                if (StringUtils.equals(feeName, "换单费")) {
+                    documents = new BigDecimal(unitPrice);
+                }
+                if (StringUtils.contains(feeName, "保险")) {
+                    insurance = new BigDecimal(unitPrice);
+                }
+            }
+
+            HSSFRow tempRow = sheet.createRow(rowNum++);
+            // 循环单元格填入数据
+            for (int j = 0; j < size; j++) {
+                HSSFCell tempCell = tempRow.createCell(j);
+                String cellValue = "";
+
+                if (j == 0) {
+                    // 序号
+                    cellValue = StringUtils.objToStr(map.get("rankNo"));
+                } else if (j == 1) {
+                    // 提单号
+                    cellValue = StringUtils.objToStr(map.get("fMblno"));
+                } else if (j == 2) {
+                    // 航次
+                    cellValue = StringUtils.objToStr(map.get("voyNo"));
+                } else if (j == 3) {
+                    // 箱型
+                    cellValue = StringUtils.objToStr(map.get("fCntrno"));
+                } else if (j == 4) {
+                    // 箱量
+                    cellValue = count;
+                } else if (j == 5) {
+                    // 始发港
+                    cellValue = StringUtils.objToStr(map.get("loadportName"));
+                } else if (j == 6) {
+                    // 目的港
+                    cellValue = StringUtils.objToStr(map.get("destportName"));
+                } else if (j == 7) {
+                    // 运输条款
+                    cellValue = StringUtils.objToStr(map.get("fLoadportMode")) + "-" + StringUtils.objToStr(map.get("fDestportMode"));
+                } else if (j == 8) {
+                    // 货名
+                    cellValue = StringUtils.objToStr(map.get("goodsName"));
+                } else if (j == 9) {
+                    // 装船日期
+                    cellValue = StringUtils.objToStr(map.get("fEtd"));
+                } else if (j == 10) {
+                    // 卸船日期
+                    cellValue = StringUtils.objToStr(map.get("fEta"));
+                } else if (j == size - 9) {
+                    // 换单费
+                    cellValue = documents.multiply(new BigDecimal(count)).toString();
+                } else if (j == size - 8) {
+                    // 海运费
+                    cellValue = (shipping.add(insurance)).multiply(new BigDecimal(count)).toString();
+                } else if (j == size - 7) {
+                    // 合计金额
+                    cellValue = allAmount.toString();
+                } else if (j == size - 3) {
+                    // 收货公司名称
+                    cellValue = StringUtils.objToStr(map.get("fShippername"));
+                } else if (j == size - 2) {
+                    // 收货公司全称
+                    cellValue = StringUtils.objToStr(map.get("fConsigneername"));
+                } else if (j == size - 1) {
+                    // 收货公司联系人及联系方式
+                    cellValue = StringUtils.objToStr(map.get("fConsigneetel"));
+                }
+                tempCell.setCellValue(StringUtils.numHandle(cellValue));
+                tempCell.setCellStyle(cellStyle);
+            }
+
+            feeMap.forEach((key, value) -> {
+                tempRow.getCell(key).setCellValue(value);
+            });
+        }
+
+        for (int i = 0; i < size; i++) {
+            sheet.autoSizeColumn(i);
+            sheet.setColumnWidth(i, sheet.getColumnWidth(i) * 17 / 10);
+        }
+
+        // 导出excel
+        String fileName = list.get(0).get("voyNo").toString() + "航次收支明细表.xls";
+        try {
+            OutputStream out = new FileOutputStream(getAbsoluteFile(fileName));
+            wb.write(out);
+            wb.close();
+            out.close();
+            return AjaxResult.success(fileName);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error("导出Excel失败");
+        }
+    }
+
+    @Override
     public AjaxResult deleteOrder(TWarehouseBills tWarehouseBills, LoginUser loginUser) {
         TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(tWarehouseBills.getfId());
         if (warehouseBills == null) {
@@ -7436,9 +7586,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     wbCr.setCreateTime(new Date());
                     wbCr.setSrcBillNo(tWarehouseBills.getfBillno());
                     wbCr.setCreateBy(loginUser.getUser().getUserName());
-                    //wbCr.setfChargedate(warehouseBills.getfChargedate());
-                    //wbCr.setfBillingDeadline(warehouseBills.getfChargedate());
-                    if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                    if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
                         wbCr.setfBsdate(warehouseBills.getfBsdate());
                     }
                     tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
@@ -7463,9 +7611,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     wbDr.setCreateTime(new Date());
                     wbDr.setSrcBillNo(tWarehouseBills.getfBillno());
                     wbDr.setCreateBy(loginUser.getUser().getUserName());
-                    //wbDr.setfChargedate(warehouseBills.getfChargedate());
-                    //wbDr.setfBillingDeadline(warehouseBills.getfChargedate());
-                    if (warehouseBills.getfBsdate() != null && !warehouseBills.getfBsdate().equals("")) {
+                    if (warehouseBills.getfBsdate() != null && !"".equals(warehouseBills.getfBsdate())) {
                         wbDr.setfBsdate(warehouseBills.getfBsdate());
                     }
                     tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);

+ 5 - 1
ruoyi-warehouse/src/main/resources/mapper/basicData/TFeesMapper.xml

@@ -134,4 +134,8 @@
         where f_no = 'CCF' and del_flag = 0
     </select>
 
-</mapper>
+    <select id="selectTFeesNameList" resultType="string">
+        select f_name from t_fees where del_flag = 0 and f_dc like '%D%'
+    </select>
+
+</mapper>

+ 78 - 0
ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsMapper.xml

@@ -1849,6 +1849,7 @@
         tw.f_shipper fShipper,
         tw.f_mblno fMblno,
         sd.dict_label fServiceitems,
+        tk.dict_label fDestportMode,
         tw.f_consigneername fConsigneername,
         ta.f_name fName,
         tw.f_bsdate fBsdate,
@@ -1953,6 +1954,7 @@
         LEFT JOIN t_address tre ON tre.f_id = tw.f_loadportid
         LEFT JOIN t_address ts ON ts.f_id = tw.f_destportid
         LEFT JOIN sys_dict_data sd ON sd.dict_value = tw.f_serviceitems AND sd.dict_type = 'f_serviceitems'
+        LEFT JOIN sys_dict_data tk ON tk.dict_value = tw.f_serviceitems_new AND tk.dict_type = 'f_serviceitems'
         <if test="fCntrno != null and fCntrno != ''">
         LEFT JOIN t_warehousebills_cntritems items ON tw.f_id = items.f_pid
         </if>
@@ -2824,6 +2826,82 @@
             )a,
             (SELECT @rank:= 0) b
     </select>
+
+    <!--凯和导出清单根据船名航次-->
+    <select id="voyageDetails" parameterType="TWarehousebills" resultType="map">
+        SELECT
+            @rank:=@rank + 1 AS rankNo,
+            a.*
+        FROM
+            (
+                SELECT DISTINCT
+                    tw.f_id fId,
+                    tw.f_mblno fMblno,
+                    ty.f_no voyNo,
+                    tc.f_no fCntrno,
+                    tc.f_cntrcount fCntrcount,
+                    tre.f_name loadportName,
+                    ts.f_name destportName,
+                    sd.dict_label fLoadportMode,
+                    tk.dict_label fDestportMode,
+                    tc.f_name goodsName,
+                    date_format(ty.f_ETD, '%Y-%m-%d') fEtd,
+                    date_format(ty.f_ETA, '%Y-%m-%d') fEta,
+                    tw.f_shippername fShippername,
+                    tw.f_consigneername fConsigneername,
+                    tw.f_consigneeattn fConsigneeattn,
+                    tw.f_consigneetel fConsigneetel
+                FROM
+                    t_warehousebills tw
+                        LEFT JOIN t_address tre ON tre.f_id = tw.f_loadportid
+                        LEFT JOIN t_address ts ON ts.f_id = tw.f_destportid
+                        LEFT JOIN sys_dict_data sd ON sd.dict_value = tw.f_serviceitems AND sd.dict_type = 'f_serviceitems'
+                        LEFT JOIN sys_dict_data tk ON tk.dict_value = tw.f_serviceitems_new AND tk.dict_type = 'f_serviceitems'
+                        <if test="fCntrno != null and fCntrno != ''">
+                            LEFT JOIN t_warehousebills_cntritems items ON tw.f_id = items.f_pid
+                        </if>
+                        LEFT JOIN t_voyage ty ON tw.f_voyid = ty.f_id
+                        LEFT JOIN (
+                            SELECT
+                                th.f_pid,
+                                th.f_cntrcount,
+                                tr.f_no,
+                                th.f_cntrid,
+                                tg.f_name
+                            FROM
+                                t_warehousebills_cntr th
+                                    LEFT JOIN t_cntr tr ON th.f_cntrid = tr.f_id
+                                    LEFT JOIN t_goods tg ON th.f_goodsid = tg.f_id
+                        ) tc ON tc.f_pid = tw.f_id
+                <where>
+                    tw.f_typeid = '1'
+                    and tw.del_flag = '0'
+                    <if test="fCntrno != null and fCntrno != ''">and items.f_cntrno like concat('%', #{fCntrno}, '%')</if>
+                    <if test="fCorpid != null ">and tw.f_corpid = #{fCorpid}</if>
+                    <if test="fMblno != null  and fMblno != ''">and tw.f_mblno like concat('%', #{fMblno}, '%')</if>
+                    <if test="fLoadportid != null ">and tw.f_loadportid = #{fLoadportid}</if>
+                    <if test="fDestportid != null ">and tw.f_destportid = #{fDestportid}</if>
+                    <if test="fVslid != null ">and tw.f_vslid = #{fVslid}</if>
+                    <if test="fVoyid != null ">and tw.f_voyid = #{fVoyid}</if>
+                    <if test="createBy != null  and createBy != ''">and tw.create_by = #{createBy}</if>
+                    <if test='cLoadDate != null and cLoadDate[0] != null and cLoadDate[0]!= ""'>
+                        and tw.f_bsdate &gt;= #{cLoadDate[0]}
+                    </if>
+                    <if test='cLoadDate != null and cLoadDate[1] != null and cLoadDate[1]!= ""'>
+                        and tw.f_bsdate &lt;= #{cLoadDate[1]}
+                    </if>
+                    <if test='timeInterval != null and timeInterval[0] != null and timeInterval[0]!= ""'>
+                        and ty.f_ATD &gt;= #{timeInterval[0]}
+                    </if>
+                    <if test='timeInterval != null and timeInterval[1] != null and timeInterval[1]!= ""'>
+                        and ty.f_ATD &lt;= #{timeInterval[1]}
+                    </if>
+                </where>
+                ORDER BY tw.create_time DESC, tw.f_id DESC
+        ) a,
+        (SELECT @rank:= 0) b
+    </select>
+
     <select id="selectTWarehousebillsByIds" parameterType="String" resultMap="TWarehousebillsResult">
         select f_id,f_vslid, f_voyid,f_arrival_status,f_billno,f_cargo_planning from t_warehousebills
         where f_id in

+ 15 - 0
ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsfeesMapper.xml

@@ -621,6 +621,21 @@
         <if test="fDc != null  and fDc != ''">and tw.f_dc = #{fDc}</if>
     </select>
 
+    <select id="voyageFeeDetails" resultType="map">
+        SELECT
+            tf.f_name feeName,
+            SUM(tw.f_unitprice) fUnitprice,
+            SUM(tw.f_amount) fAmount
+        FROM
+            t_warehousebillsfees tw
+                LEFT JOIN t_fees tf ON tw.f_feeid = tf.f_id
+        WHERE
+            tw.f_pid = #{fPid}
+            AND tw.f_billtype = 'KHDD'
+            <if test="fDc != null and fDc != ''">AND tw.f_dc = #{fDc}</if>
+        GROUP BY feeName;
+    </select>
+
     <delete id="deleteFessByFPid" parameterType="object">
         delete
         from t_warehousebillsfees