|
@@ -5,15 +5,18 @@ import com.flow.common.core.exception.BaseException;
|
|
|
import com.flow.common.mybatis.constant.SqlConstant;
|
|
|
import com.flow.common.mybatis.service.impl.BaseServiceImpl;
|
|
|
import com.flow.dao.FlowModelDao;
|
|
|
-import com.flow.entity.DatasetField;
|
|
|
-import com.flow.entity.FlowDefine;
|
|
|
-import com.flow.entity.FlowModel;
|
|
|
-import com.flow.entity.FormModel;
|
|
|
+import com.flow.entity.*;
|
|
|
import com.flow.entity.form.Field;
|
|
|
+import com.flow.entity.settings.PrintConfig;
|
|
|
+import com.flow.entity.settings.Settings;
|
|
|
+import com.flow.model.spreadsheet.SpreadSheet;
|
|
|
import com.flow.service.FlowDefineService;
|
|
|
import com.flow.service.FlowModelHistoryService;
|
|
|
import com.flow.service.FlowModelService;
|
|
|
+import com.flow.service.ReportTemplateService;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import org.apache.poi.ss.usermodel.Workbook;
|
|
|
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
|
|
import org.flowable.bpmn.converter.BpmnXMLConverter;
|
|
|
import org.flowable.bpmn.model.BpmnModel;
|
|
|
import org.flowable.engine.RepositoryService;
|
|
@@ -30,6 +33,7 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.BufferedInputStream;
|
|
|
import java.io.ByteArrayInputStream;
|
|
|
import java.io.IOException;
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -44,6 +48,8 @@ public class FlowModelServiceImpl extends BaseServiceImpl<FlowModelDao, FlowMode
|
|
|
private RepositoryService repositoryService;
|
|
|
@Autowired
|
|
|
private FlowDefineService flowDefineService;
|
|
|
+ @Autowired
|
|
|
+ private ReportTemplateService reportTemplateService;
|
|
|
|
|
|
@Override
|
|
|
public List<FlowModel> list(FlowModel flowModel) {
|
|
@@ -107,6 +113,11 @@ public class FlowModelServiceImpl extends BaseServiceImpl<FlowModelDao, FlowMode
|
|
|
public FlowModel create(FlowModel flowModel) {
|
|
|
flowModel.setCode(String.format("flow-%s", IdWorker.getIdStr()));
|
|
|
flowModelDao.insert(flowModel);
|
|
|
+ // 打印模板
|
|
|
+ ReportTemplate template = new ReportTemplate();
|
|
|
+ template.setBusinessId(flowModel.getId());
|
|
|
+ template.setCode(flowModel.getCode());
|
|
|
+ template.setName(flowModel.getName());
|
|
|
return flowModel;
|
|
|
}
|
|
|
|
|
@@ -185,18 +196,60 @@ public class FlowModelServiceImpl extends BaseServiceImpl<FlowModelDao, FlowMode
|
|
|
Map<String, Field> fieldMap = formModel.allFieldsAsMap();
|
|
|
List<DatasetField> list = fieldMap.values().stream().map(field -> new DatasetField(
|
|
|
field.getLabel(),
|
|
|
- field.getId()
|
|
|
+ String.format("${%s}", field.getId())
|
|
|
)).collect(Collectors.toList());
|
|
|
- list.add(new DatasetField("发起人", "_initiator_"));
|
|
|
- list.add(new DatasetField("编号", "_code_"));
|
|
|
- list.add(new DatasetField("标题", "_title_"));
|
|
|
- list.add(new DatasetField("状态", "_status_"));
|
|
|
- list.add(new DatasetField("发起时间", "_startTime_"));
|
|
|
- list.add(new DatasetField("结束时间", "_endTime_"));
|
|
|
- list.add(new DatasetField("打印时间", "_currentTime_"));
|
|
|
+ list.add(new DatasetField("发起人", "${_initiator_}"));
|
|
|
+ list.add(new DatasetField("编号", "${_code_}"));
|
|
|
+ list.add(new DatasetField("标题", "${_title_}"));
|
|
|
+ list.add(new DatasetField("状态", "${_status_}"));
|
|
|
+ list.add(new DatasetField("发起时间", "${_startTime_}"));
|
|
|
+ list.add(new DatasetField("结束时间", "${_endTime_}"));
|
|
|
+ list.add(new DatasetField("打印时间", "${_currentTime_}"));
|
|
|
DatasetField datasetField = new DatasetField();
|
|
|
+ datasetField.setField(String.format("${%s}", modelId));
|
|
|
datasetField.setLabel(flowModel.getName());
|
|
|
datasetField.setChildren(list);
|
|
|
return Lists.newArrayList(datasetField);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SpreadSheet savePrint(SpreadSheet spreadSheet, String modelId) {
|
|
|
+ FlowModel flowModel = flowModelDao.selectById(modelId);
|
|
|
+ if (Objects.isNull(flowModel)) {
|
|
|
+ throw new BaseException("流程模型不存在");
|
|
|
+ }
|
|
|
+ Settings settings = flowModel.getSettings();
|
|
|
+ PrintConfig printConfig = settings.getPrint();
|
|
|
+ printConfig.setTemplate(spreadSheet);
|
|
|
+ flowModel.setSettings(settings);
|
|
|
+ flowModelDao.updateById(flowModel);
|
|
|
+ return spreadSheet;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SpreadSheet getPrint(String modelId) {
|
|
|
+ FlowModel flowModel = flowModelDao.selectById(modelId);
|
|
|
+ Settings settings = flowModel.getSettings();
|
|
|
+ PrintConfig printConfig = settings.getPrint();
|
|
|
+ return printConfig.getTemplate();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void exportExcel(String modelId) throws UnsupportedEncodingException {
|
|
|
+ SpreadSheet spreadSheet = this.getPrint(modelId);
|
|
|
+ SXSSFWorkbook excel = spreadSheet.toExcel();
|
|
|
+ // 响应前端
|
|
|
+ HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
|
|
|
+ response.setContentType("application/vnd.ms-excel");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(spreadSheet.getName() + ".xlsx", "UTF-8"));
|
|
|
+ try {
|
|
|
+ ServletOutputStream outputStream = response.getOutputStream();
|
|
|
+ excel.write(outputStream);
|
|
|
+ outputStream.flush();
|
|
|
+ outputStream.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|