From 32df8d143145865c984cd709a93aa4d230fee54c Mon Sep 17 00:00:00 2001
From: pangyang <475446853@qq.com>
Date: Wed, 25 Feb 2026 17:28:59 +0800
Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=E8=81=94?=
=?UTF-8?q?=E8=B0=83=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pojo/entity/OemCraftAbilityEntity.java | 80 +++++++++
.../desk/basic/pojo/entity/TeamSet.java | 4 +
blade-service-api/blade-system-api/pom.xml | 4 +
.../springblade/system/pojo/vo/DeptVO.java | 6 +-
.../springblade/system/feign/IUserClient.java | 7 +
.../CoatingThicknessController.java | 5 +
.../controller/CraftAbilityController.java | 18 ++
.../LocallyPlatedPartController.java | 4 +-
.../controller/MaterialQuotaController.java | 18 +-
.../desk/basic/controller/OemController.java | 40 ++++-
.../controller/PlanAssignSteerController.java | 51 +++++-
.../basic/controller/PlatingController.java | 27 ++-
.../controller/PlatingSmallController.java | 18 +-
.../basic/controller/ProdMarkController.java | 4 +-
.../basic/controller/TeamSetController.java | 32 +++-
.../controller/WorkCenterController.java | 37 ++++-
.../basic/excel/CoatingThicknessExcel.java | 6 +-
.../desk/basic/excel/CraftAbilityExcel.java | 3 +-
.../desk/basic/excel/MaterialQuotaExcel.java | 5 +-
.../basic/excel/PlanAssignSteerExcel.java | 20 ++-
.../desk/basic/excel/PlatingExcel.java | 8 +-
.../desk/basic/excel/PlatingSmallExcel.java | 5 +-
.../desk/basic/excel/ProdMarkExcel.java | 6 +-
.../desk/basic/excel/TeamSetExcel.java | 20 ++-
.../basic/mapper/OemCraftAbilityMapper.java | 40 +++++
.../basic/mapper/OemCraftAbilityMapper.xml | 27 +++
.../service/IOemCraftAbilityService.java | 47 ++++++
.../impl/OemCraftAbilityServiceImpl.java | 53 ++++++
.../main/resources/Excel/QA/外协分派.xls | Bin 0 -> 7680 bytes
.../resources/Excel/QA/局部镀零件.xls | Bin 0 -> 7168 bytes
.../main/resources/Excel/QA/工艺能力.xls | Bin 0 -> 7168 bytes
.../main/resources/Excel/QA/物料定额.xls | Bin 0 -> 7680 bytes
.../src/main/resources/Excel/QA/班组.xls | Bin 7680 -> 7680 bytes
.../main/resources/Excel/QA/生产标识.xls | Bin 0 -> 7680 bytes
.../main/resources/Excel/QA/镀种小类.xls | Bin 0 -> 7168 bytes
.../main/resources/Excel/QA/镀种维护.xls | Bin 0 -> 7680 bytes
.../system/controller/DeptController.java | 38 ++++-
.../system/controller/UserController.java | 31 +++-
.../springblade/system/feign/UserClient.java | 10 ++
.../system/service/IDeptService.java | 4 +-
.../system/service/impl/DeptServiceImpl.java | 155 +++++++++++++++++-
41 files changed, 767 insertions(+), 66 deletions(-)
create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/OemCraftAbilityEntity.java
create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/OemCraftAbilityMapper.java
create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/OemCraftAbilityMapper.xml
create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IOemCraftAbilityService.java
create mode 100644 blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/OemCraftAbilityServiceImpl.java
create mode 100644 blade-service/blade-desk/src/main/resources/Excel/QA/外协分派.xls
create mode 100644 blade-service/blade-desk/src/main/resources/Excel/QA/局部镀零件.xls
create mode 100644 blade-service/blade-desk/src/main/resources/Excel/QA/工艺能力.xls
create mode 100644 blade-service/blade-desk/src/main/resources/Excel/QA/物料定额.xls
create mode 100644 blade-service/blade-desk/src/main/resources/Excel/QA/生产标识.xls
create mode 100644 blade-service/blade-desk/src/main/resources/Excel/QA/镀种小类.xls
create mode 100644 blade-service/blade-desk/src/main/resources/Excel/QA/镀种维护.xls
diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/OemCraftAbilityEntity.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/OemCraftAbilityEntity.java
new file mode 100644
index 000000000..5740da813
--- /dev/null
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/OemCraftAbilityEntity.java
@@ -0,0 +1,80 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.basic.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+
+import java.io.Serial;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 工艺能力关联其他表 实体类
+ *
+ * @author BladeX
+ * @since 2025-12-22
+ */
+@Data
+@TableName("BS_OEM_CRAFT")
+@Schema(description = "BsCraftAbility对象")
+@EqualsAndHashCode(callSuper = true)
+public class OemCraftAbilityEntity extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+
+
+ @Schema(description = "面积")
+ private BigDecimal area;
+
+ @Schema(description = "数量")
+ private Integer quality;
+ @Schema(description = "批次")
+ private String batch;
+ @Schema(description = "饱和度")
+ private BigDecimal saturation;
+ @Schema(description = "计划员")
+ private Long planner;
+ @Schema(description = "调度员")
+ private Long dispatcher;
+ @Schema(description = "是否大批量 0:是 1:否")
+ private String isBatch;
+
+ private Long otherId;
+ private Long craftAbilityId;
+
+// @TableField(exist = false)
+ private String plannerName;
+// @TableField(exist = false)
+ private String dispatcherName;
+
+}
diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java
index 47355db96..f2b569046 100644
--- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java
+++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/basic/pojo/entity/TeamSet.java
@@ -177,4 +177,8 @@ public class TeamSet extends BaseEntity {
@TableField(exist = false)
private List teamTimes;
+
+ @TableField(exist = false)
+ private Long deptId;
+
}
diff --git a/blade-service-api/blade-system-api/pom.xml b/blade-service-api/blade-system-api/pom.xml
index 41c283a18..7dd6aa99f 100644
--- a/blade-service-api/blade-system-api/pom.xml
+++ b/blade-service-api/blade-system-api/pom.xml
@@ -18,6 +18,10 @@
org.springblade
blade-starter-cache
+
+ org.springblade
+ blade-user-api
+
diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/vo/DeptVO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/vo/DeptVO.java
index 1d36c2daf..dcaadfe0c 100644
--- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/vo/DeptVO.java
+++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/pojo/vo/DeptVO.java
@@ -33,7 +33,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tool.node.INode;
import org.springblade.system.pojo.entity.Dept;
-
+import org.springframework.boot.autoconfigure.security.SecurityProperties;
+import org.springblade.system.pojo.entity.User;
import java.io.Serial;
import java.util.ArrayList;
import java.util.List;
@@ -92,4 +93,7 @@ public class DeptVO extends Dept implements INode {
*/
private String deptCategoryName;
+ private List teamUnSelects;
+ private List teamSelects;
+
}
diff --git a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/feign/IUserClient.java b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/feign/IUserClient.java
index 8f630f047..0a86710e6 100644
--- a/blade-service-api/blade-user-api/src/main/java/org/springblade/system/feign/IUserClient.java
+++ b/blade-service-api/blade-user-api/src/main/java/org/springblade/system/feign/IUserClient.java
@@ -65,6 +65,8 @@ public interface IUserClient {
String USER_LIST = API_PREFIX + "/user-list";
String UN_SELECTUSER_LIST = API_PREFIX + "/unuser-list";
String SELECTUSER_LIST = API_PREFIX + "/unuser-listByName";
+ String SELECTUSER_LIST_NO_LIKE = API_PREFIX + "/unuser-listByNameNolike";
+
@GetMapping(USER_LIST)
List userListByIds(@RequestParam("userIds") String userIds);
@@ -75,6 +77,11 @@ public interface IUserClient {
@GetMapping(SELECTUSER_LIST)
List userListByName(@RequestParam("name") String name);
+ @GetMapping(SELECTUSER_LIST_NO_LIKE)
+ List listByNameNolike(@RequestParam("name") String name);
+
+
+
/**
* 获取用户信息
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java
index f334946e7..4e478666b 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CoatingThicknessController.java
@@ -263,6 +263,11 @@ public class CoatingThicknessController extends BladeController {
list.forEach(noticeExcel -> {
CoatingThickness notice = BeanUtil.copy(noticeExcel, CoatingThickness.class);
+ if("是".equals(noticeExcel.getStartF21e8Str())){
+ notice.setStartF21e8(1);
+ }else{
+ notice.setStartF21e8(0);
+ }
noticeList.add(notice);
});
return R.data(service.saveBatch(noticeList));
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java
index 50279f6ee..08251a4a8 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java
@@ -48,9 +48,13 @@ import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.excel.CraftAbilityExcel;
import org.springblade.desk.basic.pojo.vo.CraftAbilityVO;
import org.springblade.desk.basic.service.ICraftAbilityService;
+import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.CraftAbilityWrapper;
import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
+import org.springblade.system.cache.DictCache;
+import org.springframework.core.io.Resource;
+import org.springframework.http.ResponseEntity;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -115,6 +119,9 @@ public class CraftAbilityController extends BladeController {
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入CraftAbility")
public R> list(@Parameter(hidden = true) @RequestParam Map craftAbility, Query query) {
+
+
+
Date startTime = null;
Date endTime = null;
if(craftAbility.containsKey("startTime")){
@@ -252,6 +259,8 @@ public class CraftAbilityController extends BladeController {
list.forEach(noticeExcel -> {
CraftAbilityEntity notice = BeanUtil.copy(noticeExcel, CraftAbilityEntity.class);
+ String category = DictCache.getKey("ProcessCapabilityType", noticeExcel.getWtName());
+ notice.setWtId(Long.valueOf(category));
noticeList.add(notice);
});
return R.data(craftAbilityService.saveBatch(noticeList));
@@ -270,4 +279,13 @@ public class CraftAbilityController extends BladeController {
return R.data(list);
}
+ @GetMapping("/downloadExcelTemplate")
+ @ApiOperationSupport(order = 71)
+ @Operation(summary = "下载Excel模板", description = "")
+ public ResponseEntity downloadExcelTemplate() {
+ return ExcelExtUtil.downloadXlsTemplate(
+ "Excel/QA/工艺能力.xls",
+ "导入模版-工艺能力.xls");
+ }
+
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java
index 97d66db60..19da83f62 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/LocallyPlatedPartController.java
@@ -219,8 +219,8 @@ public class LocallyPlatedPartController extends BladeController {
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate(
- "Excel/QA/ImportTemplate-CycleTestItem.xls",
- "导入模版-周期试验项目.xls");
+ "Excel/QA/局部镀零件.xls",
+ "导入模版-局部镀零件.xls");
}
/**
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java
index 8725a1eed..950f2826a 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/MaterialQuotaController.java
@@ -33,9 +33,11 @@ import org.springblade.desk.basic.excel.MaterialQuotaExcel;
import org.springblade.desk.basic.pojo.entity.LocallyPlatedPart;
import org.springblade.desk.basic.pojo.entity.MaterialQuota;
import org.springblade.desk.basic.pojo.vo.MaterialQuotaVO;
+import org.springblade.desk.basic.service.ICraftAbilityService;
import org.springblade.desk.basic.service.IMaterialQuotaService;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.MaterialQuotaWrapper;
+import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -63,7 +65,8 @@ public class MaterialQuotaController extends BladeController {
@Resource
private IMaterialQuotaService service;
-
+ @Resource
+ private ICraftAbilityService craftAbilityService;
/**
* [物料定额] 详情
*/
@@ -226,8 +229,8 @@ public class MaterialQuotaController extends BladeController {
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate(
- "Excel/QA/ImportTemplate-CycleTestItem.xls",
- "导入模版-周期试验项目.xls");
+ "Excel/QA/物料定额.xls",
+ "导入模版-物料定额.xls");
}
/**
@@ -251,6 +254,15 @@ public class MaterialQuotaController extends BladeController {
list.forEach(noticeExcel -> {
MaterialQuota notice = BeanUtil.copy(noticeExcel, MaterialQuota.class);
+
+ //工艺能力
+ QueryWrapper queryWrapperCraft = new QueryWrapper<>();
+ queryWrapperCraft.eq("CA_NAME",noticeExcel.getProcessAbilityName());
+ List crafts = craftAbilityService.list(queryWrapperCraft);
+ if(null != crafts && crafts.size() > 0){
+ notice.setProcessAbilityId(crafts.get(0).getId());
+ }
+
noticeList.add(notice);
});
return R.data(service.saveBatch(noticeList));
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java
index 53dd1d9b6..4e739fd66 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/OemController.java
@@ -28,16 +28,19 @@ import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.constant.BaseCol;
import org.springblade.desk.basic.excel.OemExcel;
import org.springblade.desk.basic.pojo.entity.Oem;
+import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.pojo.request.OemSearch;
import org.springblade.desk.basic.pojo.vo.OemVO;
import org.springblade.desk.basic.service.ICraftAbilityService;
+import org.springblade.desk.basic.service.IOemCraftAbilityService;
import org.springblade.desk.basic.service.IOemService;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.OemWrapper;
import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
+import org.springframework.beans.BeanUtils;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -71,6 +74,8 @@ public class OemController extends BladeController {
private ICraftAbilityService craftAbilityService;
@Resource
private IUserClient iUserClient;
+ @Resource
+ private IOemCraftAbilityService oemCraftAbilityService;
/**
* [外协厂家] 详情
*/
@@ -98,10 +103,28 @@ public class OemController extends BladeController {
String result = null;
String craftAbility = null;
List names = new ArrayList<>();
-
+ //删除关联表数据
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("OTHER_ID",detail.getId());
+ oemCraftAbilityService.remove(queryWrapper);
if(null != crafs && crafs.size()>0){
+
for(CraftAbilityEntity craft:crafs){
- craftAbilityService.updateById(craft);
+ //生成关联表数据
+ OemCraftAbilityEntity oemCraftAbilityEntity = new OemCraftAbilityEntity();
+ oemCraftAbilityEntity.setOtherId(detail.getId());
+ oemCraftAbilityEntity.setCraftAbilityId(craft.getId());
+ oemCraftAbilityEntity.setArea(craft.getArea());
+ oemCraftAbilityEntity.setQuality(craft.getQuality());
+ oemCraftAbilityEntity.setBatch(craft.getBatch());
+ oemCraftAbilityEntity.setSaturation(craft.getSaturation());
+ oemCraftAbilityEntity.setPlanner(craft.getPlanner());
+ oemCraftAbilityEntity.setDispatcher(craft.getDispatcher());
+ oemCraftAbilityEntity.setIsBatch(craft.getIsBatch());
+ oemCraftAbilityService.save(oemCraftAbilityEntity);
+
+
+// craftAbilityService.updateById(craft);
CraftAbilityEntity craf = craftAbilityService.getById(craft.getId());
names.add(craf.getCaName());
}
@@ -146,11 +169,20 @@ public class OemController extends BladeController {
queryWrapper.in("id",ids);
teams = craftAbilityService.list(queryWrapper);
for(CraftAbilityEntity team:teams){
- R user= iUserClient.userInfoById(team.getDispatcher());
+
+ Long id = team.getId();
+ QueryWrapper queryWrapperOemCraft = new QueryWrapper<>();
+ queryWrapperOemCraft.eq("OTHER_ID",detail.getId());
+ queryWrapperOemCraft.eq("CRAFT_ABILITY_ID",team.getId());
+ OemCraftAbilityEntity craft = oemCraftAbilityService.getOne(queryWrapperOemCraft);
+
+ BeanUtils.copyProperties(craft,team);
+ team.setId(id);
+ R user= iUserClient.userInfoById(craft.getDispatcher());
if(null != user && null != user.getData()){
team.setDispatcherName(user.getData().getRealName());
}
- R userplan= iUserClient.userInfoById(team.getPlanner());
+ R userplan= iUserClient.userInfoById(craft.getPlanner());
if(null != userplan && null != userplan.getData()){
team.setPlannerName(userplan.getData().getRealName());
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java
index 4083c63dd..52b152252 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlanAssignSteerController.java
@@ -28,12 +28,17 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.excel.MaterialQuotaExcel;
import org.springblade.desk.basic.excel.PlanAssignSteerExcel;
-import org.springblade.desk.basic.pojo.entity.MaterialQuota;
-import org.springblade.desk.basic.pojo.entity.PlanAssignSteer;
+import org.springblade.desk.basic.pojo.entity.*;
import org.springblade.desk.basic.pojo.vo.PlanAssignSteerVO;
+import org.springblade.desk.basic.service.ICraftAbilityService;
+import org.springblade.desk.basic.service.ILocallyPlatedPartService;
+import org.springblade.desk.basic.service.IOemService;
import org.springblade.desk.basic.service.IPlanAssignSteerService;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.PlanAssignSteerWrapper;
+import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
+import org.springblade.system.feign.IUserClient;
+import org.springblade.system.pojo.entity.User;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -60,7 +65,15 @@ public class PlanAssignSteerController extends BladeController {
@Resource
private IPlanAssignSteerService service;
+ @Resource
+ private IUserClient iUserClient;
+ @Resource
+ private IOemService oemService;
+ @Resource
+ private ICraftAbilityService craftAbilityService;
+ @Resource
+ private ILocallyPlatedPartService partService;
/**
* [外协分派] 详情
*/
@@ -221,8 +234,8 @@ public class PlanAssignSteerController extends BladeController {
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate(
- "Excel/QA/ImportTemplate-CycleTestItem.xls",
- "导入模版-周期试验项目.xls");
+ "Excel/QA/外协分派.xls",
+ "导入模版-外协分派.xls");
}
/**
@@ -247,6 +260,36 @@ public class PlanAssignSteerController extends BladeController {
list.forEach(noticeExcel -> {
PlanAssignSteer notice = BeanUtil.copy(noticeExcel, PlanAssignSteer.class);
+
+ //维护人
+ List userPlanners = iUserClient.listByNameNolike(noticeExcel.getMaintainManName());
+ if(null != userPlanners && userPlanners.size() > 0){
+ notice.setMaintainMan(userPlanners.get(0).getId());
+ }
+
+ //供应商
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("OC_NAME",noticeExcel.getOemName());
+ List oems = oemService.list(queryWrapper);
+ if(null != oems && oems.size() > 0){
+ notice.setOemId(oems.get(0).getId());
+ }
+ //工艺能力
+ QueryWrapper queryWrapperCraft = new QueryWrapper<>();
+ queryWrapperCraft.eq("CA_NAME",noticeExcel.getPlatingName());
+ List crafts = craftAbilityService.list(queryWrapperCraft);
+ if(null != crafts && crafts.size() > 0){
+ notice.setPlatingId(crafts.get(0).getId());
+ }
+
+ //零件
+ QueryWrapper queryWrapperPart = new QueryWrapper<>();
+ queryWrapperPart.eq("NAME",noticeExcel.getDsPartName());
+ List parts = partService.list(queryWrapperPart);
+ if(null != parts && parts.size() > 0){
+ notice.setDsPart(parts.get(0).getId());
+ }
+
noticeList.add(notice);
});
return R.data(service.saveBatch(noticeList));
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java
index 1588a7360..ac867c38f 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingController.java
@@ -33,10 +33,14 @@ import org.springblade.desk.basic.constant.BaseCol;
import org.springblade.desk.basic.constant.BaseValue;
import org.springblade.desk.basic.excel.PlatingExcel;
import org.springblade.desk.basic.excel.PlatingSmallExcel;
+import org.springblade.desk.basic.pojo.entity.BasicClazz;
import org.springblade.desk.basic.pojo.entity.Plating;
import org.springblade.desk.basic.pojo.entity.PlatingSmall;
+import org.springblade.desk.basic.pojo.entity.Shifts;
import org.springblade.desk.basic.pojo.vo.PlatingVO;
+import org.springblade.desk.basic.service.IBasicClazzService;
import org.springblade.desk.basic.service.IPlatingService;
+import org.springblade.desk.basic.service.IPlatingSmallService;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.PlatingWrapper;
import org.springframework.http.ResponseEntity;
@@ -66,6 +70,12 @@ public class PlatingController extends BladeController {
@Resource
private IPlatingService service;
+ @Resource
+ private IBasicClazzService basicClazzService;
+
+ @Resource
+ private IPlatingSmallService platingSmallservice;
+
/**
* [镀种] 详情
*/
@@ -244,8 +254,8 @@ public class PlatingController extends BladeController {
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate(
- "Excel/QA/ImportTemplate-CycleTestItem.xls",
- "导入模版-周期试验项目.xls");
+ "Excel/QA/镀种维护.xls",
+ "导入模版-镀种维护.xls");
}
/**
@@ -269,6 +279,19 @@ public class PlatingController extends BladeController {
list.forEach(noticeExcel -> {
Plating notice = BeanUtil.copy(noticeExcel, Plating.class);
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("name",noticeExcel.getBcName());
+ List clazzes = basicClazzService.list(queryWrapper);
+ if(null != clazzes && clazzes.size() > 0){
+ notice.setBcId(clazzes.get(0).getId());
+ }
+
+ QueryWrapper queryWrapperSmall = new QueryWrapper<>();
+ queryWrapperSmall.eq("BPS_NAME",noticeExcel.getSubClassName());
+ List smalles = platingSmallservice.list(queryWrapperSmall);
+ if(null != smalles && smalles.size() > 0){
+ notice.setSubClass(smalles.get(0).getId());
+ }
noticeList.add(notice);
});
return R.data(service.saveBatch(noticeList));
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java
index 944a8b66d..a167dc215 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/PlatingSmallController.java
@@ -28,10 +28,13 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.excel.PlanAssignSteerExcel;
import org.springblade.desk.basic.excel.PlatingSmallExcel;
+import org.springblade.desk.basic.pojo.entity.BasicClazz;
import org.springblade.desk.basic.pojo.entity.PlanAssignSteer;
import org.springblade.desk.basic.pojo.entity.PlatingSmall;
+import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.pojo.vo.PlatingSmallVO;
import org.springblade.desk.basic.service.IPlatingSmallService;
+import org.springblade.desk.basic.service.IWorkCenterService;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.PlatingSmallWrapper;
import org.springframework.http.ResponseEntity;
@@ -62,6 +65,9 @@ public class PlatingSmallController extends BladeController {
@Resource
private IPlatingSmallService service;
+ @Resource
+ private IWorkCenterService workCenterService;
+
/**
* [镀种小类] 详情
*/
@@ -225,8 +231,8 @@ public class PlatingSmallController extends BladeController {
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate(
- "Excel/QA/ImportTemplate-CycleTestItem.xls",
- "导入模版-周期试验项目.xls");
+ "Excel/QA/镀种小类.xls",
+ "导入模版-镀种小类.xls");
}
/**
@@ -250,6 +256,14 @@ public class PlatingSmallController extends BladeController {
list.forEach(noticeExcel -> {
PlatingSmall notice = BeanUtil.copy(noticeExcel, PlatingSmall.class);
+
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("WC_NAME",noticeExcel.getWcName());
+ List centers = workCenterService.list(queryWrapper);
+ if(null != centers && centers.size() > 0){
+ notice.setWcId(centers.get(0).getId());
+ }
+
noticeList.add(notice);
});
return R.data(service.saveBatch(noticeList));
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java
index 55f0f2d99..bd94226e6 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/ProdMarkController.java
@@ -223,8 +223,8 @@ public class ProdMarkController extends BladeController {
@Operation(summary = "下载Excel模板", description = "")
public ResponseEntity downloadExcelTemplate() {
return ExcelExtUtil.downloadXlsTemplate(
- "Excel/QA/ImportTemplate-CycleTestItem.xls",
- "导入模版-周期试验项目.xls");
+ "Excel/QA/生产标识.xls",
+ "导入模版-生产标识.xls");
}
/**
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java
index 066aa2acc..6296b9de7 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/TeamSetController.java
@@ -27,11 +27,9 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.excel.PlatingSmallExcel;
import org.springblade.desk.basic.excel.TeamSetExcel;
-import org.springblade.desk.basic.pojo.entity.PlatingSmall;
-import org.springblade.desk.basic.pojo.entity.TeamSet;
-import org.springblade.desk.basic.pojo.entity.TeamTime;
-import org.springblade.desk.basic.pojo.entity.WorkCenter;
+import org.springblade.desk.basic.pojo.entity.*;
import org.springblade.desk.basic.pojo.vo.TeamSetVO;
+import org.springblade.desk.basic.service.IShiftsService;
import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.desk.basic.service.ITeamTimeService;
import org.springblade.desk.basic.util.ExcelExtUtil;
@@ -71,6 +69,9 @@ public class TeamSetController extends BladeController {
@Resource
private ITeamTimeService teamTimeService;
+ @Resource
+ private IShiftsService shiftService;
+
/**
* [班组] 详情
*/
@@ -484,6 +485,29 @@ public class TeamSetController extends BladeController {
list.forEach(noticeExcel -> {
TeamSet notice = BeanUtil.copy(noticeExcel, TeamSet.class);
+
+ List userPlanners = iUserClient.listByNameNolike(noticeExcel.getPlannerName());
+ if(null != userPlanners && userPlanners.size() > 0){
+ notice.setPlanner(userPlanners.get(0).getId());
+ }
+
+ List userDispatchers = iUserClient.listByNameNolike(noticeExcel.getDispatcherName());
+ if(null != userDispatchers && userDispatchers.size() > 0){
+ notice.setDispatcher(userDispatchers.get(0).getId());
+ }
+
+ List userLeaders = iUserClient.listByNameNolike(noticeExcel.getTeamLeaderName());
+ if(null != userLeaders && userLeaders.size() > 0){
+ notice.setTeamLeader(userLeaders.get(0).getId());
+ }
+
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("name",noticeExcel.getCsName());
+ List shifts = shiftService.list(queryWrapper);
+ if(null != shifts && shifts.size() > 0){
+ notice.setCsId(shifts.get(0).getId());
+ }
+
noticeList.add(notice);
});
return R.data(service.saveBatch(noticeList));
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java
index 2c6f55d60..080bd08c6 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkCenterController.java
@@ -25,17 +25,21 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.basic.constant.BAModuleConst;
import org.springblade.desk.basic.excel.WorkCenterExcel;
+import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity;
import org.springblade.desk.basic.pojo.entity.PlatingSmall;
import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.pojo.vo.WorkCenterVO;
import org.springblade.desk.basic.service.ICraftAbilityService;
+import org.springblade.desk.basic.service.IOemCraftAbilityService;
import org.springblade.desk.basic.service.ITeamSetService;
import org.springblade.desk.basic.service.IWorkCenterService;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.WorkCenterWrapper;
import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
import org.springblade.scheduling.pojo.entity.TeamSetEntity;
+import org.springblade.system.pojo.entity.User;
+import org.springframework.beans.BeanUtils;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -66,7 +70,8 @@ public class WorkCenterController extends BladeController {
private ITeamSetService teamService;
@Resource
private ICraftAbilityService craftAbilityService;
-
+ @Resource
+ private IOemCraftAbilityService oemCraftAbilityService;
/**
* [作业中心] 详情
@@ -211,6 +216,18 @@ public class WorkCenterController extends BladeController {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.in("id",ids);
teams = craftAbilityService.list(queryWrapper);
+ for(CraftAbilityEntity team:teams){
+
+ Long id = team.getId();
+ QueryWrapper queryWrapperOemCraft = new QueryWrapper<>();
+ queryWrapperOemCraft.eq("OTHER_ID",detail.getId());
+ queryWrapperOemCraft.eq("CRAFT_ABILITY_ID",team.getId());
+ OemCraftAbilityEntity craft = oemCraftAbilityService.getOne(queryWrapperOemCraft);
+
+ BeanUtils.copyProperties(craft,team);
+ team.setId(id);
+
+ }
}
}
return R.data(teams);
@@ -260,9 +277,25 @@ public class WorkCenterController extends BladeController {
String result = null;
String craftAbility = null;
List names = new ArrayList<>();
+ //删除关联表数据
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("OTHER_ID",detail.getId());
+ oemCraftAbilityService.remove(queryWrapper);
if(null != crafs && crafs.size()>0){
for(CraftAbilityEntity craft:crafs){
- craftAbilityService.updateById(craft);
+ //生成关联表数据
+ OemCraftAbilityEntity oemCraftAbilityEntity = new OemCraftAbilityEntity();
+ oemCraftAbilityEntity.setOtherId(detail.getId());
+ oemCraftAbilityEntity.setCraftAbilityId(craft.getId());
+ oemCraftAbilityEntity.setArea(craft.getArea());
+ oemCraftAbilityEntity.setQuality(craft.getQuality());
+ oemCraftAbilityEntity.setBatch(craft.getBatch());
+ oemCraftAbilityEntity.setSaturation(craft.getSaturation());
+ oemCraftAbilityEntity.setPlanner(craft.getPlanner());
+ oemCraftAbilityEntity.setDispatcher(craft.getDispatcher());
+ oemCraftAbilityEntity.setIsBatch(craft.getIsBatch());
+ oemCraftAbilityService.save(oemCraftAbilityEntity);
+// craftAbilityService.updateById(craft);
CraftAbilityEntity craf = craftAbilityService.getById(craft.getId());
names.add(craf.getCaName());
}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/CoatingThicknessExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/CoatingThicknessExcel.java
index 45eb845fd..5268db504 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/CoatingThicknessExcel.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/CoatingThicknessExcel.java
@@ -50,9 +50,13 @@ public class CoatingThicknessExcel implements Serializable {
/**
* 是否以21E8-210开头
*/
+// @ColumnWidth(20)
+// @ExcelProperty("是否以21E8-210开头")
+ private Short startF21e8;
+
@ColumnWidth(20)
@ExcelProperty("是否以21E8-210开头")
- private Short startF21e8;
+ private String startF21e8Str;
/**
* 厚度
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/CraftAbilityExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/CraftAbilityExcel.java
index 7764ca252..15e9d1201 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/CraftAbilityExcel.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/CraftAbilityExcel.java
@@ -75,7 +75,8 @@ public class CraftAbilityExcel implements Serializable {
*/
@ColumnWidth(20)
@ExcelProperty("能力类型")
- private Long wtId;
+// private Long wtId;
+ private String wtName;
/**
* 设备名称
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/MaterialQuotaExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/MaterialQuotaExcel.java
index 91e08eb34..3f7110e94 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/MaterialQuotaExcel.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/MaterialQuotaExcel.java
@@ -46,8 +46,9 @@ public class MaterialQuotaExcel implements Serializable {
* [工艺能力]id
*/
@ColumnWidth(20)
- @ExcelProperty("[工艺能力]id")
- private BigDecimal processAbilityId;
+ @ExcelProperty("工艺能力")
+// private BigDecimal processAbilityId;
+ private String processAbilityName;
/**
* 镀层厚度
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlanAssignSteerExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlanAssignSteerExcel.java
index 6a70a2149..873b6b32a 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlanAssignSteerExcel.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlanAssignSteerExcel.java
@@ -32,23 +32,26 @@ public class PlanAssignSteerExcel implements Serializable {
private static final long serialVersionUID = 1L;
/**
- * [外协厂家]id
+ * [供应商]id
*/
@ColumnWidth(20)
- @ExcelProperty("[外协厂家]id")
- private Long oemId;
+ @ExcelProperty("供应商")
+// private Long oemId;
+ private String oemName;
/**
* [工艺能力]id
*/
@ColumnWidth(20)
- @ExcelProperty("[工艺能力]id")
- private Long platingId;
+ @ExcelProperty("工艺能力")
+// private Long platingId;
+ private String platingName;
/**
* 零件;外键(dsPart)
*/
@ColumnWidth(20)
- @ExcelProperty("零件;外键(dsPart)")
- private Long dsPart;
+ @ExcelProperty("零件")
+// private Long dsPart;
+ private String dsPartName;
/**
* 分派比例
*/
@@ -78,7 +81,8 @@ public class PlanAssignSteerExcel implements Serializable {
*/
@ColumnWidth(20)
@ExcelProperty("维护人")
- private Long maintainMan;
+// private Long maintainMan;
+ private String maintainManName;
/**
* 维护时间
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlatingExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlatingExcel.java
index bb9914171..141d97d2c 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlatingExcel.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlatingExcel.java
@@ -46,8 +46,9 @@ public class PlatingExcel implements Serializable {
* [镀种分类]id
*/
@ColumnWidth(20)
- @ExcelProperty("[镀种分类]id")
- private BigDecimal bcId;
+ @ExcelProperty("[镀种分类]")
+// private BigDecimal bcId;
+ private String bcName;
/**
* 镀种
*/
@@ -83,7 +84,8 @@ public class PlatingExcel implements Serializable {
*/
@ColumnWidth(20)
@ExcelProperty("镀种小类")
- private Long subClass;
+// private Long subClass;
+ private String subClassName;
/**
* 其他要求
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlatingSmallExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlatingSmallExcel.java
index 38df32751..07dd190fb 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlatingSmallExcel.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/PlatingSmallExcel.java
@@ -46,8 +46,9 @@ public class PlatingSmallExcel implements Serializable {
* [作业中心]id
*/
@ColumnWidth(20)
- @ExcelProperty("[作业中心]id")
- private Long wcId;
+ @ExcelProperty("[作业中心]")
+// private Long wcId;
+ private String wcName;
/**
* 排序
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/ProdMarkExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/ProdMarkExcel.java
index da58e84c2..3d72b0b99 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/ProdMarkExcel.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/ProdMarkExcel.java
@@ -33,7 +33,7 @@ public class ProdMarkExcel implements Serializable {
* 编码
*/
@ColumnWidth(20)
- @ExcelProperty("编码")
+ @ExcelProperty("生产标识")
private String code;
/**
* 类型
@@ -51,13 +51,13 @@ public class ProdMarkExcel implements Serializable {
* 是否高级
*/
@ColumnWidth(20)
- @ExcelProperty("是否高级")
+ @ExcelProperty("是否高级-[1]:是;[0]:否;")
private String senior;
/**
* 镀金标识
*/
@ColumnWidth(20)
- @ExcelProperty("镀金标识")
+ @ExcelProperty("镀金标识-[1]:是;[0]:否;")
private String goldMark;
/**
* 是否军品-[1]:是;[0]:否;
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/TeamSetExcel.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/TeamSetExcel.java
index af5ad6ab1..30d9d7ccc 100644
--- a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/TeamSetExcel.java
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/TeamSetExcel.java
@@ -46,19 +46,22 @@ public class TeamSetExcel implements Serializable {
*/
@ColumnWidth(20)
@ExcelProperty("调度员")
- private Long dispatcher;
+// private Long dispatcher;
+ private String dispatcherName;
/**
* 班组长;外键(人员)
*/
@ColumnWidth(20)
@ExcelProperty("班组长;外键(人员)")
- private Long teamLeader;
+// private Long teamLeader;
+ private String teamLeaderName;
/**
* 班次;外键(班次)
*/
@ColumnWidth(20)
@ExcelProperty("班次;外键(班次)")
- private Long csId;
+// private Long csId;
+ private String csName;
/**
* 日分派时间
*/
@@ -70,7 +73,8 @@ public class TeamSetExcel implements Serializable {
*/
@ColumnWidth(20)
@ExcelProperty("创建人;外键(人员)")
- private Long createMan;
+// private Long createMan;
+ private String createManName;
/**
* 删除标记;1:删除,0:正常
*/
@@ -82,7 +86,8 @@ public class TeamSetExcel implements Serializable {
*/
@ColumnWidth(20)
@ExcelProperty("作业中心")
- private Long wcId;
+// private Long wcId;
+ private String wcName;
/**
*
*/
@@ -93,8 +98,9 @@ public class TeamSetExcel implements Serializable {
*
*/
@ColumnWidth(20)
- @ExcelProperty("")
- private Long planner;
+ @ExcelProperty("计划员")
+// private Long planner;
+ private String plannerName;
/**
*
*/
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/OemCraftAbilityMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/OemCraftAbilityMapper.java
new file mode 100644
index 000000000..dd0b04137
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/OemCraftAbilityMapper.java
@@ -0,0 +1,40 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.basic.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity;
+
+/**
+ * 工艺能力 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2025-12-22
+ */
+public interface OemCraftAbilityMapper extends BaseMapper {
+
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/OemCraftAbilityMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/OemCraftAbilityMapper.xml
new file mode 100644
index 000000000..809bc50c0
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/OemCraftAbilityMapper.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select * from BS_OEM_CRAFT where is_deleted = 0
+
+
+
+
+ SELECT * FROM BS_OEM_CRAFT ${ew.customSqlSegment}
+
+
+
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IOemCraftAbilityService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IOemCraftAbilityService.java
new file mode 100644
index 000000000..7af416a46
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IOemCraftAbilityService.java
@@ -0,0 +1,47 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.basic.service;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseService;
+import org.springblade.desk.basic.excel.CraftAbilityExcel;
+import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity;
+import org.springblade.desk.basic.pojo.vo.CraftAbilityVO;
+import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
+
+import java.util.List;
+
+/**
+ * 工艺能力 服务类
+ *
+ * @author BladeX
+ * @since 2025-12-22
+ */
+public interface IOemCraftAbilityService extends BaseService {
+
+
+}
diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/OemCraftAbilityServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/OemCraftAbilityServiceImpl.java
new file mode 100644
index 000000000..9954e08a8
--- /dev/null
+++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/OemCraftAbilityServiceImpl.java
@@ -0,0 +1,53 @@
+/**
+ * BladeX Commercial License Agreement
+ * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
+ *
+ * Use of this software is governed by the Commercial License Agreement
+ * obtained after purchasing a license from BladeX.
+ *
+ * 1. This software is for development use only under a valid license
+ * from BladeX.
+ *
+ * 2. Redistribution of this software's source code to any third party
+ * without a commercial license is strictly prohibited.
+ *
+ * 3. Licensees may copyright their own code but cannot use segments
+ * from this software for such purposes. Copyright of this software
+ * remains with BladeX.
+ *
+ * Using this software signifies agreement to this License, and the software
+ * must not be used for illegal purposes.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
+ * not liable for any claims arising from secondary or illegal development.
+ *
+ * Author: Chill Zhuang (bladejava@qq.com)
+ */
+package org.springblade.desk.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.desk.basic.excel.CraftAbilityExcel;
+import org.springblade.desk.basic.mapper.CraftAbilityMapper;
+import org.springblade.desk.basic.mapper.OemCraftAbilityMapper;
+import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity;
+import org.springblade.desk.basic.pojo.vo.CraftAbilityVO;
+import org.springblade.desk.basic.service.ICraftAbilityService;
+import org.springblade.desk.basic.service.IOemCraftAbilityService;
+import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 工艺能力 服务实现类
+ *
+ * @author BladeX
+ * @since 2025-12-22
+ */
+@Service
+public class OemCraftAbilityServiceImpl extends BaseServiceImpl implements IOemCraftAbilityService {
+
+
+}
diff --git a/blade-service/blade-desk/src/main/resources/Excel/QA/外协分派.xls b/blade-service/blade-desk/src/main/resources/Excel/QA/外协分派.xls
new file mode 100644
index 0000000000000000000000000000000000000000..0ea58d31cf44b68b7c89947730f0029491a0ca00
GIT binary patch
literal 7680
zcmeI0ZERe{6^75f-d*pSBz9tld=+uz;~H>w+)gHdUnNm1Ns#MHK$7TUx93mI+5bG*}iSJ@Ede%
ze=SzH*{z8yg4_2?cGZCUxn;gPQQpOrt$x`{jWHoWt#zN0j~g?31rH8
z&;VwG3&9*P7t90m!2<9Za1m$(p9N{~InV?y2A6<^;8L&%G=mn<3KoMU;4-ijECb6y
z8(0BWg3G}w@OhvZ)ec<^t^{jxytUAEpaXP*F0dX*z8ks$$Z5X-HiB!x7s0t2^HNEy
zn26gm(_gGU+DQ?Icmt0(5NL4tzHg^1H^#OSI$FH4a%#jcr$BAx9(_9|y0ZK{{B%o=
zwNP1kIj^{bAT{}vXkK3<6tj`;6rXLu0D(E*N-bDvfZ$xnA7Hf`
zW2^DZ`K7x|`bfFXYw*qm#hs%;m)7cAz3vTYPEXZ+su4^+XxzQW%>J3x`z=aiY4HQ9
zj(?&uzG74<`Eq#VPkQtPjCfaCwm2~WuDY*3otQih)@!*4Ca
z*L#F>&V);hr4NLhmok<;5YB;}vY`FO=YPJP
zhrH|g9SxGe?C#4$!kn}p4r07qgV^CpW=K^sT$)mEHS$=(~6Gll?olEW6|2elcJAC9Fi>_kWPj
z;-xO(p5FJjjbGo}&!bQL@X?{C^&k~aj-0qpT1NZ>vW%g|Rx&ruMPu>Dm%54L3$I4I
zAk;zBC(V5!-?A?wJe_$4^bC1L*1GacH}g8?`Qf3z|K%$~y&c;fzt!;T{`ss#7Y0u<(E!KztgcOuiQLQKHkxiS3ZahQjF?@ziGW?4YMQh
ze*WVf5e@7*T9S5$n>(IYuQ|kAUA-QdF`D1*
z9Taly7V5a~J;JYfGW5HkhBfd_wRYNB!yo-ER}1(MkbrLsscB}uRz*#p9KIH#rZx4o
zI5h&agH$E-)4L*D%NL{LMd3_3W(sEpM*Hi=KFOIXrzE
z>aIiWj{s8UaWaLrBS1mzS)iHx2`G@g4itsn0Wy*fk1ovc5CyDhP|aX2RP(+Bs(Y5@
zP`&rBf+`4agzDa<7pll}15|e}H$gR~eNZUO-TMxHkH#5c^
z9I4XQy6Ndn8%Oi|m9wALAw2ftv4@u~s5|g0?6>69;cj^GBHjR#(Yk9rA+`^YGWU>a
z9KQy7)}uf+kd0+a*;woMJkTB33qW&u1+e@!4rFWDT(&+AWNRHLBrD)u`xz5?)?jUu&v*%;pN47I+-8)9fk80}tYMPHn6PQ}GqSi>a
zXhj{)ve2hpf8-bL8-ulp=)IKX%Sz2aCL2(N{V_}?fBiZTUuDIdFX2Bu?A=kkY8bED
xfk&-}?m}{y504RAluG%!_TUPxqE?Y#X6@Ybwt?kfC8gEwF4uKFpPjW8_z&btS~vgz
literal 0
HcmV?d00001
diff --git a/blade-service/blade-desk/src/main/resources/Excel/QA/局部镀零件.xls b/blade-service/blade-desk/src/main/resources/Excel/QA/局部镀零件.xls
new file mode 100644
index 0000000000000000000000000000000000000000..a1dd46473553507fde28b609d05474dacae17a6d
GIT binary patch
literal 7168
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
diff --git a/blade-service/blade-desk/src/main/resources/Excel/QA/生产标识.xls b/blade-service/blade-desk/src/main/resources/Excel/QA/生产标识.xls
new file mode 100644
index 0000000000000000000000000000000000000000..2e4316fd70cad3d0fe53c021c3ffe02fe92acbe4
GIT binary patch
literal 7680
zcmeHLYitx%6h5<^w%gLuC$tnPYoVnN=nE=^0^MS(7?C1WA+`uDr9x0J4H)^Mt|$gY
z3{-7ES5~1t&o!RL=*lCvpOlY{f-#vHE
zoO{o`=iE7S=6>^aM&JGq^Ug^`nI~~F;7^i-5Waynp(S0!g$Az&{C>a16hZS=xrr=r
z1#?Xa_|OE62k7%ezzrk;$-pQe6`-$)TV-TeV2NzRZe*x2%^AoyYo6@tE3~;xcUgq%n1Z&}?pI
zlqP8bp2W%!qt4R$
z1C=_a^<3SJ*ozM}7SjLBP?o#ADz{VX0>DPt-QIzrX%`!xREHMh?SAPK>gsH$JZ01)}&EG1?HAL%mc2FSQ{!hx6ND?R;|T
zAIW?}^9Zhx#j-QMLZaE9d4Tf&QQ<*(<_6LEB@X-~2Y#sopYIXmIg0~&&9R<6F62u-
z@$YfvU`h5MAkaqE4yT869q`eDon(CUXs@UbEM4dBJNJ?u;u4UdO?+Cju}XmgyOQ5HZvCy3QcXSZ8McrhP8I@BiwR9Db4GiRlTPO8nncPXuiJd~#Wa
zq^9(#(8V+c*d+O`LF6TTZu8oRxORnH>)T0tUTZY~+azls3Gc~i_HBFn&r8i~)8F6i
zma-{Ff2stJ-)1~(;Qe<16yJNO7>bSn3_`~MhUhN=W)f!sMxyfooy6o#Lk$Mu`DO|z
zSC9+Jbx#K6IY%WZ->-8(88jDw^4w!FD5KAEP@a9P0_B{xgX%n>oYy9l@SFo|Es<@`
ztpz7M?ST`X$oo$HqVc`d(35iLP))PJw(ruu#DwmX+7|zDJ$EDDmZ6xVy8vw^T0MG~YF?~rN(|#uao=gJakKl?h=mo{%Ws<|A-wCSs8b1f{z0Cl$U0`}=d#rZx8kk2;v
z+`aHxGkn*LLz+&UEUrc(Iv;c$Bs-D#t-&1@d#&-(2+7rY2Fc@{P1krHS&NZ)?r0Ys
ze3+^M_xo)F4kH`OZCf{KEb`Y|=4RF(8mIUSRwHq*K|Kwpr{zfK`CVL&)72`Rr1C8F
JRvB3q_zyc7L$3e;
literal 0
HcmV?d00001
diff --git a/blade-service/blade-desk/src/main/resources/Excel/QA/镀种小类.xls b/blade-service/blade-desk/src/main/resources/Excel/QA/镀种小类.xls
new file mode 100644
index 0000000000000000000000000000000000000000..f37c5638cd7f9ec26ed6485021a74a0787e84c68
GIT binary patch
literal 7168
zcmeHLU2IfE6h8O%w%r1yzm!s>EQLb5_E{r#}QI@Jj|TVw;$n@rKT
zaZz~uT)V@SKL=%d!tzOIG4_9`^-mu`m8AlsfiwVHfY6MYKo*b
z1NQ(EfP7#g;0GoF1;Aur3Q!141*QQ-Krv7PlmcbIbYKQB6DS8N0Q#gV&{;q=Fgwhv
z0i6rX18RZ!zyg5f>p<&)MZjXygBSIENW=)aliE
z@iX)hkSAe#YpHZ$DsGmi0ROEHi?t8!mJRuws|&0ovA|2fj3N)~9&wh&A8M)N8ZXe<
zh`IPkLm}-?mg3e4Yrln*_-2l6EOMXan>+FF}$7C+x9
z#cIzIt3b|&3NYczfXSG|wPH8{OzuH$zEh2jI5%GLHdzK!bjm7^igU1gkGrT|2sXC593;
z6W)4^SOGZTNGlb?N&z_GXnp|N&UfZwX6D7OGB`)PD%WCmj*qSEb~?UP^VP_1gk=9v
z)racAU_*VnUy1w?;y&hv9zXdOvdaH`czpVzc;&tLY&Bl_JDG3kd4VHjFnZ>`u6p>>
za0mHi9{geteu@Xb#DmX$0q2&Muv{m{zt_h3CnzD(^k9P0jG&`5Gnk|_E10M>JD40=
zW6`=hFk2?^qJ*8ZRo25Vcj44lq5L0sd5Yp!Dt|H$Q&IdX+3(8*$TxvAkb!5eT{xLN
zj9;(i14MSuvf;BR{fOmYN3@(H*d5JXd@LNeh2H>fYL{_J;<=8%ZkM{ee_OIx=euei
zJ^9kat%sVf1m9eSUA0XD&3R4Jn?7H?NKE;X-D|KL@hlurBj$8zv^x8Yr#-`@ccg6|`uBRUFjuQ(3S0e=DTJ@70*
zuXF*Rk$5Olw}VEw#f<{xNOD0r{wbh*CnyKyRyQA%E^`Se-wj$o>4{c?^6g*^DEqV%
zRQmzp%sUXmcLK0A#HQJ|<#-`!55JJae)p;uk6%v-J);gEu5PxN4qiHtoYZ~Fq?b<7
zcPsMUGSm}8EM*@!#uYePw2EJv@tU&^eO!xkfnQ3RK5bgk9a+!Ie$<0~=Jc5ZGsdUy
zeI52IyL6-hyu=t@0E404sZS8u2_OXbAYwn>0NB>M0Bt}U)0VU`^_PfOkIm>E-=KKC
z-*SWRQ8j3t?@n$&lh+O0?E2Z+n-pBxq&KO_8*1iumVXi>G7Eh^I>p
U-YF}9a-a&Sx%w8VmH$K0-#HL2uK)l5
literal 0
HcmV?d00001
diff --git a/blade-service/blade-desk/src/main/resources/Excel/QA/镀种维护.xls b/blade-service/blade-desk/src/main/resources/Excel/QA/镀种维护.xls
new file mode 100644
index 0000000000000000000000000000000000000000..c1142ba392306a6a4a8871ee702dd90c0d1ac815
GIT binary patch
literal 7680
zcmeI0e~eUD701te`*wC_e{`20r4;Ns-Il^GTgvjIKq=j21*J-NDO;tHY0J`GS^@>L
z!3NS_Q?;gAo3v?-LYin3Z6qd$Ho-*u$CCJmQHZ9BM$*%q{q*)H4e`mw9LdQIi&
z76!3?(V7}j>6n6)AFTYyaia^(y#
z6I=;qfvdo5a5b0%=7NuaYd|~rD9D0qK?k@FTo2}f8^C<90Ca*bun=^E8^I!Q6Icv-
zz!I<&ECb8I%|L6^O6V$Z3s_y0t%2SKdO;sp3;KcTuY;}!3ffPA4d8b0NpPvId6_g`
zOx4>@TTV6{@1saSyh%hHjgGsx_!DE#+2^d;f{ivxDDJg~LH2`A{jLwgL5P0E>Y5;B
z0kS$GN;2j>`3#r;z}0%q}LcOM3MITy#tFIQ(#{^>wncE%CS>V9D#LHm=Ioy?b=kYD}f-CRXb!Ey%F|mwTxbFXdQ-C(CnKyFFS(WX`GH
zq!c4bjaL($b1NIiovyCcKlQrTqd7ZO^Qn4JdeMa2ugv~g&^{KY@vP(ltdswvHo4ZK
zYW0)kdTX`%m$E!?=LL;W$=g}`y0gQ-ytE|mPLOvd$TJD@t^~RE1YK1H-VrVk}{&LMk{b$OIiTaS}x_0cp*
zzQoCQ=^!;pzSIt-X9LN7QUofg>eo1#eTLuhAPvl(T^6!tN&Ar?Vn+<3BkYd;Tl^{(
z@POZWzS7>dXWV&BXEtiBeQ4S4vqKc_cz(|l!G8ABt=9MTlLu0pA9?g1UKfagYG=HWqAi(vt^TbB{bq@!>mvH}K?F`ga%W{(0c+P_ejk?BHmz
zcxdRAdkcI>w%BRDEHx;7RQkh5+l9ji8=f_VI!5{=Bg~`zFR9$39?~*o<7;*0Y2-SD
zrtR&+e|!Co?VEb~&UTzD4*%=EGxf^Gcxq*>{~Lt`eb&rek=cp-k1jVX`ZC*F*kzHPPA$ak>gVgJKtF1
z8}#wrQsUFJ+tF0wGick`T;dzC;;C=_{oLS#ZQp-BZ42kW`iI5H^lhlS
z4n6-iAmzVDrp53m&@%WM&;s~#pr!8(pw;L!kdt(%bjuAd(Gu4T)ktPTHU8_N+Oro!
zwancL)v~<-s(Y7BP_00BLv{DE4XQpp4R!rMx%dbrx@SS`Qe|0vyNes9;o=Qb<@2O=
z)#QEBFy4Il@bbYx<@~vq8d75?T-hFf%ia4)9@mkblq#wEpfPUYXf|Y78{{@@2YtMs
zb5+*527WTIVXVAelK*6f@YKmuFD;te_QE&tU-!8q>yXt~$Z`xuc9%UN_B0^npCeO0
zz6tcM?*REgK9(=#W7+R#KzCp#fX4D$fcafK%h&R`e0>JU*E;CBs70B4n=a~ZgT5c%
zsjo_v_KW#)U&gX(w4Qsuw;q%35> listDeptTeamSet(@Parameter(hidden = true) @RequestParam Map dept, BladeUser bladeUser) {
+ QueryWrapper queryWrapper = Condition.getQueryWrapper(dept, Dept.class);
+ List list = deptService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Dept::getTenantId, bladeUser.getTenantId()) : queryWrapper);
+ return R.data(DeptWrapper.build().listNodeVO(list));
+ }
+
+
+
+
+
/**
* 懒加载列表
*/
@@ -147,6 +171,18 @@ public class DeptController extends BladeController {
return R.data(tree);
}
+
+ @GetMapping("/findUserByTeam")
+ @ApiOperationSupport(order = 5)
+ @Operation(summary = "懒加载树形结构", description = "树形结构")
+ public R findUserByTeam(Long teamSetId) {
+
+
+ Map map = deptService.findUserByTeam(teamSetId);
+ return R.data(map);
+ }
+
+
/**
* 新增或修改
*/
diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java
index 7de4aae17..cdaeb5d13 100644
--- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java
+++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserController.java
@@ -66,6 +66,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -101,10 +102,12 @@ public class UserController {
@PostMapping("/getUnSelectUser")
@ApiOperationSupport(order = 31)
@Operation(summary = "获取未选择人员", description = "传入WorkCenter List")
- public R> getUnSelectUser(@Valid @RequestBody TeamSet teamSet) {
- List teams = new ArrayList<>();
-// QueryWrapper qw = Condition.getQueryWrapper(teamSet);
-// TeamSet detail = service.getOne(qw);
+ public R getUnSelectUser(@Valid @RequestBody TeamSet teamSet) {
+
+ Map map = new HashMap<>();
+
+ List teamUnSelects = new ArrayList<>();
+ List teamSelects = new ArrayList<>();
TeamSet detail = workCenterClient.getTeamSetById(teamSet.getId()).getData();
@@ -115,13 +118,26 @@ public class UserController {
List ids = Func.toLongList(teamId);
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.notIn("id",ids);
- teams = userService.list(queryWrapper);
+ queryWrapper.eq("dept_id",teamSet.getDeptId());
+ teamUnSelects = userService.list(queryWrapper);
}else{
QueryWrapper queryWrapper = new QueryWrapper<>();
- teams = userService.list(queryWrapper);
+ queryWrapper.eq("dept_id",teamSet.getDeptId());
+ teamUnSelects = userService.list(queryWrapper);
}
+
+ map.put("teamUnSelects",teamUnSelects);
+
+ if(null != teamId && !"".equals(teamId)){
+ List ids = Func.toLongList(teamId);
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.in("id",ids);
+ queryWrapper.eq("dept_id",teamSet.getDeptId());
+ teamSelects = userService.list(queryWrapper);
+ }
+ map.put("teamSelects",teamSelects);
}
- return R.data(teams);
+ return R.data(map);
}
@@ -137,6 +153,7 @@ public class UserController {
List ids = Func.toLongList(teamId);
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.in("id",ids);
+ queryWrapper.eq("dept_id",teamSet.getDeptId());
teams = userService.list(queryWrapper);
}
}
diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/feign/UserClient.java b/blade-service/blade-system/src/main/java/org/springblade/system/feign/UserClient.java
index ccd1cc8cb..17fed81a9 100644
--- a/blade-service/blade-system/src/main/java/org/springblade/system/feign/UserClient.java
+++ b/blade-service/blade-system/src/main/java/org/springblade/system/feign/UserClient.java
@@ -86,6 +86,16 @@ public class UserClient implements IUserClient {
return users;
}
+ @Override
+ public List listByNameNolike(String name) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("real_name",name);
+ List users = service.list(queryWrapper);
+ return users;
+ }
+
+
+
@Override
@GetMapping(USER_BY_ID)
public R userInfoById(Long userId) {
diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java
index a0f96bad1..207521093 100644
--- a/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java
+++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/IDeptService.java
@@ -26,6 +26,8 @@
package org.springblade.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.core.secure.BladeUser;
+import org.springblade.core.tool.api.R;
import org.springblade.system.pojo.entity.Dept;
import org.springblade.system.pojo.vo.DeptVO;
import org.springblade.system.pojo.vo.UserVO;
@@ -66,7 +68,7 @@ public interface IDeptService extends IService {
* @return
*/
List lazyTree(String tenantId, Long parentId);
-
+ Map findUserByTeam(Long teamSetId);
/**
* 获取部门ID
*
diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java
index ef1aba544..f0cf3d1f9 100644
--- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java
+++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java
@@ -25,7 +25,10 @@
*/
package org.springblade.system.service.impl;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
@@ -36,6 +39,8 @@ import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.desk.basic.feign.IWorkCenterClient;
+import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.system.cache.SysCache;
import org.springblade.system.mapper.DeptMapper;
import org.springblade.system.pojo.entity.Dept;
@@ -48,9 +53,7 @@ import org.springblade.system.wrapper.DeptWrapper;
import org.springblade.system.wrapper.UserWrapper;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -66,7 +69,7 @@ public class DeptServiceImpl extends ServiceImpl implements ID
private static final String PARENT_ID = "parentId";
private final IUserService userService;
-
+ private final IWorkCenterClient workCenterClient;
@Override
public List lazyList(String tenantId, Long parentId, Map param) {
// 设置租户ID
@@ -110,6 +113,150 @@ public class DeptServiceImpl extends ServiceImpl implements ID
return ForestNodeMerger.merge(baseMapper.lazyTree(tenantId, parentId));
}
+ @Override
+ public Map findUserByTeam(Long teamSetId) {
+ Map map = new HashMap<>();
+
+ List teamUnSelects = new ArrayList<>();
+ List teamSelects = new ArrayList<>();
+
+ Map> noChooseMap = new HashMap<>();
+ Map> chooseMap = new HashMap<>();
+
+ TeamSet detail = workCenterClient.getTeamSetById(teamSetId).getData();
+ if(detail != null){
+ String teamId = detail.getTeamMemberId();
+ if(null != teamId && !"".equals(teamId)){
+ List ids = Func.toLongList(teamId);
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.notIn("id",ids);
+// queryWrapper.eq("dept_id",parentId);
+ teamUnSelects = userService.list(queryWrapper);
+ }else{
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+// queryWrapper.eq("dept_id",parentId);
+ teamUnSelects = userService.list(queryWrapper);
+ }
+
+
+ if(null != teamId && !"".equals(teamId)){
+ List ids = Func.toLongList(teamId);
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.in("id",ids);
+// queryWrapper.eq("dept_id",parentId);
+ teamSelects = userService.list(queryWrapper);
+
+ }
+
+
+ if(teamUnSelects != null && teamUnSelects.size() > 0){
+ noChooseMap = teamUnSelects.stream().collect(Collectors.groupingBy(User::getDeptId));
+ }
+ if(teamSelects != null && teamSelects.size() > 0){
+ chooseMap = teamSelects.stream().collect(Collectors.groupingBy(User::getDeptId));
+ }
+ }
+
+ Map> deptMap = this.loadDeptMap();
+
+ // 获取所有父级部门并排序
+ List dataList = deptMap.get(0L);
+ map.put("teamUnSelects",this.loadDeptUserTreeJSON(dataList, deptMap, noChooseMap));
+ map.put("teamSelects",this.loadDeptUserTreeJSON(dataList, deptMap, chooseMap));
+ return map;
+ }
+
+ private JSONArray loadDeptUserTreeJSON(List deptList, Map> map,
+ Map> userMap) {
+ JSONArray array = new JSONArray();
+
+ if (deptList == null || deptList.size() == 0 || userMap == null || userMap.size() == 0) {
+ return array;
+ }
+
+ for (Dept dept : deptList) {
+
+ Long deptId = dept.getId();
+
+ JSONArray rtnArray = null;
+ // 判定有无子级,迭代处理子级层级关系
+ List tempList = map.get(deptId);
+ if (tempList != null && tempList.size() > 0) {
+ rtnArray = this.loadDeptUserTreeJSON(tempList, map, userMap);
+ }
+
+ // 判定该部门下有无员工,组装员工信息
+ List userList = userMap.get(deptId.toString());
+ if (userList != null && userList.size() > 0) {
+ if (rtnArray == null) {
+ rtnArray = new JSONArray();
+ }
+ for (User u : userList) {
+ rtnArray.add(this.userToJSON(u, deptId));
+ }
+ }
+
+ // 该部门下没有子级部门,也没有下属员工跳过该部门
+ if (rtnArray == null || rtnArray.size() == 0) {
+ continue;
+ }
+
+ JSONObject deptObj = deptToJSON(dept, dept.getParentId());
+ deptObj.put("children", rtnArray);
+
+ array.add(deptObj);
+ }
+
+ return array;
+ }
+
+ private JSONObject deptToJSON(Dept dept, Long parentId) {
+ if (parentId == null) {
+ parentId = dept.getId();
+ }
+ JSONObject obj = new JSONObject();
+ obj.put("id", "dept-" + dept.getId());
+ obj.put("pid", "dept-"+ parentId);
+ obj.put("label", dept.getDeptName());
+ obj.put("type", "folder");
+ return obj;
+ }
+
+ private JSONObject userToJSON(User user, Long parentId) {
+ if (parentId == null) {
+ parentId = user.getId();
+ }
+ JSONObject obj = new JSONObject();
+ obj.put("id", "user-" + user.getId());
+ obj.put("pid", "dept-" + parentId);
+ obj.put("label", user.getName());
+ obj.put("type", "item");
+ return obj;
+ }
+ private Map> loadDeptMap() {
+ List deptList = this.list();
+ Map> map = new LinkedHashMap>();
+ List tempList;
+
+ Long parentDeptId;
+ for (Dept dept : deptList) {
+
+ parentDeptId = dept.getParentId();
+ if (parentDeptId == null) {
+ parentDeptId = 0L;
+ }
+
+ tempList = map.get(parentDeptId);
+ if (tempList == null) {
+ tempList = new LinkedList<>();
+ map.put(parentDeptId, tempList);
+ }
+
+ tempList.add(dept);
+ }
+ return map;
+ }
+
@Override
public String getDeptIds(String tenantId, String deptNames) {
List deptList = baseMapper.selectList(Wrappers.query().lambda().eq(Dept::getTenantId, tenantId).in(Dept::getDeptName, Func.toStrList(deptNames)));