From ce1ea9ac3806578719070a463ef7381a0d3c5148 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期二, 12 五月 2026 17:45:00 +0800
Subject: [PATCH] 分派生产单到班组长,班组长:排产工单到班组成员
---
src/main/java/com/ruoyi/production/service/impl/ProductionTeamUserRelServiceImpl.java | 19 +++
src/main/java/com/ruoyi/production/bean/dto/ProductionPlanDto.java | 2
src/main/java/com/ruoyi/production/controller/ProductionOperationTaskController.java | 6 +
src/main/resources/mapper/production/ProductionOrderMapper.xml | 4
src/main/java/com/ruoyi/production/bean/vo/ProductionOrderVo.java | 3
doc/20260511_create_table_production_team.sql | 6 +
src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java | 20 ++++
src/main/resources/mapper/production/ProductionOperationTaskMapper.xml | 5 +
src/main/java/com/ruoyi/production/service/ProductionTeamUserRelService.java | 18 +++
src/main/resources/mapper/production/ProductionTeamUserRelMapper.xml | 30 ++++++
src/main/java/com/ruoyi/production/pojo/ProductionOperationTask.java | 3
src/main/java/com/ruoyi/production/bean/dto/ProductionOperationTaskDto.java | 3
src/main/java/com/ruoyi/production/service/impl/ProductionPlanServiceImpl.java | 1
src/main/java/com/ruoyi/production/controller/ProductionTeamUserRelController.java | 29 +++++
src/main/java/com/ruoyi/production/mapper/ProductionTeamUserRelMapper.java | 16 +++
src/main/java/com/ruoyi/production/service/ProductionOperationTaskService.java | 7 +
src/main/java/com/ruoyi/production/pojo/ProductionOrder.java | 3
src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java | 36 +++++++
src/main/java/com/ruoyi/production/bean/vo/ProductionOperationTaskVo.java | 12 ++
src/main/java/com/ruoyi/production/controller/ProductionTeamController.java | 10 -
src/main/java/com/ruoyi/production/bean/vo/TeamLeaderVo.java | 13 ++
21 files changed, 236 insertions(+), 10 deletions(-)
diff --git a/doc/20260511_create_table_production_team.sql b/doc/20260511_create_table_production_team.sql
index 9668d8e..7c705ee 100644
--- a/doc/20260511_create_table_production_team.sql
+++ b/doc/20260511_create_table_production_team.sql
@@ -26,3 +26,9 @@
index idx_sys_user_id (sys_user_id),
unique idx_production_team_user (production_team_id, sys_user_id)
);
+
+alter table production_order add column team_leader_user_id bigint not null default 0 comment '鐝粍闀縄D';
+alter table production_order add index idx_team_leader_user_id (team_leader_user_id);
+
+alter table production_operation_task
+ add team_user_id bigint default 0 not null comment '鐝粍鍥㈠憳鐢ㄦ埛id';
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionOperationTaskDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionOperationTaskDto.java
index 965cbf3..b73b1e4 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionOperationTaskDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionOperationTaskDto.java
@@ -44,4 +44,7 @@
@Schema(description = "缁撴潫鏃ユ湡")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate endDate;
+
+ @Schema(description = "鐝粍鎴愬憳鐢ㄦ埛ID")
+ private Long teamUserId;
}
diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionPlanDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionPlanDto.java
index c4363a8..29bcdad 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionPlanDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionPlanDto.java
@@ -55,4 +55,6 @@
@Schema(description = "閿�鍞悎鍚屽彿")
private String salesContractNo;
+ @Schema(description = "鐝粍闀縄D")
+ private Long leaderId;
}
diff --git a/src/main/java/com/ruoyi/production/bean/vo/ProductionOperationTaskVo.java b/src/main/java/com/ruoyi/production/bean/vo/ProductionOperationTaskVo.java
index 9929f19..34310c7 100644
--- a/src/main/java/com/ruoyi/production/bean/vo/ProductionOperationTaskVo.java
+++ b/src/main/java/com/ruoyi/production/bean/vo/ProductionOperationTaskVo.java
@@ -49,4 +49,16 @@
@Schema(description = "绫诲瀷 鍖哄垎璁℃椂鍜岃浠�(0璁℃椂1璁′欢)")
private Integer type;
+
+ @Schema(description = "鐝粍闀垮悕绉�")
+ private String leaderName;
+
+ @Schema(description = "鐝粍闀跨敤鎴稩D")
+ private Long leaderUserId;
+
+ @Schema(description = "鐝粍鍥㈠憳鐢ㄦ埛ID")
+ private Long teamUserId;
+
+ @Schema(description = "鐝粍鍥㈠憳鍚嶇О")
+ private String teamUserName;
}
diff --git a/src/main/java/com/ruoyi/production/bean/vo/ProductionOrderVo.java b/src/main/java/com/ruoyi/production/bean/vo/ProductionOrderVo.java
index 01ef33a..0318f32 100644
--- a/src/main/java/com/ruoyi/production/bean/vo/ProductionOrderVo.java
+++ b/src/main/java/com/ruoyi/production/bean/vo/ProductionOrderVo.java
@@ -44,4 +44,7 @@
@Schema(description = "鏄惁宸查��鏂�")
private Boolean returned;
+
+ @Schema(description = "鐝粍闀挎樀绉�")
+ private String teamLeaderUserName;
}
diff --git a/src/main/java/com/ruoyi/production/bean/vo/TeamLeaderVo.java b/src/main/java/com/ruoyi/production/bean/vo/TeamLeaderVo.java
new file mode 100644
index 0000000..52d8842
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/bean/vo/TeamLeaderVo.java
@@ -0,0 +1,13 @@
+package com.ruoyi.production.bean.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class TeamLeaderVo extends ProductionTeamVo.MemberVo {
+ @Schema(description = "鐝粍ID")
+ private Long productionTeamId;
+
+ @Schema(description = "鐝粍鍚嶇О")
+ private String teamName;
+}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionOperationTaskController.java b/src/main/java/com/ruoyi/production/controller/ProductionOperationTaskController.java
index 56ed8c2..8d1ce0f 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionOperationTaskController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionOperationTaskController.java
@@ -70,6 +70,12 @@
return R.ok(productionOperationTaskService.assign(dto));
}
+ @Operation(summary = "鎸囨淳鐝粍鎴愬憳")
+ @PostMapping("/assignTeamUser")
+ public R<Boolean> assignTeamUser(@RequestBody ProductionOperationTaskDto dto) {
+ return R.ok(productionOperationTaskService.assignTeamUser(dto));
+ }
+
@PostMapping("/down")
@Operation(summary = "宸ュ崟娴佽浆鍗′笅杞�")
public void down(HttpServletResponse response, @RequestBody ProductionOperationTaskDto dto) {
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionTeamController.java b/src/main/java/com/ruoyi/production/controller/ProductionTeamController.java
index 5fd8e95..fcb8756 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionTeamController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionTeamController.java
@@ -8,6 +8,7 @@
import com.ruoyi.production.service.ProductionTeamService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -17,15 +18,12 @@
* 鐢熶骇鐝粍鎺у埗鍣�
*/
@RestController
-@RequestMapping("/production_team")
+@RequestMapping("/productionTeam")
@Tag(name = "鐢熶骇鐝粍绠$悊", description = "鐢熶骇鐝粍澧炲垹鏀规煡鎺ュ彛")
+@AllArgsConstructor
public class ProductionTeamController {
- private final ProductionTeamService productionTeamService;
-
- public ProductionTeamController(ProductionTeamService productionTeamService) {
- this.productionTeamService = productionTeamService;
- }
+ private ProductionTeamService productionTeamService;
/**
* 鍒涘缓鐝粍
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionTeamUserRelController.java b/src/main/java/com/ruoyi/production/controller/ProductionTeamUserRelController.java
index 67b4405..135f5b0 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionTeamUserRelController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionTeamUserRelController.java
@@ -1,7 +1,18 @@
package com.ruoyi.production.controller;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.production.bean.dto.ProductionTeamDto;
+import com.ruoyi.production.bean.vo.ProductionTeamVo;
+import com.ruoyi.production.bean.vo.TeamLeaderVo;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.ruoyi.production.service.ProductionTeamUserRelService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
/**
* <p>
@@ -13,6 +24,24 @@
*/
@RestController
@RequestMapping("/productionTeamUserRel")
+@AllArgsConstructor
public class ProductionTeamUserRelController {
+ private ProductionTeamUserRelService productionTeamUserRelService;
+ /**
+ * 鏌ヨ鐝粍闀垮垪琛�
+ */
+ @GetMapping("/leaderList")
+ @Operation(summary = "鏌ヨ鐝粍闀垮垪琛�", description = "鏌ヨ鐢熶骇鐝粍鐝粍闀垮垪琛�")
+ public R<List<TeamLeaderVo>> getTeamLeaderList() {
+ return R.ok(productionTeamUserRelService.listAllLeaders());
+ }
+ /**
+ * 鏍规嵁鐝粍闀跨敤鎴稩D鏌ヨ鐝粍鎴愬憳鍒楄〃
+ */
+ @GetMapping("/memberListByLeader")
+ @Operation(summary = "鏍规嵁鐝粍闀挎煡璇㈢彮缁勬垚鍛�", description = "鏍规嵁鐝粍闀跨敤鎴稩D鏌ヨ鎵�灞炵彮缁勭殑鎴愬憳鍒楄〃")
+ public R<List<ProductionTeamVo.MemberVo>> getMemberListByLeader(@RequestParam Long leaderUserId) {
+ return R.ok(productionTeamUserRelService.listTeamMembersByLeader(leaderUserId));
+ }
}
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductionTeamUserRelMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductionTeamUserRelMapper.java
index 1f5f193..090459f 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductionTeamUserRelMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductionTeamUserRelMapper.java
@@ -1,8 +1,12 @@
package com.ruoyi.production.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.production.bean.vo.ProductionTeamVo;
+import com.ruoyi.production.bean.vo.TeamLeaderVo;
import com.ruoyi.production.pojo.ProductionTeamUserRel;
import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
/**
* <p>
@@ -15,4 +19,16 @@
@Mapper
public interface ProductionTeamUserRelMapper extends BaseMapper<ProductionTeamUserRel> {
+ /**
+ * 鏌ヨ鎵�鏈夌彮缁勯暱淇℃伅锛堝寘鍚敤鎴峰悕绉板拰鐝粍鍚嶇О锛�
+ * @return 鐝粍闀夸俊鎭垪琛�
+ */
+ List<TeamLeaderVo> selectAllLeaders();
+
+ /**
+ * 鏍规嵁鐝粍闀跨敤鎴稩D鏌ヨ鐝粍鎴愬憳鍒楄〃
+ * @param leaderUserId 鐝粍闀跨敤鎴稩D
+ * @return 鐝粍鎴愬憳鍒楄〃
+ */
+ List<ProductionTeamVo.MemberVo> selectTeamMembersByLeader(Long leaderUserId);
}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOperationTask.java b/src/main/java/com/ruoyi/production/pojo/ProductionOperationTask.java
index 08399e9..6145863 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOperationTask.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOperationTask.java
@@ -76,4 +76,7 @@
@Schema(description = "鏉冮檺鐢ㄦ埛ID鍒楄〃锛屾牸寮忥細[1,2,3]銆傛寚瀹氬涓敤鎴稩D鏃讹紝鐢ㄩ�楀彿鍒嗛殧銆�")
private String userIds;
+
+ @Schema(description = "鐝粍鎴愬憳鐢ㄦ埛ID")
+ private Long teamUserId;
}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductionOrder.java
index e52ee9d..ecc3a71 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionOrder.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionOrder.java
@@ -88,4 +88,7 @@
@Schema(description = "鏄惁缁撴潫锛�")
@TableField("is_end_order")
private Boolean endOrder;
+
+ @Schema(description = "鐝粍闀縄D")
+ private Long teamLeaderUserId;
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductionOperationTaskService.java b/src/main/java/com/ruoyi/production/service/ProductionOperationTaskService.java
index 0945c6a..112a7a1 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionOperationTaskService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductionOperationTaskService.java
@@ -27,6 +27,13 @@
boolean assign(ProductionOperationTaskDto dto);
+ /**
+ * 鎸囨淳鐝粍鎴愬憳
+ * @param dto 宸ュ崟DTO
+ * @return 鏄惁鎴愬姛
+ */
+ boolean assignTeamUser(ProductionOperationTaskDto dto);
+
void down(HttpServletResponse response, ProductionOperationTaskDto dto);
List<ProductionOperationTaskVo> getOperation(ProductionOperationTaskDto dto);
diff --git a/src/main/java/com/ruoyi/production/service/ProductionTeamUserRelService.java b/src/main/java/com/ruoyi/production/service/ProductionTeamUserRelService.java
index cb28716..27d1416 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionTeamUserRelService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductionTeamUserRelService.java
@@ -1,7 +1,11 @@
package com.ruoyi.production.service;
-import com.ruoyi.production.pojo.ProductionTeamUserRel;
+import com.ruoyi.production.bean.vo.ProductionTeamVo;
+import com.ruoyi.production.bean.vo.TeamLeaderVo;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.production.pojo.ProductionTeamUserRel;
+
+import java.util.List;
/**
* <p>
@@ -13,4 +17,16 @@
*/
public interface ProductionTeamUserRelService extends IService<ProductionTeamUserRel> {
+ /**
+ * 鑾峰彇鎵�鏈夌彮缁勯暱闆嗗悎
+ * @return 鐝粍闀块泦鍚�
+ */
+ List<TeamLeaderVo> listAllLeaders();
+
+ /**
+ * 鏍规嵁鐝粍闀跨敤鎴稩D鑾峰彇鐝粍鎴愬憳鍒楄〃
+ * @param leaderUserId 鐝粍闀跨敤鎴稩D
+ * @return 鐝粍鎴愬憳鍒楄〃
+ */
+ List<ProductionTeamVo.MemberVo> listTeamMembersByLeader(Long leaderUserId);
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java
index 6e9457d..d374c50 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOperationTaskServiceImpl.java
@@ -126,6 +126,26 @@
return true;
}
+ @Override
+ public boolean assignTeamUser(ProductionOperationTaskDto dto) {
+ // 鎸囨淳鐝粍鎴愬憳
+ if (dto == null || dto.getId() == null) {
+ throw new ServiceException("宸ュ崟ID涓嶈兘涓虹┖");
+ }
+ if (dto.getTeamUserId() == null) {
+ throw new ServiceException("鐝粍鐢ㄦ埛ID涓嶈兘涓虹┖");
+ }
+
+ ProductionOperationTask update = new ProductionOperationTask();
+ update.setId(dto.getId());
+ update.setTeamUserId(dto.getTeamUserId());
+ int rows = baseMapper.updateById(update);
+ if (rows <= 0) {
+ throw new ServiceException("宸ュ崟涓嶅瓨鍦ㄦ垨宸插垹闄�");
+ }
+ return true;
+ }
+
private LambdaQueryWrapper<ProductionOperationTask> buildQueryWrapper(ProductionOperationTaskDto dto) {
// 鎸夋潯浠跺姩鎬佹瀯寤烘暟鎹簱鏌ヨ鏉′欢
ProductionOperationTask query = dto == null ? new ProductionOperationTask() : dto;
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java
index 554b95e..cadd817 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java
@@ -7,6 +7,7 @@
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.production.bean.dto.ProductionOrderPickDto;
import com.ruoyi.production.bean.vo.ProductionOrderPickVo;
@@ -61,6 +62,9 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean savePick(ProductionOrderPickDto dto) {
+ // 鏍¢獙褰撳墠鐢ㄦ埛蹇呴』涓鸿鍗曠彮缁勯暱
+ validateTeamLeader(dto);
+
// 棰嗘枡鏂板鎬绘祦绋嬶細
// 1) 瑙f瀽鍓嶇琛屾暟鎹苟閫愯鍚堝苟鍙傛暟锛�
// 2) 鏍¢獙鍙傛暟涓庢壒娆★紱
@@ -1178,4 +1182,36 @@
// 鏁伴噺鏍煎紡鍖栬緭鍑猴紙鍘婚櫎鏈熬鏃犳晥0锛夈��
return defaultDecimal(value).stripTrailingZeros().toPlainString();
}
+
+ /**
+ * 鏍¢獙褰撳墠鐢ㄦ埛蹇呴』涓鸿鍗曠彮缁勯暱
+ * @param dto 棰嗘枡DTO
+ */
+ private void validateTeamLeader(ProductionOrderPickDto dto) {
+ // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛ID
+ Long currentUserId = SecurityUtils.getLoginUser().getUserId();
+
+ // 鑾峰彇鐢熶骇璁㈠崟ID
+ Long productionOrderId = resolveProductionOrderId(dto);
+ if (productionOrderId == null) {
+ throw new ServiceException("鐢熶骇璁㈠崟ID涓嶈兘涓虹┖");
+ }
+
+ // 鏌ヨ鐢熶骇璁㈠崟
+ ProductionOrder productionOrder = productionOrderMapper.selectById(productionOrderId);
+ if (productionOrder == null) {
+ throw new ServiceException("鐢熶骇璁㈠崟涓嶅瓨鍦�");
+ }
+
+ // 鑾峰彇璁㈠崟鐨勭彮缁勯暱ID
+ Long teamLeaderUserId = productionOrder.getTeamLeaderUserId();
+ if (teamLeaderUserId == null) {
+ throw new ServiceException("璇ヨ鍗曟湭璁剧疆鐝粍闀�");
+ }
+
+ // 鏍¢獙褰撳墠鐢ㄦ埛鏄惁涓虹彮缁勯暱
+ if (!Objects.equals(currentUserId, teamLeaderUserId)) {
+ throw new ServiceException("褰撳墠鐢ㄦ埛涓嶆槸璇ヨ鍗曠殑鐝粍闀匡紝鏃犳硶杩涜棰嗘枡鎿嶄綔");
+ }
+ }
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionPlanServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionPlanServiceImpl.java
index b00266b..20e7eb7 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionPlanServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionPlanServiceImpl.java
@@ -151,6 +151,7 @@
productionOrder.setProductModelId(firstPlan.getProductModelId());
productionOrder.setQuantity(assignedQuantity);
productionOrder.setPlanCompleteTime(productionPlanDto.getPlanCompleteTime());
+ productionOrder.setTeamLeaderUserId(productionPlanDto.getLeaderId());
if (!productionOrderService.saveProductionOrder(productionOrder)) {
throw new ServiceException("涓嬪彂澶辫触锛岀敓浜ц鍗曚繚瀛樺け璐�");
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionTeamUserRelServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionTeamUserRelServiceImpl.java
index ff65c2c..2f1295e 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionTeamUserRelServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionTeamUserRelServiceImpl.java
@@ -1,11 +1,15 @@
package com.ruoyi.production.service.impl;
-import com.ruoyi.production.pojo.ProductionTeamUserRel;
+import com.ruoyi.production.bean.vo.ProductionTeamVo;
+import com.ruoyi.production.bean.vo.TeamLeaderVo;
import com.ruoyi.production.mapper.ProductionTeamUserRelMapper;
+import com.ruoyi.production.pojo.ProductionTeamUserRel;
import com.ruoyi.production.service.ProductionTeamUserRelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.RequiredArgsConstructor;
+import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
+
+import java.util.List;
/**
* <p>
@@ -15,8 +19,17 @@
* @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
* @since 2026-05-11 11:15:05
*/
+@AllArgsConstructor
@Service
-@RequiredArgsConstructor
public class ProductionTeamUserRelServiceImpl extends ServiceImpl<ProductionTeamUserRelMapper, ProductionTeamUserRel> implements ProductionTeamUserRelService {
+ @Override
+ public List<TeamLeaderVo> listAllLeaders() {
+ return baseMapper.selectAllLeaders();
+ }
+
+ @Override
+ public List<ProductionTeamVo.MemberVo> listTeamMembersByLeader(Long leaderUserId) {
+ return baseMapper.selectTeamMembersByLeader(leaderUserId);
+ }
}
diff --git a/src/main/resources/mapper/production/ProductionOperationTaskMapper.xml b/src/main/resources/mapper/production/ProductionOperationTaskMapper.xml
index 6db5455..0361192 100644
--- a/src/main/resources/mapper/production/ProductionOperationTaskMapper.xml
+++ b/src/main/resources/mapper/production/ProductionOperationTaskMapper.xml
@@ -25,6 +25,9 @@
select pot.*,
po.nps_no as npsNo,
po.is_end_order as endOrder,
+ po.team_leader_user_id as leaderUserId,
+ u.nick_name as leaderName,
+ teamUser.nick_name as teamUserName,
p.product_name as productName,
pm.model as model,
pm.unit as unit,
@@ -41,6 +44,8 @@
left join production_order_routing_operation poro on pot.production_order_routing_operation_id = poro.id
left join product_model pm on pm.id = ifnull(poro.product_model_id, po.product_model_id)
left join product p on pm.product_id = p.id
+ left join sys_user u on po.team_leader_user_id = u.user_id
+ left join sys_user teamUser on pot.team_user_id = teamUser.user_id
left join (
select ppm.production_operation_task_id as taskId,
sum(ifnull(ppo.scrap_qty, 0)) as scrapQty
diff --git a/src/main/resources/mapper/production/ProductionOrderMapper.xml b/src/main/resources/mapper/production/ProductionOrderMapper.xml
index 1a304ef..c4ae186 100644
--- a/src/main/resources/mapper/production/ProductionOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductionOrderMapper.xml
@@ -28,6 +28,7 @@
<result column="model" property="model" />
<result column="processRouteCode" property="processRouteCode" />
<result column="returned" property="returned" />
+ <result column="teamLeaderUserName" property="teamLeaderUserName" />
</resultMap>
<sql id="ProductionOrderVoColumns">
@@ -46,6 +47,8 @@
po.dept_id,
po.plan_complete_time,
po.status,
+ po.team_leader_user_id,
+ sl_user.nick_name as teamLeaderUserName,
po_sales.salesContractNo,
po_sales.customerName,
p.product_name as productName,
@@ -75,6 +78,7 @@
left join product p on pm.product_id = p.id
left join technology_routing tr on po.technology_routing_id = tr.id
left join technology_bom tb on tb.id = tr.bom_id
+ left join sys_user sl_user on sl_user.user_id = po.team_leader_user_id
left join (
select production_order_id as productionOrderId,
if(max(case when ifnull(is_returned, 0) = 1 then 1 else 0 end) = 1, true, false) as returned
diff --git a/src/main/resources/mapper/production/ProductionTeamUserRelMapper.xml b/src/main/resources/mapper/production/ProductionTeamUserRelMapper.xml
index deb74c8..cfa5063 100644
--- a/src/main/resources/mapper/production/ProductionTeamUserRelMapper.xml
+++ b/src/main/resources/mapper/production/ProductionTeamUserRelMapper.xml
@@ -13,4 +13,34 @@
<result column="update_time" property="updateTime" />
</resultMap>
+ <!-- 鏌ヨ鎵�鏈夌彮缁勯暱淇℃伅 -->
+ <select id="selectAllLeaders" resultType="com.ruoyi.production.bean.vo.TeamLeaderVo">
+ SELECT
+ rel.sys_user_id AS user_id,
+ u.nick_name,
+ rel.production_team_id,
+ t.team_name
+ FROM production_team_user_rel rel
+ LEFT JOIN sys_user u ON rel.sys_user_id = u.user_id
+ LEFT JOIN production_team t ON rel.production_team_id = t.id
+ WHERE rel.is_leader = 1
+ GROUP BY rel.sys_user_id, rel.production_team_id
+ </select>
+
+ <!-- 鏍规嵁鐝粍闀跨敤鎴稩D鏌ヨ鐝粍鎴愬憳鍒楄〃 -->
+ <select id="selectTeamMembersByLeader" resultType="com.ruoyi.production.bean.vo.ProductionTeamVo$MemberVo">
+ SELECT
+ rel.sys_user_id AS userId,
+ u.nick_name,
+ CASE WHEN rel.is_leader = 1 THEN TRUE ELSE FALSE END AS isLeader
+ FROM production_team_user_rel rel
+ LEFT JOIN sys_user u ON rel.sys_user_id = u.user_id
+ WHERE rel.production_team_id IN (
+ SELECT production_team_id
+ FROM production_team_user_rel
+ WHERE sys_user_id = #{leaderUserId} AND is_leader = 1
+ )
+ AND rel.is_leader = 0
+ </select>
+
</mapper>
--
Gitblit v1.9.3