TRX 1 year ago
parent
commit
16d539a196
14 changed files with 521 additions and 34 deletions
  1. 26 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectExcelTemplateModel.java
  2. 41 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectExcelTemplateParam.java
  3. 27 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectExcelTemplateQuery.java
  4. 26 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectExcelTemplateSearch.java
  5. 79 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/ProjectExcelTemplateController.java
  6. 0 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/ProjectIotInfoController.java
  7. 17 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectExcelTemplateDao.java
  8. 17 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/extend/ProjectExcelTemplateDaoExtend.java
  9. 58 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/impl/ProjectExcelTemplateDaoImpl.java
  10. 5 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/school/impl/CardInfoDaoImpl.java
  11. 44 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/projectAbout/ProjectExcelTemplate.java
  12. 40 33
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/base/SuperService.java
  13. 1 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectCommonConfigService.java
  14. 140 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectExcelTemplateService.java

+ 26 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectExcelTemplateModel.java

@@ -0,0 +1,26 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.type.PassWordDefaultType;
+import com.zhongshu.card.client.type.PassWordType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectExcelTemplateModel extends SuperModel {
+
+    @Schema(description = "类型,名称")
+    private String mark;
+
+    @Schema(description = "文件url")
+    private String url;
+
+}

+ 41 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectExcelTemplateParam.java

@@ -0,0 +1,41 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import com.zhongshu.card.client.type.PassWordDefaultType;
+import com.zhongshu.card.client.type.PassWordType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectExcelTemplateParam {
+
+    @Schema(description = "数据ID")
+    private String id;
+
+    @NotEmpty
+    @Schema(description = "项目id")
+    private String projectOid;
+
+    @NotEmpty
+    @Schema(description = "类型、名称、标识")
+    private String mark;
+
+    @NotEmpty
+    @Schema(description = "文件url")
+    private String url;
+
+    @Schema(description = "备注")
+    private String remark;
+
+}

+ 27 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectExcelTemplateQuery.java

@@ -0,0 +1,27 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import com.zhongshu.card.client.model.base.ProjectOidParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/9/25
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class ProjectExcelTemplateQuery extends ProjectOidParam {
+
+    @NotEmpty
+    @Schema(description = "类型", required = true)
+    private String mark;
+
+    @Schema(description = "没有对应的情况下,是否初始添加一条数据")
+    private Boolean isInit = Boolean.FALSE;
+}

+ 26 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/projectAbout/ProjectExcelTemplateSearch.java

@@ -0,0 +1,26 @@
+package com.zhongshu.card.client.model.projectAbout;
+
+import com.zhongshu.card.client.model.base.SuperSearch;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 模版搜索
+ *
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectExcelTemplateSearch extends SuperSearch {
+
+    @Schema(description = "类型")
+    private String mark;
+
+    @Schema(description = "文件url")
+    private String url;
+
+}

+ 79 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/ProjectExcelTemplateController.java

@@ -0,0 +1,79 @@
+package com.zhongshu.card.server.core.controller.projectAbout;
+
+import com.github.microservice.auth.security.annotations.ResourceAuth;
+import com.github.microservice.auth.security.type.AuthType;
+import com.github.microservice.net.ResultContent;
+import com.zhongshu.card.client.model.base.IDParam;
+import com.zhongshu.card.client.model.base.ProjectOidParam;
+import com.zhongshu.card.client.model.projectAbout.*;
+import com.zhongshu.card.client.model.school.CardInfoPoolModel;
+import com.zhongshu.card.client.model.school.CardInfoSearch;
+import com.zhongshu.card.server.core.service.projectAbout.ProjectExcelTemplateService;
+import com.zhongshu.card.server.core.service.projectAbout.ProjectIotInfoService;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * 项目的 excel模版 配置
+ *
+ * @author TRX
+ * @date 2024/7/26
+ */
+@RestController
+@RequestMapping("/project/projectExcelTemplate")
+@Tag(name = "项目-excel模版")
+public class ProjectExcelTemplateController {
+
+    @Autowired
+    ProjectExcelTemplateService projectExcelTemplateService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "保存信息(添加、编辑)", description = "保存信息")
+    @RequestMapping(value = "saveProjectExcelTemplate", method = {RequestMethod.POST})
+    public ResultContent saveProjectExcelTemplate(@RequestBody @Valid ProjectExcelTemplateParam param) {
+        return projectExcelTemplateService.saveProjectExcelTemplate(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "列表列表-分页查询)", description = "列表列表-分页查询")
+    @RequestMapping(value = {"page"}, method = {RequestMethod.POST})
+    public ResultContent<Page<ProjectExcelTemplateModel>> page(
+            @Parameter(hidden = true) @PageableDefault(page = 0, size = 10) Pageable pageable,
+            @Parameter(required = false) ProjectExcelTemplateSearch param) {
+        return projectExcelTemplateService.page(param, pageable);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "删除数据", description = "删除数据")
+    @RequestMapping(value = "deleteData", method = {RequestMethod.POST})
+    public ResultContent deleteData(@RequestBody @Valid IDParam param) {
+        return projectExcelTemplateService.deleteData(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到详情", description = "得到详情")
+    @RequestMapping(value = "getDetail", method = {RequestMethod.POST})
+    public ResultContent getDetail(@RequestBody @Valid IDParam param) {
+        return projectExcelTemplateService.getDetail(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "根据标记得到模版数据", description = "根据标记得到模版数据")
+    @RequestMapping(value = "getDetailByMark", method = {RequestMethod.POST})
+    public ResultContent<ProjectExcelTemplateModel> getDetailByMark(@RequestBody @Valid ProjectExcelTemplateQuery param) {
+        return projectExcelTemplateService.getDetailByMark(param);
+    }
+
+}

+ 0 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/projectAbout/ProjectIotInfoController.java

@@ -4,7 +4,6 @@ import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.model.base.ProjectOidParam;
-import com.zhongshu.card.client.model.payment.paySetting.ProjectPaySettingSearch;
 import com.zhongshu.card.client.model.projectAbout.ProjectIotInfoModel;
 import com.zhongshu.card.client.model.projectAbout.ProjectIotInfoParam;
 import com.zhongshu.card.server.core.service.projectAbout.ProjectIotInfoService;

+ 17 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/ProjectExcelTemplateDao.java

@@ -0,0 +1,17 @@
+package com.zhongshu.card.server.core.dao.projectAbout;
+
+import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
+import com.zhongshu.card.server.core.dao.projectAbout.extend.ProjectExcelTemplateDaoExtend;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectCommonConfig;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectExcelTemplate;
+
+/**
+ * 项目关联的 模版设置
+ */
+public interface ProjectExcelTemplateDao extends MongoDao<ProjectExcelTemplate>, ProjectExcelTemplateDaoExtend {
+
+    ProjectExcelTemplate findTopById(String id);
+
+    ProjectExcelTemplate findTopByProjectOidAndMark(String projectOid, String mark);
+
+}

+ 17 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/extend/ProjectExcelTemplateDaoExtend.java

@@ -0,0 +1,17 @@
+package com.zhongshu.card.server.core.dao.projectAbout.extend;
+
+import com.zhongshu.card.client.model.projectAbout.ProjectExcelTemplateSearch;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectExcelTemplate;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/7/7
+ * @Version: 1.0
+ */
+public interface ProjectExcelTemplateDaoExtend {
+
+    Page<ProjectExcelTemplate> page(Pageable pageable, ProjectExcelTemplateSearch param);
+
+}

+ 58 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/projectAbout/impl/ProjectExcelTemplateDaoImpl.java

@@ -0,0 +1,58 @@
+package com.zhongshu.card.server.core.dao.projectAbout.impl;
+
+import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
+import com.zhongshu.card.client.model.projectAbout.ProjectExcelTemplateSearch;
+import com.zhongshu.card.client.model.school.CardInfoSearch;
+import com.zhongshu.card.server.core.dao.BaseImpl;
+import com.zhongshu.card.server.core.dao.projectAbout.ProjectExcelTemplateDao;
+import com.zhongshu.card.server.core.dao.projectAbout.extend.ProjectExcelTemplateDaoExtend;
+import com.zhongshu.card.server.core.dao.school.extend.CardInfoDaoExtend;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectExcelTemplate;
+import com.zhongshu.card.server.core.domain.school.CardInfo;
+import com.zhongshu.card.server.core.util.CommonUtil;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * @Author TRX
+ * @CreateDate: 2023/4/12
+ * @Version: 1.0
+ */
+public class ProjectExcelTemplateDaoImpl extends BaseImpl implements ProjectExcelTemplateDaoExtend {
+
+    @Autowired
+    private DBHelper dbHelper;
+
+    @Override
+    public Page<ProjectExcelTemplate> page(Pageable pageable, ProjectExcelTemplateSearch param) {
+        Criteria criteria = buildCriteriaNotOid(param);
+
+        if (ObjectUtils.isNotEmpty(param.getProjectOid())) {
+            criteria.and("projectOid").is(param.getProjectOid());
+        }
+
+        if (StringUtils.isNotEmpty(param.getMark())) {
+            criteria.and("mark").is(param.getMark());
+        }
+
+        if (!CommonUtil.longIsEmpty(param.getStartTime()) && !CommonUtil.longIsEmpty(param.getEndTime())) {
+            criteria.and("createTime").gte(param.getStartTime()).and("createTime").lte(param.getEndTime());
+        }
+
+        Sort sort = buildSort(param);
+        Query query = Query.query(criteria);
+        query.with(sort);
+        return dbHelper.pages(query, pageable, ProjectExcelTemplate.class);
+    }
+
+}

+ 5 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/school/impl/CardInfoDaoImpl.java

@@ -14,6 +14,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -85,6 +86,10 @@ public class CardInfoDaoImpl extends BaseImpl implements CardInfoDaoExtend {
             criterias.add(Criteria.where("phone").is(pattern));
         }
 
+        if (!CollectionUtils.isEmpty(criterias)) {
+            criteria.andOperator(criterias.toArray(new Criteria[]{}));
+        }
+
         if (StringUtils.isNotEmpty(param.getKeyWord())) {
             Pattern pattern = Pattern.compile("^.*" + param.getKeyWord() + ".*$");
             criteria.orOperator(

+ 44 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/projectAbout/ProjectExcelTemplate.java

@@ -0,0 +1,44 @@
+package com.zhongshu.card.server.core.domain.projectAbout;
+
+import com.zhongshu.card.server.core.domain.base.SuperMain;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.mongodb.core.mapping.DBRef;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+/**
+ * 项目相关的 excel 模版
+ *
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@Builder
+@Document
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectExcelTemplate extends SuperMain {
+
+    @Schema(description = "项目信息")
+    @DBRef(lazy = true)
+    private Organization projectInfo;
+
+    @Schema(description = "项目名称")
+    private String projectName;
+
+    @Schema(description = "项目编码")
+    private String projectCode;
+
+    //----------------------------业务信息 start-----------------
+
+    @Schema(description = "类型")
+    private String mark;
+
+    @Schema(description = "文件url")
+    private String url;
+
+}

+ 40 - 33
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/base/SuperService.java

@@ -10,6 +10,7 @@ import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import jakarta.servlet.http.HttpServletRequest;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +22,7 @@ import java.util.List;
  * @author TRX
  * @date 2024/6/3
  */
+@Slf4j
 public abstract class SuperService {
 
     @Autowired
@@ -82,17 +84,20 @@ public abstract class SuperService {
                 entity.setOid(getCurrentOid());
             }
             Assert.hasText(entity.getOid(), "oid不能为空");
-
-            UserAccount account = getCurrentUserAccount();
-            if (account != null) {
-                if (StringUtils.isEmpty(entity.getCreateUserId())) {
-                    entity.setCreateUserId(account.getUserId());
-                    entity.setCreateUserName(account.getName());
-                    entity.setCreatePhone(account.getPhone());
+            try {
+                UserAccount account = getCurrentUserAccount();
+                if (account != null) {
+                    if (StringUtils.isEmpty(entity.getCreateUserId())) {
+                        entity.setCreateUserId(account.getUserId());
+                        entity.setCreateUserName(account.getName());
+                        entity.setCreatePhone(account.getPhone());
+                    }
+                    entity.setUpdateUserId(account.getUserId());
+                    entity.setUpdateUserName(account.getName());
+                    entity.setUpdatePhone(account.getPhone());
                 }
-                entity.setUpdateUserId(account.getUserId());
-                entity.setUpdateUserName(account.getName());
-                entity.setUpdatePhone(account.getPhone());
+            } catch (Exception e) {
+                log.error("initEntity {}", e.getMessage());
             }
         }
     }
@@ -104,11 +109,15 @@ public abstract class SuperService {
      */
     public void initUpdateEntity(SuperMain entity) {
         if (entity != null) {
-            UserAccount account = getCurrentUserAccount();
-            if (account != null) {
-                entity.setUpdateUserId(account.getUserId());
-                entity.setUpdateUserName(account.getName());
-                entity.setUpdatePhone(account.getPhone());
+            try {
+                UserAccount account = getCurrentUserAccount();
+                if (account != null) {
+                    entity.setUpdateUserId(account.getUserId());
+                    entity.setUpdateUserName(account.getName());
+                    entity.setUpdatePhone(account.getPhone());
+                }
+            } catch (Exception e) {
+                log.error("initUpdateEntity {}", e.getMessage());
             }
         }
     }
@@ -203,15 +212,7 @@ public abstract class SuperService {
             param.setOid(getCurrentOid());
         }
         Assert.hasText(param.getOid(), "oid不能为空");
-        List<Long> times = param.getTimes();
-        if (ObjectUtils.isNotEmpty(times) && times.size() == 2) {
-            Long startTime = times.get(0);
-            startTime = DateUtils.getDayStartTime(startTime);
-            Long endTime = times.get(1);
-            endTime = DateUtils.getDayEndTime(endTime);
-            param.setStartTime(startTime);
-            param.setEndTime(endTime);
-        }
+        initSearchParam(param);
     }
 
     public void initOidSearchParamNoCheckOid(SuperSearch param) {
@@ -219,15 +220,7 @@ public abstract class SuperService {
         if (StringUtils.isEmpty(oid)) {
             param.setOid(getCurrentOid());
         }
-        List<Long> times = param.getTimes();
-        if (ObjectUtils.isNotEmpty(times) && times.size() == 2) {
-            Long startTime = times.get(0);
-            startTime = DateUtils.getDayStartTime(startTime);
-            Long endTime = times.get(1);
-            endTime = DateUtils.getDayEndTime(endTime);
-            param.setStartTime(startTime);
-            param.setEndTime(endTime);
-        }
+        initSearchParam(param);
     }
 
     public void initSearchParam(SuperSearch param) {
@@ -242,6 +235,20 @@ public abstract class SuperService {
         }
     }
 
+    /**
+     * 检查是否有 projectOid
+     *
+     * @param param
+     */
+    public void initSearchParamCheckProjectOid(SuperSearch param) {
+        checkParamProjectOid(param);
+        initSearchParam(param);
+    }
+
+    public void checkParamProjectOid(SuperSearch param) {
+        Assert.hasText(param.getProjectOid(), "projectOid不能为空");
+    }
+
     public OperationLogsAddParam initLog(String userId) {
         return CommonUtil.initLog(request, userId);
     }

+ 1 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectCommonConfigService.java

@@ -57,6 +57,7 @@ public class ProjectCommonConfigService extends SuperService {
         entity.setProjectInfo(projectInfo);
         entity.setProjectName(projectInfo.getName());
         entity.setProjectCode(projectInfo.getCode());
+
         entity.setOid(projectOid);
         entity.setAboutOid(projectOid);
         entity.setAboutAuthType(projectInfo.getAuthType());

+ 140 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/projectAbout/ProjectExcelTemplateService.java

@@ -0,0 +1,140 @@
+package com.zhongshu.card.server.core.service.projectAbout;
+
+import com.github.microservice.components.data.base.util.PageEntityUtil;
+import com.github.microservice.net.ResultContent;
+import com.github.microservice.net.ResultMessage;
+import com.zhongshu.card.client.model.projectAbout.ProjectExcelTemplateModel;
+import com.zhongshu.card.client.model.projectAbout.ProjectExcelTemplateParam;
+import com.zhongshu.card.client.model.projectAbout.ProjectExcelTemplateQuery;
+import com.zhongshu.card.client.model.projectAbout.ProjectExcelTemplateSearch;
+import com.zhongshu.card.client.model.school.CardInfoPoolModel;
+import com.zhongshu.card.client.model.school.CardInfoPoolSearch;
+import com.zhongshu.card.server.core.dao.org.OrganizationDao;
+import com.zhongshu.card.server.core.dao.projectAbout.ProjectExcelTemplateDao;
+import com.zhongshu.card.server.core.domain.org.Organization;
+import com.zhongshu.card.server.core.domain.projectAbout.ProjectExcelTemplate;
+import com.zhongshu.card.server.core.domain.school.CardInfoPool;
+import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.util.BeanUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+
+/**
+ * 项目的 关联的物联网 ak sk 设置
+ *
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Slf4j
+@Service
+public class ProjectExcelTemplateService extends SuperService {
+
+    @Autowired
+    OrganizationDao organizationDao;
+
+    @Autowired
+    ProjectExcelTemplateDao projectExcelTemplateDao;
+
+    /**
+     * 保存信息
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent saveProjectExcelTemplate(ProjectExcelTemplateParam param) {
+        String projectOid = param.getProjectOid();
+        Organization projectInfo = organizationDao.findTopByOid(projectOid);
+        if (ObjectUtils.isEmpty(projectInfo)) {
+            return ResultContent.buildFail(String.format("项目oid不存在:%s", projectOid));
+        }
+        String mark = param.getMark();
+        ProjectExcelTemplate entity = null;
+        ProjectExcelTemplate nameTemp = projectExcelTemplateDao.findTopByProjectOidAndMark(projectOid, mark);
+        if (ObjectUtils.isNotEmpty(param.getId())) {
+            entity = projectExcelTemplateDao.findTopById(param.getId());
+            if (ObjectUtils.isEmpty(entity)) {
+                return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+            }
+            if (ObjectUtils.isNotEmpty(nameTemp) && !nameTemp.getId().equals(entity.getId())) {
+                return ResultContent.buildFail(String.format("名称已存在:%s", mark));
+            }
+            initUpdateEntity(entity);
+        } else {
+            if (ObjectUtils.isNotEmpty(nameTemp)) {
+                return ResultContent.buildFail(String.format("名称已存在:%s", mark));
+            }
+            param.setId(null);
+            entity = new ProjectExcelTemplate();
+            entity.setIsDelete(Boolean.FALSE);
+            initEntityNoOid(entity);
+        }
+        BeanUtils.copyProperties(param, entity);
+        entity.setProjectInfo(projectInfo);
+        entity.setProjectName(projectInfo.getName());
+        entity.setProjectCode(projectInfo.getCode());
+
+        entity.setOid(projectOid);
+        entity.setAboutOid(projectOid);
+        entity.setAboutAuthType(projectInfo.getAuthType());
+        projectExcelTemplateDao.save(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 分页列表
+     *
+     * @param param
+     * @param pageable
+     * @return
+     */
+    public ResultContent<Page<ProjectExcelTemplateModel>> page(ProjectExcelTemplateSearch param, Pageable pageable) {
+        initSearchParamCheckProjectOid(param);
+        Page<ProjectExcelTemplate> page = projectExcelTemplateDao.page(pageable, param);
+        return ResultContent.buildSuccess(PageEntityUtil.concurrent2PageModel(page, this::toModel));
+    }
+
+    public ResultContent deleteData(String id) {
+        ProjectExcelTemplate entity = projectExcelTemplateDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        projectExcelTemplateDao.delete(entity);
+        return ResultContent.buildSuccess();
+    }
+
+    public ResultContent getDetail(String id) {
+        ProjectExcelTemplate entity = projectExcelTemplateDao.findTopById(id);
+        if (ObjectUtils.isEmpty(entity)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        return ResultContent.buildSuccess(toModel(entity));
+    }
+
+    public ResultContent<ProjectExcelTemplateModel> getDetailByMark(ProjectExcelTemplateQuery param) {
+        ProjectExcelTemplate entity = projectExcelTemplateDao.findTopByProjectOidAndMark(param.getProjectOid(), param.getMark());
+        if (ObjectUtils.isEmpty(entity)) {
+            if (param.getIsInit() != null && param.getIsInit()) {
+                ProjectExcelTemplateParam param1 = new ProjectExcelTemplateParam();
+                param1.setProjectOid(param.getProjectOid());
+                param1.setMark(param.getMark());
+                saveProjectExcelTemplate(param1);
+            }
+            return ResultContent.buildFail(String.format("数据不存在:%s", param.getMark()));
+        }
+        return ResultContent.buildSuccess(toModel(entity));
+    }
+
+    public ProjectExcelTemplateModel toModel(ProjectExcelTemplate entity) {
+        ProjectExcelTemplateModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new ProjectExcelTemplateModel();
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
+}