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 000000000..0ea58d31c
Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/QA/外协分派.xls differ
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 000000000..a1dd46473
Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/QA/局部镀零件.xls differ
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 000000000..3ffdf85d0
Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/QA/工艺能力.xls differ
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 000000000..680b8ea97
Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/QA/物料定额.xls differ
diff --git a/blade-service/blade-desk/src/main/resources/Excel/QA/班组.xls b/blade-service/blade-desk/src/main/resources/Excel/QA/班组.xls
index dedb00aa2..03a659c3e 100644
Binary files a/blade-service/blade-desk/src/main/resources/Excel/QA/班组.xls and b/blade-service/blade-desk/src/main/resources/Excel/QA/班组.xls differ
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 000000000..2e4316fd7
Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/QA/生产标识.xls differ
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 000000000..f37c5638c
Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/QA/镀种小类.xls differ
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 000000000..c1142ba39
Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/QA/镀种维护.xls differ
diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java b/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
index 0c4428c80..107435b0a 100644
--- a/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
+++ b/blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
@@ -48,6 +48,8 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.Func;
+import org.springblade.desk.basic.feign.IWorkCenterClient;
+import org.springblade.desk.basic.pojo.entity.TeamSet;
import org.springblade.system.cache.DictCache;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.Dept;
@@ -56,9 +58,12 @@ import org.springblade.system.pojo.enums.DictEnum;
import org.springblade.system.pojo.vo.DeptVO;
import org.springblade.system.pojo.vo.UserVO;
import org.springblade.system.service.IDeptService;
+import org.springblade.system.service.IUserService;
import org.springblade.system.wrapper.DeptWrapper;
import org.springframework.web.bind.annotation.*;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -77,7 +82,8 @@ import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
public class DeptController extends BladeController {
private final IDeptService deptService;
-
+ private final IWorkCenterClient workCenterClient;
+ private final IUserService userService;
/**
* 详情
*/
@@ -107,6 +113,24 @@ public class DeptController extends BladeController {
return R.data(DeptWrapper.build().listNodeVO(list));
}
+
+ @GetMapping("/listDeptTeamSet")
+ @Parameters({
+ @Parameter(name = "deptName", description = "部门名称", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
+ @Parameter(name = "fullName", description = "部门全称", in = ParameterIn.QUERY, schema = @Schema(type = "string"))
+ })
+ @ApiOperationSupport(order = 2)
+ @Operation(summary = "列表", description = "传入dept")
+ public R> 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)));