diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/pojo/excel/EquipmentMaintenanceImport.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/pojo/excel/EquipmentMaintenanceImport.java new file mode 100644 index 00000000..28269c29 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/pojo/excel/EquipmentMaintenanceImport.java @@ -0,0 +1,42 @@ +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-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class EquipmentMaintenanceImport extends BaseEntity { + + /** + * 用户code + */ + @ExcelProperty(index = 0) + private String userCode; + /** + * 设备编号 + */ + @ExcelProperty(index = 1) + private String deviceCode; + /** + * 设备有效期 + */ + @ExcelProperty(index = 2) + private Integer equipmentValidityPeriod; + /** + * 设备日期 + */ + @ExcelProperty(index = 3) + @DateTimeFormat("yyyy/MM/dd") + private Date equipmentDate; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/IMeasurementRecordsServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/IMeasurementRecordsServiceImpl.java index 6d01149b..bf57fd98 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/IMeasurementRecordsServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/IMeasurementRecordsServiceImpl.java @@ -54,7 +54,7 @@ public class IMeasurementRecordsServiceImpl implements IMeasurementRecordsServic return processResponse(response, page); } catch (Exception e) { - log.error("获取量具库存记录数据接口调用失败: {}", e.getMessage(), e); + log.error("获取计量记录记录数据接口调用失败: {}", e.getMessage(), e); return page.setRecords(List.of()); // 返回空列表而不是null } } @@ -91,11 +91,11 @@ public class IMeasurementRecordsServiceImpl implements IMeasurementRecordsServic try { JSONObject result = JSONObject.parseObject(responseBody); - if (result != null && result.getInteger("code") != null && result.getInteger("code").equals(200)) { + if (result != null && result.getBoolean("success")) { JSONObject data = result.getJSONObject("data"); if (data != null) { List records = JSONArray.parseArray(data.toJSONString(), JSONObject.class); - log.info("成功获取{}条量具库存记录", records != null ? records.size() : 0); + log.info("成功获取{}条计量记录记录", records != null ? records.size() : 0); return page.setRecords(records != null ? records : List.of()); } } else { 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 a89aef12..b9a76a7d 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 @@ -16,10 +16,15 @@ 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.CertificateMaintenanceImport; import org.springblade.desk.jobtransfer.pojo.excel.EquipmentMaintenanceExcel; +import org.springblade.desk.jobtransfer.pojo.excel.EquipmentMaintenanceImport; import org.springblade.desk.jobtransfer.pojo.request.EquipmentMaintenanceQuery; import org.springblade.desk.jobtransfer.pojo.vo.*; 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.metadata.IPage; @@ -34,6 +39,7 @@ import java.util.ArrayList; import java.util.List; import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.multipart.MultipartFile; /** * 岗位设备维护 控制器 @@ -166,6 +172,35 @@ public class EquipmentMaintenanceController extends BladeController { ExcelUtil.export(response, "岗位设备维护数据" + DateUtil.time(), "岗位设备维护数据表", excels, EquipmentMaintenanceExcel.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, EquipmentMaintenanceImport.class + ); + return equipmentMaintenanceService.saveExcelData(importList); + } + @PostConstruct // 项目启动后立即执行一次 public void init() { updateMaintenanceStatus(); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/IEquipmentMaintenanceService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/IEquipmentMaintenanceService.java index b76f9f01..a656f8b8 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/IEquipmentMaintenanceService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/IEquipmentMaintenanceService.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.EquipmentMaintenanceEntity; import org.springblade.desk.jobtransfer.pojo.excel.EquipmentMaintenanceExcel; +import org.springblade.desk.jobtransfer.pojo.excel.EquipmentMaintenanceImport; import org.springblade.desk.jobtransfer.pojo.request.EquipmentMaintenanceQuery; import org.springblade.desk.jobtransfer.pojo.vo.EquipmentMaintenanceListVO; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -47,4 +49,12 @@ public interface IEquipmentMaintenanceService extends BaseService importList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/impl/EquipmentMaintenanceServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/impl/EquipmentMaintenanceServiceImpl.java index d8e040b6..177350b1 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/impl/EquipmentMaintenanceServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/impl/EquipmentMaintenanceServiceImpl.java @@ -1,17 +1,35 @@ package org.springblade.desk.jobtransfer.service.impl; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import jakarta.annotation.Resource; +import org.springblade.core.tool.api.R; +import org.springblade.desk.device.mapper.EquipmentMapper; +import org.springblade.desk.device.pojo.entity.EquipmentEntity; +import org.springblade.desk.jobtransfer.mapper.PostHandleMapper; +import org.springblade.desk.jobtransfer.pojo.entity.CertificateMaintenanceEntity; +import org.springblade.desk.jobtransfer.pojo.entity.CertificateTypeEntity; import org.springblade.desk.jobtransfer.pojo.entity.EquipmentMaintenanceEntity; +import org.springblade.desk.jobtransfer.pojo.entity.PostHandleEntity; +import org.springblade.desk.jobtransfer.pojo.enums.MaintenanceStatusEnum; +import org.springblade.desk.jobtransfer.pojo.enums.PostHandleStatusEnum; +import org.springblade.desk.jobtransfer.pojo.enums.StaffTypeEnum; +import org.springblade.desk.jobtransfer.pojo.excel.CertificateMaintenanceImport; import org.springblade.desk.jobtransfer.pojo.excel.EquipmentMaintenanceExcel; +import org.springblade.desk.jobtransfer.pojo.excel.EquipmentMaintenanceImport; import org.springblade.desk.jobtransfer.pojo.request.EquipmentMaintenanceQuery; import org.springblade.desk.jobtransfer.pojo.vo.EquipmentMaintenanceListVO; import org.springblade.desk.jobtransfer.mapper.EquipmentMaintenanceMapper; import org.springblade.desk.jobtransfer.service.IEquipmentMaintenanceService; +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 java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 岗位设备维护 服务实现类 @@ -22,6 +40,12 @@ import java.util.List; @Service public class EquipmentMaintenanceServiceImpl extends BaseServiceImpl implements IEquipmentMaintenanceService { + @Resource + private PostHandleMapper postHandleMapper; + + @Resource + private EquipmentMapper equipmentMapper; + @Override public IPage selectEquipmentMaintenancePage(IPage page, EquipmentMaintenanceQuery equipmentMaintenanceQuery) { return page.setRecords(baseMapper.selectEquipmentMaintenancePage(page, equipmentMaintenanceQuery)); @@ -50,4 +74,63 @@ public class EquipmentMaintenanceServiceImpl extends BaseServiceImpl importList) { + //获取全部用户codes,通过code获取用户ID, + Set codes = importList.stream().map(EquipmentMaintenanceImport::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 deviceCode = importList.stream().map(EquipmentMaintenanceImport::getDeviceCode) + .collect(Collectors.toSet()); + LambdaQueryWrapper equipmentEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + equipmentEntityLambdaQueryWrapper.in(CollectionUtils.isNotEmpty(deviceCode), EquipmentEntity::getDeviceCode, deviceCode); // [8](@ref) + List equipmentEntities = equipmentMapper.selectList(equipmentEntityLambdaQueryWrapper); + Map deviceNameIds = equipmentEntities.stream().collect(Collectors.toMap( + entity -> entity.getDeviceCode(), + entity -> entity.getId())); + deviceCode.removeAll(deviceNameIds.keySet()); + if (deviceCode.size() > 0) { + return R.fail("设备:" + String.join(",", deviceCode) + "不存在。"); + } + List saves = new ArrayList<>(); + importList.forEach(e -> { + EquipmentMaintenanceEntity entity = new EquipmentMaintenanceEntity(); + entity.setPhId(codePostHandleIdMap.get(e.getUserCode())); + entity.setEquipmentId(deviceNameIds.get(e.getDeviceCode())); + entity.setEquipmentDate(e.getEquipmentDate()); + entity.setEquipmentValidityPeriod(e.getEquipmentValidityPeriod()); + entity.setMaintenanceStatus(MaintenanceStatusEnum.NORMAL.getCode().shortValue()); + saves.add(entity); + }); + boolean saved = this.saveBatch(saves); + return R.status(saved); + } + } 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..a4966504 Binary files /dev/null and b/blade-service/blade-desk/src/main/resources/Excel/jobTransfer/设备维护导入模板.xls differ diff --git a/blade-service/blade-desk/src/main/resources/application-dev.yml b/blade-service/blade-desk/src/main/resources/application-dev.yml index defff7f1..927f7f64 100644 --- a/blade-service/blade-desk/src/main/resources/application-dev.yml +++ b/blade-service/blade-desk/src/main/resources/application-dev.yml @@ -33,7 +33,7 @@ role-config: request: measuringTool: #量具使用记录 - url: "http://203.15.10.153:80300" + url: "192.168.191.11:8888" lims: #计量记录 url: "http://192.168.169.50:30000"