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