From a6caa3e89673ddf55222b2f00fc7d6d3ff98e31a Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 17 Jan 2025 21:14:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=85=E5=A4=B4bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/mybatis/DataScopeHandler.java | 5 ++- .../ConstructionPlanLedgerController.java | 2 +- .../GreenConstructionSchemeController.java | 32 ++++++------- .../mapper/GreenConstructionSchemeMapper.java | 2 +- .../plan/controller/PlanRecordController.java | 2 + .../plan/mapper/xml/PlanRecordMapper.xml | 6 +++ .../mapper/xml/PlanWorkCategoryMapper.xml | 4 ++ .../service/impl/PlanRecordServiceImpl.java | 1 + .../IGreenConstructionSchemeService.java | 22 ++++----- .../GreenConstructionSchemeServiceImpl.java | 2 +- .../entity/DangerousEngineeringRecord.java | 42 +++++++++++++++++- .../DangerousEngineeringRecordMapper.java | 2 +- .../xml/DangerousEngineeringRecordMapper.xml | 10 +++++ .../java/com/zhgd/xmgl/util/MinioUtils.java | 4 +- .../excel/work/土建工程质量模板.docx | Bin 35250 -> 35376 bytes 15 files changed, 100 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/zhgd/mybatis/DataScopeHandler.java b/src/main/java/com/zhgd/mybatis/DataScopeHandler.java index 11dc373bc..e2db65b09 100644 --- a/src/main/java/com/zhgd/mybatis/DataScopeHandler.java +++ b/src/main/java/com/zhgd/mybatis/DataScopeHandler.java @@ -135,7 +135,6 @@ public class DataScopeHandler implements DataPermissionHandler { tables.put("exam_train_record", "enterprise_id"); tables.put("exam_course_record", "enterprise_id"); tables.put("xz_worker_safe_watch_alarm", "enterprise_id"); - tables.put("dangerous_engineering_record", "responsibility_company_id"); tables.put("project_fine_record", "enterprise_id"); tables.put("car_info", "enterprise_id"); tables.put("enterprise_info", "id"); @@ -273,7 +272,9 @@ public class DataScopeHandler implements DataPermissionHandler { tables.put("pipeline_welding_record", new MapBuilder().put(DEVICE_COLUMN, "device_unit_id").put(PROJECT_COLUMN, "project_group_id").build()); tables.put("pouring_order_ledger", new MapBuilder().put(DEVICE_COLUMN, "device").put(PROJECT_COLUMN, "project_group_id").build()); tables.put("quality_problem", new MapBuilder().put(DEVICE_COLUMN, "device_id").put(PROJECT_COLUMN, "project_group_id").build()); - tables.put("xz_security_quality_inspection_record\n", new MapBuilder().put(DEVICE_COLUMN, "device_unit_id").put(PROJECT_COLUMN, "project_group_id").build()); + tables.put("xz_security_quality_inspection_record", new MapBuilder().put(DEVICE_COLUMN, "device_unit_id").put(PROJECT_COLUMN, "project_group_id").build()); + tables.put("green_construction_scheme", new MapBuilder().put(DEVICE_COLUMN, "device_unit").put(PROJECT_COLUMN, "project_group").build()); + tables.put("dangerous_engineering_record", new MapBuilder().put(DEVICE_COLUMN, "device_unit").put(PROJECT_COLUMN, "project_group").build()); return tables; } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ConstructionPlanLedgerController.java b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ConstructionPlanLedgerController.java index 10b9c92a0..fb6d9836f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ConstructionPlanLedgerController.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/ConstructionPlanLedgerController.java @@ -164,7 +164,7 @@ public class ConstructionPlanLedgerController { if (CollUtil.isEmpty(list)) { return Result.ok(); } - String foldName = "ConstructionPlanLedgerDownloadPicInfo/" + IdUtil.simpleUUID(); + String foldName = "temp/" + IdUtil.simpleUUID(); File foldFile = new File(PathUtil.getBasePath() + "/" + foldName); if (!foldFile.exists()) { foldFile.mkdirs(); diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/GreenConstructionSchemeController.java b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/GreenConstructionSchemeController.java index 6685209d1..db22128fa 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/controller/GreenConstructionSchemeController.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/controller/GreenConstructionSchemeController.java @@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.*; /** * @Title: Controller - * @Description: 绿色施工方案管理修改为危大工程清单 + * @Description: 危大工程清单 * @author: pds * @date: 2024-08-24 * @version: V1.0 @@ -33,7 +33,7 @@ import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/xmgl/greenConstructionScheme") @Slf4j -@Api(tags = "绿色施工方案管理相关Api") +@Api(tags = "危大工程清单相关Api") public class GreenConstructionSchemeController { @Autowired private IGreenConstructionSchemeService greenConstructionSchemeService; @@ -42,8 +42,8 @@ public class GreenConstructionSchemeController { * 分页列表查询 * @return */ - @OperLog(operModul = "绿色施工方案管理管理", operType = "分页查询", operDesc = "分页列表查询绿色施工方案管理信息") - @ApiOperation(value = "分页列表查询绿色施工方案管理信息", notes = "分页列表查询绿色施工方案管理信息", httpMethod="GET") + @OperLog(operModul = "危大工程清单管理", operType = "分页查询", operDesc = "分页列表查询危大工程清单信息") + @ApiOperation(value = "分页列表查询危大工程清单信息", notes = "分页列表查询危大工程清单信息", httpMethod="GET") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"), @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"), @@ -57,8 +57,8 @@ public class GreenConstructionSchemeController { * 列表查询 * @return */ - @OperLog(operModul = "绿色施工方案管理管理", operType = "列表查询", operDesc = "列表查询绿色施工方案管理信息") - @ApiOperation(value = "列表查询绿色施工方案管理信息", notes = "列表查询绿色施工方案管理信息", httpMethod="GET") + @OperLog(operModul = "危大工程清单管理", operType = "列表查询", operDesc = "列表查询危大工程清单信息") + @ApiOperation(value = "列表查询危大工程清单信息", notes = "列表查询危大工程清单信息", httpMethod="GET") @GetMapping(value = "/list") public Result> queryList(@ApiIgnore @RequestParam HashMap param) { return Result.success(greenConstructionSchemeService.queryList(param)); @@ -69,8 +69,8 @@ public class GreenConstructionSchemeController { * @param greenConstructionScheme * @return */ - @OperLog(operModul = "绿色施工方案管理管理", operType = "添加", operDesc = "添加绿色施工方案管理信息") - @ApiOperation(value = "添加绿色施工方案管理信息", notes = "添加绿色施工方案管理信息" , httpMethod="POST") + @OperLog(operModul = "危大工程清单管理", operType = "添加", operDesc = "添加危大工程清单信息") + @ApiOperation(value = "添加危大工程清单信息", notes = "添加危大工程清单信息" , httpMethod="POST") @PostMapping(value = "/add") public Result add(@RequestBody @Validate GreenConstructionScheme greenConstructionScheme) { greenConstructionSchemeService.add(greenConstructionScheme); @@ -82,8 +82,8 @@ public class GreenConstructionSchemeController { * @param greenConstructionScheme * @return */ - @OperLog(operModul = "绿色施工方案管理管理", operType = "编辑", operDesc = "编辑绿色施工方案管理信息") - @ApiOperation(value = "编辑绿色施工方案管理信息", notes = "编辑绿色施工方案管理信息" , httpMethod="POST") + @OperLog(operModul = "危大工程清单管理", operType = "编辑", operDesc = "编辑危大工程清单信息") + @ApiOperation(value = "编辑危大工程清单信息", notes = "编辑危大工程清单信息" , httpMethod="POST") @PostMapping(value = "/edit") public Result edit(@RequestBody GreenConstructionScheme greenConstructionScheme) { greenConstructionSchemeService.edit(greenConstructionScheme); @@ -94,9 +94,9 @@ public class GreenConstructionSchemeController { * 通过id删除 * @return */ - @OperLog(operModul = "绿色施工方案管理管理", operType = "删除", operDesc = "删除绿色施工方案管理信息") - @ApiOperation(value = "删除绿色施工方案管理信息", notes = "删除绿色施工方案管理信息" , httpMethod="POST") - @ApiImplicitParam(name = "id", value = "绿色施工方案管理ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}") + @OperLog(operModul = "危大工程清单管理", operType = "删除", operDesc = "删除危大工程清单信息") + @ApiOperation(value = "删除危大工程清单信息", notes = "删除危大工程清单信息" , httpMethod="POST") + @ApiImplicitParam(name = "id", value = "危大工程清单ID", paramType = "body", required = true, dataType = "String", example = "{\"id\":\"1\"}") @PostMapping(value = "/delete") public Result delete(@ApiIgnore @RequestBody HashMap map) { greenConstructionSchemeService.delete(MapUtils.getString(map, "id")); @@ -108,9 +108,9 @@ public class GreenConstructionSchemeController { * @param id * @return */ - @OperLog(operModul = "绿色施工方案管理管理", operType = "通过id查询", operDesc = "通过id查询绿色施工方案管理信息") - @ApiOperation(value = "通过id查询绿色施工方案管理信息", notes = "通过id查询绿色施工方案管理信息" , httpMethod="GET") - @ApiImplicitParam(name = "id", value = "绿色施工方案管理ID", paramType = "query", required = true, dataType = "Integer") + @OperLog(operModul = "危大工程清单管理", operType = "通过id查询", operDesc = "通过id查询危大工程清单信息") + @ApiOperation(value = "通过id查询危大工程清单信息", notes = "通过id查询危大工程清单信息" , httpMethod="GET") + @ApiImplicitParam(name = "id", value = "危大工程清单ID", paramType = "query", required = true, dataType = "Integer") @GetMapping(value = "/queryById") public Result queryById(@RequestParam(name="id",required=true) String id) { return Result.success(greenConstructionSchemeService.queryById(id)); diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/GreenConstructionSchemeMapper.java b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/GreenConstructionSchemeMapper.java index 6ee8b9f19..7bfee312c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/GreenConstructionSchemeMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/GreenConstructionSchemeMapper.java @@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; /** - * @Description: 绿色施工方案管理 + * @Description: 危大工程清单 * @author: pds * @date: 2024-08-24 * @version: V1.0 diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/plan/controller/PlanRecordController.java b/src/main/java/com/zhgd/xmgl/modules/baotou/plan/controller/PlanRecordController.java index d5889df0b..b75699341 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/plan/controller/PlanRecordController.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/plan/controller/PlanRecordController.java @@ -52,6 +52,7 @@ public class PlanRecordController { @ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"), @ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"), @ApiImplicitParam(name = "recordIds", value = "计划编制ids(多个,分割)", paramType = "query", required = false, dataType = "String"), + @ApiImplicitParam(name = "projectType", value = "1项目里程碑2装置里程碑", paramType = "query", required = false, dataType = "String"), }) @GetMapping(value = "/page") public Result> queryPageList(@ApiIgnore @RequestParam HashMap param) { @@ -175,6 +176,7 @@ public class PlanRecordController { @ApiOperation(value = "查询项目里程碑", notes = "查询项目里程碑", httpMethod = "GET") @ApiImplicitParams({ @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "query", required = true, dataType = "String"), + @ApiImplicitParam(name = "childCategoryId", value = "查询子集分类码id(包含自身)", paramType = "query", required = true, dataType = "String"), }) @GetMapping(value = "/getProjectMilestone") public Result> getProjectMilestone(@RequestParam HashMap param) { diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/plan/mapper/xml/PlanRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/baotou/plan/mapper/xml/PlanRecordMapper.xml index 84220b6eb..98b2d5cc0 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/plan/mapper/xml/PlanRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/plan/mapper/xml/PlanRecordMapper.xml @@ -8,6 +8,12 @@ ,su.real_name as charger_name from plan_record t left join system_user su on su.user_id=t.charger_id + where 1=1 + + and t.id in (select distinct pcc.record_id from plan_choose_category pcc + join plan_work_category pwc on pcc.category_id = pwc.id + where pcc.project_sn = #{param.projectSn} and pwc.project_type = #{param.projectType}) + )t ${ew.customSqlSegment} diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/plan/mapper/xml/PlanWorkCategoryMapper.xml b/src/main/java/com/zhgd/xmgl/modules/baotou/plan/mapper/xml/PlanWorkCategoryMapper.xml index f85f7243a..462483fd1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/plan/mapper/xml/PlanWorkCategoryMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/plan/mapper/xml/PlanWorkCategoryMapper.xml @@ -6,6 +6,10 @@ select * from ( select t.* from plan_work_category t + where 1=1 + + and (find_in_set(#{param.childCategoryId}, t.ancestors) or t.id=#{param.childCategoryId}) + )t ${ew.customSqlSegment} diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/plan/service/impl/PlanRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/plan/service/impl/PlanRecordServiceImpl.java index 24c4be79c..52a0264fd 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/plan/service/impl/PlanRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/plan/service/impl/PlanRecordServiceImpl.java @@ -472,6 +472,7 @@ public class PlanRecordServiceImpl extends ServiceImpl getProjectMilestone(HashMap param) { HashMap rtMap = new HashMap<>(); String projectSn = MapUtils.getString(param, "projectSn"); + Long childCategoryId = MapUtils.getLong(param, "childCategoryId"); List categories = planWorkCategoryService.queryList(param); Map> cidMap = planChooseCategoryService.queryList(param).stream().collect(Collectors.groupingBy(PlanChooseCategory::getCategoryId)); List records = planRecordService.list(new LambdaQueryWrapper().eq(PlanRecord::getProjectSn, projectSn)); diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/IGreenConstructionSchemeService.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/IGreenConstructionSchemeService.java index 21c9865f6..fd1ee22e4 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/IGreenConstructionSchemeService.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/IGreenConstructionSchemeService.java @@ -7,45 +7,45 @@ import java.util.HashMap; import java.util.List; /** - * @Description: 绿色施工方案管理 + * @Description: 危大工程清单 * @author: pds * @date: 2024-08-24 * @version: V1.0 */ public interface IGreenConstructionSchemeService extends IService { /** - * 分页列表查询绿色施工方案管理信息 + * 分页列表查询危大工程清单信息 * @param param 参数map * @return */ IPage queryPageList(HashMap param); /** - * 列表查询绿色施工方案管理信息 + * 列表查询危大工程清单信息 * @param param 参数map * @return */ List queryList(HashMap param); /** - * 添加绿色施工方案管理信息 - * @param greenConstructionScheme 绿色施工方案管理 + * 添加危大工程清单信息 + * @param greenConstructionScheme 危大工程清单 * @return */ void add(GreenConstructionScheme greenConstructionScheme); /** - * 编辑绿色施工方案管理信息 - * @param greenConstructionScheme 绿色施工方案管理 + * 编辑危大工程清单信息 + * @param greenConstructionScheme 危大工程清单 * @return */ void edit(GreenConstructionScheme greenConstructionScheme); /** - * 根据id删除绿色施工方案管理信息 - * @param id 绿色施工方案管理的id + * 根据id删除危大工程清单信息 + * @param id 危大工程清单的id * @return */ void delete(String id); /** - * 根据id查询绿色施工方案管理信息 - * @param id 绿色施工方案管理的id + * 根据id查询危大工程清单信息 + * @param id 危大工程清单的id * @return */ GreenConstructionScheme queryById(String id); diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/GreenConstructionSchemeServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/GreenConstructionSchemeServiceImpl.java index 947889e7f..b4f38d52d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/GreenConstructionSchemeServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/service/impl/GreenConstructionSchemeServiceImpl.java @@ -17,7 +17,7 @@ import com.zhgd.xmgl.util.RefUtil; import org.springframework.beans.factory.annotation.Autowired; /** - * @Description: 绿色施工方案管理 + * @Description: 危大工程清单 * @author: pds * @date: 2024-08-24 * @version: V1.0 diff --git a/src/main/java/com/zhgd/xmgl/modules/dangerous/entity/DangerousEngineeringRecord.java b/src/main/java/com/zhgd/xmgl/modules/dangerous/entity/DangerousEngineeringRecord.java index 8bda2e5ea..3c15702cb 100644 --- a/src/main/java/com/zhgd/xmgl/modules/dangerous/entity/DangerousEngineeringRecord.java +++ b/src/main/java/com/zhgd/xmgl/modules/dangerous/entity/DangerousEngineeringRecord.java @@ -141,7 +141,47 @@ public class DangerousEngineeringRecord implements Serializable { @ApiModelProperty(value = "监控点编号(多个,分割)") private String videoItemIds; - @TableField(exist = false) + @ApiModelProperty(value="装置") + private java.lang.Long deviceUnit ; + /** + * 项目组 + */ + @ApiModelProperty(value = "项目组") + private java.lang.Long projectGroup; + /** + * 监理单位 + */ + @ApiModelProperty(value = "监理单位") + private java.lang.Long supervisingUnit; + /** + * EPC承包商 + */ + @ApiModelProperty(value = "EPC承包商") + private java.lang.Long epcContractor; + /** + * 施工单位 + */ + @ApiModelProperty(value = "施工单位") + private java.lang.Long constructionUnit; + + @TableField(exist = false) + @ApiModelProperty(value = "装置名称") + private java.lang.String deviceUnitName; + @TableField(exist = false) + @ApiModelProperty(value = "项目组名称") + private java.lang.String projectGroupName; + @TableField(exist = false) + @ApiModelProperty(value = "监理单位名称") + private java.lang.String supervisingUnitName; + @TableField(exist = false) + @ApiModelProperty(value = "EPC承包商名称") + private java.lang.String epcContractorName; + @TableField(exist = false) + @ApiModelProperty(value = "施工单位名称") + private java.lang.String constructionUnitName; + + + @TableField(exist = false) @ApiModelProperty(value = "类别描述列表") private List typeDescribeList; diff --git a/src/main/java/com/zhgd/xmgl/modules/dangerous/mapper/DangerousEngineeringRecordMapper.java b/src/main/java/com/zhgd/xmgl/modules/dangerous/mapper/DangerousEngineeringRecordMapper.java index 9f8221096..0a453f00e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/dangerous/mapper/DangerousEngineeringRecordMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/dangerous/mapper/DangerousEngineeringRecordMapper.java @@ -20,7 +20,7 @@ import java.util.Map; * @version: V1.0 */ @Mapper -//@DataScope(includeTable = "dangerous_engineering_record") +@DataScope(includeTable = "dangerous_engineering_record") public interface DangerousEngineeringRecordMapper extends BaseMapper { /** * 分页列表查询现场危大工程信息 diff --git a/src/main/java/com/zhgd/xmgl/modules/dangerous/mapper/xml/DangerousEngineeringRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/dangerous/mapper/xml/DangerousEngineeringRecordMapper.xml index ca9082a4e..cdd6161d6 100644 --- a/src/main/java/com/zhgd/xmgl/modules/dangerous/mapper/xml/DangerousEngineeringRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/dangerous/mapper/xml/DangerousEngineeringRecordMapper.xml @@ -18,6 +18,11 @@ now() >= if(LENGTH(t.plan_end_time) = 10, CONCAT(DATE_FORMAT(t.plan_end_time, '%Y-%m-%d'), ' 23:59:59'), t.plan_end_time), 1, 0) as isOverdue + ,du.device_unit_name as device_unit_name + ,pg.project_group_name as project_group_name + ,ei1.enterprise_name as supervising_unit_name + ,ei2.enterprise_name as epc_contractor_name + ,ei3.enterprise_name as construction_unit_name from dangerous_engineering_record t LEFT JOIN (SELECT engineering_id, COUNT(1) hidden_danger_num from xz_security_quality_inspection_record @@ -31,6 +36,11 @@ AND `status` in (2, 3, 4) AND type = 1 GROUP BY engineering_id) tp ON t.id = tp.engineering_id + left join device_unit du on du.id = t.device_unit + left join project_group pg on pg.id=t.project_group + left join enterprise_info ei1 on ei1.id=t.supervising_unit + left join enterprise_info ei2 on ei2.id=t.epc_contractor + left join enterprise_info ei3 on ei3.id=t.construction_unit WHERE 1 = 1 and t.construction_state = #{param.constructionState} diff --git a/src/main/java/com/zhgd/xmgl/util/MinioUtils.java b/src/main/java/com/zhgd/xmgl/util/MinioUtils.java index 5ec625ecd..253014977 100644 --- a/src/main/java/com/zhgd/xmgl/util/MinioUtils.java +++ b/src/main/java/com/zhgd/xmgl/util/MinioUtils.java @@ -267,7 +267,7 @@ public class MinioUtils { } FileInfo fileInfo = fileStorageService.of(PathUtil.getBasePath() + "/" + path) .setPlatform(Cts.MINIO_1) //使用指定的存储平台 - .setPath(savePath != null ? savePath + "/" : null) + .setPath(savePath != null ? savePath + "/" : "") .upload(); String filename = fileInfo.getFilename(); if (StrUtil.isNotBlank(fileInfo.getPath())) { @@ -294,7 +294,7 @@ public class MinioUtils { } FileInfo fileInfo = fileStorageService.of(PathUtil.getBasePath() + "/" + path) .setPlatform(Cts.MINIO_1) //使用指定的存储平台 - .setPath(savePath != null ? savePath + "/" : null) + .setPath(savePath != null ? savePath + "/" : "") .setSaveFilename(fileName) .upload(); } diff --git a/src/main/resources/excel/work/土建工程质量模板.docx b/src/main/resources/excel/work/土建工程质量模板.docx index dcb84350321c7f105e82725866738edef9f6295e..36544fa034895dceeeb506b6e51e65baa9cdb283 100644 GIT binary patch delta 9620 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 bG$uk276KiP;0KgZKtDv%A)o~R$Ls$9L9YYO