package com.goldenwater.web.controller.pms; import com.goldenwater.slgc.entity.efinder.DocFolder; import com.goldenwater.slgc.service.efinder.IDocFolderService; import com.goldenwater.slgc.service.pms.IPmsUserProjectService; import com.goldenwater.common.core.controller.BaseController; import com.goldenwater.common.core.domain.AjaxResult; import com.goldenwater.common.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @Tag(name = "02.03 项目管理-新建项目", description = "新建项目相关接口") @RestController @RequestMapping("/pms/addProject") public class PmsAddProjectController extends BaseController { @Autowired private IDocFolderService docFolderService; @Autowired private IPmsUserProjectService userProjectService; /** * 新增项目文件夹,根据项目类型(zggcPrarms)创建对应子目录结构 */ @Operation(summary = "新增项目文件夹") @PostMapping("/add") public AjaxResult add(@Parameter(description = "文件夹ID") @RequestParam("folderId") String folderId, @Parameter(description = "项目名称") @RequestParam(value = "name", required = false) String name, @Parameter(description = "备注") @RequestParam(value = "note", required = false) String note, @Parameter(description = "直管工程参数") @RequestParam(value = "zggcPrarms", required = false) String zggcPrarms, @Parameter(description = "计划进度值") @RequestParam(value = "planValues", required = false) String planValues) { try { if (StringUtils.isBlank(name)) { name = "新建项目"; } // 创建根文件夹 DocFolder rootFolder = new DocFolder(); rootFolder.setPid(Long.valueOf(folderId)); rootFolder.setName(name); rootFolder.setDate(new Date()); // 根据zggcPrarms设置fdCate if (StringUtils.isNotBlank(zggcPrarms)) { Map fdCateMap = new HashMap<>(); fdCateMap.put("1", "zggc"); fdCateMap.put("2", "zdgc"); fdCateMap.put("3", "gzzd"); if (fdCateMap.containsKey(zggcPrarms)) { rootFolder.setFdCate(fdCateMap.get(zggcPrarms)); } } docFolderService.insert(rootFolder); // rootFolder.id 已由 MyBatis useGeneratedKeys 回填 // 根据 zggcPrarms 创建子文件夹 if (StringUtils.isNotBlank(zggcPrarms)) { String[] subFolderNames; switch (zggcPrarms) { case "1": // 直管工程 subFolderNames = new String[]{"工程概况", "程序管理", "质量管理", "安全管理", "验收管理", "监督检查", "多媒体资料管理"}; break; case "2": // 重点工程 subFolderNames = new String[]{"工程概况", "监督检查", "工程验收"}; break; case "3": // 规章制度 subFolderNames = new String[]{"制度概况"}; break; default: subFolderNames = new String[0]; } for (String subName : subFolderNames) { DocFolder subFolder = new DocFolder(); subFolder.setPid(rootFolder.getId()); subFolder.setName(subName); subFolder.setDate(new Date()); // 子目录继承根目录分类,保证详情页文件夹树能按 fdCate 查询到 subFolder.setFdCate(rootFolder.getFdCate()); docFolderService.insert(subFolder); } } // 处理计划进度值 if (StringUtils.isNotBlank(planValues)) { docFolderService.updatePlanValue(rootFolder.getId(), Integer.valueOf(planValues)); } return success("恭喜您,新建成功"); } catch (Exception e) { logger.error("新建项目失败", e); return error(e.getMessage()); } } /** * 获取用户项目列表 */ @Operation(summary = "获取用户项目列表") @GetMapping("/getUserProject") public AjaxResult getUserProject() { List> list = userProjectService.getUserProject(); return success(list); } }