Commit 8d26df93 by zhangmengqi

Merge branch 'dev'

parents 968ca4cd 4bfbaa0e
...@@ -32,6 +32,7 @@ import io.swagger.annotations.ApiImplicitParam; ...@@ -32,6 +32,7 @@ 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.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
/** /**
* <p> * <p>
...@@ -697,4 +698,12 @@ public class SoilExperimentController extends ServiceController { ...@@ -697,4 +698,12 @@ public class SoilExperimentController extends ServiceController {
return success(soilExperimentService.uploadGdsFile(file)); return success(soilExperimentService.uploadGdsFile(file));
} }
@ApiOperation(value = "力学采集文件批量上传", notes = "附件批量上传")
@PostMapping("/upload_dynamics_collect/{entrustId}")
public RestResult<Boolean> uploadDynamicsCollect(@PathVariable("entrustId") Long entrustId, MultipartHttpServletRequest httpServletRequest) {
return success(soilExperimentService.uploadDynamicsCollect(httpServletRequest, entrustId,getAccount()));
}
} }
...@@ -47,4 +47,6 @@ public interface SoilExperimentMapper extends BaseMapper<SoilExperiment> { ...@@ -47,4 +47,6 @@ public interface SoilExperimentMapper extends BaseMapper<SoilExperiment> {
List<SoilExperimentVO> listExpRightBath(Page<SoilExperimentVO> page, @Param("vo")SoilExperimentQueryDTO dto); List<SoilExperimentVO> listExpRightBath(Page<SoilExperimentVO> page, @Param("vo")SoilExperimentQueryDTO dto);
List<SoilExperimentVO> listGroupVOListByEntrustIds( @Param("entrustIdList")List<Long> entrustIdList); List<SoilExperimentVO> listGroupVOListByEntrustIds( @Param("entrustIdList")List<Long> entrustIdList);
List<SoilExperimentVO> selectByEntrustId( @Param("entrustId")Long entrustId);
} }
...@@ -15,6 +15,7 @@ import com.patzn.cloud.service.soil.statistics.SoilEntrustItemNumVO; ...@@ -15,6 +15,7 @@ import com.patzn.cloud.service.soil.statistics.SoilEntrustItemNumVO;
import com.patzn.cloud.service.soil.vo.SoilExperimentVO; import com.patzn.cloud.service.soil.vo.SoilExperimentVO;
import jcifs.smb.SmbFile; import jcifs.smb.SmbFile;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.util.List; import java.util.List;
...@@ -100,4 +101,6 @@ public interface ISoilExperimentService extends IBaseService<SoilExperiment> { ...@@ -100,4 +101,6 @@ public interface ISoilExperimentService extends IBaseService<SoilExperiment> {
SoilOpenSoilRecord saveExcelOpenSoilRecord(Long entrustId, Long templateId, Account account); SoilOpenSoilRecord saveExcelOpenSoilRecord(Long entrustId, Long templateId, Account account);
boolean uploadGdsFile(MultipartFile file); boolean uploadGdsFile(MultipartFile file);
boolean uploadDynamicsCollect(MultipartHttpServletRequest httpServletRequest, Long entrustId, Account account);
} }
...@@ -68,6 +68,7 @@ import com.baomidou.mybatisplus.mapper.Wrapper; ...@@ -68,6 +68,7 @@ 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.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
/** /**
* <p> * <p>
...@@ -2357,6 +2358,225 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap ...@@ -2357,6 +2358,225 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
} }
@Transactional(rollbackFor = Exception.class)
@Override
public boolean uploadDynamicsCollect(MultipartHttpServletRequest multipartHttpServletRequest, Long entrustId, Account account) {
RestAssert.fail(null == entrustId,"请选则委托单ID");
List<SoilExperimentVO> voList = baseMapper.selectByEntrustId(entrustId);
if (CollectionUtils.isEmpty(voList)){
RestAssert.fail("检测项目不存在");
}
Map<String,SoilExperimentVO> nameCodeList = new HashMap<>();
for (SoilExperimentVO experimentVO:voList) {
nameCodeList.put(experimentVO.getName()+experimentVO.getSampleCode(),experimentVO);
}
Iterator<String> fileNamesIt = multipartHttpServletRequest.getFileNames();
List<String> failedNameList = new ArrayList<>();
while (fileNamesIt.hasNext()) {
String fileName = fileNamesIt.next();
// 获取文件
MultipartFile multipartFile = multipartHttpServletRequest.getFile(fileName);
String name = multipartFile.getName();
String originalFilename = multipartFile.getOriginalFilename();
if (originalFilename.contains(".bmp")||originalFilename.contains(".txt")){
String nameCode = originalFilename.replace(".bmp","").replace(".txt","");
if (!nameCodeList.containsKey(nameCode)){
RestAssert.fail("请正确上传委托下的数据采集文件");
}
}else {
RestAssert.fail("请上传 .bmp 或者 .txt格式的文件");
}
failedNameList.add(fileName);
}
Iterator<String> fileNamesItOk = multipartHttpServletRequest.getFileNames();
while (fileNamesItOk.hasNext()) {
String fileName = fileNamesItOk.next();
// 获取文件
MultipartFile multipartFile = multipartHttpServletRequest.getFile(fileName);
String name = multipartFile.getName();
String originalFilename = multipartFile.getOriginalFilename();
String nameCode = originalFilename.replace(".bmp","").replace(".txt","");
SoilExperimentVO vo = nameCodeList.get(nameCode);
CollectDataType dataType = new CollectDataType();
dataType.setExpId(vo.getId());
dataType.setSampleCode(vo.getSampleCode());
dataType.setExperiment(vo.getName());
dataType.setEntrustCode(vo.getEntrustCode());
if (originalFilename.contains(".bmp")){
uploadCollectPng(multipartFile,dataType);
}else if (originalFilename.contains(".txt")){
parseTxt(multipartFile,dataType);
}
}
return true;
}
public boolean parseTxt(MultipartFile smbFile, CollectDataType request) {
try {
List<SoilExperimentCollectData> dataList= CollectUtil.txt2String(smbFile.getInputStream());
if (CollectionUtils.isNotEmpty(dataList)){
List<SoilItem> saveSoilItemList = new ArrayList<>();
String testMethod = null;
for (SoilExperimentCollectData collectData:dataList) {
collectData.setExpId(request.getExpId());
if ("试验方法".equals(collectData.getName())){
if (StringUtils.isNotBlank(testMethod)){
continue;
}
testMethod = collectData.getTestValue();
continue;
}
SoilItem item = new SoilItem();
item.setName(collectData.getName());
item.setTestValue(collectData.getTestValue());
item.setExperimentId(request.getExpId());
item.setUnit(collectData.getUnit());
saveSoilItemList.add(item);
}
if (CollectionUtils.isNotEmpty(saveSoilItemList)){
soilItemService.saveBatch(saveSoilItemList);
}
if (StringUtils.isNotBlank(testMethod)){
SoilExperiment experiment = new SoilExperiment();
experiment.setTestMethod(testMethod);
experiment.setId(request.getExpId());
super.updateById(experiment);
}
return soilExperimentCollectDataService.saveBatch(dataList);
}
}catch (Exception e){
e.printStackTrace();
}
return false;
}
public void uploadCollectPng(MultipartFile smbFile, CollectDataType type) {
if (type.getExpId()!=null){
SoilExperimentCollectFile collectFile = new SoilExperimentCollectFile();
collectFile.setExpId(type.getExpId());
InputStream is = null;
File fileNew = null;
try {
is= smbFile.getInputStream();
File file = File.createTempFile(StringHandleUtils.getFileNameNoEx(smbFile.getOriginalFilename()),smbFile.getOriginalFilename().replace(StringHandleUtils.getFileNameNoEx(smbFile.getOriginalFilename()),""));
FileOutputStream fos = new FileOutputStream(file);
byte[] bytes = new byte[1024*1024];
int index;
while ((index = is.read(bytes)) != -1) {
fos.write(bytes, 0, index);
fos.flush();
}
String name = smbFile.getOriginalFilename();
if (name.contains(type.getExperiment())){
SoilSample sample = soilSampleService.getBySampleCode(type.getSampleCode());
if (null !=sample){
XSSFWorkbook xssfWorkbook= exportService.getXSSFWorkbook("AttachmentTemplateSZYS.xlsx");
Map<String,File> fileMap=new HashMap<>();
fileMap.put("${picTest}",file);
int count = soilAppendixService.countByEntrustId(sample.getEntrustId())+1;
Map<String,String> replaceMap=new HashMap<>();
String testEnglish = "";
if("三轴压缩".equals(type.getExperiment())||type.getExperiment().contains("三轴压缩")){
testEnglish = "FIGURE OF TRIAXIAL COMPRESSION TEST";
}else if("直接剪切".equals(type.getExperiment())||"直剪".equals(type.getExperiment())){
testEnglish = "FIGURE OF DIRECT SHEAR TEST";
}else if("固结".equals(type.getExperiment())||"固结试验".equals(type.getExperiment())){
testEnglish = "FIGURE OF CONSOLIDATION TEST";
}else{
testEnglish = "FIGURE OF TRIAXIAL COMPRESSION TEST";
}
replaceMap.put("#{title}","附录"+(count)+" "+type.getExperiment()+"试验成果图\n" +
"APPENDIX "+count+" "+testEnglish);
try {
HSSFWorkbookUtil.replaceModel(replaceMap,xssfWorkbook);
HSSFWorkbookUtil.insertImage(xssfWorkbook,fileMap,true);
}catch (Exception e){
logger.error("generateExcelReport错误"+e.getMessage());
}
xssfWorkbook.setSheetName(0,"附录"+count+type.getExperiment());
FileOutputStream os;
fileNew = File.createTempFile(type.getSampleCode()+type.getExperiment(), ".xlsx");
os = new FileOutputStream(fileNew);
xssfWorkbook.write(os);
os.flush();
os.close();
xssfWorkbook.close();
OssFileResult result = ossClient.upload(fileNew);
SoilAppendix appendix = new SoilAppendix();
appendix.setSampleId(sample.getId());
appendix.setEntrustId(sample.getEntrustId());
appendix.setUname(LoginHelper.getAccount().getUserName());
appendix.setObjectKey(result.getObjectKey());
appendix.setName("附录"+count+" "+type.getExperiment()+"试验成果图");
appendix.setTitle("附录"+count);
appendix.setExpId(type.getExpId());
appendix.setSampleCode(type.getSampleCode());
appendix.setEntrustCode(type.getEntrustCode());
soilAppendixService.save(appendix);
}
}
is.close();
fos.close();
OssFileResult result = ossClient.upload(file);
collectFile.setObjectKey(result.getObjectKey());
collectFile.setBucketName(result.getBucketName());
collectFile.setVersionId(result.getVersionId());
collectFile.setFileName(result.getName());
soilExperimentCollectFileService.save(collectFile);
FileUtils.deleteFiles(file);
if (null!=fileNew){
FileUtils.deleteFiles(fileNew);
}
}catch (Exception e){
e.printStackTrace();
}
}
System.out.println(smbFile.getName());
System.out.println(type.getEntrustCode());
}
@Override @Override
public Page<SoilExperimentVO> pageBySampleIds(Page<SoilExperimentVO> page, Long[] sampleIds, SoilExperimentVO vo) { public Page<SoilExperimentVO> pageBySampleIds(Page<SoilExperimentVO> page, Long[] sampleIds, SoilExperimentVO vo) {
return page.setRecords(initOriginalRecord(baseMapper.selectListBySampleIds(page,sampleIds,vo))); return page.setRecords(initOriginalRecord(baseMapper.selectListBySampleIds(page,sampleIds,vo)));
......
...@@ -423,4 +423,21 @@ ...@@ -423,4 +423,21 @@
</select> </select>
<select id="selectByEntrustId" resultType="com.patzn.cloud.service.soil.vo.SoilExperimentVO">
SELECT i.id,i.name,s.sample_code FROM soil_experiment i
JOIN soil_sample s ON i.sample_id = s.id
JOIN soil_entrust e ON s.entrust_id = e.id
WHERE i.deleted = 0
AND s.deleted = 0
AND e.deleted = 0
AND e.id = #{entrustId}
</select>
</mapper> </mapper>
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