{
+ CREATED(0, "等待导出"),
+ EXPORTING(1, "正在导出"),
+ SUCCESS(2, "导出成功"),
+ FAIL(3, "导出失败");
+
+ @EnumValue
+ private final Integer code;
+
+ private final String desc;
+
+ ExportTaskStatus(Integer code, String desc) {
+
+ this.code = code;
+ this.desc = desc;
+ }
+
+ @Override
+ public Integer getCode() {
+
+ return this.code;
+ }
+
+ @Override
+ public String getDesc() {
+
+ return this.desc;
+ }
+}
diff --git a/xingyun-export/src/main/java/com/lframework/xingyun/export/events/ExportTaskNotifyEvent.java b/xingyun-export/src/main/java/com/lframework/xingyun/export/events/ExportTaskNotifyEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..e5303cee9001a84ffe0e50b00748af57f67a63f5
--- /dev/null
+++ b/xingyun-export/src/main/java/com/lframework/xingyun/export/events/ExportTaskNotifyEvent.java
@@ -0,0 +1,15 @@
+package com.lframework.xingyun.export.events;
+
+import lombok.Getter;
+import org.springframework.context.ApplicationEvent;
+
+public class ExportTaskNotifyEvent extends ApplicationEvent {
+
+ @Getter
+ private String createById;
+
+ public ExportTaskNotifyEvent(Object source, String createById) {
+ super(source);
+ this.createById = createById;
+ }
+}
diff --git a/xingyun-export/src/main/java/com/lframework/xingyun/export/handlers/ExportTaskHandler.java b/xingyun-export/src/main/java/com/lframework/xingyun/export/handlers/ExportTaskHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..d2484ca2e70b15f3515f91bacefaf3037e3b3a8e
--- /dev/null
+++ b/xingyun-export/src/main/java/com/lframework/xingyun/export/handlers/ExportTaskHandler.java
@@ -0,0 +1,144 @@
+package com.lframework.xingyun.export.handlers;
+
+import com.lframework.starter.common.exceptions.ClientException;
+import com.lframework.starter.common.exceptions.impl.DefaultClientException;
+import com.lframework.starter.common.utils.CollectionUtil;
+import com.lframework.starter.common.utils.FileUtil;
+import com.lframework.starter.common.utils.StringUtil;
+import com.lframework.starter.web.components.excel.ExcelModel;
+import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
+import com.lframework.starter.web.components.security.AbstractUserDetails;
+import com.lframework.starter.web.components.security.SecurityUtil;
+import com.lframework.starter.web.components.upload.client.dto.UploadDto;
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.ExcelUtil;
+import com.lframework.starter.web.utils.UploadUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.export.entity.ExportTask;
+import com.lframework.xingyun.export.service.ExportTaskService;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class ExportTaskHandler {
+
+ // 每页条数
+ private static final int PER_PAGE_SIZE = 10000;
+
+ // 上报处理条数的攒批数量
+ private static final int COUNT_BATCH_SIZE = 100;
+
+ private ExportTaskWorker
exportTaskWorker;
+
+ private long timeout;
+
+ private int curCount;
+
+ private String taskId;
+
+ public ExportTaskHandler(String taskId, ExportTaskWorker
exportTaskWorker,
+ long timeout) {
+ this.taskId = taskId;
+ this.exportTaskWorker = exportTaskWorker;
+ this.timeout = timeout;
+ }
+
+ public void execute(String json) {
+
+ ExportTaskService exportTaskService = ApplicationUtil.getBean(ExportTaskService.class);
+
+ ExportTask exportTask = exportTaskService.getById(taskId);
+
+ String tmpLocation = ApplicationUtil.getEnv().getProperty("spring.servlet.multipart.location");
+ tmpLocation = tmpLocation.endsWith(File.separator) ? tmpLocation : tmpLocation + File.separator;
+ try {
+ // 将导出任务状态置为正在导出
+ exportTaskService.setExporting(taskId);
+
+ P params = exportTaskWorker.parseParams(json);
+
+ long beginTs = System.currentTimeMillis();
+ int pageIndex = 1;
+ PageResult pageResult = exportTaskWorker.getDataList(pageIndex, PER_PAGE_SIZE, params);
+ this.checkCurrentUser();
+ long totalCount = pageResult.getTotalCount();
+ // 上报总数据条数
+ exportTaskService.setTotalCount(taskId, totalCount);
+
+ File xlsxFile = FileUtil.newFile(tmpLocation + taskId + ".xlsx");
+ ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXlsx(xlsxFile, "Sheet1",
+ exportTaskWorker.getModelClass());
+ try {
+ do {
+ long calcTs = System.currentTimeMillis() - beginTs;
+ if (calcTs > timeout * 1000L) {
+ throw new DefaultClientException(
+ "导出任务已执行" + (calcTs / 1000) + "秒,已超出最大执行时间" + timeout
+ + "秒,无法导出。");
+ }
+ List dataList = pageResult.getDatas();
+ List modelList = new ArrayList<>(dataList.size());
+ for (D data : dataList) {
+ M model = exportTaskWorker.exportData(data);
+ modelList.add(model);
+ // 上报处理条数
+ this.reportCurCount();
+ }
+
+ builder.doWrite(modelList);
+
+ pageResult = exportTaskWorker.getDataList(++pageIndex, PER_PAGE_SIZE, params);
+ this.checkCurrentUser();
+ } while (pageResult.isHasNext());
+ } finally {
+ builder.finish();
+ }
+
+ UploadDto uploadDto = UploadUtil.upload(xlsxFile,
+ CollectionUtil.toList("export-task", exportTask.getCreateById()), true);
+
+ // 将导出任务状态置为导出完成
+ exportTaskService.setSuccess(taskId, uploadDto.getUploadType(), uploadDto.getObjectName(),
+ FileUtil.readableFileSize(xlsxFile.length()));
+ } catch (ClientException e) {
+ this.handleError(e);
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ this.handleError(e);
+ }
+ }
+
+ protected void reportCurCount() {
+ this.curCount++;
+ if (this.curCount >= COUNT_BATCH_SIZE) {
+ ExportTaskService exportTaskService = ApplicationUtil.getBean(ExportTaskService.class);
+ exportTaskService.addCurCount(taskId, this.curCount);
+ this.curCount = 0;
+ }
+ }
+
+ /**
+ * 处理异常
+ *
+ * @param e
+ */
+ protected void handleError(Exception e) {
+ ExportTaskService exportTaskService = ApplicationUtil.getBean(ExportTaskService.class);
+ // 将导出任务状态置为失败
+ exportTaskService.setFail(taskId,
+ StringUtil.isBlank(e.getMessage()) ? e.toString() : e.getMessage());
+
+ exportTaskWorker.handleError(e);
+ }
+
+ protected void checkCurrentUser() {
+ // 必须一直检测session是否在线,否则可能会导致查出的数据超出了当前用户可访问的数据
+ AbstractUserDetails currentUser = SecurityUtil.getCurrentUser();
+ if (currentUser == null || SecurityUtil.getSessionByLoginId(currentUser.getLoginId()) == null) {
+ throw new DefaultClientException("导出用户已退出登录,无法导出");
+ }
+ }
+}
diff --git a/xingyun-export/src/main/java/com/lframework/xingyun/export/impl/ExportTaskServiceImpl.java b/xingyun-export/src/main/java/com/lframework/xingyun/export/impl/ExportTaskServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..390e33943d264a59f0a3948a9bcb83652e6e3c9a
--- /dev/null
+++ b/xingyun-export/src/main/java/com/lframework/xingyun/export/impl/ExportTaskServiceImpl.java
@@ -0,0 +1,133 @@
+package com.lframework.xingyun.export.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.lframework.starter.common.exceptions.impl.DefaultSysException;
+import com.lframework.starter.web.impl.BaseMpServiceImpl;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.xingyun.core.service.SecurityUploadRecordService;
+import com.lframework.xingyun.export.dto.ExportTaskSummaryDto;
+import com.lframework.xingyun.export.entity.ExportTask;
+import com.lframework.xingyun.export.enums.ExportTaskStatus;
+import com.lframework.xingyun.export.events.ExportTaskNotifyEvent;
+import com.lframework.xingyun.export.mappers.ExportTaskMapper;
+import com.lframework.xingyun.export.service.ExportTaskService;
+import java.time.LocalDateTime;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Slf4j
+@Service
+public class ExportTaskServiceImpl extends BaseMpServiceImpl
+ implements ExportTaskService {
+
+ @Autowired
+ private SecurityUploadRecordService securityUploadRecordService;
+
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public String create(ExportTask task) {
+ this.save(task);
+
+ ApplicationUtil.publishEvent(new ExportTaskNotifyEvent(this, task.getCreateById()));
+ return task.getId();
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void setExporting(String id) {
+
+ ExportTask task = this.getById(id);
+
+ Wrapper updateWrapper = Wrappers.lambdaUpdate(ExportTask.class)
+ .eq(ExportTask::getId, id)
+ .eq(ExportTask::getStatus, ExportTaskStatus.CREATED)
+ .set(ExportTask::getStatus, ExportTaskStatus.EXPORTING);
+
+ if (!this.update(updateWrapper)) {
+ log.error("导出任务 ID {} 设置为 正在导出 失败", id);
+ throw new DefaultSysException(
+ "导出任务设置为“" + ExportTaskStatus.EXPORTING.getDesc() + "”失败");
+ }
+
+ ApplicationUtil.publishEvent(new ExportTaskNotifyEvent(this, task.getCreateById()));
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void setSuccess(String id, String uploadType, String objectName, String fileSize) {
+
+ ExportTask task = this.getById(id);
+ String recordId = securityUploadRecordService.create(uploadType, objectName);
+
+ Wrapper updateWrapper = Wrappers.lambdaUpdate(ExportTask.class)
+ .eq(ExportTask::getId, id)
+ .in(ExportTask::getStatus, ExportTaskStatus.CREATED, ExportTaskStatus.EXPORTING)
+ .set(ExportTask::getRecordId, recordId)
+ .set(ExportTask::getStatus, ExportTaskStatus.SUCCESS)
+ .set(ExportTask::getFinishTime, LocalDateTime.now())
+ .set(ExportTask::getFileSize, fileSize)
+ .setSql("cur_count = total_count");
+ if (!this.update(updateWrapper)) {
+ log.error("导出任务 ID {} 设置为 导出成功 失败", id);
+ throw new DefaultSysException(
+ "导出任务设置为“" + ExportTaskStatus.SUCCESS.getDesc() + "”失败");
+ }
+ ApplicationUtil.publishEvent(new ExportTaskNotifyEvent(this, task.getCreateById()));
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void setFail(String id, String errorMsg) {
+ ExportTask task = this.getById(id);
+ Wrapper updateWrapper = Wrappers.lambdaUpdate(ExportTask.class)
+ .eq(ExportTask::getId, id)
+ .set(ExportTask::getStatus, ExportTaskStatus.FAIL)
+ .set(ExportTask::getErrorMsg, errorMsg)
+ .set(ExportTask::getFinishTime, LocalDateTime.now());
+ if (!this.update(updateWrapper)) {
+ log.error("导出任务 ID {} 设置为 导出失败 失败", id);
+ throw new DefaultSysException(
+ "导出任务设置为“" + ExportTaskStatus.FAIL.getDesc() + "”失败");
+ }
+ ApplicationUtil.publishEvent(new ExportTaskNotifyEvent(this, task.getCreateById()));
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void setTotalCount(String id, Long totalCount) {
+ Wrapper updateWrapper = Wrappers.lambdaUpdate(ExportTask.class)
+ .eq(ExportTask::getId, id)
+ .eq(ExportTask::getStatus, ExportTaskStatus.EXPORTING)
+ .set(ExportTask::getTotalCount, totalCount);
+
+ if (!this.update(updateWrapper)) {
+ log.error("导出任务 ID {} 设置 数据总条数 失败", id);
+ throw new DefaultSysException(
+ "导出任务设置数据总条数失败");
+ }
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void addCurCount(String id, int addCount) {
+ Wrapper updateWrapper = Wrappers.lambdaUpdate(ExportTask.class)
+ .eq(ExportTask::getId, id)
+ .eq(ExportTask::getStatus, ExportTaskStatus.EXPORTING)
+ .setSql("cur_count = cur_count + " + addCount);
+
+ if (!this.update(updateWrapper)) {
+ log.error("导出任务 ID {} 设置 当前导出条数 失败", id);
+ throw new DefaultSysException(
+ "导出任务设置当前导出条数失败");
+ }
+ }
+
+ @Override
+ public ExportTaskSummaryDto getSummaryByUserId(String userId) {
+ return getBaseMapper().getSummaryByUserId(userId);
+ }
+}
diff --git a/xingyun-export/src/main/java/com/lframework/xingyun/export/listeners/app/ExportTaskNotifyListener.java b/xingyun-export/src/main/java/com/lframework/xingyun/export/listeners/app/ExportTaskNotifyListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..8cb72f6b8d5cbbf128a72e76902dc0991c129034
--- /dev/null
+++ b/xingyun-export/src/main/java/com/lframework/xingyun/export/listeners/app/ExportTaskNotifyListener.java
@@ -0,0 +1,41 @@
+package com.lframework.xingyun.export.listeners.app;
+
+import com.lframework.starter.web.dto.WsPushData;
+import com.lframework.starter.websocket.components.WsDataPusher;
+import com.lframework.starter.websocket.events.UserConnectEvent;
+import com.lframework.xingyun.export.events.ExportTaskNotifyEvent;
+import com.lframework.xingyun.export.service.ExportTaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.event.TransactionalEventListener;
+
+@Component
+public class ExportTaskNotifyListener implements ApplicationListener {
+
+ @Autowired
+ private WsDataPusher wsDataPusher;
+
+ @Autowired
+ private ExportTaskService exportTaskService;
+
+ @TransactionalEventListener
+ public void execute(ExportTaskNotifyEvent event) {
+ this.notify(event.getCreateById());
+ }
+
+ @Override
+ public void onApplicationEvent(UserConnectEvent event) {
+ this.notify(event.getUser().getId());
+ }
+
+ private void notify(String userId) {
+ // 发送广播
+ WsPushData pushData = new WsPushData();
+ pushData.setBizType("exportTask");
+ pushData.setDataObj(exportTaskService.getSummaryByUserId(userId));
+ pushData.setIncludeUserId(userId);
+
+ wsDataPusher.push(pushData);
+ }
+}
diff --git a/xingyun-export/src/main/java/com/lframework/xingyun/export/listeners/mq/ExportTaskListener.java b/xingyun-export/src/main/java/com/lframework/xingyun/export/listeners/mq/ExportTaskListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..dad03f2f2f1859532c7c7b060503f6fd733f4317
--- /dev/null
+++ b/xingyun-export/src/main/java/com/lframework/xingyun/export/listeners/mq/ExportTaskListener.java
@@ -0,0 +1,127 @@
+package com.lframework.xingyun.export.listeners.mq;
+
+import cn.hutool.crypto.SecureUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.lframework.starter.common.exceptions.ClientException;
+import com.lframework.starter.common.exceptions.impl.DefaultClientException;
+import com.lframework.starter.common.utils.ReflectUtil;
+import com.lframework.starter.common.utils.StringUtil;
+import com.lframework.starter.mq.core.producer.MqProducer;
+import com.lframework.starter.web.components.security.AbstractUserDetails;
+import com.lframework.starter.web.components.security.SecurityUtil;
+import com.lframework.starter.web.service.SysConfService;
+import com.lframework.starter.web.utils.IdUtil;
+import com.lframework.xingyun.core.dto.export.AddExportTaskDto;
+import com.lframework.xingyun.core.queue.MqConstants;
+import com.lframework.xingyun.core.queue.MqStringPool;
+import com.lframework.xingyun.export.dto.ExecuteExportTaskDto;
+import com.lframework.xingyun.export.entity.ExportTask;
+import com.lframework.xingyun.export.enums.ExportTaskStatus;
+import com.lframework.xingyun.export.handlers.ExportTaskHandler;
+import com.lframework.xingyun.export.service.ExportTaskService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.annotation.Exchange;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.QueueBinding;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.messaging.Message;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component("exportTaskListener")
+public class ExportTaskListener {
+
+ @Autowired
+ private ExportTaskService exportTaskService;
+
+ @Autowired
+ private MqProducer mqProducer;
+
+ @Autowired
+ private SysConfService sysConfService;
+
+
+ @RabbitListener(bindings = {
+ @QueueBinding(value = @Queue(value = MqStringPool.ADD_EXPORT_TASK_QUEUE), key = MqStringPool.ADD_EXPORT_TASK_ROUTING_KEY, exchange = @Exchange(value = MqStringPool.ADD_EXPORT_TASK_EXCHANGE))}, concurrency = "2")
+ public void addExportTask(Message message) {
+
+ AddExportTaskDto dto = message.getPayload();
+
+ log.info("接收到新增导出任务MQ message = {}", dto);
+
+ AbstractUserDetails currentUser = SecurityUtil.getUserByToken(dto.getToken());
+ if (currentUser == null) {
+ log.info("导出用户已退出登录,无法导出");
+ return;
+ }
+
+ try {
+ SecurityUtil.setCurrentUser(currentUser);
+
+ // 新增导出任务
+ ExportTask task = new ExportTask();
+ task.setId(IdUtil.getId());
+ task.setName(dto.getName());
+ task.setStatus(ExportTaskStatus.CREATED);
+ task.setReqClassName(dto.getReqClassName());
+ task.setReqParams(dto.getReqParams());
+
+ task.setReqParamsSign(SecureUtil.md5(dto.getReqClassName() + ":" + dto.getReqParams()));
+
+ exportTaskService.create(task);
+
+ ExecuteExportTaskDto taskDto = new ExecuteExportTaskDto();
+ taskDto.setTaskId(task.getId());
+ taskDto.setToken(dto.getToken());
+
+ mqProducer.sendMessage(MqConstants.EXECUTE_EXPORT_TASK, taskDto);
+
+ } finally {
+ SecurityUtil.removeCurrentUser();
+ }
+ }
+
+ @RabbitListener(bindings = {
+ @QueueBinding(value = @Queue(value = MqStringPool.EXECUTE_EXPORT_TASK_QUEUE), key = MqStringPool.EXECUTE_EXPORT_TASK_ROUTING_KEY, exchange = @Exchange(value = MqStringPool.EXECUTE_EXPORT_TASK_EXCHANGE))})
+ public void executeExportTask(Message message) {
+
+ ExecuteExportTaskDto dto = message.getPayload();
+
+ log.info("接收到执行导出任务MQ message = {}", dto);
+
+ ExportTask task = exportTaskService.getById(dto.getTaskId());
+ AbstractUserDetails currentUser = SecurityUtil.getUserByToken(dto.getToken());
+
+ try {
+ if (currentUser == null) {
+ throw new DefaultClientException("导出用户已退出登录,无法导出");
+ }
+
+ SecurityUtil.setCurrentUser(currentUser);
+
+ Wrapper checkWrapper = Wrappers.lambdaQuery(ExportTask.class)
+ .eq(ExportTask::getReqParamsSign, task.getReqParamsSign())
+ .in(ExportTask::getStatus, ExportTaskStatus.CREATED, ExportTaskStatus.EXPORTING)
+ .ne(ExportTask::getId, task.getId());
+ if (exportTaskService.count(checkWrapper) > 0) {
+ throw new DefaultClientException("导出任务重复,请勿重新导出。");
+ }
+
+ ExportTaskHandler exportTaskHandler = new ExportTaskHandler(task.getId(),
+ ReflectUtil.newInstance(task.getReqClassName()),
+ sysConfService.getLong("export.timeout", 600L));
+ exportTaskHandler.execute(task.getReqParams());
+ } catch (ClientException e) {
+ exportTaskService.setFail(task.getId(),
+ StringUtil.isBlank(e.getMessage()) ? e.toString() : e.getMessage());
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ exportTaskService.setFail(task.getId(),
+ StringUtil.isBlank(e.getMessage()) ? e.toString() : e.getMessage());
+ } finally {
+ SecurityUtil.removeCurrentUser();
+ }
+ }
+}
diff --git a/xingyun-export/src/main/java/com/lframework/xingyun/export/mappers/ExportTaskMapper.java b/xingyun-export/src/main/java/com/lframework/xingyun/export/mappers/ExportTaskMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..81d7e0c0dfae4b401cccd38df35500ce8895648f
--- /dev/null
+++ b/xingyun-export/src/main/java/com/lframework/xingyun/export/mappers/ExportTaskMapper.java
@@ -0,0 +1,24 @@
+package com.lframework.xingyun.export.mappers;
+
+import com.lframework.starter.web.mapper.BaseMapper;
+import com.lframework.xingyun.export.dto.ExportTaskSummaryDto;
+import com.lframework.xingyun.export.entity.ExportTask;
+
+/**
+ *
+ * ExportTaskMapper 接口
+ *
+ *
+ * @author zmj
+ * @since 2025-04-10
+ */
+public interface ExportTaskMapper extends BaseMapper {
+
+ /**
+ * 根据用户ID统计导出任务
+ *
+ * @param userId
+ * @return
+ */
+ ExportTaskSummaryDto getSummaryByUserId(String userId);
+}
diff --git a/xingyun-export/src/main/java/com/lframework/xingyun/export/service/ExportTaskService.java b/xingyun-export/src/main/java/com/lframework/xingyun/export/service/ExportTaskService.java
new file mode 100644
index 0000000000000000000000000000000000000000..488ccfef18d53b6c9217f26d76ffbf3ea6da7300
--- /dev/null
+++ b/xingyun-export/src/main/java/com/lframework/xingyun/export/service/ExportTaskService.java
@@ -0,0 +1,68 @@
+package com.lframework.xingyun.export.service;
+
+import com.lframework.starter.web.service.BaseMpService;
+import com.lframework.xingyun.export.dto.ExportTaskSummaryDto;
+import com.lframework.xingyun.export.entity.ExportTask;
+
+/**
+ * 导出任务 Service
+ *
+ * @author zmj
+ */
+public interface ExportTaskService extends BaseMpService {
+
+ /**
+ * 新增
+ *
+ * @param task
+ * @return
+ */
+ String create(ExportTask task);
+
+ /**
+ * 设置为正在导出
+ *
+ * @param id
+ */
+ void setExporting(String id);
+
+ /**
+ * 设置为成功
+ *
+ * @param id
+ * @param uploadType
+ */
+ void setSuccess(String id, String uploadType, String objectName, String fileSize);
+
+ /**
+ * 设置为失败
+ *
+ * @param id
+ * @param errorMsg
+ */
+ void setFail(String id, String errorMsg);
+
+ /**
+ * 设置数据总条数
+ *
+ * @param id
+ * @param totalCount
+ */
+ void setTotalCount(String id, Long totalCount);
+
+ /**
+ * 增加当前导出条数
+ *
+ * @param id
+ * @param addCount
+ */
+ void addCurCount(String id, int addCount);
+
+ /**
+ * 根据用户ID统计导出任务
+ *
+ * @param userId
+ * @return
+ */
+ ExportTaskSummaryDto getSummaryByUserId(String userId);
+}
diff --git a/xingyun-export/src/main/java/com/lframework/xingyun/export/vo/QueryFailExportTaskVo.java b/xingyun-export/src/main/java/com/lframework/xingyun/export/vo/QueryFailExportTaskVo.java
new file mode 100644
index 0000000000000000000000000000000000000000..d90283edda056cdfd276cad63182e0c1a0d60060
--- /dev/null
+++ b/xingyun-export/src/main/java/com/lframework/xingyun/export/vo/QueryFailExportTaskVo.java
@@ -0,0 +1,15 @@
+package com.lframework.xingyun.export.vo;
+
+import com.lframework.starter.web.vo.PageVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class QueryFailExportTaskVo extends PageVo {
+
+ /**
+ * 名称
+ */
+ @ApiModelProperty("名称")
+ private String name;
+}
diff --git a/xingyun-export/src/main/java/com/lframework/xingyun/export/vo/QuerySuccessExportTaskVo.java b/xingyun-export/src/main/java/com/lframework/xingyun/export/vo/QuerySuccessExportTaskVo.java
new file mode 100644
index 0000000000000000000000000000000000000000..b065f0d2dfcb91391a936e02c75eaa54ad8e3138
--- /dev/null
+++ b/xingyun-export/src/main/java/com/lframework/xingyun/export/vo/QuerySuccessExportTaskVo.java
@@ -0,0 +1,15 @@
+package com.lframework.xingyun.export.vo;
+
+import com.lframework.starter.web.vo.PageVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class QuerySuccessExportTaskVo extends PageVo {
+
+ /**
+ * 名称
+ */
+ @ApiModelProperty("名称")
+ private String name;
+}
diff --git a/xingyun-export/src/main/java/lombok.config b/xingyun-export/src/main/java/lombok.config
new file mode 100644
index 0000000000000000000000000000000000000000..8e37527a927dbd888d6f94d30ffd32395bb97676
--- /dev/null
+++ b/xingyun-export/src/main/java/lombok.config
@@ -0,0 +1,2 @@
+config.stopBubbling=true
+lombok.equalsAndHashCode.callSuper=call
\ No newline at end of file
diff --git a/xingyun-export/src/main/resources/mappers/ExportTaskMapper.xml b/xingyun-export/src/main/resources/mappers/ExportTaskMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4ff3a84d8dcbd395db99fe7b7dc83b11d26dbba5
--- /dev/null
+++ b/xingyun-export/src/main/resources/mappers/ExportTaskMapper.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/logistics/LogisticsSheetController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/logistics/LogisticsSheetController.java
index ed838fe98235bf33fafd32ba8ad2c5d57a70275f..4d3702875feed9e96823487118d9436205d62201 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/logistics/LogisticsSheetController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/logistics/LogisticsSheetController.java
@@ -4,7 +4,6 @@ import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.common.utils.NumberUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
@@ -12,6 +11,7 @@ import com.lframework.starter.web.resp.PageResult;
import com.lframework.starter.web.utils.EnumUtil;
import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.logistics.GetLogisticsSheetBo;
import com.lframework.xingyun.sc.bo.logistics.GetLogisticsSheetDeliveryBo;
import com.lframework.xingyun.sc.bo.logistics.QueryLogisticsSheetBizOrderBo;
@@ -22,7 +22,7 @@ import com.lframework.xingyun.sc.entity.LogisticsSheet;
import com.lframework.xingyun.sc.enums.LogisticsSheetDetailBizType;
import com.lframework.xingyun.sc.excel.logistics.LogisticsSheetDeliveryImportListener;
import com.lframework.xingyun.sc.excel.logistics.LogisticsSheetDeliveryImportModel;
-import com.lframework.xingyun.sc.excel.logistics.LogisticsSheetExportModel;
+import com.lframework.xingyun.sc.excel.logistics.LogisticsSheetExportTaskWorker;
import com.lframework.xingyun.sc.excel.logistics.LogisticsSheetImportListener;
import com.lframework.xingyun.sc.excel.logistics.LogisticsSheetImportModel;
import com.lframework.xingyun.sc.service.logistics.LogisticsSheetService;
@@ -38,14 +38,12 @@ import com.lframework.xingyun.sc.vo.logistics.UpdateLogisticsSheetVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@@ -291,29 +289,11 @@ public class LogisticsSheetController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"logistics:sheet:export"})
@PostMapping("/export")
- public void export(@Valid QueryLogisticsSheetVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("物流单信息",
- LogisticsSheetExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = logisticsSheetService.query(pageIndex,
- getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(LogisticsSheetExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryLogisticsSheetVo vo) {
+
+ ExportTaskUtil.exportTask("物流单信息", LogisticsSheetExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
@ApiOperation("下载导入模板")
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/PurchaseOrderController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/PurchaseOrderController.java
index 3e8128faefbc8c484f16960ee970a56eceb7709b..7e6b1684bb2ccc19c6120b1a12c7b351f6c2acfc 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/PurchaseOrderController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/PurchaseOrderController.java
@@ -4,7 +4,6 @@ import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.common.utils.StringUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
@@ -12,6 +11,7 @@ import com.lframework.starter.web.resp.PageResult;
import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
import com.lframework.xingyun.core.bo.print.A4ExcelPortraitPrintBo;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.purchase.GetPurchaseOrderBo;
import com.lframework.xingyun.sc.bo.purchase.PrintPurchaseOrderBo;
import com.lframework.xingyun.sc.bo.purchase.PurchaseOrderWithReceiveBo;
@@ -22,7 +22,7 @@ import com.lframework.xingyun.sc.dto.purchase.PurchaseOrderFullDto;
import com.lframework.xingyun.sc.dto.purchase.PurchaseOrderWithReceiveDto;
import com.lframework.xingyun.sc.dto.purchase.PurchaseProductDto;
import com.lframework.xingyun.sc.entity.PurchaseOrder;
-import com.lframework.xingyun.sc.excel.purchase.PurchaseOrderExportModel;
+import com.lframework.xingyun.sc.excel.purchase.PurchaseOrderExportTaskWorker;
import com.lframework.xingyun.sc.excel.purchase.PurchaseOrderImportListener;
import com.lframework.xingyun.sc.excel.purchase.PurchaseOrderImportModel;
import com.lframework.xingyun.sc.excel.purchase.PurchaseOrderPayTypeImportListener;
@@ -121,29 +121,11 @@ public class PurchaseOrderController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"purchase:order:export"})
@PostMapping("/export")
- public void export(@Valid QueryPurchaseOrderVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("采购单信息",
- PurchaseOrderExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = purchaseOrderService.query(pageIndex,
- getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(PurchaseOrderExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryPurchaseOrderVo vo) {
+
+ ExportTaskUtil.exportTask("采购单信息", PurchaseOrderExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/PurchaseReturnController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/PurchaseReturnController.java
index 0473b408331be2215c5475c4e47d55c31733d9b4..941f4ab9c0c942ae5c5a815d0aed5b23b33239d3 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/PurchaseReturnController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/PurchaseReturnController.java
@@ -2,20 +2,19 @@ package com.lframework.xingyun.sc.controller.purchase;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
import com.lframework.xingyun.core.bo.print.A4ExcelPortraitPrintBo;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.purchase.returned.GetPurchaseReturnBo;
import com.lframework.xingyun.sc.bo.purchase.returned.PrintPurchaseReturnBo;
import com.lframework.xingyun.sc.bo.purchase.returned.QueryPurchaseReturnBo;
import com.lframework.xingyun.sc.dto.purchase.returned.PurchaseReturnFullDto;
import com.lframework.xingyun.sc.entity.PurchaseReturn;
-import com.lframework.xingyun.sc.excel.purchase.returned.PurchaseReturnExportModel;
+import com.lframework.xingyun.sc.excel.purchase.returned.PurchaseReturnExportTaskWorker;
import com.lframework.xingyun.sc.service.purchase.PurchaseReturnService;
import com.lframework.xingyun.sc.vo.purchase.returned.ApprovePassPurchaseReturnVo;
import com.lframework.xingyun.sc.vo.purchase.returned.ApproveRefusePurchaseReturnVo;
@@ -101,29 +100,11 @@ public class PurchaseReturnController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"purchase:return:export"})
@PostMapping("/export")
- public void export(@Valid QueryPurchaseReturnVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("采购退货单信息",
- PurchaseReturnExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = purchaseReturnService.query(pageIndex,
- getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(PurchaseReturnExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryPurchaseReturnVo vo) {
+
+ ExportTaskUtil.exportTask("采购退货单信息", PurchaseReturnExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
@@ -133,7 +114,8 @@ public class PurchaseReturnController extends DefaultBaseController {
@ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true)
@HasPermission({"purchase:return:query"})
@GetMapping
- public InvokeResult findById(@NotBlank(message = "退单ID不能为空!") String id) {
+ public InvokeResult findById(
+ @NotBlank(message = "退单ID不能为空!") String id) {
PurchaseReturnFullDto data = purchaseReturnService.getDetail(id);
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/ReceiveSheetController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/ReceiveSheetController.java
index 7069c58cc3c93fe8c166ecf8df3f8879eb0d401d..d10fa631177357750f7a9e209b012e03daa6ddea 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/ReceiveSheetController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/purchase/ReceiveSheetController.java
@@ -3,7 +3,6 @@ package com.lframework.xingyun.sc.controller.purchase;
import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
@@ -11,6 +10,7 @@ import com.lframework.starter.web.resp.PageResult;
import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
import com.lframework.xingyun.core.bo.print.A4ExcelPortraitPrintBo;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.purchase.receive.GetPaymentDateBo;
import com.lframework.xingyun.sc.bo.purchase.receive.GetReceiveSheetBo;
import com.lframework.xingyun.sc.bo.purchase.receive.PrintReceiveSheetBo;
@@ -22,7 +22,7 @@ import com.lframework.xingyun.sc.dto.purchase.receive.ReceiveSheetFullDto;
import com.lframework.xingyun.sc.dto.purchase.receive.ReceiveSheetWithReturnDto;
import com.lframework.xingyun.sc.entity.PurchaseConfig;
import com.lframework.xingyun.sc.entity.ReceiveSheet;
-import com.lframework.xingyun.sc.excel.purchase.receive.ReceiveSheetExportModel;
+import com.lframework.xingyun.sc.excel.purchase.receive.ReceiveSheetExportTaskWorker;
import com.lframework.xingyun.sc.excel.purchase.receive.ReceiveSheetImportListener;
import com.lframework.xingyun.sc.excel.purchase.receive.ReceiveSheetImportModel;
import com.lframework.xingyun.sc.excel.purchase.receive.ReceiveSheetPayTypeImportListener;
@@ -119,29 +119,11 @@ public class ReceiveSheetController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"purchase:receive:export"})
@PostMapping("/export")
- public void export(@Valid QueryReceiveSheetVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("采购收货单信息",
- ReceiveSheetExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = receiveSheetService.query(pageIndex, getExportSize(),
- vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(ReceiveSheetExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryReceiveSheetVo vo) {
+
+ ExportTaskUtil.exportTask("采购收货单信息", ReceiveSheetExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/retail/RetailOutSheetController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/retail/RetailOutSheetController.java
index 8e5236b885181aba969a9f01f6aace7a61ad5117..0f151eb3fa425603e28cd6ed82b6ed032d424ffe 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/retail/RetailOutSheetController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/retail/RetailOutSheetController.java
@@ -4,14 +4,13 @@ import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.common.utils.StringUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
import com.lframework.xingyun.core.bo.print.A4ExcelPortraitPrintBo;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.purchase.receive.GetPaymentDateBo;
import com.lframework.xingyun.sc.bo.retail.RetailProductBo;
import com.lframework.xingyun.sc.bo.retail.out.GetRetailOutSheetBo;
@@ -24,7 +23,7 @@ import com.lframework.xingyun.sc.dto.retail.RetailProductDto;
import com.lframework.xingyun.sc.dto.retail.out.RetailOutSheetFullDto;
import com.lframework.xingyun.sc.dto.retail.out.RetailOutSheetWithReturnDto;
import com.lframework.xingyun.sc.entity.RetailOutSheet;
-import com.lframework.xingyun.sc.excel.retail.out.RetailOutSheetExportModel;
+import com.lframework.xingyun.sc.excel.retail.out.RetailOutSheetExportTaskWorker;
import com.lframework.xingyun.sc.service.retail.RetailOutSheetService;
import com.lframework.xingyun.sc.vo.retail.out.ApprovePassRetailOutSheetVo;
import com.lframework.xingyun.sc.vo.retail.out.ApproveRefuseRetailOutSheetVo;
@@ -116,29 +115,11 @@ public class RetailOutSheetController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"retail:out:export"})
@PostMapping("/export")
- public void export(@Valid QueryRetailOutSheetVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("零售出库单信息",
- RetailOutSheetExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = retailOutSheetService.query(pageIndex,
- getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(RetailOutSheetExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryRetailOutSheetVo vo) {
+
+ ExportTaskUtil.exportTask("零售出库单信息", RetailOutSheetExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/retail/RetailReturnController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/retail/RetailReturnController.java
index 132aac1ec08ccf50a3f3932efd7682175f4e29e1..ddd6d01e85f2776f21af632b0710a438d93f6589 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/retail/RetailReturnController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/retail/RetailReturnController.java
@@ -3,20 +3,19 @@ package com.lframework.xingyun.sc.controller.retail;
import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
import com.lframework.xingyun.core.bo.print.A4ExcelPortraitPrintBo;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.retail.returned.GetRetailReturnBo;
import com.lframework.xingyun.sc.bo.retail.returned.PrintRetailReturnBo;
import com.lframework.xingyun.sc.bo.retail.returned.QueryRetailReturnBo;
import com.lframework.xingyun.sc.dto.retail.returned.RetailReturnFullDto;
import com.lframework.xingyun.sc.entity.RetailReturn;
-import com.lframework.xingyun.sc.excel.retail.returned.RetailReturnExportModel;
+import com.lframework.xingyun.sc.excel.retail.returned.RetailReturnExportTaskWorker;
import com.lframework.xingyun.sc.service.retail.RetailReturnService;
import com.lframework.xingyun.sc.vo.retail.returned.ApprovePassRetailReturnVo;
import com.lframework.xingyun.sc.vo.retail.returned.ApproveRefuseRetailReturnVo;
@@ -105,29 +104,10 @@ public class RetailReturnController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"retail:return:export"})
@PostMapping("/export")
- public void export(@Valid QueryRetailReturnVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("零售退货单信息",
- RetailReturnExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = retailReturnService.query(pageIndex, getExportSize(),
- vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(RetailReturnExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryRetailReturnVo vo) {
+ ExportTaskUtil.exportTask("零售退货单信息", RetailReturnExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleOrderController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleOrderController.java
index 412ffe2bfd4d9b0df90f7ba03ab4968db83c3605..d8c7c190e0e9801d6e559f78d091b6a48eb1b4cb 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleOrderController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleOrderController.java
@@ -4,14 +4,13 @@ import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.common.utils.StringUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
import com.lframework.xingyun.core.bo.print.A4ExcelPortraitPrintBo;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.sale.GetSaleOrderBo;
import com.lframework.xingyun.sc.bo.sale.PrintSaleOrderBo;
import com.lframework.xingyun.sc.bo.sale.QuerySaleOrderBo;
@@ -22,7 +21,7 @@ import com.lframework.xingyun.sc.dto.sale.SaleOrderFullDto;
import com.lframework.xingyun.sc.dto.sale.SaleOrderWithOutDto;
import com.lframework.xingyun.sc.dto.sale.SaleProductDto;
import com.lframework.xingyun.sc.entity.SaleOrder;
-import com.lframework.xingyun.sc.excel.sale.SaleOrderExportModel;
+import com.lframework.xingyun.sc.excel.sale.SaleOrderExportTaskWorker;
import com.lframework.xingyun.sc.service.sale.SaleOrderService;
import com.lframework.xingyun.sc.vo.sale.ApprovePassSaleOrderVo;
import com.lframework.xingyun.sc.vo.sale.ApproveRefuseSaleOrderVo;
@@ -115,28 +114,11 @@ public class SaleOrderController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"sale:order:export"})
@PostMapping("/export")
- public void export(@Valid QuerySaleOrderVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("销售单信息",
- SaleOrderExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = saleOrderService.query(pageIndex, getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(SaleOrderExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QuerySaleOrderVo vo) {
+
+ ExportTaskUtil.exportTask("销售单信息", SaleOrderExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleOutSheetController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleOutSheetController.java
index 05561d44c308fec3fd9dc2c51e6a7342d49e1241..829f81663cd4168534bb05dc57411bb76f2a1c83 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleOutSheetController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleOutSheetController.java
@@ -3,14 +3,13 @@ package com.lframework.xingyun.sc.controller.sale;
import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
import com.lframework.xingyun.core.bo.print.A4ExcelPortraitPrintBo;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.purchase.receive.GetPaymentDateBo;
import com.lframework.xingyun.sc.bo.sale.out.GetSaleOutSheetBo;
import com.lframework.xingyun.sc.bo.sale.out.PrintSaleOutSheetBo;
@@ -21,7 +20,7 @@ import com.lframework.xingyun.sc.dto.purchase.receive.GetPaymentDateDto;
import com.lframework.xingyun.sc.dto.sale.out.SaleOutSheetFullDto;
import com.lframework.xingyun.sc.dto.sale.out.SaleOutSheetWithReturnDto;
import com.lframework.xingyun.sc.entity.SaleOutSheet;
-import com.lframework.xingyun.sc.excel.sale.out.SaleOutSheetExportModel;
+import com.lframework.xingyun.sc.excel.sale.out.SaleOutSheetExportTaskWorker;
import com.lframework.xingyun.sc.service.sale.SaleOutSheetService;
import com.lframework.xingyun.sc.vo.sale.out.ApprovePassSaleOutSheetVo;
import com.lframework.xingyun.sc.vo.sale.out.ApproveRefuseSaleOutSheetVo;
@@ -111,29 +110,11 @@ public class SaleOutSheetController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"sale:out:export"})
@PostMapping("/export")
- public void export(@Valid QuerySaleOutSheetVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("销售出库单信息",
- SaleOutSheetExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = saleOutSheetService.query(pageIndex, getExportSize(),
- vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(SaleOutSheetExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QuerySaleOutSheetVo vo) {
+
+ ExportTaskUtil.exportTask("销售出库单信息", SaleOutSheetExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleReturnController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleReturnController.java
index bae878739ed36dc19ed6df13450df5e5ac869030..9fc53e4c98ea7c150455e16ba0d827dfb3160191 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleReturnController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/sale/SaleReturnController.java
@@ -3,20 +3,19 @@ package com.lframework.xingyun.sc.controller.sale;
import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
import com.lframework.xingyun.core.bo.print.A4ExcelPortraitPrintBo;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.sale.returned.GetSaleReturnBo;
import com.lframework.xingyun.sc.bo.sale.returned.PrintSaleReturnBo;
import com.lframework.xingyun.sc.bo.sale.returned.QuerySaleReturnBo;
import com.lframework.xingyun.sc.dto.sale.returned.SaleReturnFullDto;
import com.lframework.xingyun.sc.entity.SaleReturn;
-import com.lframework.xingyun.sc.excel.sale.returned.SaleReturnExportModel;
+import com.lframework.xingyun.sc.excel.sale.returned.SaleReturnExportTaskWorker;
import com.lframework.xingyun.sc.service.sale.SaleReturnService;
import com.lframework.xingyun.sc.vo.sale.returned.ApprovePassSaleReturnVo;
import com.lframework.xingyun.sc.vo.sale.returned.ApproveRefuseSaleReturnVo;
@@ -106,28 +105,11 @@ public class SaleReturnController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"sale:return:export"})
@PostMapping("/export")
- public void export(@Valid QuerySaleReturnVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("销售退货单信息",
- SaleReturnExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = saleReturnService.query(pageIndex, getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(SaleReturnExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QuerySaleReturnVo vo) {
+
+ ExportTaskUtil.exportTask("销售退货单信息", SaleReturnExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/ProductStockController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/ProductStockController.java
index 0567cebf9f9626e9dc6224545d0ffd42f85ac024..2cfe076007224d82440c095e2e7362a326aaa055 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/ProductStockController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/ProductStockController.java
@@ -2,16 +2,15 @@ package com.lframework.xingyun.sc.controller.stock;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.stock.product.QueryProductStockBo;
import com.lframework.xingyun.sc.entity.ProductStock;
-import com.lframework.xingyun.sc.excel.stock.ProductStockExportModel;
+import com.lframework.xingyun.sc.excel.stock.ProductStockExportTaskWorker;
import com.lframework.xingyun.sc.service.stock.ProductStockService;
import com.lframework.xingyun.sc.vo.stock.QueryProductStockVo;
import io.swagger.annotations.Api;
@@ -65,28 +64,10 @@ public class ProductStockController extends DefaultBaseController {
@ApiOperation("导出商品库存")
@HasPermission({"stock:product:export"})
@GetMapping("/export")
- public void export(@Valid QueryProductStockVo vo) {
+ public InvokeResult export(@Valid QueryProductStockVo vo) {
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("商品库存信息",
- ProductStockExportModel.class);
+ ExportTaskUtil.exportTask("商品库存信息", ProductStockExportTaskWorker.class, vo);
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = productStockService.query(pageIndex, getExportSize(),
- vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(ProductStockExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ return InvokeResultBuilder.success();
}
}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/ProductStockLogController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/ProductStockLogController.java
index 68e25fd1cb11711a923bd7e41183b0d2fba8f51d..a045eea5b9587a705f2b976ea36db565c3ade714 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/ProductStockLogController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/ProductStockLogController.java
@@ -2,16 +2,15 @@ package com.lframework.xingyun.sc.controller.stock;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.stock.product.log.QueryProductStockLogBo;
import com.lframework.xingyun.sc.entity.ProductStockLog;
-import com.lframework.xingyun.sc.excel.stock.ProductStockLogExportModel;
+import com.lframework.xingyun.sc.excel.stock.ProductStockLogExportTaskWorker;
import com.lframework.xingyun.sc.service.stock.ProductStockLogService;
import com.lframework.xingyun.sc.vo.stock.log.QueryProductStockLogVo;
import io.swagger.annotations.Api;
@@ -65,29 +64,10 @@ public class ProductStockLogController extends DefaultBaseController {
@ApiOperation("导出商品库存变动记录")
@HasPermission({"stock:product-log:export"})
@GetMapping("/export")
- public void export(@Valid QueryProductStockLogVo vo) {
+ public InvokeResult export(@Valid QueryProductStockLogVo vo) {
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("商品库存变动记录信息",
- ProductStockLogExportModel.class);
+ ExportTaskUtil.exportTask("商品库存变动记录信息", ProductStockLogExportTaskWorker.class, vo);
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = productStockLogService.query(pageIndex,
- getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream()
- .map(ProductStockLogExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ return InvokeResultBuilder.success();
}
}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/adjust/StockAdjustSheetController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/adjust/StockAdjustSheetController.java
index 41810f37dd27b0c51f484f260202ea269d14e07d..14aba4c44b4991eef2dadbecdd448bd8499bf73a 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/adjust/StockAdjustSheetController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/adjust/StockAdjustSheetController.java
@@ -4,20 +4,19 @@ import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.common.utils.StringUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.stock.adjust.stock.QueryStockAdjustSheetBo;
import com.lframework.xingyun.sc.bo.stock.adjust.stock.StockAdjustProductBo;
import com.lframework.xingyun.sc.bo.stock.adjust.stock.StockAdjustSheetFullBo;
import com.lframework.xingyun.sc.dto.stock.adjust.stock.StockAdjustProductDto;
import com.lframework.xingyun.sc.dto.stock.adjust.stock.StockAdjustSheetFullDto;
import com.lframework.xingyun.sc.entity.StockAdjustSheet;
-import com.lframework.xingyun.sc.excel.stock.adjust.StockAdjustSheetExportModel;
+import com.lframework.xingyun.sc.excel.stock.adjust.StockAdjustSheetExportTaskWorker;
import com.lframework.xingyun.sc.service.stock.adjust.StockAdjustSheetService;
import com.lframework.xingyun.sc.vo.stock.adjust.stock.ApprovePassStockAdjustSheetVo;
import com.lframework.xingyun.sc.vo.stock.adjust.stock.ApproveRefuseStockAdjustSheetVo;
@@ -107,30 +106,11 @@ public class StockAdjustSheetController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"stock:adjust:export"})
@PostMapping("/export")
- public void export(@Valid QueryStockAdjustSheetVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("库存调整单信息",
- StockAdjustSheetExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = stockAdjustSheetService.query(pageIndex,
- getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream()
- .map(StockAdjustSheetExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryStockAdjustSheetVo vo) {
+
+ ExportTaskUtil.exportTask("库存调整单信息", StockAdjustSheetExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/PreTakeStockSheetController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/PreTakeStockSheetController.java
index abe1de6fdbd09ad548ed7561176bdc14d7b5204d..ec51ce425d953855f8f4ae6413dcb580f541674d 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/PreTakeStockSheetController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/PreTakeStockSheetController.java
@@ -4,13 +4,12 @@ import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.common.utils.StringUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.stock.take.pre.GetPreTakeStockSheetBo;
import com.lframework.xingyun.sc.bo.stock.take.pre.PreTakeStockProductBo;
import com.lframework.xingyun.sc.bo.stock.take.pre.QueryPreTakeStockSheetBo;
@@ -21,7 +20,7 @@ import com.lframework.xingyun.sc.dto.stock.take.pre.QueryPreTakeStockSheetProduc
import com.lframework.xingyun.sc.entity.PreTakeStockSheet;
import com.lframework.xingyun.sc.entity.TakeStockPlan;
import com.lframework.xingyun.sc.enums.TakeStockPlanType;
-import com.lframework.xingyun.sc.excel.stock.take.pre.PreTakeStockSheetExportModel;
+import com.lframework.xingyun.sc.excel.stock.take.pre.PreTakeStockSheetExportTaskWorker;
import com.lframework.xingyun.sc.service.stock.take.PreTakeStockSheetService;
import com.lframework.xingyun.sc.service.stock.take.TakeStockPlanService;
import com.lframework.xingyun.sc.vo.stock.take.pre.CreatePreTakeStockSheetVo;
@@ -92,31 +91,11 @@ public class PreTakeStockSheetController extends DefaultBaseController {
@ApiOperation("导出列表")
@HasPermission({"stock:take:pre:export"})
@PostMapping("/export")
- public void export(@Valid QueryPreTakeStockSheetVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("预先盘点单信息",
- PreTakeStockSheetExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = preTakeStockSheetService.query(pageIndex,
- getExportSize(),
- vo);
- List datas = pageResult.getDatas();
- List models = datas.stream()
- .map(PreTakeStockSheetExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryPreTakeStockSheetVo vo) {
+
+ ExportTaskUtil.exportTask("预先盘点单信息", PreTakeStockSheetExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/TakeStockPlanController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/TakeStockPlanController.java
index bbb27f03a35381f36f1ee8ca40813562e8b49394..0052027a4eb64e00d4a11d91c2e10f870b1f9645 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/TakeStockPlanController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/TakeStockPlanController.java
@@ -6,15 +6,15 @@ import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.common.utils.ThreadUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
import com.lframework.starter.web.components.tenant.TenantContextHolder;
-import com.lframework.starter.web.threads.DefaultRunnable;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.threads.DefaultRunnable;
import com.lframework.starter.web.utils.CronUtil;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.components.qrtz.QrtzHandler;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.stock.take.plan.GetTakeStockPlanBo;
import com.lframework.xingyun.sc.bo.stock.take.plan.QueryTakeStockPlanBo;
import com.lframework.xingyun.sc.bo.stock.take.plan.QueryTakeStockPlanProductBo;
@@ -23,7 +23,7 @@ import com.lframework.xingyun.sc.dto.stock.take.plan.QueryTakeStockPlanProductDt
import com.lframework.xingyun.sc.dto.stock.take.plan.TakeStockPlanFullDto;
import com.lframework.xingyun.sc.entity.TakeStockConfig;
import com.lframework.xingyun.sc.entity.TakeStockPlan;
-import com.lframework.xingyun.sc.excel.stock.take.plan.TakeStockPlanExportModel;
+import com.lframework.xingyun.sc.excel.stock.take.plan.TakeStockPlanExportTaskWorker;
import com.lframework.xingyun.sc.impl.stock.take.TakeStockPlanServiceImpl;
import com.lframework.xingyun.sc.service.stock.take.TakeStockConfigService;
import com.lframework.xingyun.sc.service.stock.take.TakeStockPlanService;
@@ -32,7 +32,6 @@ import com.lframework.xingyun.sc.vo.stock.take.plan.CreateTakeStockPlanVo;
import com.lframework.xingyun.sc.vo.stock.take.plan.HandleTakeStockPlanVo;
import com.lframework.xingyun.sc.vo.stock.take.plan.QueryTakeStockPlanVo;
import com.lframework.xingyun.sc.vo.stock.take.plan.UpdateTakeStockPlanVo;
-import com.lframework.xingyun.core.components.qrtz.QrtzHandler;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
@@ -98,29 +97,11 @@ public class TakeStockPlanController extends DefaultBaseController {
@ApiOperation("导出列表")
@HasPermission({"stock:take:plan:export"})
@PostMapping("/export")
- public void export(@Valid QueryTakeStockPlanVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("盘点任务信息",
- TakeStockPlanExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = takeStockPlanService.query(pageIndex,
- getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(TakeStockPlanExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryTakeStockPlanVo vo) {
+
+ ExportTaskUtil.exportTask("盘点任务信息", TakeStockPlanExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/TakeStockSheetController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/TakeStockSheetController.java
index 1fb1d2dd69da6b1a360baee212c5c79c0993da81..077ceb59bbd4ac60f5a250e0237fbc4c8ec81c30 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/TakeStockSheetController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/take/TakeStockSheetController.java
@@ -4,13 +4,12 @@ import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.common.utils.StringUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.stock.take.sheet.QueryTakeStockSheetBo;
import com.lframework.xingyun.sc.bo.stock.take.sheet.TakeStockSheetFullBo;
import com.lframework.xingyun.sc.bo.stock.take.sheet.TakeStockSheetProductBo;
@@ -19,7 +18,7 @@ import com.lframework.xingyun.sc.dto.stock.take.sheet.TakeStockSheetProductDto;
import com.lframework.xingyun.sc.entity.TakeStockPlan;
import com.lframework.xingyun.sc.entity.TakeStockSheet;
import com.lframework.xingyun.sc.enums.TakeStockPlanType;
-import com.lframework.xingyun.sc.excel.stock.take.sheet.TakeStockSheetExportModel;
+import com.lframework.xingyun.sc.excel.stock.take.sheet.TakeStockSheetExportTaskWorker;
import com.lframework.xingyun.sc.service.stock.take.TakeStockPlanService;
import com.lframework.xingyun.sc.service.stock.take.TakeStockSheetService;
import com.lframework.xingyun.sc.vo.stock.take.sheet.ApprovePassTakeStockSheetVo;
@@ -91,29 +90,11 @@ public class TakeStockSheetController extends DefaultBaseController {
@ApiOperation("导出列表")
@HasPermission({"stock:take:sheet:export"})
@PostMapping("/export")
- public void export(@Valid QueryTakeStockSheetVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("库存盘点单信息",
- TakeStockSheetExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = takeStockSheetService.query(pageIndex,
- getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream().map(TakeStockSheetExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryTakeStockSheetVo vo) {
+
+ ExportTaskUtil.exportTask("库存盘点单信息", TakeStockSheetExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/transfer/ScTransferOrderController.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/transfer/ScTransferOrderController.java
index b1d2d4ed4b4c31fe3040080e2cadc3b813221960..74faae307e25c2b72ff74210fd3b80708a753ff2 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/transfer/ScTransferOrderController.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/controller/stock/transfer/ScTransferOrderController.java
@@ -7,13 +7,12 @@ import com.lframework.starter.common.exceptions.impl.DefaultClientException;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.common.utils.StringUtil;
import com.lframework.starter.web.annotations.security.HasPermission;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.controller.DefaultBaseController;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.ExcelUtil;
import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.sc.bo.stock.transfer.QueryScTransferOrderBo;
import com.lframework.xingyun.sc.bo.stock.transfer.QueryScTransferOrderDetailReceiveBo;
import com.lframework.xingyun.sc.bo.stock.transfer.ScTransferOrderFullBo;
@@ -22,7 +21,7 @@ import com.lframework.xingyun.sc.dto.stock.transfer.ScTransferOrderFullDto;
import com.lframework.xingyun.sc.dto.stock.transfer.ScTransferProductDto;
import com.lframework.xingyun.sc.entity.ScTransferOrder;
import com.lframework.xingyun.sc.entity.ScTransferOrderDetailReceive;
-import com.lframework.xingyun.sc.excel.stock.transfer.ScTransferOrderExportModel;
+import com.lframework.xingyun.sc.excel.stock.transfer.ScTransferOrderExportTaskWorker;
import com.lframework.xingyun.sc.service.stock.transfer.ScTransferOrderDetailReceiveService;
import com.lframework.xingyun.sc.service.stock.transfer.ScTransferOrderService;
import com.lframework.xingyun.sc.vo.stock.transfer.ApprovePassScTransferOrderVo;
@@ -118,30 +117,11 @@ public class ScTransferOrderController extends DefaultBaseController {
@ApiOperation("导出")
@HasPermission({"stock:sc-transfer:export"})
@PostMapping("/export")
- public void export(@Valid QueryScTransferOrderVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("仓库调拨单信息",
- ScTransferOrderExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = scTransferOrderService.query(pageIndex,
- getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream()
- .map(ScTransferOrderExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
+ public InvokeResult export(@Valid QueryScTransferOrderVo vo) {
+
+ ExportTaskUtil.exportTask("仓库调拨单信息", ScTransferOrderExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
}
/**
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/logistics/LogisticsSheetExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/logistics/LogisticsSheetExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..26378458d3482b389d8822e5f53f12f6249dea4c
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/logistics/LogisticsSheetExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.logistics;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.LogisticsSheet;
+import com.lframework.xingyun.sc.service.logistics.LogisticsSheetService;
+import com.lframework.xingyun.sc.vo.logistics.QueryLogisticsSheetVo;
+
+public class LogisticsSheetExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryLogisticsSheetVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryLogisticsSheetVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryLogisticsSheetVo params) {
+
+ LogisticsSheetService logisticsSheetService = ApplicationUtil.getBean(
+ LogisticsSheetService.class);
+
+ return logisticsSheetService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public LogisticsSheetExportModel exportData(LogisticsSheet data) {
+ return new LogisticsSheetExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return LogisticsSheetExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/purchase/PurchaseOrderExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/purchase/PurchaseOrderExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..839e92ec5915691ae0912057e443b4221a0317c6
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/purchase/PurchaseOrderExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.purchase;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.PurchaseOrder;
+import com.lframework.xingyun.sc.service.purchase.PurchaseOrderService;
+import com.lframework.xingyun.sc.vo.purchase.QueryPurchaseOrderVo;
+
+public class PurchaseOrderExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryPurchaseOrderVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryPurchaseOrderVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryPurchaseOrderVo params) {
+
+ PurchaseOrderService purchaseOrderService = ApplicationUtil.getBean(
+ PurchaseOrderService.class);
+
+ return purchaseOrderService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public PurchaseOrderExportModel exportData(PurchaseOrder data) {
+ return new PurchaseOrderExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return PurchaseOrderExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/purchase/receive/ReceiveSheetExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/purchase/receive/ReceiveSheetExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..56e4bda762390463831a29d43f564721949069df
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/purchase/receive/ReceiveSheetExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.purchase.receive;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.ReceiveSheet;
+import com.lframework.xingyun.sc.service.purchase.ReceiveSheetService;
+import com.lframework.xingyun.sc.vo.purchase.receive.QueryReceiveSheetVo;
+
+public class ReceiveSheetExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryReceiveSheetVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryReceiveSheetVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryReceiveSheetVo params) {
+
+ ReceiveSheetService receiveSheetService = ApplicationUtil.getBean(
+ ReceiveSheetService.class);
+
+ return receiveSheetService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public ReceiveSheetExportModel exportData(ReceiveSheet data) {
+ return new ReceiveSheetExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return ReceiveSheetExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/purchase/returned/PurchaseReturnExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/purchase/returned/PurchaseReturnExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..f1d3416270dfb15be48af5e6290aef7f638585f4
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/purchase/returned/PurchaseReturnExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.purchase.returned;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.PurchaseReturn;
+import com.lframework.xingyun.sc.service.purchase.PurchaseReturnService;
+import com.lframework.xingyun.sc.vo.purchase.returned.QueryPurchaseReturnVo;
+
+public class PurchaseReturnExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryPurchaseReturnVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryPurchaseReturnVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryPurchaseReturnVo params) {
+
+ PurchaseReturnService purchaseReturnService = ApplicationUtil.getBean(
+ PurchaseReturnService.class);
+
+ return purchaseReturnService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public PurchaseReturnExportModel exportData(PurchaseReturn data) {
+ return new PurchaseReturnExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return PurchaseReturnExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/out/RetailOutSheetExportModel.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/out/RetailOutSheetExportModel.java
index c5688ace2caeea3aaee95ae6a3252e5e697642a3..b4dcb81d1b4f4ce0c92381360df4f635b411ebda 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/out/RetailOutSheetExportModel.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/out/RetailOutSheetExportModel.java
@@ -155,7 +155,7 @@ public class RetailOutSheetExportModel extends BaseBo implements
StoreCenter sc = storeCenterService.findById(dto.getScId());
MemberService memberService = ApplicationUtil.getBean(MemberService.class);
- Member member = memberService.findById(dto.getMemberId());
+ Member member = !StringUtil.isBlank(dto.getMemberId()) ? memberService.findById(dto.getMemberId()) : null;
SysUserService userService = ApplicationUtil.getBean(SysUserService.class);
SysUser saler = null;
@@ -170,7 +170,7 @@ public class RetailOutSheetExportModel extends BaseBo implements
this.setCode(dto.getCode());
this.setScCode(sc.getCode());
this.setScName(sc.getName());
- this.setMemberCode(member.getCode());
+ this.setMemberCode(member == null ? null : member.getCode());
this.setMemberName(member.getName());
this.setSalerName(saler == null ? null : saler.getName());
this.setTotalAmount(dto.getTotalAmount());
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/out/RetailOutSheetExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/out/RetailOutSheetExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..c82531573eb9f4c7fcd2749bc92f2d60fe0e4112
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/out/RetailOutSheetExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.retail.out;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.RetailOutSheet;
+import com.lframework.xingyun.sc.service.retail.RetailOutSheetService;
+import com.lframework.xingyun.sc.vo.retail.out.QueryRetailOutSheetVo;
+
+public class RetailOutSheetExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryRetailOutSheetVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryRetailOutSheetVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryRetailOutSheetVo params) {
+
+ RetailOutSheetService retailOutSheetService = ApplicationUtil.getBean(
+ RetailOutSheetService.class);
+
+ return retailOutSheetService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public RetailOutSheetExportModel exportData(RetailOutSheet data) {
+ return new RetailOutSheetExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return RetailOutSheetExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/returned/RetailReturnExportModel.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/returned/RetailReturnExportModel.java
index f59c2bdf50e1e7378a85b211f77c41ca0b79e0b3..efd2763f08e4aa26c72aeeff63bf444246b4e3d3 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/returned/RetailReturnExportModel.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/returned/RetailReturnExportModel.java
@@ -163,7 +163,7 @@ public class RetailReturnExportModel extends BaseBo implements Exc
StoreCenter sc = storeCenterService.findById(dto.getScId());
MemberService memberService = ApplicationUtil.getBean(MemberService.class);
- Member member = memberService.findById(dto.getMemberId());
+ Member member = !StringUtil.isBlank(dto.getMemberId()) ? memberService.findById(dto.getMemberId()) : null;
SysUserService userService = ApplicationUtil.getBean(SysUserService.class);
SysUser saler = null;
@@ -178,8 +178,8 @@ public class RetailReturnExportModel extends BaseBo implements Exc
this.setCode(dto.getCode());
this.setScCode(sc.getCode());
this.setScName(sc.getName());
- this.setMemberCode(member.getCode());
- this.setMemberName(member.getName());
+ this.setMemberCode(member == null ? null : member.getCode());
+ this.setMemberName(member == null ? null : member.getName());
this.setSalerName(saler == null ? null : saler.getName());
this.setTotalAmount(dto.getTotalAmount());
this.setTotalNum(dto.getTotalNum());
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/returned/RetailReturnExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/returned/RetailReturnExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..931221d24f9f826c50a03bace32198fd42b9d7db
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/retail/returned/RetailReturnExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.retail.returned;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.RetailReturn;
+import com.lframework.xingyun.sc.service.retail.RetailReturnService;
+import com.lframework.xingyun.sc.vo.retail.returned.QueryRetailReturnVo;
+
+public class RetailReturnExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryRetailReturnVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryRetailReturnVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryRetailReturnVo params) {
+
+ RetailReturnService retailReturnService = ApplicationUtil.getBean(
+ RetailReturnService.class);
+
+ return retailReturnService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public RetailReturnExportModel exportData(RetailReturn data) {
+ return new RetailReturnExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return RetailReturnExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/sale/SaleOrderExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/sale/SaleOrderExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..ede24fabdea2b4629020fd1fdfc8c140b8d90c9c
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/sale/SaleOrderExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.sale;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.SaleOrder;
+import com.lframework.xingyun.sc.service.sale.SaleOrderService;
+import com.lframework.xingyun.sc.vo.sale.QuerySaleOrderVo;
+
+public class SaleOrderExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QuerySaleOrderVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QuerySaleOrderVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QuerySaleOrderVo params) {
+
+ SaleOrderService saleOrderService = ApplicationUtil.getBean(
+ SaleOrderService.class);
+
+ return saleOrderService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public SaleOrderExportModel exportData(SaleOrder data) {
+ return new SaleOrderExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return SaleOrderExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/sale/out/SaleOutSheetExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/sale/out/SaleOutSheetExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..974373b1ad20308314d724de8e7d03cf63658641
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/sale/out/SaleOutSheetExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.sale.out;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.SaleOutSheet;
+import com.lframework.xingyun.sc.service.sale.SaleOutSheetService;
+import com.lframework.xingyun.sc.vo.sale.out.QuerySaleOutSheetVo;
+
+public class SaleOutSheetExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QuerySaleOutSheetVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QuerySaleOutSheetVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QuerySaleOutSheetVo params) {
+
+ SaleOutSheetService saleOutSheetService = ApplicationUtil.getBean(
+ SaleOutSheetService.class);
+
+ return saleOutSheetService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public SaleOutSheetExportModel exportData(SaleOutSheet data) {
+ return new SaleOutSheetExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return SaleOutSheetExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/sale/returned/SaleReturnExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/sale/returned/SaleReturnExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..714b29ddf9d0fb7d0683e7d356c586c821fcd616
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/sale/returned/SaleReturnExportTaskWorker.java
@@ -0,0 +1,36 @@
+package com.lframework.xingyun.sc.excel.sale.returned;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.SaleReturn;
+import com.lframework.xingyun.sc.service.sale.SaleReturnService;
+import com.lframework.xingyun.sc.vo.sale.returned.QuerySaleReturnVo;
+
+public class SaleReturnExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QuerySaleReturnVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QuerySaleReturnVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize, QuerySaleReturnVo params) {
+
+ SaleReturnService saleReturnService = ApplicationUtil.getBean(SaleReturnService.class);
+
+ return saleReturnService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public SaleReturnExportModel exportData(SaleReturn data) {
+ return new SaleReturnExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return SaleReturnExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/ProductStockExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/ProductStockExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d3fc944f4fcf4f123d5f782e606a1a9fe7d8bb5
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/ProductStockExportTaskWorker.java
@@ -0,0 +1,37 @@
+package com.lframework.xingyun.sc.excel.stock;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.ProductStock;
+import com.lframework.xingyun.sc.service.stock.ProductStockService;
+import com.lframework.xingyun.sc.vo.stock.QueryProductStockVo;
+
+public class ProductStockExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryProductStockVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryProductStockVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryProductStockVo params) {
+
+ ProductStockService productStockService = ApplicationUtil.getBean(ProductStockService.class);
+
+ return productStockService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public ProductStockExportModel exportData(ProductStock data) {
+ return new ProductStockExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return ProductStockExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/ProductStockLogExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/ProductStockLogExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..cecaaeba777369c5579b0e8b36fef9fa9e2f1a69
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/ProductStockLogExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.stock;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.ProductStockLog;
+import com.lframework.xingyun.sc.service.stock.ProductStockLogService;
+import com.lframework.xingyun.sc.vo.stock.log.QueryProductStockLogVo;
+
+public class ProductStockLogExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryProductStockLogVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryProductStockLogVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryProductStockLogVo params) {
+
+ ProductStockLogService productStockLogService = ApplicationUtil.getBean(
+ ProductStockLogService.class);
+
+ return productStockLogService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public ProductStockLogExportModel exportData(ProductStockLog data) {
+ return new ProductStockLogExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return ProductStockLogExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/adjust/StockAdjustSheetExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/adjust/StockAdjustSheetExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..316aef8a5c625e6d741c3adc5d6a904356eadb21
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/adjust/StockAdjustSheetExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.stock.adjust;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.StockAdjustSheet;
+import com.lframework.xingyun.sc.service.stock.adjust.StockAdjustSheetService;
+import com.lframework.xingyun.sc.vo.stock.adjust.stock.QueryStockAdjustSheetVo;
+
+public class StockAdjustSheetExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryStockAdjustSheetVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryStockAdjustSheetVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryStockAdjustSheetVo params) {
+
+ StockAdjustSheetService stockAdjustSheetService = ApplicationUtil.getBean(
+ StockAdjustSheetService.class);
+
+ return stockAdjustSheetService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public StockAdjustSheetExportModel exportData(StockAdjustSheet data) {
+ return new StockAdjustSheetExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return StockAdjustSheetExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/take/plan/TakeStockPlanExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/take/plan/TakeStockPlanExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..46fd1b91b9fb69e5e7d8cdd0c78de0c4fe9718fb
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/take/plan/TakeStockPlanExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.stock.take.plan;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.TakeStockPlan;
+import com.lframework.xingyun.sc.service.stock.take.TakeStockPlanService;
+import com.lframework.xingyun.sc.vo.stock.take.plan.QueryTakeStockPlanVo;
+
+public class TakeStockPlanExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryTakeStockPlanVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryTakeStockPlanVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryTakeStockPlanVo params) {
+
+ TakeStockPlanService takeStockPlanService = ApplicationUtil.getBean(
+ TakeStockPlanService.class);
+
+ return takeStockPlanService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public TakeStockPlanExportModel exportData(TakeStockPlan data) {
+ return new TakeStockPlanExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return TakeStockPlanExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/take/pre/PreTakeStockSheetExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/take/pre/PreTakeStockSheetExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..f53cfb21abb841754f5d4d8d2584ade0e5a798a5
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/take/pre/PreTakeStockSheetExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.stock.take.pre;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.PreTakeStockSheet;
+import com.lframework.xingyun.sc.service.stock.take.PreTakeStockSheetService;
+import com.lframework.xingyun.sc.vo.stock.take.pre.QueryPreTakeStockSheetVo;
+
+public class PreTakeStockSheetExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryPreTakeStockSheetVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryPreTakeStockSheetVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryPreTakeStockSheetVo params) {
+
+ PreTakeStockSheetService preTakeStockSheetService = ApplicationUtil.getBean(
+ PreTakeStockSheetService.class);
+
+ return preTakeStockSheetService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public PreTakeStockSheetExportModel exportData(PreTakeStockSheet data) {
+ return new PreTakeStockSheetExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return PreTakeStockSheetExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/take/sheet/TakeStockSheetExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/take/sheet/TakeStockSheetExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..8d1323afbec91e8e7963b7788a9378a3b7a08c5c
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/take/sheet/TakeStockSheetExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.stock.take.sheet;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.TakeStockSheet;
+import com.lframework.xingyun.sc.service.stock.take.TakeStockSheetService;
+import com.lframework.xingyun.sc.vo.stock.take.sheet.QueryTakeStockSheetVo;
+
+public class TakeStockSheetExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryTakeStockSheetVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryTakeStockSheetVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryTakeStockSheetVo params) {
+
+ TakeStockSheetService takeStockSheetService = ApplicationUtil.getBean(
+ TakeStockSheetService.class);
+
+ return takeStockSheetService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public TakeStockSheetExportModel exportData(TakeStockSheet data) {
+ return new TakeStockSheetExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return TakeStockSheetExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/transfer/ScTransferOrderExportTaskWorker.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/transfer/ScTransferOrderExportTaskWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..9da304ef0708ecb8eacae9057ad6f5e975e38391
--- /dev/null
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/excel/stock/transfer/ScTransferOrderExportTaskWorker.java
@@ -0,0 +1,38 @@
+package com.lframework.xingyun.sc.excel.stock.transfer;
+
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.ApplicationUtil;
+import com.lframework.starter.web.utils.JsonUtil;
+import com.lframework.xingyun.core.components.export.ExportTaskWorker;
+import com.lframework.xingyun.sc.entity.ScTransferOrder;
+import com.lframework.xingyun.sc.service.stock.transfer.ScTransferOrderService;
+import com.lframework.xingyun.sc.vo.stock.transfer.QueryScTransferOrderVo;
+
+public class ScTransferOrderExportTaskWorker implements
+ ExportTaskWorker {
+
+ @Override
+ public QueryScTransferOrderVo parseParams(String json) {
+ return JsonUtil.parseObject(json, QueryScTransferOrderVo.class);
+ }
+
+ @Override
+ public PageResult getDataList(int pageIndex, int pageSize,
+ QueryScTransferOrderVo params) {
+
+ ScTransferOrderService scTransferOrderService = ApplicationUtil.getBean(
+ ScTransferOrderService.class);
+
+ return scTransferOrderService.query(pageIndex, pageSize, params);
+ }
+
+ @Override
+ public ScTransferOrderExportModel exportData(ScTransferOrder data) {
+ return new ScTransferOrderExportModel(data);
+ }
+
+ @Override
+ public Class getModelClass() {
+ return ScTransferOrderExportModel.class;
+ }
+}
diff --git a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/impl/stock/ProductStockServiceImpl.java b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/impl/stock/ProductStockServiceImpl.java
index 2360f2ae580a71b3524fe25a17139f5f6f151390..29667333024b6480efa06c99c490050d42f9e270 100644
--- a/xingyun-sc/src/main/java/com/lframework/xingyun/sc/impl/stock/ProductStockServiceImpl.java
+++ b/xingyun-sc/src/main/java/com/lframework/xingyun/sc/impl/stock/ProductStockServiceImpl.java
@@ -8,7 +8,6 @@ import com.lframework.starter.common.exceptions.impl.DefaultSysException;
import com.lframework.starter.common.utils.Assert;
import com.lframework.starter.common.utils.CollectionUtil;
import com.lframework.starter.common.utils.NumberUtil;
-import com.lframework.starter.mq.core.producer.MqProducer;
import com.lframework.starter.web.impl.BaseMpServiceImpl;
import com.lframework.starter.web.resp.PageResult;
import com.lframework.starter.web.utils.ApplicationUtil;
@@ -21,10 +20,9 @@ import com.lframework.xingyun.basedata.enums.ProductType;
import com.lframework.xingyun.basedata.service.product.ProductBundleService;
import com.lframework.xingyun.basedata.service.product.ProductService;
import com.lframework.xingyun.core.dto.stock.ProductStockChangeDto;
+import com.lframework.xingyun.sc.entity.ProductStock;
import com.lframework.xingyun.sc.events.stock.AddStockEvent;
import com.lframework.xingyun.sc.events.stock.SubStockEvent;
-import com.lframework.xingyun.core.queue.MqConstants;
-import com.lframework.xingyun.sc.entity.ProductStock;
import com.lframework.xingyun.sc.mappers.ProductStockMapper;
import com.lframework.xingyun.sc.service.stock.ProductStockLogService;
import com.lframework.xingyun.sc.service.stock.ProductStockService;
@@ -39,7 +37,6 @@ import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.event.TransactionalEventListener;
@Service
public class ProductStockServiceImpl extends BaseMpServiceImpl
diff --git a/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettleCheckSheetController.java b/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettleCheckSheetController.java
index 93618307e0b9c1255df21a298ac6989bea0b04fb..ab8eca43bd1bf0a617332736c8a6fc3d1ea72cbf 100644
--- a/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettleCheckSheetController.java
+++ b/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettleCheckSheetController.java
@@ -1,20 +1,20 @@
package com.lframework.xingyun.settle.controller;
import com.lframework.starter.common.utils.CollectionUtil;
-import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.starter.web.annotations.security.HasPermission;
import com.lframework.starter.web.controller.DefaultBaseController;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
-import com.lframework.starter.web.utils.ExcelUtil;
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.settle.bo.check.customer.CustomerSettleCheckBizItemBo;
import com.lframework.xingyun.settle.bo.check.customer.GetCustomerSettleCheckSheetBo;
import com.lframework.xingyun.settle.bo.check.customer.QueryCustomerSettleCheckSheetBo;
-import com.lframework.xingyun.settle.excel.check.customer.CustomerSettleCheckSheetExportModel;
import com.lframework.xingyun.settle.dto.check.customer.CustomerSettleCheckBizItemDto;
import com.lframework.xingyun.settle.dto.check.customer.CustomerSettleCheckSheetFullDto;
import com.lframework.xingyun.settle.entity.CustomerSettleCheckSheet;
+import com.lframework.xingyun.settle.excel.check.customer.CustomerSettleCheckSheetExportTaskWorker;
import com.lframework.xingyun.settle.service.CustomerSettleCheckSheetService;
import com.lframework.xingyun.settle.vo.check.customer.ApprovePassCustomerSettleCheckSheetVo;
import com.lframework.xingyun.settle.vo.check.customer.ApproveRefuseCustomerSettleCheckSheetVo;
@@ -30,7 +30,6 @@ import java.util.stream.Collectors;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import org.springframework.beans.factory.annotation.Autowired;
-import com.lframework.starter.web.annotations.security.HasPermission;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -52,184 +51,164 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/customer/settle/checksheet")
public class CustomerSettleCheckSheetController extends DefaultBaseController {
- @Autowired
- private CustomerSettleCheckSheetService customerSettleCheckSheetService;
-
- /**
- * 客户对账单列表
- */
- @ApiOperation("客户对账单列表")
- @HasPermission({"customer-settle:check-sheet:query"})
- @GetMapping("/query")
- public InvokeResult> query(
- @Valid QueryCustomerSettleCheckSheetVo vo) {
-
- PageResult pageResult = customerSettleCheckSheetService.query(
- getPageIndex(vo), getPageSize(vo), vo);
-
- List datas = pageResult.getDatas();
- List results = null;
-
- if (!CollectionUtil.isEmpty(datas)) {
- results = datas.stream().map(QueryCustomerSettleCheckSheetBo::new)
- .collect(Collectors.toList());
- }
+ @Autowired
+ private CustomerSettleCheckSheetService customerSettleCheckSheetService;
- return InvokeResultBuilder.success(PageResultUtil.rebuild(pageResult, results));
- }
-
- /**
- * 导出
- */
- @ApiOperation("导出")
- @HasPermission({"customer-settle:check-sheet:export"})
- @PostMapping("/export")
- public void export(@Valid QueryCustomerSettleCheckSheetVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("客户对账单信息",
- CustomerSettleCheckSheetExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = customerSettleCheckSheetService.query(
- pageIndex, getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream()
- .map(CustomerSettleCheckSheetExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
- }
+ /**
+ * 客户对账单列表
+ */
+ @ApiOperation("客户对账单列表")
+ @HasPermission({"customer-settle:check-sheet:query"})
+ @GetMapping("/query")
+ public InvokeResult> query(
+ @Valid QueryCustomerSettleCheckSheetVo vo) {
- /**
- * 根据ID查询
- */
- @ApiOperation("根据ID查询")
- @ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true)
- @HasPermission({"customer-settle:check-sheet:query"})
- @GetMapping
- public InvokeResult findById(
- @NotBlank(message = "客户对账单ID不能为空!") String id) {
+ PageResult pageResult = customerSettleCheckSheetService.query(
+ getPageIndex(vo), getPageSize(vo), vo);
- CustomerSettleCheckSheetFullDto data = customerSettleCheckSheetService.getDetail(id);
+ List datas = pageResult.getDatas();
+ List results = null;
- GetCustomerSettleCheckSheetBo result = new GetCustomerSettleCheckSheetBo(data);
-
- return InvokeResultBuilder.success(result);
+ if (!CollectionUtil.isEmpty(datas)) {
+ results = datas.stream().map(QueryCustomerSettleCheckSheetBo::new)
+ .collect(Collectors.toList());
}
- /**
- * 创建客户对账单
- */
- @ApiOperation("创建客户对账单")
- @HasPermission({"customer-settle:check-sheet:add"})
- @PostMapping
- public InvokeResult create(@RequestBody @Valid CreateCustomerSettleCheckSheetVo vo) {
-
- vo.validate();
-
- String id = customerSettleCheckSheetService.create(vo);
-
- return InvokeResultBuilder.success(id);
+ return InvokeResultBuilder.success(PageResultUtil.rebuild(pageResult, results));
+ }
+
+ /**
+ * 导出
+ */
+ @ApiOperation("导出")
+ @HasPermission({"customer-settle:check-sheet:export"})
+ @PostMapping("/export")
+ public InvokeResult export(@Valid QueryCustomerSettleCheckSheetVo vo) {
+
+ ExportTaskUtil.exportTask("客户对账单信息", CustomerSettleCheckSheetExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 根据ID查询
+ */
+ @ApiOperation("根据ID查询")
+ @ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true)
+ @HasPermission({"customer-settle:check-sheet:query"})
+ @GetMapping
+ public InvokeResult findById(
+ @NotBlank(message = "客户对账单ID不能为空!") String id) {
+
+ CustomerSettleCheckSheetFullDto data = customerSettleCheckSheetService.getDetail(id);
+
+ GetCustomerSettleCheckSheetBo result = new GetCustomerSettleCheckSheetBo(data);
+
+ return InvokeResultBuilder.success(result);
+ }
+
+ /**
+ * 创建客户对账单
+ */
+ @ApiOperation("创建客户对账单")
+ @HasPermission({"customer-settle:check-sheet:add"})
+ @PostMapping
+ public InvokeResult create(@RequestBody @Valid CreateCustomerSettleCheckSheetVo vo) {
+
+ vo.validate();
+
+ String id = customerSettleCheckSheetService.create(vo);
+
+ return InvokeResultBuilder.success(id);
+ }
+
+ /**
+ * 修改客户对账单
+ */
+ @ApiOperation("修改客户对账单")
+ @HasPermission({"customer-settle:check-sheet:modify"})
+ @PutMapping
+ public InvokeResult update(@RequestBody @Valid UpdateCustomerSettleCheckSheetVo vo) {
+
+ vo.validate();
+
+ customerSettleCheckSheetService.update(vo);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 审核通过客户对账单
+ */
+ @ApiOperation("审核通过客户对账单")
+ @HasPermission({"customer-settle:check-sheet:approve"})
+ @PatchMapping("/approve/pass")
+ public InvokeResult approvePass(
+ @RequestBody @Valid ApprovePassCustomerSettleCheckSheetVo vo) {
+
+ customerSettleCheckSheetService.approvePass(vo);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 直接审核通过客户对账单
+ */
+ @ApiOperation("直接审核通过客户对账单")
+ @HasPermission({"customer-settle:check-sheet:approve"})
+ @PostMapping("/approve/pass/direct")
+ public InvokeResult directApprovePass(
+ @RequestBody @Valid CreateCustomerSettleCheckSheetVo vo) {
+
+ customerSettleCheckSheetService.directApprovePass(vo);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 审核拒绝客户对账单
+ */
+ @ApiOperation("审核拒绝客户对账单")
+ @HasPermission({"customer-settle:check-sheet:approve"})
+ @PatchMapping("/approve/refuse")
+ public InvokeResult approveRefuse(
+ @RequestBody @Valid ApproveRefuseCustomerSettleCheckSheetVo vo) {
+
+ customerSettleCheckSheetService.approveRefuse(vo);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 删除客户对账单
+ */
+ @ApiOperation("删除客户对账单")
+ @ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true)
+ @HasPermission({"customer-settle:check-sheet:delete"})
+ @DeleteMapping
+ public InvokeResult deleteById(@NotBlank(message = "客户对账单ID不能为空!") String id) {
+
+ customerSettleCheckSheetService.deleteById(id);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 查询未对账的业务单据
+ */
+ @ApiOperation("查询未对账的业务单据")
+ @HasPermission({"customer-settle:check-sheet:add", "customer-settle:check-sheet:modify"})
+ @GetMapping("/uncheck-items")
+ public InvokeResult> getUnCheckItems(
+ @Valid QueryCustomerUnCheckBizItemVo vo) {
+
+ List results = customerSettleCheckSheetService.getUnCheckBizItems(
+ vo);
+ List datas = CollectionUtil.emptyList();
+ if (!CollectionUtil.isEmpty(results)) {
+ datas = results.stream().map(CustomerSettleCheckBizItemBo::new).collect(Collectors.toList());
}
- /**
- * 修改客户对账单
- */
- @ApiOperation("修改客户对账单")
- @HasPermission({"customer-settle:check-sheet:modify"})
- @PutMapping
- public InvokeResult update(@RequestBody @Valid UpdateCustomerSettleCheckSheetVo vo) {
-
- vo.validate();
-
- customerSettleCheckSheetService.update(vo);
-
- return InvokeResultBuilder.success();
- }
-
- /**
- * 审核通过客户对账单
- */
- @ApiOperation("审核通过客户对账单")
- @HasPermission({"customer-settle:check-sheet:approve"})
- @PatchMapping("/approve/pass")
- public InvokeResult approvePass(
- @RequestBody @Valid ApprovePassCustomerSettleCheckSheetVo vo) {
-
- customerSettleCheckSheetService.approvePass(vo);
-
- return InvokeResultBuilder.success();
- }
-
- /**
- * 直接审核通过客户对账单
- */
- @ApiOperation("直接审核通过客户对账单")
- @HasPermission({"customer-settle:check-sheet:approve"})
- @PostMapping("/approve/pass/direct")
- public InvokeResult directApprovePass(
- @RequestBody @Valid CreateCustomerSettleCheckSheetVo vo) {
-
- customerSettleCheckSheetService.directApprovePass(vo);
-
- return InvokeResultBuilder.success();
- }
-
- /**
- * 审核拒绝客户对账单
- */
- @ApiOperation("审核拒绝客户对账单")
- @HasPermission({"customer-settle:check-sheet:approve"})
- @PatchMapping("/approve/refuse")
- public InvokeResult approveRefuse(
- @RequestBody @Valid ApproveRefuseCustomerSettleCheckSheetVo vo) {
-
- customerSettleCheckSheetService.approveRefuse(vo);
-
- return InvokeResultBuilder.success();
- }
-
- /**
- * 删除客户对账单
- */
- @ApiOperation("删除客户对账单")
- @ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true)
- @HasPermission({"customer-settle:check-sheet:delete"})
- @DeleteMapping
- public InvokeResult deleteById(@NotBlank(message = "客户对账单ID不能为空!") String id) {
-
- customerSettleCheckSheetService.deleteById(id);
-
- return InvokeResultBuilder.success();
- }
-
- /**
- * 查询未对账的业务单据
- */
- @ApiOperation("查询未对账的业务单据")
- @HasPermission({"customer-settle:check-sheet:add", "customer-settle:check-sheet:modify"})
- @GetMapping("/uncheck-items")
- public InvokeResult> getUnCheckItems(
- @Valid QueryCustomerUnCheckBizItemVo vo) {
-
- List results = customerSettleCheckSheetService.getUnCheckBizItems(
- vo);
- List datas = CollectionUtil.emptyList();
- if (!CollectionUtil.isEmpty(results)) {
- datas = results.stream().map(CustomerSettleCheckBizItemBo::new)
- .collect(Collectors.toList());
- }
-
- return InvokeResultBuilder.success(datas);
- }
+ return InvokeResultBuilder.success(datas);
+ }
}
diff --git a/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettleFeeSheetController.java b/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettleFeeSheetController.java
index 4ee32179fd868d2225827e944d535a7d68759a11..11d32698ee1542abd93e6fe584a08ea1b82570e1 100644
--- a/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettleFeeSheetController.java
+++ b/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettleFeeSheetController.java
@@ -1,18 +1,18 @@
package com.lframework.xingyun.settle.controller;
import com.lframework.starter.common.utils.CollectionUtil;
-import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.starter.web.annotations.security.HasPermission;
import com.lframework.starter.web.controller.DefaultBaseController;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
-import com.lframework.starter.web.utils.ExcelUtil;
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.settle.bo.fee.customer.GetCustomerSettleFeeSheetBo;
import com.lframework.xingyun.settle.bo.fee.customer.QueryCustomerSettleFeeSheetBo;
-import com.lframework.xingyun.settle.excel.fee.customer.CustomerSettleFeeSheetExportModel;
import com.lframework.xingyun.settle.dto.fee.customer.CustomerSettleFeeSheetFullDto;
import com.lframework.xingyun.settle.entity.CustomerSettleFeeSheet;
+import com.lframework.xingyun.settle.excel.fee.customer.CustomerSettleFeeSheetExportTaskWorker;
import com.lframework.xingyun.settle.service.CustomerSettleFeeSheetService;
import com.lframework.xingyun.settle.vo.fee.customer.ApprovePassCustomerSettleFeeSheetVo;
import com.lframework.xingyun.settle.vo.fee.customer.ApproveRefuseCustomerSettleFeeSheetVo;
@@ -27,7 +27,6 @@ import java.util.stream.Collectors;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import org.springframework.beans.factory.annotation.Autowired;
-import com.lframework.starter.web.annotations.security.HasPermission;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -49,164 +48,144 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/customer/settle/feesheet")
public class CustomerSettleFeeSheetController extends DefaultBaseController {
- @Autowired
- private CustomerSettleFeeSheetService customerSettleFeeSheetService;
-
- /**
- * 客户费用单列表
- */
- @ApiOperation("客户费用单列表")
- @HasPermission({"customer-settle:fee-sheet:query"})
- @GetMapping("/query")
- public InvokeResult> query(
- @Valid QueryCustomerSettleFeeSheetVo vo) {
-
- PageResult pageResult = customerSettleFeeSheetService.query(
- getPageIndex(vo), getPageSize(vo), vo);
-
- List datas = pageResult.getDatas();
- List results = null;
-
- if (!CollectionUtil.isEmpty(datas)) {
- results = datas.stream().map(QueryCustomerSettleFeeSheetBo::new)
- .collect(Collectors.toList());
- }
+ @Autowired
+ private CustomerSettleFeeSheetService customerSettleFeeSheetService;
- return InvokeResultBuilder.success(PageResultUtil.rebuild(pageResult, results));
- }
-
- /**
- * 导出
- */
- @ApiOperation("导出")
- @HasPermission({"customer-settle:fee-sheet:export"})
- @PostMapping("/export")
- public void export(@Valid QueryCustomerSettleFeeSheetVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("客户费用单信息",
- CustomerSettleFeeSheetExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = customerSettleFeeSheetService.query(
- pageIndex, getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream()
- .map(CustomerSettleFeeSheetExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
- }
-
- /**
- * 根据ID查询
- */
- @ApiOperation("根据ID查询")
- @ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true)
- @HasPermission({"customer-settle:fee-sheet:query"})
- @GetMapping
- public InvokeResult findById(
- @NotBlank(message = "客户费用单ID不能为空!") String id) {
-
- CustomerSettleFeeSheetFullDto data = customerSettleFeeSheetService.getDetail(id);
+ /**
+ * 客户费用单列表
+ */
+ @ApiOperation("客户费用单列表")
+ @HasPermission({"customer-settle:fee-sheet:query"})
+ @GetMapping("/query")
+ public InvokeResult> query(
+ @Valid QueryCustomerSettleFeeSheetVo vo) {
- GetCustomerSettleFeeSheetBo result = new GetCustomerSettleFeeSheetBo(data);
+ PageResult pageResult = customerSettleFeeSheetService.query(
+ getPageIndex(vo), getPageSize(vo), vo);
- return InvokeResultBuilder.success(result);
- }
-
- /**
- * 创建客户费用单
- */
- @ApiOperation("创建客户费用单")
- @HasPermission({"customer-settle:fee-sheet:add"})
- @PostMapping
- public InvokeResult create(@RequestBody @Valid CreateCustomerSettleFeeSheetVo vo) {
-
- vo.validate();
+ List datas = pageResult.getDatas();
+ List results = null;
- String id = customerSettleFeeSheetService.create(vo);
-
- return InvokeResultBuilder.success(id);
+ if (!CollectionUtil.isEmpty(datas)) {
+ results = datas.stream().map(QueryCustomerSettleFeeSheetBo::new).collect(Collectors.toList());
}
- /**
- * 修改客户费用单
- */
- @ApiOperation("修改客户费用单")
- @HasPermission({"customer-settle:fee-sheet:modify"})
- @PutMapping
- public InvokeResult update(@RequestBody @Valid UpdateCustomerSettleFeeSheetVo vo) {
-
- vo.validate();
-
- customerSettleFeeSheetService.update(vo);
-
- return InvokeResultBuilder.success();
- }
-
- /**
- * 审核通过客户费用单
- */
- @ApiOperation("审核通过客户费用单")
- @HasPermission({"customer-settle:fee-sheet:approve"})
- @PatchMapping("/approve/pass")
- public InvokeResult approvePass(
- @RequestBody @Valid ApprovePassCustomerSettleFeeSheetVo vo) {
-
- customerSettleFeeSheetService.approvePass(vo);
-
- return InvokeResultBuilder.success();
- }
-
- /**
- * 直接审核通过客户费用单
- */
- @ApiOperation("直接审核通过客户费用单")
- @HasPermission({"customer-settle:fee-sheet:approve"})
- @PostMapping("/approve/pass/direct")
- public InvokeResult directApprovePass(
- @RequestBody @Valid CreateCustomerSettleFeeSheetVo vo) {
-
- customerSettleFeeSheetService.directApprovePass(vo);
-
- return InvokeResultBuilder.success();
- }
-
- /**
- * 审核拒绝客户费用单
- */
- @ApiOperation("审核拒绝客户费用单")
- @HasPermission({"customer-settle:fee-sheet:approve"})
- @PatchMapping("/approve/refuse")
- public InvokeResult approveRefuse(
- @RequestBody @Valid ApproveRefuseCustomerSettleFeeSheetVo vo) {
-
- customerSettleFeeSheetService.approveRefuse(vo);
-
- return InvokeResultBuilder.success();
- }
-
- /**
- * 删除客户费用单
- */
- @ApiOperation("删除客户费用单")
- @ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true)
- @HasPermission({"customer-settle:fee-sheet:delete"})
- @DeleteMapping
- public InvokeResult deleteById(@NotBlank(message = "客户费用单ID不能为空!") String id) {
-
- customerSettleFeeSheetService.deleteById(id);
-
- return InvokeResultBuilder.success();
- }
+ return InvokeResultBuilder.success(PageResultUtil.rebuild(pageResult, results));
+ }
+
+ /**
+ * 导出
+ */
+ @ApiOperation("导出")
+ @HasPermission({"customer-settle:fee-sheet:export"})
+ @PostMapping("/export")
+ public InvokeResult export(@Valid QueryCustomerSettleFeeSheetVo vo) {
+
+ ExportTaskUtil.exportTask("客户费用单信息", CustomerSettleFeeSheetExportTaskWorker.class, vo);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 根据ID查询
+ */
+ @ApiOperation("根据ID查询")
+ @ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true)
+ @HasPermission({"customer-settle:fee-sheet:query"})
+ @GetMapping
+ public InvokeResult findById(
+ @NotBlank(message = "客户费用单ID不能为空!") String id) {
+
+ CustomerSettleFeeSheetFullDto data = customerSettleFeeSheetService.getDetail(id);
+
+ GetCustomerSettleFeeSheetBo result = new GetCustomerSettleFeeSheetBo(data);
+
+ return InvokeResultBuilder.success(result);
+ }
+
+ /**
+ * 创建客户费用单
+ */
+ @ApiOperation("创建客户费用单")
+ @HasPermission({"customer-settle:fee-sheet:add"})
+ @PostMapping
+ public InvokeResult create(@RequestBody @Valid CreateCustomerSettleFeeSheetVo vo) {
+
+ vo.validate();
+
+ String id = customerSettleFeeSheetService.create(vo);
+
+ return InvokeResultBuilder.success(id);
+ }
+
+ /**
+ * 修改客户费用单
+ */
+ @ApiOperation("修改客户费用单")
+ @HasPermission({"customer-settle:fee-sheet:modify"})
+ @PutMapping
+ public InvokeResult update(@RequestBody @Valid UpdateCustomerSettleFeeSheetVo vo) {
+
+ vo.validate();
+
+ customerSettleFeeSheetService.update(vo);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 审核通过客户费用单
+ */
+ @ApiOperation("审核通过客户费用单")
+ @HasPermission({"customer-settle:fee-sheet:approve"})
+ @PatchMapping("/approve/pass")
+ public InvokeResult approvePass(
+ @RequestBody @Valid ApprovePassCustomerSettleFeeSheetVo vo) {
+
+ customerSettleFeeSheetService.approvePass(vo);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 直接审核通过客户费用单
+ */
+ @ApiOperation("直接审核通过客户费用单")
+ @HasPermission({"customer-settle:fee-sheet:approve"})
+ @PostMapping("/approve/pass/direct")
+ public InvokeResult directApprovePass(
+ @RequestBody @Valid CreateCustomerSettleFeeSheetVo vo) {
+
+ customerSettleFeeSheetService.directApprovePass(vo);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 审核拒绝客户费用单
+ */
+ @ApiOperation("审核拒绝客户费用单")
+ @HasPermission({"customer-settle:fee-sheet:approve"})
+ @PatchMapping("/approve/refuse")
+ public InvokeResult approveRefuse(
+ @RequestBody @Valid ApproveRefuseCustomerSettleFeeSheetVo vo) {
+
+ customerSettleFeeSheetService.approveRefuse(vo);
+
+ return InvokeResultBuilder.success();
+ }
+
+ /**
+ * 删除客户费用单
+ */
+ @ApiOperation("删除客户费用单")
+ @ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true)
+ @HasPermission({"customer-settle:fee-sheet:delete"})
+ @DeleteMapping
+ public InvokeResult deleteById(@NotBlank(message = "客户费用单ID不能为空!") String id) {
+
+ customerSettleFeeSheetService.deleteById(id);
+
+ return InvokeResultBuilder.success();
+ }
}
diff --git a/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettlePreSheetController.java b/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettlePreSheetController.java
index af4857a220fc82b05a0050af92a8967cc42b362b..72792cea9f77341bea5ee5d94e1c55b502029a2e 100644
--- a/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettlePreSheetController.java
+++ b/xingyun-settle/src/main/java/com/lframework/xingyun/settle/controller/CustomerSettlePreSheetController.java
@@ -1,18 +1,18 @@
package com.lframework.xingyun.settle.controller;
import com.lframework.starter.common.utils.CollectionUtil;
-import com.lframework.starter.web.resp.PageResult;
-import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.starter.web.annotations.security.HasPermission;
import com.lframework.starter.web.controller.DefaultBaseController;
-import com.lframework.starter.web.components.excel.ExcelMultipartWriterSheetBuilder;
import com.lframework.starter.web.resp.InvokeResult;
import com.lframework.starter.web.resp.InvokeResultBuilder;
-import com.lframework.starter.web.utils.ExcelUtil;
+import com.lframework.starter.web.resp.PageResult;
+import com.lframework.starter.web.utils.PageResultUtil;
+import com.lframework.xingyun.core.utils.ExportTaskUtil;
import com.lframework.xingyun.settle.bo.pre.customer.GetCustomerSettlePreSheetBo;
import com.lframework.xingyun.settle.bo.pre.customer.QueryCustomerSettlePreSheetBo;
-import com.lframework.xingyun.settle.excel.pre.customer.CustomerSettlePreSheetExportModel;
import com.lframework.xingyun.settle.dto.pre.customer.CustomerSettlePreSheetFullDto;
import com.lframework.xingyun.settle.entity.CustomerSettlePreSheet;
+import com.lframework.xingyun.settle.excel.pre.customer.CustomerSettlePreSheetExportTaskWorker;
import com.lframework.xingyun.settle.service.CustomerSettlePreSheetService;
import com.lframework.xingyun.settle.vo.pre.customer.ApprovePassCustomerSettlePreSheetVo;
import com.lframework.xingyun.settle.vo.pre.customer.ApproveRefuseCustomerSettlePreSheetVo;
@@ -27,7 +27,6 @@ import java.util.stream.Collectors;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import org.springframework.beans.factory.annotation.Autowired;
-import com.lframework.starter.web.annotations.security.HasPermission;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -49,164 +48,144 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/customer/settle/presheet")
public class CustomerSettlePreSheetController extends DefaultBaseController {
- @Autowired
- private CustomerSettlePreSheetService settlePreSheetService;
-
- /**
- * 客户预付款单列表
- */
- @ApiOperation("客户预付款单列表")
- @HasPermission({"customer-settle:pre-sheet:query"})
- @GetMapping("/query")
- public InvokeResult> query(
- @Valid QueryCustomerSettlePreSheetVo vo) {
-
- PageResult pageResult = settlePreSheetService.query(
- getPageIndex(vo), getPageSize(vo), vo);
-
- List datas = pageResult.getDatas();
- List results = null;
-
- if (!CollectionUtil.isEmpty(datas)) {
- results = datas.stream().map(QueryCustomerSettlePreSheetBo::new)
- .collect(Collectors.toList());
- }
+ @Autowired
+ private CustomerSettlePreSheetService settlePreSheetService;
- return InvokeResultBuilder.success(PageResultUtil.rebuild(pageResult, results));
- }
-
- /**
- * 导出
- */
- @ApiOperation("导出")
- @HasPermission({"customer-settle:pre-sheet:export"})
- @PostMapping("/export")
- public void export(@Valid QueryCustomerSettlePreSheetVo vo) {
-
- ExcelMultipartWriterSheetBuilder builder = ExcelUtil.multipartExportXls("客户预付款单信息",
- CustomerSettlePreSheetExportModel.class);
-
- try {
- int pageIndex = 1;
- while (true) {
- PageResult pageResult = settlePreSheetService.query(
- pageIndex, getExportSize(), vo);
- List datas = pageResult.getDatas();
- List models = datas.stream()
- .map(CustomerSettlePreSheetExportModel::new)
- .collect(Collectors.toList());
- builder.doWrite(models);
-
- if (!pageResult.isHasNext()) {
- break;
- }
- pageIndex++;
- }
- } finally {
- builder.finish();
- }
- }
-
- /**
- * 根据ID查询
- */
- @ApiOperation("根据ID查询")
- @ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true)
- @HasPermission({"customer-settle:pre-sheet:query"})
- @GetMapping
- public InvokeResult findById(
- @NotBlank(message = "客户预付款单ID不能为空!") String id) {
-
- CustomerSettlePreSheetFullDto data = settlePreSheetService.getDetail(id);
+ /**
+ * 客户预付款单列表
+ */
+ @ApiOperation("客户预付款单列表")
+ @HasPermission({"customer-settle:pre-sheet:query"})
+ @GetMapping("/query")
+ public InvokeResult> query(
+ @Valid QueryCustomerSettlePreSheetVo vo) {
- GetCustomerSettlePreSheetBo result = new GetCustomerSettlePreSheetBo(data);
+ PageResult