From 408bab8b1c0c10514b8395cff92e47751e4dcdcd Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期六, 07 三月 2026 11:28:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New
---
src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrders.java | 10 +
src/main/java/com/ruoyi/projectManagement/mapper/PlanNodeMapper.java | 18 ++
src/main/java/com/ruoyi/purchase/vo/PurchaseReturnOrderVo.java | 17 +
doc/20260306_create_purchase_return_orders.sql | 4
src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java | 6
src/main/java/com/ruoyi/projectManagement/vo/PlanVo.java | 10 +
src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java | 11 +
src/main/java/com/ruoyi/projectManagement/pojo/Plan.java | 8
src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java | 6
src/main/java/com/ruoyi/projectManagement/service/PlanService.java | 11 +
src/main/java/com/ruoyi/projectManagement/vo/PlanNodeVo.java | 35 +++
src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderDto.java | 10 +
src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java | 6
src/main/java/com/ruoyi/projectManagement/pojo/PlanNode.java | 104 +++++++++++
src/main/java/com/ruoyi/projectManagement/vo/SavePlanNodeVo.java | 41 ++++
src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java | 33 +++
src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml | 17 +
src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java | 3
src/main/resources/mapper/projectManagement/PlanNodeMapper.xml | 31 +++
src/main/resources/mapper/projectManagement/PlanMapper.xml | 15
src/main/java/com/ruoyi/projectManagement/controller/PlanController.java | 49 +++++
src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java | 92 ++++++++-
22 files changed, 505 insertions(+), 32 deletions(-)
diff --git a/doc/20260306_craete_purchase_return_orders.sql b/doc/20260306_create_purchase_return_orders.sql
similarity index 87%
rename from doc/20260306_craete_purchase_return_orders.sql
rename to doc/20260306_create_purchase_return_orders.sql
index 6e31d78..84c700b 100644
--- a/doc/20260306_craete_purchase_return_orders.sql
+++ b/doc/20260306_create_purchase_return_orders.sql
@@ -12,9 +12,13 @@
prepared_user_id bigint not null default 0 comment '鍒跺崟浜篿d',
return_user_id bigint not null default 0 comment '閫�鏂欎汉id',
purchase_ledger_id bigint not null default 0 comment '閲囪喘璁㈠崟id',
+ total_discount_amount decimal(10, 2) null comment '鏁村崟鎶樻墸棰�',
+ total_discount_rate decimal(10, 2) null comment '鏁村崟鎶樻墸鐜�',
+ total_amount decimal(10,2) null comment '鎴愪氦閲戦',
remark text null comment '澶囨敞',
create_time datetime null comment '褰曞叆鏃堕棿',
update_time datetime null comment '鏇存柊鏃堕棿',
+ index idx_supplier_id (supplier_id),
index idx_purchase_ledger_id (purchase_ledger_id),
index idx_project_id (project_id)
);
diff --git a/src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java b/src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java
index 66e5e2c..968ddba 100644
--- a/src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java
+++ b/src/main/java/com/ruoyi/basic/service/CustomerFollowUpFileService.java
@@ -4,6 +4,7 @@
import com.ruoyi.basic.pojo.CustomerFollowUpFile;
import com.ruoyi.common.vo.SimpleFileVo;
+import javax.annotation.Nullable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.util.List;
@@ -29,7 +30,7 @@
* @param <T>
*/
<T> void fillAttachment(
- @Null List<T> list,
+ @Nullable List<T> list,
@NotNull Function<T, String> getAttachmentIds,
@NotNull BiConsumer<T, List<SimpleFileVo>> setAttachmentList
);
diff --git a/src/main/java/com/ruoyi/projectManagement/controller/PlanController.java b/src/main/java/com/ruoyi/projectManagement/controller/PlanController.java
new file mode 100644
index 0000000..f3a4745
--- /dev/null
+++ b/src/main/java/com/ruoyi/projectManagement/controller/PlanController.java
@@ -0,0 +1,49 @@
+package com.ruoyi.projectManagement.controller;
+
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.projectManagement.service.PlanService;
+import com.ruoyi.projectManagement.vo.SavePlanNodeVo;
+import com.ruoyi.projectManagement.vo.SavePlanVo;
+import com.ruoyi.projectManagement.vo.SearchPlanVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * @author buhuazhen
+ * @date 2026/3/7
+ * @email 3038525872@qq.com
+ */
+@RestController
+@RequestMapping("/projectManagement/plan")
+@Api(value = "PlanController", tags = "椤圭洰绠$悊璁″垝琛�(椤圭洰绠$悊绫诲瀷)")
+@RequiredArgsConstructor
+public class PlanController {
+
+ private final PlanService planService;
+
+ @PostMapping("/save")
+ @ApiOperation("淇濆瓨")
+ public AjaxResult save(@RequestBody @Valid SavePlanVo savePlanVo) {
+ planService.savePlan(savePlanVo);
+ return AjaxResult.success();
+ }
+
+ @PostMapping("/delete/{id}")
+ @ApiOperation("鍒犻櫎")
+ public AjaxResult delete(@PathVariable Long id) {
+ planService.deletePlan(id);
+ return AjaxResult.success();
+ }
+
+ @PostMapping("/listPage")
+ @ApiOperation("鍒嗛〉鍒楄〃")
+ public AjaxResult listPage(@RequestBody SearchPlanVo searchPlanVo) {
+ return AjaxResult.success(planService.searchPlan(searchPlanVo));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/projectManagement/mapper/PlanNodeMapper.java b/src/main/java/com/ruoyi/projectManagement/mapper/PlanNodeMapper.java
new file mode 100644
index 0000000..1d8f323
--- /dev/null
+++ b/src/main/java/com/ruoyi/projectManagement/mapper/PlanNodeMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.projectManagement.mapper;
+
+import com.ruoyi.projectManagement.pojo.PlanNode;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恜roject_management_plan_node(璁″垝鑺傜偣)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2026-03-06 17:05:38
+* @Entity generator.domain.ProjectManagementPlanNode
+*/
+public interface PlanNodeMapper extends BaseMapper<PlanNode> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/projectManagement/pojo/Plan.java b/src/main/java/com/ruoyi/projectManagement/pojo/Plan.java
index 3fa3a98..ea62dde 100644
--- a/src/main/java/com/ruoyi/projectManagement/pojo/Plan.java
+++ b/src/main/java/com/ruoyi/projectManagement/pojo/Plan.java
@@ -36,9 +36,9 @@
/**
* 璁″垝鎻忚堪
*/
- @TableField(value = "describe")
+ @TableField(value = "description")
@ApiModelProperty(value="璁″垝鎻忚堪")
- private String describe;
+ private String description;
/**
* 闄勪欢 ,杩涜鍒嗗壊
@@ -73,12 +73,12 @@
*/
@TableField(value = "create_user",fill = FieldFill.INSERT)
@ApiModelProperty(value="鍒涘缓浜�")
- private String createUser;
+ private Integer createUser;
/**
*
*/
@TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value="鏇存柊浜�")
- private String updateUser;
+ private Integer updateUser;
}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/projectManagement/pojo/PlanNode.java b/src/main/java/com/ruoyi/projectManagement/pojo/PlanNode.java
new file mode 100644
index 0000000..eddaf90
--- /dev/null
+++ b/src/main/java/com/ruoyi/projectManagement/pojo/PlanNode.java
@@ -0,0 +1,104 @@
+package com.ruoyi.projectManagement.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 璁″垝鑺傜偣
+ * @TableName project_management_plan_node
+ */
+@TableName(value ="project_management_plan_node")
+@Data
+public class PlanNode implements Serializable {
+ /**
+ *
+ */
+ @TableId(type = IdType.AUTO)
+ @TableField(value = "id")
+ private Long id;
+
+ /**
+ * 瀵瑰簲id
+ */
+ @TableField(value = "project_management_plan_id")
+ private Long projectManagementPlanId;
+
+ /**
+ * 鎺掑簭
+ */
+ @TableField(value = "sort")
+ private Integer sort;
+
+ /**
+ * 闃舵鍚嶇О
+ */
+ @TableField(value = "name")
+ private String name;
+
+ /**
+ * 璐熻矗浠籌D
+ */
+ @TableField(value = "leader_id")
+ private Long leaderId;
+
+ /**
+ * 璐熻矗浠诲悕绉�
+ */
+ @TableField(value = "leader_name")
+ private String leaderName;
+
+ /**
+ * 棰勮宸ユ湡(澶�)
+ */
+ @TableField(value = "estimated_duration")
+ private Integer estimatedDuration;
+
+ /**
+ * 宸ヤ环
+ */
+ @TableField(value = "hourly_rate")
+ private String hourlyRate;
+
+ /**
+ * 浣滀笟鍐呭
+ */
+ @TableField(value = "work_content")
+ private String workContent;
+
+ /**
+ *
+ */
+ @TableField(value = "is_delete")
+ private Integer isDelete;
+
+ /**
+ *
+ */
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ *
+ */
+ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ *
+ */
+ @TableField(value = "create_user",fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ *
+ */
+ @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/projectManagement/service/PlanService.java b/src/main/java/com/ruoyi/projectManagement/service/PlanService.java
index 7eab7d8..de2d38a 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/PlanService.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/PlanService.java
@@ -4,10 +4,13 @@
import com.ruoyi.projectManagement.pojo.Plan;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.projectManagement.vo.PlanVo;
+import com.ruoyi.projectManagement.vo.SavePlanNodeVo;
import com.ruoyi.projectManagement.vo.SavePlanVo;
import com.ruoyi.projectManagement.vo.SearchPlanVo;
+import javax.annotation.Nullable;
import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Null;
import java.util.List;
/**
@@ -24,11 +27,19 @@
void savePlan(@NotNull SavePlanVo savePlanVo);
/**
+ * 淇濆瓨璁″垝鑺傜偣
+ * @param planId
+ * @param savePlanNodeVos
+ */
+ void savePlanNode(@NotNull Long planId,@Nullable List<SavePlanNodeVo> savePlanNodeVos);
+
+ /**
* 鍒犻櫎椤圭洰绠$悊璁″垝
* @param id
*/
void deletePlan(@NotNull Long id);
+ void deletePlanNode(@Nullable List<Long> ids);
IPage<PlanVo> searchPlan(@NotNull SearchPlanVo searchPlanVo);
}
diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java b/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java
index 4262f89..6856bb6 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java
@@ -1,21 +1,32 @@
package com.ruoyi.projectManagement.service.impl;
import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.basic.service.CustomerFollowUpFileService;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.projectManagement.mapper.PlanMapper;
+import com.ruoyi.projectManagement.mapper.PlanNodeMapper;
import com.ruoyi.projectManagement.pojo.Plan;
+import com.ruoyi.projectManagement.pojo.PlanNode;
import com.ruoyi.projectManagement.service.PlanService;
-import com.ruoyi.projectManagement.vo.PlanVo;
-import com.ruoyi.projectManagement.vo.SavePlanVo;
-import com.ruoyi.projectManagement.vo.SearchPlanVo;
+import com.ruoyi.projectManagement.vo.*;
import lombok.RequiredArgsConstructor;
+import org.jetbrains.annotations.Nullable;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
+import java.util.List;
+import java.util.Map;
import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
/**
* @author buhuazhen
@@ -31,6 +42,12 @@
private final CustomerFollowUpFileService customerFollowUpFileService;
+ private final PlanNodeMapper planNodeMapper;
+
+ @Lazy
+ @Autowired
+ private PlanService planService;
+
@Override
@Transactional(rollbackFor = Exception.class)
public void savePlan(SavePlanVo savePlanVo) {
@@ -38,18 +55,55 @@
// 闄勪欢澶勭悊 , 鎷兼帴
String attachments = String.join(",", Optional.ofNullable(savePlanVo.getAttachmentIds()).orElse(Collections.emptyList()));
plan.setAttachment(attachments);
-
-
if (savePlanVo.getId() == null) {
planMapper.insert(plan);
} else {
planMapper.updateById(plan);
}
-
- // todo@ 鑺傜偣淇濆瓨
-
-
+ planService.savePlanNode(plan.getId(), savePlanVo.getSavePlanNodeList());
}
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void savePlanNode(Long planId, @Nullable List<SavePlanNodeVo> savePlanNodeVos) {
+ Assert.notNull(planId, () -> new ServiceException("璁″垝ID涓嶈兘涓虹┖"));
+ if (CollUtil.isEmpty(savePlanNodeVos)) {
+ return;
+ }
+
+ // 鍒犻櫎澶氫綑鑺傜偣
+ List<PlanNode> needDeleteNode = planNodeMapper.selectList(new LambdaQueryWrapper<PlanNode>()
+ .select(PlanNode::getId)
+ .eq(PlanNode::getProjectManagementPlanId, planId)
+ .ne(PlanNode::getId, savePlanNodeVos.get(0).getId())
+ .notIn(PlanNode::getId, savePlanNodeVos.stream().map(SavePlanNodeVo::getId).collect(Collectors.toList())));
+ deletePlanNode(needDeleteNode.stream().map(PlanNode::getId).collect(Collectors.toList()));
+
+ List<PlanNode> planNodes = BeanUtil.copyToList(savePlanNodeVos, PlanNode.class);
+ // 璁剧疆鎺掑簭绱㈠紩
+ IntStream.range(0, savePlanNodeVos.size()).forEach(i -> {
+ planNodes.get(i).setSort(i);
+ planNodes.get(i).setProjectManagementPlanId(planId);
+ if (planNodes.get(i).getId() == null) {
+ planNodeMapper.insert(planNodes.get(i));
+ } else {
+ planNodeMapper.updateById(planNodes.get(i));
+ }
+ });
+ }
+
+ private List<PlanNode> getPlanNodeByPlanId(Long planId) {
+ return planNodeMapper.selectList(new LambdaQueryWrapper<PlanNode>()
+ .eq(PlanNode::getIsDelete, 0)
+ .eq(PlanNode::getProjectManagementPlanId, planId));
+ }
+
+ private List<PlanNode> getPlanNodeByPlanIds(List<Long> planIds) {
+ return planNodeMapper.selectList(new LambdaQueryWrapper<PlanNode>()
+ .eq(PlanNode::getIsDelete, 0)
+ .in(PlanNode::getProjectManagementPlanId, planIds));
+ }
+
@Override
@Transactional(rollbackFor = Exception.class)
@@ -58,9 +112,18 @@
new LambdaUpdateWrapper<Plan>()
.eq(Plan::getId, id)
.set(Plan::getIsDelete, 1));
- // todo@ 瀵瑰簲鑺傜偣鍏ㄩ儴鍒犻櫎
+ planService.deletePlanNode(getPlanNodeByPlanId(id).stream().map(PlanNode::getId).collect(Collectors.toList()));
+ }
-
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void deletePlanNode(List<Long> ids) {
+ if (CollUtil.isNotEmpty(ids)) {
+ planNodeMapper.update(null,
+ new LambdaUpdateWrapper<PlanNode>()
+ .in(PlanNode::getId, ids)
+ .set(PlanNode::getIsDelete, 1));
+ }
}
@Override
@@ -69,8 +132,11 @@
IPage<PlanVo> resultPage = planIPage.convert(plan -> BeanUtil.copyProperties(plan, PlanVo.class));
// 鏂囦欢鑾峰彇
customerFollowUpFileService.fillAttachment(resultPage.getRecords(), PlanVo::getAttachment, PlanVo::setAttachmentList);
- // todo@ node 鑺傜偣鑾峰彇
-
+ Map<Long, List<PlanNodeVo>> collect = getPlanNodeByPlanIds(resultPage.getRecords().stream().map(PlanVo::getId).collect(Collectors.toList()))
+ .stream()
+ .map(it -> BeanUtil.copyProperties(it, PlanNodeVo.class))
+ .collect(Collectors.groupingBy(PlanNodeVo::getProjectManagementPlanId, Collectors.toList()));
+ resultPage.getRecords().forEach(planVo -> planVo.setPlanNodeList(collect.getOrDefault(planVo.getId(), Collections.emptyList())));
return resultPage;
}
diff --git a/src/main/java/com/ruoyi/projectManagement/vo/PlanNodeVo.java b/src/main/java/com/ruoyi/projectManagement/vo/PlanNodeVo.java
new file mode 100644
index 0000000..6194755
--- /dev/null
+++ b/src/main/java/com/ruoyi/projectManagement/vo/PlanNodeVo.java
@@ -0,0 +1,35 @@
+package com.ruoyi.projectManagement.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author buhuazhen
+ * @date 2026/3/7
+ * @email 3038525872@qq.com
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PlanNodeVo implements Serializable {
+ private Long id;
+
+ private Long projectManagementPlanId;
+
+ private Integer sort;
+
+ private String name;
+
+ private Long leaderId;
+
+ private String leaderName;
+
+ private Integer estimatedDuration;
+
+ private String hourlyRate;
+
+ private String workContent;
+}
diff --git a/src/main/java/com/ruoyi/projectManagement/vo/PlanVo.java b/src/main/java/com/ruoyi/projectManagement/vo/PlanVo.java
index 9ee78e9..492435e 100644
--- a/src/main/java/com/ruoyi/projectManagement/vo/PlanVo.java
+++ b/src/main/java/com/ruoyi/projectManagement/vo/PlanVo.java
@@ -1,10 +1,12 @@
package com.ruoyi.projectManagement.vo;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ruoyi.common.vo.SimpleFileVo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
+import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
@@ -25,7 +27,7 @@
private String name;
- private String describe;
+ private String description;
// 闄勪欢
private List<SimpleFileVo> attachmentList;
@@ -33,8 +35,14 @@
@JsonIgnore
private String attachment;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
+ private List<PlanNodeVo> planNodeList;
+
}
diff --git a/src/main/java/com/ruoyi/projectManagement/vo/SavePlanNodeVo.java b/src/main/java/com/ruoyi/projectManagement/vo/SavePlanNodeVo.java
new file mode 100644
index 0000000..3e98742
--- /dev/null
+++ b/src/main/java/com/ruoyi/projectManagement/vo/SavePlanNodeVo.java
@@ -0,0 +1,41 @@
+package com.ruoyi.projectManagement.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author buhuazhen
+ * @date 2026/3/7
+ * @email 3038525872@qq.com
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SavePlanNodeVo implements Serializable {
+ private Long id;
+
+ private Long projectManagementPlanId;
+
+ private Integer sort;
+
+ @NotBlank
+ private String name;
+
+ @NotNull
+ private Long leaderId;
+
+ @NotBlank
+ private String leaderName;
+
+ private Integer estimatedDuration;
+
+ private String hourlyRate;
+
+ private String workContent;
+
+}
diff --git a/src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java b/src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java
index 5c79940..906184b 100644
--- a/src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java
+++ b/src/main/java/com/ruoyi/projectManagement/vo/SavePlanVo.java
@@ -4,6 +4,7 @@
import lombok.Data;
import lombok.NoArgsConstructor;
+import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
@@ -22,10 +23,11 @@
@NotBlank
private String name;
@NotBlank
- private String describe;
+ private String description;
private List<String> attachmentIds;
-
+ @Valid
+ private List<SavePlanNodeVo> savePlanNodeList;
}
diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
index 42363af..df60a34 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
@@ -1,7 +1,16 @@
package com.ruoyi.purchase.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.projectManagement.mapper.RolesMapper;
+import com.ruoyi.purchase.dto.PurchaseReturnOrderDto;
+import com.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper;
+import com.ruoyi.purchase.service.PurchaseReturnOrdersService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
/**
* <p>
@@ -14,5 +23,25 @@
@RestController
@RequestMapping("/purchaseReturnOrders")
public class PurchaseReturnOrdersController {
+ @Autowired
+ private PurchaseReturnOrdersService purchaseReturnOrdersService;
+ @Autowired
+ private PurchaseReturnOrdersMapper purchaseReturnOrdersMapper;
+
+
+ @GetMapping("/listPage")
+ public AjaxResult listPage(Page page, PurchaseReturnOrderDto purchaseReturnOrderDto) {
+ return AjaxResult.success(purchaseReturnOrdersService.listPage(page, purchaseReturnOrderDto));
+ }
+
+ // 鏂板
+ @Log(title = "閲囪喘閫�璐у崟", businessType = BusinessType.INSERT)
+ @PostMapping("/add")
+ public AjaxResult add(@RequestBody PurchaseReturnOrderDto purchaseReturnOrderDto) throws Exception {
+ if (purchaseReturnOrderDto.getIsDefaultNo()) {
+ purchaseReturnOrderDto.setNo(OrderUtils.countTodayByCreateTime(purchaseReturnOrdersMapper, "CGTL"));
+ }
+ return AjaxResult.success(purchaseReturnOrdersService.save(purchaseReturnOrderDto));
+ }
}
diff --git a/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderDto.java b/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderDto.java
new file mode 100644
index 0000000..2de8642
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/dto/PurchaseReturnOrderDto.java
@@ -0,0 +1,10 @@
+package com.ruoyi.purchase.dto;
+
+import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
+import lombok.Data;
+
+@Data
+public class PurchaseReturnOrderDto extends PurchaseReturnOrders {
+ // 鏄惁浣跨敤绯荤粺鍗曞彿
+ private Boolean isDefaultNo;
+}
diff --git a/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java b/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java
index d2c1747..f0e0227 100644
--- a/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java
+++ b/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java
@@ -1,8 +1,12 @@
package com.ruoyi.purchase.mapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.purchase.vo.PurchaseReturnOrderVo;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
/**
* <p>
@@ -14,5 +18,5 @@
*/
@Mapper
public interface PurchaseReturnOrdersMapper extends BaseMapper<PurchaseReturnOrders> {
-
+ IPage<PurchaseReturnOrderVo> listPage(Page page, @Param("params") PurchaseReturnOrders purchaseReturnOrder);
}
diff --git a/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrders.java b/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrders.java
index c2004c3..821347d 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrders.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrders.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
+import java.math.BigDecimal;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -61,6 +62,15 @@
@ApiModelProperty("澶囨敞")
private String remark;
+ @ApiModelProperty("'鏁村崟鎶樻墸棰�'")
+ private BigDecimal totalDiscountAmount;
+
+ @ApiModelProperty("'鏁村崟鎶樻墸鐜�'")
+ private BigDecimal totalDiscountRate;
+
+ @ApiModelProperty("'鎴愪氦閲戦'")
+ private BigDecimal totalAmount;
+
@ApiModelProperty("褰曞叆鏃堕棿")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
diff --git a/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java b/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
index 6f165e1..74a451f 100644
--- a/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
+++ b/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
@@ -1,7 +1,11 @@
package com.ruoyi.purchase.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.purchase.dto.PurchaseReturnOrderDto;
import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.purchase.vo.PurchaseReturnOrderVo;
/**
* <p>
@@ -12,5 +16,5 @@
* @since 2026-03-06 11:44:38
*/
public interface PurchaseReturnOrdersService extends IService<PurchaseReturnOrders> {
-
+ IPage<PurchaseReturnOrderVo> listPage(Page page, PurchaseReturnOrderDto purchaseReturnOrderDto);
}
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
index f052d45..c084a68 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
@@ -1,9 +1,14 @@
package com.ruoyi.purchase.service.impl;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.purchase.dto.PurchaseReturnOrderDto;
import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
import com.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper;
import com.ruoyi.purchase.service.PurchaseReturnOrdersService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.purchase.vo.PurchaseReturnOrderVo;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
@@ -16,5 +21,11 @@
*/
@Service
public class PurchaseReturnOrdersServiceImpl extends ServiceImpl<PurchaseReturnOrdersMapper, PurchaseReturnOrders> implements PurchaseReturnOrdersService {
+ @Autowired
+ private PurchaseReturnOrdersMapper purchaseReturnOrdersMapper;
+ @Override
+ public IPage<PurchaseReturnOrderVo> listPage(Page page, PurchaseReturnOrderDto purchaseReturnOrderDto) {
+ return purchaseReturnOrdersMapper.listPage(page, purchaseReturnOrderDto);
+ }
}
diff --git a/src/main/java/com/ruoyi/purchase/vo/PurchaseReturnOrderVo.java b/src/main/java/com/ruoyi/purchase/vo/PurchaseReturnOrderVo.java
new file mode 100644
index 0000000..8e19f8c
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/vo/PurchaseReturnOrderVo.java
@@ -0,0 +1,17 @@
+package com.ruoyi.purchase.vo;
+
+import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
+
+public class PurchaseReturnOrderVo extends PurchaseReturnOrders {
+ //渚涘簲鍟嗗悕绉�
+ private String supplierName;
+
+ // 閲囪喘鍚堝悓鍙�
+ private String purchaseContractNumber;
+
+ //閫�鏂欎汉濮撳悕
+ private String returnUserName;
+
+ //鍒跺崟浜哄鍚�
+ private String createUserName;
+}
diff --git a/src/main/resources/mapper/projectManagement/PlanMapper.xml b/src/main/resources/mapper/projectManagement/PlanMapper.xml
index 3578358..de652e7 100644
--- a/src/main/resources/mapper/projectManagement/PlanMapper.xml
+++ b/src/main/resources/mapper/projectManagement/PlanMapper.xml
@@ -7,17 +7,17 @@
<resultMap id="BaseResultMap" type="com.ruoyi.projectManagement.pojo.Plan">
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
- <result property="describe" column="describe" jdbcType="VARCHAR"/>
+ <result property="description" column="description" jdbcType="VARCHAR"/>
<result property="attachment" column="attachment" jdbcType="VARCHAR"/>
- <result property="is_delete" column="is_delete" jdbcType="INTEGER"/>
- <result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
- <result property="update_time" column="update_time" jdbcType="TIMESTAMP"/>
- <result property="create_user" column="create_user" jdbcType="VARCHAR"/>
- <result property="update_user" column="update_user" jdbcType="VARCHAR"/>
+ <result property="isDelete" column="is_delete" jdbcType="INTEGER"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="createUser" column="create_user" jdbcType="VARCHAR"/>
+ <result property="updateUser" column="update_user" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
- id,name,describe,
+ id,name,description,
attachment,is_delete,create_time,
update_time,create_user,update_user
</sql>
@@ -25,6 +25,7 @@
<select id="selectPlanPage" resultMap="BaseResultMap">
select t1.*
from project_management_plan as t1
+ where t1.is_delete = 0
order by t1.create_time desc
</select>
</mapper>
diff --git a/src/main/resources/mapper/projectManagement/PlanNodeMapper.xml b/src/main/resources/mapper/projectManagement/PlanNodeMapper.xml
new file mode 100644
index 0000000..b6b9ddf
--- /dev/null
+++ b/src/main/resources/mapper/projectManagement/PlanNodeMapper.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.projectManagement.mapper.PlanNodeMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.projectManagement.pojo.PlanNode">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="projectManagementPlanId" column="project_management_plan_id" jdbcType="BIGINT"/>
+ <result property="sort" column="sort" jdbcType="INTEGER"/>
+ <result property="name" column="name" jdbcType="VARCHAR"/>
+ <result property="leaderId" column="leader_id" jdbcType="BIGINT"/>
+ <result property="leaderName" column="leader_name" jdbcType="VARCHAR"/>
+ <result property="estimatedDuration" column="estimated_duration" jdbcType="INTEGER"/>
+ <result property="hourlyRate" column="hourly_rate" jdbcType="VARCHAR"/>
+ <result property="workContent" column="work_content" jdbcType="VARCHAR"/>
+ <result property="isDelete" column="is_delete" jdbcType="INTEGER"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="createUser" column="create_user" jdbcType="VARCHAR"/>
+ <result property="updateUser" column="update_user" jdbcType="VARCHAR"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,project_management_plan_id,sort,
+ name,leader_id,leader_name,
+ estimated_duration,hourly_rate,work_content,
+ is_delete,create_time,update_time,
+ create_user,update_user
+ </sql>
+</mapper>
diff --git a/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml b/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
index 8d23060..8976a3a 100644
--- a/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
+++ b/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
@@ -19,4 +19,21 @@
<result column="update_time" property="updateTime" />
</resultMap>
+ <select id="listPage" resultType="com.ruoyi.purchase.vo.PurchaseReturnOrderVo">
+ SELECT
+ pro.*,
+ sm.supplier_name as supplierName,
+ pl.purchase_contract_number as purchaseContractNumber,
+ su.user_name as returnUserName,
+ su1.user_name as createUserName
+ FROM purchase_return_orders pro
+ LEFT JOIN supplier_manage sm ON pro.supplier_id = sm.id
+ LEFT JOIN purchase_ledger pl ON pl.id = pro.purchase_ledger_id
+ LEFT JOIN sys_user su ON su.user_id = pro.return_user_id
+ LEFT JOIN sys_user su1 ON su1.user_id = pro.prepared_user_id
+ where 1=1
+ <if test="params.no != null and params.no != '' ">
+ AND pro.no LIKE CONCAT('%',#{params.no},'%')
+ </if>
+ </select>
</mapper>
--
Gitblit v1.9.3