parent
3f82ff3ff1
commit
ab9146e0f0
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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<TaskInfo> {
|
||||
@Resource
|
||||
RemoteTaskService remoteTaskService;
|
||||
|
|
|
|||
|
|
@ -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) +"]");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<WrkProjectMapper, WrkProject>
|
|||
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<WrkProjectMapper, WrkProject>
|
|||
);
|
||||
List<WrkProject> recordList = page.getRecords();
|
||||
List<ProjectVO> 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<WrkProject> 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<String> export(String params){
|
||||
ProjectQuery projectQuery = JSON.parseObject(params, ProjectQuery.class);
|
||||
LambdaQueryWrapper<WrkProject> sql = WrapperUtils.builder(projectQuery, CommonParam.buildAllRequest());
|
||||
List<WrkProject> recordList = this.list(
|
||||
sql
|
||||
);
|
||||
|
||||
List<ProjectVO> 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<List<FileSourceVo>> listResult = ossService.uploadBytes(UploadBytesDTO.builder()
|
||||
.bytes(outputStream.toByteArray()).build(), "商户数据导出.xlsx", false, "", "projectData", SecurityConstants.INNER);
|
||||
|
||||
if (listResult.isSuccess() && CollectionUtil.isNotEmpty(listResult.getData())){
|
||||
List<FileSourceVo> 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<ProjectVO> list) {
|
||||
Set<Long> deptIds = list.stream().map(ProjectVO::getDeptId).collect(Collectors.toSet());
|
||||
Map<Long, String> deptNameMap
|
||||
= remoteDeptService.getDeptNameByIds(deptIds, SecurityConstants.INNER);
|
||||
|
|
@ -288,6 +371,5 @@ public class WrkProjectService extends ServiceImpl<WrkProjectMapper, WrkProject>
|
|||
p.setTotalStore(totalStoreMap.getOrDefault(projectId, 0));
|
||||
p.setTotalTask(totalTaskMap.getOrDefault(projectId, 0));
|
||||
});
|
||||
return new PageResult(list,page.getTotal(),page.getSize(),page.getCurrent());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<FiveStoreMapper, FiveStore
|
|||
page.getCurrent());
|
||||
}
|
||||
|
||||
/**
|
||||
* 在此处获取 dataScope
|
||||
*/
|
||||
@Override
|
||||
@DataScope(deptAlias = "t")
|
||||
public void download(FiveUnifiedStoreDetailsQuery query, HttpServletResponse response) {
|
||||
remoteTaskService.createTask(CreateTaskDTO.builder()
|
||||
.params(JSON.toJSONString(query))
|
||||
|
|
@ -91,6 +96,12 @@ public class FiveStoreServiceImpl extends ServiceImpl<FiveStoreMapper, FiveStore
|
|||
.build(), SecurityConstants.INNER);
|
||||
}
|
||||
|
||||
/**
|
||||
* todo 使用后台任务时, 可能导致无法获取对应dataScope数据
|
||||
* 参考 com.chushang.inspection.project.service.WrkProjectService#projectDataExport
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
public Result<String> export(String params){
|
||||
FiveUnifiedStoreDetailsQuery query = JSON.parseObject(params, FiveUnifiedStoreDetailsQuery.class);
|
||||
List<FiveStoreVO> listFiveStores = baseMapper.pageList(query, null);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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<TaskInfo>()
|
||||
.eq(TaskInfo::getTaskId, taskId)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public class TaskInfoService extends ServiceImpl<TaskInfoMapper, TaskInfo> imple
|
|||
}
|
||||
|
||||
public void joinQueue(TaskInfo taskInfo){
|
||||
mqProduceService.send(taskInfo.getApplicationName() + 1, taskInfo);
|
||||
mqProduceService.send(taskInfo.getApplicationName(), taskInfo);
|
||||
|
||||
taskInfo.setTaskStatus(TaskStatusEnum.DISPATCH.getCode());
|
||||
updateById(taskInfo);
|
||||
|
|
|
|||
Loading…
Reference in New Issue