From 96a020a65509f807ac3d27872f903e22f2218165 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 31 七月 2026 16:54:43 +0800
Subject: [PATCH] 员工新增修改问题解决
---
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java | 15 +++++
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/employee/vo/HrmEmployeeSaveReqVO.java | 6 +-
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeEducationMapper.java | 4 +
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeWorkHistoryMapper.java | 4 +
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java | 66 +++++++++++++++++++--
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderItemRespVO.java | 48 ++++++++++++++++
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeEmergencyContactMapper.java | 4 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineSaveReqVO.java | 3 +
8 files changed, 139 insertions(+), 11 deletions(-)
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java
index a96501b..3e2adf4 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/ErpSaleOrderController.java
@@ -10,6 +10,7 @@
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
+import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderItemRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderPageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order.ErpSaleOrderSaveReqVO;
@@ -119,6 +120,20 @@
return success(true);
}
+ @GetMapping("/item/list-by-order-id")
+ @Operation(summary = "鏌ヨ閿�鍞鍗曠殑鐗╂枡鏄庣粏鍒楄〃锛堢敤浜庡彂璐ч�氱煡鍗曞垱寤猴級")
+ @Parameter(name = "orderId", description = "閿�鍞鍗曠紪鍙�", required = true, example = "1")
+ @PreAuthorize("@ss.hasPermission('erp:sale-order:query')")
+ public CommonResult<List<ErpSaleOrderItemRespVO>> getSaleOrderItemListByOrderId(@RequestParam("orderId") Long orderId) {
+ List<ErpSaleOrderItemDO> itemList = saleOrderService.getSaleOrderItemListByOrderId(orderId);
+ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(
+ convertSet(itemList, ErpSaleOrderItemDO::getProductId));
+ return success(BeanUtils.toBean(itemList, ErpSaleOrderItemRespVO.class, vo -> {
+ MapUtils.findAndThen(itemMap, vo.getProductId(), item ->
+ vo.setProductName(item.getName()).setProductBarCode(item.getBarCode()));
+ }));
+ }
+
@GetMapping("/get")
@Operation(summary = "鑾峰緱閿�鍞鍗�")
@Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderItemRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderItemRespVO.java
new file mode 100644
index 0000000..7ca8f8f
--- /dev/null
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/sale/vo/order/ErpSaleOrderItemRespVO.java
@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * ERP 閿�鍞鍗曢」 Response VO锛堜緵鍓嶇鍙戣揣閫氱煡鍗曞垱寤烘椂鏌ヨ璁㈠崟鏄庣粏锛�
+ */
+@Schema(description = "绠$悊鍚庡彴 - ERP 閿�鍞鍗曢」 Response VO")
+@Data
+public class ErpSaleOrderItemRespVO {
+
+ @Schema(description = "缂栧彿锛堥攢鍞鍗曡ID锛�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ private Long id;
+
+ @Schema(description = "閿�鍞鍗曠紪鍙�", example = "1")
+ private Long orderId;
+
+ @Schema(description = "鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ private Long productId;
+
+ @Schema(description = "鐗╂枡鍚嶇О", example = "浜у搧A")
+ private String productName;
+
+ @Schema(description = "鐗╂枡鏉$爜", example = "12345678")
+ private String productBarCode;
+
+ @Schema(description = "璁¢噺鍗曚綅缂栧彿", example = "1")
+ private Long productUnitId;
+
+ @Schema(description = "璁¢噺鍗曚綅鍚嶇О", example = "涓�")
+ private String productUnitName;
+
+ @Schema(description = "浜у搧鍗曚环", example = "100.00")
+ private BigDecimal productPrice;
+
+ @Schema(description = "鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+ private BigDecimal count;
+
+ @Schema(description = "鎬讳环", example = "1000.00")
+ private BigDecimal totalPrice;
+
+ @Schema(description = "澶囨敞", example = "澶囨敞")
+ private String remark;
+
+}
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/employee/vo/HrmEmployeeSaveReqVO.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/employee/vo/HrmEmployeeSaveReqVO.java
index 243900d..90a8d45 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/employee/vo/HrmEmployeeSaveReqVO.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/employee/vo/HrmEmployeeSaveReqVO.java
@@ -94,14 +94,14 @@
@Schema(description = "鏁欒偛缁忓巻鍒楄〃")
@Valid
- private List<HrmEmployeeEducationSaveReqVO> educationList;
+ private List<HrmEmployeeEducationSaveReqVO> educations;
@Schema(description = "宸ヤ綔缁忓巻鍒楄〃")
@Valid
- private List<HrmEmployeeWorkHistorySaveReqVO> workHistoryList;
+ private List<HrmEmployeeWorkHistorySaveReqVO> workHistories;
@Schema(description = "绱ф�ヨ仈绯讳汉鍒楄〃")
@Valid
- private List<HrmEmployeeEmergencyContactSaveReqVO> emergencyContactList;
+ private List<HrmEmployeeEmergencyContactSaveReqVO> emergencyContacts;
}
\ No newline at end of file
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeEducationMapper.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeEducationMapper.java
index 35aea9b..d9390eb 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeEducationMapper.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeEducationMapper.java
@@ -19,4 +19,8 @@
return selectList(HrmEmployeeEducationDO::getEmployeeId, employeeId);
}
+ default void deleteByEmployeeId(Long employeeId) {
+ delete(HrmEmployeeEducationDO::getEmployeeId, employeeId);
+ }
+
}
\ No newline at end of file
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeEmergencyContactMapper.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeEmergencyContactMapper.java
index 8a592ba..03e93cf 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeEmergencyContactMapper.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeEmergencyContactMapper.java
@@ -21,4 +21,8 @@
.orderByAsc(HrmEmployeeEmergencyContactDO::getSort));
}
+ default void deleteByEmployeeId(Long employeeId) {
+ delete(HrmEmployeeEmergencyContactDO::getEmployeeId, employeeId);
+ }
+
}
\ No newline at end of file
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeWorkHistoryMapper.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeWorkHistoryMapper.java
index 465e9c9..cb1b988 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeWorkHistoryMapper.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/employee/HrmEmployeeWorkHistoryMapper.java
@@ -19,4 +19,8 @@
return selectList(HrmEmployeeWorkHistoryDO::getEmployeeId, employeeId);
}
+ default void deleteByEmployeeId(Long employeeId) {
+ delete(HrmEmployeeWorkHistoryDO::getEmployeeId, employeeId);
+ }
+
}
\ No newline at end of file
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
index 72fadf6..58632cf 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
@@ -113,24 +113,24 @@
employeeMapper.insert(employee);
Long employeeId = employee.getId();
// 7. 鍚屾娣诲姞鏁欒偛缁忓巻
- if (CollUtil.isNotEmpty(createReqVO.getEducationList())) {
- createReqVO.getEducationList().forEach(educationVO -> {
+ if (CollUtil.isNotEmpty(createReqVO.getEducations())) {
+ createReqVO.getEducations().forEach(educationVO -> {
HrmEmployeeEducationDO education = BeanUtils.toBean(educationVO, HrmEmployeeEducationDO.class);
education.setEmployeeId(employeeId);
educationMapper.insert(education);
});
}
// 8. 鍚屾娣诲姞宸ヤ綔缁忓巻
- if (CollUtil.isNotEmpty(createReqVO.getWorkHistoryList())) {
- createReqVO.getWorkHistoryList().forEach(workHistoryVO -> {
+ if (CollUtil.isNotEmpty(createReqVO.getWorkHistories())) {
+ createReqVO.getWorkHistories().forEach(workHistoryVO -> {
HrmEmployeeWorkHistoryDO workHistory = BeanUtils.toBean(workHistoryVO, HrmEmployeeWorkHistoryDO.class);
workHistory.setEmployeeId(employeeId);
workHistoryMapper.insert(workHistory);
});
}
// 9. 鍚屾娣诲姞绱ф�ヨ仈绯讳汉
- if (CollUtil.isNotEmpty(createReqVO.getEmergencyContactList())) {
- createReqVO.getEmergencyContactList().forEach(emergencyContactVO -> {
+ if (CollUtil.isNotEmpty(createReqVO.getEmergencyContacts())) {
+ createReqVO.getEmergencyContacts().forEach(emergencyContactVO -> {
HrmEmployeeEmergencyContactDO emergencyContact = BeanUtils.toBean(emergencyContactVO, HrmEmployeeEmergencyContactDO.class);
emergencyContact.setEmployeeId(employeeId);
emergencyContactMapper.insert(emergencyContact);
@@ -148,6 +148,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void updateEmployee(HrmEmployeeSaveReqVO updateReqVO) {
// 鏍¢獙瀛樺湪
HrmEmployeeDO employee = validateEmployeeExists(updateReqVO.getId());
@@ -160,20 +161,69 @@
&& employeeMapper.selectByPhone(updateReqVO.getPhone()) != null) {
throw exception(EMPLOYEE_PHONE_EXISTS);
}
- // 鏇存柊
+ // 鏇存柊鍛樺伐涓昏〃
HrmEmployeeDO updateObj = BeanUtils.toBean(updateReqVO, HrmEmployeeDO.class);
// roleIds 瀛樺偍涓� JSON
if (CollUtil.isNotEmpty(updateReqVO.getRoleIds())) {
updateObj.setRoleIds(JSONUtil.toJsonStr(updateReqVO.getRoleIds()));
}
employeeMapper.updateById(updateObj);
+ Long employeeId = updateReqVO.getId();
+
+ // 鍚屾鏁欒偛缁忓巻
+ syncEducationList(employeeId, updateReqVO.getEducations());
+ // 鍚屾宸ヤ綔缁忓巻
+ syncWorkHistoryList(employeeId, updateReqVO.getWorkHistories());
+ // 鍚屾绱ф�ヨ仈绯讳汉
+ syncEmergencyContactList(employeeId, updateReqVO.getEmergencyContacts());
+ }
+
+ private void syncEducationList(Long employeeId, List<HrmEmployeeEducationSaveReqVO> newList) {
+ educationMapper.deleteByEmployeeId(employeeId);
+ if (CollUtil.isNotEmpty(newList)) {
+ newList.forEach(vo -> {
+ HrmEmployeeEducationDO education = BeanUtils.toBean(vo, HrmEmployeeEducationDO.class);
+ education.setId(null);
+ education.setEmployeeId(employeeId);
+ educationMapper.insert(education);
+ });
+ }
+ }
+
+ private void syncWorkHistoryList(Long employeeId, List<HrmEmployeeWorkHistorySaveReqVO> newList) {
+ workHistoryMapper.deleteByEmployeeId(employeeId);
+ if (CollUtil.isNotEmpty(newList)) {
+ newList.forEach(vo -> {
+ HrmEmployeeWorkHistoryDO workHistory = BeanUtils.toBean(vo, HrmEmployeeWorkHistoryDO.class);
+ workHistory.setId(null);
+ workHistory.setEmployeeId(employeeId);
+ workHistoryMapper.insert(workHistory);
+ });
+ }
+ }
+
+ private void syncEmergencyContactList(Long employeeId, List<HrmEmployeeEmergencyContactSaveReqVO> newList) {
+ emergencyContactMapper.deleteByEmployeeId(employeeId);
+ if (CollUtil.isNotEmpty(newList)) {
+ newList.forEach(vo -> {
+ HrmEmployeeEmergencyContactDO emergencyContact = BeanUtils.toBean(vo, HrmEmployeeEmergencyContactDO.class);
+ emergencyContact.setId(null);
+ emergencyContact.setEmployeeId(employeeId);
+ emergencyContactMapper.insert(emergencyContact);
+ });
+ }
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void deleteEmployee(Long id) {
// 鏍¢獙瀛樺湪
validateEmployeeExists(id);
- // 鍒犻櫎
+ // 绾ц仈鍒犻櫎瀛愯〃
+ educationMapper.deleteByEmployeeId(id);
+ workHistoryMapper.deleteByEmployeeId(id);
+ emergencyContactMapper.deleteByEmployeeId(id);
+ // 鍒犻櫎鍛樺伐
employeeMapper.deleteById(id);
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineSaveReqVO.java
index d6ba341..35af7ca 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineSaveReqVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/salesnotice/vo/line/MesWmSalesNoticeLineSaveReqVO.java
@@ -18,6 +18,9 @@
@NotNull(message = "鍙戣揣閫氱煡鍗曠紪鍙蜂笉鑳戒负绌�")
private Long noticeId;
+ @Schema(description = "閿�鍞鍗曟槑缁咺D", example = "1")
+ private Long saleOrderItemId;
+
@Schema(description = "鐗╂枡缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "鐗╂枡缂栧彿涓嶈兘涓虹┖")
private Long itemId;
--
Gitblit v1.9.3