diff --git a/pom.xml b/pom.xml
index 810ba83a..53852ee4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,12 +28,12 @@
1.4.6
1.2.16
3.5.2
- 2.11.0
+ 2.13.0
2.3
2.0.23
0.9.1
8.2.2
- 4.1.2
+ 5.3.0
2.5.1
4.0.6.B
4.0.6.B
@@ -223,6 +223,12 @@
${yanzhu.version}
+
+ net.sf.mpxj
+ mpxj
+ 13.0.2
+
+
diff --git a/yanzhu-auth/src/main/resources/bootstrap.yml b/yanzhu-auth/src/main/resources/bootstrap.yml
index b49a61d4..d54c82d2 100644
--- a/yanzhu-auth/src/main/resources/bootstrap.yml
+++ b/yanzhu-auth/src/main/resources/bootstrap.yml
@@ -16,7 +16,7 @@ spring:
# 服务注册地址
server-addr: @discovery.server-addr@
# 服务分组
- group: JiangYuQi
+ group: lijun
config:
# 配置中心地址
server-addr: @discovery.server-addr@
diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlan.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlan.java
new file mode 100644
index 00000000..00b7c57d
--- /dev/null
+++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlan.java
@@ -0,0 +1,348 @@
+package com.yanzhu.manage.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.yanzhu.common.core.annotation.Excel;
+import com.yanzhu.common.core.web.domain.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 计划管理对象 pro_plan
+ *
+ * @author yanzhu
+ * @date 2024-11-03
+ */
+public class ProPlan extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long id;
+
+ /** 公司ID */
+ @Excel(name = "公司ID")
+ private Long comid;
+
+ /** 项目ID */
+ @Excel(name = "项目ID")
+ private Long projectId;
+
+ /** 任务ID */
+ @Excel(name = "任务ID")
+ private Long taskId;
+
+ /** 任务唯一ID */
+ @Excel(name = "任务唯一ID")
+ private String taskUniqueId;
+
+ /** 父任务ID */
+ @Excel(name = "父任务ID")
+ private Long parentId;
+
+ /** 任务类型(FS,SS,FF,SF) */
+ @Excel(name = "任务类型", readConverterExp = "F=S,SS,FF,SF")
+ private String taskType;
+
+ /** 任务级别 */
+ @Excel(name = "任务级别")
+ private Long taskOutlineLevel;
+
+ /** 任务名称 */
+ @Excel(name = "任务名称")
+ private String taskName;
+
+ /** 任务工期 */
+ @Excel(name = "任务工期")
+ private Double taskDuation;
+
+ /** 任务开始时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "任务开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date startDate;
+
+ /** 任务结束时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "任务结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date finishDate;
+
+ /** 任务流 */
+ @Excel(name = "任务流")
+ private String predecessors;
+
+ /** 计划开始时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date planStartDate;
+
+ /** 计划结束时间 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date planFinishDate;
+
+ /** BIM ID */
+ @Excel(name = "BIM ID")
+ private String bimId;
+
+ /** 负责人 */
+ @Excel(name = "负责人")
+ private String operator;
+
+ /** 负责人ID */
+ @Excel(name = "负责人ID")
+ private Long operatorId;
+
+ /** 班组ID */
+ @Excel(name = "班组ID")
+ private Long groupId;
+
+ /** 班组名称 */
+ @Excel(name = "班组名称")
+ private String groupName;
+
+ private String compName;
+
+ public String getCompName() {
+ return compName;
+ }
+
+ public void setCompName(String compName) {
+ this.compName = compName;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ private String projectName;
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Long isDel;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+ public void setComid(Long comid)
+ {
+ this.comid = comid;
+ }
+
+ public Long getComid()
+ {
+ return comid;
+ }
+ public void setProjectId(Long projectId)
+ {
+ this.projectId = projectId;
+ }
+
+ public Long getProjectId()
+ {
+ return projectId;
+ }
+ public void setTaskId(Long taskId)
+ {
+ this.taskId = taskId;
+ }
+
+ public Long getTaskId()
+ {
+ return taskId;
+ }
+ public void setTaskUniqueId(String taskUniqueId)
+ {
+ this.taskUniqueId = taskUniqueId;
+ }
+
+ public String getTaskUniqueId()
+ {
+ return taskUniqueId;
+ }
+ public void setParentId(Long parentId)
+ {
+ this.parentId = parentId;
+ }
+
+ public Long getParentId()
+ {
+ return parentId;
+ }
+ public void setTaskType(String taskType)
+ {
+ this.taskType = taskType;
+ }
+
+ public String getTaskType()
+ {
+ return taskType;
+ }
+ public void setTaskOutlineLevel(Long taskOutlineLevel)
+ {
+ this.taskOutlineLevel = taskOutlineLevel;
+ }
+
+ public Long getTaskOutlineLevel()
+ {
+ return taskOutlineLevel;
+ }
+ public void setTaskName(String taskName)
+ {
+ this.taskName = taskName;
+ }
+
+ public String getTaskName()
+ {
+ return taskName;
+ }
+ public void setTaskDuation(Double taskDuation)
+ {
+ this.taskDuation = taskDuation;
+ }
+
+ public Double getTaskDuation()
+ {
+ return taskDuation;
+ }
+ public void setStartDate(Date startDate)
+ {
+ this.startDate = startDate;
+ }
+
+ public Date getStartDate()
+ {
+ return startDate;
+ }
+ public void setFinishDate(Date finishDate)
+ {
+ this.finishDate = finishDate;
+ }
+
+ public Date getFinishDate()
+ {
+ return finishDate;
+ }
+ public void setPredecessors(String predecessors)
+ {
+ this.predecessors = predecessors;
+ }
+
+ public String getPredecessors()
+ {
+ return predecessors;
+ }
+ public void setPlanStartDate(Date planStartDate)
+ {
+ this.planStartDate = planStartDate;
+ }
+
+ public Date getPlanStartDate()
+ {
+ return planStartDate;
+ }
+ public void setPlanFinishDate(Date planFinishDate)
+ {
+ this.planFinishDate = planFinishDate;
+ }
+
+ public Date getPlanFinishDate()
+ {
+ return planFinishDate;
+ }
+ public void setBimId(String bimId)
+ {
+ this.bimId = bimId;
+ }
+
+ public String getBimId()
+ {
+ return bimId;
+ }
+ public void setOperator(String operator)
+ {
+ this.operator = operator;
+ }
+
+ public String getOperator()
+ {
+ return operator;
+ }
+ public void setOperatorId(Long operatorId)
+ {
+ this.operatorId = operatorId;
+ }
+
+ public Long getOperatorId()
+ {
+ return operatorId;
+ }
+ public void setGroupId(Long groupId)
+ {
+ this.groupId = groupId;
+ }
+
+ public Long getGroupId()
+ {
+ return groupId;
+ }
+ public void setGroupName(String groupName)
+ {
+ this.groupName = groupName;
+ }
+
+ public String getGroupName()
+ {
+ return groupName;
+ }
+ public void setIsDel(Long isDel)
+ {
+ this.isDel = isDel;
+ }
+
+ public Long getIsDel()
+ {
+ return isDel;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("comid", getComid())
+ .append("projectId", getProjectId())
+ .append("taskId", getTaskId())
+ .append("taskUniqueId", getTaskUniqueId())
+ .append("parentId", getParentId())
+ .append("taskType", getTaskType())
+ .append("taskOutlineLevel", getTaskOutlineLevel())
+ .append("taskName", getTaskName())
+ .append("taskDuation", getTaskDuation())
+ .append("startDate", getStartDate())
+ .append("finishDate", getFinishDate())
+ .append("predecessors", getPredecessors())
+ .append("planStartDate", getPlanStartDate())
+ .append("planFinishDate", getPlanFinishDate())
+ .append("bimId", getBimId())
+ .append("operator", getOperator())
+ .append("operatorId", getOperatorId())
+ .append("groupId", getGroupId())
+ .append("groupName", getGroupName())
+ .append("isDel", getIsDel())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .append("remark", getRemark())
+ .toString();
+ }
+}
diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanMapper.java
new file mode 100644
index 00000000..501b9600
--- /dev/null
+++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanMapper.java
@@ -0,0 +1,61 @@
+package com.yanzhu.manage.mapper;
+
+import java.util.List;
+import com.yanzhu.manage.domain.ProPlan;
+
+/**
+ * 计划管理Mapper接口
+ *
+ * @author yanzhu
+ * @date 2024-11-03
+ */
+public interface ProPlanMapper
+{
+ /**
+ * 查询计划管理
+ *
+ * @param id 计划管理主键
+ * @return 计划管理
+ */
+ public ProPlan selectProPlanById(Long id);
+
+ /**
+ * 查询计划管理列表
+ *
+ * @param proPlan 计划管理
+ * @return 计划管理集合
+ */
+ public List selectProPlanList(ProPlan proPlan);
+
+ /**
+ * 新增计划管理
+ *
+ * @param proPlan 计划管理
+ * @return 结果
+ */
+ public int insertProPlan(ProPlan proPlan);
+
+ /**
+ * 修改计划管理
+ *
+ * @param proPlan 计划管理
+ * @return 结果
+ */
+ public int updateProPlan(ProPlan proPlan);
+
+ /**
+ * 删除计划管理
+ *
+ * @param id 计划管理主键
+ * @return 结果
+ */
+ public int deleteProPlanById(Long id);
+
+ /**
+ * 批量删除计划管理
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteProPlanByIds(Long[] ids);
+}
diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanMapper.xml
new file mode 100644
index 00000000..38610231
--- /dev/null
+++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanMapper.xml
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select pp.id, pp.comid, pp.project_id, pp.task_id, pp.task_unique_id, pp.parent_id, pp.task_type,
+ pp.task_outline_level, pp.task_name, pp.task_duation, pp.start_date, pp.finish_date,
+ pp.predecessors, pp.plan_start_date, pp.plan_finish_date, pp.bim_id, pp.operator, pp.operator_id,
+ pp.group_id, pp.group_name, pp.is_del, pp.create_by, pp.create_time, pp.update_by, pp.update_time, pp.remark,
+ dp.`dept_name` comp_name,pi.`project_name`
+ from pro_plan pp
+ LEFT JOIN sys_dept dp ON pp.`comid`=dp.`dept_id`
+ LEFT JOIN pro_project_info pi ON pp.`project_id`=pi.`id`
+
+
+
+
+
+
+
+ insert into pro_plan
+
+ comid,
+ project_id,
+ task_id,
+ task_unique_id,
+ parent_id,
+ task_type,
+ task_outline_level,
+ task_name,
+ task_duation,
+ start_date,
+ finish_date,
+ predecessors,
+ plan_start_date,
+ plan_finish_date,
+ bim_id,
+ operator,
+ operator_id,
+ group_id,
+ group_name,
+ is_del,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+ remark,
+
+
+ #{comid},
+ #{projectId},
+ #{taskId},
+ #{taskUniqueId},
+ #{parentId},
+ #{taskType},
+ #{taskOutlineLevel},
+ #{taskName},
+ #{taskDuation},
+ #{startDate},
+ #{finishDate},
+ #{predecessors},
+ #{planStartDate},
+ #{planFinishDate},
+ #{bimId},
+ #{operator},
+ #{operatorId},
+ #{groupId},
+ #{groupName},
+ #{isDel},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+ #{remark},
+
+
+
+
+ update pro_plan
+
+ comid = #{comid},
+ project_id = #{projectId},
+ task_id = #{taskId},
+ task_unique_id = #{taskUniqueId},
+ parent_id = #{parentId},
+ task_type = #{taskType},
+ task_outline_level = #{taskOutlineLevel},
+ task_name = #{taskName},
+ task_duation = #{taskDuation},
+ start_date = #{startDate},
+ finish_date = #{finishDate},
+ predecessors = #{predecessors},
+ plan_start_date = #{planStartDate},
+ plan_finish_date = #{planFinishDate},
+ bim_id = #{bimId},
+ operator = #{operator},
+ operator_id = #{operatorId},
+ group_id = #{groupId},
+ group_name = #{groupName},
+ is_del = #{isDel},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+ remark = #{remark},
+
+ where id = #{id}
+
+
+
+ delete from pro_plan where id = #{id}
+
+
+
+ delete from pro_plan where id in
+
+ #{id}
+
+
+
\ No newline at end of file
diff --git a/yanzhu-gateway/src/main/resources/bootstrap.yml b/yanzhu-gateway/src/main/resources/bootstrap.yml
index bc5400f4..884c5efc 100644
--- a/yanzhu-gateway/src/main/resources/bootstrap.yml
+++ b/yanzhu-gateway/src/main/resources/bootstrap.yml
@@ -16,7 +16,7 @@ spring:
# 服务注册地址
server-addr: @discovery.server-addr@
# 服务分组
- group: JiangYuQi
+ group: lijun
config:
# 配置中心地址
server-addr: @discovery.server-addr@
diff --git a/yanzhu-modules/yanzhu-file/src/main/resources/bootstrap.yml b/yanzhu-modules/yanzhu-file/src/main/resources/bootstrap.yml
index d9d396b4..284fda00 100644
--- a/yanzhu-modules/yanzhu-file/src/main/resources/bootstrap.yml
+++ b/yanzhu-modules/yanzhu-file/src/main/resources/bootstrap.yml
@@ -16,7 +16,7 @@ spring:
# 服务注册地址
server-addr: @discovery.server-addr@
# 服务分组
- group: JiangYuQi
+ group: lijun
config:
# 配置中心地址
server-addr: @discovery.server-addr@
diff --git a/yanzhu-modules/yanzhu-gen/src/main/resources/bootstrap.yml b/yanzhu-modules/yanzhu-gen/src/main/resources/bootstrap.yml
index 568de19f..15150440 100644
--- a/yanzhu-modules/yanzhu-gen/src/main/resources/bootstrap.yml
+++ b/yanzhu-modules/yanzhu-gen/src/main/resources/bootstrap.yml
@@ -16,7 +16,7 @@ spring:
# 服务注册地址
server-addr: @discovery.server-addr@
# 服务分组
- group: JiangYuQi
+ group: lijun
config:
# 配置中心地址
server-addr: @discovery.server-addr@
diff --git a/yanzhu-modules/yanzhu-manage/libs/aspose-tasks-24.10-jdk17.jar b/yanzhu-modules/yanzhu-manage/libs/aspose-tasks-24.10-jdk17.jar
new file mode 100644
index 00000000..fbeb5cbc
Binary files /dev/null and b/yanzhu-modules/yanzhu-manage/libs/aspose-tasks-24.10-jdk17.jar differ
diff --git a/yanzhu-modules/yanzhu-manage/pom.xml b/yanzhu-modules/yanzhu-manage/pom.xml
index 18fab7dc..7ed35a36 100644
--- a/yanzhu-modules/yanzhu-manage/pom.xml
+++ b/yanzhu-modules/yanzhu-manage/pom.xml
@@ -91,6 +91,14 @@
compile
+
+ com.aspose
+ aspose-tasks
+ 24.10
+ system
+ ${pom.basedir}\libs\aspose-tasks-24.10-jdk17.jar
+
+
@@ -99,6 +107,9 @@
org.springframework.boot
spring-boot-maven-plugin
+
+ true
+
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanController.java
new file mode 100644
index 00000000..45832e94
--- /dev/null
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanController.java
@@ -0,0 +1,183 @@
+package com.yanzhu.manage.controller;
+
+import java.io.File;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.io.IOException;
+import java.util.UUID;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson2.util.DateUtils;
+import com.aspose.tasks.Project;
+import com.aspose.tasks.TableCollection;
+import com.aspose.tasks.Task;
+import com.aspose.tasks.TaskCollection;
+import com.yanzhu.common.core.utils.poi.ExcelUtil;
+import com.yanzhu.common.core.web.controller.BaseController;
+import com.yanzhu.common.core.web.domain.AjaxResult;
+import com.yanzhu.common.core.web.page.TableDataInfo;
+import com.yanzhu.common.log.annotation.Log;
+import com.yanzhu.common.log.enums.BusinessType;
+import com.yanzhu.common.security.annotation.RequiresPermissions;
+import com.yanzhu.manage.domain.ProPlan;
+import com.yanzhu.manage.service.IProPlanService;
+import lombok.SneakyThrows;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+
+/**
+ * 计划管理Controller
+ *
+ * @author yanzhu
+ * @date 2024-11-03
+ */
+@RestController
+@RequestMapping("/plan")
+public class ProPlanController extends BaseController
+{
+ @Autowired
+ private IProPlanService proPlanService;
+
+ /**
+ * 查询计划管理列表
+ */
+ @RequiresPermissions("manage:plan:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ProPlan proPlan)
+ {
+ startPage();
+ List list = proPlanService.selectProPlanList(proPlan);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出计划管理列表
+ */
+ @RequiresPermissions("manage:plan:export")
+ @Log(title = "计划管理", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, ProPlan proPlan)
+ {
+ List list = proPlanService.selectProPlanList(proPlan);
+ ExcelUtil util = new ExcelUtil(ProPlan.class);
+ util.exportExcel(response, list, "计划管理数据");
+ }
+
+ @RequiresPermissions("manage:plan:import")
+ @Log(title = "计划管理", businessType = BusinessType.IMPORT)
+ @PostMapping("/importData")
+ public AjaxResult importData(MultipartFile file, Long compId,Long projectId) throws Exception {
+ try {
+ Project prj=new Project(file.getInputStream());
+ List proPlans=new ArrayList<>();
+ tasksToPlans(prj.getRootTask().getChildren(),proPlans);
+ for(ProPlan proPlan:proPlans){
+ proPlan.setComid(compId);
+ proPlan.setProjectId(projectId);
+ }
+ proPlanService.addTasks(proPlans);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return AjaxResult.success();
+ }
+
+ private void tasksToPlans(TaskCollection children, List proPlans) {
+ for(Task task :children){
+ ProPlan proPlan=taskToPlan(task);
+ proPlans.add(proPlan);
+ tasksToPlans(task.getChildren(),proPlans);
+ }
+ }
+
+ private static ProPlan taskToPlan(Task task) {
+ ProPlan plan=new ProPlan();
+ plan.setTaskId(task.getId()*1l);
+ plan.setTaskName(task.getName());
+ plan.setTaskOutlineLevel(task.getOutlineLevel()*1l);
+ plan.setTaskUniqueId(task.getGuid());
+ plan.setParentId(task.getParentTask().getId()*1l);
+ plan.setTaskDuation(task.getDuration().toDouble());
+ plan.setStartDate(task.getStart());
+ plan.setFinishDate(task.getFinish());
+ TaskCollection task_predecessors = task.getPredecessors();
+ //4. 获取前置任务(任务流)
+ StringBuilder beforeTaskId = new StringBuilder();
+ StringBuilder beforeTaskType = new StringBuilder();
+ if(task_predecessors != null){
+ if(task_predecessors.size() > 0){
+ for(Task relation : task_predecessors){
+ Integer targetTaskId = relation.getId();
+ if(beforeTaskId.length() == 0){
+ beforeTaskId.append(targetTaskId);
+ beforeTaskType.append(relation.getType());
+ }else{
+ beforeTaskId.append("," + targetTaskId);
+ beforeTaskType.append("," + relation.getType());
+ }
+ }
+ }
+ }
+ String task_predecessors_str = beforeTaskId.toString();
+ String task_predecessors_str_type = beforeTaskType.toString();
+ plan.setPredecessors(task_predecessors_str);
+ plan.setTaskType(task_predecessors_str_type);
+ plan.setPlanStartDate(task.getActualStart());
+ plan.setPlanFinishDate(task.getActualFinish());
+ return plan;
+ }
+
+ /**
+ * 获取计划管理详细信息
+ */
+ @RequiresPermissions("manage:plan:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(proPlanService.selectProPlanById(id));
+ }
+
+ /**
+ * 新增计划管理
+ */
+ @RequiresPermissions("manage:plan:add")
+ @Log(title = "计划管理", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody ProPlan proPlan)
+ {
+ return toAjax(proPlanService.insertProPlan(proPlan));
+ }
+
+ /**
+ * 修改计划管理
+ */
+ @RequiresPermissions("manage:plan:edit")
+ @Log(title = "计划管理", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody ProPlan proPlan)
+ {
+ return toAjax(proPlanService.updateProPlan(proPlan));
+ }
+
+ /**
+ * 删除计划管理
+ */
+ @RequiresPermissions("manage:plan:remove")
+ @Log(title = "计划管理", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(proPlanService.deleteProPlanByIds(ids));
+ }
+}
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanService.java
new file mode 100644
index 00000000..47cf5f3d
--- /dev/null
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanService.java
@@ -0,0 +1,68 @@
+package com.yanzhu.manage.service;
+
+import java.util.List;
+import com.yanzhu.manage.domain.ProPlan;
+
+/**
+ * 计划管理Service接口
+ *
+ * @author yanzhu
+ * @date 2024-11-03
+ */
+public interface IProPlanService
+{
+ /**
+ * 查询计划管理
+ *
+ * @param id 计划管理主键
+ * @return 计划管理
+ */
+ public ProPlan selectProPlanById(Long id);
+ public ProPlan selectProPlanByUniqueId(String UniqueId);
+ /**
+ * 查询计划管理列表
+ *
+ * @param proPlan 计划管理
+ * @return 计划管理集合
+ */
+ public List selectProPlanList(ProPlan proPlan);
+
+ /**
+ * 新增计划管理
+ *
+ * @param proPlan 计划管理
+ * @return 结果
+ */
+ public int insertProPlan(ProPlan proPlan);
+
+ /**
+ * 修改计划管理
+ *
+ * @param proPlan 计划管理
+ * @return 结果
+ */
+ public int updateProPlan(ProPlan proPlan);
+
+ /**
+ * 批量删除计划管理
+ *
+ * @param ids 需要删除的计划管理主键集合
+ * @return 结果
+ */
+ public int deleteProPlanByIds(Long[] ids);
+
+ /**
+ * 删除计划管理信息
+ *
+ * @param id 计划管理主键
+ * @return 结果
+ */
+ public int deleteProPlanById(Long id);
+
+ /**
+ * 批量增加
+ * @param proPlans
+ */
+ public void addTasks(List proPlans);
+
+}
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanServiceImpl.java
new file mode 100644
index 00000000..3cc9f461
--- /dev/null
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanServiceImpl.java
@@ -0,0 +1,162 @@
+package com.yanzhu.manage.service.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.yanzhu.common.core.context.SecurityContextHolder;
+import com.yanzhu.common.core.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.yanzhu.manage.mapper.ProPlanMapper;
+import com.yanzhu.manage.domain.ProPlan;
+import com.yanzhu.manage.service.IProPlanService;
+
+/**
+ * 计划管理Service业务层处理
+ *
+ * @author yanzhu
+ * @date 2024-11-03
+ */
+@Service
+public class ProPlanServiceImpl implements IProPlanService
+{
+ @Autowired
+ private ProPlanMapper proPlanMapper;
+
+ /**
+ * 查询计划管理
+ *
+ * @param id 计划管理主键
+ * @return 计划管理
+ */
+ @Override
+ public ProPlan selectProPlanById(Long id)
+ {
+ return proPlanMapper.selectProPlanById(id);
+ }
+
+ @Override
+ public ProPlan selectProPlanByUniqueId(String uniqueId) {
+ ProPlan where=new ProPlan();
+ where.setTaskUniqueId(uniqueId);
+ List list=selectProPlanList(where);
+ return list.size()>0?list.get(0):null;
+ }
+
+ /**
+ * 查询计划管理列表
+ *
+ * @param proPlan 计划管理
+ * @return 计划管理
+ */
+ @Override
+ public List selectProPlanList(ProPlan proPlan)
+ {
+ return proPlanMapper.selectProPlanList(proPlan);
+ }
+
+ /**
+ * 新增计划管理
+ *
+ * @param proPlan 计划管理
+ * @return 结果
+ */
+ @Override
+ public int insertProPlan(ProPlan proPlan)
+ {
+ proPlan.setCreateBy(SecurityContextHolder.getUserName());
+ proPlan.setCreateTime(DateUtils.getNowDate());
+ return proPlanMapper.insertProPlan(proPlan);
+ }
+
+ /**
+ * 修改计划管理
+ *
+ * @param proPlan 计划管理
+ * @return 结果
+ */
+ @Override
+ public int updateProPlan(ProPlan proPlan)
+ {
+ proPlan.setUpdateBy(SecurityContextHolder.getUserName());
+ proPlan.setUpdateTime(DateUtils.getNowDate());
+ return proPlanMapper.updateProPlan(proPlan);
+ }
+
+ /**
+ * 批量删除计划管理
+ *
+ * @param ids 需要删除的计划管理主键
+ * @return 结果
+ */
+ @Override
+ public int deleteProPlanByIds(Long[] ids)
+ {
+ return proPlanMapper.deleteProPlanByIds(ids);
+ }
+
+ /**
+ * 删除计划管理信息
+ *
+ * @param id 计划管理主键
+ * @return 结果
+ */
+ @Override
+ public int deleteProPlanById(Long id)
+ {
+ return proPlanMapper.deleteProPlanById(id);
+ }
+
+ @Override
+ public void addTasks(List proPlans) {
+ if(proPlans.size()==0){
+ return;
+ }
+ //获取原项目数据
+ ProPlan where=new ProPlan();
+ where.setProjectId(proPlans.get(0).getProjectId());
+ where.setComid(proPlans.get(0).getComid());
+ List oldList=selectProPlanList(where);
+ //保存增加的UniqueId
+ List addId=new ArrayList();
+ for (ProPlan proPlan : proPlans) {
+ //增加UniqueId
+ addId.add(proPlan.getTaskUniqueId());
+ //获取原数据
+ ProPlan old=findInList(proPlan.getTaskUniqueId(),oldList);
+ if(old!=null){
+ //有原数据进行修改
+ old.setParentId(proPlan.getParentId());
+ old.setTaskName(proPlan.getTaskName());
+ old.setTaskId(proPlan.getTaskId());
+ old.setTaskType(proPlan.getTaskType());
+ old.setTaskOutlineLevel(proPlan.getTaskOutlineLevel());
+ old.setTaskDuation(proPlan.getTaskDuation());
+ old.setPredecessors(proPlan.getPredecessors());
+ old.setStartDate(proPlan.getStartDate());
+ old.setFinishDate(proPlan.getFinishDate());
+ old.setPlanStartDate(proPlan.getPlanStartDate());
+ old.setPlanFinishDate(proPlan.getPlanFinishDate());
+ updateProPlan(old);
+ }else{
+ //没有原数据进行插入
+ insertProPlan(proPlan);
+ }
+ }
+ //删除无用的数据
+ for(ProPlan proPlan:oldList){
+ if(!addId.contains(proPlan.getTaskUniqueId())){
+ deleteProPlanById(proPlan.getId());
+ }
+ }
+ }
+
+ private ProPlan findInList(String taskUniqueId, List oldList) {
+ for (ProPlan proPlan : oldList) {
+ if(taskUniqueId.equals(proPlan.getTaskUniqueId())){
+ return proPlan;
+ }
+ }
+ return null;
+ }
+}
diff --git a/yanzhu-modules/yanzhu-manage/src/main/resources/bootstrap.yml b/yanzhu-modules/yanzhu-manage/src/main/resources/bootstrap.yml
index e096f77d..9b1955cf 100644
--- a/yanzhu-modules/yanzhu-manage/src/main/resources/bootstrap.yml
+++ b/yanzhu-modules/yanzhu-manage/src/main/resources/bootstrap.yml
@@ -16,7 +16,7 @@ spring:
# 服务注册地址
server-addr: @discovery.server-addr@
# 服务分组
- group: JiangYuQi
+ group: lijun
config:
# 配置中心地址
server-addr: @discovery.server-addr@
diff --git a/yanzhu-modules/yanzhu-system/src/main/resources/bootstrap.yml b/yanzhu-modules/yanzhu-system/src/main/resources/bootstrap.yml
index 6ee499db..efe975fc 100644
--- a/yanzhu-modules/yanzhu-system/src/main/resources/bootstrap.yml
+++ b/yanzhu-modules/yanzhu-system/src/main/resources/bootstrap.yml
@@ -16,7 +16,7 @@ spring:
# 服务注册地址
server-addr: @discovery.server-addr@
# 服务分组
- group: JiangYuQi
+ group: lijun
config:
# 配置中心地址
server-addr: @discovery.server-addr@
diff --git a/yanzhu-ui-vue3/src/api/manage/plan.js b/yanzhu-ui-vue3/src/api/manage/plan.js
new file mode 100644
index 00000000..37850040
--- /dev/null
+++ b/yanzhu-ui-vue3/src/api/manage/plan.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询计划管理列表
+export function listPlan(query) {
+ return request({
+ url: '/manage/plan/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询计划管理详细
+export function getPlan(id) {
+ return request({
+ url: '/manage/plan/' + id,
+ method: 'get'
+ })
+}
+
+// 新增计划管理
+export function addPlan(data) {
+ return request({
+ url: '/manage/plan',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改计划管理
+export function updatePlan(data) {
+ return request({
+ url: '/manage/plan',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除计划管理
+export function delPlan(id) {
+ return request({
+ url: '/manage/plan/' + id,
+ method: 'delete'
+ })
+}
diff --git a/yanzhu-ui-vue3/src/views/manage/attendance_cfg/index.vue b/yanzhu-ui-vue3/src/views/manage/attendance_cfg/index.vue
index 5b78f5c2..70b5336c 100644
--- a/yanzhu-ui-vue3/src/views/manage/attendance_cfg/index.vue
+++ b/yanzhu-ui-vue3/src/views/manage/attendance_cfg/index.vue
@@ -133,7 +133,7 @@