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);
+ }
}
}