diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/pom.xml b/chushang-modules/chushang-module-inspection/inspection-feign/pom.xml
index 1f5899d..89f11e2 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/pom.xml
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/pom.xml
@@ -17,5 +17,9 @@
com.chushang
chushang-common-excel
+
+ com.chushang
+ oss-feign
+
diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskDTO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskDTO.java
index c47b285..cfa2cb2 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskDTO.java
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskDTO.java
@@ -23,6 +23,9 @@ public class TaskDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
+ @NotNull(message = "任务所属项目id不能为空", groups = {Create.class, Update.class})
+ private Long projectId;
+
/**
* 上级ID
*/
diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/PollingTask.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/PollingTask.java
index 9c430fe..5a488df 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/PollingTask.java
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/PollingTask.java
@@ -32,6 +32,11 @@ public class PollingTask extends BaseEntity {
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
+ /**
+ * 项目id
+ */
+ @TableField(value = "project_id")
+ private Long projectId;
/**
* 上级id
diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/vo/FiveStoreVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/vo/FiveStoreVO.java
index 13f2dbf..174daab 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/vo/FiveStoreVO.java
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/vo/FiveStoreVO.java
@@ -76,7 +76,7 @@ public class FiveStoreVO implements Serializable {
*/
@JsonIgnore
@ExcelIgnore
- private Long secondaryBranches;
+ private Long secondaryBranch;
/**
* 二级分行编号
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/PollTaskController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/PollTaskController.java
index 7200620..84efaa3 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/PollTaskController.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/PollTaskController.java
@@ -28,7 +28,7 @@ import java.util.List;
*/
@Slf4j
@RestController
-@RequestMapping(value = "/task")
+@RequestMapping(value = "/inspection/task")
public class PollTaskController {
@Resource
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/controller/FiveStoreController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/controller/FiveStoreController.java
index c1dce83..03b7ab6 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/controller/FiveStoreController.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/controller/FiveStoreController.java
@@ -1,6 +1,8 @@
package com.chushang.inspection.terminal.controller;
import com.chushang.common.core.web.AjaxResult;
+import com.chushang.common.log.annotation.SysLog;
+import com.chushang.common.log.enums.BusinessType;
import com.chushang.inspection.terminal.query.FiveUnifiedStoreDetailsQuery;
import com.chushang.inspection.terminal.service.FiveStoreService;
import com.chushang.security.annotation.RequiresPermissions;
@@ -9,6 +11,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
/**
* 五统一商户明细(内蒙古建行随付贷)(st_five_store)表控制层
@@ -32,5 +35,14 @@ public class FiveStoreController {
return AjaxResult.success(fiveStoreService.pageList(query));
}
+ /**
+ * 下载五统一商户明细(内蒙古建行随付贷)
+ */
+ @GetMapping("/download")
+ @SysLog(value = "五统一商户明细(内蒙古建行随付贷)", businessType = BusinessType.EXPORT)
+ public void download(@Validated FiveUnifiedStoreDetailsQuery query, HttpServletResponse response) {
+ fiveStoreService.download(query, response);
+ }
+
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/mapper/FiveStoreMapper.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/mapper/FiveStoreMapper.java
index bd0d0d8..035a62d 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/mapper/FiveStoreMapper.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/mapper/FiveStoreMapper.java
@@ -1,11 +1,21 @@
package com.chushang.inspection.terminal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.chushang.datascope.annotation.DataScope;
import com.chushang.inspection.terminal.po.FiveStore;
+import com.chushang.inspection.terminal.query.FiveUnifiedStoreDetailsQuery;
+import com.chushang.inspection.terminal.vo.FiveStoreVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* @auther: zhao
* @date: 2024/6/21 16:39
*/
public interface FiveStoreMapper extends BaseMapper {
+ @DataScope(deptAlias = "t")
+ List pageList(@Param("query") FiveUnifiedStoreDetailsQuery query,
+ Page page);
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/FiveStoreService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/FiveStoreService.java
index aed06d9..ca18d68 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/FiveStoreService.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/FiveStoreService.java
@@ -5,6 +5,8 @@ import com.chushang.common.mybatis.utils.PageResult;
import com.chushang.inspection.terminal.po.FiveStore;
import com.chushang.inspection.terminal.query.FiveUnifiedStoreDetailsQuery;
+import javax.servlet.http.HttpServletResponse;
+
/**
* @auther: zhao
* @date: 2024/6/21 16:39
@@ -13,4 +15,6 @@ public interface FiveStoreService extends IService{
PageResult pageList(FiveUnifiedStoreDetailsQuery query);
+
+ void download(FiveUnifiedStoreDetailsQuery query, HttpServletResponse response);
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/FiveStoreServiceImpl.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/FiveStoreServiceImpl.java
index 6561fb6..9249501 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/FiveStoreServiceImpl.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/service/impl/FiveStoreServiceImpl.java
@@ -1,25 +1,165 @@
package com.chushang.inspection.terminal.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.URLUtil;
+import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.chushang.common.core.constant.SecurityConstants;
+import com.chushang.common.core.util.FileUtils;
+import com.chushang.common.core.web.Result;
+import com.chushang.common.excel.utils.ExcelUtils;
import com.chushang.common.mybatis.utils.PageResult;
import com.chushang.datascope.annotation.DataScope;
+import com.chushang.inspection.project.po.PollingTask;
+import com.chushang.inspection.project.service.PollingTaskService;
import com.chushang.inspection.terminal.po.FiveStore;
+import com.chushang.inspection.terminal.po.Store;
import com.chushang.inspection.terminal.query.FiveUnifiedStoreDetailsQuery;
import com.chushang.inspection.terminal.service.FiveStoreService;
+import com.chushang.inspection.terminal.service.StoreService;
+import com.chushang.inspection.terminal.vo.FiveStoreVO;
+import com.chushang.oss.config.UploadConfig;
+import com.chushang.oss.entity.vo.FileSourceVo;
+import com.chushang.oss.feign.RemoteOssService;
+import com.chushang.security.utils.SecurityUtils;
+import com.chushang.task.entity.dto.CreateTaskDTO;
+import com.chushang.task.enums.ServiceEnum;
+import com.chushang.task.enums.TaskTypeEnum;
+import com.chushang.task.feign.RemoteTaskService;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chushang.inspection.terminal.mapper.FiveStoreMapper;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
+
/**
* 五统一商户 -- 只有建行内蒙古有
* @auther: zhao
* @date: 2024/6/21 16:39
*/
+@Slf4j
@Service
public class FiveStoreServiceImpl extends ServiceImpl implements FiveStoreService {
+ @Resource
+ PollingTaskService taskService;
+ @Resource
+ StoreService storeService;
+ @Resource
+ RemoteTaskService remoteTaskService;
+ @Resource
+ RemoteOssService ossService;
+
+
+ /**
+ * 需要使用 代码进行补偿
+ * s.store_name,
+ * pt1.number firstLevelBranchNumber,
+ * pt1.`name` firstLevelBranchName,
+ *
+ * pt2.number secondaryBranchesNumber,
+ * pt2.`name` secondaryBranchesName,
+ */
@Override
- @DataScope
public PageResult pageList(FiveUnifiedStoreDetailsQuery query) {
- return null;
+ Page page = new Page<>(query.getPage(),query.getLimit());
+ List listFiveStores = baseMapper.pageList(query, page);
+ convert(listFiveStores);
+ return new PageResult(
+ listFiveStores,
+ page.getTotal(),
+ page.getPages(),
+ page.getCurrent());
}
+
+ @Override
+ public void download(FiveUnifiedStoreDetailsQuery query, HttpServletResponse response) {
+ remoteTaskService.createTask(CreateTaskDTO.builder()
+ .params(JSON.toJSONString(query))
+ .taskName("五统一商户明细导出")
+ .applicationName(ServiceEnum.INSPECTION)
+ .methodName("export")
+ .className(this.getClass().getName())
+ .deptId(SecurityUtils.getDeptId())
+ .taskType(TaskTypeEnum.DOWN)
+ .remark("五统一商户明细导出")
+ .createBy(SecurityUtils.getUsername())
+ .build(), SecurityConstants.INNER);
+ }
+
+ public Result export(String params){
+ FiveUnifiedStoreDetailsQuery query = JSON.parseObject(params, FiveUnifiedStoreDetailsQuery.class);
+ List listFiveStores = baseMapper.pageList(query, null);
+ convert(listFiveStores);
+ try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()){
+ ExcelUtils.exportList(outputStream, FiveStoreVO.class, listFiveStores, "五统一商户明细");
+ // 上传到oss fileStore 是五统一的商户文件
+ Result> listResult = ossService.uploadFile(outputStream.toByteArray(), "五统一商户明细导出.xlsx", false, "", "fileStore", SecurityConstants.INNER);
+
+ if (listResult.isSuccess() && CollectionUtil.isNotEmpty(listResult.getData())){
+ List data = listResult.getData();
+ FileSourceVo fileSourceVo = data.get(0);
+ String filePath = fileSourceVo.getFilePath();
+ return Result.ok(filePath);
+ }else {
+ log.error("生成文件异常, {}, {}", listResult.getCode(), listResult.getMsg());
+ return Result.failed(listResult.getCode(), listResult.getMsg());
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+
+ public void convert(List listFiveStores){
+ if (CollectionUtil.isNotEmpty(listFiveStores))
+ {
+ // firstLevel
+ Set firstLevelBranches = listFiveStores.stream().map(FiveStoreVO::getFirstLevelBranch).collect(Collectors.toSet());
+ Set secondaryBranches = listFiveStores.stream().map(FiveStoreVO::getSecondaryBranch).collect(Collectors.toSet());
+ Set alls = new HashSet<>();
+ alls.addAll(firstLevelBranches);
+ alls.addAll(secondaryBranches);
+ Map taskMap = new HashMap<>();
+ if (CollectionUtil.isNotEmpty(alls)){
+ List pollingTasks = taskService.listByIds(alls);
+ taskMap = pollingTasks.stream().collect(Collectors.toMap(PollingTask::getId, pollingTask -> pollingTask, (oldValue, newValue) -> newValue));
+ }
+ Set storeIds = listFiveStores.stream().map(FiveStoreVO::getStoreId).collect(Collectors.toSet());
+ Map storeMap = new HashMap<>();
+ if (CollectionUtil.isNotEmpty(storeIds)){
+ List stores = storeService.listByIds(storeIds);
+ storeMap = stores.stream().collect(Collectors.toMap(Store::getStoreId, store -> store, (oldValue, newValue) -> newValue));
+ }
+ for (FiveStoreVO listFiveStore : listFiveStores) {
+ Long storeId = listFiveStore.getStoreId();
+ Store store = storeMap.get(storeId);
+ if (ObjectUtil.isNotEmpty(store)){
+ listFiveStore.setStoreName(store.getStoreName());
+ }
+ Long firstLevelBranch = listFiveStore.getFirstLevelBranch();
+ Long secondaryBranch = listFiveStore.getSecondaryBranch();
+ PollingTask firstPollingTask = taskMap.get(firstLevelBranch);
+ if (ObjectUtil.isNotEmpty(firstPollingTask)){
+ listFiveStore.setFirstLevelBranchNumber(firstPollingTask.getNumber());
+ listFiveStore.setFirstLevelBranchName(firstPollingTask.getName());
+ }
+ PollingTask secondPollingTask = taskMap.get(secondaryBranch);
+ if (ObjectUtil.isNotEmpty(secondPollingTask)){
+ listFiveStore.setFirstLevelBranchNumber(secondPollingTask.getNumber());
+ listFiveStore.setFirstLevelBranchName(secondPollingTask.getName());
+ }
+ }
+ }
+ }
+
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/FiveStoreMapper.xml b/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/FiveStoreMapper.xml
index 51f6245..86475eb 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/FiveStoreMapper.xml
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/FiveStoreMapper.xml
@@ -10,9 +10,9 @@
-
-
-
+
+
+
@@ -33,4 +33,42 @@
consumption_date, marketer, version, del_state, create_by, create_time, update_by,
update_time
+
+
diff --git a/chushang-modules/chushang-module-inspection/pom.xml b/chushang-modules/chushang-module-inspection/pom.xml
index 1307b28..def380b 100644
--- a/chushang-modules/chushang-module-inspection/pom.xml
+++ b/chushang-modules/chushang-module-inspection/pom.xml
@@ -34,6 +34,11 @@
task-feign
1.0.0
+
+ com.chushang
+ oss-feign
+ 1.0.0
+