Commit f5e071b8 by jianan

保费到期提醒4

parent 08bc47a6
package com.yd.csf.service.component;
import com.alibaba.excel.EasyExcel;
import com.yd.csf.service.dto.RenewalDuePolicy;
import com.yd.csf.service.dto.RenewalReminderData;
import com.yd.csf.service.model.PolicyFollow;
import com.yd.csf.service.vo.RenewalPolicyExportDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* 续期保单清单 Excel 生成(30 列,对齐 policy报表模版.xlsx)
*/
@Component
public class RenewalPolicyReportService {
private static final String FILE_NAME_PATTERN = "续期保单清单_%s-%s_%s.xlsx";
private static final DateTimeFormatter MONTH_FMT = DateTimeFormatter.ofPattern("yyyyMM");
private static final DateTimeFormatter DAY_FMT = DateTimeFormatter.ofPattern("yyyyMMdd");
/**
* 生成清单文件字节
*/
public byte[] generate(RenewalReminderData data) {
List<RenewalPolicyExportDTO> rows = toRows(data);
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
EasyExcel.write(out, RenewalPolicyExportDTO.class)
.sheet("续期保单")
.doWrite(rows);
return out.toByteArray();
} catch (IOException e) {
throw new RuntimeException("生成续期保单清单失败", e);
}
}
/**
* 文件名:续期保单清单_&lt;窗口首月&gt;-&lt;窗口末月&gt;_&lt;生成日&gt;.xlsx
*/
public String buildFileName(RenewalReminderData data, LocalDate today) {
return String.format(FILE_NAME_PATTERN,
data.getWindowStart().format(MONTH_FMT),
data.getWindowEnd().format(MONTH_FMT),
today.format(DAY_FMT));
}
private List<RenewalPolicyExportDTO> toRows(RenewalReminderData data) {
List<RenewalPolicyExportDTO> rows = new ArrayList<>();
if (data == null || CollectionUtils.isEmpty(data.getDuePolicies())) {
return rows;
}
for (RenewalDuePolicy item : data.getDuePolicies()) {
PolicyFollow p = item.getPolicyFollow();
RenewalPolicyExportDTO row = new RenewalPolicyExportDTO();
row.setId(p.getId());
row.setPolicyNo(p.getPolicyNo());
row.setProductName(p.getProductName());
row.setPolicyHolder(p.getPolicyHolder());
row.setPolicyHolderEn(p.getPolicyHolderEn());
row.setInsured(p.getInsured());
row.setStatus(p.getStatus());
row.setEachIssuePremium(p.getEachIssuePremium());
row.setPolicyCurrency(p.getPolicyCurrency());
row.setPolicyLevy(p.getPolicyLevy());
row.setEffectiveDate(p.getEffectiveDate());
row.setSignDate(p.getSignDate());
row.setIssueDate(p.getIssueDate());
row.setCoolingOffEndDate(p.getCoolingOffEndDate());
row.setDueDate(java.sql.Date.valueOf(item.getDueDate()));
row.setIssueNumber(Objects.toString(p.getIssueNumber(), null));
row.setPaymentFrequency(p.getPaymentFrequency());
row.setIsPrepay(p.getIsPrepay());
row.setPrepaidTerm(p.getPrepaidTerm());
row.setProductCate(p.getProductCate());
row.setInsuranceCompany(p.getInsuranceCompany());
row.setReconciliationCompany(p.getReconciliationCompany());
row.setFirstBroker(p.getFirstBroker());
row.setSigner(p.getSigner());
row.setPracticeCode(p.getPracticeCode());
row.setAppointmentNo(p.getAppointmentNo());
row.setSignLocation(p.getSignLocation());
rows.add(row);
}
return rows;
}
}
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