package me.zhengjie.application.bank.mq; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import me.zhengjie.base.util.FileUploadUtil; import me.zhengjie.dao.mybatis.ModelRepository; import me.zhengjie.dao.mybatis.OrderFileRepository; import me.zhengjie.dao.mybatis.ContractOrderRepository; import me.zhengjie.dao.mybatis.entity.ModelEntity; import me.zhengjie.dao.mybatis.entity.ContractOrderEntity; import me.zhengjie.dao.mybatis.entity.OrderFileEntity; import me.zhengjie.dao.mybatis.mapper.OrderFileMapper; import me.zhengjie.domain.model.ModelSynthesizerDomain; import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; @Component @RequiredArgsConstructor public class RedisReceiver implements MessageListener { private final OrderFileMapper orderFileMapper; private final ContractOrderRepository contractOrderRepository; private final ModelRepository modelRepository; private final OrderFileRepository orderFileRepository; private final ModelSynthesizerDomain modelSynthesizerDomain; @Override @Transactional(rollbackFor = Exception.class) public void onMessage(Message message, byte[] pattern) { System.out.println("Redis message receiver for generate common doc is beginnig ..."); String text = new String(message.getBody()); System.out.println(text); if (StringUtils.isNotBlank(text)) { JSONObject jsonObject = JSONObject.parseObject(text); generateCommonDoc(jsonObject); } System.out.println("Redis message receiver for generate common doc is end."); } public void generateCommonDoc(JSONObject jsonObject) { String userId = jsonObject.getString("userId"); String businessNo = jsonObject.getString("businessNo"); // ContractOrderEntity contractOrderEntity = contractOrderRepository.getContractOrderWithBizNo(businessNo); List models = modelRepository.getCommonModel(contractOrderEntity.getProdId(),contractOrderEntity.getContractType(), contractOrderEntity.getNotaryOfficeId()); // 在保存之前先删除数据 orderFileRepository.delFileWithBizNO(businessNo); for (ModelEntity m : models) { OrderFileEntity fileEntity = new OrderFileEntity(); fileEntity.setBusinessNo(businessNo); fileEntity.setCode(m.getCode()); fileEntity.setSortNum(m.getSort()); String html = modelSynthesizerDomain.composeCommonTemplateWithData(businessNo, m.getContent(),""); String htmlPath = FileUploadUtil.saveHtml(html, businessNo); String pdfPath = FileUploadUtil.savePdf(html, businessNo); fileEntity.setHtmlUrl(htmlPath); fileEntity.setPdfUrl(pdfPath); fileEntity.setCreateTime(new Date()); fileEntity.setCreatorId(Long.parseLong(userId)); fileEntity.setFileName(m.getTitle()); // orderFileMapper.insert(fileEntity); } } }