浏览代码

旅客数据导入

wenjinbiao 7 月之前
父节点
当前提交
df67bd8890
共有 22 个文件被更改,包括 885 次插入164 次删除
  1. 40 0
      snowy-common/src/main/java/vip/xiaonuo/common/util/CommonIdCardUtil.java
  2. 2 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/dict/service/BizDictService.java
  3. 20 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/dict/service/impl/BizDictServiceImpl.java
  4. 10 4
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/controller/PassengerCheckController.java
  5. 131 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/dto/PassengerCheckImportExcelDto.java
  6. 7 40
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/entity/PassengerCheck.java
  7. 48 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/listener/PassengerCheckExcelListener.java
  8. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/service/PassengerCheckService.java
  9. 132 4
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/service/impl/PassengerCheckServiceImpl.java
  10. 6 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheckrecord/entity/PassengerCheckRecord.java
  11. 5 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengergood/entity/PassengerGood.java
  12. 13 4
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerinfo/controller/PassengerInfoController.java
  13. 108 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerinfo/dto/PassengerInfoImportExcelDto.java
  14. 48 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerinfo/listerner/PassengerInfoExcelListener.java
  15. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerinfo/service/PassengerInfoService.java
  16. 65 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerinfo/service/impl/PassengerInfoServiceImpl.java
  17. 8 4
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/controller/PassengerPassController.java
  18. 105 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/dto/PassengerPassImportExcelDto.java
  19. 3 88
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/entity/PassengerPass.java
  20. 50 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/listener/PassengerPassListener.java
  21. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/service/PassengerPassService.java
  22. 75 19
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/service/impl/PassengerPassServiceImpl.java

+ 40 - 0
snowy-common/src/main/java/vip/xiaonuo/common/util/CommonIdCardUtil.java

@@ -0,0 +1,40 @@
+package vip.xiaonuo.common.util;
+
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * 身份证工具类
+ * @author wenjinbiao
+ */
+public class CommonIdCardUtil {
+
+    /**
+     * 根据身份证号码获取年龄
+     * @param idCard 身份证号码
+     * @author wenjinbiao
+     * @return 年龄
+     */
+    public static int getAgeByIdCard(String idCard) {
+        if (idCard == null || (idCard.length() != 15 && idCard.length() != 18)) {
+            throw new IllegalArgumentException("身份证号码不正确");
+        }
+
+        String birthdayString;
+        if (idCard.length() == 15) {
+            birthdayString = "19" + idCard.substring(6, 12);
+        } else {
+            birthdayString = idCard.substring(6, 14);
+        }
+
+        LocalDate birthday = LocalDate.parse(birthdayString, DateTimeFormatter.ofPattern("yyyyMMdd"));
+        LocalDate today = LocalDate.now();
+
+        return Period.between(birthday, today).getYears();
+    }
+
+    public static void main(String[] args) {
+        System.out.println(CommonIdCardUtil.getAgeByIdCard("460034199410181810"));
+    }
+}

+ 2 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/dict/service/BizDictService.java

@@ -70,4 +70,6 @@ public interface BizDictService extends IService<BizDict> {
     BizDict queryEntity(String id);
     BizDict queryEntity(String id);
 
 
     String getNameByType(String dataType,String dataValue);
     String getNameByType(String dataType,String dataValue);
+
+    String getNameByLabel(String dataType,String dataLabel);
 }
 }

+ 20 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/dict/service/impl/BizDictServiceImpl.java

@@ -180,4 +180,24 @@ public class BizDictServiceImpl extends ServiceImpl<BizDictMapper, BizDict> impl
         }
         }
         return "";
         return "";
     }
     }
+
+    @Override
+    public String getNameByLabel(String dataType,String dataLabel){
+        QueryWrapper<BizDict> queryWrapper = new QueryWrapper<BizDict>().checkSqlInjection();
+        queryWrapper.lambda()
+                .eq(BizDict::getDictValue,dataType)
+                .eq(BizDict::getParentId,"0");
+        BizDict bizDict = this.getOne(queryWrapper);
+        if(bizDict != null){
+            QueryWrapper<BizDict> dataQuery = new QueryWrapper<BizDict>().checkSqlInjection();
+            dataQuery.lambda()
+                    .eq(BizDict::getParentId,bizDict.getId())
+                    .eq(BizDict::getDictLabel,dataLabel);
+            BizDict dataBizDict = this.getOne(dataQuery);
+            if(dataBizDict != null){
+                return dataBizDict.getDictValue();
+            }
+        }
+        return "";
+    }
 }
 }

+ 10 - 4
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/controller/PassengerCheckController.java

@@ -17,11 +17,10 @@ import cn.hutool.core.util.URLUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.FieldError;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.entity.PassengerCheck;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.entity.PassengerCheck;
@@ -172,4 +171,11 @@ public class PassengerCheckController {
     public CommonResult<PassengerCheck> detail(@Valid PassengerCheckIdParam passengerCheckIdParam) {
     public CommonResult<PassengerCheck> detail(@Valid PassengerCheckIdParam passengerCheckIdParam) {
         return CommonResult.data(passengerCheckService.detail(passengerCheckIdParam));
         return CommonResult.data(passengerCheckService.detail(passengerCheckIdParam));
     }
     }
+
+    @Operation(summary = "旅客查验信息导入")
+//    @SaCheckPermission("/biz/passengercheck/importData")
+    @PostMapping("/biz/passengercheck/importData")
+    public void importData(@RequestParam(value = "file") MultipartFile multipartFile){
+        passengerCheckService.importData(multipartFile);
+    }
 }
 }

+ 131 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/dto/PassengerCheckImportExcelDto.java

@@ -0,0 +1,131 @@
+package vip.xiaonuo.biz.modular.passenger.passengercheck.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class PassengerCheckImportExcelDto {
+
+
+    /** 姓名 */
+    @ExcelProperty(index = 1,value = "姓名")
+    private String name;
+
+    /** 性别 */
+    @ExcelProperty(index = 2,value = "性别")
+    private String gender;
+
+
+    /** 身份证号 */
+    @ExcelProperty(index = 3,value = "身份证号")
+    private String idNo;
+
+
+    /** 国籍 */
+    @ExcelProperty(index = 4,value = "国籍")
+    private String nationality;
+
+
+    /** 居住地 */
+    @ExcelProperty(index = 5,value = "居住地")
+    private String address;
+
+
+
+    /** 车次/航班号 */
+    @ExcelProperty(index = 7,value = "车次/航班号")
+    private String travelNo;
+
+
+    @ExcelProperty(index = 9,value = "出发港口")
+    private String fromPort;
+
+
+    @ExcelProperty(index = 10,value = "到达港口")
+    private String toPort;
+
+
+    /** 查验指令 */
+    @ExcelProperty(index = 11,value = "查验指令")
+    private String checkInstruction;
+
+    /** 查验状态 */
+    @ExcelProperty(index = 12,value = "查验状态")
+    private String checkStatus;
+
+    /** 指令编号 */
+    @ExcelProperty(index = 13,value = "指令编号")
+    private String checkInstructionNo;
+
+    /** 查验地点 */
+    @ExcelProperty(index = 15,value = "查验地点")
+    private String checkPlace;
+
+    /** 查验方式 */
+    @ExcelProperty(index = 16,value = "查验方式")
+    private String checkMethod;
+
+    /** 查验目的 */
+    @ExcelProperty(index = 17,value = "查验目的")
+    private String checkPurpose;
+
+    /** 查验人 */
+    @ExcelProperty(index = 19,value = "查验人")
+    private String checkBy;
+
+
+    /** 查验原因 */
+    @ExcelProperty(index = 21,value = "查验未通过原因")
+    private String checkReason;
+
+
+    @ExcelProperty(index = 22,value = "查验结果说明")
+    private String checkResultSm;
+
+    //物品信息====================================
+
+    /** 物品类别 */
+    @ExcelProperty(index = 27,value = "物品类别")
+    private String goodCategory;
+
+    /** 物品细类 */
+    @ExcelProperty(index = 28,value = "物品细类")
+    private String goodSubclass;
+
+    /** 物品名称 */
+    @ExcelProperty(index = 29,value = "物品名称")
+    private String goodName;
+
+    /** 物品场地 */
+    @ExcelProperty(index = 30,value = "物品场地")
+    private String goodPlace;
+
+    /** 重量 */
+    @ExcelProperty(index = 31,value = "重量(千克)")
+    private String weight;
+
+    /** 品牌 */
+    @ExcelProperty(index = 32,value = "品牌")
+    private String brand;
+
+    /** 规格型号 */
+    @ExcelProperty(index = 33,value = "规格型号")
+    private String specModel;
+
+    /** 单价 */
+    @ExcelProperty(index = 34,value = "单价")
+    private String price;
+
+    /** 币种 */
+
+    @ExcelProperty(index = 35,value = "币种")
+    private String currency;
+
+
+    /** 单位 */
+    @ExcelProperty(index = 36,value = "数量单位")
+    private String unit;
+
+}

+ 7 - 40
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/entity/PassengerCheck.java

@@ -62,23 +62,7 @@ public class PassengerCheck {
     @ExcelProperty(index = 4,value = "身份证号")
     @ExcelProperty(index = 4,value = "身份证号")
     private String idNo;
     private String idNo;
 
 
-    /** 证件照 */
-    @Schema(description = "证件照")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 5,value = "证件照")
-    private String certificateUrl;
-
-    /** 抓拍照 */
-    @Schema(description = "抓拍照")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 6,value = "抓拍照")
-    private String captureUrl;
 
 
-    /** 相似度 */
-    @Schema(description = "相似度")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 7,value = "相似度")
-    private String similarity;
 
 
     /** 国籍 */
     /** 国籍 */
     @Schema(description = "国籍")
     @Schema(description = "国籍")
@@ -104,17 +88,6 @@ public class PassengerCheck {
     @ExcelProperty(index = 11,value = "航/车次(班)日期")
     @ExcelProperty(index = 11,value = "航/车次(班)日期")
     private Date travelTime;
     private Date travelTime;
 
 
-    /** 出发时间 */
-    @Schema(description = "出发时间")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 12,value = "出发时间")
-    private Date departTime;
-
-    /** 是否携带行李物品 */
-    @Schema(description = "是否携带行李物品")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 13,value = "是否携带行李物品")
-    private String baggage;
 
 
     /** 出发港口 */
     /** 出发港口 */
     @Schema(description = "出发港口")
     @Schema(description = "出发港口")
@@ -128,17 +101,6 @@ public class PassengerCheck {
     @ExcelProperty(index = 15,value = "到达港口")
     @ExcelProperty(index = 15,value = "到达港口")
     private String toPort;
     private String toPort;
 
 
-    /** 座位号 */
-    @Schema(description = "座位号")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 16,value = "座位号")
-    private String seatNo;
-
-    /** 交通工具类型 */
-    @Schema(description = "交通工具类型")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 17,value = "交通工具类型")
-    private String vehicleType;
 
 
     /** 查验指令 */
     /** 查验指令 */
     @Schema(description = "查验指令")
     @Schema(description = "查验指令")
@@ -201,8 +163,13 @@ public class PassengerCheck {
     private Date checkTime;
     private Date checkTime;
 
 
     /** 查验原因 */
     /** 查验原因 */
-    @Schema(description = "查验原因")
+    @Schema(description = "查验未通过原因")
     @ColumnWidth(12)
     @ColumnWidth(12)
-    @ExcelProperty(index = 28,value = "查验原因")
+    @ExcelProperty(index = 28,value = "查验未通过原因")
     private String checkReason;
     private String checkReason;
+
+    @Schema(description = "查验结果说明")
+    @ColumnWidth(12)
+    @ExcelProperty(index = 29,value = "查验结果说明")
+    private String checkResultSm;
 }
 }

+ 48 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/listener/PassengerCheckExcelListener.java

@@ -0,0 +1,48 @@
+package vip.xiaonuo.biz.modular.passenger.passengercheck.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import vip.xiaonuo.biz.modular.passenger.passengercheck.dto.PassengerCheckImportExcelDto;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Consumer;
+@Slf4j
+public class PassengerCheckExcelListener extends AnalysisEventListener<PassengerCheckImportExcelDto> {
+    /**
+     * 数据成功回调
+     */
+    private Consumer<List<PassengerCheckImportExcelDto>> consumer;
+
+    private static final List<PassengerCheckImportExcelDto> EXCEL_LIST = new ArrayList<>();
+
+    public PassengerCheckExcelListener(Consumer<List<PassengerCheckImportExcelDto>> consumer) {
+        this.consumer = consumer;
+    }
+
+    /**
+     * 这个每一条数据解析都会来调用
+     *
+     * @param data            one row value. Is is same as {@link AnalysisContext#readRowHolder()}
+     * @param analysisContext
+     */
+    @Override
+    public void invoke(PassengerCheckImportExcelDto data, AnalysisContext analysisContext) {
+        log.info("解析到一条数据:{}", JSON.toJSONString(data));
+        EXCEL_LIST.add(data);
+    }
+
+    /**
+     * 所有数据解析完成了 都会来调用
+     *
+     * @param analysisContext
+     */
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+        consumer.accept(EXCEL_LIST);
+        // 处理结束后清空List
+        EXCEL_LIST.clear();
+    }
+}

+ 3 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/service/PassengerCheckService.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.biz.modular.passenger.passengercheck.service;
 
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.entity.PassengerCheck;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.entity.PassengerCheck;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckAddParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckAddParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckEditParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckEditParam;
@@ -78,4 +79,6 @@ public interface PassengerCheckService extends IService<PassengerCheck> {
      * @date  2024/12/06 15:46
      * @date  2024/12/06 15:46
      **/
      **/
     PassengerCheck queryEntity(String id);
     PassengerCheck queryEntity(String id);
+
+    void importData(MultipartFile multipartFile);
 }
 }

+ 132 - 4
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheck/service/impl/PassengerCheckServiceImpl.java

@@ -14,14 +14,26 @@ package vip.xiaonuo.biz.modular.passenger.passengercheck.service.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import org.springframework.web.multipart.MultipartFile;
+import vip.xiaonuo.biz.modular.dict.service.BizDictService;
+import vip.xiaonuo.biz.modular.passenger.passengercheck.dto.PassengerCheckImportExcelDto;
+import vip.xiaonuo.biz.modular.passenger.passengercheck.listener.PassengerCheckExcelListener;
+import vip.xiaonuo.biz.modular.passenger.passengercheckrecord.entity.PassengerCheckRecord;
+import vip.xiaonuo.biz.modular.passenger.passengercheckrecord.service.PassengerCheckRecordService;
+import vip.xiaonuo.biz.modular.passenger.passengergood.entity.PassengerGood;
+import vip.xiaonuo.biz.modular.passenger.passengergood.service.PassengerGoodService;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.PassengerRootPageParam;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.PassengerRootPageParam;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.exception.CommonException;
@@ -31,9 +43,11 @@ import vip.xiaonuo.biz.modular.passenger.passengercheck.mapper.PassengerCheckMap
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckAddParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckAddParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckEditParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckEditParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckIdParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckIdParam;
-import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckPageParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.service.PassengerCheckService;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.service.PassengerCheckService;
+import vip.xiaonuo.common.util.CommonIdCardUtil;
 
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -43,8 +57,16 @@ import java.util.List;
  * @date  2024/12/06 15:46
  * @date  2024/12/06 15:46
  **/
  **/
 @Service
 @Service
+@Slf4j
 public class PassengerCheckServiceImpl extends ServiceImpl<PassengerCheckMapper, PassengerCheck> implements PassengerCheckService {
 public class PassengerCheckServiceImpl extends ServiceImpl<PassengerCheckMapper, PassengerCheck> implements PassengerCheckService {
 
 
+    @Autowired
+    private PassengerGoodService passengerGoodService;
+    @Autowired
+    private PassengerCheckRecordService passengerCheckRecordService;
+    @Autowired
+    private BizDictService bizDictService;
+
     @Override
     @Override
     public Page<PassengerCheck> page(PassengerRootPageParam passengerCheckPageParam) {
     public Page<PassengerCheck> page(PassengerRootPageParam passengerCheckPageParam) {
         QueryWrapper<PassengerCheck> queryWrapper = new QueryWrapper<PassengerCheck>().checkSqlInjection();
         QueryWrapper<PassengerCheck> queryWrapper = new QueryWrapper<PassengerCheck>().checkSqlInjection();
@@ -74,9 +96,7 @@ public class PassengerCheckServiceImpl extends ServiceImpl<PassengerCheckMapper,
             queryWrapper.lambda().like(PassengerCheck::getCheckStatus, passengerCheckPageParam.getCheckStatus());
             queryWrapper.lambda().like(PassengerCheck::getCheckStatus, passengerCheckPageParam.getCheckStatus());
         }
         }
 
 
-        if(ObjectUtil.isNotEmpty(passengerCheckPageParam.getBaggage())) {
-            queryWrapper.lambda().eq(PassengerCheck::getBaggage, passengerCheckPageParam.getBaggage());
-        }
+
 
 
         if(ObjectUtil.isNotEmpty(passengerCheckPageParam.getFromPort())) {
         if(ObjectUtil.isNotEmpty(passengerCheckPageParam.getFromPort())) {
             queryWrapper.lambda().eq(PassengerCheck::getFromPort, passengerCheckPageParam.getFromPort());
             queryWrapper.lambda().eq(PassengerCheck::getFromPort, passengerCheckPageParam.getFromPort());
@@ -154,4 +174,112 @@ public class PassengerCheckServiceImpl extends ServiceImpl<PassengerCheckMapper,
         }
         }
         return passengerCheck;
         return passengerCheck;
     }
     }
+
+    @Override
+    public void importData(MultipartFile file) {
+        try {
+            PassengerCheckExcelListener listener = new PassengerCheckExcelListener(this::saveExcelData);
+            // 开始读取数据信息
+            EasyExcel.read(file.getInputStream(), PassengerCheckImportExcelDto.class, listener)
+                    .sheet(1).headRowNumber(1).doRead();
+        } catch (Exception e) {
+            log.error("导入旅客查验信息失败", e);
+        }
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public void saveExcelData(List<PassengerCheckImportExcelDto> importExcelDtos) {
+
+        Date currentDate = new Date();
+        int releaseCount = 5;
+        int xlsbSjCount = -1;
+        int cyZlJsSjCount = 1;
+        int xlWpSjCount = -1;
+        for (PassengerCheckImportExcelDto item : importExcelDtos) {
+
+            PassengerCheck passengerCheck = new PassengerCheck();
+            BeanUtil.copyProperties(item,passengerCheck);
+            //根据身份证号计算年龄
+            passengerCheck.setAge(CommonIdCardUtil.getAgeByIdCard(item.getIdNo())+"");
+            //设置性别
+            passengerCheck.setGender(bizDictService.getNameByLabel("lvke_sex",item.getGender()));
+            //设置国籍
+            passengerCheck.setNationality(bizDictService.getNameByLabel("lvke_city",item.getNationality()));
+            //当前时间
+            passengerCheck.setTravelTime(currentDate);
+            //设置出发港口
+            passengerCheck.setFromPort(bizDictService.getNameByLabel("lvke_departurePort",item.getFromPort()));
+            //设置到达港口
+            passengerCheck.setToPort(bizDictService.getNameByLabel("lvke_arrivingPort",item.getToPort()));
+            //设置查验指令
+            passengerCheck.setCheckInstruction(bizDictService.getNameByLabel("lvke_checkMethod",item.getCheckInstruction()));
+            //设置查验状态
+            passengerCheck.setCheckStatus(bizDictService.getNameByLabel("lvke_checkStatus",item.getCheckStatus()));
+            //发布时间
+            passengerCheck.setReleaseTime(DateUtil.offsetMinute(currentDate,releaseCount++));
+            //查验时间 已查验就有添加查验时间
+            if(!"0".equals(passengerCheck.getCheckStatus()) ){
+                passengerCheck.setCheckTime(DateUtil.offsetMinute(passengerCheck.getReleaseTime(),5));
+            }
+
+            //设置查验方式
+            passengerCheck.setCheckMethod(bizDictService.getNameByLabel("lvke_checkMethod",item.getCheckMethod()));
+            //查验结果
+            passengerCheck.setCheckResult(item.getCheckStatus());
+
+            this.save(passengerCheck);
+
+            if(ObjectUtil.isNotEmpty(item.getGoodName())){
+                PassengerGood passengerGood = new PassengerGood();
+                BeanUtil.copyProperties(item,passengerGood);
+                passengerGood.setPassengerId(passengerCheck.getId());
+                passengerGood.setType("2");
+                //数量默认1
+                passengerGood.setQuantity("1");
+
+                passengerGoodService.save(passengerGood);
+            }
+
+
+            //设置查验步骤
+
+            List<PassengerCheckRecord> allStep = new ArrayList<>();
+
+            PassengerCheckRecord step1 = new PassengerCheckRecord();
+            step1.setPassengerId(passengerCheck.getId());
+            step1.setType("2");
+            step1.setCheckStep("旅客提交行李申报");
+            step1.setCreateTime(DateUtil.offsetDay(currentDate,xlsbSjCount--));
+
+            PassengerCheckRecord step2 = new PassengerCheckRecord();
+            step2.setPassengerId(passengerCheck.getId());
+            step2.setType("2");
+            step2.setCheckStep("查验指令生成");
+            step2.setCreateTime(passengerCheck.getReleaseTime());
+
+            PassengerCheckRecord step3 = new PassengerCheckRecord();
+            step3.setPassengerId(passengerCheck.getId());
+            step3.setType("2");
+            step3.setCheckStep("查验指令接收");
+            step3.setCreateTime(DateUtil.offsetMinute(passengerCheck.getReleaseTime(),cyZlJsSjCount++));
+
+            PassengerCheckRecord step4 = new PassengerCheckRecord();
+            step4.setPassengerId(passengerCheck.getId());
+            step4.setType("2");
+            step4.setCheckStep("行李物品查验");
+            step4.setCreateTime(DateUtil.offsetMinute(passengerCheck.getReleaseTime(),xlWpSjCount--));
+
+            allStep.add(step1);
+            allStep.add(step2);
+            allStep.add(step3);
+            allStep.add(step4);
+
+            passengerCheckRecordService.saveBatch(allStep);
+
+        }
+
+    }
+
+
 }
 }

+ 6 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengercheckrecord/entity/PassengerCheckRecord.java

@@ -63,4 +63,10 @@ public class PassengerCheckRecord {
     @ExcelProperty(index = 4,value = "创建时间")
     @ExcelProperty(index = 4,value = "创建时间")
     @TableField(fill = FieldFill.INSERT)
     @TableField(fill = FieldFill.INSERT)
     private Date createTime;
     private Date createTime;
+
+    /** 查验步骤 */
+    @Schema(description = "旅客类型")
+    @ColumnWidth(12)
+    @ExcelProperty(index = 5,value = "旅客类型 1:基本旅客 2:查验旅客 3:放行旅客")
+    private String type;
 }
 }

+ 5 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengergood/entity/PassengerGood.java

@@ -114,4 +114,9 @@ public class PassengerGood {
     @ColumnWidth(12)
     @ColumnWidth(12)
     @ExcelProperty(index = 13,value = "发票/许可证(多个以逗号拼接)")
     @ExcelProperty(index = 13,value = "发票/许可证(多个以逗号拼接)")
     private String license;
     private String license;
+
+    @Schema(description = "旅客类型")
+    @ColumnWidth(12)
+    @ExcelProperty(index = 14,value = "旅客类型 1:基本旅客 2:查验旅客 3:放行旅客")
+    private String type;
 }
 }

+ 13 - 4
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerinfo/controller/PassengerInfoController.java

@@ -18,10 +18,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.entity.PassengerInfo;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.entity.PassengerInfo;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.*;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.*;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.vo.PassengerInfoDetailVo;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.vo.PassengerInfoDetailVo;
@@ -175,4 +173,15 @@ public class PassengerInfoController {
     public CommonResult<PassengerInfoDetailVo> detail(@Valid PassengerInfoIdParam passengerInfoIdParam) {
     public CommonResult<PassengerInfoDetailVo> detail(@Valid PassengerInfoIdParam passengerInfoIdParam) {
         return CommonResult.data(passengerInfoService.detail(passengerInfoIdParam));
         return CommonResult.data(passengerInfoService.detail(passengerInfoIdParam));
     }
     }
+    /**
+     * 导入excel数据
+     * @author wenjinbiao
+     * @date  2024/12/05 17:34
+     */
+    @Operation(summary = "导入excel数据")
+    //@SaCheckPermission("/biz/passengerinfo/detail")
+    @PostMapping("/biz/passengerinfo/importData")
+    public void importExcelData(@RequestParam(value = "file") MultipartFile multipartFile){
+        passengerInfoService.importExcelData(multipartFile);
+    }
 }
 }

+ 108 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerinfo/dto/PassengerInfoImportExcelDto.java

@@ -0,0 +1,108 @@
+package vip.xiaonuo.biz.modular.passenger.passengerinfo.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class PassengerInfoImportExcelDto {
+    /** 姓名 */
+    @ExcelProperty(index = 1,value = "姓名")
+    private String name;
+
+    /** 性别 */
+    @ExcelProperty(index = 2,value = "性别")
+    private String gender;
+
+
+    /** 身份证号 */
+    @ExcelProperty(index = 3,value = "身份证号")
+    private String idNo;
+
+
+    /** 国籍 */
+    @ExcelProperty(index = 4,value = "国籍")
+    private String nationality;
+
+
+    /** 居住地 */
+    @ExcelProperty(index = 5,value = "居住地")
+    private String address;
+
+
+
+    /** 车次/航班号 */
+    @ExcelProperty(index = 6,value = "车次/航班号")
+    private String travelNo;
+
+
+    /** 是否携带行李物品 */
+
+    @ExcelProperty(index = 8,value = "是否携带行李物品")
+    private String baggage;
+
+
+    @ExcelProperty(index = 9,value = "出发港口")
+    private String fromPort;
+
+
+    @ExcelProperty(index = 10,value = "到达港口")
+    private String toPort;
+
+
+    /** 座位号 */
+    @ExcelProperty(index = 11,value = "座位号")
+    private String seatNo;
+
+
+    @ExcelProperty(index = 23,value = "交通工具类型")
+    private String vehicleType;
+
+
+    //物品信息====================================
+
+    /** 物品类别 */
+    @ExcelProperty(index = 13,value = "物品类别")
+    private String goodCategory;
+
+    /** 物品细类 */
+    @ExcelProperty(index = 14,value = "物品细类")
+    private String goodSubclass;
+
+    /** 物品名称 */
+    @ExcelProperty(index = 15,value = "物品名称")
+    private String goodName;
+
+    /** 物品场地 */
+    @ExcelProperty(index = 16,value = "物品场地")
+    private String goodPlace;
+
+    /** 重量 */
+    @ExcelProperty(index = 17,value = "重量(千克)")
+    private String weight;
+
+    /** 品牌 */
+    @ExcelProperty(index = 18,value = "品牌")
+    private String brand;
+
+    /** 规格型号 */
+    @ExcelProperty(index = 19,value = "规格型号")
+    private String specModel;
+
+    /** 单价 */
+    @ExcelProperty(index = 20,value = "单价")
+    private String price;
+
+    /** 币种 */
+
+    @ExcelProperty(index = 21,value = "币种")
+    private String currency;
+
+
+    /** 单位 */
+    @ExcelProperty(index = 22,value = "数量单位")
+    private String unit;
+}

+ 48 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerinfo/listerner/PassengerInfoExcelListener.java

@@ -0,0 +1,48 @@
+package vip.xiaonuo.biz.modular.passenger.passengerinfo.listerner;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import vip.xiaonuo.biz.modular.passenger.passengerinfo.dto.PassengerInfoImportExcelDto;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Consumer;
+@Slf4j
+public class PassengerInfoExcelListener  extends AnalysisEventListener<PassengerInfoImportExcelDto> {
+    /**
+     * 数据成功回调
+     */
+    private Consumer<List<PassengerInfoImportExcelDto>> consumer;
+
+    private static final List<PassengerInfoImportExcelDto> EXCEL_LIST = new ArrayList<>();
+
+    public PassengerInfoExcelListener(Consumer<List<PassengerInfoImportExcelDto>> consumer) {
+        this.consumer = consumer;
+    }
+
+    /**
+     * 这个每一条数据解析都会来调用
+     *
+     * @param data            one row value. Is is same as {@link AnalysisContext#readRowHolder()}
+     * @param analysisContext
+     */
+    @Override
+    public void invoke(PassengerInfoImportExcelDto data, AnalysisContext analysisContext) {
+        log.info("解析到一条数据:{}", JSON.toJSONString(data));
+        EXCEL_LIST.add(data);
+    }
+
+    /**
+     * 所有数据解析完成了 都会来调用
+     *
+     * @param analysisContext
+     */
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+        consumer.accept(EXCEL_LIST);
+        // 处理结束后清空List
+        EXCEL_LIST.clear();
+    }
+}

+ 3 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerinfo/service/PassengerInfoService.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.biz.modular.passenger.passengerinfo.service;
 
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.*;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.*;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.vo.PassengerInfoDetailVo;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.vo.PassengerInfoDetailVo;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.entity.PassengerInfo;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.entity.PassengerInfo;
@@ -76,4 +77,6 @@ public interface PassengerInfoService extends IService<PassengerInfo> {
      * @date  2024/12/05 17:34
      * @date  2024/12/05 17:34
      **/
      **/
     PassengerInfo queryEntity(String id);
     PassengerInfo queryEntity(String id);
+
+    void importExcelData(MultipartFile multipartFile);
 }
 }

+ 65 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerinfo/service/impl/PassengerInfoServiceImpl.java

@@ -16,19 +16,27 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 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 org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+import vip.xiaonuo.biz.modular.dict.service.BizDictService;
+import vip.xiaonuo.biz.modular.passenger.passengercheck.dto.PassengerCheckImportExcelDto;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.entity.PassengerCheck;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.entity.PassengerCheck;
+import vip.xiaonuo.biz.modular.passenger.passengercheck.listener.PassengerCheckExcelListener;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckPageParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.param.PassengerCheckPageParam;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.service.PassengerCheckService;
 import vip.xiaonuo.biz.modular.passenger.passengercheck.service.PassengerCheckService;
 import vip.xiaonuo.biz.modular.passenger.passengercheckrecord.entity.PassengerCheckRecord;
 import vip.xiaonuo.biz.modular.passenger.passengercheckrecord.entity.PassengerCheckRecord;
 import vip.xiaonuo.biz.modular.passenger.passengercheckrecord.service.PassengerCheckRecordService;
 import vip.xiaonuo.biz.modular.passenger.passengercheckrecord.service.PassengerCheckRecordService;
 import vip.xiaonuo.biz.modular.passenger.passengergood.entity.PassengerGood;
 import vip.xiaonuo.biz.modular.passenger.passengergood.entity.PassengerGood;
 import vip.xiaonuo.biz.modular.passenger.passengergood.service.PassengerGoodService;
 import vip.xiaonuo.biz.modular.passenger.passengergood.service.PassengerGoodService;
+import vip.xiaonuo.biz.modular.passenger.passengerinfo.dto.PassengerInfoImportExcelDto;
+import vip.xiaonuo.biz.modular.passenger.passengerinfo.listerner.PassengerInfoExcelListener;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.*;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.*;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.vo.PassengerInfoDetailVo;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.vo.PassengerInfoDetailVo;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.vo.PassengerRoot;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.vo.PassengerRoot;
@@ -40,7 +48,9 @@ import vip.xiaonuo.common.page.CommonPageRequest;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.entity.PassengerInfo;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.entity.PassengerInfo;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.mapper.PassengerInfoMapper;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.mapper.PassengerInfoMapper;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.service.PassengerInfoService;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.service.PassengerInfoService;
+import vip.xiaonuo.common.util.CommonIdCardUtil;
 
 
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -50,6 +60,7 @@ import java.util.List;
  * @date  2024/12/05 17:34
  * @date  2024/12/05 17:34
  **/
  **/
 @Service
 @Service
+@Slf4j
 public class PassengerInfoServiceImpl extends ServiceImpl<PassengerInfoMapper, PassengerInfo> implements PassengerInfoService {
 public class PassengerInfoServiceImpl extends ServiceImpl<PassengerInfoMapper, PassengerInfo> implements PassengerInfoService {
     @Autowired
     @Autowired
     private PassengerGoodService passengerGoodService;
     private PassengerGoodService passengerGoodService;
@@ -59,7 +70,8 @@ public class PassengerInfoServiceImpl extends ServiceImpl<PassengerInfoMapper, P
     private PassengerCheckService passengerCheckService;
     private PassengerCheckService passengerCheckService;
     @Autowired
     @Autowired
     private PassengerPassService passengerPassService;
     private PassengerPassService passengerPassService;
-
+    @Autowired
+    private BizDictService bizDictService;
     @Override
     @Override
     public Object page(PassengerRootPageParam rootPageParam) {
     public Object page(PassengerRootPageParam rootPageParam) {
         if("1".equals(rootPageParam.getQueryType())){
         if("1".equals(rootPageParam.getQueryType())){
@@ -184,4 +196,56 @@ public class PassengerInfoServiceImpl extends ServiceImpl<PassengerInfoMapper, P
         }
         }
         return passengerInfo;
         return passengerInfo;
     }
     }
+
+    @Override
+    public void importExcelData(MultipartFile file) {
+        try {
+            PassengerInfoExcelListener listener = new PassengerInfoExcelListener(this::saveExcelData);
+            // 开始读取数据信息
+            EasyExcel.read(file.getInputStream(), PassengerInfoImportExcelDto.class, listener)
+                    .sheet(0).headRowNumber(1).doRead();
+        } catch (Exception e) {
+            log.error("导入旅客查验信息失败", e);
+        }
+    }
+
+    public void saveExcelData(List<PassengerInfoImportExcelDto> importExcelDtos){
+        Date currentDate = new Date();
+        for (PassengerInfoImportExcelDto item : importExcelDtos) {
+            PassengerInfo passengerInfo = new PassengerInfo();
+            BeanUtil.copyProperties(item,passengerInfo);
+            //根据身份证号计算年龄
+            passengerInfo.setAge(CommonIdCardUtil.getAgeByIdCard(item.getIdNo())+"");
+            //设置性别
+            passengerInfo.setGender(bizDictService.getNameByLabel("lvke_sex",item.getGender()));
+            //设置国籍
+            passengerInfo.setNationality(bizDictService.getNameByLabel("lvke_city",item.getNationality()));
+            //当前时间
+            passengerInfo.setTravelTime(currentDate);
+            //出发时间
+            passengerInfo.setDepartTime(currentDate);
+            //设置出发港口
+            passengerInfo.setFromPort(bizDictService.getNameByLabel("lvke_departurePort",item.getFromPort()));
+            //设置到达港口
+            passengerInfo.setToPort(bizDictService.getNameByLabel("lvke_arrivingPort",item.getToPort()));
+            //设置是否携带行李物品
+            passengerInfo.setBaggage(bizDictService.getNameByLabel("lvke_isNo",item.getBaggage()));
+            this.save(passengerInfo);
+
+            //有物品信息
+            if(ObjectUtil.isNotEmpty(item.getGoodName())){
+                //物品信息
+                PassengerGood passengerGood = new PassengerGood();
+                BeanUtil.copyProperties(item,passengerGood);
+                passengerGood.setPassengerId(passengerInfo.getId());
+                passengerGood.setType("1");
+                //数量默认1
+                passengerGood.setQuantity("1");
+
+                passengerGoodService.save(passengerGood);
+            }
+
+
+        }
+    }
 }
 }

+ 8 - 4
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/controller/PassengerPassController.java

@@ -18,10 +18,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.entity.PassengerPass;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.entity.PassengerPass;
@@ -172,4 +170,10 @@ public class PassengerPassController {
     public CommonResult<PassengerPass> detail(@Valid PassengerPassIdParam passengerPassIdParam) {
     public CommonResult<PassengerPass> detail(@Valid PassengerPassIdParam passengerPassIdParam) {
         return CommonResult.data(passengerPassService.detail(passengerPassIdParam));
         return CommonResult.data(passengerPassService.detail(passengerPassIdParam));
     }
     }
+    @Operation(summary = "旅客放行信息导入")
+//    @SaCheckPermission("/biz/passengerpass/detail")
+    @PostMapping("/biz/passengerpass/importData")
+    public void importExcelData(@RequestParam(value = "file") MultipartFile multipartFile){
+        passengerPassService.importExcelData(multipartFile);
+    }
 }
 }

+ 105 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/dto/PassengerPassImportExcelDto.java

@@ -0,0 +1,105 @@
+package vip.xiaonuo.biz.modular.passenger.passengerpass.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class PassengerPassImportExcelDto {
+    /** 姓名 */
+    @ExcelProperty(index = 1,value = "姓名")
+    private String name;
+
+    /** 性别 */
+    @ExcelProperty(index = 2,value = "性别")
+    private String gender;
+
+
+    /** 身份证号 */
+    @ExcelProperty(index = 3,value = "身份证号")
+    private String idNo;
+
+
+    /** 国籍 */
+    @ExcelProperty(index = 4,value = "国籍")
+    private String nationality;
+
+
+    /** 居住地 */
+    @ExcelProperty(index = 5,value = "居住地")
+    private String address;
+
+
+    /** 车次/航班号 */
+    @ExcelProperty(index = 6,value = "车次/航班号")
+    private String travelNo;
+
+    /** 查验类型 */
+    @ExcelProperty(index = 8,value = "类型")
+    private String checkType;
+
+
+
+    @ExcelProperty(index = 11,value = "出发港口")
+    private String fromPort;
+
+
+    @ExcelProperty(index = 12,value = "到达港口")
+    private String toPort;
+
+    /** 座位号 */
+    @ExcelProperty(index = 13,value = "座位号")
+    private String seatNo;
+
+    /** 交通工具类型 */
+    @ExcelProperty(index = 25,value = "交通工具类型")
+    private String vehicleType;
+
+
+    //物品信息====================================
+
+    /** 物品类别 */
+    @ExcelProperty(index = 15,value = "物品类别")
+    private String goodCategory;
+
+    /** 物品细类 */
+    @ExcelProperty(index = 16,value = "物品细类")
+    private String goodSubclass;
+
+    /** 物品名称 */
+    @ExcelProperty(index = 17,value = "物品名称")
+    private String goodName;
+
+    /** 物品场地 */
+    @ExcelProperty(index = 18,value = "物品场地")
+    private String goodPlace;
+
+    /** 重量 */
+    @ExcelProperty(index = 19,value = "重量(千克)")
+    private String weight;
+
+    /** 品牌 */
+    @ExcelProperty(index = 20,value = "品牌")
+    private String brand;
+
+    /** 规格型号 */
+    @ExcelProperty(index = 21,value = "规格型号")
+    private String specModel;
+
+    /** 单价 */
+    @ExcelProperty(index = 22,value = "单价")
+    private String price;
+
+    /** 币种 */
+
+    @ExcelProperty(index = 23,value = "币种")
+    private String currency;
+
+
+    /** 单位 */
+    @ExcelProperty(index = 24,value = "数量单位")
+    private String unit;
+}

+ 3 - 88
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/entity/PassengerPass.java

@@ -62,23 +62,7 @@ public class PassengerPass {
     @ExcelProperty(index = 4,value = "身份证号")
     @ExcelProperty(index = 4,value = "身份证号")
     private String idNo;
     private String idNo;
 
 
-    /** 证件照 */
-    @Schema(description = "证件照")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 5,value = "证件照")
-    private String certificateUrl;
-
-    /** 抓拍照 */
-    @Schema(description = "抓拍照")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 6,value = "抓拍照")
-    private String captureUrl;
 
 
-    /** 相似度 */
-    @Schema(description = "相似度")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 7,value = "相似度")
-    private String similarity;
 
 
     /** 国籍 */
     /** 国籍 */
     @Schema(description = "国籍")
     @Schema(description = "国籍")
@@ -140,71 +124,6 @@ public class PassengerPass {
     @ExcelProperty(index = 17,value = "交通工具类型")
     @ExcelProperty(index = 17,value = "交通工具类型")
     private String vehicleType;
     private String vehicleType;
 
 
-    /** 查验指令 */
-    @Schema(description = "查验指令")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 18,value = "查验指令")
-    private String checkInstruction;
-
-    /** 指令编号 */
-    @Schema(description = "指令编号")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 19,value = "指令编号")
-    private String checkInstructionNo;
-
-    /** 发布时间 */
-    @Schema(description = "发布时间")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 20,value = "发布时间")
-    private Date releaseTime;
-
-    /** 查验地点 */
-    @Schema(description = "查验地点")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 21,value = "查验地点")
-    private String checkPlace;
-
-    /** 查验方式 */
-    @Schema(description = "查验方式")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 22,value = "查验方式")
-    private String checkMethod;
-
-    /** 查验目的 */
-    @Schema(description = "查验目的")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 23,value = "查验目的")
-    private String checkPurpose;
-
-    /** 查验状态 */
-    @Schema(description = "查验状态")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 24,value = "查验状态")
-    private String checkStatus;
-
-    /** 查验人 */
-    @Schema(description = "查验人")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 25,value = "查验人")
-    private String checkBy;
-
-    /** 查验结果 */
-    @Schema(description = "查验结果")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 26,value = "查验结果")
-    private String checkResult;
-
-    /** 查验时间 */
-    @Schema(description = "查验时间")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 27,value = "查验时间")
-    private Date checkTime;
-
-    /** 查验原因 */
-    @Schema(description = "查验原因")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 28,value = "查验原因")
-    private String checkReason;
 
 
     /** 入场时间 */
     /** 入场时间 */
     @Schema(description = "入场时间")
     @Schema(description = "入场时间")
@@ -219,14 +138,10 @@ public class PassengerPass {
     private Date passTime;
     private Date passTime;
 
 
     /** 查验类型 */
     /** 查验类型 */
-    @Schema(description = "查验类型")
+    @Schema(description = "类型")
     @ColumnWidth(12)
     @ColumnWidth(12)
-    @ExcelProperty(index = 31,value = "查验类型")
+    @ExcelProperty(index = 31,value = "类型")
     private String checkType;
     private String checkType;
 
 
-    /** 放行0否1是 */
-    @Schema(description = "放行0否1是")
-    @ColumnWidth(12)
-    @ExcelProperty(index = 32,value = "放行0否1是")
-    private String pass;
+
 }
 }

+ 50 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/listener/PassengerPassListener.java

@@ -0,0 +1,50 @@
+package vip.xiaonuo.biz.modular.passenger.passengerpass.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import vip.xiaonuo.biz.modular.passenger.passengercheck.dto.PassengerCheckImportExcelDto;
+import vip.xiaonuo.biz.modular.passenger.passengerinfo.dto.PassengerInfoImportExcelDto;
+import vip.xiaonuo.biz.modular.passenger.passengerpass.dto.PassengerPassImportExcelDto;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Consumer;
+@Slf4j
+public class PassengerPassListener extends AnalysisEventListener<PassengerPassImportExcelDto> {
+    /**
+     * 数据成功回调
+     */
+    private Consumer<List<PassengerPassImportExcelDto>> consumer;
+
+    private static final List<PassengerPassImportExcelDto> EXCEL_LIST = new ArrayList<>();
+
+    public PassengerPassListener(Consumer<List<PassengerPassImportExcelDto>> consumer) {
+        this.consumer = consumer;
+    }
+
+    /**
+     * 这个每一条数据解析都会来调用
+     *
+     * @param data            one row value. Is is same as {@link AnalysisContext#readRowHolder()}
+     * @param analysisContext
+     */
+    @Override
+    public void invoke(PassengerPassImportExcelDto data, AnalysisContext analysisContext) {
+        log.info("解析到一条数据:{}", JSON.toJSONString(data));
+        EXCEL_LIST.add(data);
+    }
+
+    /**
+     * 所有数据解析完成了 都会来调用
+     *
+     * @param analysisContext
+     */
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+        consumer.accept(EXCEL_LIST);
+        // 处理结束后清空List
+        EXCEL_LIST.clear();
+    }
+}

+ 3 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/service/PassengerPassService.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.biz.modular.passenger.passengerpass.service;
 
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.PassengerRootPageParam;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.PassengerRootPageParam;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.entity.PassengerPass;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.entity.PassengerPass;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.param.PassengerPassAddParam;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.param.PassengerPassAddParam;
@@ -78,4 +79,6 @@ public interface PassengerPassService extends IService<PassengerPass> {
      * @date  2024/12/06 15:48
      * @date  2024/12/06 15:48
      **/
      **/
     PassengerPass queryEntity(String id);
     PassengerPass queryEntity(String id);
+
+    void importExcelData(MultipartFile multipartFile);
 }
 }

+ 75 - 19
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/passenger/passengerpass/service/impl/PassengerPassServiceImpl.java

@@ -14,15 +14,27 @@ package vip.xiaonuo.biz.modular.passenger.passengerpass.service.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
 import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import org.springframework.web.multipart.MultipartFile;
+import vip.xiaonuo.biz.modular.dict.service.BizDictService;
+import vip.xiaonuo.biz.modular.passenger.passengercheck.dto.PassengerCheckImportExcelDto;
+import vip.xiaonuo.biz.modular.passenger.passengercheck.entity.PassengerCheck;
+import vip.xiaonuo.biz.modular.passenger.passengercheck.listener.PassengerCheckExcelListener;
+import vip.xiaonuo.biz.modular.passenger.passengergood.entity.PassengerGood;
+import vip.xiaonuo.biz.modular.passenger.passengergood.service.PassengerGoodService;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.PassengerRootPageParam;
 import vip.xiaonuo.biz.modular.passenger.passengerinfo.param.PassengerRootPageParam;
+import vip.xiaonuo.biz.modular.passenger.passengerpass.dto.PassengerPassImportExcelDto;
+import vip.xiaonuo.biz.modular.passenger.passengerpass.listener.PassengerPassListener;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
 import vip.xiaonuo.common.page.CommonPageRequest;
@@ -33,7 +45,9 @@ import vip.xiaonuo.biz.modular.passenger.passengerpass.param.PassengerPassEditPa
 import vip.xiaonuo.biz.modular.passenger.passengerpass.param.PassengerPassIdParam;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.param.PassengerPassIdParam;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.param.PassengerPassPageParam;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.param.PassengerPassPageParam;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.service.PassengerPassService;
 import vip.xiaonuo.biz.modular.passenger.passengerpass.service.PassengerPassService;
+import vip.xiaonuo.common.util.CommonIdCardUtil;
 
 
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -44,7 +58,10 @@ import java.util.List;
  **/
  **/
 @Service
 @Service
 public class PassengerPassServiceImpl extends ServiceImpl<PassengerPassMapper, PassengerPass> implements PassengerPassService {
 public class PassengerPassServiceImpl extends ServiceImpl<PassengerPassMapper, PassengerPass> implements PassengerPassService {
-
+    @Autowired
+    private BizDictService bizDictService;
+    @Autowired
+    private PassengerGoodService passengerGoodService;
     @Override
     @Override
     public Page<PassengerPass> page(PassengerRootPageParam rootPageParam) {
     public Page<PassengerPass> page(PassengerRootPageParam rootPageParam) {
         QueryWrapper<PassengerPass> queryWrapper = new QueryWrapper<PassengerPass>().checkSqlInjection();
         QueryWrapper<PassengerPass> queryWrapper = new QueryWrapper<PassengerPass>().checkSqlInjection();
@@ -67,13 +84,7 @@ public class PassengerPassServiceImpl extends ServiceImpl<PassengerPassMapper, P
         if(ObjectUtil.isNotEmpty(rootPageParam.getTravelNo())) {
         if(ObjectUtil.isNotEmpty(rootPageParam.getTravelNo())) {
             queryWrapper.lambda().like(PassengerPass::getTravelNo, rootPageParam.getTravelNo());
             queryWrapper.lambda().like(PassengerPass::getTravelNo, rootPageParam.getTravelNo());
         }
         }
-        if(ObjectUtil.isNotEmpty(rootPageParam.getCheckPlace())) {
-            queryWrapper.lambda().like(PassengerPass::getCheckPlace, rootPageParam.getCheckPlace());
-        }
 
 
-        if(ObjectUtil.isNotEmpty(rootPageParam.getCheckStatus())) {
-            queryWrapper.lambda().like(PassengerPass::getCheckStatus, rootPageParam.getCheckStatus());
-        }
 
 
         if(ObjectUtil.isNotEmpty(rootPageParam.getBaggage())) {
         if(ObjectUtil.isNotEmpty(rootPageParam.getBaggage())) {
             queryWrapper.lambda().eq(PassengerPass::getBaggage, rootPageParam.getBaggage());
             queryWrapper.lambda().eq(PassengerPass::getBaggage, rootPageParam.getBaggage());
@@ -87,13 +98,7 @@ public class PassengerPassServiceImpl extends ServiceImpl<PassengerPassMapper, P
             queryWrapper.lambda().eq(PassengerPass::getToPort, rootPageParam.getToPort());
             queryWrapper.lambda().eq(PassengerPass::getToPort, rootPageParam.getToPort());
         }
         }
 
 
-        if(ObjectUtil.isNotEmpty(rootPageParam.getCheckReason())) {
-            queryWrapper.lambda().like(PassengerPass::getCheckReason, rootPageParam.getCheckReason());
-        }
 
 
-        if(ObjectUtil.isNotEmpty(rootPageParam.getCheckBy())) {
-            queryWrapper.lambda().like(PassengerPass::getCheckBy, rootPageParam.getCheckBy());
-        }
 
 
         if(ObjectUtil.isNotEmpty(rootPageParam.getCheckType())) {
         if(ObjectUtil.isNotEmpty(rootPageParam.getCheckType())) {
             queryWrapper.lambda().eq(PassengerPass::getCheckType, rootPageParam.getCheckType());
             queryWrapper.lambda().eq(PassengerPass::getCheckType, rootPageParam.getCheckType());
@@ -106,12 +111,7 @@ public class PassengerPassServiceImpl extends ServiceImpl<PassengerPassMapper, P
             queryWrapper.lambda().le(PassengerPass::getTravelTime,rootPageParam.getTravelTimeEnd());
             queryWrapper.lambda().le(PassengerPass::getTravelTime,rootPageParam.getTravelTimeEnd());
         }
         }
 
 
-        if(ObjectUtil.isNotEmpty(rootPageParam.getCheckTimeStart())) {
-            queryWrapper.lambda().ge(PassengerPass::getCheckTime, rootPageParam.getCheckTimeStart());
-        }
-        if(ObjectUtil.isNotEmpty(rootPageParam.getCheckTimeEnd())) {
-            queryWrapper.lambda().ge(PassengerPass::getCheckTime, rootPageParam.getCheckTimeEnd());
-        }
+
 
 
         if(ObjectUtil.isNotEmpty(rootPageParam.getAdmissionTimeStart())) {
         if(ObjectUtil.isNotEmpty(rootPageParam.getAdmissionTimeStart())) {
             queryWrapper.lambda().ge(PassengerPass::getAdmissionTime, rootPageParam.getAdmissionTimeStart());
             queryWrapper.lambda().ge(PassengerPass::getAdmissionTime, rootPageParam.getAdmissionTimeStart());
@@ -172,4 +172,60 @@ public class PassengerPassServiceImpl extends ServiceImpl<PassengerPassMapper, P
         }
         }
         return passengerPass;
         return passengerPass;
     }
     }
+
+    @Override
+    public void importExcelData(MultipartFile file) {
+        try {
+            PassengerPassListener listener = new PassengerPassListener(this::saveExcelData);
+            // 开始读取数据信息
+            EasyExcel.read(file.getInputStream(), PassengerPassImportExcelDto.class, listener)
+                    .sheet(2).headRowNumber(1).doRead();
+        } catch (Exception e) {
+            log.error("导入旅客查验信息失败", e);
+        }
+    }
+    public void saveExcelData(List<PassengerPassImportExcelDto> importExcelDtos){
+        Date currentDate = new Date();
+        int rcSjCount = -10;
+        int fxSjCount = -5;
+        for (PassengerPassImportExcelDto item : importExcelDtos) {
+            PassengerPass passengerPass = new PassengerPass();
+            BeanUtil.copyProperties(item,passengerPass);
+            //根据身份证号计算年龄
+            passengerPass.setAge(CommonIdCardUtil.getAgeByIdCard(item.getIdNo())+"");
+            //设置性别
+            passengerPass.setGender(bizDictService.getNameByLabel("lvke_sex",item.getGender()));
+            //设置国籍
+            passengerPass.setNationality(bizDictService.getNameByLabel("lvke_city",item.getNationality()));
+            //航班时间
+            passengerPass.setTravelTime(currentDate);
+            //出发时间
+            passengerPass.setDepartTime(currentDate);
+            //设置出发港口
+            passengerPass.setFromPort(bizDictService.getNameByLabel("lvke_departurePort",item.getFromPort()));
+            //设置到达港口
+            passengerPass.setToPort(bizDictService.getNameByLabel("lvke_arrivingPort",item.getToPort()));
+            //设置查验类型
+            passengerPass.setCheckType(bizDictService.getNameByLabel("lvke_checkType",item.getCheckType()));
+            //设置入场时间
+            passengerPass.setAdmissionTime(DateUtil.offsetMinute(currentDate,rcSjCount--));
+            //设置放行时间
+            passengerPass.setPassTime(DateUtil.offsetMinute(currentDate,fxSjCount--));
+
+
+            this.save(passengerPass);
+
+            if(ObjectUtil.isNotEmpty(item.getGoodName())){
+                PassengerGood passengerGood = new PassengerGood();
+                BeanUtil.copyProperties(item,passengerGood);
+                passengerGood.setPassengerId(passengerPass.getId());
+                passengerGood.setType("3");
+                //数量默认1
+                passengerGood.setQuantity("1");
+
+                passengerGoodService.save(passengerGood);
+            }
+
+        }
+    }
 }
 }