Commit 9a10d877 by wangweidong

土工平台修改

parent 51dc5098
package com.patzn.cloud.service.lims.common;
import com.aspose.cells.SaveFormat;
import com.aspose.cells.Workbook;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileOutputStream;
import java.util.List;
public class AsposeUtil {
protected static final Logger logger = LoggerFactory.getLogger(AsposeUtil.class);
public static File mergeWork(String name,Workbook workbook, List<Workbook> workbooksList){
if (CollectionUtils.isEmpty(workbooksList)){
return null;
}
FileOutputStream fileOutputStream=null;
FileOutputStream fileOut=null;
try {
for (Workbook book:workbooksList) {
workbook.combine(book);
}
File tempFile = File.createTempFile(name+"pre",".xlsx");
fileOut =new FileOutputStream(tempFile);
workbook.save(fileOut, SaveFormat.XLSX);
XSSFWorkbook workbookOk = new XSSFWorkbook(tempFile);
workbookOk.setActiveSheet(0);
workbookOk.removeSheetAt(workbookOk.getNumberOfSheets()-1);
File file = File.createTempFile(name,".xlsx");
fileOutputStream=new FileOutputStream(file);
workbookOk.write(fileOutputStream);
fileOut.flush();
return file;
}catch (Exception e){
logger.error("合并EXCEL失败"+e.getMessage());
e.printStackTrace();
}finally {
try {
if (null !=fileOut){
fileOut.close();
}
if (null !=fileOutputStream){
fileOutputStream.close();
}
}catch (Exception e){
}
}
return null;
}
}
package com.patzn.cloud.service.lims.common; package com.patzn.cloud.service.lims.common;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.spire.xls.Worksheet;
import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.PictureData; import org.apache.poi.ss.usermodel.PictureData;
...@@ -87,6 +89,12 @@ public class POIUtil { ...@@ -87,6 +89,12 @@ public class POIUtil {
} }
public static String hc(List<Workbook> workbooks, String uuid) { public static String hc(List<Workbook> workbooks, String uuid) {
ByteArrayOutputStream bos = null; ByteArrayOutputStream bos = null;
InputStream is = null; InputStream is = null;
...@@ -229,19 +237,14 @@ public class POIUtil { ...@@ -229,19 +237,14 @@ public class POIUtil {
} }
// public static void main(String[] args) { public static void main(String[] args) {
// hc(Lists.newArrayList(),"1212"); File file1 = new File("D://excel//封面.xlsx");
//// File file2 = new File("D://excel//检测报告(力学试验)三轴.xlsx"); File file2 = new File("D://excel//检测报告(力学试验)三轴.xlsx");
//// try {
//// XSSFWorkbook workbook = new XSSFWorkbook(file2);
//// Map<String, Object> map = getPicturesFromXSSFSheet(workbook.getSheetAt(0));
//// System.out.println(map);
//// }catch (Exception e){ }
////
//// }
//
//
// }
/** /**
......
package com.patzn.cloud.service.lims.soil.controller; package com.patzn.cloud.service.lims.soil.controller;
import com.baomidou.kisso.annotation.Action;
import com.baomidou.kisso.annotation.Login;
import com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex; import com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.DeleteMapping;
...@@ -21,6 +23,8 @@ import io.swagger.annotations.Api; ...@@ -21,6 +23,8 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.util.List; import java.util.List;
...@@ -83,4 +87,36 @@ public class SoilAloneSampleAnnexController extends ServiceController { ...@@ -83,4 +87,36 @@ public class SoilAloneSampleAnnexController extends ServiceController {
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) { public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(soilAloneSampleAnnexService.removeByIds(ids)); return success(soilAloneSampleAnnexService.removeByIds(ids));
} }
@ApiOperation(value = "附件上传", notes = "附件上传")
@PostMapping("/upload/{entrustId}")
public RestResult<Boolean> upload(@PathVariable("entrustId") Long entrustId, MultipartFile file) {
return success(soilAloneSampleAnnexService.upload(file, entrustId));
}
@ApiOperation(value = "附件批量上传", notes = "附件批量上传")
@PostMapping("/upload_bath/{entrustId}")
public RestResult<Boolean> uploadBath(@PathVariable("entrustId") Long entrustId, MultipartHttpServletRequest httpServletRequest) {
return success(soilAloneSampleAnnexService.uploadBath(httpServletRequest, entrustId,getAccount()));
}
@ApiOperation(value = "下载附件", notes = "下载指定附件")
@GetMapping("/download/{id}")
public void downloadFile(@PathVariable("id")Long id) {
soilAloneSampleAnnexService.downloadFile(id, response);
}
@ApiOperation(value = "预览图片", notes = "预览图片")
@Login(action = Action.Skip)
@GetMapping("/view")
public void view(String objectKey) {
soilAloneSampleAnnexService.view(response, objectKey);
}
} }
...@@ -147,6 +147,21 @@ public class SoilAloneSampleController extends ServiceController { ...@@ -147,6 +147,21 @@ public class SoilAloneSampleController extends ServiceController {
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class), @ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class), @ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
}) })
@PostMapping("/page_sample_of_storehouse")
public RestResult<Page<SoilAloneSampleVO>> getPageSampleOfStorehouse(SoilAloneSampleVO soilAloneSample) {
return success(soilAloneSampleService.pageVOSampleOfStorehouse(getPage(), soilAloneSample));
}
@ApiOperation("库房样品管理分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page_storehouse_sample") @PostMapping("/page_storehouse_sample")
public RestResult<Page<SoilAloneSampleVO>> getPageStorehouseSample(SoilAloneSampleVO soilAloneSample) { public RestResult<Page<SoilAloneSampleVO>> getPageStorehouseSample(SoilAloneSampleVO soilAloneSample) {
return success(soilAloneSampleService.pageVO(getPage(), soilAloneSample)); return success(soilAloneSampleService.pageVO(getPage(), soilAloneSample));
......
package com.patzn.cloud.service.lims.soil.controller; package com.patzn.cloud.service.lims.soil.controller;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -9,6 +10,7 @@ import com.patzn.cloud.service.soil.dto.SoilPrepareDTO; ...@@ -9,6 +10,7 @@ import com.patzn.cloud.service.soil.dto.SoilPrepareDTO;
import com.patzn.cloud.service.soil.enums.SoilExpStatusEnum; import com.patzn.cloud.service.soil.enums.SoilExpStatusEnum;
import com.patzn.cloud.service.soil.enums.SoilPrepareStatusEnum; import com.patzn.cloud.service.soil.enums.SoilPrepareStatusEnum;
import com.patzn.cloud.service.soil.enums.SoilSampleStatusEnum; import com.patzn.cloud.service.soil.enums.SoilSampleStatusEnum;
import com.patzn.cloud.service.soil.vo.SoilExperimentVO;
import com.patzn.cloud.service.soil.vo.SoilPrepareVO; import com.patzn.cloud.service.soil.vo.SoilPrepareVO;
import com.patzn.cloud.service.soil.vo.SoilSampleVO; import com.patzn.cloud.service.soil.vo.SoilSampleVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -490,8 +492,8 @@ public class SoilSampleController extends ServiceController { ...@@ -490,8 +492,8 @@ public class SoilSampleController extends ServiceController {
@ApiOperation(value = "样品留存", notes = "样品留存") @ApiOperation(value = "样品留存", notes = "样品留存")
@PostMapping("/sample_retain") @PostMapping("/sample_retain")
public RestResult<Boolean> sampleRetain(@RequestParam("ids")Long [] ids,@RequestParam("locationId")Long locationId, public RestResult<Boolean> sampleRetain(@RequestParam("ids")Long [] ids,@RequestParam("locationId")Long locationId,
@RequestParam("receiveLocation") String receiveLocation) { @RequestParam("receiveLocation") String receiveLocation,@RequestParam("keepLimitTime") Date keepLimitTime) {
return success(soilSampleService.sampleRetain(ids,locationId,receiveLocation,getAccount())); return success(soilSampleService.sampleRetain(ids,locationId,receiveLocation,keepLimitTime,getAccount()));
} }
...@@ -523,4 +525,18 @@ public class SoilSampleController extends ServiceController { ...@@ -523,4 +525,18 @@ public class SoilSampleController extends ServiceController {
} }
@ApiOperation(value = "样品进度查询分页列表", notes = "试验项目查询分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataType = "String"),
})
@PostMapping("/list_sample_progress")
public RestResult<Page<SoilSampleVO>> listSampleProgress(SoilSampleVO vo) {
return success(soilSampleService.listSampleProgress(getPage(),vo));
}
} }
...@@ -20,4 +20,6 @@ import java.util.List; ...@@ -20,4 +20,6 @@ import java.util.List;
public interface SoilAloneSampleMapper extends BatchMapper<SoilAloneSample> { public interface SoilAloneSampleMapper extends BatchMapper<SoilAloneSample> {
List<SoilAloneSampleVO> selectVOList(RowBounds rowBounds, @Param("vo") SoilAloneSampleVO soilAloneSample); List<SoilAloneSampleVO> selectVOList(RowBounds rowBounds, @Param("vo") SoilAloneSampleVO soilAloneSample);
List<SoilAloneSampleVO> selectVOSampleOfStorehouseList(RowBounds rowBounds, SoilAloneSampleVO soilAloneSample);
} }
package com.patzn.cloud.service.lims.soil.service; package com.patzn.cloud.service.lims.soil.service;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService; import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex; import com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
/** /**
...@@ -17,4 +21,13 @@ public interface ISoilAloneSampleAnnexService extends IBaseService<SoilAloneSamp ...@@ -17,4 +21,13 @@ public interface ISoilAloneSampleAnnexService extends IBaseService<SoilAloneSamp
Page<SoilAloneSampleAnnex> page(Page<SoilAloneSampleAnnex> page, SoilAloneSampleAnnex soilAloneSampleAnnex); Page<SoilAloneSampleAnnex> page(Page<SoilAloneSampleAnnex> page, SoilAloneSampleAnnex soilAloneSampleAnnex);
boolean removeByIds(List<Long> ids); boolean removeByIds(List<Long> ids);
boolean upload(MultipartFile file, Long entrustId);
void downloadFile(Long id, HttpServletResponse response);
void view(HttpServletResponse response, String objectKey);
boolean uploadBath(MultipartHttpServletRequest httpServletRequest, Long entrustId, Account account);
} }
...@@ -30,4 +30,6 @@ public interface ISoilAloneSampleService extends IBaseService<SoilAloneSample> { ...@@ -30,4 +30,6 @@ public interface ISoilAloneSampleService extends IBaseService<SoilAloneSample> {
Page<SoilAloneSampleVO> pageVO(Page<SoilAloneSampleVO> page, SoilAloneSampleVO soilAloneSample); Page<SoilAloneSampleVO> pageVO(Page<SoilAloneSampleVO> page, SoilAloneSampleVO soilAloneSample);
boolean bathChangeStorehouse(Long[] ids, SoilAloneInOutStock aloneInOutStock, Account account); boolean bathChangeStorehouse(Long[] ids, SoilAloneInOutStock aloneInOutStock, Account account);
Page<SoilAloneSampleVO> pageVOSampleOfStorehouse(Page<SoilAloneSampleVO> page, SoilAloneSampleVO soilAloneSample);
} }
package com.patzn.cloud.service.lims.soil.service; package com.patzn.cloud.service.lims.soil.service;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -61,7 +62,7 @@ public interface ISoilSampleService extends IBaseService<SoilSample> { ...@@ -61,7 +62,7 @@ public interface ISoilSampleService extends IBaseService<SoilSample> {
Page<SoilSampleVO> pageLocationSample(Page<SoilSampleVO> page, SoilSampleVO soilSample); Page<SoilSampleVO> pageLocationSample(Page<SoilSampleVO> page, SoilSampleVO soilSample);
boolean sampleRetain(Long[] ids,Long locationId,String location, Account account); boolean sampleRetain(Long[] ids, Long locationId, String location, Date keepLimitTime, Account account);
boolean sampleBringOut(Long[] ids,Account account); boolean sampleBringOut(Long[] ids,Account account);
...@@ -80,4 +81,6 @@ public interface ISoilSampleService extends IBaseService<SoilSample> { ...@@ -80,4 +81,6 @@ public interface ISoilSampleService extends IBaseService<SoilSample> {
boolean prepareCheckBack(Long[] ids, String remark, Account account); boolean prepareCheckBack(Long[] ids, String remark, Account account);
SoilSample getBySampleCode(String sampleCode); SoilSample getBySampleCode(String sampleCode);
Page<SoilSampleVO> listSampleProgress(Page<SoilSampleVO> page, SoilSampleVO vo);
} }
package com.patzn.cloud.service.lims.soil.service.impl; package com.patzn.cloud.service.lims.soil.service.impl;
import com.baomidou.mybatisplus.mapper.Condition; import com.baomidou.mybatisplus.mapper.Condition;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.lims.soil.mapper.SoilAloneSampleAnnexMapper; import com.patzn.cloud.service.lims.soil.mapper.SoilAloneSampleAnnexMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilAloneSampleAnnexService; import com.patzn.cloud.service.lims.soil.service.ISoilAloneSampleAnnexService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.lims.soil.service.ISoilAloneSampleService;
import com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex; import com.patzn.cloud.service.soil.entity.SoilAloneSampleAnnex;
import com.patzn.cloud.service.soil.entity.SoilSamplePhoto;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
/** /**
...@@ -21,6 +35,14 @@ import java.util.List; ...@@ -21,6 +35,14 @@ import java.util.List;
@Service @Service
public class SoilAloneSampleAnnexServiceImpl extends BaseServiceImpl<SoilAloneSampleAnnexMapper, SoilAloneSampleAnnex> implements ISoilAloneSampleAnnexService { public class SoilAloneSampleAnnexServiceImpl extends BaseServiceImpl<SoilAloneSampleAnnexMapper, SoilAloneSampleAnnex> implements ISoilAloneSampleAnnexService {
@Autowired
private OssClient ossClient;
@Autowired
private ISoilAloneSampleService soilAloneSampleService;
@Override @Override
public Page<SoilAloneSampleAnnex> page(Page<SoilAloneSampleAnnex> page, SoilAloneSampleAnnex soilAloneSampleAnnex) { public Page<SoilAloneSampleAnnex> page(Page<SoilAloneSampleAnnex> page, SoilAloneSampleAnnex soilAloneSampleAnnex) {
Wrapper wrapper = new EntityWrapper<>(soilAloneSampleAnnex); Wrapper wrapper = new EntityWrapper<>(soilAloneSampleAnnex);
...@@ -32,4 +54,60 @@ public class SoilAloneSampleAnnexServiceImpl extends BaseServiceImpl<SoilAloneSa ...@@ -32,4 +54,60 @@ public class SoilAloneSampleAnnexServiceImpl extends BaseServiceImpl<SoilAloneSa
public boolean removeByIds(List<Long> ids) { public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
@Transactional(rollbackFor = Exception.class)
@Override
public boolean upload(MultipartFile file, Long entrustId) {
RestAssert.fail(null == entrustId,"请选择样品");
String fileName = file.getOriginalFilename();
RestAssert.fail(StringUtils.isBlank(fileName), "请上传文件");
if (null==soilAloneSampleService.getById(entrustId)){
RestAssert.fail("样品不存在");
}
OssFileResult result = ossClient.upload(file);
if (null == result) {
return false;
}
SoilAloneSampleAnnex sampleAnnex = new SoilAloneSampleAnnex();
sampleAnnex.setBucketName(result.getBucketName());
sampleAnnex.setType(result.getType());
sampleAnnex.setFileName(result.getName());
sampleAnnex.setObjectKey(result.getObjectKey());
sampleAnnex.setVersionId(result.getVersionId());
sampleAnnex.setAloneSampleId(entrustId);
return save(sampleAnnex);
}
@Override
public void downloadFile(Long id, HttpServletResponse response) {
SoilAloneSampleAnnex attachment = super.getById(id);
if (null == attachment) {
RestAssert.fail("抱歉!该照片不存在");
}
ossClient.download(attachment.getObjectKey(), attachment.getFileName() + "." + attachment.getType(), response);
}
@Override
public void view(HttpServletResponse response, String objectKey) {
ossClient.download(objectKey, response);
}
@Override
public boolean uploadBath(MultipartHttpServletRequest multipartHttpServletRequest, Long entrustId, Account account) {
// 先拿到文件名称的迭代器
Iterator<String> fileNamesIt = multipartHttpServletRequest.getFileNames();
List<String> failedNameList = new ArrayList<>();
while (fileNamesIt.hasNext()) {
String fileName = fileNamesIt.next();
// 获取文件
MultipartFile multipartFile = multipartHttpServletRequest.getFile(fileName);
upload(multipartFile,entrustId);
failedNameList.add(fileName);
}
return true;
}
} }
...@@ -43,6 +43,20 @@ public class SoilAloneSampleServiceImpl extends BaseServiceImpl<SoilAloneSampleM ...@@ -43,6 +43,20 @@ public class SoilAloneSampleServiceImpl extends BaseServiceImpl<SoilAloneSampleM
SoilAloneSample sample = soilAloneSample.convert(SoilAloneSample.class); SoilAloneSample sample = soilAloneSample.convert(SoilAloneSample.class);
Wrapper wrapper = new EntityWrapper<>(sample); Wrapper wrapper = new EntityWrapper<>(sample);
if (StringUtils.isNotBlank(sample.getBoreholeName())){
wrapper.like("borehole_name",sample.getBoreholeName());
sample.setBoreholeName(null);
}
if (StringUtils.isNotBlank(sample.getProjectName())){
wrapper.like("project_name",sample.getProjectName());
sample.setProjectName(null);
}
if (StringUtils.isNotBlank(sample.getProjectLeader())){
wrapper.like("project_leader",sample.getProjectLeader());
sample.setProjectLeader(null);
}
if (CollectionUtils.isNotEmpty(soilAloneSample.getStatusList())){ if (CollectionUtils.isNotEmpty(soilAloneSample.getStatusList())){
wrapper.in("status",soilAloneSample.getStatusList()); wrapper.in("status",soilAloneSample.getStatusList());
} }
...@@ -141,4 +155,9 @@ public class SoilAloneSampleServiceImpl extends BaseServiceImpl<SoilAloneSampleM ...@@ -141,4 +155,9 @@ public class SoilAloneSampleServiceImpl extends BaseServiceImpl<SoilAloneSampleM
RestAssert.fail(StringUtils.isBlank(aloneInOutStock.getShelfCode()),"请填写货架号"); RestAssert.fail(StringUtils.isBlank(aloneInOutStock.getShelfCode()),"请填写货架号");
return soilAloneInOutStockService.update(aloneInOutStock,Condition.create().in("alone_sample_id",ids)); return soilAloneInOutStockService.update(aloneInOutStock,Condition.create().in("alone_sample_id",ids));
} }
@Override
public Page<SoilAloneSampleVO> pageVOSampleOfStorehouse(Page<SoilAloneSampleVO> page, SoilAloneSampleVO soilAloneSample) {
return page.setRecords(baseMapper.selectVOSampleOfStorehouseList(page,soilAloneSample));
}
} }
package com.patzn.cloud.service.lims.soil.service.impl; package com.patzn.cloud.service.lims.soil.service.impl;
import com.aspose.cells.Workbook;
import com.baomidou.mybatisplus.mapper.Condition; import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils; import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert; import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper; import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.toolkit.FileUtils;
import com.patzn.cloud.oss.starter.OssClient; import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult; import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.lims.common.AsposeUtil;
import com.patzn.cloud.service.lims.common.HSSFWorkbookUtil; import com.patzn.cloud.service.lims.common.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.common.POIUtil; import com.patzn.cloud.service.lims.common.POIUtil;
import com.patzn.cloud.service.lims.common.StringHandleUtils; import com.patzn.cloud.service.lims.common.StringHandleUtils;
...@@ -22,7 +25,6 @@ import org.apache.commons.lang3.StringUtils; ...@@ -22,7 +25,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.openxml4j.util.ZipSecureFile;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*; import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -154,6 +156,7 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe ...@@ -154,6 +156,7 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
mapReplace.put("#{client}",entrust.getClient()); mapReplace.put("#{client}",entrust.getClient());
mapReplace.put("#{boreholeName}",entrust.getBoreholeName()); mapReplace.put("#{boreholeName}",entrust.getBoreholeName());
mapReplace.put("#{projectNo}",entrust.getProjectNo()); mapReplace.put("#{projectNo}",entrust.getProjectNo());
mapReplace.put("#{testType}",entrust.getTestType());
int sheetNums = xssfWorkbook.getNumberOfSheets(); int sheetNums = xssfWorkbook.getNumberOfSheets();
...@@ -222,6 +225,7 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe ...@@ -222,6 +225,7 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
} }
SoilSampleVO vo = sample.convert(SoilSampleVO.class); SoilSampleVO vo = sample.convert(SoilSampleVO.class);
vo.setExperimentVOList(vosList); vo.setExperimentVOList(vosList);
vo.setBoreholeName(entrust.getBoreholeName());
voList.add(vo); voList.add(vo);
} }
} }
...@@ -319,66 +323,42 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe ...@@ -319,66 +323,42 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
} }
} }
List<XSSFWorkbook> bookList = new ArrayList<>(); List<Workbook> bookList = new ArrayList<>();
Workbook workbook =null;
if (null !=xssfWorkbook){ if (null !=xssfWorkbook){
bookList.add(xssfWorkbook); try {
workbook = new Workbook(exportToExcelInputStream(xssfWorkbook));
}catch (Exception e){
}
} }
for (SoilExpReport report:reportList) { for (SoilExpReport report:reportList) {
XSSFWorkbook workbook = HSSFWorkbookUtil.getWorkbookByIO(ossClient.download(report.getObjectKey())); try {
if (null!=workbook){ Workbook book = new Workbook(ossClient.download(report.getObjectKey()));
bookList.add(workbook); if (null!=book){
bookList.add(book);
}
}catch (Exception e){
} }
} }
for (SoilAppendix appendix:appendixList) { for (SoilAppendix appendix:appendixList) {
XSSFWorkbook workbook = HSSFWorkbookUtil.getWorkbookByIO(ossClient.download(appendix.getObjectKey()));
if (null!=workbook){
bookList.add(workbook);
}
}
if (CollectionUtils.isNotEmpty(bookList)){
ZipSecureFile.setMinInflateRatio(-1.0d);
XSSFWorkbook newExcelCreat = new XSSFWorkbook();
ByteArrayOutputStream bos = null;
InputStream is = null;
FileOutputStream fileOut=null;
try {
for (Workbook workbook : bookList) {
bos = new ByteArrayOutputStream();
workbook.write(bos);
byte[] barray = bos.toByteArray();
is = new ByteArrayInputStream(barray);
XSSFWorkbook fromExcel = new XSSFWorkbook(is);
int sheetNum = fromExcel.getNumberOfSheets();
for (int i = 0; i < sheetNum; i++) {
if (!fromExcel.isSheetHidden(i)){
XSSFSheet oldSheet = fromExcel.getSheetAt(i);
if (null == newExcelCreat.getName(oldSheet.getSheetName())){
XSSFSheet newSheet = newExcelCreat.createSheet(oldSheet.getSheetName());
POIUtil.copySheet(newExcelCreat, oldSheet, newSheet);
}else{
XSSFSheet newSheet = newExcelCreat.createSheet(oldSheet.getSheetName()+i);
POIUtil.copySheet(newExcelCreat, oldSheet, newSheet);
}
} try {
} Workbook book = new Workbook(ossClient.download(appendix.getObjectKey()));
if (null!=book){
bookList.add(book);
} }
int sheetNs = newExcelCreat.getNumberOfSheets(); }catch (Exception e){
for (int i = 0; i < sheetNs; i++) { }
if (!newExcelCreat.isSheetHidden(i)){
HSSFWorkbookUtil.insertImageByRowColFile(newExcelCreat,newExcelCreat.getSheetAt(i),0,0, new File(fileFolderPath("logo.png")));
}
}
}
if (CollectionUtils.isNotEmpty(bookList)){
File allFileName = File.createTempFile(entrust.getEntrustCode()+"report",".xlsx"); try {
fileOut = new FileOutputStream(allFileName); File allFileName = AsposeUtil.mergeWork(entrust.getEntrustCode(),workbook,bookList);
newExcelCreat.write(fileOut);
fileOut.flush();
OssFileResult result = ossClient.upload(allFileName); OssFileResult result = ossClient.upload(allFileName);
SoilReport soilReport = new SoilReport(); SoilReport soilReport = new SoilReport();
...@@ -389,7 +369,11 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe ...@@ -389,7 +369,11 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
soilReport.setBucketName(result.getBucketName()); soilReport.setBucketName(result.getBucketName());
soilReport.setEntrustId(entrustId); soilReport.setEntrustId(entrustId);
soilReport.setUri(result.getUri()); soilReport.setUri(result.getUri());
soilReport.setReportType(template.getClassType());
if (soilReportService.save(soilReport)){ if (soilReportService.save(soilReport)){
FileUtils.deleteFiles(allFileName);
return soilReport; return soilReport;
} }
}catch (Exception e){ }catch (Exception e){
...@@ -406,6 +390,20 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe ...@@ -406,6 +390,20 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
} }
public InputStream exportToExcelInputStream(XSSFWorkbook workbook) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
workbook.write(bos);
byte[] array = bos.toByteArray();
InputStream is = new ByteArrayInputStream(array);
return is;
}catch (Exception e){
logger.error("exportToExcelInputStream转化失败"+e.getMessage());
}
return null;
}
private Map<Integer, Map<Integer, byte[]>> picture(Sheet sheet) { private Map<Integer, Map<Integer, byte[]>> picture(Sheet sheet) {
//map 返回值 //map 返回值
Map<Integer, Map<Integer, byte[]>> map = new LinkedHashMap<>(); Map<Integer, Map<Integer, byte[]>> map = new LinkedHashMap<>();
......
...@@ -7,6 +7,7 @@ import com.google.common.collect.Lists; ...@@ -7,6 +7,7 @@ import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert; import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper; import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.StringHandleUtils; import com.patzn.cloud.commons.toolkit.StringHandleUtils;
import com.patzn.cloud.feign.lims.base.client.LmsUserGroupClient; import com.patzn.cloud.feign.lims.base.client.LmsUserGroupClient;
import com.patzn.cloud.service.lims.base.entity.LmsUserGroup; import com.patzn.cloud.service.lims.base.entity.LmsUserGroup;
...@@ -262,6 +263,49 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi ...@@ -262,6 +263,49 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
@Override @Override
public Page<SoilSampleVO> listSampleProgress(Page<SoilSampleVO> page, SoilSampleVO vo) {
List<SoilSampleVO> voList = baseMapper.selectVOList(page,vo);
if (CollectionUtils.isEmpty(voList)){
return page;
}
List<Long> sampelIds = voList.stream().map(s->{
return s.getId();
}).collect(Collectors.toList());
List<SoilExperiment> experimentList = soilExperimentService.list(Condition.create().setSqlSelect("id","sample_id","name","status").in("sample_id",sampelIds));
for (SoilSampleVO sampleVO:voList) {
List<String> notOkList = new ArrayList<>();
int all = 0;
int okNum = 0;
for (SoilExperiment t:experimentList) {
if (t.getSampleId().equals(sampleVO.getId())){
all++;
if (SoilExpStatusEnum.END.equals(t.getStatus())){
okNum++;
}else{
notOkList.add(t.getName());
}
}
}
sampleVO.setTestProgress(okNum+"/"+all);
if (all == 0){
sampleVO.setTestProgressPer(0D);
}else{
sampleVO.setTestProgressPer((Double.parseDouble(""+okNum)/Double.parseDouble(""+all))*100);
}
sampleVO.setExpNotEnd(com.patzn.cloud.service.lims.common.StringHandleUtils.join(notOkList));
}
return page.setRecords(voList);
}
@Override
public boolean checkEntrustHaveSample(Long[] entrustIds) { public boolean checkEntrustHaveSample(Long[] entrustIds) {
if (ArrayUtils.isEmpty(entrustIds)){ if (ArrayUtils.isEmpty(entrustIds)){
return true; return true;
...@@ -286,10 +330,35 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi ...@@ -286,10 +330,35 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
@Override @Override
public Page<SoilSampleVO> pageVO(Page<SoilSampleVO> page, SoilSampleVO soilSample) { public Page<SoilSampleVO> pageVO(Page<SoilSampleVO> page, SoilSampleVO soilSample) {
return page.setRecords(initItemInfo(baseMapper.selectVOList(page,soilSample))); return page.setRecords(initKeepRemind(initItemInfo(baseMapper.selectVOList(page,soilSample))));
} }
public List<SoilSampleVO> initKeepRemind(List<SoilSampleVO> sampleVOList){
if (CollectionUtils.isEmpty(sampleVOList)){
return sampleVOList;
}
Date date = new Date();
Date dateT = DateUtils.dateAddDays(date,2);
for (SoilSampleVO soilSampleVO:sampleVOList) {
if (null != soilSampleVO.getKeepLimitTime()){
if (date.after(soilSampleVO.getKeepLimitTime())){
soilSampleVO.setKeepReminder(1);
}else if (dateT.after(soilSampleVO.getKeepLimitTime())){
soilSampleVO.setKeepReminder(1);
}else{
soilSampleVO.setKeepReminder(0);
}
}else{
soilSampleVO.setKeepReminder(0);
}
}
return sampleVOList;
}
public List<SoilSampleVO> initItemInfo(List<SoilSampleVO> sampleVOList){ public List<SoilSampleVO> initItemInfo(List<SoilSampleVO> sampleVOList){
if (CollectionUtils.isEmpty(sampleVOList)){ if (CollectionUtils.isEmpty(sampleVOList)){
return sampleVOList; return sampleVOList;
...@@ -329,6 +398,8 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi ...@@ -329,6 +398,8 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
} }
Date date = new Date();
Date dateT = DateUtils.dateAddDays(date,2);
for (SoilSampleVO soilSampleVO:sampleVOList) { for (SoilSampleVO soilSampleVO:sampleVOList) {
Set<String> nameSet = nameMap.get(soilSampleVO.getId()); Set<String> nameSet = nameMap.get(soilSampleVO.getId());
Set<String> shortNameSet = shortNameMap.get(soilSampleVO.getId()); Set<String> shortNameSet = shortNameMap.get(soilSampleVO.getId());
...@@ -690,8 +761,9 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi ...@@ -690,8 +761,9 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean sampleRetain(Long[] ids,Long locationId,String location, Account account) { public boolean sampleRetain(Long[] ids,Long locationId,String location, Date keepLimitTime, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择试样"); RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择试样");
RestAssert.fail(null == keepLimitTime,"请选择留存有效期");
List<SoilExperiment> experimentList= soilExperimentService.list(Condition.create().setSqlSelect("id").in("sample_id",ids)); List<SoilExperiment> experimentList= soilExperimentService.list(Condition.create().setSqlSelect("id").in("sample_id",ids));
RestAssert.fail(null == locationId || StringUtils.isBlank(location),"请选择要存放的位置"); RestAssert.fail(null == locationId || StringUtils.isBlank(location),"请选择要存放的位置");
if (CollectionUtils.isNotEmpty(experimentList)){ if (CollectionUtils.isNotEmpty(experimentList)){
...@@ -700,7 +772,7 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi ...@@ -700,7 +772,7 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
SoilSample sample = new SoilSample(); SoilSample sample = new SoilSample();
sample.setStatus(SoilSampleStatusEnum.RETAIN); sample.setStatus(SoilSampleStatusEnum.RETAIN);
sample.setProgress(SoilSampleStatusEnum.RETAIN); sample.setProgress(SoilSampleStatusEnum.RETAIN);
sample.setKeepLimitTime(keepLimitTime);
soilSampleRecordService.record(SoilSampleStatusEnum.RECEIVE,SoilSampleStatusEnum.RECEIVE,ids,0,account,"不含有试验项目的样品进行留存"); soilSampleRecordService.record(SoilSampleStatusEnum.RECEIVE,SoilSampleStatusEnum.RECEIVE,ids,0,account,"不含有试验项目的样品进行留存");
soilSampleOperationService.recordReceiveInfo(ids,locationId,location,account); soilSampleOperationService.recordReceiveInfo(ids,locationId,location,account);
return super.update(sample,Condition.create().in("id",ids)); return super.update(sample,Condition.create().in("id",ids));
......
...@@ -21,4 +21,33 @@ ...@@ -21,4 +21,33 @@
</select> </select>
<select id="selectVOSampleOfStorehouseList" resultType="com.patzn.cloud.service.soil.vo.SoilAloneSampleVO">
SELECT
s.id,s.receiver,s.receive_time,s.project_name,s.project_leader,s.borehole_name,s.cases_num,s.registrant,s.regist_time,
o.storehouse,o.shelf_code,o.instock_time,o.keep_limit_time
FROM
soil_alone_sample s
JOIN soil_alone_in_out_stock o ON s.ID = o.alone_sample_id
WHERE s.deleted = 0
<if test="vo.boreholeName">
AND s.borehole_name LIKE CONCAT('%',#{vo.boreholeName},'%')
</if>
<if test="vo.storehouse">
AND o.storehouse = #{vo.storehouse}
</if>
<if test="vo.shelfCode">
AND o.shelf_code = #{vo.shelfCode}
</if>
</select>
</mapper> </mapper>
...@@ -142,6 +142,7 @@ ...@@ -142,6 +142,7 @@
WHERE e.deleted = 0 WHERE e.deleted = 0
<include refid="sqlWhere"/> <include refid="sqlWhere"/>
ORDER BY e.ctime DESC
</select> </select>
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
s.site_no, s.site_no,
s.sample_code, s.sample_code,
s.sample_depth, s.sample_depth,
s.keep_limit_time,
s.sample_pack, s.sample_pack,
s.sample_describe, s.sample_describe,
s.describe_detail, s.describe_detail,
...@@ -26,6 +27,7 @@ ...@@ -26,6 +27,7 @@
e.client, e.client,
e.project_no, e.project_no,
e.borehole_name, e.borehole_name,
e.project_name,
e.borehole_location, e.borehole_location,
e.water_depth, e.water_depth,
e.entrust_code, e.entrust_code,
...@@ -62,6 +64,14 @@ ...@@ -62,6 +64,14 @@
</sql> </sql>
<sql id="eWhere"> <sql id="eWhere">
<if test="null!=vo.entrustCode">
AND e.entrust_code LIKE CONCAT('%',#{vo.entrustCode},'%')
</if>
<if test="null!=vo.projectName">
AND e.project_name LIKE CONCAT('%',#{vo.projectName},'%')
</if>
<if test="null!=vo.boreholeName"> <if test="null!=vo.boreholeName">
AND e.borehole_name LIKE CONCAT('%',#{vo.boreholeName},'%') AND e.borehole_name LIKE CONCAT('%',#{vo.boreholeName},'%')
</if> </if>
......
package com.patzn.cloud.service.lims.test; package com.patzn.cloud.service.lims.test;
import com.aspose.cells.SaveFormat;
import com.aspose.cells.Workbook;
import com.patzn.cloud.service.lims.common.OrderNumUtil; import com.patzn.cloud.service.lims.common.OrderNumUtil;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.BufferedReader; import java.io.*;
import java.io.File;
import java.io.FileReader;
import java.math.BigDecimal; import java.math.BigDecimal;
public class Test { public class Test {
public static void main(String[] args) { public static void main(String[] args) {
String aaa= "D:\\242398行.gds" ; try {
readFileByLine(aaa); Workbook workbook1 = new Workbook("D://excel//封面.xlsx");
Workbook workbook2 = new Workbook("D://excel//检测报告(力学试验)三轴.xlsx");
Workbook workbook3 = new Workbook("D://excel//检测报告(力学试验)手动十字板.xlsx");
Workbook workbook4 = new Workbook("D://excel//检测报告(力学试验)休止角.xlsx");
Workbook workbook5 = new Workbook("D://excel//检测报告(力学试验)袖珍贯入仪.xlsx");
Workbook workbook6 = new Workbook("D://excel//检测报告(力学试验)直剪.xlsx");
Workbook workbook7 = new Workbook("D://excel//附件.xlsx");
workbook1.combine(workbook2);
workbook1.combine(workbook3);
workbook1.combine(workbook4);
workbook1.combine(workbook5);
workbook1.combine(workbook6);
workbook1.combine(workbook7);
FileOutputStream fileOut=null;
String allFileName = "d:/excel/0.xlsx";
fileOut = new FileOutputStream(allFileName);
workbook1.save(fileOut, SaveFormat.XLSX);
File file = new File(allFileName);
XSSFWorkbook workbook = new XSSFWorkbook(file);
workbook.setActiveSheet(0);
workbook.removeSheetAt(workbook.getNumberOfSheets()-1);
FileOutputStream fileOutOK=null;
String allFileNameOK = "d:/excel/1.xlsx";
fileOutOK = new FileOutputStream(allFileNameOK);
workbook.write(fileOutOK);
fileOut.flush();
fileOut.flush();
}catch (Exception e){
}
......
package com.patzn.cloud.service.lims.test;
public class Ytest {
public static void main(String[] args) {
Double a = Double.parseDouble("0");
Double b = Double.parseDouble("0");
System.out.println(a/b);
}
}
INSERT INTO "public"."sys_resource"("id", "system_id", "pid", "name", "type", "code", "uri", "icon", "remark", "status", "sort", "ctime", "ename") VALUES (1344190601411657730, 1304006677087891457, 1310765372454940673, '样品进度查询', 0, 'sample_progress', '/soil/statistics/sample_progress', 'pt-config', NULL, 1, 90, '2020-12-30 15:56:27.887', NULL);
INSERT INTO "public"."sys_resource"("id", "system_id", "pid", "name", "type", "code", "uri", "icon", "remark", "status", "sort", "ctime", "ename") VALUES (1344190601411657730, 1304006677087891457, 1310765372454940673, '样品进度查询', 0, 'sample_progress', '/soil/statistics/sample_progress', 'pt-config', NULL, 1, 90, '2020-12-30 15:56:27.887', NULL);
ALTER TABLE "public"."soil_sample"
ALTER TABLE "public"."soil_sample"
ADD COLUMN "keep_limit_time" timestamp(6);
COMMENT ON COLUMN "public"."soil_sample"."keep_limit_time" IS '留存有效期';
ALTER TABLE "public"."soil_report"
ADD COLUMN "report_type" varchar(255);
COMMENT ON COLUMN "public"."soil_report"."report_type" IS '报告类型';
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment