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;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists;
import com.spire.xls.Worksheet;
import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.PictureData;
......@@ -87,6 +89,12 @@ public class POIUtil {
}
public static String hc(List<Workbook> workbooks, String uuid) {
ByteArrayOutputStream bos = null;
InputStream is = null;
......@@ -229,19 +237,14 @@ public class POIUtil {
}
// public static void main(String[] args) {
// hc(Lists.newArrayList(),"1212");
//// 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){
////
//// }
//
//
// }
public static void main(String[] args) {
File file1 = new File("D://excel//封面.xlsx");
File file2 = new File("D://excel//检测报告(力学试验)三轴.xlsx");
}
/**
......
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
......@@ -21,6 +23,8 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.util.List;
......@@ -83,4 +87,36 @@ public class SoilAloneSampleAnnexController extends ServiceController {
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> 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 {
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, 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")
public RestResult<Page<SoilAloneSampleVO>> getPageStorehouseSample(SoilAloneSampleVO soilAloneSample) {
return success(soilAloneSampleService.pageVO(getPage(), soilAloneSample));
......
package com.patzn.cloud.service.lims.soil.controller;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -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.SoilPrepareStatusEnum;
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.SoilSampleVO;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -490,8 +492,8 @@ public class SoilSampleController extends ServiceController {
@ApiOperation(value = "样品留存", notes = "样品留存")
@PostMapping("/sample_retain")
public RestResult<Boolean> sampleRetain(@RequestParam("ids")Long [] ids,@RequestParam("locationId")Long locationId,
@RequestParam("receiveLocation") String receiveLocation) {
return success(soilSampleService.sampleRetain(ids,locationId,receiveLocation,getAccount()));
@RequestParam("receiveLocation") String receiveLocation,@RequestParam("keepLimitTime") Date keepLimitTime) {
return success(soilSampleService.sampleRetain(ids,locationId,receiveLocation,keepLimitTime,getAccount()));
}
......@@ -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;
public interface SoilAloneSampleMapper extends BatchMapper<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;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService;
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;
/**
......@@ -17,4 +21,13 @@ public interface ISoilAloneSampleAnnexService extends IBaseService<SoilAloneSamp
Page<SoilAloneSampleAnnex> page(Page<SoilAloneSampleAnnex> page, SoilAloneSampleAnnex soilAloneSampleAnnex);
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> {
Page<SoilAloneSampleVO> pageVO(Page<SoilAloneSampleVO> page, SoilAloneSampleVO soilAloneSample);
boolean bathChangeStorehouse(Long[] ids, SoilAloneInOutStock aloneInOutStock, Account account);
Page<SoilAloneSampleVO> pageVOSampleOfStorehouse(Page<SoilAloneSampleVO> page, SoilAloneSampleVO soilAloneSample);
}
package com.patzn.cloud.service.lims.soil.service;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -61,7 +62,7 @@ public interface ISoilSampleService extends IBaseService<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);
......@@ -80,4 +81,6 @@ public interface ISoilSampleService extends IBaseService<SoilSample> {
boolean prepareCheckBack(Long[] ids, String remark, Account account);
SoilSample getBySampleCode(String sampleCode);
Page<SoilSampleVO> listSampleProgress(Page<SoilSampleVO> page, SoilSampleVO vo);
}
package com.patzn.cloud.service.lims.soil.service.impl;
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.service.ISoilAloneSampleAnnexService;
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.SoilSamplePhoto;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
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;
/**
......@@ -21,6 +35,14 @@ import java.util.List;
@Service
public class SoilAloneSampleAnnexServiceImpl extends BaseServiceImpl<SoilAloneSampleAnnexMapper, SoilAloneSampleAnnex> implements ISoilAloneSampleAnnexService {
@Autowired
private OssClient ossClient;
@Autowired
private ISoilAloneSampleService soilAloneSampleService;
@Override
public Page<SoilAloneSampleAnnex> page(Page<SoilAloneSampleAnnex> page, SoilAloneSampleAnnex soilAloneSampleAnnex) {
Wrapper wrapper = new EntityWrapper<>(soilAloneSampleAnnex);
......@@ -32,4 +54,60 @@ public class SoilAloneSampleAnnexServiceImpl extends BaseServiceImpl<SoilAloneSa
public boolean removeByIds(List<Long> ids) {
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
SoilAloneSample sample = soilAloneSample.convert(SoilAloneSample.class);
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())){
wrapper.in("status",soilAloneSample.getStatusList());
}
......@@ -141,4 +155,9 @@ public class SoilAloneSampleServiceImpl extends BaseServiceImpl<SoilAloneSampleM
RestAssert.fail(StringUtils.isBlank(aloneInOutStock.getShelfCode()),"请填写货架号");
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;
import com.aspose.cells.Workbook;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
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.OssFileResult;
import com.patzn.cloud.service.lims.common.AsposeUtil;
import com.patzn.cloud.service.lims.common.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.common.POIUtil;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
......@@ -22,7 +25,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.openxml4j.util.ZipSecureFile;
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.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -154,6 +156,7 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
mapReplace.put("#{client}",entrust.getClient());
mapReplace.put("#{boreholeName}",entrust.getBoreholeName());
mapReplace.put("#{projectNo}",entrust.getProjectNo());
mapReplace.put("#{testType}",entrust.getTestType());
int sheetNums = xssfWorkbook.getNumberOfSheets();
......@@ -222,6 +225,7 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
}
SoilSampleVO vo = sample.convert(SoilSampleVO.class);
vo.setExperimentVOList(vosList);
vo.setBoreholeName(entrust.getBoreholeName());
voList.add(vo);
}
}
......@@ -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){
bookList.add(xssfWorkbook);
try {
workbook = new Workbook(exportToExcelInputStream(xssfWorkbook));
}catch (Exception e){
}
}
for (SoilExpReport report:reportList) {
XSSFWorkbook workbook = HSSFWorkbookUtil.getWorkbookByIO(ossClient.download(report.getObjectKey()));
if (null!=workbook){
bookList.add(workbook);
try {
Workbook book = new Workbook(ossClient.download(report.getObjectKey()));
if (null!=book){
bookList.add(book);
}
}catch (Exception e){
}
}
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");
fileOut = new FileOutputStream(allFileName);
newExcelCreat.write(fileOut);
fileOut.flush();
try {
File allFileName = AsposeUtil.mergeWork(entrust.getEntrustCode(),workbook,bookList);
OssFileResult result = ossClient.upload(allFileName);
SoilReport soilReport = new SoilReport();
......@@ -389,7 +369,11 @@ public class SoilExpReportServiceImpl extends BaseServiceImpl<SoilExpReportMappe
soilReport.setBucketName(result.getBucketName());
soilReport.setEntrustId(entrustId);
soilReport.setUri(result.getUri());
soilReport.setReportType(template.getClassType());
if (soilReportService.save(soilReport)){
FileUtils.deleteFiles(allFileName);
return soilReport;
}
}catch (Exception e){
......@@ -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) {
//map 返回值
Map<Integer, Map<Integer, byte[]>> map = new LinkedHashMap<>();
......
......@@ -7,6 +7,7 @@ import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
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.feign.lims.base.client.LmsUserGroupClient;
import com.patzn.cloud.service.lims.base.entity.LmsUserGroup;
......@@ -262,6 +263,49 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
@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) {
if (ArrayUtils.isEmpty(entrustIds)){
return true;
......@@ -286,10 +330,35 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
@Override
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){
if (CollectionUtils.isEmpty(sampleVOList)){
return sampleVOList;
......@@ -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) {
Set<String> nameSet = nameMap.get(soilSampleVO.getId());
Set<String> shortNameSet = shortNameMap.get(soilSampleVO.getId());
......@@ -690,8 +761,9 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
@Transactional(rollbackFor = Exception.class)
@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(null == keepLimitTime,"请选择留存有效期");
List<SoilExperiment> experimentList= soilExperimentService.list(Condition.create().setSqlSelect("id").in("sample_id",ids));
RestAssert.fail(null == locationId || StringUtils.isBlank(location),"请选择要存放的位置");
if (CollectionUtils.isNotEmpty(experimentList)){
......@@ -700,7 +772,7 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
SoilSample sample = new SoilSample();
sample.setStatus(SoilSampleStatusEnum.RETAIN);
sample.setProgress(SoilSampleStatusEnum.RETAIN);
sample.setKeepLimitTime(keepLimitTime);
soilSampleRecordService.record(SoilSampleStatusEnum.RECEIVE,SoilSampleStatusEnum.RECEIVE,ids,0,account,"不含有试验项目的样品进行留存");
soilSampleOperationService.recordReceiveInfo(ids,locationId,location,account);
return super.update(sample,Condition.create().in("id",ids));
......
......@@ -21,4 +21,33 @@
</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>
......@@ -142,6 +142,7 @@
WHERE e.deleted = 0
<include refid="sqlWhere"/>
ORDER BY e.ctime DESC
</select>
......
......@@ -15,6 +15,7 @@
s.site_no,
s.sample_code,
s.sample_depth,
s.keep_limit_time,
s.sample_pack,
s.sample_describe,
s.describe_detail,
......@@ -26,6 +27,7 @@
e.client,
e.project_no,
e.borehole_name,
e.project_name,
e.borehole_location,
e.water_depth,
e.entrust_code,
......@@ -62,6 +64,14 @@
</sql>
<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">
AND e.borehole_name LIKE CONCAT('%',#{vo.boreholeName},'%')
</if>
......
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 org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.*;
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
String aaa= "D:\\242398行.gds" ;
readFileByLine(aaa);
try {
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