1. 工单相关
This commit is contained in:
parent
1a844ffa44
commit
6d58e43fa6
|
|
@ -15,11 +15,12 @@
|
|||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.chushang</groupId>
|
||||
<artifactId>chushang-common-excel</artifactId>
|
||||
<artifactId>chushang-common-office</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.chushang</groupId>
|
||||
<artifactId>oss-feign</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -36,6 +36,10 @@ public class InspectionConfigVO implements Serializable {
|
|||
* 模板路径
|
||||
*/
|
||||
private String templateUrl;
|
||||
/**
|
||||
* 对应的工单id
|
||||
*/
|
||||
private Long wrkId;
|
||||
/**
|
||||
* 详细信息
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -22,13 +22,11 @@ public class WrkImgVO implements Serializable {
|
|||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(value = "img_id", type = IdType.ASSIGN_ID)
|
||||
private Long imgId;
|
||||
|
||||
/**
|
||||
* 工单id
|
||||
*/
|
||||
@TableField(value = "wrk_id")
|
||||
private Long wrkId;
|
||||
|
||||
/**
|
||||
|
|
@ -40,18 +38,15 @@ public class WrkImgVO implements Serializable {
|
|||
/**
|
||||
* 真实请求路径
|
||||
*/
|
||||
@TableField(value = "real_path")
|
||||
private String realPath;
|
||||
|
||||
/**
|
||||
* 文件fid 值
|
||||
*/
|
||||
@TableField(value = "fid")
|
||||
private String fid;
|
||||
|
||||
/**
|
||||
* 文件大小
|
||||
*/
|
||||
@TableField(value = "`size`")
|
||||
private Long size;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import com.chushang.common.core.context.SecurityContextHolder;
|
|||
import com.chushang.common.core.util.SpringUtils;
|
||||
import com.chushang.common.core.web.AjaxResult;
|
||||
import com.chushang.common.core.web.Result;
|
||||
import com.chushang.inspection.utils.PoolUtils;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
import com.chushang.task.entity.TaskInfo;
|
||||
import com.chushang.task.entity.dto.UpdateTaskDTO;
|
||||
|
|
@ -36,6 +37,7 @@ import java.util.Objects;
|
|||
public class InspectionConsumerService implements RocketMQListener<TaskInfo> {
|
||||
@Resource
|
||||
RemoteTaskService remoteTaskService;
|
||||
|
||||
/**
|
||||
* 执行 下发的 后台任务
|
||||
*/
|
||||
|
|
@ -44,67 +46,72 @@ public class InspectionConsumerService implements RocketMQListener<TaskInfo> {
|
|||
remoteTaskService.updateTask(message.getTaskId(), UpdateTaskDTO.builder()
|
||||
.taskStatus(TaskStatusEnum.EXECUTING)
|
||||
.build(), SecurityConstants.INNER);
|
||||
// 通过 反射 去执行具体方法
|
||||
String className = message.getClassName();
|
||||
String methodName = message.getMethodName();
|
||||
String params = message.getParams();
|
||||
Integer taskType = message.getTaskType();
|
||||
SecurityContextHolder.setDeptId(message.getDeptId());
|
||||
UpdateTaskDTO updateTask = new UpdateTaskDTO();
|
||||
try {
|
||||
// 包名+类名
|
||||
Class classzz = Class.forName(className);
|
||||
// 获取构造器对象
|
||||
// 利用spring 获取对象
|
||||
Object o = SpringUtils.getBean(classzz);
|
||||
// 传递需要执行的方法
|
||||
Method method = classzz.getMethod(methodName, String.class);
|
||||
// 调用的方法有多个参数 Method method = classzz.getMethod("class1method",long.class,String.class,String.class);
|
||||
// 如果调用的方法有参数 invoke(o,param1,param2,param3,...)
|
||||
updateTask.setLastRunTime(LocalDateTime.now());
|
||||
Object invoke = method.invoke(o, params);
|
||||
if (invoke instanceof AjaxResult result){
|
||||
Integer code = (Integer) result.get(AjaxResult.DATA_TAG);
|
||||
if (result.isSuccess() && 200 == code){
|
||||
updateTask.setTaskStatus(TaskStatusEnum.EXECUTE_SUCCESS);
|
||||
String data = (String)result.get(AjaxResult.DATA_TAG);
|
||||
String msg = (String) result.get(AjaxResult.MSG_TAG);
|
||||
updateTask.setLastRunResult(msg);
|
||||
if (Objects.equals(taskType, TaskTypeEnum.DOWN.getCode())){
|
||||
updateTask.setRemark(data);
|
||||
// 通过线程池 进行调用
|
||||
PoolUtils.SENTINEL.getInstance().execute(()->{
|
||||
// 通过 反射 去执行具体方法
|
||||
String className = message.getClassName();
|
||||
String methodName = message.getMethodName();
|
||||
String params = message.getParams();
|
||||
Integer taskType = message.getTaskType();
|
||||
SecurityContextHolder.setDeptId(message.getDeptId());
|
||||
UpdateTaskDTO updateTask = new UpdateTaskDTO();
|
||||
try {
|
||||
// 包名+类名
|
||||
Class classzz = Class.forName(className);
|
||||
// 获取构造器对象
|
||||
// 利用spring 获取对象
|
||||
Object o = SpringUtils.getBean(classzz);
|
||||
// 传递需要执行的方法
|
||||
Method method = classzz.getMethod(methodName, String.class);
|
||||
// 调用的方法有多个参数 Method method = classzz.getMethod("class1method",long.class,String.class,String.class);
|
||||
// 如果调用的方法有参数 invoke(o,param1,param2,param3,...)
|
||||
updateTask.setLastRunTime(LocalDateTime.now());
|
||||
Object invoke = method.invoke(o, params);
|
||||
if (invoke instanceof AjaxResult result){
|
||||
Integer code = (Integer) result.get(AjaxResult.DATA_TAG);
|
||||
if (result.isSuccess() && 200 == code){
|
||||
updateTask.setTaskStatus(TaskStatusEnum.EXECUTE_SUCCESS);
|
||||
String data = (String)result.get(AjaxResult.DATA_TAG);
|
||||
String msg = (String) result.get(AjaxResult.MSG_TAG);
|
||||
updateTask.setLastRunResult(msg);
|
||||
if (Objects.equals(taskType, TaskTypeEnum.DOWN.getCode())){
|
||||
updateTask.setRemark(data);
|
||||
}
|
||||
}else {
|
||||
String errMsg = (String)result.get(AjaxResult.MSG_TAG);
|
||||
updateTask.setTaskStatus(TaskStatusEnum.EXECUTE_FAIL);
|
||||
updateTask.setLastRunResult(errMsg);
|
||||
}
|
||||
}else {
|
||||
String errMsg = (String)result.get(AjaxResult.MSG_TAG);
|
||||
updateTask.setTaskStatus(TaskStatusEnum.EXECUTE_FAIL);
|
||||
updateTask.setLastRunResult(errMsg);
|
||||
}
|
||||
}else if (invoke instanceof Result<?> result){
|
||||
if (result.isSuccess() && result.getCode() == 200){
|
||||
updateTask.setTaskStatus(TaskStatusEnum.EXECUTE_SUCCESS);
|
||||
String data = (String)result.getData();
|
||||
String msg = result.getMsg();
|
||||
updateTask.setLastRunResult(msg);
|
||||
if (Objects.equals(taskType, TaskTypeEnum.DOWN.getCode())){
|
||||
updateTask.setRemark(data);
|
||||
else if (invoke instanceof Result<?> result){
|
||||
if (result.isSuccess() && result.getCode() == 200){
|
||||
updateTask.setTaskStatus(TaskStatusEnum.EXECUTE_SUCCESS);
|
||||
String data = (String)result.getData();
|
||||
String msg = result.getMsg();
|
||||
updateTask.setLastRunResult(msg);
|
||||
if (Objects.equals(taskType, TaskTypeEnum.DOWN.getCode())){
|
||||
updateTask.setRemark(data);
|
||||
}
|
||||
}else {
|
||||
String errMsg = result.getMsg();
|
||||
updateTask.setTaskStatus(TaskStatusEnum.EXECUTE_FAIL);
|
||||
updateTask.setLastRunResult(errMsg);
|
||||
}
|
||||
}else {
|
||||
String errMsg = result.getMsg();
|
||||
updateTask.setTaskStatus(TaskStatusEnum.EXECUTE_FAIL);
|
||||
updateTask.setLastRunResult(errMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e){
|
||||
log.error("执行失败", e);
|
||||
updateTask.setTaskStatus(TaskStatusEnum.EXECUTE_FAIL);
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append(e).append("\n");
|
||||
for (StackTraceElement s : e.getStackTrace()) {
|
||||
stringBuilder.append(s.toString()).append("\n");
|
||||
catch (Exception e)
|
||||
{
|
||||
log.error("执行失败", e);
|
||||
updateTask.setTaskStatus(TaskStatusEnum.EXECUTE_FAIL);
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append(e).append("\n");
|
||||
for (StackTraceElement s : e.getStackTrace()) {
|
||||
stringBuilder.append(s.toString()).append("\n");
|
||||
}
|
||||
updateTask.setLastRunResult(stringBuilder.toString());
|
||||
}
|
||||
updateTask.setLastRunResult(stringBuilder.toString());
|
||||
}
|
||||
// 执行完毕后 更新 任务状态
|
||||
remoteTaskService.updateTask(message.getTaskId(), updateTask, SecurityConstants.INNER);
|
||||
// 执行完毕后 更新 任务状态
|
||||
remoteTaskService.updateTask(message.getTaskId(), updateTask, SecurityConstants.INNER);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
package com.chushang.inspection.ins;
|
||||
|
||||
import com.chushang.inspection.work.vo.InspectionConfigVO;
|
||||
import com.chushang.inspection.work.vo.WrkInfoDetailsVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 生成 word, 需要 先试下默认的
|
||||
* @auther: zhao
|
||||
* @date: 2024/6/29 14:44
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class DefaultGeneratedIns implements GeneratedIns{
|
||||
|
||||
@Override
|
||||
public void generated(Map<Long, WrkInfoDetailsVO> wrkMaps, InspectionConfigVO insConfig, String basePath) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于 注册
|
||||
*/
|
||||
@Override
|
||||
public String register() {
|
||||
return "default";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
package com.chushang.inspection.ins;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.io.resource.ResourceUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.chushang.common.core.constant.SecurityConstants;
|
||||
import com.chushang.common.core.web.Result;
|
||||
import com.chushang.inspection.project.vo.DetailsVO;
|
||||
import com.chushang.inspection.work.vo.*;
|
||||
import com.chushang.oss.feign.RemoteOssService;
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.data.PictureRenderData;
|
||||
import com.deepoove.poi.data.Pictures;
|
||||
import com.deepoove.poi.data.UrlPictureRenderData;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/6/29 11:43
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public abstract class DefaultGeneratedInspection implements GeneratedInspection {
|
||||
|
||||
@Resource
|
||||
RemoteOssService remoteOssService;
|
||||
|
||||
@Override
|
||||
public abstract List<CompletableFuture<Void>> generated(Map<Long, WrkInfoDetailsVO> info, InspectionConfigVO inspection, String path, Executor executor);
|
||||
|
||||
@Override
|
||||
public void compileWord(String fileName, String templatePath, Map<String, Object> data) {
|
||||
XWPFTemplate template = null;
|
||||
try (InputStream stream = ResourceUtil.getStream("template" + File.separator + templatePath)) {
|
||||
template = XWPFTemplate.compile(stream);
|
||||
template.render(data);
|
||||
FileUtil.touch(fileName);
|
||||
template.writeToFile(fileName);
|
||||
} catch (Exception e) {
|
||||
log.error("【{}】模版替换失败", fileName, e);
|
||||
} finally {
|
||||
IoUtil.close(template);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends GeneratedInspection> Map<String, Object> InspectionToMap(WrkInfoDetailsVO inspection, Integer width, Integer height, int... imgTypes) {
|
||||
Map<String, Object> map = BeanUtil.beanToMap(inspection, Maps.newHashMap(),
|
||||
true, v -> "images".equals(v) ? null : v);
|
||||
WrkInfoVO wrkInfo = inspection.getWrkInfo();
|
||||
List<WrkImgVO> images = inspection.getInfoImg();
|
||||
map.put("disposeTime", LocalDateTimeUtil.format(wrkInfo.getDisposeTime(), DatePattern.CHINESE_DATE_PATTERN));
|
||||
map.put("createTime", LocalDateTimeUtil.format(wrkInfo.getDisposeTime(), DatePattern.CHINESE_DATE_PATTERN));
|
||||
if (ArrayUtil.isEmpty(imgTypes) || CollUtil.isEmpty(images)) {
|
||||
return map;
|
||||
}
|
||||
getImage(images, map, width, height, null, imgTypes);
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends GeneratedInspection> void getImage(List<WrkImgVO> images, Map<String, Object> data, Integer width, Integer height, int[] exclude, int... imgTypes) {
|
||||
if (CollUtil.isEmpty(images)) {
|
||||
return;
|
||||
}
|
||||
Map<Integer, WrkImgVO> imgMap = images.stream().filter(img -> exclude == null || !ArrayUtil.contains(exclude, img.getImgType()))
|
||||
.collect(Collectors.toMap(WrkImgVO::getImgType, v -> v, (v1, v2) -> v1));
|
||||
if (CollUtil.isEmpty(imgMap)) {
|
||||
return;
|
||||
}
|
||||
if (ArrayUtil.isNotEmpty(imgTypes)) {
|
||||
for (int imgType : imgTypes) {
|
||||
if (!imgMap.containsKey(imgType) || imgType == -1) {
|
||||
continue;
|
||||
}
|
||||
// 此处需要直接通过minio 获取?
|
||||
WrkImgVO img = imgMap.get(imgType);
|
||||
data.put("img" + imgType, getFile(width, height, img));
|
||||
}
|
||||
} else {
|
||||
AtomicInteger i = new AtomicInteger(1);
|
||||
|
||||
imgMap.forEach((imgType, img) -> {
|
||||
if (imgType != -1) {
|
||||
data.put("img" + imgType, getFile(width, height, img));
|
||||
i.getAndIncrement();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFormat(String template, ConfigDataVO details, int i, boolean isRemark) {
|
||||
Object[] arr = new Object[i];
|
||||
String value = details.getConfigValue() == null ? StrUtil.EMPTY : details.getConfigValue();
|
||||
if (value.contains(StrUtil.COMMA)) {
|
||||
List<String> list = StrUtil.split(value, StrUtil.COMMA);
|
||||
for (int j = 0; j < i; j++) {
|
||||
if (list.contains(Convert.toStr(j + 1))) {
|
||||
arr[j] = "☑";
|
||||
} else {
|
||||
arr[j] = "□";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int j = 0; j < i; j++) {
|
||||
if (Convert.toStr(j + 1).equals(value)) {
|
||||
arr[j] = "☑";
|
||||
} else {
|
||||
arr[j] = "□";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isRemark) {
|
||||
arr[i - 1] = StrUtil.isBlank(details.getRemark()) ? StrUtil.EMPTY : details.getRemark();
|
||||
}
|
||||
return StrUtil.format(template, arr);
|
||||
}
|
||||
/**
|
||||
* 获取图片
|
||||
*/
|
||||
private PictureRenderData getFile(Integer width, Integer height, WrkImgVO img) {
|
||||
Result<byte[]> result = remoteOssService.getFile(img.getFid(), SecurityConstants.INNER);
|
||||
if (result.isSuccess() && result.getData() != null) {
|
||||
byte[] bytes = result.getData();
|
||||
return Pictures.ofBytes(bytes).size(width, height).create();
|
||||
}
|
||||
return new UrlPictureRenderData(img.getRealPath());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
package com.chushang.inspection.ins;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.chushang.inspection.work.vo.InspectionConfigVO;
|
||||
import com.chushang.inspection.work.vo.WrkInfoDetailsVO;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 生成 模板
|
||||
* @auther: zhao
|
||||
* @date: 2024/6/29 14:37
|
||||
*/
|
||||
public interface GeneratedIns {
|
||||
/**
|
||||
* 生成 word 文档所需
|
||||
*/
|
||||
String SUFFIX_NAME = ".docx";
|
||||
/**
|
||||
* 应当为 Map<Long, WrkInfoDetailsVO> map 结构
|
||||
*/
|
||||
void generated(Map<Long, WrkInfoDetailsVO> wrkMaps, InspectionConfigVO insConfig, String basePath);
|
||||
|
||||
default String generateAFileName(String path, String... value) {
|
||||
StringBuilder fileName = new StringBuilder(path);
|
||||
fileName.append(File.separator);
|
||||
for (String v : value) {
|
||||
if (StrUtil.isNotEmpty(v) && v.equals(value[0])) {
|
||||
fileName.append(v);
|
||||
} else if (StrUtil.isNotEmpty(v)) {
|
||||
fileName.append("-").append(v);
|
||||
}
|
||||
}
|
||||
return fileName.append(SUFFIX_NAME).toString();
|
||||
}
|
||||
|
||||
String register();
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
//package com.chushang.inspection.ins;
|
||||
//
|
||||
//import cn.hutool.core.collection.CollectionUtil;
|
||||
//import com.chushang.inspection.work.vo.InspectionConfigVO;
|
||||
//import com.chushang.inspection.work.vo.WrkInfoDetailsVO;
|
||||
//import com.chushang.oss.config.UploadConfig;
|
||||
//import com.google.common.collect.Lists;
|
||||
//import io.minio.MinioProperties;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.springframework.stereotype.Service;
|
||||
//
|
||||
//import javax.annotation.Resource;
|
||||
//import java.io.File;
|
||||
//import java.util.HashMap;
|
||||
//import java.util.List;
|
||||
//import java.util.Map;
|
||||
//import java.util.concurrent.CompletableFuture;
|
||||
//import java.util.concurrent.CyclicBarrier;
|
||||
//
|
||||
///**
|
||||
// * 模板生成工厂
|
||||
// * @auther: zhao
|
||||
// * @date: 2024/7/1 9:33
|
||||
// */
|
||||
//@Slf4j
|
||||
//@Service
|
||||
//public class GeneratedInsFactory {
|
||||
//
|
||||
// private final DefaultGeneratedIns defaultGeneratedIns;
|
||||
//
|
||||
// public String getPath() {
|
||||
// return UploadConfig.getTmpPath() + File.separator + "download" + File.separator + "word" + File.separator;
|
||||
// }
|
||||
//
|
||||
// private final Map<String, GeneratedIns> generatedInsMap;
|
||||
//
|
||||
// GeneratedInsFactory(List<GeneratedIns> insList, DefaultGeneratedIns defaultGeneratedIns){
|
||||
// generatedInsMap = new HashMap<>();
|
||||
// insList.forEach(ins-> generatedInsMap.put(ins.register(), ins));
|
||||
// this.defaultGeneratedIns = defaultGeneratedIns;
|
||||
// }
|
||||
//
|
||||
// public void generated(Map<Long, WrkInfoDetailsVO> wrkMaps){
|
||||
// // 生成文件名
|
||||
// List<CompletableFuture<Void>> supplyAsync = Lists.newCopyOnWriteArrayList();
|
||||
// CyclicBarrier cyclicBarrier = new CyclicBarrier(wrkMaps.keySet().size());
|
||||
// // 此处应当指定 需要生成的 路径
|
||||
// wrkMaps.forEach((wrkId, wrk)->{
|
||||
// // 生成普通巡检单
|
||||
// GeneratedIns defaultGeneratedIns = generatedInsMap.get("default");
|
||||
// supplyAsync.addAll(defaultGeneratedIns.generated(wrkMaps, null, getPath(), EXECUTOR));
|
||||
//
|
||||
// List<InspectionConfigVO> inspections = wrk.getInspections();
|
||||
// inspections.forEach(ins->{
|
||||
// // 别名
|
||||
// String alias = ins.getAlias();
|
||||
// // 模板
|
||||
// String templateUrl = ins.getTemplateUrl();
|
||||
//
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
package com.chushang.inspection.ins;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.io.resource.ResourceUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.chushang.inspection.project.vo.DetailsVO;
|
||||
import com.chushang.inspection.work.vo.*;
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.data.Pictures;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 生成巡检单信息
|
||||
*/
|
||||
public interface GeneratedInspection {
|
||||
|
||||
String SUFFIX_NAME = ".docx";
|
||||
|
||||
List<CompletableFuture<Void>> generated(Map<Long, WrkInfoDetailsVO> info, InspectionConfigVO inspection, String path, Executor executor);
|
||||
|
||||
default String generateAFileName(String path, String... value) {
|
||||
StringBuilder fileName = new StringBuilder(path);
|
||||
fileName.append(File.separator);
|
||||
for (String v : value) {
|
||||
if (StrUtil.isNotEmpty(v) && v.equals(value[0])) {
|
||||
fileName.append(v);
|
||||
} else if (StrUtil.isNotEmpty(v)) {
|
||||
fileName.append("-").append(v);
|
||||
}
|
||||
}
|
||||
return fileName.append(SUFFIX_NAME).toString();
|
||||
}
|
||||
|
||||
void compileWord(String fileName, String templatePath, Map<String, Object> data);
|
||||
|
||||
<T extends GeneratedInspection> Map<String, Object> InspectionToMap(WrkInfoDetailsVO inspection, Integer width, Integer height, int... imgTypes);
|
||||
|
||||
<T extends GeneratedInspection> void getImage(List<WrkImgVO> images, Map<String, Object> data,Integer width, Integer height, int[] exclude, int... imgTypes);
|
||||
|
||||
String getFormat(String template, ConfigDataVO insList, int i, boolean isRemark);
|
||||
}
|
||||
|
|
@ -15,6 +15,7 @@ import com.chushang.security.annotation.RequiresPermissions;
|
|||
import com.chushang.security.utils.SecurityUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
|
|
@ -102,6 +103,16 @@ public class InsConfigController {
|
|||
configService.updateByEntityId(config);
|
||||
return AjaxResult.success(config.getConfigId());
|
||||
}
|
||||
/**
|
||||
* 巡检单上传
|
||||
*/
|
||||
@SysLog(value = "巡检单", businessType = BusinessType.UPLOAD)
|
||||
@PostMapping(value = "/upload")
|
||||
@RequiresPermissions("wrk:config:upload")
|
||||
public AjaxResult templateUpload(@RequestParam("file") MultipartFile file)
|
||||
{
|
||||
return AjaxResult.success(configService.uploadTemplate(file));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ public class InsDetailController {
|
|||
detail.setDetailId(null);
|
||||
Long configId = detail.getConfigId();
|
||||
AssertUtil.invalidate(null == configId, "巡检单配置id 不能为空");
|
||||
|
||||
String configKey = detail.getConfigKey();
|
||||
AssertUtil.invalidate(null == configKey, "巡检单配置key 不能为空");
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import java.util.List;
|
|||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping(value = "/inspection/task")
|
||||
@RequestMapping(value = "/task")
|
||||
public class PollTaskController {
|
||||
|
||||
@Resource
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import com.chushang.inspection.work.vo.InspectionConfigVO;
|
|||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
|
|
@ -15,5 +16,7 @@ import java.util.List;
|
|||
*/
|
||||
public interface InspectionDataMapper extends BaseMapper<InspectionData> {
|
||||
@DataScope(deptAlias = "ic")
|
||||
List<InspectionConfigVO> listInspections(@Param("wrkId") Long wrkId, @Param("query") CommonParam query);
|
||||
List<InspectionConfigVO> listInspectionsByWrkId(@Param("wrkId") Long wrkId, @Param("query") CommonParam query);
|
||||
@DataScope(deptAlias = "ic")
|
||||
List<InspectionConfigVO> listInspectionsByWrkIds(@Param("wrkIds") Set<Long> wrkIds, @Param("query") CommonParam query);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.chushang.common.mybatis.utils.WrapperUtils;
|
|||
import com.chushang.inspection.project.po.InspectionConfig;
|
||||
import com.chushang.inspection.project.query.InsConfigQuery;
|
||||
import com.chushang.inspection.project.vo.InsConfigVO;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
|
|
@ -33,4 +34,6 @@ public interface InspectionConfigService extends IService<InspectionConfig>{
|
|||
void updateByEntityId(InspectionConfig config);
|
||||
|
||||
void saveEntity(InspectionConfig config);
|
||||
|
||||
String uploadTemplate(MultipartFile file);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.chushang.inspection.project.po.InspectionData;
|
|||
import com.chushang.inspection.work.vo.InspectionConfigVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
|
|
@ -14,4 +15,6 @@ public interface InspectionDataService extends IService<InspectionData>{
|
|||
|
||||
|
||||
List<InspectionConfigVO> listInspections(Long wrkId);
|
||||
|
||||
List<InspectionConfigVO> listInspections(Set<Long> wrkIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@ import cn.hutool.core.bean.BeanUtil;
|
|||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.chushang.common.core.constant.SecurityConstants;
|
||||
import com.chushang.common.core.exception.ResultException;
|
||||
import com.chushang.common.core.web.Result;
|
||||
import com.chushang.common.mybatis.enums.Operator;
|
||||
import com.chushang.common.mybatis.utils.WrapperUtils;
|
||||
import com.chushang.inspection.project.po.InspectionDetail;
|
||||
|
|
@ -11,6 +14,10 @@ import com.chushang.inspection.project.vo.DetailsVO;
|
|||
import com.chushang.inspection.project.vo.InsConfigVO;
|
||||
import com.chushang.inspection.project.service.InspectionConfigService;
|
||||
import com.chushang.inspection.project.service.InspectionDetailService;
|
||||
import com.chushang.oss.entity.dto.UploadBytesDTO;
|
||||
import com.chushang.oss.entity.dto.UploadFileDTO;
|
||||
import com.chushang.oss.entity.vo.FileSourceVo;
|
||||
import com.chushang.oss.feign.RemoteOssService;
|
||||
import org.springframework.cache.annotation.CacheConfig;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.CachePut;
|
||||
|
|
@ -19,6 +26,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||
import com.chushang.inspection.project.po.InspectionConfig;
|
||||
import com.chushang.inspection.project.mapper.InspectionConfigMapper;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
|
@ -33,6 +41,8 @@ public class InspectionConfigServiceImpl extends ServiceImpl<InspectionConfigMap
|
|||
|
||||
@Resource
|
||||
InspectionDetailService detailService;
|
||||
@Resource
|
||||
RemoteOssService remoteOssService;
|
||||
|
||||
@Override
|
||||
@CachePut(key = "#alias")
|
||||
|
|
@ -72,4 +82,20 @@ public class InspectionConfigServiceImpl extends ServiceImpl<InspectionConfigMap
|
|||
public void saveEntity(InspectionConfig config) {
|
||||
save(config);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传巡检单 信息
|
||||
*/
|
||||
@Override
|
||||
public String uploadTemplate(MultipartFile file) {
|
||||
// 上传模板信息
|
||||
Result<List<FileSourceVo>> listResult =
|
||||
remoteOssService.uploadFile(UploadFileDTO.builder()
|
||||
.files(new MultipartFile[]{file})
|
||||
.build(), null, null, null, "template", SecurityConstants.INNER);
|
||||
if (listResult.isSuccess() && CollectionUtil.isNotEmpty(listResult.getData())){
|
||||
return listResult.getData().get(0).getFilePath();
|
||||
}
|
||||
throw new ResultException("上传失败");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.chushang.inspection.project.po.InspectionData;
|
|||
import com.chushang.inspection.project.mapper.InspectionDataMapper;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
|
|
@ -18,12 +19,19 @@ import java.util.List;
|
|||
public class InspectionDataServiceImpl extends ServiceImpl<InspectionDataMapper, InspectionData> implements InspectionDataService {
|
||||
/**
|
||||
* 根据工单id 查询对应的 巡检单信息
|
||||
* @param wrkId
|
||||
* @return
|
||||
* @param wrkId 工单id
|
||||
*/
|
||||
@Override
|
||||
public List<InspectionConfigVO> listInspections(Long wrkId) {
|
||||
CommonParam commonParam = CommonParam.buildPageRequest();
|
||||
return baseMapper.listInspections(wrkId, commonParam);
|
||||
return baseMapper.listInspectionsByWrkId(wrkId, commonParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据工单id, 获取对应 巡检单信息
|
||||
*/
|
||||
public List<InspectionConfigVO> listInspections(Set<Long> wrkIds) {
|
||||
CommonParam commonParam = CommonParam.buildPageRequest();
|
||||
return baseMapper.listInspectionsByWrkIds(wrkIds, commonParam);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import javax.validation.constraints.NotNull;
|
|||
* @author xxxxx
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/consumables_total")
|
||||
@RequestMapping("/consumables/total")
|
||||
public class ConsumablesTotalController {
|
||||
/**
|
||||
* 服务对象
|
||||
|
|
@ -32,17 +32,6 @@ public class ConsumablesTotalController {
|
|||
@Resource
|
||||
ConsumablesTotalService consumablesTotalService;
|
||||
|
||||
/**
|
||||
* 通过主键查询单条数据
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 单条数据
|
||||
*/
|
||||
@GetMapping("selectOne")
|
||||
public ConsumablesTotal selectOne(Integer id) {
|
||||
return consumablesTotalService.getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询耗材总数
|
||||
*
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ 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.entity.dto.UploadBytesDTO;
|
||||
import com.chushang.oss.entity.vo.FileSourceVo;
|
||||
import com.chushang.oss.feign.RemoteOssService;
|
||||
import com.chushang.security.utils.SecurityUtils;
|
||||
|
|
@ -97,7 +98,8 @@ public class FiveStoreServiceImpl extends ServiceImpl<FiveStoreMapper, FiveStore
|
|||
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()){
|
||||
ExcelUtils.exportList(outputStream, FiveStoreVO.class, listFiveStores, "五统一商户明细");
|
||||
// 上传到oss fileStore 是五统一的商户文件
|
||||
Result<List<FileSourceVo>> listResult = ossService.uploadFile(outputStream.toByteArray(), "五统一商户明细导出.xlsx", false, "", "fileStore", SecurityConstants.INNER);
|
||||
Result<List<FileSourceVo>> listResult = ossService.uploadFile(UploadBytesDTO.builder()
|
||||
.bytes(outputStream.toByteArray()).build(), "五统一商户明细导出.xlsx", false, "", "fileStore", SecurityConstants.INNER);
|
||||
|
||||
if (listResult.isSuccess() && CollectionUtil.isNotEmpty(listResult.getData())){
|
||||
List<FileSourceVo> data = listResult.getData();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,67 @@
|
|||
package com.chushang.inspection.utils;
|
||||
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* @author by zhaowenyuan create 2022/7/26 09:28
|
||||
* 线程池
|
||||
*/
|
||||
public enum PoolUtils {
|
||||
/**
|
||||
* 线程池
|
||||
*/
|
||||
SENTINEL("WRK-INSPECTION-POOL-SERVICE"),
|
||||
;
|
||||
private final ThreadPoolExecutor instance;
|
||||
|
||||
PoolUtils(String threadName){
|
||||
this.instance = new ThreadPoolExecutor(
|
||||
5,
|
||||
10,
|
||||
300L,
|
||||
TimeUnit.SECONDS,
|
||||
new LinkedBlockingQueue<>(3000),
|
||||
new NameThreadFactory(threadName));
|
||||
}
|
||||
|
||||
public ThreadPoolExecutor getInstance(){
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void destroy(){
|
||||
this.instance.shutdown();
|
||||
}
|
||||
|
||||
static class NameThreadFactory implements ThreadFactory{
|
||||
private static final AtomicInteger POOL_NUMBER = new AtomicInteger(1);
|
||||
private final ThreadGroup group;
|
||||
|
||||
private final AtomicInteger threadNumber = new AtomicInteger(1);
|
||||
private final String namePrefix;
|
||||
|
||||
NameThreadFactory(String name){
|
||||
SecurityManager securityManager = System.getSecurityManager();
|
||||
group = (securityManager != null) ? securityManager.getThreadGroup() : Thread.currentThread().getThreadGroup();
|
||||
if (null == name || name.isEmpty()){
|
||||
name = "pool";
|
||||
}
|
||||
namePrefix = name + "-" + POOL_NUMBER.getAndIncrement() + "-thread-";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Thread newThread(Runnable runnable) {
|
||||
Thread t = new Thread(group, runnable, namePrefix + threadNumber.getAndIncrement(), 0);
|
||||
if (t.isDaemon()){
|
||||
t.setDaemon(false);
|
||||
}
|
||||
if (t.getPriority() != Thread.NORM_PRIORITY){
|
||||
t.setPriority(Thread.NORM_PRIORITY);
|
||||
}
|
||||
return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -78,7 +78,7 @@ public class WrkInfoController {
|
|||
@SysLog(value = "app", businessType = BusinessType.QUERY)
|
||||
@GetMapping("/app/page")
|
||||
@RequiresPermissions("wrk:app:page")
|
||||
public AjaxResult queryAppPage(@RequestBody @Validated WrkAppQuery query) {
|
||||
public AjaxResult queryAppPage(@Validated WrkAppQuery query) {
|
||||
boolean isRecheck = TaskConfigUtils.reviewMethod(query.getTaskId()) == 3;
|
||||
Integer wrkStatus = query.getWrkStatus();
|
||||
List<Integer> wrkStatusList = new ArrayList<>();
|
||||
|
|
@ -100,7 +100,7 @@ public class WrkInfoController {
|
|||
@SysLog(value = "工单归档信息", businessType = BusinessType.QUERY)
|
||||
@GetMapping("/archive/page")
|
||||
@RequiresPermissions("wrk:archive:page")
|
||||
public AjaxResult queryArchivePage(@RequestBody @Validated ReviewedQuery query) {
|
||||
public AjaxResult queryArchivePage(@Validated ReviewedQuery query) {
|
||||
Integer reviewMethod = TaskConfigUtils.reviewMethod(query.getTaskId());
|
||||
query.setStates(reviewMethod == 3 ? Lists.newArrayList(4) : Lists.newArrayList(3));
|
||||
return AjaxResult.success(wrkInfoService.queryArchivePage(query));
|
||||
|
|
@ -112,7 +112,8 @@ public class WrkInfoController {
|
|||
@SysLog("工单详情")
|
||||
@PostMapping("/info/{wrkId}")
|
||||
@RequiresPermissions("wrk:info")
|
||||
public AjaxResult info(@PathVariable Long wrkId) {
|
||||
public AjaxResult info(@PathVariable Long wrkId)
|
||||
{
|
||||
return AjaxResult.success(wrkInfoService.queryWorkOrderDetails(wrkId));
|
||||
}
|
||||
|
||||
|
|
@ -193,4 +194,5 @@ public class WrkInfoController {
|
|||
wrkInfoService.dispatch(query, 0);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import com.chushang.inspection.work.query.WrkAppQuery;
|
|||
import com.chushang.inspection.work.query.WrkInfoQuery;
|
||||
import com.chushang.inspection.work.vo.WrkAuditVO;
|
||||
import com.chushang.inspection.work.vo.WrkDispatchVO;
|
||||
import com.chushang.inspection.work.vo.WrkInfoDetailsVO;
|
||||
import com.chushang.inspection.work.vo.WrkListAppVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
|
@ -25,4 +26,8 @@ public interface WrkInfoMapper extends BaseMapper<WrkInfo> {
|
|||
List<WrkAuditVO> queryArchivePage(@Param("query") ReviewedQuery query, Page<WrkAuditVO> page);
|
||||
|
||||
List<WrkListAppVO> queryAppPage(@Param("query") WrkAppQuery query, Page<WrkListAppVO> page);
|
||||
|
||||
List<WrkInfoDetailsVO> listInsTemplate(@Param("query") ReviewedQuery query);
|
||||
|
||||
WrkInfoDetailsVO getWrkInfoDetails(@Param("wrkId") Long wrkId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,12 @@ package com.chushang.inspection.work.service;
|
|||
import com.chushang.inspection.work.dto.ImageDTO;
|
||||
import com.chushang.inspection.work.po.WrkImg;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chushang.inspection.work.vo.WrkImgVO;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/6/28 11:25
|
||||
|
|
@ -15,4 +19,6 @@ public interface WrkImgService extends IService<WrkImg> {
|
|||
String uploadPicture(MultipartFile file, Integer imgType, Long wrkId, String locationAddress);
|
||||
|
||||
void removeImg(ImageDTO image);
|
||||
|
||||
List<WrkImgVO> listImgByWrkIds(Set<Long> wrkIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,4 +27,6 @@ public interface WrkInfoService extends IService<WrkInfo> {
|
|||
WrkInfoDetailsVO queryWorkOrderDetails(Long wrkId);
|
||||
|
||||
List<WrkInfo> dispatch(DispatchQuery query, int i);
|
||||
|
||||
Long downInspectionTemplate(ReviewedQuery query);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,39 @@
|
|||
package com.chushang.inspection.work.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.chushang.common.core.constant.SecurityConstants;
|
||||
import com.chushang.common.core.exception.ResultException;
|
||||
import com.chushang.common.core.exception.utils.AssertUtil;
|
||||
import com.chushang.common.core.util.StringUtils;
|
||||
import com.chushang.common.core.web.Result;
|
||||
import com.chushang.common.mybatis.utils.WrapperUtils;
|
||||
import com.chushang.inspection.work.dto.ImageDTO;
|
||||
import com.chushang.inspection.work.po.WrkInfo;
|
||||
import com.chushang.inspection.work.po.WrkInfoStoreRecord;
|
||||
import com.chushang.inspection.work.service.WrkImgService;
|
||||
import com.chushang.inspection.work.service.WrkInfoService;
|
||||
import com.chushang.inspection.work.service.WrkInfoStoreRecordService;
|
||||
import com.chushang.inspection.work.vo.WrkImgVO;
|
||||
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 org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.chushang.inspection.work.mapper.WrkImgMapper;
|
||||
import com.chushang.inspection.work.po.WrkImg;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/6/28 11:25
|
||||
|
|
@ -15,13 +41,62 @@ import org.springframework.web.multipart.MultipartFile;
|
|||
@Service
|
||||
public class WrkImgServiceImpl extends ServiceImpl<WrkImgMapper, WrkImg> implements WrkImgService {
|
||||
|
||||
@Resource
|
||||
RemoteOssService remoteOssService;
|
||||
@Override
|
||||
public String uploadPicture(MultipartFile file, Integer imgType, Long wrkId, String locationAddress) {
|
||||
return "";
|
||||
@Transactional
|
||||
public String uploadPicture(MultipartFile file, Integer imgType, Long wrkId, String locationAddress)
|
||||
{
|
||||
try {
|
||||
// locationAddress 用于添加水印
|
||||
Result<List<FileSourceVo>> listResult = remoteOssService.uploadFile(UploadBytesDTO.builder()
|
||||
.bytes(file.getBytes()).build(),
|
||||
file.getOriginalFilename(),
|
||||
StringUtils.isNotEmpty(locationAddress),
|
||||
locationAddress,
|
||||
"wrkImg",
|
||||
SecurityConstants.INNER);
|
||||
if (listResult.isSuccess() && CollectionUtil.isNotEmpty(listResult.getData())) {
|
||||
List<FileSourceVo> data = listResult.getData();
|
||||
FileSourceVo fileSourceVo = data.get(0);
|
||||
WrkImg wrkImg = new WrkImg();
|
||||
wrkImg.setWrkId(wrkId);
|
||||
wrkImg.setImgType(imgType);
|
||||
wrkImg.setFid(fileSourceVo.getFid());
|
||||
wrkImg.setSize(fileSourceVo.getSize());
|
||||
wrkImg.setDeptId(SecurityUtils.getDeptId());
|
||||
wrkImg.setRealPath(fileSourceVo.getFilePath());
|
||||
save(wrkImg);
|
||||
}
|
||||
throw new ResultException("上传图片失败");
|
||||
} catch (IOException e) {
|
||||
log.error("{}", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeImg(ImageDTO image) {
|
||||
@Transactional
|
||||
public void removeImg(ImageDTO image)
|
||||
{
|
||||
LambdaQueryWrapper<WrkImg> imgSql = WrapperUtils.builder();
|
||||
imgSql.eq(WrkImg::getWrkId, image.getWrkId())
|
||||
.eq(WrkImg::getImgType, image.getImgType());
|
||||
List<WrkImg> imgList = list(imgSql);
|
||||
if (CollectionUtil.isNotEmpty(imgList)){
|
||||
Set<Long> imgIds = imgList.stream().map(WrkImg::getImgId).collect(Collectors.toSet());
|
||||
removeByIds(imgIds);
|
||||
Set<String> fids = imgList.stream().map(WrkImg::getFid).collect(Collectors.toSet());
|
||||
Result<String> stringResult = remoteOssService.delFile(fids, SecurityConstants.INNER);
|
||||
AssertUtil.invalidate(!stringResult.isSuccess(), stringResult.getMsg());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WrkImgVO> listImgByWrkIds(Set<Long> wrkIds) {
|
||||
List<WrkImg> imgList = list(new LambdaQueryWrapper<WrkImg>().in(WrkImg::getWrkId, wrkIds));
|
||||
if (CollectionUtil.isNotEmpty(imgList))
|
||||
return BeanUtil.copyToList(imgList, WrkImgVO.class);
|
||||
return List.of();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import com.chushang.inspection.terminal.service.TerminalService;
|
|||
import com.chushang.inspection.work.dto.WrkInfoPhoneImportDTO;
|
||||
import com.chushang.inspection.work.query.WrkInfoQuery;
|
||||
import com.chushang.inspection.work.service.WrkInfoPhoneService;
|
||||
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;
|
||||
|
|
@ -326,7 +327,9 @@ public class WrkInfoPhoneServiceImpl extends ServiceImpl<WrkInfoPhoneMapper, Wrk
|
|||
if (CollectionUtil.isNotEmpty(errList)) {
|
||||
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()){
|
||||
ExcelUtils.exportList(outputStream, WrkInfoPhoneImportDTO.class, errList,"电话工单导入异常");
|
||||
Result<List<FileSourceVo>> ossResult = remoteOssService.uploadFile(outputStream.toByteArray(), "", null, null, "", SecurityConstants.INNER);
|
||||
Result<List<FileSourceVo>> ossResult = remoteOssService.uploadFile(
|
||||
UploadBytesDTO.builder().bytes(outputStream.toByteArray()).build()
|
||||
, "", null, null, "", SecurityConstants.INNER);
|
||||
if (ossResult.isSuccess() && CollectionUtil.isNotEmpty(ossResult.getData())){
|
||||
List<FileSourceVo> data = ossResult.getData();
|
||||
FileSourceVo fileSourceVo = data.get(0);
|
||||
|
|
|
|||
|
|
@ -5,10 +5,13 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.chushang.common.core.constant.SecurityConstants;
|
||||
import com.chushang.common.core.exception.ResultException;
|
||||
import com.chushang.common.core.exception.utils.AssertUtil;
|
||||
import com.chushang.common.core.util.DateUtils;
|
||||
import com.chushang.common.core.util.IPUtils;
|
||||
import com.chushang.common.core.web.Result;
|
||||
import com.chushang.common.mybatis.enums.Operator;
|
||||
|
|
@ -16,6 +19,7 @@ import com.chushang.common.mybatis.page.CommonParam;
|
|||
import com.chushang.common.mybatis.utils.PageResult;
|
||||
import com.chushang.common.mybatis.utils.WrapperUtils;
|
||||
import com.chushang.datascope.annotation.DataScope;
|
||||
import com.chushang.inspection.ins.GeneratedIns;
|
||||
import com.chushang.inspection.project.service.InspectionDataService;
|
||||
import com.chushang.inspection.terminal.po.FiveStore;
|
||||
import com.chushang.inspection.terminal.po.Terminal;
|
||||
|
|
@ -33,6 +37,11 @@ import com.chushang.inspection.work.query.WrkAppQuery;
|
|||
import com.chushang.inspection.work.query.WrkInfoQuery;
|
||||
import com.chushang.inspection.work.service.*;
|
||||
import com.chushang.inspection.work.vo.*;
|
||||
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 com.chushang.security.entity.po.SysUser;
|
||||
import com.chushang.system.feign.RemoteUserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
|
@ -43,11 +52,14 @@ import com.chushang.inspection.work.mapper.WrkInfoMapper;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
|
|
@ -56,37 +68,26 @@ import java.util.stream.Collectors;
|
|||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WrkInfoServiceImpl extends ServiceImpl<WrkInfoMapper, WrkInfo> implements WrkInfoService {
|
||||
|
||||
@Resource
|
||||
WrkInfoTerminalRecordService terminalRecordService;
|
||||
@Resource
|
||||
WrkInfoStoreRecordService storeRecordService;
|
||||
@Resource
|
||||
WrkInfoAuditService infoAuditService;
|
||||
@Resource
|
||||
InspectionDataService inspectionDataService;
|
||||
@Resource
|
||||
WrkImgService wrkImgService;
|
||||
|
||||
@Resource
|
||||
WrkInfoService wrkInfoService;
|
||||
|
||||
@Resource
|
||||
WrkInfoStoreRecordService wrkInfoStoreRecordService;
|
||||
|
||||
|
||||
@Resource
|
||||
WrkInfoTerminalRecordService wrkInfoTerminalRecordService;
|
||||
|
||||
@Resource
|
||||
FiveStoreService fiveStoreService;
|
||||
@Resource
|
||||
TerminalService terminalService;
|
||||
@Resource
|
||||
StoreService service;
|
||||
|
||||
RemoteTaskService remoteTaskService;
|
||||
@Resource
|
||||
RemoteUserService userFeignService;
|
||||
@Resource
|
||||
GeneratedIns generatedIns;
|
||||
|
||||
@Value("${push.icbc-js.enable:false}")
|
||||
private boolean enable;
|
||||
|
|
@ -113,6 +114,9 @@ public class WrkInfoServiceImpl extends ServiceImpl<WrkInfoMapper, WrkInfo> impl
|
|||
return new PageResult(records, page);
|
||||
}
|
||||
|
||||
/**
|
||||
* app查询
|
||||
*/
|
||||
@Override
|
||||
@DataScope(deptAlias = "i")
|
||||
public PageResult queryAppPage(WrkAppQuery query) {
|
||||
|
|
@ -125,38 +129,38 @@ public class WrkInfoServiceImpl extends ServiceImpl<WrkInfoMapper, WrkInfo> impl
|
|||
|
||||
@Override
|
||||
public WrkInfoDetailsVO queryWorkOrderDetails(Long wrkId) {
|
||||
WrkInfoDetailsVO infoDetail = new WrkInfoDetailsVO();
|
||||
// 终端信息
|
||||
WrkInfoTerminalRecord terminalRecord = terminalRecordService.getById(wrkId);
|
||||
// 商户信息
|
||||
WrkInfoStoreRecord storeRecord = storeRecordService.getById(wrkId);
|
||||
infoDetail.setInfoTerminal(BeanUtil.copyProperties(terminalRecord, WrkInfoTerminalVO.class));
|
||||
infoDetail.setInfoStore(BeanUtil.copyProperties(storeRecord, WrkInfoStoreVO.class));
|
||||
// 工单信息
|
||||
WrkInfo wrkInfo = getById(wrkId);
|
||||
infoDetail.setWrkInfo(BeanUtil.copyProperties(wrkInfo, WrkInfoVO.class));
|
||||
// // 终端信息
|
||||
// WrkInfoTerminalRecord terminalRecord = terminalRecordService.getById(wrkId);
|
||||
// // 商户信息
|
||||
// WrkInfoStoreRecord storeRecord = storeRecordService.getById(wrkId);
|
||||
// // 工单信息
|
||||
// WrkInfo wrkInfo = getById(wrkId);
|
||||
// infoDetail.setInfoTerminal(BeanUtil.copyProperties(terminalRecord, WrkInfoTerminalVO.class));
|
||||
// infoDetail.setInfoStore(BeanUtil.copyProperties(storeRecord, WrkInfoStoreVO.class));
|
||||
// infoDetail.setWrkInfo(BeanUtil.copyProperties(wrkInfo, WrkInfoVO.class));
|
||||
// 商户信息, 终端信息, 工单信息
|
||||
WrkInfoDetailsVO infoDetail = baseMapper.getWrkInfoDetails(wrkId);
|
||||
WrkInfoVO wrkInfo = infoDetail.getWrkInfo();
|
||||
if (ObjectUtil.isEmpty(wrkInfo)) return infoDetail;
|
||||
WrkInfoTerminalVO terminal = infoDetail.getInfoTerminal();
|
||||
// 工单审核
|
||||
List<WrkInfoAudit> auditList = infoAuditService.list(new LambdaQueryWrapper<WrkInfoAudit>()
|
||||
.eq(WrkInfoAudit::getWrkId, wrkId));
|
||||
infoDetail.setInfoAudit(BeanUtil.copyToList(auditList, AuditVO.class));
|
||||
// 工单图片
|
||||
List<WrkImg> imgList = wrkImgService.list(new LambdaQueryWrapper<WrkImg>()
|
||||
.eq(WrkImg::getImgId, wrkId));
|
||||
List<WrkImg> imgList = wrkImgService.list(new LambdaQueryWrapper<WrkImg>().eq(WrkImg::getImgId, wrkId));
|
||||
infoDetail.setInfoImg(BeanUtil.copyToList(imgList, WrkImgVO.class));
|
||||
// 内蒙古 五统一商户
|
||||
if (terminalRecord.getTerminalId() != null && "建行内蒙古".equals(TaskConfigUtils.getConfig(wrkInfo.getTaskId()).getName())){
|
||||
if (terminal.getTerminalId() != null && "建行内蒙古".equals(TaskConfigUtils.getConfig(wrkInfo.getTaskId()).getName())){
|
||||
FiveStore fiveStore = fiveStoreService.getOne(new LambdaQueryWrapper<FiveStore>()
|
||||
.eq(FiveStore::getTerminalId, terminalRecord.getTerminalId()).last(Operator.LIMIT_ONE.getCharacter()));
|
||||
.eq(FiveStore::getTerminalId, terminal.getTerminalId()).last(Operator.LIMIT_ONE.getCharacter()));
|
||||
infoDetail.setFiveStoreDetails(BeanUtil.copyProperties(fiveStore, FiveStoreVO.class));
|
||||
}
|
||||
// 门头照片
|
||||
if (IPUtils.isMobile() && ObjectUtil.equals(wrkInfo.getWrkStatus(), 1) && terminalRecord.getTerminalId() != null) {
|
||||
infoDetail.getWrkInfo().setDoorImage(wrkImgService.getOne(new LambdaQueryWrapper<WrkImg>()
|
||||
.eq(WrkImg::getWrkId, wrkId)
|
||||
.eq(WrkImg::getImgType, -1)
|
||||
if (IPUtils.isMobile() && ObjectUtil.equals(wrkInfo.getWrkStatus(), 1) && terminal.getTerminalId() != null) {
|
||||
infoDetail.getWrkInfo().setDoorImage(wrkImgService.getOne(new LambdaQueryWrapper<WrkImg>().eq(WrkImg::getWrkId, wrkId).eq(WrkImg::getImgType, -1)
|
||||
.last(Operator.LIMIT_ONE.getCharacter())).getRealPath());
|
||||
}
|
||||
// 巡检单还没搞
|
||||
infoDetail.setInspections(inspectionDataService.listInspections(wrkId));
|
||||
return infoDetail;
|
||||
}
|
||||
|
|
@ -178,6 +182,66 @@ public class WrkInfoServiceImpl extends ServiceImpl<WrkInfoMapper, WrkInfo> impl
|
|||
return List.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
@DataScope(deptAlias = "i")
|
||||
public Long downInspectionTemplate(ReviewedQuery query) {
|
||||
// 先查询是否存在对应的记录
|
||||
WrapperUtils.buildSql(query);
|
||||
Page<WrkAuditVO> page = new Page<>(1, 1);
|
||||
baseMapper.queryArchivePage(query, page);
|
||||
// 必须 total 大于0, 才走下一步
|
||||
AssertUtil.invalidate(page.getTotal() == 0, "下载信息为空");
|
||||
DateUtils.format(LocalDate.now());
|
||||
// 下载巡检单信息
|
||||
Result<Long> task = remoteTaskService.createTask(CreateTaskDTO.builder()
|
||||
.params(JSON.toJSONString(query))
|
||||
.taskName(DateUtils.format(LocalDate.now()) + "-" + SecurityUtils.getUsername() + "-导出-" + query.getTaskId() + "-巡检单信息")
|
||||
.applicationName(ServiceEnum.INSPECTION)
|
||||
.methodName("downInspectionTemplate")
|
||||
.className(this.getClass().getName())
|
||||
.deptId(SecurityUtils.getDeptId())
|
||||
.taskType(TaskTypeEnum.DOWN)
|
||||
.remark("导出巡检单信息")
|
||||
.createBy(SecurityUtils.getUsername())
|
||||
.build(), SecurityConstants.INNER);
|
||||
if (task.isSuccess() && task.getData() != null){
|
||||
return task.getData();
|
||||
}
|
||||
throw new ResultException("创建后台任务异常");
|
||||
}
|
||||
|
||||
/**
|
||||
* 此处调用后台执行
|
||||
*/
|
||||
public Result<String> downInspectionTemplate(String params){
|
||||
ReviewedQuery query = JSON.parseObject(params, ReviewedQuery.class);
|
||||
// 先查询是否存在对应的记录
|
||||
WrapperUtils.buildSql(query);
|
||||
// 需要导出 工单信息
|
||||
List<WrkInfoDetailsVO> wrkInfoDetailsVOS = baseMapper.listInsTemplate(query);
|
||||
if (CollectionUtil.isEmpty(wrkInfoDetailsVOS)){
|
||||
return Result.failed("查询工单为空");
|
||||
}
|
||||
// 工单map
|
||||
Map<Long, WrkInfoDetailsVO> wrkMap =
|
||||
wrkInfoDetailsVOS.stream().collect(Collectors.toMap(w -> w.getWrkInfo().getWrkId(), o -> o));
|
||||
List<WrkImgVO> imgList = wrkImgService.listImgByWrkIds(wrkMap.keySet());
|
||||
// 工单图片
|
||||
// List<WrkImg> imgList = wrkImgService.list(new LambdaQueryWrapper<WrkImg>().in(WrkImg::getImgId, wrkMap.keySet()));
|
||||
Map<Long, List<WrkImgVO>> imgMap = imgList.stream().collect(Collectors.groupingBy(WrkImgVO::getWrkId));
|
||||
List<InspectionConfigVO> insConfigs = inspectionDataService.listInspections(wrkMap.keySet());
|
||||
Map<Long, List<InspectionConfigVO>> configMap = insConfigs.stream().collect(Collectors.groupingBy(InspectionConfigVO::getWrkId));
|
||||
wrkMap.forEach((wrkId, infoDetail)->{
|
||||
List<WrkImgVO> wrkImgs = imgMap.get(wrkId);
|
||||
infoDetail.setInfoImg(wrkImgs);
|
||||
List<InspectionConfigVO> inspectionConfigVOS = configMap.get(wrkId);
|
||||
infoDetail.setInspections(inspectionConfigVOS);
|
||||
});
|
||||
// 此处 去调用 生成 word 文档
|
||||
// generatedIns.generated(wrkMap);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
private WrkInfo makeWrkInfoEntity(DispatchDTO dispatch,DispatchQuery query,Long userId,String userName,Integer workMethod){
|
||||
WrkInfo wrkInfo = new WrkInfo();
|
||||
wrkInfo.setTaskId(query.getTaskId());
|
||||
|
|
@ -213,7 +277,7 @@ public class WrkInfoServiceImpl extends ServiceImpl<WrkInfoMapper, WrkInfo> impl
|
|||
Assert.notNull(userId, "【{}】未设置商户", dispatchDTO.getAccountManager());
|
||||
// 组装wrkinfo实体
|
||||
WrkInfo wrkInfo = makeWrkInfoEntity(dispatchDTO, query, userId,dispatchDTO.getAccountManager(),0);
|
||||
wrkInfoService.save(wrkInfo);
|
||||
save(wrkInfo);
|
||||
//组装wrkterminal 实体
|
||||
WrkInfoTerminalRecord wrkInfoTerminalRecord = BeanUtil.copyProperties(dispatchDTO, WrkInfoTerminalRecord.class);
|
||||
wrkInfoTerminalRecord.setWrkId(wrkInfo.getWrkId());
|
||||
|
|
@ -232,7 +296,7 @@ public class WrkInfoServiceImpl extends ServiceImpl<WrkInfoMapper, WrkInfo> impl
|
|||
Assert.notNull(nickName, "【{}】未设置商户", dispatchDTO.getAccountManager());
|
||||
WrkInfo wrkInfo = makeWrkInfoEntity(dispatchDTO, query, query.getUserId(), dispatchDTO.getAccountManager(), method);
|
||||
// 组装wrkinfo实体
|
||||
wrkInfoService.save(wrkInfo);
|
||||
save(wrkInfo);
|
||||
//组装wrkterminal 实体
|
||||
WrkInfoTerminalRecord wrkInfoTerminalRecord = BeanUtil.copyProperties(dispatchDTO, WrkInfoTerminalRecord.class);
|
||||
wrkInfoTerminalRecord.setWrkId(wrkInfo.getWrkId());
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ spring:
|
|||
discovery:
|
||||
server-addr: ${spring.cloud.nacos.server-addr}
|
||||
namespace: ${nacos.namespace}
|
||||
group: ${nacos.group}
|
||||
group: local
|
||||
service: ${spring.application.name}
|
||||
config:
|
||||
server-addr: ${spring.cloud.nacos.server-addr}
|
||||
|
|
|
|||
|
|
@ -1,46 +1,59 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.chushang.inspection.project.mapper.InspectionDataMapper">
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="inspectionConfigVOResult" type="com.chushang.inspection.work.vo.InspectionConfigVO">
|
||||
<id column="config_id" property="configId"/>
|
||||
<result column="config_name" property="configName"/>
|
||||
<result column="alias" property="alias"/>
|
||||
<result column="template" property="template"/>
|
||||
<result column="template_url" property="templateUrl"/>
|
||||
<collection property="details" ofType="com.chushang.inspection.work.vo.ConfigDataVO">
|
||||
<id column="data_id" property="dataId"/>
|
||||
<result column="detail_id" property="detailId"/>
|
||||
<result column="config_key" property="configKey"/>
|
||||
<result column="config_type" property="configType"/>
|
||||
<result column="config_label" property="configLabel"/>
|
||||
<result column="config_value" property="configValue"/>
|
||||
<result column="remark" property="remark"/>
|
||||
<result column="ins_id" property="wrkId"/>
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="inspectionConfigVOResult" type="com.chushang.inspection.work.vo.InspectionConfigVO">
|
||||
<id column="config_id" property="configId" />
|
||||
<result column="config_name" property="configName" />
|
||||
<result column="alias" property="alias" />
|
||||
<result column="template" property="template" />
|
||||
<result column="template_url" property="templateUrl" />
|
||||
<collection property="details" ofType="com.chushang.inspection.work.vo.ConfigDataVO">
|
||||
<id column="data_id" property="dataId" />
|
||||
<result column="detail_id" property="detailId" />
|
||||
<result column="config_key" property="configKey" />
|
||||
<result column="config_type" property="configType" />
|
||||
<result column="config_label" property="configLabel" />
|
||||
<result column="config_value" property="configValue" />
|
||||
<result column="remark" property="remark" />
|
||||
<result column="ins_id" property="wrkId" />
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<select id="listInspections" resultMap="inspectionConfigVOResult">
|
||||
SELECT id.data_id,
|
||||
id.config_value,
|
||||
id.remark,
|
||||
id.ins_id,
|
||||
idl.detail_id,
|
||||
idl.config_key,
|
||||
idl.config_type,
|
||||
idl.config_label,
|
||||
ic.config_id,
|
||||
ic.template,
|
||||
ic.alias,
|
||||
ic.config_name,
|
||||
ic.template_url
|
||||
FROM inspection_data id
|
||||
INNER JOIN inspection_detail idl ON id.detail_id = idl.detail_id
|
||||
INNER JOIN inspection_config ic ON ic.config_id = idl.config_id
|
||||
WHERE id.ins_id = #{wrkId}
|
||||
<if test="true">
|
||||
${query.sqlParam.get('dataScope')}
|
||||
</if>
|
||||
</select>
|
||||
<select id="listInspectionsByWrkId" resultMap="inspectionConfigVOResult">
|
||||
<include refid="listInspectionsSql"/>
|
||||
AND id.ins_id = #{wrkId}
|
||||
<if test="true">
|
||||
${query.sqlParam.get('dataScope')}
|
||||
</if>
|
||||
</select>
|
||||
<select id="listInspectionsByWrkIds" resultMap="inspectionConfigVOResult">
|
||||
<include refid="listInspectionsSql"/>
|
||||
AND id.ins_id IN
|
||||
<foreach collection="wrkIds" separator="," close=")" open="(" item="wrkId">
|
||||
#{wrkId}
|
||||
</foreach>
|
||||
<if test="true">
|
||||
${query.sqlParam.get('dataScope')}
|
||||
</if>
|
||||
</select>
|
||||
<sql id="listInspectionsSql">
|
||||
SELECT id.data_id,
|
||||
id.config_value,
|
||||
id.remark,
|
||||
id.ins_id,
|
||||
idl.detail_id,
|
||||
idl.config_key,
|
||||
idl.config_type,
|
||||
idl.config_label,
|
||||
ic.config_id,
|
||||
ic.template,
|
||||
ic.alias,
|
||||
ic.config_name,
|
||||
ic.template_url
|
||||
FROM inspection_data id
|
||||
INNER JOIN inspection_detail idl ON id.detail_id = idl.detail_id
|
||||
INNER JOIN inspection_config ic ON ic.config_id = idl.config_id
|
||||
WHERE id.del_state = 0
|
||||
</sql>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -1,114 +1,246 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.chushang.inspection.work.mapper.WrkInfoMapper">
|
||||
<select id="queryDispatchPage" resultType="com.chushang.inspection.work.vo.WrkDispatchVO">
|
||||
SELECT i.wrk_id AS wrkId,
|
||||
i.user_name AS userName,
|
||||
i.user_id AS userId,
|
||||
i.dept_id AS deptId,
|
||||
i.dept_name AS deptName,
|
||||
i.work_type AS workType,
|
||||
i.work_no AS workNo,
|
||||
i.work_sort AS workSort,
|
||||
i.remark AS remark,
|
||||
i.end_time AS endTime,
|
||||
i.create_time AS createTime,
|
||||
i.create_by AS createBy,
|
||||
isr.store_id AS storeId,
|
||||
isr.store_no AS storeName,
|
||||
isr.store_name AS storeNo,
|
||||
itr.terminal_id AS terminalId,
|
||||
itr.terminal_no AS terminalNo,
|
||||
itr.terminal_sn AS terminalSn,
|
||||
itr.terminal_type AS terminalType,
|
||||
itr.terminal_model AS terminalModel
|
||||
FROM `wrk_info` i
|
||||
INNER JOIN wrk_info_store_record isr ON i.wrk_id = isr.wrk_id
|
||||
INNER JOIN wrk_info_terminal_record itr ON i.wrk_id = itr.wrk_id
|
||||
<where>
|
||||
<if test="1==1">
|
||||
${query.sqlParam.get('sqlWhere')}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY i.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="queryArchivePage" resultType="com.chushang.inspection.work.vo.WrkAuditVO">
|
||||
SELECT i.wrk_id AS wrkId,
|
||||
i.work_no AS workNo,
|
||||
isr.store_no AS storeNo,
|
||||
isr.store_id AS storeId,
|
||||
i.user_id AS userId,
|
||||
i.user_name AS userName,
|
||||
itr.terminal_id AS terminalId,
|
||||
itr.terminal_no AS terminalNo,
|
||||
i.work_type AS workType,
|
||||
isr.ins_fre AS insFre,
|
||||
i.wrk_status AS wrkStatus,
|
||||
isr.geographic_location AS geographicLocation,
|
||||
isr.location_address AS locationAddress,
|
||||
isr.deviation AS deviation,
|
||||
i.dispose_time AS disposeTime,
|
||||
i.create_by AS createBy,
|
||||
i.create_time AS createTime,
|
||||
i.task_id AS taskId,
|
||||
i.task_name AS taskName,
|
||||
i.lower_task_id AS lowerTaskId,
|
||||
i.lower_task_name AS lowerTaskName
|
||||
FROM wrk_info i
|
||||
INNER JOIN wrk_info_store_record isr ON i.wrk_id = isr.wrk_id
|
||||
INNER JOIN wrk_info_terminal_record itr ON i.wrk_id = itr.wrk_id
|
||||
<where>
|
||||
<if test="1==1">
|
||||
${query.sqlParam.get('sqlWhere')}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY i.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="queryAppPage" resultType="com.chushang.inspection.work.vo.WrkListAppVO">
|
||||
SELECT
|
||||
i.wrk_id AS wrkId,
|
||||
i.work_type AS workType,
|
||||
i.task_name AS taskName,
|
||||
isr.store_name AS storeName,
|
||||
isr.store_contact AS storeContact,
|
||||
isr.store_phone AS storePhone,
|
||||
isr.ins_fre AS insFre,
|
||||
itr.terminal_id AS terminalId,
|
||||
itr.terminal_address AS terminalAddress,
|
||||
(
|
||||
SELECT count(w1.wrk_id)
|
||||
FROM
|
||||
wrk_info w1 INNER JOIN
|
||||
wrk_info_terminal_record w2 ON w1.wrk_id = w2.wrk_id
|
||||
WHERE w2.terminal_id = itr.terminal_id AND w1.wrk_status = #{query.wrkStatus}
|
||||
) AS numberOfPickups,
|
||||
(
|
||||
SELECT w1.dispose_time
|
||||
FROM
|
||||
wrk_info w1 INNER JOIN
|
||||
wrk_info_terminal_record w2 ON w1.wrk_id = w2.wrk_id
|
||||
WHERE w2.terminal_id = itr.terminal_id
|
||||
AND w1.wrk_status = #{query.wrkStatus} order by w1.dispose_time desc limit 1
|
||||
) AS lastDisposeTime,
|
||||
(
|
||||
SELECT w1.service_result
|
||||
FROM
|
||||
wrk_info w1 INNER JOIN
|
||||
wrk_info_terminal_record w2 ON w1.wrk_id = w2.wrk_id
|
||||
WHERE w2.terminal_id = itr.terminal_id
|
||||
AND w1.wrk_status = #{query.wrkStatus} order by w1.dispose_time desc limit 1
|
||||
) AS lastServiceResult
|
||||
FROM
|
||||
wrk_info i
|
||||
INNER JOIN wrk_info_store_record isr ON i.wrk_id = isr.wrk_id
|
||||
INNER JOIN wrk_info_terminal_record itr ON i.wrk_id = itr.wrk_id
|
||||
<where>
|
||||
<if test="1==1">
|
||||
${query.sqlParam.get('sqlWhere')}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY i.create_time desc
|
||||
<select id="queryDispatchPage" resultType="com.chushang.inspection.work.vo.WrkDispatchVO">
|
||||
SELECT i.wrk_id AS wrkId,
|
||||
i.user_name AS userName,
|
||||
i.user_id AS userId,
|
||||
i.dept_id AS deptId,
|
||||
i.dept_name AS deptName,
|
||||
i.work_type AS workType,
|
||||
i.work_no AS workNo,
|
||||
i.work_sort AS workSort,
|
||||
i.remark AS remark,
|
||||
i.end_time AS endTime,
|
||||
i.create_time AS createTime,
|
||||
i.create_by AS createBy,
|
||||
isr.store_id AS storeId,
|
||||
isr.store_no AS storeName,
|
||||
isr.store_name AS storeNo,
|
||||
itr.terminal_id AS terminalId,
|
||||
itr.terminal_no AS terminalNo,
|
||||
itr.terminal_sn AS terminalSn,
|
||||
itr.terminal_type AS terminalType,
|
||||
itr.terminal_model AS terminalModel
|
||||
FROM `wrk_info` i
|
||||
INNER JOIN wrk_info_store_record isr ON i.wrk_id = isr.wrk_id
|
||||
INNER JOIN wrk_info_terminal_record itr ON i.wrk_id = itr.wrk_id
|
||||
WHERE i.del_state = 0
|
||||
<if test="1 == 1">
|
||||
${query.sqlParam.get('sqlWhere')}
|
||||
</if>
|
||||
ORDER BY i.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="queryArchivePage" resultType="com.chushang.inspection.work.vo.WrkAuditVO">
|
||||
SELECT i.wrk_id AS wrkId,
|
||||
i.work_no AS workNo,
|
||||
isr.store_no AS storeNo,
|
||||
isr.store_id AS storeId,
|
||||
i.user_id AS userId,
|
||||
i.user_name AS userName,
|
||||
itr.terminal_id AS terminalId,
|
||||
itr.terminal_no AS terminalNo,
|
||||
i.work_type AS workType,
|
||||
isr.ins_fre AS insFre,
|
||||
i.wrk_status AS wrkStatus,
|
||||
isr.geographic_location AS geographicLocation,
|
||||
isr.location_address AS locationAddress,
|
||||
isr.deviation AS deviation,
|
||||
i.dispose_time AS disposeTime,
|
||||
i.create_by AS createBy,
|
||||
i.create_time AS createTime,
|
||||
i.task_id AS taskId,
|
||||
i.task_name AS taskName,
|
||||
i.lower_task_id AS lowerTaskId,
|
||||
i.lower_task_name AS lowerTaskName
|
||||
FROM wrk_info i
|
||||
INNER JOIN wrk_info_store_record isr ON i.wrk_id = isr.wrk_id
|
||||
INNER JOIN wrk_info_terminal_record itr ON i.wrk_id = itr.wrk_id
|
||||
where i.del_state = 0
|
||||
<if test="1 == 1">
|
||||
${query.sqlParam.get('sqlWhere')}
|
||||
</if>
|
||||
ORDER BY i.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="queryAppPage" resultType="com.chushang.inspection.work.vo.WrkListAppVO">
|
||||
SELECT i.wrk_id AS wrkId,
|
||||
i.work_type AS workType,
|
||||
i.task_name AS taskName,
|
||||
isr.store_name AS storeName,
|
||||
isr.store_contact AS storeContact,
|
||||
isr.store_phone AS storePhone,
|
||||
isr.ins_fre AS insFre,
|
||||
itr.terminal_id AS terminalId,
|
||||
itr.terminal_address AS terminalAddress,
|
||||
(SELECT count(w1.wrk_id)
|
||||
FROM wrk_info w1
|
||||
INNER JOIN
|
||||
wrk_info_terminal_record w2 ON w1.wrk_id = w2.wrk_id
|
||||
WHERE w2.terminal_id = itr.terminal_id
|
||||
AND w1.wrk_status = #{query.wrkStatus}) AS numberOfPickups,
|
||||
(SELECT w1.dispose_time
|
||||
FROM wrk_info w1
|
||||
INNER JOIN
|
||||
wrk_info_terminal_record w2 ON w1.wrk_id = w2.wrk_id
|
||||
WHERE w2.terminal_id = itr.terminal_id
|
||||
AND w1.wrk_status = #{query.wrkStatus}
|
||||
order by w1.dispose_time desc
|
||||
limit 1) AS lastDisposeTime,
|
||||
(SELECT w1.service_result
|
||||
FROM wrk_info w1
|
||||
INNER JOIN
|
||||
wrk_info_terminal_record w2 ON w1.wrk_id = w2.wrk_id
|
||||
WHERE w2.terminal_id = itr.terminal_id
|
||||
AND w1.wrk_status = #{query.wrkStatus}
|
||||
order by w1.dispose_time desc
|
||||
limit 1) AS lastServiceResult
|
||||
FROM wrk_info i
|
||||
INNER JOIN wrk_info_store_record isr ON i.wrk_id = isr.wrk_id
|
||||
INNER JOIN wrk_info_terminal_record itr ON i.wrk_id = itr.wrk_id
|
||||
where i.del_state = 0
|
||||
<if test="1 == 1">
|
||||
${query.sqlParam.get('sqlWhere')}
|
||||
</if>
|
||||
ORDER BY i.create_time desc
|
||||
</select>
|
||||
<resultMap id="wrkInfoDetailsVOResult" type="com.chushang.inspection.work.vo.WrkInfoDetailsVO">
|
||||
<association property="wrkInfo" javaType="com.chushang.inspection.work.vo.WrkInfoVO">
|
||||
<id column="wrk_id" property="wrkId" />
|
||||
<result column="remark" property="remark" />
|
||||
<result column="account_manager" property="accountManager" />
|
||||
<result column="account_phone" property="accountPhone" />
|
||||
<result column="create_by" property="createBy" />
|
||||
<result column="create_time" property="createTime" />
|
||||
<result column="dept_id" property="deptId" />
|
||||
<result column="dept_name" property="deptName" />
|
||||
<result column="dispose_time" property="disposeTime" />
|
||||
<result column="end_time" property="endTime" />
|
||||
<result column="lower_task_id" property="lowerTaskId" />
|
||||
<result column="lower_task_name" property="lowerTaskName" />
|
||||
<result column="service_result" property="serviceResult" />
|
||||
<result column="task_id" property="taskId" />
|
||||
<result column="task_name" property="taskName" />
|
||||
<result column="user_id" property="userId" />
|
||||
<result column="user_name" property="userName" />
|
||||
<result column="work_method" property="workMethod" />
|
||||
<result column="work_no" property="workNo" />
|
||||
<result column="work_sort" property="workSort" />
|
||||
<result column="work_source" property="workSource" />
|
||||
<result column="work_type" property="workType" />
|
||||
<result column="wrk_status" property="wrkStatus"/>
|
||||
</association>
|
||||
<association property="infoStore" javaType="com.chushang.inspection.work.vo.WrkInfoStoreVO">
|
||||
<id column="store_id" property="storeId" />
|
||||
<result column="deviation" property="deviation" />
|
||||
<result column="geographic_location" property="geographicLocation" />
|
||||
<result column="ins_fre" property="insFre" />
|
||||
<result column="legal_name" property="legalName" />
|
||||
<result column="location_address" property="locationAddress" />
|
||||
<result column="pre_code_encoding" property="preCodeEncoding" />
|
||||
<result column="products" property="products" />
|
||||
<result column="register_address" property="registerAddress" />
|
||||
<result column="shop_name" property="shopName" />
|
||||
<result column="special_num" property="specialNum" />
|
||||
<result column="store_address" property="storeAddress" />
|
||||
<result column="store_contact" property="storeContact" />
|
||||
<result column="store_name" property="storeName" />
|
||||
<result column="store_no" property="storeNo" />
|
||||
<result column="store_phone" property="storePhone" />
|
||||
<result column="store_status" property="storeStatus" />
|
||||
<result column="store_type" property="storeType" />
|
||||
<result column="tip_tool" property="tipTool" />
|
||||
<result column="work_adderss" property="workAddress" />
|
||||
<result column="work_location" property="workLocation" />
|
||||
</association>
|
||||
<association property="infoTerminal" javaType="com.chushang.inspection.work.vo.WrkInfoTerminalVO">
|
||||
<id column="terminal_id" property="terminalId" />
|
||||
<result column="occupy" property="occupy" />
|
||||
<result column="terminal_address" property="terminalAddress" />
|
||||
<result column="terminal_model" property="terminalModel" />
|
||||
<result column="terminal_no" property="terminalNo" />
|
||||
<result column="terminal_property" property="terminalProperty" />
|
||||
<result column="terminal_sn" property="terminalSn" />
|
||||
<result column="terminal_source" property="terminalSource" />
|
||||
<result column="terminal_status" property="terminalStatus" />
|
||||
<result column="terminal_type" property="terminalType" />
|
||||
<result column="terminal_version" property="terminalVersion" />
|
||||
</association>
|
||||
</resultMap>
|
||||
<select id="listInsTemplate" resultType="com.chushang.inspection.work.vo.WrkInfoDetailsVO">
|
||||
<include refid="wrkInfoDetailSql" />
|
||||
<if test="1 == 1">
|
||||
${query.sqlParam.get('sqlWhere')}
|
||||
</if>
|
||||
ORDER BY i.create_time desc
|
||||
</select>
|
||||
<select id="getWrkInfoDetails" resultMap="wrkInfoDetailsVOResult">
|
||||
<include refid="wrkInfoDetailSql" />
|
||||
AND i.wrk_id = #{wrkId}
|
||||
ORDER BY i.create_time desc
|
||||
</select>
|
||||
<sql id="wrkInfoDetailSql">
|
||||
SELECT
|
||||
i.wrk_id,
|
||||
i.`dept_id`,
|
||||
i.`task_id`,
|
||||
i.`lower_task_id`,
|
||||
i.`user_id`,
|
||||
i.`user_name`,
|
||||
i.`work_no`,
|
||||
i.`work_type`,
|
||||
i.`work_method`,
|
||||
i.`work_sort`,
|
||||
i.`work_source`,
|
||||
i.`dispose_time`,
|
||||
i.`account_manager`,
|
||||
i.`account_phone`,
|
||||
i.`service_result`,
|
||||
i.`remark`,
|
||||
i.`end_time`,
|
||||
i.`create_by`,
|
||||
i.`create_time`,
|
||||
i.`task_name`,
|
||||
i.`lower_task_name`,
|
||||
i.`dept_name`,
|
||||
i.`wrk_status`,
|
||||
isr.`store_id`,
|
||||
isr.`store_status`,
|
||||
isr.`store_no`,
|
||||
isr.`store_name`,
|
||||
isr.`store_contact`,
|
||||
isr.`store_phone`,
|
||||
isr.`store_address`,
|
||||
isr.`special_num`,
|
||||
isr.`shop_name`,
|
||||
isr.`store_type`,
|
||||
isr.`products`,
|
||||
isr.`tip_tool`,
|
||||
isr.`ins_fre`,
|
||||
isr.`register_address`,
|
||||
isr.`legal_name`,
|
||||
isr.`geographic_location`,
|
||||
isr.`location_address`,
|
||||
isr.`work_location`,
|
||||
isr.`work_adderss`,
|
||||
isr.`deviation`,
|
||||
isr.`pre_code_encoding`,
|
||||
itr.`terminal_id`,
|
||||
itr.`terminal_sn`,
|
||||
itr.`terminal_type`,
|
||||
itr.`terminal_model`,
|
||||
itr.`terminal_no`,
|
||||
itr.`terminal_source`,
|
||||
itr.`terminal_address`,
|
||||
itr.`terminal_version`,
|
||||
itr.`terminal_property`,
|
||||
itr.`occupy`,
|
||||
itr.`terminal_status`
|
||||
FROM
|
||||
`wrk_info` i
|
||||
INNER JOIN wrk_info_store_record isr ON i.wrk_id = isr.wrk_id
|
||||
INNER JOIN wrk_info_terminal_record itr ON i.wrk_id = itr.wrk_id
|
||||
WHERE i.del_state = 0
|
||||
</sql>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
import com.chushang.InspectionApplication;
|
||||
import com.chushang.inspection.ins.GeneratedIns;
|
||||
import com.chushang.inspection.work.service.WrkInfoService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @auther: zhao
|
||||
* @date: 2024/6/29 14:45
|
||||
*/
|
||||
@Slf4j
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(classes = InspectionApplication.class)
|
||||
public class GenInsTest {
|
||||
|
||||
@Resource
|
||||
GeneratedIns generatedIns;
|
||||
@Resource
|
||||
WrkInfoService wrkInfoService;
|
||||
|
||||
@Test
|
||||
public void genTest(){
|
||||
|
||||
// generatedIns.generated();
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue