转岗管理:设备维护导入功能

liweidong
qinyulong 3 months ago
parent 4d36eeaac3
commit b0dbd5dcde
  1. 42
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/jobtransfer/pojo/excel/EquipmentMaintenanceImport.java
  2. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/IMeasurementRecordsServiceImpl.java
  3. 35
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/controller/EquipmentMaintenanceController.java
  4. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/IEquipmentMaintenanceService.java
  5. 85
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/impl/EquipmentMaintenanceServiceImpl.java
  6. BIN
      blade-service/blade-desk/src/main/resources/Excel/jobTransfer/设备维护导入模板.xls
  7. 2
      blade-service/blade-desk/src/main/resources/application-dev.yml

@ -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;
}

@ -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<JSONObject> 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 {

@ -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<Resource> 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<EquipmentMaintenanceImport> importList = ExcelUtil.read(
file, 0, 1, EquipmentMaintenanceImport.class
);
return equipmentMaintenanceService.saveExcelData(importList);
}
@PostConstruct // 项目启动后立即执行一次
public void init() {
updateMaintenanceStatus();

@ -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<EquipmentMaint
* 更新设备维护状态
*/
void updateMaintenanceStatus();
/**
* 导入
*
* @param importList
* @return
*/
R saveExcelData(List<EquipmentMaintenanceImport> importList);
}

@ -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<EquipmentMaintenanceMapper, EquipmentMaintenanceEntity> implements IEquipmentMaintenanceService {
@Resource
private PostHandleMapper postHandleMapper;
@Resource
private EquipmentMapper equipmentMapper;
@Override
public IPage<EquipmentMaintenanceListVO> selectEquipmentMaintenancePage(IPage<EquipmentMaintenanceListVO> page, EquipmentMaintenanceQuery equipmentMaintenanceQuery) {
return page.setRecords(baseMapper.selectEquipmentMaintenancePage(page, equipmentMaintenanceQuery));
@ -50,4 +74,63 @@ public class EquipmentMaintenanceServiceImpl extends BaseServiceImpl<EquipmentMa
baseMapper.updateMaintenanceStatus();
}
@Override
public R saveExcelData(List<EquipmentMaintenanceImport> importList) {
//获取全部用户codes,通过code获取用户ID,
Set<String> codes = importList.stream().map(EquipmentMaintenanceImport::getUserCode)
.collect(Collectors.toSet());
Map<Long, String> 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<Long> values = idCodeMap.keySet();
LambdaQueryWrapper<PostHandleEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(PostHandleEntity::getUserId, values)
.eq(PostHandleEntity::getStaffType, StaffTypeEnum.FORMAL.getCode().shortValue())
.ne(PostHandleEntity::getPhStatus, PostHandleStatusEnum.DEPART.getCode().shortValue()); // 使用实体类的get方法引用
List<PostHandleEntity> postHandleEntities = postHandleMapper.selectList(lambdaQueryWrapper);
Map<Long, Long> idMap = postHandleEntities.stream().collect(Collectors.toMap(
entity -> entity.getUserId(),
entity -> entity.getId()));
//整合成一个用户code和PostHandleEntityId的map
Map<String, Long> 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<String> deviceCode = importList.stream().map(EquipmentMaintenanceImport::getDeviceCode)
.collect(Collectors.toSet());
LambdaQueryWrapper<EquipmentEntity> equipmentEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
equipmentEntityLambdaQueryWrapper.in(CollectionUtils.isNotEmpty(deviceCode), EquipmentEntity::getDeviceCode, deviceCode); // [8](@ref)
List<EquipmentEntity> equipmentEntities = equipmentMapper.selectList(equipmentEntityLambdaQueryWrapper);
Map<String, Long> 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<EquipmentMaintenanceEntity> 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);
}
}

@ -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"

Loading…
Cancel
Save