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 @@ + + + + + + + + + + + + + + + + + + + + + + + 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)));