diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectSettleController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectSettleController.java index 88e6b37..d9e67ab 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectSettleController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectSettleController.java @@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.datetime.DateFormatter; import org.springframework.format.number.NumberStyleFormatter; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; @@ -54,6 +55,9 @@ public class ProjectSettleController extends BaseController{ @Autowired private ProjectUserTimeRepository projectUserTimeRepository; + @Autowired + private ProjectSettleMonthRangeRepository projectSettleMonthRangeRepository; + @RequestMapping("/add") public String add(@RequestParam("id") int id, Map model) { String time = null; @@ -68,12 +72,14 @@ public class ProjectSettleController extends BaseController{ instance.set(Calendar.MONTH, instance.get(Calendar.MONTH) + 1); Date current = instance.getTime(); time = DateKit.toStr(current, DateKit.DATE_FORMAT_YEAR_MONTH2); - model.put("time", time); + model.put("startMonth", time); + model.put("endMonth", time); model.put("formerBean", projectSettleService.getFormerSettle(project, time)); } else { time = DateKit.toStr(project.getStartDate(), DateKit.DATE_FORMAT_YEAR_MONTH2); - model.put("time", time); + model.put("startMonth", time); + model.put("endMonth", time); model.put("formerBean", new FormerBean()); } @@ -100,7 +106,13 @@ public class ProjectSettleController extends BaseController{ ProjectSettleIncome projectSettleIncome = projectSettleIncomeRepository.findNewByProjectId(id); List projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project); String time = projectSettleIncome.getTime(); - model.put("time", time); + ProjectSettleMonthRange projectSettleMonthRange = projectSettleMonthRangeRepository.findAllByProjectIdAndEndDate(id, time); + if (projectSettleMonthRange != null) { + model.put("startMonth", projectSettleMonthRange.getStartDate()); + } else { + model.put("startMonth", time); + } + model.put("endMonth", time); model.put("project", project); model.put("estimateBean", projectEstimateService.getEstimate(project)); model.put("budgetBean", projectBudgetService.getBudget(project)); @@ -122,8 +134,15 @@ public class ProjectSettleController extends BaseController{ } @RequestMapping("/save") - public String save(Project project, SettleBean settleBean, BudgetSettleBean budgetBean, EstimateSettleBean estimateBean, String time) { - projectSettleService.save(project, settleBean, budgetBean, estimateBean, time); + public String save(Project project, BindingResult bindingResult, SettleBean settleBean, BudgetSettleBean budgetBean, EstimateSettleBean estimateBean, String startMonth, String endMonth) { + if (!startMonth.equals(endMonth) && projectSettleMonthRangeRepository.findAllByProjectIdAndEndDate(project.getId(), endMonth) == null) { + ProjectSettleMonthRange range = new ProjectSettleMonthRange(); + range.setProjectId(project.getId()); + range.setStartDate(startMonth); + range.setEndDate(endMonth); + projectSettleMonthRangeRepository.save(range); + } + projectSettleService.save(project, settleBean, budgetBean, estimateBean, endMonth); return "redirect:/project/list"; } @@ -133,13 +152,20 @@ public class ProjectSettleController extends BaseController{ * @param settleBean * @param budgetBean * @param estimateBean - * @param time + * @param endMonth * @return * @throws Exception */ @RequestMapping("/saveAndApprove") - public String saveAndApprove(Project project, SettleBean settleBean, BudgetSettleBean budgetBean, EstimateSettleBean estimateBean, String time) throws Exception{ - projectSettleService.saveAndApprove(project, settleBean, budgetBean, estimateBean, time); + public String saveAndApprove(Project project, SettleBean settleBean, BudgetSettleBean budgetBean, EstimateSettleBean estimateBean, String startMonth, String endMonth) throws Exception{ + if (!startMonth.equals(endMonth) && projectSettleMonthRangeRepository.findAllByProjectIdAndEndDate(project.getId(), endMonth) == null) { + ProjectSettleMonthRange range = new ProjectSettleMonthRange(); + range.setProjectId(project.getId()); + range.setStartDate(startMonth); + range.setEndDate(endMonth); + projectSettleMonthRangeRepository.save(range); + } + projectSettleService.saveAndApprove(project, settleBean, budgetBean, estimateBean, endMonth); return "redirect:/project/list"; } diff --git a/src/main/java/cn/palmte/work/model/ProjectSettleMonthRange.java b/src/main/java/cn/palmte/work/model/ProjectSettleMonthRange.java new file mode 100644 index 0000000..310af2e --- /dev/null +++ b/src/main/java/cn/palmte/work/model/ProjectSettleMonthRange.java @@ -0,0 +1,56 @@ +package cn.palmte.work.model; + +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; + +@Entity +@Table(name = "project_settle_month_range") +public class ProjectSettleMonthRange { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @GenericGenerator(name = "persistenceGenerator", strategy = "increment") + private Integer id; + + @Column(name = "project_id") + private int projectId; + + @Column(name = "start_date") + private String startDate; + + @Column(name = "end_date") + private String endDate; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public int getProjectId() { + return projectId; + } + + public void setProjectId(int projectId) { + this.projectId = projectId; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } +} diff --git a/src/main/java/cn/palmte/work/model/ProjectSettleMonthRangeRepository.java b/src/main/java/cn/palmte/work/model/ProjectSettleMonthRangeRepository.java new file mode 100644 index 0000000..1b586e2 --- /dev/null +++ b/src/main/java/cn/palmte/work/model/ProjectSettleMonthRangeRepository.java @@ -0,0 +1,16 @@ +package cn.palmte.work.model; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +/** + * @author Yuanping Zhang + * @date 2022/12/22 + */ +public interface ProjectSettleMonthRangeRepository extends JpaRepository { + + @Query(value = "select * from project_settle_month_range where project_id = ?1 and end_date = ?2 limit 1", nativeQuery = true) + ProjectSettleMonthRange findAllByProjectIdAndEndDate(int id, String endDate); +} diff --git a/src/main/resources/templates/admin/project_approve.ftl b/src/main/resources/templates/admin/project_approve.ftl index d336820..e32a29b 100644 --- a/src/main/resources/templates/admin/project_approve.ftl +++ b/src/main/resources/templates/admin/project_approve.ftl @@ -1204,7 +1204,7 @@ -
+
<#--资金计划表-->
@@ -1219,9 +1219,10 @@
- - + + @@ -1239,7 +1240,8 @@ <#-- --> - + + diff --git a/src/main/resources/templates/admin/project_settle_add.ftl b/src/main/resources/templates/admin/project_settle_add.ftl index 318e27a..7104006 100644 --- a/src/main/resources/templates/admin/project_settle_add.ftl +++ b/src/main/resources/templates/admin/project_settle_add.ftl @@ -39,7 +39,11 @@
- + +
+
+
+
@@ -409,19 +413,19 @@
操作