diff --git a/core/core-backend/src/main/java/io/gisbi/application/baseinfo/controller/ApplicationController.java b/core/core-backend/src/main/java/io/gisbi/application/baseinfo/controller/ApplicationController.java index 634a0d7..c44422e 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/baseinfo/controller/ApplicationController.java +++ b/core/core-backend/src/main/java/io/gisbi/application/baseinfo/controller/ApplicationController.java @@ -8,6 +8,8 @@ import io.gisbi.config.ResponseResult; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.*; +import java.time.LocalDateTime; + /** *

* 应用系统 前端控制器 @@ -41,7 +43,7 @@ public class ApplicationController { */ @PostMapping("/save") public ResponseResult save(@RequestBody Application application) { - return ResponseResult.successData(applicationService.createApplication(application)); + return ResponseResult.successData(applicationService.createApplication(application)); } /** diff --git a/core/core-backend/src/main/java/io/gisbi/application/baseinfo/domain/Application.java b/core/core-backend/src/main/java/io/gisbi/application/baseinfo/domain/Application.java index 5e46986..1d48f30 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/baseinfo/domain/Application.java +++ b/core/core-backend/src/main/java/io/gisbi/application/baseinfo/domain/Application.java @@ -49,7 +49,7 @@ public class Application implements Serializable { /** * 创建日期 */ - private Long createdate; + private LocalDateTime createdate; /** * 应用描述 diff --git a/core/core-backend/src/main/java/io/gisbi/application/baseinfo/mapper/ApplicationMapper.java b/core/core-backend/src/main/java/io/gisbi/application/baseinfo/mapper/ApplicationMapper.java index e55e2d6..351d548 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/baseinfo/mapper/ApplicationMapper.java +++ b/core/core-backend/src/main/java/io/gisbi/application/baseinfo/mapper/ApplicationMapper.java @@ -1,8 +1,11 @@ package io.gisbi.application.baseinfo.mapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.gisbi.application.baseinfo.domain.Application; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -14,5 +17,6 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ApplicationMapper extends BaseMapper { - + @Select("SELECT MAX(CAST(code AS UNSIGNED)) FROM app_application") + Integer getMaxCode(); } diff --git a/core/core-backend/src/main/java/io/gisbi/application/baseinfo/service/impl/ApplicationServiceImpl.java b/core/core-backend/src/main/java/io/gisbi/application/baseinfo/service/impl/ApplicationServiceImpl.java index 5d0f9e2..08134bf 100644 --- a/core/core-backend/src/main/java/io/gisbi/application/baseinfo/service/impl/ApplicationServiceImpl.java +++ b/core/core-backend/src/main/java/io/gisbi/application/baseinfo/service/impl/ApplicationServiceImpl.java @@ -1,5 +1,7 @@ package io.gisbi.application.baseinfo.service.impl; +import com.baomidou.mybatisplus.core.assist.ISqlRunner; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.gisbi.application.baseinfo.domain.Application; import io.gisbi.application.baseinfo.mapper.ApplicationMapper; import io.gisbi.application.baseinfo.service.IApplicationService; @@ -9,6 +11,10 @@ import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + /** *

* 应用系统 服务实现类 @@ -21,11 +27,51 @@ import org.springframework.transaction.annotation.Transactional; public class ApplicationServiceImpl extends ServiceImpl implements IApplicationService { @Resource private IModuleService moduleService; + + @Resource + private ApplicationMapper applicationMapper; + @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public boolean createApplication(Application application) { - this.save(application); - moduleService.initAppModules(application.getId()); - return true; + // 参数校验 + if (application == null) { + throw new IllegalArgumentException("应用信息不能为空"); + } + if (application.getName() == null || application.getName().trim().isEmpty()) { + throw new IllegalArgumentException("应用名称不能为空"); + } + + // 检查应用名称是否已存在 + long count = this.count(new QueryWrapper().eq("name", application.getName())); + if (count > 0) { + throw new IllegalArgumentException("应用名称已存在"); + } + + // 生成自增编号逻辑 + try { + Integer maxCode = applicationMapper.getMaxCode(); + maxCode = (maxCode != null) ? maxCode : 0; + String formattedCode = String.format("%06d", maxCode + 1); + application.setCode(formattedCode); + } catch (Exception e) { + throw new RuntimeException("生成应用编号失败", e); + } + + // 设置基础字段 + LocalDateTime now = LocalDateTime.now(); + application.setType("01"); // 数据分析类项目 + application.setStatus("01"); // 初始创建 + application.setCreatedate(now); + application.setLastmodifydate(now); + + // 保存应用并初始化模块 + try { + this.save(application); + moduleService.initAppModules(application.getId()); + return true; + } catch (Exception e) { + throw new RuntimeException("创建应用失败", e); + } } }