|
@@ -3,11 +3,13 @@ package com.gree.mall.manager.logic.policy;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.gree.mall.manager.bean.ExcelData;
|
|
|
import com.gree.mall.manager.bean.admin.AdminUserCom;
|
|
|
import com.gree.mall.manager.bean.policy.*;
|
|
|
import com.gree.mall.manager.commonmapper.PolicyCMapper;
|
|
|
+import com.gree.mall.manager.enums.*;
|
|
|
import com.gree.mall.manager.logic.common.CommonLogic;
|
|
|
import com.gree.mall.manager.plus.entity.*;
|
|
|
import com.gree.mall.manager.plus.service.*;
|
|
@@ -16,11 +18,15 @@ import com.gree.mall.manager.utils.email.EmailUtilsNew;
|
|
|
import com.gree.mall.manager.utils.excel.ExcelUtils;
|
|
|
import com.gree.mall.manager.zfire.bean.ZfireParamBean;
|
|
|
import com.gree.mall.manager.zfire.util.FieldUtils;
|
|
|
+import lombok.SneakyThrows;
|
|
|
+import org.apache.http.client.utils.DateUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
+import javax.mail.MessagingException;
|
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
@@ -60,6 +66,12 @@ public class AgreementLogic {
|
|
|
@Autowired
|
|
|
MailboxSendRecordPolicyService mailboxSendRecordPolicyService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ PolicyOrderService policyOrderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ WorkerPolicyService workerPolicyService;
|
|
|
+
|
|
|
|
|
|
|
|
|
public IPage<AgreementVo> list(Page page, ZfireParamBean zfireParam) {
|
|
@@ -410,4 +422,274 @@ public class AgreementLogic {
|
|
|
public void del(String id) {
|
|
|
agreementService.removeById(id);
|
|
|
}
|
|
|
+
|
|
|
+ public void sendEmailSche() {
|
|
|
+
|
|
|
+
|
|
|
+ Mailbox mailbox = mailboxService.getById("1");
|
|
|
+
|
|
|
+ //今天要发送的保单
|
|
|
+ //Date startTime = DateUtil.beginOfDay(new Date());
|
|
|
+ Date endTime = DateUtil.parseDateTime(DateUtils.formatDate(new Date(),"yyyy-MM-dd") +" "+ mailbox.getSendTime()+":00");
|
|
|
+ if(new Date().getTime() < endTime.getTime()){
|
|
|
+ //还没到可发邮件的时间
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (mailboxSendRecordService.lambdaQuery().gt(MailboxSendRecord::getSendTime, DateUtil.beginOfDay(new Date())).count() > 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ List<MailboxReceive> mailboxReceives = mailboxReceiveService.lambdaQuery().eq(MailboxReceive::getMailboxId, mailbox.getId()).list();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //意外保险发送邮件
|
|
|
+ List<PolicyOrder> policyOrders = policyOrderService.lambdaQuery().eq(PolicyOrder::getType, PolicyTypeEnum.AC.getKey())
|
|
|
+ .eq(PolicyOrder::getIsPay, IsYesNoEnum.YES.getKey())
|
|
|
+ .eq(PolicyOrder::getIsSend, IsYesNoEnum.NO.getKey()).list();
|
|
|
+
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(policyOrders)){
|
|
|
+ MailboxSendRecord mailboxSendRecord = new MailboxSendRecord();
|
|
|
+ mailboxSendRecord.setId(IdWorker.getIdStr());
|
|
|
+ mailboxSendRecord.setPolicyType(PolicyTypeEnum.AC.getKey());
|
|
|
+ mailboxSendRecord.setSendBatch(mailboxSendRecord.getId());
|
|
|
+ mailboxSendRecord.setSendMailbox(mailbox.getSendMailbox());
|
|
|
+ mailboxSendRecord.setReceiveMailbox(mailbox.getAccidentMailbox());
|
|
|
+ mailboxSendRecord.setReceiptStatus(IsYesNoEnum.NO.getKey());
|
|
|
+ mailboxSendRecord.setCompanyWechatId(mailbox.getCompanyWechatId());
|
|
|
+ mailboxSendRecord.setCompanyWechatName(mailbox.getCompanyWechatName());
|
|
|
+
|
|
|
+ List<MailboxSendRecordPolicy> mailboxSendRecordPolicies = new ArrayList<>();
|
|
|
+
|
|
|
+ for (PolicyOrder policyOrder : policyOrders) {
|
|
|
+ MailboxSendRecordPolicy mailboxSendRecordPolicy = new MailboxSendRecordPolicy();
|
|
|
+
|
|
|
+ mailboxSendRecordPolicy.setCompanyWechatId(mailboxSendRecord.getCompanyWechatId());
|
|
|
+ mailboxSendRecordPolicy.setCompanyWechatId(mailboxSendRecord.getCompanyWechatName());
|
|
|
+ mailboxSendRecordPolicy.setPolicyNumber(policyOrder.getPolicyId());
|
|
|
+ mailboxSendRecordPolicy.setWebsitName(policyOrder.getWebsitName());
|
|
|
+ mailboxSendRecordPolicy.setWebsitId(policyOrder.getWebsitId());
|
|
|
+ mailboxSendRecordPolicy.setPolicyMobile(policyOrder.getWorkerMobile());
|
|
|
+ mailboxSendRecordPolicy.setPolicyNumber(policyOrder.getWorkerNumber());
|
|
|
+ mailboxSendRecordPolicy.setPolicyIdcard(policyOrder.getWorkerIdcard());
|
|
|
+ mailboxSendRecordPolicy.setType("IN");
|
|
|
+ mailboxSendRecordPolicy.setSendBatch(mailboxSendRecord.getSendBatch());
|
|
|
+ mailboxSendRecordPolicy.setPolicyOrderId(policyOrder.getId());
|
|
|
+ mailboxSendRecordPolicy.setPolicyType(PolicyTypeEnum.AC.getKey());
|
|
|
+
|
|
|
+ mailboxSendRecordPolicies.add(mailboxSendRecordPolicy);
|
|
|
+ }
|
|
|
+
|
|
|
+ mailboxSendRecord.insert();
|
|
|
+ mailboxSendRecordPolicyService.saveBatch(mailboxSendRecordPolicies);
|
|
|
+
|
|
|
+ //发邮件
|
|
|
+ try {
|
|
|
+ this.sendEmailFile(mailboxSendRecordPolicies, mailboxSendRecord, mailbox);
|
|
|
+ mailboxSendRecord.setSendStatus("OK");
|
|
|
+ mailboxSendRecord.setSendTime(new Date());
|
|
|
+ mailboxSendRecord.updateById();
|
|
|
+ } catch (Exception e) {
|
|
|
+ mailboxSendRecord.setSendStatus("NO");
|
|
|
+ mailboxSendRecord.setSendTime(new Date());
|
|
|
+ mailboxSendRecord.updateById();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //雇主保险发送邮件
|
|
|
+ List<PolicyOrder> policyOrdersEm = policyOrderService.lambdaQuery()
|
|
|
+ .eq(PolicyOrder::getType, PolicyTypeEnum.EM.getKey())
|
|
|
+ .eq(PolicyOrder::getIsSend, IsYesNoEnum.NO.getKey()).list();
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(policyOrders)){
|
|
|
+ MailboxSendRecord mailboxSendRecord = new MailboxSendRecord();
|
|
|
+ mailboxSendRecord.setId(IdWorker.getIdStr());
|
|
|
+ mailboxSendRecord.setPolicyType(PolicyTypeEnum.EM.getKey());
|
|
|
+ mailboxSendRecord.setSendBatch(mailboxSendRecord.getId());
|
|
|
+ mailboxSendRecord.setSendMailbox(mailbox.getSendMailbox());
|
|
|
+ mailboxSendRecord.setReceiveMailbox(mailbox.getEmployerMailbox());
|
|
|
+ mailboxSendRecord.setReceiptStatus(IsYesNoEnum.NO.getKey());
|
|
|
+ mailboxSendRecord.setCompanyWechatId(mailbox.getCompanyWechatId());
|
|
|
+ mailboxSendRecord.setCompanyWechatName(mailbox.getCompanyWechatName());
|
|
|
+
|
|
|
+ List<MailboxSendRecordPolicy> mailboxSendRecordPolicies = new ArrayList<>();
|
|
|
+
|
|
|
+ for (PolicyOrder policyOrder : policyOrdersEm) {
|
|
|
+ MailboxSendRecordPolicy mailboxSendRecordPolicy = new MailboxSendRecordPolicy();
|
|
|
+
|
|
|
+ mailboxSendRecordPolicy.setCompanyWechatId(mailboxSendRecord.getCompanyWechatId());
|
|
|
+ mailboxSendRecordPolicy.setCompanyWechatId(mailboxSendRecord.getCompanyWechatName());
|
|
|
+ mailboxSendRecordPolicy.setPolicyNumber(policyOrder.getPolicyId());
|
|
|
+ mailboxSendRecordPolicy.setPolicyOrderId(policyOrder.getId());
|
|
|
+ mailboxSendRecordPolicy.setWebsitName(policyOrder.getWebsitName());
|
|
|
+ mailboxSendRecordPolicy.setWebsitId(policyOrder.getWebsitId());
|
|
|
+ mailboxSendRecordPolicy.setPolicyMobile(policyOrder.getWorkerMobile());
|
|
|
+ mailboxSendRecordPolicy.setPolicyNumber(policyOrder.getWorkerNumber());
|
|
|
+ mailboxSendRecordPolicy.setPolicyIdcard(policyOrder.getWorkerIdcard());
|
|
|
+ mailboxSendRecordPolicy.setType("IN");
|
|
|
+ mailboxSendRecordPolicy.setSendBatch(mailboxSendRecord.getSendBatch());
|
|
|
+ mailboxSendRecordPolicy.setPolicyType(PolicyTypeEnum.EM.getKey());
|
|
|
+
|
|
|
+ if (!StringUtil.isEmpty(policyOrder.getReplaceName())) {
|
|
|
+ mailboxSendRecordPolicy.setType("RE");
|
|
|
+ mailboxSendRecordPolicy.setReplaceName(policyOrder.getReplaceName());
|
|
|
+ mailboxSendRecordPolicy.setReplaceIdcard(policyOrder.getReplaceIdcard());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ mailboxSendRecordPolicies.add(mailboxSendRecordPolicy);
|
|
|
+ }
|
|
|
+
|
|
|
+ mailboxSendRecord.insert();
|
|
|
+ mailboxSendRecordPolicyService.saveBatch(mailboxSendRecordPolicies);
|
|
|
+
|
|
|
+ //发邮件
|
|
|
+ try {
|
|
|
+ this.sendEmailFileEm(mailboxSendRecordPolicies, mailboxSendRecord, mailbox);
|
|
|
+ mailboxSendRecord.setSendStatus("OK");
|
|
|
+ mailboxSendRecord.setSendTime(new Date());
|
|
|
+ mailboxSendRecord.updateById();
|
|
|
+ } catch (Exception e) {
|
|
|
+ mailboxSendRecord.setSendStatus("NO");
|
|
|
+ mailboxSendRecord.setSendTime(new Date());
|
|
|
+ mailboxSendRecord.updateById();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //工伤保险发送邮件
|
|
|
+ for (MailboxReceive mailboxReceive : mailboxReceives) {
|
|
|
+ List<PolicyOrder> policyOrdersIn = policyOrderService.lambdaQuery()
|
|
|
+ .eq(PolicyOrder::getType, PolicyTypeEnum.IN.getKey())
|
|
|
+ .eq(PolicyOrder::getBuyUnitId, mailboxReceive.getDictId())
|
|
|
+ .eq(PolicyOrder::getIsSend, IsYesNoEnum.NO.getKey()).list();
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(policyOrdersIn)){
|
|
|
+
|
|
|
+
|
|
|
+ MailboxSendRecord mailboxSendRecord = new MailboxSendRecord();
|
|
|
+ mailboxSendRecord.setId(IdWorker.getIdStr());
|
|
|
+ mailboxSendRecord.setPolicyType(PolicyTypeEnum.IN.getKey());
|
|
|
+ mailboxSendRecord.setSendBatch(mailboxSendRecord.getId());
|
|
|
+ mailboxSendRecord.setSendMailbox(mailbox.getSendMailbox());
|
|
|
+ mailboxSendRecord.setReceiveMailbox(mailboxReceive.getReceiveMailbox());
|
|
|
+ mailboxSendRecord.setReceiptStatus(IsYesNoEnum.NO.getKey());
|
|
|
+ mailboxSendRecord.setCompanyWechatId(mailbox.getCompanyWechatId());
|
|
|
+ mailboxSendRecord.setCompanyWechatName(mailbox.getCompanyWechatName());
|
|
|
+
|
|
|
+ List<MailboxSendRecordPolicy> mailboxSendRecordPolicies = new ArrayList<>();
|
|
|
+
|
|
|
+ for (PolicyOrder policyOrder : policyOrdersIn) {
|
|
|
+ MailboxSendRecordPolicy mailboxSendRecordPolicy = new MailboxSendRecordPolicy();
|
|
|
+
|
|
|
+ mailboxSendRecordPolicy.setCompanyWechatId(mailboxSendRecord.getCompanyWechatId());
|
|
|
+ mailboxSendRecordPolicy.setCompanyWechatId(mailboxSendRecord.getCompanyWechatName());
|
|
|
+ mailboxSendRecordPolicy.setPolicyNumber(policyOrder.getPolicyId());
|
|
|
+ mailboxSendRecordPolicy.setPolicyOrderId(policyOrder.getId());
|
|
|
+ mailboxSendRecordPolicy.setWebsitName(policyOrder.getWebsitName());
|
|
|
+ mailboxSendRecordPolicy.setWebsitId(policyOrder.getWebsitId());
|
|
|
+ mailboxSendRecordPolicy.setPolicyMobile(policyOrder.getWorkerMobile());
|
|
|
+ mailboxSendRecordPolicy.setPolicyNumber(policyOrder.getWorkerNumber());
|
|
|
+ mailboxSendRecordPolicy.setPolicyIdcard(policyOrder.getWorkerIdcard());
|
|
|
+ mailboxSendRecordPolicy.setType("IN");
|
|
|
+ mailboxSendRecordPolicy.setSendBatch(mailboxSendRecord.getSendBatch());
|
|
|
+ mailboxSendRecordPolicy.setPolicyType(PolicyTypeEnum.IN.getKey());
|
|
|
+
|
|
|
+
|
|
|
+ mailboxSendRecordPolicies.add(mailboxSendRecordPolicy);
|
|
|
+ }
|
|
|
+
|
|
|
+ mailboxSendRecord.insert();
|
|
|
+ mailboxSendRecordPolicyService.saveBatch(mailboxSendRecordPolicies);
|
|
|
+
|
|
|
+ //发邮件
|
|
|
+ try {
|
|
|
+ this.sendEmailFileIn(mailboxSendRecordPolicies, mailboxSendRecord, mailbox);
|
|
|
+ mailboxSendRecord.setSendStatus("OK");
|
|
|
+ mailboxSendRecord.setSendTime(new Date());
|
|
|
+ mailboxSendRecord.updateById();
|
|
|
+ } catch (Exception e) {
|
|
|
+ mailboxSendRecord.setSendStatus("NO");
|
|
|
+ mailboxSendRecord.setSendTime(new Date());
|
|
|
+ mailboxSendRecord.updateById();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void receEmail() throws IOException, MessagingException {
|
|
|
+
|
|
|
+ Mailbox mailbox = mailboxService.getById("1");
|
|
|
+
|
|
|
+ List<MailboxReceive> mailboxReceives = mailboxReceiveService.lambdaQuery().eq(MailboxReceive::getMailboxId, mailbox.getId()).list();
|
|
|
+
|
|
|
+ Boolean rece = new EmailUtilsNew(mailbox.getSendMailbox(), mailbox.getSendPassword()).receEmail(mailbox.getAccidentMailbox());
|
|
|
+ if(rece){
|
|
|
+ //将今天的意外险都收到回执
|
|
|
+ mailboxSendRecordService.lambdaUpdate()
|
|
|
+ .between(MailboxSendRecord::getSendTime,DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()))
|
|
|
+ .eq(MailboxSendRecord::getPolicyType,PolicyTypeEnum.AC.getKey())
|
|
|
+ .set(MailboxSendRecord::getReceiptStatus,IsYesNoEnum.YES.getKey())
|
|
|
+ .set(MailboxSendRecord::getReceiptTime,new Date()).update();
|
|
|
+
|
|
|
+ //将保险都生效或待生效
|
|
|
+ List<MailboxSendRecord> mailboxSendRecords = mailboxSendRecordService.lambdaQuery()
|
|
|
+ .between(MailboxSendRecord::getSendTime, DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()))
|
|
|
+ .eq(MailboxSendRecord::getPolicyType, PolicyTypeEnum.AC.getKey()).list();
|
|
|
+
|
|
|
+ if (!CollectionUtils.isEmpty(mailboxSendRecords)) {
|
|
|
+
|
|
|
+ List<String> sendBatch = mailboxSendRecords.stream().map(MailboxSendRecord::getSendBatch).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<MailboxSendRecordPolicy> mailboxSendRecordPolicies = mailboxSendRecordPolicyService.lambdaQuery().in(MailboxSendRecordPolicy::getSendBatch, sendBatch).list();
|
|
|
+
|
|
|
+ List<String> policyOrderId = mailboxSendRecordPolicies.stream().map(MailboxSendRecordPolicy::getPolicyOrderId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ policyOrderService.lambdaUpdate()
|
|
|
+ .in(PolicyOrder::getId,policyOrderId)
|
|
|
+ .le(PolicyOrder::getStartTime,new Date())
|
|
|
+ .ge(PolicyOrder::getEndTime,new Date())
|
|
|
+ .set(PolicyOrder::getPolicyOrderStatus, PolicyOrderEmStutasEnum.BZZ.getKey()).update();
|
|
|
+ workerPolicyService.lambdaUpdate()
|
|
|
+ .in(WorkerPolicy::getOrderId,policyOrderId)
|
|
|
+ .le(WorkerPolicy::getStartTime,new Date())
|
|
|
+ .ge(WorkerPolicy::getEndTime,new Date())
|
|
|
+ .set(WorkerPolicy::getStatus, "ON").update();
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Boolean receEm = new EmailUtilsNew(mailbox.getSendMailbox(), mailbox.getSendPassword()).receEmail(mailbox.getEmployerMailbox());
|
|
|
+
|
|
|
+ if(receEm){
|
|
|
+ //将今天的雇主险都收到回执
|
|
|
+ mailboxSendRecordService.lambdaUpdate()
|
|
|
+ .between(MailboxSendRecord::getSendTime,DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()))
|
|
|
+ .eq(MailboxSendRecord::getPolicyType,PolicyTypeEnum.EM.getKey())
|
|
|
+ .set(MailboxSendRecord::getReceiptStatus,IsYesNoEnum.YES.getKey())
|
|
|
+ .set(MailboxSendRecord::getReceiptTime,new Date()).update();
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ for (MailboxReceive mailboxReceive : mailboxReceives) {
|
|
|
+ Boolean receIn = new EmailUtilsNew(mailbox.getSendMailbox(), mailbox.getSendPassword()).receEmail(mailboxReceive.getReceiveMailbox());
|
|
|
+
|
|
|
+ if(receIn){
|
|
|
+ //将今天的工伤险都收到回执
|
|
|
+ mailboxSendRecordService.lambdaUpdate()
|
|
|
+ .between(MailboxSendRecord::getSendTime,DateUtil.beginOfDay(new Date()), DateUtil.endOfDay(new Date()))
|
|
|
+ .eq(MailboxSendRecord::getPolicyType,PolicyTypeEnum.IN.getKey())
|
|
|
+ .eq(MailboxSendRecord::getReceiveMailbox,mailboxReceive.getReceiveMailbox())
|
|
|
+ .set(MailboxSendRecord::getReceiptStatus,IsYesNoEnum.YES.getKey())
|
|
|
+ .set(MailboxSendRecord::getReceiptTime,new Date()).update();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|