Prechádzať zdrojové kódy

feat: 实现车辆超保数据导入接口

weijianghai 9 mesiacov pred
rodič
commit
59a4aa2220

+ 2 - 2
src/main/java/com/nokia/financeapi/config/DataImportConfig.java → src/main/java/com/nokia/financeapi/config/CarDataImportConfig.java

@@ -6,8 +6,8 @@ import org.springframework.context.annotation.Configuration;
 
 @Configuration
 @Data
-@ConfigurationProperties("data-import")
-public class DataImportConfig {
+@ConfigurationProperties("car.data-import")
+public class CarDataImportConfig {
     /**
      * copy脚本路径
      */

+ 2 - 2
src/main/java/com/nokia/financeapi/config/ImportHouseDataConfig.java → src/main/java/com/nokia/financeapi/config/HouseDataImportConfig.java

@@ -6,8 +6,8 @@ import org.springframework.context.annotation.Configuration;
 
 @Configuration
 @Data
-@ConfigurationProperties("house.import-data")
-public class ImportHouseDataConfig {
+@ConfigurationProperties("house.data-import")
+public class HouseDataImportConfig {
     /**
      * 维修预算保存目录
      */

+ 17 - 0
src/main/java/com/nokia/financeapi/dao/car/CarChaoBaoDao.java

@@ -0,0 +1,17 @@
+package com.nokia.financeapi.dao.car;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface CarChaoBaoDao {
+    /**
+     * 判断是否有数据
+     * @param endYearMonth 账期
+     */
+    @Select("""
+select exists (select 1 from car.car_chao_bao where year_month = #{endYearMonth})
+""")
+    boolean hasData(@Param("endYearMonth") Integer endYearMonth);
+}

+ 1 - 1
src/main/java/com/nokia/financeapi/dao/car/CarWeiZhangDao.java

@@ -14,7 +14,7 @@ public interface CarWeiZhangDao {
     @Select("""
 select exists (select 1 from car.car_wei_zhang where year_month = #{endYearMonth})
 """)
-    boolean hasCarWeiZhang(@Param("endYearMonth") Integer endYearMonth);
+    boolean hasData(@Param("endYearMonth") Integer endYearMonth);
 
     /**
      * 插入违章长期未处理

+ 52 - 0
src/main/java/com/nokia/financeapi/dao/gdc/GdcCarChaoBaoDao.java

@@ -0,0 +1,52 @@
+package com.nokia.financeapi.dao.gdc;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface GdcCarChaoBaoDao {
+    /**
+     * 插入超保数据
+     * @param endYearMonth 账期
+     */
+    @Update("""
+insert
+    into
+    car_theme.wz_f_severely_over_maintained_leased_vehicles_details
+(
+statistical_month,
+    card_num,
+    car_brand,
+    enable_date,
+    arrival_time,
+    kilometers_entering_the_factory,
+    mileage_driven_as_of_data_extraction_date,
+    should_maintenance_be_carried_out,
+    exceeding_the_recommended_maintenance_time,
+    exceeding_the_recommended_maintenance_mileage,
+    city,
+    dpt_sec,
+    grid
+)
+select
+    year_month as statistical_month,
+    che_pai_hao as card_num,
+    che_xing as car_brand,
+    deng_ji_ri_qi as enable_date,
+    jin_chang_shi_jian as arrival_time,
+    jin_chang_gong_li as kilometers_entering_the_factory,
+    li_cheng as mileage_driven_as_of_data_extraction_date,
+    bao_yang as should_maintenance_be_carried_out,
+    chao_bao_tian_shu as exceeding_the_recommended_maintenance_time,
+    chao_bao_gong_li as exceeding_the_recommended_maintenance_mileage,
+    first_unit as city,
+    second_unit as dpt_sec,
+    third_unit as grid
+from
+    car.car_chao_bao
+where
+    year_month = #{endYearMonth}
+""")
+    int insertChaoBao(@Param("endYearMonth") Integer endYearMonth);
+}

+ 1 - 1
src/main/java/com/nokia/financeapi/dao/gdc/GdcCarWeiZhangDao.java

@@ -48,5 +48,5 @@ from
 where
     year_month = #{endYearMonth}
 """)
-    int insertCarWeiZhang(@Param("endYearMonth") Integer endYearMonth);
+    int insertWeiZhang(@Param("endYearMonth") Integer endYearMonth);
 }

+ 8 - 0
src/main/java/com/nokia/financeapi/pojo/enums/CarDataImportEnum.java

@@ -5,5 +5,13 @@ public enum CarDataImportEnum {
      * 违章
      */
     WEI_ZHANG,
+    /**
+     * 超保
+     */
+    CHAO_BAO,
+    /**
+     * 过检
+     */
+    GUO_JIAN,
     ;
 }

+ 338 - 0
src/main/java/com/nokia/financeapi/service/car/CarChaoBaoImportService.java

@@ -0,0 +1,338 @@
+package com.nokia.financeapi.service.car;
+
+import com.nokia.financeapi.common.exception.BizException;
+import com.nokia.financeapi.common.exception.MyRuntimeException;
+import com.nokia.financeapi.common.utils.psql.PsqlUtil;
+import com.nokia.financeapi.config.CarDataImportConfig;
+import com.nokia.financeapi.dao.car.CarChaoBaoDao;
+import com.nokia.financeapi.dao.gdc.GdcCarChaoBaoDao;
+import com.nokia.financeapi.pojo.dto.CarDataImportDto;
+import com.nokia.financeapi.pojo.po.common.AreaPo;
+import com.nokia.financeapi.pojo.po.common.OrganizationPo;
+import com.nokia.financeapi.service.common.AreaService;
+import com.nokia.financeapi.service.common.OrganizationService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVPrinter;
+import org.apache.commons.io.FileUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.DateUtil;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.math.BigDecimal;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Stream;
+
+@Slf4j
+@Service
+public class CarChaoBaoImportService {
+    private final CarDataImportConfig carDataImportConfig;
+    private final CarService carService;
+    private final OrganizationService organizationService;
+    private final AreaService areaService;
+    private final CarChaoBaoDao carChaoBaoDao;
+    private final GdcCarChaoBaoDao gdcCarChaoBaoDao;
+
+    public CarChaoBaoImportService(CarDataImportConfig carDataImportConfig, CarService carService,
+                                   OrganizationService organizationService, AreaService areaService,
+                                   CarChaoBaoDao carChaoBaoDao, GdcCarChaoBaoDao gdcCarChaoBaoDao) {
+        this.carDataImportConfig = carDataImportConfig;
+        this.carService = carService;
+        this.organizationService = organizationService;
+        this.areaService = areaService;
+        this.carChaoBaoDao = carChaoBaoDao;
+        this.gdcCarChaoBaoDao = gdcCarChaoBaoDao;
+    }
+
+    @Transactional(timeout = 120, rollbackFor = Exception.class)
+    public synchronized void dataImport(CarDataImportDto dto, MultipartFile file) throws IOException {
+        boolean flag = carChaoBaoDao.hasData(dto.getYearMonth());
+        if (flag) {
+            throw new BizException("该账期数据已存在");
+        }
+        Files.createDirectories(Paths.get(carDataImportConfig.getChaoBao()));
+        File fileNew = new File(carDataImportConfig.getChaoBao() + dto.getYearMonth() + ".xlsx");
+        FileUtils.copyInputStreamToFile(file.getInputStream(), fileNew);
+        Path path = fileNew.toPath();
+        List<Map<String, String>> list = readFile(path);
+        List<Map<String, String>> distinctList = dataProcessing(path, list, dto);
+        Path csvPath = toCsv(path, distinctList);
+        copyCsv(csvPath);
+        procedure(dto);
+    }
+
+    /**
+     * 读取文件
+     *
+     * @param path 文件路径
+     */
+    public List<Map<String, String>> readFile(Path path) throws IOException {
+        log.info("读取: {}", path);
+        List<String> rawHeaders = Stream.of("账期", "车牌号", "车型", "单位", "二级单位", "三级单位", "登记日期",
+                "进厂时间", "进厂公里数", "截止数据提取日行驶里程", "是否应该保养", "超出建议保养时间(天)", "超出建议保养公里数")
+                .toList();
+        List<String> headers = Stream.of("year_month", "che_pai_hao", "che_xing", "raw_yi_ji", "raw_er_ji",
+                "raw_san_ji", "deng_ji_ri_qi", "jin_chang_shi_jian", "jin_chang_gong_li", "li_cheng", "bao_yang",
+                "chao_bao_tian_shu", "chao_bao_gong_li").toList();
+        try (InputStream inputStream = Files.newInputStream(path);
+             Workbook workbook = new XSSFWorkbook(inputStream)
+        ) {
+            List<Map<String, String>> resultList = new ArrayList<>();
+            // 读取第一个工作表
+            Sheet sheet = workbook.getSheetAt(0);
+            // 表头行
+            Row headerRow = sheet.getRow(0);
+            // 列数
+            int columnCount = headerRow.getPhysicalNumberOfCells();
+            log.info("columnCount: {}", columnCount);
+            // 检查表头
+            if (headers.size() != columnCount) {
+                throw new BizException("列数错误");
+            }
+            for (int i = 0; i < columnCount; i++) {
+                Cell cell = headerRow.getCell(i);
+                if (cell == null || !rawHeaders.get(i).equals(cell.getStringCellValue())) {
+                    throw new BizException("表头错误");
+                }
+            }
+            // 最后行数
+            int lastRowNum = sheet.getLastRowNum();
+            log.info("lastRowNum: {}", lastRowNum);
+            if (lastRowNum == 0) {
+                throw new BizException("文件为空");
+            }
+            // 遍历行
+            for (int i = 1; i <= lastRowNum; i++) {
+                Row row = sheet.getRow(i);
+                if (row == null) {
+                    continue;
+                }
+                Map<String, String> rowMap = new LinkedHashMap<>();
+                // 遍历列
+                for (int j = 0; j < columnCount; j++) {
+                    String header = headers.get(j);
+                    String cellValue = "";
+                    rowMap.put(header, cellValue);
+                    Cell cell = row.getCell(j);
+                    if (cell == null) {
+                        continue;
+                    }
+                    switch (cell.getCellType()) {
+                        case STRING:
+                            boolean skipTrim = "deng_ji_ri_qi".equals(header) || "jin_chang_shi_jian".equals(header);
+                            // 删除字符串空白字符
+                            cellValue = skipTrim ? cell.getStringCellValue()
+                                    : StringUtils.trimAllWhitespace(cell.getStringCellValue());
+                            break;
+                        case NUMERIC:
+                            if (DateUtil.isCellDateFormatted(cell)) {
+                                cellValue = DateUtil.getLocalDateTime(cell.getNumericCellValue())
+                                        .format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                                break;
+                            }
+                            cellValue = String.valueOf(cell.getNumericCellValue());
+                            break;
+                        case BOOLEAN:
+                            cellValue = String.valueOf(cell.getBooleanCellValue());
+                            break;
+                        default:
+                            break;
+                    }
+                    rowMap.put(header, cellValue);
+                }
+                resultList.add(rowMap);
+            }
+            return resultList;
+        }
+    }
+
+    /**
+     * 数据加工
+     *
+     * @param path 文件路径
+     * @param list 数据
+     * @param dto 请求参数
+     */
+    public List<Map<String, String>> dataProcessing(Path path, List<Map<String, String>> list, CarDataImportDto dto) {
+        String yearMonth = dto.getYearMonth().toString();
+        LocalDate localDate = LocalDate.parse(yearMonth + "01", DateTimeFormatter.ofPattern("yyyyMMdd"));
+        String year = String.valueOf(localDate.getYear());
+        String month = String.valueOf(localDate.getMonthValue());
+        List<OrganizationPo> secondOrgs = organizationService.getSecondOrgs();
+        List<OrganizationPo> thirdOrgs = organizationService.getThirdOrgs();
+        Map<String, OrganizationPo> orgMap = organizationService.getOrgMap(secondOrgs, thirdOrgs);
+        Map<String, List<OrganizationPo>> thirdOrganizationListMap =
+                organizationService.getThirdOrganizationListMap(secondOrgs, thirdOrgs);
+        List<AreaPo> cities = areaService.getCities();
+        List<AreaPo> districts = areaService.getDistricts();
+        Map<String, AreaPo> areaMap = areaService.getAreaMap(cities, districts);
+        Map<String, List<AreaPo>> districtListMap = areaService.getDistrictListMap(cities, districts);
+        for (Map<String, String> map : list) {
+            map.put("year_month", yearMonth);
+            map.put("year_no", year);
+            map.put("month_no", month);
+            String rawChePaiHao = map.get("che_pai_hao");
+            map.put("raw_che_pai_hao", rawChePaiHao);
+            String chePaiHao = carService.getChePai(rawChePaiHao);
+            map.put("che_pai_hao", chePaiHao);
+            String chePaiFail = carService.chePaiFail(rawChePaiHao);
+            map.put("che_pai_fail", chePaiFail);
+            String yj = map.get("raw_yi_ji");
+            String ej = map.get("raw_er_ji");
+            String sj = map.get("raw_san_ji");
+            String firstUnit = carService.getFirstUnit(yj);
+            map.put("first_unit", firstUnit);
+            String secondUnit = carService.getSecondUnit(ej, firstUnit);
+            map.put("second_unit", secondUnit);
+            String thirdUnit = carService.getThirdUnit(sj, secondUnit);
+            map.put("third_unit", thirdUnit);
+            String areaNo = carService.getAreaNo(secondOrgs, yj);
+            map.put("area_no", areaNo);
+            String areaName = carService.getOrgName(orgMap, areaNo);
+            map.put("area_name", areaName);
+            String cityNo = carService.getCityNo(thirdOrganizationListMap, areaNo, areaName, ej);
+            map.put("city_no", cityNo);
+            String cityName = carService.getOrgName(orgMap, cityNo);
+            map.put("city_name", cityName);
+            String areaNo2 = carService.getAreaNo2(areaName, cityName);
+            map.put("area_no2", areaNo2);
+            String areaName2 = carService.getOrgName(orgMap, areaNo2);
+            map.put("area_name2", areaName2);
+            String cityId = carService.getCityId(cities, yj);
+            map.put("city_id", cityId);
+            String city = carService.getAreaName(areaMap, cityId);
+            map.put("city", city);
+            String districtId = carService.getDistrictId(districtListMap, cityId, cityName, ej);
+            map.put("district_id", districtId);
+            String district = carService.getAreaName(areaMap, districtId);
+            map.put("district", district);
+            map.put("source", path.getFileName().toString());
+            String dengJiRiQi = map.get("deng_ji_ri_qi");
+            if (StringUtils.hasText(dengJiRiQi)) {
+                try {
+                    map.put("deng_ji_ri_qi",
+                            LocalDate.parse(dengJiRiQi).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                } catch (Exception e) {
+                    map.put("deng_ji_ri_qi", "");
+                    log.warn("{}登记日期解析失败: {}", rawChePaiHao, dengJiRiQi);
+                }
+            }
+            String jinChangShiJian = map.get("jin_chang_shi_jian");
+            if (StringUtils.hasText(jinChangShiJian)) {
+                try {
+                    map.put("jin_chang_shi_jian",
+                            LocalDate.parse(jinChangShiJian).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+                } catch (Exception e) {
+                    map.put("jin_chang_shi_jian", "");
+                    log.warn("{}进厂时间解析失败: {}", rawChePaiHao, jinChangShiJian);
+                }
+            }
+            String jinChangGongLi = map.get("jin_chang_gong_li");
+            if (StringUtils.hasText(jinChangGongLi)) {
+                try {
+                    map.put("jin_chang_gong_li", new BigDecimal(jinChangGongLi).toString());
+                } catch (Exception e) {
+                    map.put("jin_chang_gong_li", "");
+                    log.warn("{}进厂公里数解析失败: {}", rawChePaiHao, jinChangGongLi);
+                }
+            }
+            String liCheng = map.get("li_cheng");
+            if (StringUtils.hasText(liCheng)) {
+                try {
+                    map.put("li_cheng", new BigDecimal(liCheng).toString());
+                } catch (Exception e) {
+                    map.put("li_cheng", "");
+                    log.warn("{}截止数据提取日行驶里程解析失败: {}", rawChePaiHao, liCheng);
+                }
+            }
+            String chaoBaoTianShu = map.get("chao_bao_tian_shu");
+            if (StringUtils.hasText(chaoBaoTianShu)) {
+                try {
+                    map.put("chao_bao_tian_shu", new BigDecimal(chaoBaoTianShu).toString());
+                } catch (Exception e) {
+                    map.put("chao_bao_tian_shu", "");
+                    log.warn("{}超出建议保养时间(天)解析失败: {}", rawChePaiHao, chaoBaoTianShu);
+                }
+            }
+            String chaoBaoGongLi = map.get("chao_bao_gong_li");
+            if (StringUtils.hasText(chaoBaoGongLi)) {
+                try {
+                    map.put("chao_bao_gong_li", new BigDecimal(chaoBaoGongLi).toString());
+                } catch (Exception e) {
+                    map.put("chao_bao_gong_li", "");
+                    log.warn("{}超出建议保养公里数解析失败: {}", rawChePaiHao, chaoBaoGongLi);
+                }
+            }
+        }
+        return list;
+    }
+
+    /**
+     * 生成csv
+     *
+     * @param path 源文件路径
+     * @param list 数据
+     */
+    public Path toCsv(Path path, List<Map<String, String>> list) throws IOException {
+        log.info("条数:{}", list.size());
+        Path csvPath = Paths.get(path + ".csv");
+        try (OutputStreamWriter osw = new OutputStreamWriter(Files.newOutputStream(csvPath),
+                StandardCharsets.UTF_8);
+             CSVPrinter printer = new CSVPrinter(osw, CSVFormat.DEFAULT)) {
+            // 添加bom头避免excel乱码
+            osw.write('\ufeff');
+            Map<String, String> header = list.get(0);
+            // 表头
+            printer.printRecord(header.keySet());
+            for (Map<String, String> map : list) {
+                printer.printRecord(map.values());
+            }
+        }
+        return csvPath;
+    }
+
+    /**
+     * 导入数据库
+     *
+     * @param path 文件路径
+     */
+    public void copyCsv(Path path) {
+        String dbTable = "car.car_chao_bao";
+        String csv = path.toString();
+        String columns = "(year_month,che_pai_hao,che_xing,raw_yi_ji,raw_er_ji,raw_san_ji,deng_ji_ri_qi,jin_chang_shi_jian,jin_chang_gong_li,li_cheng,bao_yang,chao_bao_tian_shu,chao_bao_gong_li,year_no,month_no,raw_che_pai_hao,che_pai_fail,first_unit,second_unit,third_unit,area_no,area_name,city_no,city_name,area_no2,area_name2,city_id,city,district_id,district,source)";
+        Long timeout = 60000L;
+        PsqlUtil.copyCsv(carDataImportConfig.getCopyScriptPath(), carDataImportConfig.getDbHost(),
+                carDataImportConfig.getDbPort(), carDataImportConfig.getDbUsername(), carDataImportConfig.getDbPassword(),
+                carDataImportConfig.getDbName(), dbTable, csv, columns, timeout, null);
+    }
+
+    /**
+     * 更新数据库
+     */
+    public void procedure(CarDataImportDto dto) {
+        int update1 = gdcCarChaoBaoDao.insertChaoBao(dto.getYearMonth());
+        if (update1 == 0) {
+            throw new MyRuntimeException("插入car_theme.wz_f_severely_over_maintained_leased_vehicles_details失败");
+        }
+    }
+}

+ 6 - 1
src/main/java/com/nokia/financeapi/service/car/CarDataImportService.java

@@ -13,9 +13,12 @@ import org.springframework.web.multipart.MultipartFile;
 @Service
 public class CarDataImportService {
     private final CarWeiZhangImportService carWeiZhangImportService;
+    private final CarChaoBaoImportService carChaoBaoImportService;
 
-    public CarDataImportService(CarWeiZhangImportService carWeiZhangImportService) {
+    public CarDataImportService(CarWeiZhangImportService carWeiZhangImportService,
+                                CarChaoBaoImportService carChaoBaoImportService) {
         this.carWeiZhangImportService = carWeiZhangImportService;
+        this.carChaoBaoImportService = carChaoBaoImportService;
     }
 
     public R<Object> dataImport(CarDataImportDto dto, MultipartFile file) {
@@ -28,6 +31,8 @@ public class CarDataImportService {
             }
             if (CarDataImportEnum.WEI_ZHANG.equals(dto.getId())) {
                 carWeiZhangImportService.dataImport(dto, file);
+            } else if (CarDataImportEnum.CHAO_BAO.equals(dto.getId())) {
+                carChaoBaoImportService.dataImport(dto, file);
             }
             return R.ok();
         } catch (BizException e) {

+ 12 - 12
src/main/java/com/nokia/financeapi/service/car/CarWeiZhangImportService.java

@@ -3,7 +3,7 @@ package com.nokia.financeapi.service.car;
 import com.nokia.financeapi.common.exception.BizException;
 import com.nokia.financeapi.common.exception.MyRuntimeException;
 import com.nokia.financeapi.common.utils.psql.PsqlUtil;
-import com.nokia.financeapi.config.DataImportConfig;
+import com.nokia.financeapi.config.CarDataImportConfig;
 import com.nokia.financeapi.dao.car.CarWeiZhangDao;
 import com.nokia.financeapi.dao.gdc.GdcCarWeiZhangDao;
 import com.nokia.financeapi.pojo.dto.CarDataImportDto;
@@ -47,17 +47,17 @@ import java.util.stream.Stream;
 @Slf4j
 @Service
 public class CarWeiZhangImportService {
-    private final DataImportConfig dataImportConfig;
+    private final CarDataImportConfig carDataImportConfig;
     private final CarService carService;
     private final OrganizationService organizationService;
     private final AreaService areaService;
     private final CarWeiZhangDao carWeiZhangDao;
     private final GdcCarWeiZhangDao gdcCarWeiZhangDao;
 
-    public CarWeiZhangImportService(DataImportConfig dataImportConfig, CarService carService,
+    public CarWeiZhangImportService(CarDataImportConfig carDataImportConfig, CarService carService,
                                     OrganizationService organizationService, AreaService areaService,
                                     CarWeiZhangDao carWeiZhangDao, GdcCarWeiZhangDao gdcCarWeiZhangDao) {
-        this.dataImportConfig = dataImportConfig;
+        this.carDataImportConfig = carDataImportConfig;
         this.carService = carService;
         this.organizationService = organizationService;
         this.areaService = areaService;
@@ -65,14 +65,14 @@ public class CarWeiZhangImportService {
         this.gdcCarWeiZhangDao = gdcCarWeiZhangDao;
     }
 
-    @Transactional(timeout = 60, rollbackFor = Exception.class)
+    @Transactional(timeout = 120, rollbackFor = Exception.class)
     public synchronized void dataImport(CarDataImportDto dto, MultipartFile file) throws IOException {
-        boolean flag = carWeiZhangDao.hasCarWeiZhang(dto.getYearMonth());
+        boolean flag = carWeiZhangDao.hasData(dto.getYearMonth());
         if (flag) {
             throw new BizException("该账期数据已存在");
         }
-        Files.createDirectories(Paths.get(dataImportConfig.getWeiZhang()));
-        File fileNew = new File(dataImportConfig.getWeiZhang() + dto.getYearMonth() + ".xlsx");
+        Files.createDirectories(Paths.get(carDataImportConfig.getWeiZhang()));
+        File fileNew = new File(carDataImportConfig.getWeiZhang() + dto.getYearMonth() + ".xlsx");
         FileUtils.copyInputStreamToFile(file.getInputStream(), fileNew);
         Path path = fileNew.toPath();
         List<Map<String, String>> list = readFile(path);
@@ -287,9 +287,9 @@ public class CarWeiZhangImportService {
         String csv = path.toString();
         String columns = "(year_month,che_pai_hao,raw_yi_ji,raw_er_ji,raw_san_ji,wei_zhang_shi_jian,wei_zhang_di_dian,wei_zhang_xiang_qing,kou_fen,fa_kuan,chu_li_shi_jian,wei_zhang_wei_chu_li_shi_chang,chu_li_zhuang_tai,year_no,month_no,raw_che_pai_hao,che_pai_fail,first_unit,second_unit,third_unit,area_no,area_name,city_no,city_name,area_no2,area_name2,city_id,city,district_id,district,wei_zhang_nian_yue,chu_li_nian_yue,source)";
         Long timeout = 60000L;
-        PsqlUtil.copyCsv(dataImportConfig.getCopyScriptPath(), dataImportConfig.getDbHost(),
-                dataImportConfig.getDbPort(), dataImportConfig.getDbUsername(), dataImportConfig.getDbPassword(),
-                dataImportConfig.getDbName(), dbTable, csv, columns, timeout, null);
+        PsqlUtil.copyCsv(carDataImportConfig.getCopyScriptPath(), carDataImportConfig.getDbHost(),
+                carDataImportConfig.getDbPort(), carDataImportConfig.getDbUsername(), carDataImportConfig.getDbPassword(),
+                carDataImportConfig.getDbName(), dbTable, csv, columns, timeout, null);
     }
 
     /**
@@ -297,7 +297,7 @@ public class CarWeiZhangImportService {
      */
     public void procedure(CarDataImportDto dto) {
         carWeiZhangDao.insertCarWeiZhangChangQi(dto.getYearMonth());
-        int update1 = gdcCarWeiZhangDao.insertCarWeiZhang(dto.getYearMonth());
+        int update1 = gdcCarWeiZhangDao.insertWeiZhang(dto.getYearMonth());
         if (update1 == 0) {
             throw new MyRuntimeException("插入car_theme.wz_f_violation_details失败");
         }

+ 8 - 8
src/main/java/com/nokia/financeapi/service/house/HouseReportService.java

@@ -1,7 +1,7 @@
 package com.nokia.financeapi.service.house;
 
 import com.nokia.financeapi.common.R;
-import com.nokia.financeapi.config.ImportHouseDataConfig;
+import com.nokia.financeapi.config.HouseDataImportConfig;
 import com.nokia.financeapi.dao.house.HouseReportDao;
 import com.nokia.financeapi.pojo.dto.GetHouseReportDto;
 import com.nokia.financeapi.pojo.dto.ImportHouseDataDto;
@@ -30,13 +30,13 @@ import java.util.List;
 public class HouseReportService {
     private final FileService fileService;
     private final HouseReportDao houseReportDao;
-    private final ImportHouseDataConfig importHouseDataConfig;
+    private final HouseDataImportConfig houseDataImportConfig;
 
     public HouseReportService(FileService fileService, HouseReportDao houseReportDao,
-                              ImportHouseDataConfig importHouseDataConfig) {
+                              HouseDataImportConfig houseDataImportConfig) {
         this.fileService = fileService;
         this.houseReportDao = houseReportDao;
-        this.importHouseDataConfig = importHouseDataConfig;
+        this.houseDataImportConfig = houseDataImportConfig;
     }
 
     public R<GetHouseReportVo> getReportWord(GetHouseReportDto dto) {
@@ -97,8 +97,8 @@ public class HouseReportService {
 
     public synchronized R<Object> importWxys(ImportHouseDataDto dto, MultipartFile file) {
         try {
-            Files.createDirectories(Paths.get(importHouseDataConfig.getWxys()));
-            File fileNew = new File(importHouseDataConfig.getWxys() + dto.getYear() + ".xlsx");
+            Files.createDirectories(Paths.get(houseDataImportConfig.getWxys()));
+            File fileNew = new File(houseDataImportConfig.getWxys() + dto.getYear() + ".xlsx");
             FileUtils.copyInputStreamToFile(file.getInputStream(), fileNew);
             try(InputStream inputStream = Files.newInputStream(fileNew.toPath());
                 Workbook workbook = new XSSFWorkbook(inputStream)
@@ -122,8 +122,8 @@ public class HouseReportService {
 
     public synchronized R<Object> importCzys(ImportHouseDataDto dto, MultipartFile file) {
         try {
-            Files.createDirectories(Paths.get(importHouseDataConfig.getCzys()));
-            File fileNew = new File(importHouseDataConfig.getCzys() + dto.getYear() + ".xlsx");
+            Files.createDirectories(Paths.get(houseDataImportConfig.getCzys()));
+            File fileNew = new File(houseDataImportConfig.getCzys() + dto.getYear() + ".xlsx");
             FileUtils.copyInputStreamToFile(file.getInputStream(), fileNew);
             try(InputStream inputStream = Files.newInputStream(fileNew.toPath());
                 Workbook workbook = new XSSFWorkbook(inputStream)

+ 16 - 12
src/main/resources/application-dev.yml

@@ -10,6 +10,7 @@ spring:
 #    username: postgres
 #    password: NFQCgBA6YhNvgAqG6THw
     url: jdbc:postgresql://127.0.0.1:5432/financialdb
+#    url: jdbc:postgresql://192.168.65.128:5432/financialdb
     username: postgres
     password: Test!234
 logging:
@@ -22,18 +23,21 @@ minio:
   endpoint: http://192.168.10.7:19000/
   expiry: 15
   secretKey: EGqIq7zKZwfasMQ5eLIoLId631vmLaal
-data-import:
-  copy-script-path: scripts/copy.sh
-  db-host: 127.0.0.1
-  db-port: 5432
-  db-username: postgres
-  db-password: Test!234
-  db-name: financialdb
-  wei-zhang: data/data-import/car/wei-zhang/
-house:
-  import-data:
-    czys: data/import-data/house/czys/
-    wxys: data/import-data/house/wxys/
 pages:
   house:
     siteUrl: house-car/house/dist/index.html#/administrative/overview
+car:
+  data-import:
+    copy-script-path: scripts/copy.sh
+    db-host: 127.0.0.1
+    db-port: 5432
+    db-username: postgres
+    db-password: Test!234
+    db-name: financialdb
+    wei-zhang: data-import/car/wei-zhang/
+    chao-bao: data-import/car/chao-bao/
+    guo-jian: data-import/car/guo-jian/
+house:
+  data-import:
+    czys: data-import/house/czys/
+    wxys: data-import/house/wxys/

+ 14 - 11
src/main/resources/application-prod.yml

@@ -26,15 +26,18 @@ minio:
 pages:
   house:
     siteUrl: house-car/house/dist/index.html#/administrative/overview
+car:
+  data-import:
+    copy-script-path: scripts/copy.sh
+    db-host: 127.0.0.1
+    db-port: 5432
+    db-username: postgres
+    db-password: Test!234
+    db-name: financialdb
+    wei-zhang: data-import/car/wei-zhang/
+    chao-bao: data-import/car/chao-bao/
+    guo-jian: data-import/car/guo-jian/
 house:
-  import-data:
-    czys: /data/import-data/house/czys/
-    wxys: /data/import-data/house/wxys/
-data-import:
-  copy-script-path: copy.sh
-  db-host: 172.16.107.5
-  db-port: 5432
-  db-username: finance
-  db-password: Finance@unicom23
-  db-name: financialdb
-  wei-zhang: /data/data-import/car/wei-zhang/
+  data-import:
+    czys: data-import/house/czys/
+    wxys: data-import/house/wxys/

+ 14 - 3
src/main/resources/application-test.yml

@@ -19,7 +19,18 @@ minio:
 pages:
   house:
     siteUrl: house-car/house/dist/index.html#/administrative/overview
+car:
+  data-import:
+    copy-script-path: scripts/copy.sh
+    db-host: 127.0.0.1
+    db-port: 5432
+    db-username: postgres
+    db-password: Test!234
+    db-name: financialdb
+    wei-zhang: data-import/car/wei-zhang/
+    chao-bao: data-import/car/chao-bao/
+    guo-jian: data-import/car/guo-jian/
 house:
-  import-data:
-    czys: data/import-data/house/czys/
-    wxys: data/import-data/house/wxys/
+  data-import:
+    czys: data-import/house/czys/
+    wxys: data-import/house/wxys/