diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/pom.xml b/chushang-modules/chushang-module-inspection/inspection-feign/pom.xml
index 89f11e2..6b1a3f4 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/pom.xml
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/pom.xml
@@ -15,11 +15,12 @@
com.chushang
- chushang-common-excel
+ chushang-common-office
com.chushang
oss-feign
+
diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/InspectionConfigVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/InspectionConfigVO.java
index 1b933ab..05bfb57 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/InspectionConfigVO.java
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/InspectionConfigVO.java
@@ -36,6 +36,10 @@ public class InspectionConfigVO implements Serializable {
* 模板路径
*/
private String templateUrl;
+ /**
+ * 对应的工单id
+ */
+ private Long wrkId;
/**
* 详细信息
*/
diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkImgVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkImgVO.java
index 582698c..e733680 100644
--- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkImgVO.java
+++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkImgVO.java
@@ -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;
}
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 ca8938f..7602ce2 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
@@ -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 {
@Resource
RemoteTaskService remoteTaskService;
+
/**
* 执行 下发的 后台任务
*/
@@ -44,67 +46,72 @@ public class InspectionConsumerService implements RocketMQListener {
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);
+ });
}
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/DefaultGeneratedIns.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/DefaultGeneratedIns.java
new file mode 100644
index 0000000..2a1de10
--- /dev/null
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/DefaultGeneratedIns.java
@@ -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 wrkMaps, InspectionConfigVO insConfig, String basePath) {
+
+ }
+
+ /**
+ * 用于 注册
+ */
+ @Override
+ public String register() {
+ return "default";
+ }
+}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/DefaultGeneratedInspection.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/DefaultGeneratedInspection.java
new file mode 100644
index 0000000..2069e41
--- /dev/null
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/DefaultGeneratedInspection.java
@@ -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> generated(Map info, InspectionConfigVO inspection, String path, Executor executor);
+
+ @Override
+ public void compileWord(String fileName, String templatePath, Map 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 Map InspectionToMap(WrkInfoDetailsVO inspection, Integer width, Integer height, int... imgTypes) {
+ Map map = BeanUtil.beanToMap(inspection, Maps.newHashMap(),
+ true, v -> "images".equals(v) ? null : v);
+ WrkInfoVO wrkInfo = inspection.getWrkInfo();
+ List 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 void getImage(List images, Map data, Integer width, Integer height, int[] exclude, int... imgTypes) {
+ if (CollUtil.isEmpty(images)) {
+ return;
+ }
+ Map 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 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 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());
+ }
+}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedIns.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedIns.java
new file mode 100644
index 0000000..79a5bc1
--- /dev/null
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedIns.java
@@ -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 map 结构
+ */
+ void generated(Map 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();
+
+}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedInsFactory.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedInsFactory.java
new file mode 100644
index 0000000..711769a
--- /dev/null
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedInsFactory.java
@@ -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 generatedInsMap;
+//
+// GeneratedInsFactory(List insList, DefaultGeneratedIns defaultGeneratedIns){
+// generatedInsMap = new HashMap<>();
+// insList.forEach(ins-> generatedInsMap.put(ins.register(), ins));
+// this.defaultGeneratedIns = defaultGeneratedIns;
+// }
+//
+// public void generated(Map wrkMaps){
+// // 生成文件名
+// List> 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 inspections = wrk.getInspections();
+// inspections.forEach(ins->{
+// // 别名
+// String alias = ins.getAlias();
+// // 模板
+// String templateUrl = ins.getTemplateUrl();
+//
+// });
+// });
+// }
+//
+//}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedInspection.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedInspection.java
new file mode 100644
index 0000000..b63bd0c
--- /dev/null
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedInspection.java
@@ -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> generated(Map 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 data);
+
+ Map InspectionToMap(WrkInfoDetailsVO inspection, Integer width, Integer height, int... imgTypes);
+
+ void getImage(List images, Map data,Integer width, Integer height, int[] exclude, int... imgTypes);
+
+ String getFormat(String template, ConfigDataVO insList, int i, boolean isRemark);
+}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/InsConfigController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/InsConfigController.java
index ce0efce..a8ffb9a 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/InsConfigController.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/InsConfigController.java
@@ -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));
+ }
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/InsDetailController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/InsDetailController.java
index c2febb0..cfc90c3 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/InsDetailController.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/InsDetailController.java
@@ -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 不能为空");
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/PollTaskController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/PollTaskController.java
index 84efaa3..7200620 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/PollTaskController.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/PollTaskController.java
@@ -28,7 +28,7 @@ import java.util.List;
*/
@Slf4j
@RestController
-@RequestMapping(value = "/inspection/task")
+@RequestMapping(value = "/task")
public class PollTaskController {
@Resource
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/InspectionDataMapper.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/InspectionDataMapper.java
index 7979feb..bca137c 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/InspectionDataMapper.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/InspectionDataMapper.java
@@ -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 {
@DataScope(deptAlias = "ic")
- List listInspections(@Param("wrkId") Long wrkId, @Param("query") CommonParam query);
+ List listInspectionsByWrkId(@Param("wrkId") Long wrkId, @Param("query") CommonParam query);
+ @DataScope(deptAlias = "ic")
+ List listInspectionsByWrkIds(@Param("wrkIds") Set wrkIds, @Param("query") CommonParam query);
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/InspectionConfigService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/InspectionConfigService.java
index 2730965..1269850 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/InspectionConfigService.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/InspectionConfigService.java
@@ -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{
void updateByEntityId(InspectionConfig config);
void saveEntity(InspectionConfig config);
+
+ String uploadTemplate(MultipartFile file);
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/InspectionDataService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/InspectionDataService.java
index 61a6d13..b8a634b 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/InspectionDataService.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/InspectionDataService.java
@@ -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{
List listInspections(Long wrkId);
+
+ List listInspections(Set wrkIds);
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/impl/InspectionConfigServiceImpl.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/impl/InspectionConfigServiceImpl.java
index 603d10a..0a51a42 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/impl/InspectionConfigServiceImpl.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/impl/InspectionConfigServiceImpl.java
@@ -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> 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("上传失败");
+ }
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/impl/InspectionDataServiceImpl.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/impl/InspectionDataServiceImpl.java
index cc9ff86..10eae2d 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/impl/InspectionDataServiceImpl.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/impl/InspectionDataServiceImpl.java
@@ -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 implements InspectionDataService {
/**
* 根据工单id 查询对应的 巡检单信息
- * @param wrkId
- * @return
+ * @param wrkId 工单id
*/
@Override
public List listInspections(Long wrkId) {
CommonParam commonParam = CommonParam.buildPageRequest();
- return baseMapper.listInspections(wrkId, commonParam);
+ return baseMapper.listInspectionsByWrkId(wrkId, commonParam);
+ }
+
+ /**
+ * 根据工单id, 获取对应 巡检单信息
+ */
+ public List listInspections(Set wrkIds) {
+ CommonParam commonParam = CommonParam.buildPageRequest();
+ return baseMapper.listInspectionsByWrkIds(wrkIds, commonParam);
}
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/controller/ConsumablesTotalController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/controller/ConsumablesTotalController.java
index b72a250..271934c 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/controller/ConsumablesTotalController.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/terminal/controller/ConsumablesTotalController.java
@@ -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);
- }
-
/**
* 查询耗材总数
*
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 2225fed..c6f66a5 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
@@ -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> listResult = ossService.uploadFile(outputStream.toByteArray(), "五统一商户明细导出.xlsx", false, "", "fileStore", SecurityConstants.INNER);
+ Result> listResult = ossService.uploadFile(UploadBytesDTO.builder()
+ .bytes(outputStream.toByteArray()).build(), "五统一商户明细导出.xlsx", false, "", "fileStore", SecurityConstants.INNER);
if (listResult.isSuccess() && CollectionUtil.isNotEmpty(listResult.getData())){
List data = listResult.getData();
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/utils/PoolUtils.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/utils/PoolUtils.java
new file mode 100644
index 0000000..a89343c
--- /dev/null
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/utils/PoolUtils.java
@@ -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;
+ }
+ }
+}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/controller/WrkInfoController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/controller/WrkInfoController.java
index eabaeaa..6b62133 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/controller/WrkInfoController.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/controller/WrkInfoController.java
@@ -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 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();
}
+
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/mapper/WrkInfoMapper.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/mapper/WrkInfoMapper.java
index 8f6700d..91cc4c9 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/mapper/WrkInfoMapper.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/mapper/WrkInfoMapper.java
@@ -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 {
List queryArchivePage(@Param("query") ReviewedQuery query, Page page);
List queryAppPage(@Param("query") WrkAppQuery query, Page page);
+
+ List listInsTemplate(@Param("query") ReviewedQuery query);
+
+ WrkInfoDetailsVO getWrkInfoDetails(@Param("wrkId") Long wrkId);
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkImgService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkImgService.java
index a9a8d82..dff4b52 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkImgService.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkImgService.java
@@ -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 {
String uploadPicture(MultipartFile file, Integer imgType, Long wrkId, String locationAddress);
void removeImg(ImageDTO image);
+
+ List listImgByWrkIds(Set wrkIds);
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkInfoService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkInfoService.java
index 06d19de..ca35d89 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkInfoService.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/WrkInfoService.java
@@ -27,4 +27,6 @@ public interface WrkInfoService extends IService {
WrkInfoDetailsVO queryWorkOrderDetails(Long wrkId);
List dispatch(DispatchQuery query, int i);
+
+ Long downInspectionTemplate(ReviewedQuery query);
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkImgServiceImpl.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkImgServiceImpl.java
index 1a85ac5..2539476 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkImgServiceImpl.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkImgServiceImpl.java
@@ -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 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> 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 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 imgSql = WrapperUtils.builder();
+ imgSql.eq(WrkImg::getWrkId, image.getWrkId())
+ .eq(WrkImg::getImgType, image.getImgType());
+ List imgList = list(imgSql);
+ if (CollectionUtil.isNotEmpty(imgList)){
+ Set imgIds = imgList.stream().map(WrkImg::getImgId).collect(Collectors.toSet());
+ removeByIds(imgIds);
+ Set fids = imgList.stream().map(WrkImg::getFid).collect(Collectors.toSet());
+ Result stringResult = remoteOssService.delFile(fids, SecurityConstants.INNER);
+ AssertUtil.invalidate(!stringResult.isSuccess(), stringResult.getMsg());
+ }
+ }
+ @Override
+ public List listImgByWrkIds(Set wrkIds) {
+ List imgList = list(new LambdaQueryWrapper().in(WrkImg::getWrkId, wrkIds));
+ if (CollectionUtil.isNotEmpty(imgList))
+ return BeanUtil.copyToList(imgList, WrkImgVO.class);
+ return List.of();
}
}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkInfoPhoneServiceImpl.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkInfoPhoneServiceImpl.java
index 2ed6727..fa247e1 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkInfoPhoneServiceImpl.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkInfoPhoneServiceImpl.java
@@ -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> ossResult = remoteOssService.uploadFile(outputStream.toByteArray(), "", null, null, "", SecurityConstants.INNER);
+ Result> ossResult = remoteOssService.uploadFile(
+ UploadBytesDTO.builder().bytes(outputStream.toByteArray()).build()
+ , "", null, null, "", SecurityConstants.INNER);
if (ossResult.isSuccess() && CollectionUtil.isNotEmpty(ossResult.getData())){
List data = ossResult.getData();
FileSourceVo fileSourceVo = data.get(0);
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkInfoServiceImpl.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkInfoServiceImpl.java
index 7c54974..e2b79fc 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkInfoServiceImpl.java
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/impl/WrkInfoServiceImpl.java
@@ -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 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 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 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 auditList = infoAuditService.list(new LambdaQueryWrapper()
.eq(WrkInfoAudit::getWrkId, wrkId));
infoDetail.setInfoAudit(BeanUtil.copyToList(auditList, AuditVO.class));
// 工单图片
- List imgList = wrkImgService.list(new LambdaQueryWrapper()
- .eq(WrkImg::getImgId, wrkId));
+ List imgList = wrkImgService.list(new LambdaQueryWrapper().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()
- .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()
- .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().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 impl
return List.of();
}
+ @Override
+ @DataScope(deptAlias = "i")
+ public Long downInspectionTemplate(ReviewedQuery query) {
+ // 先查询是否存在对应的记录
+ WrapperUtils.buildSql(query);
+ Page page = new Page<>(1, 1);
+ baseMapper.queryArchivePage(query, page);
+ // 必须 total 大于0, 才走下一步
+ AssertUtil.invalidate(page.getTotal() == 0, "下载信息为空");
+ DateUtils.format(LocalDate.now());
+ // 下载巡检单信息
+ Result 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 downInspectionTemplate(String params){
+ ReviewedQuery query = JSON.parseObject(params, ReviewedQuery.class);
+ // 先查询是否存在对应的记录
+ WrapperUtils.buildSql(query);
+ // 需要导出 工单信息
+ List wrkInfoDetailsVOS = baseMapper.listInsTemplate(query);
+ if (CollectionUtil.isEmpty(wrkInfoDetailsVOS)){
+ return Result.failed("查询工单为空");
+ }
+ // 工单map
+ Map wrkMap =
+ wrkInfoDetailsVOS.stream().collect(Collectors.toMap(w -> w.getWrkInfo().getWrkId(), o -> o));
+ List imgList = wrkImgService.listImgByWrkIds(wrkMap.keySet());
+ // 工单图片
+// List imgList = wrkImgService.list(new LambdaQueryWrapper().in(WrkImg::getImgId, wrkMap.keySet()));
+ Map> imgMap = imgList.stream().collect(Collectors.groupingBy(WrkImgVO::getWrkId));
+ List insConfigs = inspectionDataService.listInspections(wrkMap.keySet());
+ Map> configMap = insConfigs.stream().collect(Collectors.groupingBy(InspectionConfigVO::getWrkId));
+ wrkMap.forEach((wrkId, infoDetail)->{
+ List wrkImgs = imgMap.get(wrkId);
+ infoDetail.setInfoImg(wrkImgs);
+ List 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 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 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());
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/bootstrap.yml b/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/bootstrap.yml
index 5a40295..a493a4d 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/bootstrap.yml
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/bootstrap.yml
@@ -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}
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/InspectionDataMapper.xml b/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/InspectionDataMapper.xml
index 60550c7..72d1a5d 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/InspectionDataMapper.xml
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/InspectionDataMapper.xml
@@ -1,46 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ 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
+
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkInfoMapper.xml b/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkInfoMapper.xml
index 8b22cfa..e7dc4c0 100644
--- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkInfoMapper.xml
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkInfoMapper.xml
@@ -1,114 +1,246 @@
-
-
-
-
-
diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/GenInsTest.java b/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/GenInsTest.java
new file mode 100644
index 0000000..1cd5205
--- /dev/null
+++ b/chushang-modules/chushang-module-inspection/inspection-service/src/test/java/GenInsTest.java
@@ -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();
+ }
+
+}