|
|
@@ -1,5 +1,8 @@
|
|
|
package com.sckw.fleet.service;
|
|
|
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.ExcelReader;
|
|
|
+import com.alibaba.excel.read.metadata.ReadSheet;
|
|
|
import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
|
import com.sckw.core.exception.SystemException;
|
|
|
import com.sckw.core.model.constant.Global;
|
|
|
@@ -7,16 +10,15 @@ import com.sckw.core.utils.*;
|
|
|
import com.sckw.core.web.constant.HttpStatus;
|
|
|
import com.sckw.core.web.context.LoginUserHolder;
|
|
|
import com.sckw.core.web.response.HttpResult;
|
|
|
+import com.sckw.excel.easyexcel.ExcelImportListener;
|
|
|
+import com.sckw.excel.utils.ExcelUtil;
|
|
|
import com.sckw.fleet.dao.KwfDriverMapper;
|
|
|
import com.sckw.fleet.dao.KwfTruckMapper;
|
|
|
import com.sckw.fleet.dao.KwfTruckReportMapper;
|
|
|
import com.sckw.fleet.model.KwfDriver;
|
|
|
import com.sckw.fleet.model.KwfTruck;
|
|
|
import com.sckw.fleet.model.KwfTruckReport;
|
|
|
-import com.sckw.fleet.model.dto.KwfChangeFleetDto;
|
|
|
-import com.sckw.fleet.model.dto.KwfDriverDto;
|
|
|
-import com.sckw.fleet.model.dto.KwfTruckDto;
|
|
|
-import com.sckw.fleet.model.dto.KwfTruckReportDto;
|
|
|
+import com.sckw.fleet.model.dto.*;
|
|
|
import com.sckw.fleet.model.vo.KwfTableTopCount;
|
|
|
import com.sckw.fleet.model.vo.KwfTruckReportVo;
|
|
|
import com.sckw.system.api.RemoteSystemService;
|
|
|
@@ -28,6 +30,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import java.io.InputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
@@ -204,7 +208,87 @@ public class KwfTruckReportService {
|
|
|
* @date 2023/07/11
|
|
|
**/
|
|
|
public HttpResult importExcel(MultipartFile file) {
|
|
|
- return null;
|
|
|
+ /**参数校验**/
|
|
|
+ HttpResult result = this.checkParams(file);
|
|
|
+ if (result.getCode() != HttpStatus.SUCCESS_CODE) {
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<KwfTruckReportExcelImportDto> truckReportExcels = (List)result.getData();
|
|
|
+ List<String> errorList = checkParams(truckReportExcels);
|
|
|
+ if (!CollectionUtils.isEmpty(errorList)) {
|
|
|
+ return HttpResult.error("导入数据存在已上报,请核对再上传!", errorList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**数据处理**/
|
|
|
+ int count = 0;
|
|
|
+ for (KwfTruckReportExcelImportDto truckReportExcel:truckReportExcels) {
|
|
|
+ KwfTruckReport truckReport = new KwfTruckReport();
|
|
|
+ truckReport.setEntId(LoginUserHolder.getEntId());
|
|
|
+
|
|
|
+ /**车辆信息**/
|
|
|
+ //校验车辆档案是否存在
|
|
|
+ List<KwfTruck> trucks = truckDao.findTruck(new HashMap() {{ put("truckNo", truckReportExcel.getTruckNo());}});
|
|
|
+ if (CollectionUtils.isEmpty(trucks)) {
|
|
|
+ //车辆信息
|
|
|
+ KwfTruck truckParams = new KwfTruck();
|
|
|
+ truckParams.setTruckNo(truckReportExcel.getTruckNo());
|
|
|
+ truckParams.setActualWeight(new BigDecimal(truckReportExcel.getActualWeight()));
|
|
|
+ truckParams.setAuthStatus(Global.NUMERICAL_TWO);
|
|
|
+ result = truckService.truckEdit(truckParams);
|
|
|
+ if (result.getCode() != HttpStatus.SUCCESS_CODE) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ KwfTruck truck = (KwfTruck) result.getData();
|
|
|
+ truckReport.setTruckId(truck.getId());
|
|
|
+ } else {
|
|
|
+ //校验车辆是否已上报
|
|
|
+ KwfTruck truck = trucks.get(Global.NUMERICAL_ZERO);
|
|
|
+ List<Map<String, Object>> reports = truckReportDao.findList(new HashMap() {{
|
|
|
+ put("truckId", truck.getId());
|
|
|
+ put("entId", LoginUserHolder.getEntId());
|
|
|
+ }});
|
|
|
+ if (CollectionUtils.isEmpty(reports)) {
|
|
|
+ truckReport.setTruckId(truck.getId());
|
|
|
+ } else {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**档案信息**/
|
|
|
+ //校验司机档案是否存在
|
|
|
+ List<KwfDriver> drivers = driverDao.findDriver(new HashMap() {{put("phone", truckReportExcel.getPhone());}});
|
|
|
+ if (CollectionUtils.isEmpty(drivers)) {
|
|
|
+ KwfDriver driverParams = new KwfDriver();
|
|
|
+ driverParams.setName(truckReportExcel.getName());
|
|
|
+ driverParams.setPhone(truckReportExcel.getPhone());
|
|
|
+ driverParams.setIdcard(truckReportExcel.getIdcard());
|
|
|
+ driverParams.setAuthStatus(Global.NUMERICAL_TWO);
|
|
|
+ result = driverService.driverEdit(driverParams);
|
|
|
+ if (result.getCode() != HttpStatus.SUCCESS_CODE) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ KwfDriver driver = (KwfDriver) result.getData();
|
|
|
+ truckReport.setDriverId(driver.getId());
|
|
|
+ } else {
|
|
|
+ //校验司机是否已上报
|
|
|
+ KwfDriver driver = drivers.get(0);
|
|
|
+ List<Map<String, Object>> reports = truckReportDao.findList(new HashMap() {{
|
|
|
+ put("driverId", driver.getId());
|
|
|
+ put("entId", LoginUserHolder.getEntId());
|
|
|
+ }});
|
|
|
+ if (CollectionUtils.isEmpty(reports)) {
|
|
|
+ truckReport.setDriverId(driver.getId());
|
|
|
+ } else {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ count += truckReportDao.insert(truckReport);
|
|
|
+ }
|
|
|
+
|
|
|
+ return HttpResult.ok("成功导入"+count+"行数据!");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -236,18 +320,21 @@ public class KwfTruckReportService {
|
|
|
//校验车辆档案是否存在
|
|
|
List<KwfTruck> trucks = truckDao.findTruck(new HashMap() {{ put("truckNo", reportDto.getTruckNo());}});
|
|
|
if (CollectionUtils.isEmpty(trucks)) {
|
|
|
- //新增车辆档案
|
|
|
- KwfTruckDto truckDto = new KwfTruckDto();
|
|
|
- truckDto.setTruckNo(reportDto.getTruckNo());
|
|
|
- HttpResult result = truckService.add(truckDto);
|
|
|
+ //车辆信息
|
|
|
+ KwfTruck truckParams = new KwfTruck();
|
|
|
+ truckParams.setTruckNo(reportDto.getTruckNo());
|
|
|
+ truckParams.setActualWeight(reportDto.getActualWeight());
|
|
|
+ truckParams.setAuthStatus(Global.NUMERICAL_TWO);
|
|
|
+ HttpResult result = truckService.truckEdit(truckParams);
|
|
|
if (result.getCode() != HttpStatus.SUCCESS_CODE) {
|
|
|
return result;
|
|
|
}
|
|
|
+
|
|
|
KwfTruck truck = (KwfTruck) result.getData();
|
|
|
truckReport.setTruckId(truck.getId());
|
|
|
} else {
|
|
|
//校验车辆是否已上报
|
|
|
- KwfTruck truck = trucks.get(0);
|
|
|
+ KwfTruck truck = trucks.get(Global.NUMERICAL_ZERO);
|
|
|
List<Map<String, Object>> reports = truckReportDao.findList(new HashMap() {{
|
|
|
put("truckId", truck.getId());
|
|
|
put("entId", LoginUserHolder.getEntId());
|
|
|
@@ -261,18 +348,18 @@ public class KwfTruckReportService {
|
|
|
|
|
|
/**档案信息**/
|
|
|
//校验司机档案是否存在
|
|
|
- List<KwfDriver> drivers = driverDao.findDriver(new HashMap() {{put("phone", reportDto.getPhone());
|
|
|
- }});
|
|
|
+ List<KwfDriver> drivers = driverDao.findDriver(new HashMap() {{put("phone", reportDto.getPhone());}});
|
|
|
if (CollectionUtils.isEmpty(drivers)) {
|
|
|
- //新增司机档案
|
|
|
- KwfDriverDto driverDto = new KwfDriverDto();
|
|
|
- driverDto.setName(reportDto.getName());
|
|
|
- driverDto.setPhone(reportDto.getPhone());
|
|
|
- driverDto.setIdcard(reportDto.getIdcard());
|
|
|
- HttpResult result = driverService.add(driverDto);
|
|
|
+ KwfDriver driverParams = new KwfDriver();
|
|
|
+ driverParams.setName(reportDto.getName());
|
|
|
+ driverParams.setPhone(reportDto.getPhone());
|
|
|
+ driverParams.setIdcard(reportDto.getIdcard());
|
|
|
+ driverParams.setAuthStatus(Global.NUMERICAL_TWO);
|
|
|
+ HttpResult result = driverService.driverEdit(driverParams);
|
|
|
if (result.getCode() != HttpStatus.SUCCESS_CODE) {
|
|
|
return result;
|
|
|
}
|
|
|
+
|
|
|
KwfDriver driver = (KwfDriver) result.getData();
|
|
|
truckReport.setDriverId(driver.getId());
|
|
|
} else {
|
|
|
@@ -394,7 +481,7 @@ public class KwfTruckReportService {
|
|
|
//有效上报信息
|
|
|
List<KwfTruckReportDto> effective = new ArrayList();
|
|
|
//已有运力/识别失败
|
|
|
- int haveCount = 0, errorCount = 0;
|
|
|
+ int haveCount = Global.NUMERICAL_ZERO, errorCount = Global.NUMERICAL_ZERO;
|
|
|
for (String str:params){
|
|
|
/**识别上报数据**/
|
|
|
KwfTruckReportDto reportDto = analysis(str);
|
|
|
@@ -408,7 +495,7 @@ public class KwfTruckReportService {
|
|
|
List<KwfTruck> trucks = truckDao.findTruck(new HashMap() {{put("truckNo", reportDto.getTruckNo());}});
|
|
|
if (!CollectionUtils.isEmpty(trucks)) {
|
|
|
//校验车辆是否已上报
|
|
|
- KwfTruck truck = trucks.get(0);
|
|
|
+ KwfTruck truck = trucks.get(Global.NUMERICAL_ZERO);
|
|
|
List<Map<String, Object>> reports = truckReportDao.findList(new HashMap() {{
|
|
|
put("truckId", truck.getId());
|
|
|
put("entId", LoginUserHolder.getEntId());
|
|
|
@@ -424,7 +511,7 @@ public class KwfTruckReportService {
|
|
|
List<KwfDriver> drivers = driverDao.findDriver(new HashMap() {{ put("phone", reportDto.getPhone()); }});
|
|
|
if (!CollectionUtils.isEmpty(drivers)) {
|
|
|
//校验司机是否已上报
|
|
|
- KwfDriver driver = drivers.get(0);
|
|
|
+ KwfDriver driver = drivers.get(Global.NUMERICAL_ZERO);
|
|
|
List<Map<String, Object>> reports = truckReportDao.findList(new HashMap() {{
|
|
|
put("driverId", driver.getId());
|
|
|
put("entId", LoginUserHolder.getEntId());
|
|
|
@@ -458,10 +545,10 @@ public class KwfTruckReportService {
|
|
|
public boolean checkReport(KwfTruckReportDto reportDto) {
|
|
|
/**车辆信息**/
|
|
|
//校验车辆档案是否存在
|
|
|
- List<KwfTruck> trucks = truckDao.findList(new HashMap() {{ put("truckNo", reportDto.getTruckNo());}});
|
|
|
+ List<KwfTruck> trucks = truckDao.findTruck(new HashMap() {{ put("truckNo", reportDto.getTruckNo());}});
|
|
|
if (!CollectionUtils.isEmpty(trucks)) {
|
|
|
//校验车辆是否已上报
|
|
|
- KwfTruck truck = trucks.get(0);
|
|
|
+ KwfTruck truck = trucks.get(Global.NUMERICAL_ZERO);
|
|
|
List<Map<String, Object>> reports = truckReportDao.findList(new HashMap() {{
|
|
|
put("truckId", truck.getId());
|
|
|
put("entId", LoginUserHolder.getEntId());
|
|
|
@@ -473,10 +560,10 @@ public class KwfTruckReportService {
|
|
|
|
|
|
/**档案信息**/
|
|
|
//校验司机档案是否存在
|
|
|
- List<KwfDriver> drivers = driverDao.findList(new HashMap() {{ put("phone", reportDto.getPhone()); }});
|
|
|
+ List<KwfDriver> drivers = driverDao.findDriver(new HashMap() {{ put("phone", reportDto.getPhone()); }});
|
|
|
if (!CollectionUtils.isEmpty(drivers)) {
|
|
|
//校验司机是否已上报
|
|
|
- KwfDriver driver = drivers.get(0);
|
|
|
+ KwfDriver driver = drivers.get(Global.NUMERICAL_ZERO);
|
|
|
List<Map<String, Object>> reports = truckReportDao.findList(new HashMap() {{
|
|
|
put("driverId", driver.getId());
|
|
|
put("entId", LoginUserHolder.getEntId());
|
|
|
@@ -546,4 +633,94 @@ public class KwfTruckReportService {
|
|
|
reportDto.setActualWeight(new BigDecimal(actualWeight));
|
|
|
return reportDto;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param file 上传文件
|
|
|
+ * @desc 参数校验
|
|
|
+ * @author zk
|
|
|
+ * @date 2023/8/16
|
|
|
+ **/
|
|
|
+ public HttpResult checkParams(MultipartFile file) {
|
|
|
+ ExcelReader excelReader = null;
|
|
|
+ try {
|
|
|
+ /**数据校验**/
|
|
|
+ if (ExcelUtil.checkExcel(file)) {
|
|
|
+ return HttpResult.error("请上传Excel格式的文件!");
|
|
|
+ }
|
|
|
+
|
|
|
+ ExcelImportListener importListener = new ExcelImportListener();
|
|
|
+ InputStream inputStream = file.getInputStream();
|
|
|
+ excelReader = EasyExcel.read(inputStream, importListener).build();
|
|
|
+
|
|
|
+ ReadSheet readSheet = EasyExcel.readSheet( 0) .headRowNumber(2).head(KwfTruckReportExcelImportDto.class).build();
|
|
|
+ excelReader.read(readSheet);
|
|
|
+ if (importListener.getErrorList().size() > 0) {
|
|
|
+ return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, "数据格式不正确,请确认!", importListener.getErrorList());
|
|
|
+ }
|
|
|
+ if (importListener.getDataList().size() == 0) {
|
|
|
+ return HttpResult.error("导入数据不能空!");
|
|
|
+ }
|
|
|
+
|
|
|
+ return HttpResult.ok(importListener.getDataList());
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return HttpResult.error("车辆上报导入异常!");
|
|
|
+ } finally {
|
|
|
+ if (excelReader != null) {
|
|
|
+ excelReader.finish();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param truckReportExcels 上传信息
|
|
|
+ * @desc 校验是否已上报
|
|
|
+ * @author zk
|
|
|
+ * @date 2023/8/16
|
|
|
+ **/
|
|
|
+ public List<String> checkParams(List<KwfTruckReportExcelImportDto> truckReportExcels) {
|
|
|
+ int rowNum = Global.NUMERICAL_TWO;
|
|
|
+ //”第2行数据有误,电话号码格式不正确!,身份证号码格式不正确!“
|
|
|
+ List<String> errorList = new ArrayList();
|
|
|
+ for (KwfTruckReportExcelImportDto truckReportExcel:truckReportExcels) {
|
|
|
+ rowNum ++;
|
|
|
+ StringBuilder msg = new StringBuilder("第"+ rowNum +"行数据有误,");
|
|
|
+
|
|
|
+ /**车辆信息**/
|
|
|
+ //校验车辆档案是否存在
|
|
|
+ List<KwfTruck> trucks = truckDao.findTruck(new HashMap() {{ put("truckNo", truckReportExcel.getTruckNo());}});
|
|
|
+ if (!CollectionUtils.isEmpty(trucks)) {
|
|
|
+ //校验车辆是否已上报
|
|
|
+ KwfTruck truck = trucks.get(Global.NUMERICAL_ZERO);
|
|
|
+ List<Map<String, Object>> reports = truckReportDao.findList(new HashMap() {{
|
|
|
+ put("truckId", truck.getId());
|
|
|
+ put("entId", LoginUserHolder.getEntId());
|
|
|
+ }});
|
|
|
+ if (!CollectionUtils.isEmpty(reports)) {
|
|
|
+ msg.append("车牌号"+ truck.getTruckNo() +"已上报!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**档案信息**/
|
|
|
+ //校验司机档案是否存在
|
|
|
+ List<KwfDriver> drivers = driverDao.findDriver(new HashMap() {{ put("phone", truckReportExcel.getPhone()); }});
|
|
|
+ if (!CollectionUtils.isEmpty(drivers)) {
|
|
|
+ //校验司机是否已上报
|
|
|
+ KwfDriver driver = drivers.get(Global.NUMERICAL_ZERO);
|
|
|
+ List<Map<String, Object>> reports = truckReportDao.findList(new HashMap() {{
|
|
|
+ put("driverId", driver.getId());
|
|
|
+ put("entId", LoginUserHolder.getEntId());
|
|
|
+ }});
|
|
|
+ if (!CollectionUtils.isEmpty(reports)) {
|
|
|
+ msg.append("司机"+ driver.getName() + driver.getPhone() +"已上报!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (msg.length() > Global.NUMERICAL_TWELVE) {
|
|
|
+ errorList.add(msg.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return errorList;
|
|
|
+ }
|
|
|
}
|