Commit eba11680 by zhangxingmin

push

parent 9ae33511
...@@ -14,6 +14,8 @@ import com.yd.csf.feign.response.appointmentfile.ApiAppointmentImportExcelRespon ...@@ -14,6 +14,8 @@ import com.yd.csf.feign.response.appointmentfile.ApiAppointmentImportExcelRespon
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -108,9 +110,8 @@ public class ApiAppointmentFileController implements ApiAppointmentFileFeignClie ...@@ -108,9 +110,8 @@ public class ApiAppointmentFileController implements ApiAppointmentFileFeignClie
* @return * @return
*/ */
@Override @Override
public Result<ApiAppointmentImportExcelResponse> appointmentImportExcel(MultipartFile file, public Result<ApiAppointmentImportExcelResponse> appointmentImportExcel(MultipartFile file,ApiAppointmentImportExcelRequest request) {
ApiAppointmentImportExcelRequest request) { return apiAppointmentFileService.appointmentImportExcel(file, request);
return apiAppointmentFileService.appointmentImportExcel(file,request);
} }
......
...@@ -2,6 +2,7 @@ package com.yd.csf.api.service.impl; ...@@ -2,6 +2,7 @@ package com.yd.csf.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yd.auth.core.dto.AuthUserDto; import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil; import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.constant.RedisConstants; import com.yd.common.constant.RedisConstants;
...@@ -13,6 +14,8 @@ import com.yd.common.utils.RandomStringGenerator; ...@@ -13,6 +14,8 @@ import com.yd.common.utils.RandomStringGenerator;
import com.yd.common.utils.RedisUtil; import com.yd.common.utils.RedisUtil;
import com.yd.csf.api.service.ApiAppointmentFileService; import com.yd.csf.api.service.ApiAppointmentFileService;
import com.yd.csf.api.service.ApiAppointmentService; import com.yd.csf.api.service.ApiAppointmentService;
import com.yd.csf.feign.dto.appointment.ApiAppointmentInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto;
import com.yd.csf.feign.dto.appointmentfile.ApiAppointmentFileDto; import com.yd.csf.feign.dto.appointmentfile.ApiAppointmentFileDto;
import com.yd.csf.feign.dto.excel.*; import com.yd.csf.feign.dto.excel.*;
import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileAddRequest; import com.yd.csf.feign.request.appointmentfile.ApiAppointmentFileAddRequest;
...@@ -31,6 +34,7 @@ import com.yd.oss.feign.client.ApiExcelFeignClient; ...@@ -31,6 +34,7 @@ import com.yd.oss.feign.client.ApiExcelFeignClient;
import com.yd.oss.feign.client.ApiPdfFeignClient; import com.yd.oss.feign.client.ApiPdfFeignClient;
import com.yd.oss.feign.enums.TemplateTypeEnum; import com.yd.oss.feign.enums.TemplateTypeEnum;
import com.yd.oss.feign.request.ApiGeneratePdfRequest; import com.yd.oss.feign.request.ApiGeneratePdfRequest;
import com.yd.oss.feign.request.ApiOssExcelParseRequest;
import com.yd.oss.feign.request.ApiOssExportAppointmentExcelRequest; import com.yd.oss.feign.request.ApiOssExportAppointmentExcelRequest;
import com.yd.oss.feign.response.ApiGeneratePdfResponse; import com.yd.oss.feign.response.ApiGeneratePdfResponse;
import com.yd.oss.feign.response.ApiOssExcelParseResponse; import com.yd.oss.feign.response.ApiOssExcelParseResponse;
...@@ -332,13 +336,10 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -332,13 +336,10 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
Result<Appointment> appointmentResult = apiAppointmentService.checkAppointmentIsExist(request.getAppointmentBizId()); Result<Appointment> appointmentResult = apiAppointmentService.checkAppointmentIsExist(request.getAppointmentBizId());
Appointment appointment = appointmentResult.getData(); Appointment appointment = appointmentResult.getData();
//需要解析的excel对象 String s = "com.yd.csf.feign.dto.excel.ApiExcelImportAppointmentDto,com.yd.csf.feign.dto.excel.ApiExcelImportHealthDto";
String[] s =new String[]{
"com.yd.csf.feign.dto.excel.ApiExcelImportAppointmentDto",
"com.yd.csf.feign.dto.excel.ApiExcelImportHealthDto"
};
//Feign调用-oss服务,通用-Excel解析(支持多sheet页解析) //Feign调用-oss服务,通用-Excel解析(支持多sheet页解析)
Result<ApiOssExcelParseResponse> result = apiExcelFeignClient.parse(file,s); Result<ApiOssExcelParseResponse> result = apiExcelFeignClient.parse(file, s);
if (Objects.isNull(result.getData()) || if (Objects.isNull(result.getData()) ||
(!Objects.isNull(result.getData()) && Objects.isNull(result.getData().getMap()))){ (!Objects.isNull(result.getData()) && Objects.isNull(result.getData().getMap()))){
throw new BusinessException("导入数据不能为空!"); throw new BusinessException("导入数据不能为空!");
...@@ -346,17 +347,43 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService ...@@ -346,17 +347,43 @@ public class ApiAppointmentFileServiceImpl implements ApiAppointmentFileService
//Excel解析出的信息 //Excel解析出的信息
Map<Integer, Object> data = (Map<Integer, Object>) result.getData().getMap(); Map<Integer, Object> data = (Map<Integer, Object>) result.getData().getMap();
// 获取第一个Sheet页的解析结果
ApiExcelImportAppointmentDto appointmentDto = (ApiExcelImportAppointmentDto) data.get(0);
// 获取第二个Sheet页的解析结果
ApiExcelImportHealthDto healthDto = (ApiExcelImportHealthDto) data.get(1);
//校验Excel解析的字段 ObjectMapper objectMapper = new ObjectMapper();
//更新或者新增表数据 try {
//更新预约主信息数据 //查询redis缓存的字典列表信息
List<GetDictItemListByDictTypeResponse> dictTypeResponses = redisUtil.getCacheObject(RedisConstants.DICT_LIST);
// 获取第一个Sheet页的解析结果并转换为 DTO
LinkedHashMap<String, Object> appointmentData = (LinkedHashMap<String, Object>) data.get(0);
ApiExcelImportAppointmentDto appointmentDto = objectMapper.convertValue(appointmentData, ApiExcelImportAppointmentDto.class);
// 获取第二个Sheet页的解析结果并转换为 DTO
// LinkedHashMap<String, Object> healthData = (LinkedHashMap<String, Object>) data.get(1);
// ApiExcelImportHealthDto healthDto = objectMapper.convertValue(healthData, ApiExcelImportHealthDto.class);
//编辑更新预约主体信息
ApiAppointmentInfoDto apiAppointmentInfoDto = new ApiAppointmentInfoDto();
BeanUtils.copyProperties(appointment,apiAppointmentInfoDto);
apiAppointmentInfoDto = ApiExcelImportAppointmentDto.buildApiAppointmentInfoDto(appointmentDto,apiAppointmentInfoDto,dictTypeResponses);
BeanUtils.copyProperties(apiAppointmentInfoDto,appointment);
iAppointmentService.saveOrUpdate(appointment);
//编辑更新产品计划主信息
//查询产品计划主信息
ProductPlan productPlan = iProductPlanService.queryOne(request.getAppointmentBizId(),"");
ApiProductPlanMainInfoDto apiProductPlanMainInfoDto = new ApiProductPlanMainInfoDto();
if (!Objects.isNull(productPlan)) {
BeanUtils.copyProperties(productPlan,apiProductPlanMainInfoDto);
return null; }
return Result.success();
} catch (Exception e) {
log.error("Excel数据转换异常", e);
throw new BusinessException("Excel数据格式错误,请检查模板是否正确");
}
} }
......
...@@ -81,8 +81,8 @@ public interface ApiAppointmentFileFeignClient { ...@@ -81,8 +81,8 @@ public interface ApiAppointmentFileFeignClient {
* Excel导入-预约信息 * Excel导入-预约信息
* @return * @return
*/ */
@PostMapping(value = "/excel/import/appointment", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/excel/import/appointment")
Result<ApiAppointmentImportExcelResponse> appointmentImportExcel( Result<ApiAppointmentImportExcelResponse> appointmentImportExcel(
@RequestPart("file") MultipartFile file, @RequestParam("file") MultipartFile file,
@RequestPart("request") ApiAppointmentImportExcelRequest request); ApiAppointmentImportExcelRequest request);
} }
package com.yd.csf.feign.dto.excel; package com.yd.csf.feign.dto.excel;
import com.yd.common.enums.DictTypeEnum;
import com.yd.common.utils.DateUtil;
import com.yd.common.utils.StringUtil;
import com.yd.csf.feign.dto.appointment.ApiAppointmentInfoDto;
import com.yd.csf.feign.dto.appointment.ApiProductPlanMainInfoDto;
import com.yd.oss.feign.annotation.ExcelCollection; import com.yd.oss.feign.annotation.ExcelCollection;
import com.yd.oss.feign.annotation.ExcelField; import com.yd.oss.feign.annotation.ExcelField;
import com.yd.oss.feign.annotation.ExcelSheet; import com.yd.oss.feign.annotation.ExcelSheet;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
...@@ -467,4 +473,56 @@ public class ApiExcelImportAppointmentDto { ...@@ -467,4 +473,56 @@ public class ApiExcelImportAppointmentDto {
*/ */
@ExcelCollection(type = ApiExcelImportAdditionalDto.class, startRow = 20) @ExcelCollection(type = ApiExcelImportAdditionalDto.class, startRow = 20)
private List<ApiExcelImportAdditionalDto> additionalDtoList; private List<ApiExcelImportAdditionalDto> additionalDtoList;
/**
* 构造预约主体信息
* @param dto
* @param infoDto
* @return
*/
public static ApiAppointmentInfoDto buildApiAppointmentInfoDto(ApiExcelImportAppointmentDto dto,
ApiAppointmentInfoDto infoDto,
List<GetDictItemListByDictTypeResponse> dictTypeResponses) {
//到港时间
infoDto.setArrivalTime(DateUtil.getLocalDateTime(dto.getHkArrivalTime()));
//业务编号->介绍人编号 TODO
infoDto.setBusinessNo(dto.getMainReferrerId());
//确定预约时间->预约日期 (西元 年/月/日) + 預約時間
infoDto.setConfirmAppointmentTime(DateUtil.getLocalDateTime(dto.getMainIntentionAppointmentDate() + " " + dto.getMainIntentionAppointmentTime()));
//离港时间->离港(澳)日期及时间(离港时间)(预约信息主表)
infoDto.setDepartureTime(DateUtil.getLocalDateTime(dto.getHkDepartureTime()));
//客户在港期间联络电话->客户在港期间联络电话(预约信息主表)区号+号码
infoDto.setHkMobileCode(StringUtil.getSplitStr(dto.getHkHkMobile(),"-",0));
infoDto.setHkMobile(StringUtil.getSplitStr(dto.getHkHkMobile(),"-",1));
//是否体检
infoDto.setIsTj(Integer.valueOf(GetDictItemListByDictTypeResponse.getItemValue(dictTypeResponses,
DictTypeEnum.SYS_NO_YES.getItemValue(),dto.getMainIsTj())));
//会面地点
infoDto.setMeetingPoint(dto.getHkMeetingPoint());
//转保声明选项 TODO
// infoDto.setPolicyTransfer();
return infoDto;
}
/**
* 构造产品计划主信息
* @param dto
* @param infoDto
* @return
*/
public static ApiProductPlanMainInfoDto buildApiAppointmentInfoDto(ApiExcelImportAppointmentDto dto,
ApiProductPlanMainInfoDto infoDto,
List<GetDictItemListByDictTypeResponse> dictTypeResponses) {
//保险公司名称
infoDto.setCompanyName(dto.getPlanCompanyName());
//货币(字典)
infoDto.setCurrency(dto.getPlanCurrency());
//预付额 TODO
// infoDto.setDeductibles();
//红利分配方式(字典)
infoDto.setDividendDistributionMethod(GetDictItemListByDictTypeResponse.getItemValue(dictTypeResponses,
DictTypeEnum.CSF_AP_DIVIDEND.getItemValue(),dto.getPlanDividendDistributionMethod()));
return infoDto;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment