|
@@ -21,12 +21,14 @@ import cn.com.ty.lift.business.project.dao.entity.Project;
|
|
|
import cn.com.ty.lift.business.project.dao.entity.ProjectLiftRelevance;
|
|
|
import cn.com.ty.lift.business.project.service.ProjectLiftRelevanceService;
|
|
|
import cn.com.ty.lift.business.project.service.ProjectService;
|
|
|
+import cn.com.ty.lift.common.aliservice.aliyunoss.AliyunOSS;
|
|
|
import cn.com.ty.lift.common.constants.CommonEnum;
|
|
|
import cn.com.ty.lift.common.utils.DateUtils;
|
|
|
import cn.com.ty.lift.common.utils.MapHelper;
|
|
|
import cn.com.ty.lift.common.utils.ValuePool;
|
|
|
import cn.com.ty.lift.common.verify.Val;
|
|
|
import cn.com.ty.lift.common.verify.Validate;
|
|
|
+import cn.com.ty.lift.common.verify.ValidateException;
|
|
|
import cn.com.xwy.boot.web.dto.RestResponse;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.collection.IterUtil;
|
|
@@ -843,7 +845,7 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
|
|
|
return baseMapper.pageByLift(request.getPage(), request);
|
|
|
}
|
|
|
|
|
|
- public void export(MtRecordRequest mtRecordRequest, HttpServletResponse response) {
|
|
|
+ public String export(MtRecordRequest mtRecordRequest) {
|
|
|
Map<String, String> headerAlias = new LinkedHashMap<>();
|
|
|
headerAlias.put("projectName", "项目名称");
|
|
|
headerAlias.put("useCompanyCode", "梯号");
|
|
@@ -878,12 +880,12 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
|
|
|
String zip = dir + ".zip";
|
|
|
baseDir = new File(dir);
|
|
|
zipFile = new File(zip);
|
|
|
- log.info("dir: {}", dir);
|
|
|
- log.info("zip: {}", zip);
|
|
|
+ log.info("dir路径: {}", dir);
|
|
|
+ log.info("zip路径: {}", zip);
|
|
|
|
|
|
//生成excel文件
|
|
|
- String excel = File.separator + dir + File.separator + generateCode + ".xlsx";
|
|
|
- log.info("生成excel: {}", excel);
|
|
|
+ String excel = File.separator + dir + File.separator + "维保记录列表.xlsx";
|
|
|
+ log.info("维保记录列表生成excel: {}", excel);
|
|
|
File excelFile = new File(excel);
|
|
|
ExcelWriter writer = ExcelUtil.getBigWriter(excelFile, "维保记录表");
|
|
|
//设置列别名
|
|
@@ -900,16 +902,16 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
|
|
|
String illegalChars = "\\/:*?\"<>|";
|
|
|
for (int i = 0; i < mtRecordResponses.size(); i++) {
|
|
|
MtRecordResponse mtRecordResponse = mtRecordResponses.get(i);
|
|
|
- List<MtRecordImg> mtRecordImgs = mtRecordResponse.getMtRecordImgs();
|
|
|
- log.info("repair: {}", mtRecordResponse);
|
|
|
+ log.info("maintenance: {}", mtRecordResponse);
|
|
|
//处理文件夹路径
|
|
|
String projectName = mtRecordResponse.getProjectName();
|
|
|
String registrationCode = mtRecordResponse.getRegistrationCode();
|
|
|
projectName = StrUtil.isNotEmpty(projectName) ? projectName.replace(illegalChars, "-") : "[项目]";
|
|
|
registrationCode = StrUtil.isNotEmpty(registrationCode) ? registrationCode.replace(illegalChars, "-") : "[电梯注册代码]";
|
|
|
- //图片文件夹 dir/i.AreaName-ProjectName-RegistrationCode/
|
|
|
+ //保养单及图片文件夹 dir/i.ProjectName-RegistrationCode/
|
|
|
String imgDir = StrUtil.format("{}{}{}.{}-{}{}", dir, File.separator, (i + 1), projectName, registrationCode, File.separator);
|
|
|
-
|
|
|
+ //生成维保图片
|
|
|
+ List<MtRecordImg> mtRecordImgs = mtRecordResponse.getMtRecordImgs();
|
|
|
List<MtRecordImg> imgs = mtRecordImgs.stream().filter(img -> mtRecordResponse.getId().equals(img.getMtRecordId())).collect(Collectors.toList());
|
|
|
if (IterUtil.isNotEmpty(imgs)) {
|
|
|
for (int n = 0; n < imgs.size(); n++) {
|
|
@@ -922,47 +924,30 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- String maintenanceExcelDir = imgDir + "1.保养单.xlsx";
|
|
|
+ //生成保养单
|
|
|
+ String maintenanceExcelDir = imgDir + "保养单.xlsx";
|
|
|
log.info("生成保养单: {}", maintenanceExcelDir);
|
|
|
excelWriter(mtRecordResponse, maintenanceExcelDir);
|
|
|
}
|
|
|
-
|
|
|
//压缩文件夹
|
|
|
- log.info("生成zipfile: {}", zip);
|
|
|
+ log.info("生成zipFile路径: {}", zip);
|
|
|
ZipUtil.zip(dir, zip);
|
|
|
+ //上传文件到阿里云,并返回路径给前端
|
|
|
+ return AliyunOSS.me().putObject("maintenance/export/zip/" + generateCode + ".zip", readInputStream(new FileInputStream(new File(zip))));
|
|
|
} catch (Exception e) {
|
|
|
- FileUtil.del(zipFile);
|
|
|
- FileUtil.del(baseDir);
|
|
|
log.error("生成保养文件失败", e);
|
|
|
throw Validate.validateException("生成保养文件失败");
|
|
|
- }
|
|
|
- //下载压缩文件
|
|
|
- if (FileUtil.exist(zipFile)) {
|
|
|
- // 设置强制下载不打开, ZIP的application/x-zip-compressed
|
|
|
- response.setContentType("application/force-download");
|
|
|
- // 设置文件名
|
|
|
- response.addHeader("Content-Disposition", "attachment;fileName=" + zipFile.getName());
|
|
|
- byte[] buffer = new byte[1024];
|
|
|
- try (FileInputStream fis = new FileInputStream(zipFile);
|
|
|
- BufferedInputStream bis = new BufferedInputStream(fis)) {
|
|
|
- OutputStream os = response.getOutputStream();
|
|
|
- int i;
|
|
|
- while ((i = bis.read(buffer)) != -1) {
|
|
|
- os.write(buffer, 0, i);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("下载保养文件失败", e);
|
|
|
- throw Validate.validateException("下载保养文件失败");
|
|
|
- } finally {
|
|
|
- //删除临时根目录和zip文件
|
|
|
- FileUtil.del(zipFile);
|
|
|
- FileUtil.del(baseDir);
|
|
|
- }
|
|
|
+ } finally {
|
|
|
+ FileUtil.del(zipFile);
|
|
|
+ FileUtil.del(baseDir);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private MtRecordResponse getMtRecordResponse(@RequestBody @Val MtRecordRequest request) {
|
|
|
MtRecordResponse entity = this.infoById(request);
|
|
|
+ if (entity == null) {
|
|
|
+ throw new ValidateException("维保记录不存在");
|
|
|
+ }
|
|
|
String repairDuration = this.getRepairDuration(entity.getRepairDiff());
|
|
|
entity.setRepairDuration(repairDuration);
|
|
|
Validate.notNull(entity, ValuePool.MAINTENANCE_RECORD_NOT_EXIST);
|
|
@@ -1003,16 +988,16 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
|
|
|
writer.merge(0, 0, 0, 5, mtRecordResponse.getProjectName(), false);
|
|
|
writer.merge(1, 1, 0, 1, mtRecordResponse.getCategoryStr() + "保养单", false);
|
|
|
writer.merge(1, 1, 2, 3, "单号:" + mtRecordResponse.getId(), false);
|
|
|
- writer.merge(1, 1, 4, 5, "设备编号:" + mtRecordResponse.getUseCompanyCode(), false);
|
|
|
+ writer.merge(1, 1, 4, 5, "设备内部编号:" + (mtRecordResponse.getUseCompanyCode() != null ? mtRecordResponse.getUseCompanyCode() : "未设置"), false);
|
|
|
writer.merge(2, 2, 0, 1, "注册代码:" + mtRecordResponse.getRegistrationCode(), false);
|
|
|
writer.merge(2, 2, 2, 3, "电梯位置:" + mtRecordResponse.getDevicePosition(), false);
|
|
|
writer.merge(2, 2, 4, 5, "保养类型:" + mtRecordResponse.getType(), false);
|
|
|
- writer.merge(3, 3, 0, 1, "保养时间:" + mtRecordResponse.getWorkDate().toString().replace("T"," "), false);
|
|
|
+ writer.merge(3, 3, 0, 1, "保养时间:" + mtRecordResponse.getWorkDate().toString().replace("T", " "), false);
|
|
|
writer.merge(3, 3, 2, 3, "项目编号:" + mtRecordResponse.getProjectCode(), false);
|
|
|
writer.merge(3, 3, 4, 5, "项目名称:" + mtRecordResponse.getProjectName(), false);
|
|
|
writer.merge(4, 4, 0, 1, "计划保养时间:" + mtRecordResponse.getPlanDate(), false);
|
|
|
- writer.merge(4, 4, 2, 3, "停梯时间:" + mtRecordResponse.getStopDate().toString().replace("T"," "), false);
|
|
|
- writer.merge(4, 4, 4, 5, "恢梯时间:" + mtRecordResponse.getRecoveryDate().toString().replace("T"," "), false);
|
|
|
+ writer.merge(4, 4, 2, 3, "停梯时间:" + mtRecordResponse.getStopDate().toString().replace("T", " "), false);
|
|
|
+ writer.merge(4, 4, 4, 5, "恢梯时间:" + mtRecordResponse.getRecoveryDate().toString().replace("T", " "), false);
|
|
|
writer.writeCellValue(0, 5, "保养时长");
|
|
|
writer.merge(5, 5, 1, 5, mtRecordResponse.getRepairDuration(), false);
|
|
|
writer.writeCellValue(0, 6, "序号");
|
|
@@ -1060,17 +1045,21 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
|
|
|
writer.writeCellValue(0, 11 + i, "服务态度");
|
|
|
StringBuilder level = new StringBuilder();
|
|
|
if (mtRecordResponse.getEvaluation() != null) {
|
|
|
- int levelInt = mtRecordResponse.getEvaluation().getServiceLevel();
|
|
|
- for (int i1 = 0; i1 < levelInt; i1++) {
|
|
|
- level.append("★");
|
|
|
+ Integer levelInt = mtRecordResponse.getEvaluation().getServiceLevel();
|
|
|
+ if (levelInt != null) {
|
|
|
+ for (int i1 = 0; i1 < levelInt; i1++) {
|
|
|
+ level.append("★");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
writer.merge(11 + i, 11 + i, 1, 2, level.toString(), false);
|
|
|
level = new StringBuilder();
|
|
|
writer.writeCellValue(3, 11 + i, "维保质量");
|
|
|
- int levelInt = mtRecordResponse.getStarLevel();
|
|
|
- for (int i1 = 0; i1 < levelInt; i1++) {
|
|
|
- level.append("★");
|
|
|
+ Integer levelInt = mtRecordResponse.getStarLevel();
|
|
|
+ if (levelInt != null) {
|
|
|
+ for (int i1 = 0; i1 < levelInt; i1++) {
|
|
|
+ level.append("★");
|
|
|
+ }
|
|
|
}
|
|
|
writer.merge(11 + i, 11 + i, 4, 5, level.toString(), false);
|
|
|
writer.merge(12 + i, 18 + i, 0, 0, "维保签名", false);
|