提交 8ca76ac3 authored 作者: zjm's avatar zjm

feat(使用请款): 添加使用情况生成word以及修改word接口

添加使用情况生成word以及修改word接口
上级 5ed28e6e
package com.tykj.dev.device.file.service.Impl;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.file.entity.WrodParameter;
import com.tykj.dev.device.file.service.UseReportFIleService;
import com.tykj.dev.device.file.util.WordUtil;
......@@ -125,6 +126,59 @@ public class UseReportFIleServiceImpl implements UseReportFIleService {
}
@Override
public FileRet findToFileServiceToFileRet(WrodParameter wrodParameter, String docModel) throws IOException {
Map<String, Object> params = new HashMap<>();
// 渲染文本
params.put("time",wrodParameter.getTime());
//装备类型总数
params.put("deviceNumber",wrodParameter.getDeviceNumber());
//入库数量
params.put("inLibraryNum",wrodParameter.getInLibraryNum());
//维修数量
params.put("sendRepairNum",wrodParameter.getSendRepairNum());
//维修退回
params.put("receiveRepairNum",wrodParameter.getReceiveRepairNum());
//销毁数量
params.put("destoryNum",wrodParameter.getDestoryNum());
//发起配发数量
params.put("sendAllotNum",wrodParameter.getSendAllotNum());
//接收配发数量
params.put("receiveAllotNum",wrodParameter.getReceiveAllotNum());
//发起退回数量
params.put("sensAllotBackNum",wrodParameter.getSendAllotBackNum());
//接收退回
params.put("receiveAllotBackNum",wrodParameter.getReceiveAllotBackNum());
//清退数量
params.put("sendBackNum",wrodParameter.getSendBackNum());
//报废数量
params.put("scrapStatisticsNum",wrodParameter.getScrapStatisticsNum());
//列装数量
params.put("packingNum",wrodParameter.getPackingNum());
//退装数量
params.put("retiredNum",wrodParameter.getRetiredNum());
//退役
params.put("decommissioningStatisticsNum",wrodParameter.getDecommissioningStatisticsNum());
//向下级进行维修退回
params.put("toRepairBackNum",wrodParameter.getToRepairBackNum());
//接收下级进行维修
params.put("toRepairNum",wrodParameter.getToRepairNum());
params.put("TitleAnnual",wrodParameter.getTitleAnnual());
params.put("TitleTimeEnd",wrodParameter.getTitleTimeEnd());
params.put("TitleTimeStart",wrodParameter.getTitleTimeStart());
params.put("TitleUnitName",wrodParameter.getTitleUnitName());
String templatePath = ResourceUtils.getURL( "classpath:").getPath()+"docTemplate/"+docModel;
url=url+"report/";
String uuidName=UUID.randomUUID().toString().replace("-", "");
String fileUrl= WordUtil.createWord(templatePath,url,uuidName,params);
File tempFile =new File(fileUrl);
String fileName = tempFile.getName();
FileRet fileRet=new FileRet(fileName,fileUrl,preview+"report/"+fileName);
return fileRet;
}
@Override
public void download(String url, String name, HttpServletResponse response, HttpServletRequest httpServletRequest) {
// response.setHeader("content-type", "application/octet-stream");
......
package com.tykj.dev.device.file.service;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.file.entity.WrodParameter;
import javax.servlet.http.HttpServletRequest;
......@@ -10,6 +11,9 @@ import java.io.IOException;
public interface UseReportFIleService {
void findToFileService(WrodParameter wrodParameter, HttpServletResponse response, HttpServletRequest httpServletRequest,String docModel) throws IOException;
FileRet findToFileServiceToFileRet(WrodParameter wrodParameter,String docModel) throws IOException;
void download(String url, String name, HttpServletResponse response, HttpServletRequest httpServletRequest);
}
package com.tykj.dev.device.usereport.controller;
import com.tykj.dev.config.swagger.AutoDocument;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.file.entity.WrodParameter;
import com.tykj.dev.device.file.service.UseReportFIleService;
import com.tykj.dev.device.user.cache.UnitsCache;
......@@ -134,4 +135,12 @@ public class DeviceUseReportController {
}
return ResponseEntity.ok("下载成功");
}
@ApiOperation(value = "装备使用报告文件修改接口", notes = "装备使用报告下载")
@PostMapping("/updateUseReport/{id}")
public ResponseEntity getDownloadUrl(@PathVariable("id") int id, @RequestBody List<FileRet> fileRets) throws IOException {
deviceUseReportService.updateUseReport(id,fileRets);
return ResponseEntity.ok("成功");
}
}
package com.tykj.dev.device.usereport.service;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.usereport.subject.domin.DeviceUseReport;
import com.tykj.dev.device.usereport.subject.vo.DeviceStatistics;
import com.tykj.dev.device.usereport.subject.vo.DeviceUseReportCreateVo;
......@@ -140,4 +141,11 @@ public interface DeviceUseReportService {
void delete(Integer id);
/**
* 更新文件使用情况报告信息
* @param id 业务id
* @param fileRets 新文件集合
*/
void updateUseReport(Integer id, List<FileRet> fileRets);
}
......@@ -10,6 +10,10 @@ import com.tykj.dev.device.allot.repository.AllotBillDao;
import com.tykj.dev.device.allot.subject.domin.AllotBackBill;
import com.tykj.dev.device.allot.subject.domin.AllotBill;
import com.tykj.dev.device.destroy.repository.DeviceDestroyBillDao;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.file.entity.WrodParameter;
import com.tykj.dev.device.file.service.FilesUtil;
import com.tykj.dev.device.file.service.UseReportFIleService;
import com.tykj.dev.device.library.repository.DeviceLibraryDao;
import com.tykj.dev.device.library.service.DeviceLibraryService;
import com.tykj.dev.device.library.subject.domin.DeviceLibrary;
......@@ -38,9 +42,12 @@ import com.tykj.dev.device.usereport.service.DeviceUseReportService;
import com.tykj.dev.device.usereport.subject.domin.DeviceUseReport;
import com.tykj.dev.device.usereport.subject.vo.DeviceStatistics;
import com.tykj.dev.device.usereport.subject.vo.DeviceUseReportCreateVo;
import com.tykj.dev.device.usereport.subject.vo.DeviceUseReportDetailVo;
import com.tykj.dev.device.usereport.subject.vo.DeviceUseReportSelectVo;
import com.tykj.dev.misc.base.ResultObj;
import com.tykj.dev.misc.utils.JacksonUtil;
import com.tykj.dev.misc.utils.StringSplitUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
......@@ -50,7 +57,12 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.persistence.Transient;
import java.io.IOException;
import java.lang.reflect.Field;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.*;
import static java.util.stream.Collectors.groupingBy;
......@@ -115,6 +127,9 @@ public class DeviceUseReportServiceImpl implements DeviceUseReportService {
@Resource
private UserCache userCache;
@Autowired
UseReportFIleService useReportFIleService;
@Override
public DeviceUseReport addEntity(DeviceUseReport deviceUseReportEntity) {
......@@ -137,7 +152,15 @@ public class DeviceUseReportServiceImpl implements DeviceUseReportService {
@Override
public Page<DeviceUseReport> getPage(DeviceUseReportSelectVo deviceUseReportSelectVo, Pageable pageable) {
return deviceUseReportDao.findAll(getSelectSpecification(deviceUseReportSelectVo), deviceUseReportSelectVo.getPageable());
Page<DeviceUseReport> all = deviceUseReportDao.findAll(getSelectSpecification(deviceUseReportSelectVo), deviceUseReportSelectVo.getPageable());
all.forEach(
deviceUseReport -> {
if (deviceUseReport.getFileJson()!=null ) {
deviceUseReport.setFileRet(FilesUtil.stringFileToList(deviceUseReport.getFileJson()));
}
}
);
return all;
}
@Override
......@@ -569,9 +592,73 @@ public class DeviceUseReportServiceImpl implements DeviceUseReportService {
+ "x" + sendAllotNum + "x" + receiveAllotNum + "x" + sendAllotBackNum
+ "x"+ receiveAllotBackNum + "x"+ sendBackNum + "x"+ scrapStatisticsNum
+ "x"+ packingNum + "x"+ retiredNum + "x"+ decommissioningStatisticsNum + "x"+toRepairBackNum+"x"+toRepairNum+"x");
DeviceUseReportDetailVo deviceUseReportDetailVo = toDeviceUseReportDetailVo(deviceUseReportEntity);
try {
List<FileRet> fileRets=new ArrayList<>();
FileRet fileRet = generateWord(deviceUseReportDetailVo);
fileRets.add(fileRet);
deviceUseReportEntity.setFileJson(FilesUtil.stringFileToList(fileRets));
} catch (IOException e) {
throw new RuntimeException(e);
}
return deviceUseReportDao.save(deviceUseReportEntity);
}
private DeviceUseReportDetailVo toDeviceUseReportDetailVo(DeviceUseReport deviceUseReport){
DeviceUseReportDetailVo deviceUseReportDetailVo = new DeviceUseReportDetailVo();
BeanUtils.copyProperties(deviceUseReport, deviceUseReportDetailVo);
//分解数量详情组合字段
List<Integer> list = StringSplitUtil.userIdSplit(deviceUseReport.getReportDetail());
if (list.size() > 15) {
deviceUseReportDetailVo.setDeviceNumber(list.get(0));
deviceUseReportDetailVo.setInLibraryNum(list.get(1));
deviceUseReportDetailVo.setSendRepairNum(list.get(2));
deviceUseReportDetailVo.setReceiveRepairNum(list.get(3));
deviceUseReportDetailVo.setDestoryNum(list.get(4));
deviceUseReportDetailVo.setSendAllotNum(list.get(5));
deviceUseReportDetailVo.setReceiveAllotNum(list.get(6));
deviceUseReportDetailVo.setSendAllotBackNum(list.get(7));
deviceUseReportDetailVo.setReceiveAllotBackNum(list.get(8));
deviceUseReportDetailVo.setSendBackNum(list.get(9));
deviceUseReportDetailVo.setScrapStatisticsNum(list.get(10));
deviceUseReportDetailVo.setPackingNum(list.get(11));
deviceUseReportDetailVo.setRetiredNum(list.get(12));
deviceUseReportDetailVo.setDecommissioningStatisticsNum(list.get(13));
deviceUseReportDetailVo.setToRepairBackNum(list.get(14));
deviceUseReportDetailVo.setToRepairNum(list.get(15));
}
return deviceUseReportDetailVo;
}
private FileRet generateWord(DeviceUseReportDetailVo deviceUseReportDetailVo) throws IOException {
//新建word模板
WrodParameter wrodParameter = deviceUseReportDetailVo.toWrodParameter();
Units units= unitsCache.findById(deviceUseReportDetailVo.getUnitId());
Instant instant = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8));
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
wrodParameter.setTime(localDateTime.getYear()+"年"+localDateTime.getMonthValue()+"月"+localDateTime.getDayOfMonth()+"日");
wrodParameter.setTitleUnitName(deviceUseReportDetailVo.getUnit());
Instant instant1 = deviceUseReportDetailVo.getStartTime().toInstant();
Instant instant2 = deviceUseReportDetailVo.getEndTime().toInstant();
LocalDateTime localDateTime1 = LocalDateTime.ofInstant(instant1, zone);
LocalDateTime localDateTime2 = LocalDateTime.ofInstant(instant2, zone);
String startTime= localDateTime1.getYear()+"年"+localDateTime1.getMonthValue()+"月"+localDateTime1.getDayOfMonth()+"日";
String endTime= localDateTime2.getYear()+"年"+localDateTime2.getMonthValue()+"月"+localDateTime2.getDayOfMonth()+"日";
wrodParameter.setTitleTimeStart(startTime);
wrodParameter.setTitleTimeEnd(endTime);
wrodParameter.setTitleAnnual(localDateTime.getYear());
if (units.getLevel()==1 && units.getType()==1) {
return useReportFIleService.findToFileServiceToFileRet(wrodParameter,"docxModel.docx");
}else if(units.getLevel()==2){
return useReportFIleService.findToFileServiceToFileRet(wrodParameter,"docxModel1.docx");
}else {
return useReportFIleService.findToFileServiceToFileRet(wrodParameter, "docxModel2.docx");
}
}
/**
* @param startDate 开始时间
* @param endDate 结束时间
......@@ -748,6 +835,13 @@ public class DeviceUseReportServiceImpl implements DeviceUseReportService {
deviceUseReportDao.deleteById(id);
}
@Override
public void updateUseReport(Integer id, List<FileRet> fileRets) {
DeviceUseReport one = getOne(id);
one.setFileJson(FilesUtil.stringFileToList(fileRets));
deviceUseReportDao.save(one);
}
private Specification<DeviceUseReport> getSelectSpecification(DeviceUseReportSelectVo deviceUseReportSelectVo) {
PredicateBuilder<DeviceUseReport> predicateBuilder = Specifications.and();
if (deviceUseReportSelectVo != null) {
......
package com.tykj.dev.device.usereport.subject.domin;
import com.tykj.dev.device.file.entity.FileRet;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -13,6 +14,7 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.util.Date;
import java.util.List;
/**
* entity class for device_use_report
......@@ -82,4 +84,12 @@ public class DeviceUseReport {
@ApiModelProperty(value = "报告结束时间")
private Date endTime;
@ApiModelProperty(value = "文件json数据")
@Column(name = "file_json",columnDefinition = "TEXT")
private String fileJson;
@Transient
@ApiModelProperty(value = "文件信息")
private List<FileRet> fileRet;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论