diff --git a/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/base/BaseEntity.java b/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/base/BaseEntity.java index 7fc5694..7aac962 100644 --- a/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/base/BaseEntity.java +++ b/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/base/BaseEntity.java @@ -53,12 +53,11 @@ public class BaseEntity implements Serializable { /** * 版本号 */ - @Version - @TableField( - value = "version", - update = "%s+1", - fill = FieldFill.INSERT_UPDATE - ) +// @TableField( +// value = "version", +// update = "%s+1", +// fill = FieldFill.INSERT_UPDATE +// ) protected long version; /** diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/ProjectVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/ProjectVO.java index 7838b9b..22bd624 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/ProjectVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/ProjectVO.java @@ -1,8 +1,11 @@ package com.chushang.inspection.project.vo; +import cn.hutool.core.date.DatePattern; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableField; import com.chushang.common.dict.annotation.DictFormat; import com.chushang.common.mybatis.annotation.Condition; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.time.LocalDateTime; @@ -13,57 +16,70 @@ import java.time.LocalDateTime; @Data public class ProjectVO { + @ExcelProperty(value = "项目id") private Long projectId; - + @ExcelProperty(value = "项目名称") private String projectName; /** * 项目联系人 * 查询条件 项目联系人 */ + @ExcelProperty(value = "项目联系人") private String projectConcat; /** * 项目联系人电话 * 查询条件 项目联系人电话 */ + @ExcelProperty(value = "项目联系电话") private String projectPhone; /** * 项目所属部门id * 查询条件 项目所属部门id 单id */ + @ExcelProperty(value = "项目所属部门id") private Long deptId; /** * 部门名称 */ + @ExcelProperty(value = "项目所属部门") private String deptName; /** * 创建时间 */ + @ExcelProperty(value = "项目创建时间") + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime createTime; /** * 项目状态 */ @DictFormat(dictType = "project_effect") + @ExcelProperty(value = "项目状态") private Integer projectEffect; /** * 总任务数 */ + @ExcelProperty(value = "项目总任务数量") private Integer totalTask; /** * 总商户数 */ + @ExcelProperty(value = "项目总商户数量") private Integer totalStore; /** * 总终端数 */ + @ExcelProperty(value = "项目总终端数量") private Integer totalTerminal; /** * 总工单数 */ + @ExcelProperty(value = "项目总工单数量") private Integer totalWrk; /** * 总巡检数 */ + @ExcelProperty(value = "项目总巡检数量") private Integer totalIns; diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/consumer/InspectionConsumerService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/consumer/InspectionConsumerService.java index 3b9ebda..83633e0 100644 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/consumer/InspectionConsumerService.java +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/consumer/InspectionConsumerService.java @@ -33,7 +33,7 @@ import java.util.Objects; */ @Slf4j @Component -@RocketMQMessageListener(topic = ServiceConstant.INSPECTION + 1, consumerGroup = ServiceConstant.INSPECTION_CONSUMER_GROUP) +@RocketMQMessageListener(topic = ServiceConstant.INSPECTION, consumerGroup = ServiceConstant.INSPECTION_CONSUMER_GROUP) public class InspectionConsumerService implements RocketMQListener { @Resource RemoteTaskService remoteTaskService; diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectController.java index 6f6950a..ca9bbbe 100644 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectController.java +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectController.java @@ -156,11 +156,24 @@ public class WrkProjectController { * 项目数据 展示 */ @GetMapping(value = "/project/data") -// @RequiresPermissions("inspection:project:info") + @RequiresPermissions("inspection:project:info") public AjaxResult projectData(ProjectQuery projectQuery) { return AjaxResult.success(projectService.projectData(projectQuery)); } + /** + * 项目数据导出 + * @param projectQuery 查询条件 + */ + @SysLog(value = "项目数据", businessType = BusinessType.EXPORT) + @GetMapping(value = "/project/data/export") +// @RequiresPermissions("inspection:project:export") + public AjaxResult projectDataExport(ProjectQuery projectQuery) + { + return AjaxResult.success("项目数据导出成功, 请在后台任务中查看, 任务id: ["+ projectService.projectDataExport(projectQuery) +"]"); + } + + } diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectService.java index de603a5..871cb5f 100644 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectService.java +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectService.java @@ -1,11 +1,15 @@ package com.chushang.inspection.project.service; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.chushang.common.core.constant.SecurityConstants; import com.chushang.common.core.exception.utils.AssertUtil; +import com.chushang.common.core.web.Result; +import com.chushang.common.excel.utils.ExcelUtils; import com.chushang.common.mybatis.enums.Operator; import com.chushang.common.mybatis.page.CommonParam; import com.chushang.common.mybatis.utils.PageResult; @@ -17,11 +21,20 @@ import com.chushang.inspection.project.po.WrkProjectContract; import com.chushang.inspection.project.query.ProjectQuery; import com.chushang.inspection.project.vo.CountVO; import com.chushang.inspection.project.vo.ProjectVO; +import com.chushang.inspection.terminal.query.FiveUnifiedStoreDetailsQuery; import com.chushang.inspection.terminal.service.StoreService; import com.chushang.inspection.terminal.service.TerminalService; +import com.chushang.inspection.terminal.vo.FiveStoreVO; import com.chushang.inspection.work.service.WrkInfoService; +import com.chushang.oss.entity.dto.UploadBytesDTO; +import com.chushang.oss.entity.vo.FileSourceVo; +import com.chushang.oss.feign.RemoteOssService; import com.chushang.security.utils.SecurityUtils; import com.chushang.system.feign.RemoteDeptService; +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; @@ -30,6 +43,8 @@ import com.chushang.inspection.project.mapper.WrkProjectMapper; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -55,6 +70,10 @@ public class WrkProjectService extends ServiceImpl WrkInfoService wrkInfoService; @Resource RemoteDeptService remoteDeptService; + @Resource + RemoteTaskService remoteTaskService; + @Resource + RemoteOssService ossService; @DataScope public PageResult pageList(WrkProject project, CommonParam commonParam) { @@ -263,6 +282,70 @@ public class WrkProjectService extends ServiceImpl ); List recordList = page.getRecords(); List list = BeanUtil.copyToList(recordList, ProjectVO.class); + if (CollectionUtil.isNotEmpty(list)){ + covertProjectData(list); + } + return new PageResult(list,page.getTotal(),page.getSize(),page.getCurrent()); + } + @DataScope + public Long projectDataExport(ProjectQuery projectQuery) { + + LambdaQueryWrapper sql = WrapperUtils.builder(projectQuery, CommonParam.buildAllRequest()); + long recordList = this.count( + sql + ); + AssertUtil.invalidate (recordList <= 0, "导出数据为空"); + + return remoteTaskService.createTask(CreateTaskDTO.builder() + .params(JSON.toJSONString(projectQuery)) + .taskName("项目数据导出") + .applicationName(ServiceEnum.INSPECTION) + .methodName("export") + .className(this.getClass().getName()) + .deptId(SecurityUtils.getDeptId()) + .taskType(TaskTypeEnum.DOWN) + .remark("五统一商户明细导出") + .createBy(SecurityUtils.getUsername()) + .build(), SecurityConstants.INNER).getData(); + } + public Result export(String params){ + ProjectQuery projectQuery = JSON.parseObject(params, ProjectQuery.class); + LambdaQueryWrapper sql = WrapperUtils.builder(projectQuery, CommonParam.buildAllRequest()); + List recordList = this.list( + sql + ); + + List list = BeanUtil.copyToList(recordList, ProjectVO.class); + if (CollectionUtil.isNotEmpty(list)){ + covertProjectData(list); + } + + try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()){ + // 如果为空时 创建一个空excel + if (CollectionUtil.isEmpty(list)){ + + }else { + ExcelUtils.exportList(outputStream, ProjectVO.class, list, "商户数据"); + } + // 上传到oss fileStore 是五统一的商户文件 + Result> listResult = ossService.uploadBytes(UploadBytesDTO.builder() + .bytes(outputStream.toByteArray()).build(), "商户数据导出.xlsx", false, "", "projectData", 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); + } + } + + private void covertProjectData(List list) { Set deptIds = list.stream().map(ProjectVO::getDeptId).collect(Collectors.toSet()); Map deptNameMap = remoteDeptService.getDeptNameByIds(deptIds, SecurityConstants.INNER); @@ -288,6 +371,5 @@ public class WrkProjectService extends ServiceImpl p.setTotalStore(totalStoreMap.getOrDefault(projectId, 0)); p.setTotalTask(totalTaskMap.getOrDefault(projectId, 0)); }); - return new PageResult(list,page.getTotal(),page.getSize(),page.getCurrent()); } } 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 51a298c..de0f180 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 @@ -8,6 +8,7 @@ import com.chushang.common.core.constant.SecurityConstants; 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; @@ -76,7 +77,11 @@ public class FiveStoreServiceImpl extends ServiceImpl export(String params){ FiveUnifiedStoreDetailsQuery query = JSON.parseObject(params, FiveUnifiedStoreDetailsQuery.class); List listFiveStores = baseMapper.pageList(query, null); diff --git a/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/entity/dto/UploadBytesDTO.java b/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/entity/dto/UploadBytesDTO.java index bd77f29..29fa85a 100644 --- a/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/entity/dto/UploadBytesDTO.java +++ b/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/entity/dto/UploadBytesDTO.java @@ -1,7 +1,12 @@ package com.chushang.oss.entity.dto; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; /** * @auther: zhao @@ -9,7 +14,11 @@ import lombok.Data; */ @Data @Builder -public class UploadBytesDTO { +@AllArgsConstructor +@NoArgsConstructor +public class UploadBytesDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; private byte[] bytes; diff --git a/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/entity/dto/UploadStreamDTO.java b/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/entity/dto/UploadStreamDTO.java index ed3bcc2..17a6d21 100644 --- a/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/entity/dto/UploadStreamDTO.java +++ b/chushang-modules/chushang-module-oss/oss-feign/src/main/java/com/chushang/oss/entity/dto/UploadStreamDTO.java @@ -1,10 +1,14 @@ package com.chushang.oss.entity.dto; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; +import java.io.Serial; +import java.io.Serializable; /** * 流文件上传 @@ -13,7 +17,11 @@ import java.io.InputStream; */ @Data @Builder -public class UploadStreamDTO { +@AllArgsConstructor +@NoArgsConstructor +public class UploadStreamDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; private InputStream is; diff --git a/chushang-modules/chushang-module-task/task-service/src/main/java/com/chushang/task/remote/RemoteTaskController.java b/chushang-modules/chushang-module-task/task-service/src/main/java/com/chushang/task/remote/RemoteTaskController.java index 9122c22..007382c 100644 --- a/chushang-modules/chushang-module-task/task-service/src/main/java/com/chushang/task/remote/RemoteTaskController.java +++ b/chushang-modules/chushang-module-task/task-service/src/main/java/com/chushang/task/remote/RemoteTaskController.java @@ -1,6 +1,8 @@ package com.chushang.task.remote; import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.chushang.common.core.web.Result; import com.chushang.common.mq.produce.MqProduceService; import com.chushang.task.entity.TaskInfo; @@ -13,6 +15,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.time.LocalDateTime; /** * @auther: zhao @@ -62,8 +65,11 @@ public class RemoteTaskController implements RemoteTaskService { .lastRunResult(task.getLastRunResult()) .lastRunTime(task.getLastRunTime()) .remark(task.getRemark()) + .lastRunTime(task.getLastRunTime()) + .lastRunResult(task.getLastRunResult()) .build(); taskInfo.setUpdateBy("system"); - return Result.ok(taskInfoService.updateById(taskInfo)); + return Result.ok(taskInfoService.update(taskInfo, new LambdaUpdateWrapper() + .eq(TaskInfo::getTaskId, taskId))); } } diff --git a/chushang-modules/chushang-module-task/task-service/src/main/java/com/chushang/task/service/TaskInfoService.java b/chushang-modules/chushang-module-task/task-service/src/main/java/com/chushang/task/service/TaskInfoService.java index b26b929..7c06b94 100644 --- a/chushang-modules/chushang-module-task/task-service/src/main/java/com/chushang/task/service/TaskInfoService.java +++ b/chushang-modules/chushang-module-task/task-service/src/main/java/com/chushang/task/service/TaskInfoService.java @@ -54,7 +54,7 @@ public class TaskInfoService extends ServiceImpl imple } public void joinQueue(TaskInfo taskInfo){ - mqProduceService.send(taskInfo.getApplicationName() + 1, taskInfo); + mqProduceService.send(taskInfo.getApplicationName(), taskInfo); taskInfo.setTaskStatus(TaskStatusEnum.DISPATCH.getCode()); updateById(taskInfo);