From 83db6b90468c77799a16b4d551e75fc95530b5ab Mon Sep 17 00:00:00 2001 From: zhaowenyuan Date: Tue, 2 Jul 2024 11:31:47 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=94=B9=E4=BA=86n=E5=A4=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/MybatisPlusMetaObjectHandler.java | 8 +- .../redis/advice/IdempotentAdvice.java | 46 ++++ .../redis/annotation/AutoIdempotent.java | 17 ++ .../redis/cache/utils/RedisUtils.java | 6 + .../inspection/project/dto/TaskDTO.java | 2 +- .../inspection/project/dto/TaskQuery.java | 2 +- .../project/po/InspectionConfig.java | 7 + .../inspection/project/po/InspectionData.java | 5 + .../project/po/InspectionDetail.java | 5 + .../inspection/project/po/Template.java | 62 +++++ .../inspection/project/vo/TaskVO.java | 9 + .../inspection/project/vo/TerminalApp.java | 3 + .../inspection/project/vo/TerminalAppVO.java | 3 + .../inspection/terminal/vo/TerminalVO.java | 4 + .../inspection/work/dto/WrkInfoDTO.java | 226 ++++++++++++++++++ .../inspection/work/enums/InsResult.java | 71 ++++++ .../chushang/inspection/work/po/WrkInfo.java | 6 + .../chushang/inspection/work/vo/AuditVO.java | 3 + .../inspection/work/vo/ConfigDataVO.java | 8 + .../work/vo/InspectionConfigVO.java | 4 + .../inspection/work/vo/WrkAuditVO.java | 8 +- .../inspection/work/vo/WrkDispatchVO.java | 9 + .../inspection/work/vo/WrkInfoPhoneVO.java | 2 + .../inspection/work/vo/WrkInfoVO.java | 6 + .../inspection/work/vo/WrkListAppVO.java | 3 + .../inspection-service/pom.xml | 12 + .../common/controller/CommonController.java | 39 +++ .../common/service/CommonService.java | 43 ++++ .../ins/DefaultGeneratedInspection.java | 151 ------------ .../inspection/ins/GeneratedInspection.java | 61 ----- .../inspection/ins/TemplateService.java | 64 +++++ .../controller/InsConfigController.java | 22 +- .../controller/InsDetailController.java | 9 +- .../controller/PollTaskController.java | 30 +-- .../controller/TemplateController.java | 54 +++++ .../project/mapper/PollingTaskMapper.java | 5 +- .../project/mapper/TemplateMapper.java | 12 + .../service/InspectionConfigService.java | 3 +- .../project/service/TbTemplateService.java | 17 ++ .../service/impl/TemplateServiceImpl.java | 73 ++++++ .../ConsumableDetailsController.java | 4 +- .../ConsumablesTotalController.java | 2 +- .../terminal/controller/StoreController.java | 11 +- .../controller/TerminalController.java | 13 +- .../mapper/ConsumablesTotalMapper.java | 2 - .../terminal/mapper/StoreMapper.java | 2 + .../service/impl/StoreServiceImpl.java | 1 - .../work/controller/WrkInfoController.java | 17 ++ .../controller/WrkInfoPhoneController.java | 4 +- .../inspection/work/mapper/WrkInfoMapper.java | 7 +- .../service/{impl => }/WrkIcbcJsService.java | 2 +- .../{ => impl}/WrkIcbcJsServiceImpl.java | 7 +- .../work/service/impl/WrkInfoServiceImpl.java | 18 +- .../mapper/ConsumableDetailsMapper.xml | 7 +- .../mapper/ConsumablesTotalMapper.xml | 28 --- .../mapper/InspectionConfigMapper.xml | 25 -- .../resources/mapper/InspectionDataMapper.xml | 8 +- .../mapper/InspectionDetailMapper.xml | 25 -- .../mapper/PollingTaskAutographMapper.xml | 15 -- .../resources/mapper/PollingTaskMapper.xml | 37 --- .../main/resources/mapper/WrkAuditMapper.xml | 30 --- .../main/resources/mapper/WrkIcbcJsMapper.xml | 45 ---- .../main/resources/mapper/WrkImgMapper.xml | 26 -- .../resources/mapper/WrkInfoAuditMapper.xml | 28 --- .../main/resources/mapper/WrkInfoMapper.xml | 1 + .../resources/mapper/WrkInfoPhoneMapper.xml | 39 --- .../mapper/WrkInfoStoreRecordMapper.xml | 55 ----- .../mapper/WrkInfoTerminalRecordMapper.xml | 42 ---- .../resources/mapper/WrkProjectMapper.xml | 26 -- .../mapper/WrkProjectPaymentMapper.xml | 30 --- .../src/main/resources/template/default.docx | Bin 0 -> 14940 bytes .../src/test/java/GenInsTest.java | 12 +- 72 files changed, 939 insertions(+), 750 deletions(-) create mode 100644 chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/advice/IdempotentAdvice.java create mode 100644 chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/annotation/AutoIdempotent.java create mode 100644 chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/Template.java create mode 100644 chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/dto/WrkInfoDTO.java create mode 100644 chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/enums/InsResult.java create mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/common/controller/CommonController.java create mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/common/service/CommonService.java delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/DefaultGeneratedInspection.java delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedInspection.java create mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/TemplateService.java create mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/TemplateController.java create mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/TemplateMapper.java create mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/TbTemplateService.java create mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/impl/TemplateServiceImpl.java rename chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/{impl => }/WrkIcbcJsService.java (82%) rename chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/work/service/{ => impl}/WrkIcbcJsServiceImpl.java (68%) delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/ConsumablesTotalMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/InspectionConfigMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/InspectionDetailMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/PollingTaskAutographMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/PollingTaskMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkAuditMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkIcbcJsMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkImgMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkInfoAuditMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkInfoPhoneMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkInfoStoreRecordMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkInfoTerminalRecordMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkProjectMapper.xml delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/mapper/WrkProjectPaymentMapper.xml create mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/resources/template/default.docx diff --git a/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/config/MybatisPlusMetaObjectHandler.java b/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/config/MybatisPlusMetaObjectHandler.java index 21fc156..c85a80c 100644 --- a/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/config/MybatisPlusMetaObjectHandler.java +++ b/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/config/MybatisPlusMetaObjectHandler.java @@ -28,8 +28,8 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { } // 修改人, 创建人 // 用于填充 创建人以及修改人 - String userName = SecurityContextHolder.getUserName(); -// String userName = "system"; +// String userName = SecurityContextHolder.getUserName(); + String userName = "system"; this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); this.strictInsertFill(metaObject, "createBy", String.class, userName); } @@ -41,8 +41,8 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { @Override public void updateFill(MetaObject metaObject) { log.debug("mybatis plus start update fill ...."); - String userName = SecurityContextHolder.getUserName(); -// String userName = "system"; +// String userName = SecurityContextHolder.getUserName(); + String userName = "system"; this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); this.strictUpdateFill(metaObject, "updateBy", String.class, userName); } diff --git a/chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/advice/IdempotentAdvice.java b/chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/advice/IdempotentAdvice.java new file mode 100644 index 0000000..eb0d268 --- /dev/null +++ b/chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/advice/IdempotentAdvice.java @@ -0,0 +1,46 @@ +package com.chushang.redis.advice; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.servlet.ServletUtil; +import com.alibaba.fastjson2.JSON; +import com.chushang.common.core.util.IPUtils; +import com.chushang.redis.annotation.AutoIdempotent; +import com.chushang.redis.cache.utils.RedisUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.core.MethodParameter; +import org.springframework.http.HttpInputMessage; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdviceAdapter; + +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Type; +import java.time.Duration; + +@RestControllerAdvice +@SuppressWarnings("all") +@RequiredArgsConstructor +public class IdempotentAdvice extends RequestBodyAdviceAdapter { + @Override + public boolean supports(MethodParameter methodParameter, Type targetType, Class> converterType) { + return methodParameter.hasMethodAnnotation(AutoIdempotent.class); + } + + @Override + public Object afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { + String value = JSON.toJSONString(body); + if (StrUtil.isEmpty(value)) { + return body; + } + HttpServletRequest request = IPUtils.getRequest(); + String key = StrUtil.format("{}_{}", ServletUtil.getClientIP(request), request.getRequestURI()); + AutoIdempotent idempotent = parameter.getMethodAnnotation(AutoIdempotent.class); + try { + Assert.isTrue(RedisUtils.tryLock(key, idempotent.expireTime()), "请勿重复提交"); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + return body; + } +} diff --git a/chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/annotation/AutoIdempotent.java b/chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/annotation/AutoIdempotent.java new file mode 100644 index 0000000..a2817b8 --- /dev/null +++ b/chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/annotation/AutoIdempotent.java @@ -0,0 +1,17 @@ +package com.chushang.redis.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 幂等性注解 + */ +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface AutoIdempotent { + + /** 时间(秒) */ + long expireTime() default 5; +} diff --git a/chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/cache/utils/RedisUtils.java b/chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/cache/utils/RedisUtils.java index f50117f..3aa57ea 100644 --- a/chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/cache/utils/RedisUtils.java +++ b/chushang-common/chushang-common-redis/src/main/java/com/chushang/redis/cache/utils/RedisUtils.java @@ -11,6 +11,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -460,4 +461,9 @@ public class RedisUtils { return rKeys.countExists(getNameMapper().map(key)) > 0; } + public static boolean tryLock(String key, long expireTime) throws InterruptedException { + RLock lock = CLIENT.getLock(key); + return lock.tryLock(expireTime, TimeUnit.SECONDS); + } + } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskDTO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskDTO.java index cfa2cb2..fa75ff5 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskDTO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskDTO.java @@ -66,7 +66,7 @@ public class TaskDTO implements Serializable { /** * 负责的部门 -- 为空时 取当前用户部门id */ - @NotEmpty(message = "必须指定负责的部门", groups = {Create.class}) + @NotNull(message = "必须指定负责的部门", groups = {Create.class}) private Long deptId; /** diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskQuery.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskQuery.java index 8a49aa0..8008a8f 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskQuery.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/dto/TaskQuery.java @@ -22,7 +22,7 @@ public class TaskQuery extends CommonParam { /** 任务名称或联系人 */ @Size(max = 32, message = "任务名称或联系人长度不能超过32位") - @Condition(name = "`name`,contact", type = Condition.ConditionType.or_eq) + @Condition(name = "`name`,contact", type = Condition.ConditionType.or_like) private String blurry; /** 创建时间 */ diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionConfig.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionConfig.java index 947c268..27420cc 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionConfig.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionConfig.java @@ -69,5 +69,12 @@ public class InspectionConfig extends BaseEntity { * 模板所属路径 */ @TableField(value = "template_url") + @NotNull(message = "巡检单所属模板路径", groups = Create.class) private String templateUrl; + /** + * 模板所属fid + */ + @TableField(value = "template_fid") + @NotNull(message = "巡检单所属文件id", groups = Create.class) + private String templateFid; } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionData.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionData.java index ab68f4f..fce3632 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionData.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionData.java @@ -46,4 +46,9 @@ public class InspectionData extends BaseEntity { */ @TableField(value = "remark") private String remark; + /** + * label 对应的结果值--此值为选项值, 非最终呈现值 + */ + @TableField(value = "result") + private String result; } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionDetail.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionDetail.java index 46024ac..d0a71ad 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionDetail.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/InspectionDetail.java @@ -55,4 +55,9 @@ public class InspectionDetail extends BaseEntity { @TableField(value = "config_type") @NotNull(message = "config_type 不能为空", groups = {Create.class, Update.class}) private Short configType; + /** + * label 对应的结果值--此值为选项值, 非最终呈现值 + */ + @TableField(value = "result") + private String result; } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/Template.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/Template.java new file mode 100644 index 0000000..2cc41e4 --- /dev/null +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/po/Template.java @@ -0,0 +1,62 @@ +package com.chushang.inspection.project.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.chushang.common.core.validator.Create; +import com.chushang.common.core.validator.Update; +import com.chushang.common.dict.annotation.DictFormat; +import com.chushang.common.mybatis.annotation.Condition; +import com.chushang.common.mybatis.base.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * @auther: zhao + * @date: 2024/7/2 10:55 + */ +@Data +@EqualsAndHashCode(callSuper=true) +@AllArgsConstructor +@NoArgsConstructor +@TableName(value = "sy_template") +public class Template extends BaseEntity { + @NotNull(message = "模板id不能为空",groups = Update.class) + @TableId(value = "template_id", type = IdType.ASSIGN_ID) + @Condition(name = "template_id") + private Long templateId; + + @NotNull(message = "模板名称不能为空",groups = {Create.class, Update.class}) + @TableField(value = "template_name") + @Condition(name = "template_name", type = Condition.ConditionType.like) + private String templateName; + + @NotNull(message = "模板fid不能为空",groups = {Create.class, Update.class}) + @TableField(value = "template_fid") + @Condition(name = "template_fid") + private String templateFid; + @NotNull(message = "模板url不能为空",groups = {Create.class, Update.class}) + @TableField(value = "template_url") + private String templateUrl; + @NotNull(message = "模板alias不能为空",groups = {Create.class, Update.class}) + @TableField(value = "template_alias") + @Condition(name = "template_alias") + private String templateAlias; + @NotNull(message = "模板所属任务不能为空",groups = {Create.class, Update.class}) + @TableField(value = "task_id") + @Condition(name = "task_id") + private Long taskId; + + @TableField(value = "task_name") + private String taskName; + @NotNull(message = "模板类型不能为空",groups = {Create.class, Update.class}) + @TableField(value = "template_type") + @Condition(name = "template_type") + @DictFormat(dictType = "template_type") + private Integer templateType; +} diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TaskVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TaskVO.java index 8b786f6..dc907e3 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TaskVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TaskVO.java @@ -1,5 +1,7 @@ package com.chushang.inspection.project.vo; +import cn.hutool.core.date.DatePattern; +import com.alibaba.excel.annotation.format.DateTimeFormat; import com.chushang.common.core.util.TreeNode; import lombok.Data; import lombok.EqualsAndHashCode; @@ -38,11 +40,13 @@ public class TaskVO extends TreeNode { /** * 项目开始时间 */ + @DateTimeFormat(DatePattern.NORM_DATETIME_MS_PATTERN) private LocalDateTime startTime; /** * 项目结束时间 */ + @DateTimeFormat(DatePattern.NORM_DATETIME_MS_PATTERN) private LocalDateTime endTime; /** @@ -83,5 +87,10 @@ public class TaskVO extends TreeNode { * 所属部门 */ private Long deptId; + /** + * 创建时间 + */ + @DateTimeFormat(DatePattern.NORM_DATETIME_MS_PATTERN) + private LocalDateTime createTime; } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TerminalApp.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TerminalApp.java index 6aba59c..83d60f2 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TerminalApp.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TerminalApp.java @@ -1,5 +1,7 @@ package com.chushang.inspection.project.vo; +import cn.hutool.core.date.DatePattern; +import com.alibaba.excel.annotation.format.DateTimeFormat; import com.chushang.common.dict.annotation.DictFormat; import com.chushang.inspection.terminal.vo.StoreVO; import lombok.AllArgsConstructor; @@ -89,6 +91,7 @@ public class TerminalApp implements Serializable { * wrk_info_ id * (state = :state) order by dispose_time desc limit 1 */ + @DateTimeFormat(DatePattern.NORM_DATETIME_MS_PATTERN) private LocalDateTime processingTime; /** diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TerminalAppVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TerminalAppVO.java index ea29e96..600da19 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TerminalAppVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/vo/TerminalAppVO.java @@ -1,5 +1,7 @@ package com.chushang.inspection.project.vo; +import cn.hutool.core.date.DatePattern; +import com.alibaba.excel.annotation.format.DateTimeFormat; import com.chushang.common.dict.annotation.DictFormat; import lombok.AllArgsConstructor; import lombok.Builder; @@ -53,6 +55,7 @@ public class TerminalAppVO implements Serializable { /** * 上次工单处理时间 */ + @DateTimeFormat(DatePattern.NORM_DATETIME_MS_PATTERN) private LocalDateTime inspectionTime; /** diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/vo/TerminalVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/vo/TerminalVO.java index 34f40f9..221544e 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/vo/TerminalVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/terminal/vo/TerminalVO.java @@ -1,5 +1,7 @@ package com.chushang.inspection.terminal.vo; +import cn.hutool.core.date.DatePattern; +import com.alibaba.excel.annotation.format.DateTimeFormat; import com.chushang.common.dict.annotation.DictFormat; import lombok.AllArgsConstructor; import lombok.Builder; @@ -135,10 +137,12 @@ public class TerminalVO implements Serializable { /** * 巡检时间 */ + @DateTimeFormat(DatePattern.NORM_DATETIME_MS_PATTERN) private LocalDateTime inspectionTime; /** * 巡检时间 */ + @DateTimeFormat(DatePattern.NORM_DATETIME_MS_PATTERN) private LocalDateTime createTime; } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/dto/WrkInfoDTO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/dto/WrkInfoDTO.java new file mode 100644 index 0000000..9ce9ecc --- /dev/null +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/dto/WrkInfoDTO.java @@ -0,0 +1,226 @@ +package com.chushang.inspection.work.dto; + +import cn.hutool.core.date.DatePattern; +import com.chushang.inspection.terminal.vo.FiveStoreVO; +import com.chushang.inspection.work.vo.InspectionConfigVO; +import com.chushang.inspection.work.vo.WrkInfoStoreVO; +import com.chushang.inspection.work.vo.WrkInfoTerminalVO; +import com.chushang.inspection.work.vo.WrkInfoVO; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Range; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.List; + +/** + * @author 单傲 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WrkInfoDTO implements Serializable { + /** + * id + */ + @NotNull(message = "工单id不能为空") + private Long wrkId; + /** + * 巡检方式 + */ + @Range(min = 1, max = 2, message = "巡检方式非法") + private Integer workMethod; + /** + * 工单类型 + */ + @Range(min = 1, max = 50, message = "工单类型非法") + private Integer workType; + /** + * 状态 + */ + @NotNull(message = "工单状态不能为空") + @Range(min = 1, max = 7, message = "状态非法") + private Integer wrkStatus; + /** + * 备注 + */ + @Size(max = 100, message = "备注不能超过100个字符") + private String remark; + /** + * 服务结果 + */ + @Range(min = 1, max = 7, message = "服务结果非法") + private Integer serviceResult; + /** + * 操作员编号 -- 这个应当是提交人id + */ + @Size(max = 50, message = "操作员编号不能超过50个字符") + private String userId; + /** + * 客户经理 + */ + @Size(max = 30, message = "客户经理不能超过30个字符") + private String accountManager; + /** + * 经理电话 + */ + @Size(max = 30, message = "经理电话不能超过30个字符") + private String accountPhone; + + /** + * 终端状态 + */ + @Range(min = 1, max = 20, message = "终端状态非法") + private Integer terminalStatus; + /** + * 终端类型 + */ + @Range(min = 1, max = 10, message = "终端类型非法") + private Integer terminalType; + /** + * 终端版本号 + */ + @Size(max = 64, message = "终端版本号不能超过64个字符") + private String terminalVersion; + /** + * 终端地址 + */ + @Size(max = 300, message = "终端地址不能超过300个字符") + private String terminalAddress; + /** + * 终端来源 + */ + @Range(min = 1, max = 3, message = "终端来源非法") + private Integer terminalSource; + /** + * 终端编号 + */ + @Size(max = 30, message = "终端编号不能超过30个字符") + private String terminalNo; + /** + * 终端sn号 + */ + @Size(max = 100, message = "终端sn号不能超过100个字符") + private String terminalSn; + /** + * 终端型号 + */ + @Size(max = 64, message = "终端型号不能超过64个字符") + private String terminalModel; + + + + /** + * 商户编号 + */ + @Size(max = 64, message = "商户编号不能超过64个字符") + private String storeNo; + /** + * 门店状态 + */ + @Range(min = 1, max = 10, message = "门店状态非法") + private Integer storeStatus; + /** + * 商户名称 + */ + @Size(max = 128, message = "商户名称不能超过64个字符") + private String storeName; + /** + * 商户联系人 + */ + @Size(max = 128, message = "商户联系人不能超过128个字符") + private String storeContact; + /** + * 商户联系电话 + */ + @Size(max = 50, message = "商户联系方式不能超过50个字符") + private String storePhone; + /** + * 商户地址 + */ + @Size(max = 300, message = "商户地址不能超过300个字符") + private String storeAddress; + /** + * 商户特殊编号 + */ + @Size(max = 30, message = "特殊商户编号不能超过30个字符") + private String specialNum; + /** + * 门店名称 + */ + @Size(max = 128, message = "门店名称不能超过128个字符") + private String shopName; + /** + * 商户类型 + */ + @Range(min = 1, max = 10, message = "商户类型非法") + private Integer storeType; + /** + * 现有其他收单产品 + */ + @Size(max = 50, message = "现有其他收单产品不能超过50个字符") + private String products; + /** + * 商户提示工具 + */ + @Size(max = 50, message = "商户提示工具不能超过50个字符") + private String tipTool; + /** + * 巡检频次 + */ + @Range(min = 1, max = 5, message = "巡检频次非法") + private Integer insFre; + /** + * 注册地址 + */ + @Size(max = 128, message = "注册地址不能超过128个字符") + private String registerAddress; + /** + * 法人/负责人 + */ + @Size(max = 64, message = "法人/负责人不能超过64个字符") + private String legalName; + /** + * 地理位置信息 经度,纬度 + */ + @NotBlank(message = "地理位置信息不能为空") + @Size(max = 128, message = "地理位置信息不能超过128个字符") + private String geographicLocation; + /** + * 地理位置信息地址 + */ + @NotBlank(message = "地理位置信息地址") + @Size(max = 256, message = "地理位置信息地址不能超过256个字符") + private String locationAddress; + + + /** + * 任务id + */ + @NotNull(message = "任务id不能为空") + private Long taskId; + /** + * 建档日期 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DatePattern.NORM_DATE_PATTERN) + private LocalDate registerTime; + /** + * 巡检单信息 + */ + private List inspections; + + /** + * 五统一商户明细(内蒙古建行随付贷) + */ + private FiveStoreVO fiveUnifiedStoreDetails; +} diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/enums/InsResult.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/enums/InsResult.java new file mode 100644 index 0000000..5b91ef5 --- /dev/null +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/enums/InsResult.java @@ -0,0 +1,71 @@ +package com.chushang.inspection.work.enums; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ReflectUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.HashMap; +import java.util.Map; + +/** + *

巡检结果

+ * + *

农行湖北巡检单

+ * + * @author 单傲 + * @date 2023/1/16 10:21 + */ +@Getter +@AllArgsConstructor +public enum InsResult { + + /** + * 正常营业 + */ + NORMAL(1, "正常营业"), + + /** + * 商户撤机 + */ + WEANING(2, "商户撤机"), + + /** + * 商户撤店 + */ + REMOVE(3, "商户撤店"), + + /** + * 拒绝拜访 + */ + REFUSE(4, "拒绝拜访"), + + /** + * 巡检失败 + */ + LOSE(5, "巡检失败"); + + /** + * 状态值 + */ + private final Integer val; + + /** + * 状态名称 + */ + private final String name; + + /** + * 比较val获取值 + */ + public static Map getResultMap() { + InsResult[] results = InsResult.class.getEnumConstants(); + HashMap resultMap = MapUtil.newHashMap(results.length); + for (InsResult result : results) { + resultMap.put(Convert.toStr(ReflectUtil.getFieldValue(result, "val")), + Convert.toStr(ReflectUtil.getFieldValue(result, "name"))); + } + return resultMap; + } +} diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkInfo.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkInfo.java index 718d4be..14f6908 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkInfo.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/po/WrkInfo.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.chushang.common.mybatis.base.BaseEntity; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; @@ -135,4 +136,9 @@ public class WrkInfo extends BaseEntity { */ @TableField(value = "wrk_status") private Integer wrkStatus; + /** + * 建档日期 + */ + @TableField(value = "register_time") + private LocalDate registerTime; } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/AuditVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/AuditVO.java index e5d7d29..8a14bad 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/AuditVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/AuditVO.java @@ -1,6 +1,8 @@ package com.chushang.inspection.work.vo; +import cn.hutool.core.date.DatePattern; import com.chushang.common.dict.annotation.DictFormat; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Builder; @@ -41,6 +43,7 @@ public class AuditVO implements Serializable { /** * 审核时间 */ + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime auditTime; /** diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/ConfigDataVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/ConfigDataVO.java index 6c4a143..621882f 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/ConfigDataVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/ConfigDataVO.java @@ -22,6 +22,14 @@ public class ConfigDataVO { * key 对应值 */ private String configValue; + /** + * 最后拼接的 result 值 + */ + private String finalResult; + /** + * 问题 + */ + private String middleResult; /** * data * 备注信息 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 05bfb57..9247ed6 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 String templateFid; /** * 对应的工单id */ diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkAuditVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkAuditVO.java index 8838d40..957ed91 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkAuditVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkAuditVO.java @@ -1,6 +1,8 @@ package com.chushang.inspection.work.vo; +import cn.hutool.core.date.DatePattern; import com.chushang.common.dict.annotation.DictFormat; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -95,15 +97,17 @@ public class WrkAuditVO { /** * 处理时间 */ + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime disposeTime; /** * 创建者 */ - protected String createBy; + private String createBy; /** * 创建日期 */ - protected LocalDateTime createTime; + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) + private LocalDateTime createTime; } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkDispatchVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkDispatchVO.java index a77ebef..82b22b3 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkDispatchVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkDispatchVO.java @@ -1,6 +1,8 @@ package com.chushang.inspection.work.vo; +import cn.hutool.core.date.DatePattern; import com.chushang.common.dict.annotation.DictFormat; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -80,15 +82,22 @@ public class WrkDispatchVO implements Serializable { /** * 截至时间 */ + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime endTime; /** * 派单时间 */ + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime createTime; /** * 派单人 */ private String createBy; + /** + * 建档时间 + */ + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) + private LocalDateTime registerTime; @Serial private static final long serialVersionUID = 1L; } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkInfoPhoneVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkInfoPhoneVO.java index 0b7e0bc..4efa527 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkInfoPhoneVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkInfoPhoneVO.java @@ -6,6 +6,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serial; import java.io.Serializable; /** @@ -17,6 +18,7 @@ import java.io.Serializable; @NoArgsConstructor @AllArgsConstructor public class WrkInfoPhoneVO implements Serializable { + @Serial private static final long serialVersionUID = 1L; /** * 工单编号 diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkInfoVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkInfoVO.java index a52b5e8..9716095 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkInfoVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkInfoVO.java @@ -1,16 +1,19 @@ package com.chushang.inspection.work.vo; +import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.chushang.common.dict.annotation.DictFormat; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import javax.validation.constraints.NotNull; import java.io.Serial; import java.io.Serializable; import java.time.LocalDateTime; @@ -71,6 +74,7 @@ public class WrkInfoVO implements Serializable { /** * 业务员处理时间 */ + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime disposeTime; /** @@ -94,6 +98,7 @@ public class WrkInfoVO implements Serializable { /** * 结束时间 */ + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime endTime; /** * 工单状态 @@ -110,6 +115,7 @@ public class WrkInfoVO implements Serializable { /** * 派单时间 */ + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime createTime; /** diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkListAppVO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkListAppVO.java index 932d7bd..2325e15 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkListAppVO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/work/vo/WrkListAppVO.java @@ -1,6 +1,8 @@ package com.chushang.inspection.work.vo; +import cn.hutool.core.date.DatePattern; import com.chushang.common.dict.annotation.DictFormat; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -41,6 +43,7 @@ public class WrkListAppVO implements Serializable { private Integer workType; /** 上次工单处理时间 */ + @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) private LocalDateTime lastDisposeTime; /** 上次工单服务结果 */ diff --git a/chushang-modules/chushang-module-inspection/inspection-service/pom.xml b/chushang-modules/chushang-module-inspection/inspection-service/pom.xml index 079e1f5..5853762 100644 --- a/chushang-modules/chushang-module-inspection/inspection-service/pom.xml +++ b/chushang-modules/chushang-module-inspection/inspection-service/pom.xml @@ -114,6 +114,18 @@ + + UTF-8 + + + doc + docx + txt + ftl + xls + xlsx + + ${project.artifactId} diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/common/controller/CommonController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/common/controller/CommonController.java new file mode 100644 index 0000000..b911e63 --- /dev/null +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/common/controller/CommonController.java @@ -0,0 +1,39 @@ +package com.chushang.inspection.common.controller; + +import com.chushang.common.core.web.AjaxResult; +import com.chushang.common.log.annotation.SysLog; +import com.chushang.common.log.enums.BusinessType; +import com.chushang.inspection.common.service.CommonService; +import com.chushang.security.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; + +/** + * @auther: zhao + * @date: 2024/7/2 11:26 + */ +@RestController +@RequestMapping(value = "/common") +public class CommonController { + + @Resource + CommonService commonService; + + /** + * 上传文件上传 + */ + @SysLog(value = "上传模板", businessType = BusinessType.UPLOAD) + @PostMapping(value = "/upload") + @RequiresPermissions("ins:template:upload") + public AjaxResult templateUpload(@RequestParam("file") MultipartFile file, + @RequestParam("fileType") String fileType) + { + return AjaxResult.success(commonService.uploadFile(file, fileType)); + } + +} diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/common/service/CommonService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/common/service/CommonService.java new file mode 100644 index 0000000..ffb8eab --- /dev/null +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/common/service/CommonService.java @@ -0,0 +1,43 @@ +package com.chushang.inspection.common.service; + +import cn.hutool.core.collection.CollectionUtil; +import com.chushang.common.core.constant.SecurityConstants; +import com.chushang.common.core.exception.ResultException; +import com.chushang.common.core.web.Result; +import com.chushang.oss.entity.dto.UploadFileDTO; +import com.chushang.oss.entity.vo.FileSourceVo; +import com.chushang.oss.feign.RemoteOssService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @auther: zhao + * @date: 2024/7/2 11:25 + */ +@Slf4j +@Service +public class CommonService { + + @Resource + RemoteOssService remoteOssService; + + /** + * 上传文件 -- 公共 + */ + public FileSourceVo uploadFile(MultipartFile file, String fileType) { + // 上传模板信息 + Result> listResult = + remoteOssService.uploadFile(UploadFileDTO.builder() + .files(new MultipartFile[]{file}) + .build(), null, false, null, fileType, SecurityConstants.INNER); + if (listResult.isSuccess() && CollectionUtil.isNotEmpty(listResult.getData())){ + return listResult.getData().get(0); + } + throw new ResultException("上传失败"); + } + +} 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 deleted file mode 100644 index 2069e41..0000000 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/DefaultGeneratedInspection.java +++ /dev/null @@ -1,151 +0,0 @@ -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/GeneratedInspection.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedInspection.java deleted file mode 100644 index b63bd0c..0000000 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/GeneratedInspection.java +++ /dev/null @@ -1,61 +0,0 @@ -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/ins/TemplateService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/TemplateService.java new file mode 100644 index 0000000..762b488 --- /dev/null +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/ins/TemplateService.java @@ -0,0 +1,64 @@ +package com.chushang.inspection.ins; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.io.resource.ResourceUtil; +import com.chushang.common.core.constant.SecurityConstants; +import com.chushang.common.core.exception.utils.AssertUtil; +import com.chushang.common.core.web.Result; +import com.chushang.oss.feign.RemoteOssService; +import com.deepoove.poi.XWPFTemplate; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.InputStream; +import java.util.Map; + +/** + * 模板相关操作 + * @auther: zhao + * @date: 2024/7/1 11:50 + */ +@Slf4j +@Service +public class TemplateService { + + @Resource + RemoteOssService remoteOssService; + + public void computeWord(String fileName, String templateFid, Map data){ + XWPFTemplate template = null; + // 如果为null 时, 获取 本地 + if (null == templateFid){ + try (InputStream stream = ResourceUtil.getStream("template" + File.separator + "default.docx")) { + template = XWPFTemplate.compile(stream); + template.render(data); + FileUtil.touch(fileName); + template.writeToFile(fileName); + } catch (Exception e) { + log.error("【{}】模版替换失败", fileName, e); + } finally { + IoUtil.close(template); + } + }else { + Result result = remoteOssService.getFile(templateFid, SecurityConstants.INNER); + if (result.isSuccess() && null != result.getData()){ + try (InputStream stream = new ByteArrayInputStream(result.getData())) { + template = XWPFTemplate.compile(stream); + template.render(data); + FileUtil.touch(fileName); + template.writeToFile(fileName); + } catch (Exception e) { + log.error("【{}】模版替换失败", fileName, e); + } finally { + IoUtil.close(template); + } + }else { + AssertUtil.invalidate(true, "获取模板文件失败, 失败原因: " + result.getMsg()); + } + } + } +} 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 a8ffb9a..491c997 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 @@ -37,9 +37,9 @@ public class InsConfigController { * @param query 条件 * @return 分页信息 */ - @PostMapping("/page") + @GetMapping("/page") @RequiresPermissions("ins:config:page") - public AjaxResult findPage(@RequestBody @Validated InsConfigQuery query) { + public AjaxResult findPage(@Validated InsConfigQuery query) { return AjaxResult.success(configService.pageList(query)); } @@ -49,7 +49,7 @@ public class InsConfigController { * @param configId 字典类型id * @return 详细信息 */ - @PostMapping("/info/{configId}") + @GetMapping("/info/{configId}") @RequiresPermissions("ins:config:info") public AjaxResult get(@PathVariable Long configId) { return AjaxResult.success(configService.getById(configId)); @@ -60,7 +60,7 @@ public class InsConfigController { * * @return 详细信息 */ - @PostMapping("/alias/{alias}") + @GetMapping("/alias/{alias}") @RequiresPermissions("ins:config:info") public AjaxResult get(@PathVariable String alias) { return AjaxResult.success(configService.getByAlias(alias)); @@ -85,7 +85,7 @@ public class InsConfigController { } /** - * 添加 + * 修改 */ @SysLog(value = "巡检单配置", businessType = BusinessType.UPDATE) @PostMapping("/update") @@ -103,16 +103,4 @@ 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 cfc90c3..d469831 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 @@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; /** + * 巡检单配置详情 * @auther: zhao * @date: 2024/6/20 17:27 */ @@ -33,14 +34,14 @@ public class InsDetailController { InspectionDetailService detailService; /** - * 分页查询 + * 配置详情查询 * * @param query 条件 * @return 分页信息 */ - @PostMapping("/page") + @GetMapping("/page") @RequiresPermissions("ins:detail:page") - public AjaxResult findPage(@RequestBody @Validated InsDetailQuery query) { + public AjaxResult findPage(@Validated InsDetailQuery query) { return AjaxResult.success(detailService.findPage(query)); } @@ -49,7 +50,7 @@ public class InsDetailController { * * @return 详细信息 */ - @PostMapping("/info/{detailId}") + @GetMapping("/info/{detailId}") @RequiresPermissions("ins:details:info") public AjaxResult get(@PathVariable Long detailId) { return AjaxResult.success(detailService.getById(detailId)); diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/PollTaskController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/PollTaskController.java index 7200620..f052ca2 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 @@ -39,7 +39,7 @@ public class PollTaskController { * 查询任务列表 */ @GetMapping("/list") - @RequiresPermissions("store:task:list") +// @RequiresPermissions("store:task:list") public AjaxResult findList(TaskQuery taskQuery) { return AjaxResult.success(pollingTaskService.findList(taskQuery)); } @@ -48,7 +48,7 @@ public class PollTaskController { * 查询顶级任务列表 */ @GetMapping("/list/top") - @RequiresPermissions("store:task:top") +// @RequiresPermissions("store:task:top") public AjaxResult findTopList(){ return AjaxResult.success(pollingTaskService.findTopList(CommonParam.buildPageRequest())); } @@ -57,9 +57,9 @@ public class PollTaskController { * 查询顶级任务配置 */ @GetMapping("/config/{taskId}") - @RequiresPermissions("store:task:config") - public ConfigVO findTaskConfig(@PathVariable Long taskId) { - return pollingTaskService.findTaskConfig(taskId); +// @RequiresPermissions("store:task:config") + public AjaxResult findTaskConfig(@PathVariable Long taskId) { + return AjaxResult.success(pollingTaskService.findTaskConfig(taskId)); } /** @@ -69,9 +69,9 @@ public class PollTaskController { * @return 详情 */ @GetMapping("/info/{taskId}") - @RequiresPermissions("store:task:info") - public TaskVO getTaskById(@PathVariable Long taskId) { - return pollingTaskService.getTaskById(taskId); +// @RequiresPermissions("store:task:info") + public AjaxResult getTaskById(@PathVariable Long taskId) { + return AjaxResult.success(pollingTaskService.getTaskById(taskId)); } /** @@ -80,7 +80,7 @@ public class PollTaskController { * @param task 任务信息 */ @PostMapping("/save") - @RequiresPermissions("store:task:save") +// @RequiresPermissions("store:task:save") @SysLog( value = "任务", businessType = BusinessType.INSERT) public AjaxResult save(@RequestBody @Validated(Create.class) TaskDTO task) { Long taskId = pollingTaskService.saveTask(task); @@ -94,7 +94,7 @@ public class PollTaskController { * @param task 任务信息 */ @PostMapping("/{taskId}") - @RequiresPermissions("store:task:update") +// @RequiresPermissions("store:task:update") @SysLog(value = "任务", businessType = BusinessType.UPDATE) public AjaxResult update(@RequestBody @Validated(Update.class) TaskDTO task, @PathVariable Long taskId) @@ -108,7 +108,7 @@ public class PollTaskController { * @param taskId 删除的id */ @DeleteMapping("/del/{taskId}") - @RequiresPermissions("store:task:delete") +// @RequiresPermissions("store:task:delete") @SysLog(value = "任务", businessType = BusinessType.DELETE) public AjaxResult delete(@PathVariable Long taskId) { pollingTaskService.removeById(taskId); @@ -121,7 +121,7 @@ public class PollTaskController { * @param delete 删除的id 集合 */ @PostMapping("/del/batch") - @RequiresPermissions("store:task:delete") +// @RequiresPermissions("store:task:delete") @SysLog(value = "批量任务", businessType = BusinessType.DELETE) public AjaxResult delete(@RequestBody Delete delete) { List ids = delete.getIds(); @@ -133,7 +133,7 @@ public class PollTaskController { * 导入任务 读取 */ @PostMapping("/import/read") - @RequiresPermissions("store:task:import") +// @RequiresPermissions("store:task:import") public AjaxResult importRead(@RequestParam("file") MultipartFile file) { return AjaxResult.success(pollingTaskService.importRead(file)); } @@ -143,9 +143,11 @@ public class PollTaskController { */ @SysLog(value = "任务", businessType = BusinessType.IMPORT) @PostMapping("/import/{parentId}") - @RequiresPermissions("store:task:save") +// @RequiresPermissions("store:task:save") public AjaxResult importSave(@RequestBody List taskExcel, @PathVariable Long parentId) { pollingTaskService.importSave(taskExcel, parentId); return AjaxResult.success(); } + + // todo 下载导入模板 } diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/TemplateController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/TemplateController.java new file mode 100644 index 0000000..4b752db --- /dev/null +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/TemplateController.java @@ -0,0 +1,54 @@ +package com.chushang.inspection.project.controller; + +import com.chushang.common.core.validator.Create; +import com.chushang.common.core.web.AjaxResult; +import com.chushang.common.log.annotation.SysLog; +import com.chushang.common.log.enums.BusinessType; +import com.chushang.inspection.project.po.Template; +import com.chushang.inspection.project.service.TbTemplateService; +import com.chushang.security.annotation.RequiresPermissions; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; + +/** + * 模板相关管理 + * @auther: zhao + * @date: 2024/7/2 11:09 + */ +@RestController +@RequestMapping(value = "/template") +public class TemplateController { + + @Resource + TbTemplateService tbTemplateService; + /** + * 模板列表页面 + */ + @GetMapping(value = "/page") + @RequiresPermissions(value = "ins:template:page") + public AjaxResult pageList(Template template){ + return AjaxResult.success(tbTemplateService.pageList(template)); + } + /** + * 新增模板 + */ + @SysLog(value = "模板", businessType = BusinessType.INSERT) + @PostMapping(value = "/save") + @RequiresPermissions(value = "ins:template:save") + public AjaxResult save(@RequestBody@Validated(Create.class) Template template){ + return AjaxResult.success(tbTemplateService.saveTemplate(template)); + } + /** + * 修改模板 + */ + @SysLog(value = "模板", businessType = BusinessType.UPDATE) + @PostMapping(value = "/update") + @RequiresPermissions(value = "ins:template:update") + public AjaxResult update(@RequestBody@Validated(Create.class) Template template){ + return AjaxResult.success(tbTemplateService.updateTemplate(template)); + } + +} diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/PollingTaskMapper.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/PollingTaskMapper.java index 29a8760..3ab26a0 100644 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/PollingTaskMapper.java +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/PollingTaskMapper.java @@ -2,6 +2,7 @@ package com.chushang.inspection.project.mapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.chushang.common.core.util.StringUtils; import com.chushang.inspection.project.po.PollingTask; /** @@ -12,9 +13,11 @@ public interface PollingTaskMapper extends BaseMapper { default Integer childMaxIndex(String index, int level){ QueryWrapper taskSql = new QueryWrapper<>(); taskSql.select("max(search_index) AS search_index").lambda() - .likeLeft(PollingTask::getSearchNum,index) + .likeRight(StringUtils.isNotBlank(index), PollingTask::getSearchNum,index) .eq(PollingTask::getLevel, level); PollingTask pollingTask = selectOne(taskSql); + if (null == pollingTask) return null; + // 此处为null return pollingTask.getSearchIndex(); } } diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/TemplateMapper.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/TemplateMapper.java new file mode 100644 index 0000000..690ac32 --- /dev/null +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/mapper/TemplateMapper.java @@ -0,0 +1,12 @@ +package com.chushang.inspection.project.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.chushang.inspection.project.po.Template; +import com.chushang.inspection.terminal.po.Terminal; + +/** + * @auther: zhao + * @date: 2024/7/2 11:04 + */ +public interface TemplateMapper extends BaseMapper