diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobTransfer/pojo/excel/CertificateMaintenanceImport.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobTransfer/pojo/excel/CertificateMaintenanceImport.java new file mode 100644 index 00000000..fc8ce960 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobTransfer/pojo/excel/CertificateMaintenanceImport.java @@ -0,0 +1,54 @@ +package org.springblade.desk.jobTransfer.pojo.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.util.Date; + +/** + * 证书维护导入 + * + * @author qyl + * @since 2026-01-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class CertificateMaintenanceImport extends BaseEntity { + + /** + * 用户code + */ + @ExcelProperty(index = 0) + private String userCode; + /** + * 证书类型 + */ + @ExcelProperty(index = 1) + private String certificateType; + /** + * 证书编号 + */ + @ExcelProperty(index = 2) + private String certificateCode; + /** + * 证书日期 + */ + @ExcelProperty(index = 3) + @DateTimeFormat("yyyy/MM/dd") + private Date certificateDate; + /** + * 适航日期 + */ + @ExcelProperty(index = 4) + @DateTimeFormat("yyyy/MM/dd") + private Date airworthinessDate; + /** + * 宇航日期 + */ + @ExcelProperty(index = 5) + @DateTimeFormat("yyyy/MM/dd") + private Date astronautDate; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CertificateMaintenanceController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CertificateMaintenanceController.java index 139c6941..84321bfe 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CertificateMaintenanceController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CertificateMaintenanceController.java @@ -17,13 +17,20 @@ import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; +import org.springblade.desk.basic.util.ExcelExtUtil; import org.springblade.desk.jobTransfer.pojo.excel.CertificateMaintenanceExcel; +import org.springblade.desk.jobTransfer.pojo.excel.CertificateMaintenanceImport; import org.springblade.desk.jobTransfer.pojo.excel.CultivateDetailExcel; +import org.springblade.desk.jobTransfer.pojo.excel.PostHandleImport; import org.springblade.desk.jobTransfer.pojo.request.CertificateLedgerQuery; import org.springblade.desk.jobTransfer.pojo.vo.CertificateLedgerVO; import org.springblade.desk.jobTransfer.pojo.vo.CultivateDetailVO; import org.springblade.desk.jobTransfer.pojo.vo.PostHandleVO; +import org.springblade.system.cache.UserCache; +import org.springblade.system.pojo.entity.UserInfo; import org.springframework.beans.BeanUtils; +import org.springframework.core.io.Resource; +import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -36,11 +43,10 @@ import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.excel.util.ExcelUtil; -import java.util.ArrayList; -import java.util.Map; -import java.util.List; +import java.util.*; import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.multipart.MultipartFile; /** * 证书维护 控制器 @@ -51,7 +57,7 @@ import jakarta.servlet.http.HttpServletResponse; @RestController @AllArgsConstructor @RequestMapping("/certificateMaintenance") -@Tag(name = "证书维护", description = "证书维护接口") +@Tag(name = "上岗证台账", description = "上岗证台账接口") public class CertificateMaintenanceController extends BladeController { private final ICertificateMaintenanceService certificateMaintenanceService; @@ -173,6 +179,35 @@ public class CertificateMaintenanceController extends BladeController { ExcelUtil.export(response, "证书维护数据" + DateUtil.time(), "证书维护数据表", excels, CertificateMaintenanceExcel.class); } + /** + * 下载Excel模板 + */ + @GetMapping("/downloadExcelTemplate") + @ApiOperationSupport(order = 10) + @Operation(summary = "下载Excel模板", description = "") + public ResponseEntity downloadExcelTemplate() { + return ExcelExtUtil.downloadXlsTemplate( + "Excel/jobTransfer/证书维护导入模板.xls", + "证书维护导入模板.xls"); + } + + /** + * 导入Excel + */ + @PostMapping("/importExcel") + @ApiOperationSupport(order = 11) + @Operation(summary = "导入Excel", description = "MultipartFile") + public R importExcel(@RequestParam("file") MultipartFile file) { + R checkR = ExcelExtUtil.importExcelCheck(file); + if (checkR != null) { + return checkR; + } + List importList = ExcelUtil.read( + file, 0, 1, CertificateMaintenanceImport.class + ); + return certificateMaintenanceService.saveExcelData(importList); + } + @PostConstruct // 项目启动后立即执行一次 public void init() { updateMaintenanceStatus(); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CertificateTypeController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CertificateTypeController.java index 33ed06f7..97b44fbf 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CertificateTypeController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CertificateTypeController.java @@ -40,7 +40,7 @@ import jakarta.servlet.http.HttpServletResponse; @RestController @AllArgsConstructor @RequestMapping("/certificateType") -@Tag(name = "证书类型", description = "证书类型接口") +@Tag(name = "证书类型维护", description = "证书类型维护接口") public class CertificateTypeController extends BladeController { private final ICertificateTypeService certificateTypeService; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CultivateDetailController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CultivateDetailController.java index 0a8d9002..30bbbdf6 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CultivateDetailController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/CultivateDetailController.java @@ -49,7 +49,7 @@ import jakarta.servlet.http.HttpServletResponse; @RestController @AllArgsConstructor @RequestMapping("/cultivateDetail") -@Tag(name = "培训安排", description = "培训安排接口") +@Tag(name = "培训记录管理", description = "培训记录管理接口") public class CultivateDetailController extends BladeController { private final ICultivateDetailService cultivateDetailService; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/EquipmentMaintenanceController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/EquipmentMaintenanceController.java index d3437a40..019f5f9e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/EquipmentMaintenanceController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/EquipmentMaintenanceController.java @@ -50,7 +50,7 @@ import jakarta.servlet.http.HttpServletResponse; @RestController @AllArgsConstructor @RequestMapping("/equipmentMaintenance") -@Tag(name = "岗位设备维护", description = "岗位设备维护接口") +@Tag(name = "人员设备台账", description = "人员设备台账接口") public class EquipmentMaintenanceController extends BladeController { private final IEquipmentMaintenanceService equipmentMaintenanceService; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/PostHandleController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/PostHandleController.java index c6a5f332..1663826f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/PostHandleController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/controller/PostHandleController.java @@ -52,7 +52,7 @@ import org.springframework.web.multipart.MultipartFile; @RestController @AllArgsConstructor @RequestMapping("/postHandle") -@Tag(name = "岗位处理", description = "岗位处理接口") +@Tag(name = "人员岗位管理", description = "人员岗位管理接口") public class PostHandleController extends BladeController { private final IPostHandleService postHandleService; @@ -215,7 +215,7 @@ public class PostHandleController extends BladeController { public ResponseEntity downloadExcelTemplate() { return ExcelExtUtil.downloadXlsTemplate( "Excel/jobTransfer/岗位处理导入模板下载.xls", - "岗位处理导入模板下载.xls"); + "岗位处理导入模板.xls"); } /** diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CertificateMaintenanceMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CertificateMaintenanceMapper.xml index 93194c53..0f99410e 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CertificateMaintenanceMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/CertificateMaintenanceMapper.xml @@ -131,7 +131,7 @@ LEFT JOIN BA_TEAM_SET bd ON ph.DEPT_ID = bd.ID LEFT JOIN MES_CERTIFICATE_MAINTENANCE cm ON ph.id = cm.ph_id AND cm.is_deleted = 0 LEFT JOIN MES_CERTIFICATE_TYPE ct ON cm.certificate_id = ct.id AND ct.is_deleted = 0 - WHERE ph.is_deleted = 0 + WHERE ph.is_deleted = 0 and ph.staff_type != 1 AND ph.name LIKE CONCAT(CONCAT('%', #{query.name}), '%') diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/EquipmentMaintenanceMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/EquipmentMaintenanceMapper.xml index 5c5d66f2..485ff45d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/EquipmentMaintenanceMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/mapper/EquipmentMaintenanceMapper.xml @@ -110,7 +110,7 @@ LEFT JOIN BA_TEAM_SET bd ON ph.DEPT_ID = bd.ID LEFT JOIN MES_EQUIPMENT_MAINTENANCE em ON ph.id = em.ph_id AND em.is_deleted = 0 LEFT JOIN MES_EQUIPMENT equipment ON em.equipment_id = equipment.id AND equipment.is_deleted = 0 - WHERE ph.is_deleted = 0 + WHERE ph.is_deleted = 0 and ph.staff_type != 1 AND ph.name LIKE CONCAT(CONCAT('%', #{query.name}), '%') diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/ICertificateMaintenanceService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/ICertificateMaintenanceService.java index a0e5d0b9..dba9d2d0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/ICertificateMaintenanceService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/ICertificateMaintenanceService.java @@ -1,8 +1,10 @@ package org.springblade.desk.jobTransfer.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import org.springblade.core.tool.api.R; import org.springblade.desk.jobTransfer.pojo.entity.CertificateMaintenanceEntity; import org.springblade.desk.jobTransfer.pojo.excel.CertificateMaintenanceExcel; +import org.springblade.desk.jobTransfer.pojo.excel.CertificateMaintenanceImport; import org.springblade.desk.jobTransfer.pojo.request.CertificateLedgerQuery; import org.springblade.desk.jobTransfer.pojo.vo.CertificateLedgerVO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -47,4 +49,12 @@ public interface ICertificateMaintenanceService extends BaseService certificateMaintenances); + + /** + * 导入 + * + * @param certificateMaintenanceImports + * @return + */ + R saveExcelData(List certificateMaintenanceImports); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/CertificateMaintenanceServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/CertificateMaintenanceServiceImpl.java index df4c6118..89c27b2c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/CertificateMaintenanceServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobTransfer/service/impl/CertificateMaintenanceServiceImpl.java @@ -1,18 +1,30 @@ package org.springblade.desk.jobTransfer.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import jakarta.annotation.Resource; +import org.springblade.core.tool.api.R; +import org.springblade.desk.jobTransfer.mapper.CertificateTypeMapper; +import org.springblade.desk.jobTransfer.mapper.PostHandleMapper; import org.springblade.desk.jobTransfer.pojo.entity.CertificateMaintenanceEntity; +import org.springblade.desk.jobTransfer.pojo.entity.PostHandleEntity; +import org.springblade.desk.jobTransfer.pojo.enums.PostHandleStatusEnum; +import org.springblade.desk.jobTransfer.pojo.enums.StaffTypeEnum; import org.springblade.desk.jobTransfer.pojo.excel.CertificateMaintenanceExcel; +import org.springblade.desk.jobTransfer.pojo.excel.CertificateMaintenanceImport; import org.springblade.desk.jobTransfer.pojo.request.CertificateLedgerQuery; import org.springblade.desk.jobTransfer.pojo.vo.CertificateLedgerVO; import org.springblade.desk.jobTransfer.mapper.CertificateMaintenanceMapper; import org.springblade.desk.jobTransfer.service.ICertificateMaintenanceService; +import org.springblade.system.cache.UserCache; +import org.springblade.system.pojo.entity.UserInfo; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 证书维护 服务实现类 @@ -23,6 +35,12 @@ import java.util.List; @Service public class CertificateMaintenanceServiceImpl extends BaseServiceImpl implements ICertificateMaintenanceService { + @Resource + private PostHandleMapper postHandleMapper; + + @Resource + private CertificateTypeMapper certificateTypeMapper; + @Override public IPage selectCertificateMaintenancePage(IPage page, CertificateLedgerQuery certificateLedgerQuery) { return page.setRecords(baseMapper.selectCertificateMaintenancePage(page, certificateLedgerQuery)); @@ -53,7 +71,44 @@ public class CertificateMaintenanceServiceImpl extends BaseServiceImpl certificateMaintenanceImports) { + //获取全部用户codes,通过code获取用户ID, + Set codes = certificateMaintenanceImports.stream().map(CertificateMaintenanceImport::getUserCode) + .collect(Collectors.toSet()); + Map idCodeMap = codes.stream() + .map(code -> { + UserInfo userInfo = UserCache.getUserByCode(code); + return (userInfo != null && userInfo.getUser() != null) ? + new AbstractMap.SimpleEntry<>(code, userInfo.getUser().getId()) : null; + }) + .filter(Objects::nonNull) + .collect(Collectors.toMap(AbstractMap.SimpleEntry::getValue, AbstractMap.SimpleEntry::getKey)); + //根据用户id获取人员岗位数据 + Collection values = idCodeMap.keySet(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(PostHandleEntity::getUserId, values) + .eq(PostHandleEntity::getStaffType, StaffTypeEnum.FORMAL.getCode().shortValue()) + .ne(PostHandleEntity::getPhStatus, PostHandleStatusEnum.DEPART.getCode().shortValue()); // 使用实体类的get方法引用 + List postHandleEntities = postHandleMapper.selectList(lambdaQueryWrapper); + Map idMap = postHandleEntities.stream().collect(Collectors.toMap( + entity -> entity.getUserId(), + entity -> entity.getId())); + //整合成一个用户code和PostHandleEntityId的map + Map codePostHandleIdMap = new HashMap<>(); + for (Long l : idMap.keySet()) { + codePostHandleIdMap.put(idCodeMap.get(l), idMap.get(l)); + } + codes.removeAll(codePostHandleIdMap.keySet()); + if (codes.size() > 0) { + return R.fail("工号:" + String.join(",", codes) + "不存在。"); + } + //获取全部证书类型 + Set certificateType = certificateMaintenanceImports.stream().map(CertificateMaintenanceImport::getCertificateType) + .collect(Collectors.toSet()); + return null; + } } diff --git a/blade-service/blade-desk/src/main/resources/Excel/jobTransfer/证书维护导入模板.xls b/blade-service/blade-desk/src/main/resources/Excel/jobTransfer/证书维护导入模板.xls new file mode 100644 index 00000000..5cd5f217 Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/jobTransfer/证书维护导入模板.xls differ