Commit 2d77bb1f by wangweidong

土工试验平台修改

parent b083b723
......@@ -11,6 +11,7 @@ import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
import java.util.regex.Matcher;
......@@ -75,6 +76,24 @@ public class StringHandleUtils {
}
public static boolean isAllFieldNull(Object object) {
Class clazz = object.getClass();
Field[] fields = clazz.getDeclaredFields();
try {
for (Field field:fields) {
field.setAccessible(true);
Object value = field.get(object);
if (value!=null){
return false;
}
}
}catch (Exception e){
e.printStackTrace();
}
return true;
}
public static String join(Collection<String> collection) {
return join(collection, "、");
}
......
......@@ -32,6 +32,8 @@ public final class StringStaticDataUtils {
public static final String MSG_TITLE_QC_TASK = "新的质控编制任务";
public static final Map<String,List<String>> mapItemFlows=new HashMap<>();
static {
List<String> draftItemList=new ArrayList<>();
draftItemList.add("ALLOT");
......@@ -247,4 +249,6 @@ public final class StringStaticDataUtils {
"编\n" +
"号");
}
}
......@@ -550,4 +550,19 @@ public class SoilEntrustController extends ServiceController {
@ApiOperation(value = "编辑导入试验委托单 EXCEL", notes = "导入导入试验委托单 EXCEL 的数据内容")
@PostMapping("/edit_import_entrust/")
public RestResult<Boolean> editImportEntrust(@RequestParam("id")Long id, MultipartFile file) {
return success(soilEntrustService.editImportEntrust(id,file,getAccount()));
}
@ApiOperation(value = "导出开土制备记录", notes = "导出开土制备记录")
@GetMapping("/export_soil_prepare_record")
public void exportSoilPrepareRecord(@RequestParam("ids")Long [] ids) {
soilEntrustService.exportSoilPrepareRecord(ids,response,getAccount());
}
}
......@@ -114,6 +114,17 @@ public class SoilExperimentController extends ServiceController {
}
@ApiOperation(value = "试验项目分配调整", notes = "试验项目分配调整")
@PostMapping("/change_exp_allot")
public RestResult<Boolean> changeExpAllot(@RequestParam("ids") Long [] ids ,
@RequestParam("user") String user,
@RequestParam("userId") Long userId ) {
return success(soilExperimentService.changeExpAllot(ids,user,userId,getAccount()));
}
@ApiOperation(value = "试验项目检测完成", notes = "试验项目检测完成")
@PostMapping("/end_exp")
public RestResult<Boolean> endExp(@RequestParam("ids") Long [] ids) {
......
......@@ -240,4 +240,11 @@ public class SoilPrepareController extends ServiceController {
return success(soilPrepareService.handleOk(ids,getAccount()));
}
@ApiOperation(value = "批量修改余样信息", notes = "批量修改余样信息")
@PostMapping("/bath_update_surplus_info")
public RestResult<Boolean> bathUpdateSurplusInfo(@RequestParam("ids") Long [] ids,SoilPrepare prepare) {
return success(soilPrepareService.bathUpdateSurplusInfo(ids,prepare,getAccount()));
}
}
......@@ -3,6 +3,7 @@ package com.patzn.cloud.service.lims.soil.controller;
import java.util.List;
import com.google.common.collect.Lists;
import com.patzn.cloud.service.soil.entity.SoilSample;
import com.patzn.cloud.service.soil.entity.SoilSampleBackup;
import com.patzn.cloud.service.soil.enums.SoilBackupStatusEnum;
import com.patzn.cloud.service.soil.vo.SoilSampleBackupVO;
......@@ -201,4 +202,11 @@ public class SoilSampleBackupController extends ServiceController {
return success(soilSampleBackupService.handleOk(ids,getAccount()));
}
@ApiOperation(value = "批量修改备样信息", notes = "批量修改备样信息")
@PostMapping("/bath_update_backup_info")
public RestResult<Boolean> bathUpdateBackupInfo(@RequestParam("ids") Long [] ids, SoilSampleBackup backup) {
return success(soilSampleBackupService.bathUpdateBackupInfo(ids,backup,getAccount()));
}
}
package com.patzn.cloud.service.lims.soil.controller;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.service.soil.dto.SoilPrepareDTO;
import com.patzn.cloud.service.soil.enums.SoilExpStatusEnum;
import com.patzn.cloud.service.soil.enums.SoilPrepareStatusEnum;
......@@ -24,6 +26,7 @@ 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;
/**
* <p>
......@@ -392,6 +395,14 @@ public class SoilSampleController extends ServiceController {
@ApiOperation(value = "留存样品检测", notes = "留存样品检测")
@PostMapping("/retain_sample_test")
public RestResult<Boolean> retainSampleTest(@RequestParam("ids")Long [] ids) {
return success(soilSampleService.retainSampleTest(ids,getAccount()));
}
@ApiOperation(value = "批量填写土质描述", notes = "批量填写土质描述")
@PostMapping("/write_soil_detail")
public RestResult<Boolean> writeSoilDetail(@RequestParam("ids")Long [] ids,@RequestParam("detail") String detail) {
......@@ -451,4 +462,16 @@ public class SoilSampleController extends ServiceController {
return success(soilSampleService.sampleRetain(ids,locationId,receiveLocation,getAccount()));
}
/**
* 原始记录数据绑定
*/
@ApiOperation(value = "原始记录数据绑定", notes = "原始记录数据绑定")
@ResponseBody
@GetMapping("/original_record_data_bind")
public RestResult<Map<String, Object>> originalRecordDataBind(@RequestParam("sampleId") Long sampleId, @RequestParam("modelId") Long modelId) {
return success(soilSampleService.originalRecordDataBind(sampleId,modelId,getAccount()));
}
}
......@@ -13,6 +13,8 @@ import com.patzn.cloud.service.soil.statistics.SoilCustomerEntrustVO;
import com.patzn.cloud.service.soil.vo.SoilEntrustVO;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
* <p>
* 土工试验委托表 服务类
......@@ -76,4 +78,8 @@ public interface ISoilEntrustService extends IBaseService<SoilEntrust> {
Page<SoilEntrustVO> pageVOTake(Page<SoilEntrustVO> page, SoilEntrustVO soilEntrust);
void changeStatus(SoilEntrustStatusEnum receive, SoilEntrustStatusEnum send, List<Long> entrustIds, Account account, String 样品接收完成);
boolean editImportEntrust(Long id,MultipartFile file, Account account);
void exportSoilPrepareRecord(Long[] ids, HttpServletResponse response, Account account);
}
......@@ -59,4 +59,6 @@ public interface ISoilExperimentService extends IBaseService<SoilExperiment> {
boolean parseTxt(SmbFile smbFile, CollectDataType request);
boolean importExperiments(Long[] ids, Long[] aptitudeIds, Account account);
boolean changeExpAllot(Long[] ids, String user, Long userId, Account account);
}
......@@ -42,4 +42,6 @@ public interface ISoilPrepareService extends IBaseService<SoilPrepare> {
Page<SoilPrepareVO> pagePrepareVO(Page<SoilPrepareVO> page, SoilPrepareVO soilPrepare);
List<SoilPrepareVO> listVOTake(SoilPrepareVO prepareVO, List<Long> groupIds);
boolean bathUpdateSurplusInfo(Long[] ids, SoilPrepare prepare, Account account);
}
......@@ -37,4 +37,6 @@ public interface ISoilSampleBackupService extends IBaseService<SoilSampleBackup>
boolean disposalFail(Long[] ids,String reason, Account account);
boolean handleOk(Long[] ids, Account account);
boolean bathUpdateBackupInfo(Long[] ids, SoilSampleBackup backup, Account account);
}
package com.patzn.cloud.service.lims.soil.service;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account;
......@@ -10,6 +11,7 @@ import com.patzn.cloud.service.soil.entity.SoilPrepare;
import com.patzn.cloud.service.soil.entity.SoilSample;
import com.patzn.cloud.service.soil.vo.SoilPrepareVO;
import com.patzn.cloud.service.soil.vo.SoilSampleVO;
import org.springframework.web.multipart.MultipartFile;
/**
* <p>
......@@ -36,6 +38,9 @@ public interface ISoilSampleService extends IBaseService<SoilSample> {
Page<SoilSampleVO> pageVO(Page<SoilSampleVO> page, SoilSampleVO soilSample);
List<SoilSampleVO> initItemInfo(List<SoilSampleVO> sampleVOList);
boolean receiveSample(Long[] ids, Long locationId, String receiveLocation, Account account);
boolean sendSample(Long[] ids, Account account);
......@@ -57,4 +62,12 @@ 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 retainSampleTest(Long[] ids, Account account);
boolean importSample(MultipartFile file, Long entrustId, Account account);
List<SoilSample> listByContractIdForPrepare(Long entrustId);
Map<String, Object> originalRecordDataBind(Long sampleId, Long modelId, Account account);
}
......@@ -10,6 +10,7 @@ import com.google.common.collect.Maps;
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.LmsCodeRuleClient;
import com.patzn.cloud.feign.lims.base.client.LmsUserGroupClient;
......@@ -18,6 +19,7 @@ import com.patzn.cloud.service.lims.base.entity.LmsUserGroup;
import com.patzn.cloud.service.lims.base.enums.CodeTypeEnum;
import com.patzn.cloud.service.lims.common.MyComparator;
import com.patzn.cloud.service.lims.common.StringStaticDataUtils;
import com.patzn.cloud.service.lims.common.service.IExportService;
import com.patzn.cloud.service.lims.common.service.ILmsMsgService;
import com.patzn.cloud.service.lims.soil.service.*;
import com.patzn.cloud.service.soil.dto.SoilEntrustDTO;
......@@ -37,10 +39,10 @@ import com.patzn.poibox.xwpf.HSSFWorkbookUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
......@@ -49,6 +51,8 @@ import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
* <p>
* 土工试验委托表 服务实现类
......@@ -83,25 +87,24 @@ public class SoilEntrustServiceImpl extends BaseServiceImpl<SoilEntrustMapper, S
@Autowired
private ISoilExperimentOperationService soilExperimentOperationService;
@Autowired
private ISoilItemService soilItemService;
@Autowired
private ISoilEntrustOperationService soilEntrustOperationService;
private IExportService exportService;
@Autowired
private ISoilEntrustOperationService soilEntrustOperationService;
@Autowired
private ISoilReportService soilReportService;
@Autowired
private ISoilAptitudeExpService soilAptitudeExpService;
@Autowired
private LmsUserGroupClient userGroupClient;
@Autowired
private ISoilPrepareService soilPrepareService;
......@@ -146,8 +149,6 @@ public class SoilEntrustServiceImpl extends BaseServiceImpl<SoilEntrustMapper, S
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveEntrustDTO(SoilEntrustDTO dto, Account account) {
RestAssert.fail(StringUtils.isBlank(dto.getClient()),"委托商不能为空!");
RestAssert.fail(StringUtils.isBlank(dto.getBoreholeName()),"钻孔名称不能为空!");
SoilEntrust soilEntrust = dto.convert(SoilEntrust.class);
soilEntrust.setStatus(SoilEntrustStatusEnum.DRAFT);
soilEntrust.setProgress(SoilEntrustStatusEnum.DRAFT);
......@@ -611,6 +612,361 @@ public class SoilEntrustServiceImpl extends BaseServiceImpl<SoilEntrustMapper, S
@Transactional(rollbackFor = Exception.class)
@Override
public boolean editImportEntrust(Long id,MultipartFile file, Account account) {
RestAssert.fail(null == id ,"请选择试验委托单");
SoilEntrust soilEntrust = super.getById(id);
RestAssert.fail(null == soilEntrust ,"试验委托单不存在!");
InputStream is= null;
XSSFWorkbook workbook = null;
try {
is= file.getInputStream();
workbook= new XSSFWorkbook(is);
}catch (Exception e){
e.printStackTrace();
}
XSSFSheet sheet= workbook.getSheetAt(0);
int num= sheet.getLastRowNum();
Map<Integer,String> itemIndexMap = new HashMap<>();
Map<String,Map<String,String>> sampleInfoMap = new TreeMap<>(new MyComparator());
String gch="";
String client= "";
String zkmc= "";
String zkwz="";
String ss="";
boolean endEn=false;
for (int i = 0; i < num; i++) {
XSSFRow row= sheet.getRow(i);
short lastCellNum= row.getLastCellNum();
XSSFCell cell0= row.getCell(0);
String cellValue0 = HSSFWorkbookUtil.getJavaValue(cell0).toString();
if (!"样品编号".equals(cellValue0.replace("\n",""))){
for (int j = 0; j < lastCellNum; j++) {
XSSFCell cell= row.getCell(j);
String cellValue = HSSFWorkbookUtil.getJavaValue(cell).toString();
if ("平均容重".equals(cellValue)){
for (int m = j+1; m < lastCellNum; m++) {
String value= HSSFWorkbookUtil.getJavaValue(row.getCell(m)).toString();
if (StringUtils.isNotBlank(value)){
gch = value;
break;
}
}
}else if ("委托商".equals(cellValue)){
for (int m = j+1; m < lastCellNum; m++) {
String value= HSSFWorkbookUtil.getJavaValue(row.getCell(m)).toString();
if (StringUtils.isNotBlank(value)){
client = value;
break;
}
}
}else if ("钻孔名称".equals(cellValue)){
for (int m = j+1; m < lastCellNum; m++) {
String value= HSSFWorkbookUtil.getJavaValue(row.getCell(m)).toString();
if (StringUtils.isNotBlank(value)){
zkmc = value;
break;
}
}
}else if ("钻孔位置".equals(cellValue)){
for (int m = j+1; m < lastCellNum; m++) {
String value= HSSFWorkbookUtil.getJavaValue(row.getCell(m)).toString();
if (StringUtils.isNotBlank(value)){
zkwz = value;
break;
}
}
}else if ("水 深, m".equals(cellValue)||"水深, m".equals(cellValue)||"水深".equals(cellValue)){
for (int m = j+1; m < lastCellNum; m++) {
String value= HSSFWorkbookUtil.getJavaValue(row.getCell(m)).toString();
if (StringUtils.isNotBlank(value)){
ss = value;
if (StringUtils.isNotBlank(ss)){
try {
new BigDecimal(ss);
}catch (Exception e){
RestAssert.fail("水深请填写数字");
}
}
endEn=true;
break;
}
}
}
if (endEn){
break;
}
}
if (endEn){
break;
}
}
}
for (int i = 0; i < num; i++) {
XSSFRow row= sheet.getRow(i);
short lastCellNum= row.getLastCellNum();
XSSFCell cell0= row.getCell(0);
String cellValue0 = HSSFWorkbookUtil.getJavaValue(cell0).toString();
if (StringUtils.isBlank(cellValue0)){
continue;
}
if ("样品编号".equals(cellValue0.replace("\n",""))){
if (itemIndexMap.size()==0){
for (int j = 0; j < lastCellNum; j++) {
XSSFCell cell= row.getCell(j);
String cellValue = HSSFWorkbookUtil.getJavaValue(cell).toString().replace("\n","").replace(" ","").trim();
itemIndexMap.put(j,cellValue);
}
}
}
if (itemIndexMap.size()>0){
if (StringHandleUtils.isNumeric(cellValue0)|| !StringStaticDataUtils.importEntrustTitle.contains(cellValue0.trim())){
sampleInfoMap.put(cellValue0, Maps.newHashMap());
Map<String,String> mapInfo = sampleInfoMap.get(cellValue0);
for (int j = 0; j < lastCellNum; j++) {
String key= itemIndexMap.get(j);
if (StringUtils.isBlank(key)){
continue;
}
XSSFCell cell= row.getCell(j);
String cellValue = HSSFWorkbookUtil.getJavaValue(cell).toString().trim();
if (StringUtils.isBlank(cellValue)){
continue;
}
mapInfo.put(key,cellValue);
}
sampleInfoMap.put(cellValue0, mapInfo);
}
}
}
System.out.println(sampleInfoMap.toString());
SoilEntrust entrust = new SoilEntrust();
if (StringUtils.isBlank(soilEntrust.getClient())){
entrust.setClient(client);
}
if (null == soilEntrust.getEntrustDate()){
entrust.setEntrustDate(new Date());
}
if (null == soilEntrust.getWaterDepth()){
entrust.setWaterDepth(new BigDecimal(ss));
}
if (StringUtils.isBlank(soilEntrust.getBoreholeLocation())){
entrust.setBoreholeLocation(zkwz);
}
if (StringUtils.isBlank(soilEntrust.getBoreholeName())){
entrust.setBoreholeName(zkmc);
}
if (StringUtils.isBlank(soilEntrust.getProjectNo())){
entrust.setProjectNo(gch);
}
SoilEntrustDTO dto = entrust.convert(SoilEntrustDTO.class);
List<SoilSampleDTO> sampleDTOS = new ArrayList<>();
dto.setId(id);
List<SoilAptitudeExp> aptitudeExpList = soilAptitudeExpService.list(Condition.create());
Map<String,SoilAptitudeExp> expMap = new HashMap<>();
for (SoilAptitudeExp soilAptitudeExp:aptitudeExpList) {
expMap.put(soilAptitudeExp.getName(),soilAptitudeExp);
}
for (Map.Entry<String,Map<String,String>> e: sampleInfoMap.entrySet()) {
String eKey= e.getKey();
if ("0".equals(eKey)){
continue;
}
Map<String,String> itemMap=e.getValue();
SoilSampleDTO sampleDTO = new SoilSampleDTO();
sampleDTO.setSiteNo("S-"+e.getKey());
sampleDTO.setSampleDepth(itemMap.get("深度(m)"));
sampleDTO.setSamplePack(itemMap.get("样品包装类型"));
sampleDTO.setSampleDescribe(itemMap.get("土质描述"));
List<SoilExperiment> experimentList = new ArrayList<>();
for (Map.Entry<String,String> s: itemMap.entrySet()) {
String key = s.getKey();
String value = s.getValue();
if ("深度(m)".equals(key)){
continue;
}else if ("样品包装类型".equals(key)){
continue;
}else if ("土质描述".equals(key)){
continue;
}else if ("样品编号".equals(key)){
continue;
}else if ("C".equals(value)){
continue;
}else if ("".equals(value)){
continue;
}else if ("Ö".equals(value)){
SoilExperiment experiment = new SoilExperiment();
experiment.setName(key);
SoilAptitudeExp soilAptitudeExp= expMap.get(key);
if (null!=soilAptitudeExp){
experiment.setGroupName(soilAptitudeExp.getGroupName());
experiment.setGroupId(soilAptitudeExp.getGroupId());
experiment.setShortName(soilAptitudeExp.getShortName());
experiment.setTestBasis(soilAptitudeExp.getTestBasis());
experiment.setTestMethod(soilAptitudeExp.getTestMethod());
experiment.setElName(soilAptitudeExp.getElName());
experiment.setMainType(soilAptitudeExp.getMainType());
experiment.setSmallType(soilAptitudeExp.getSmallType());
}
experiment.setStatus(SoilExpStatusEnum.DRAFT);
experiment.setProgress(SoilExpStatusEnum.DRAFT);
experimentList.add(experiment);
}
}
sampleDTO.setEntrustId(id);
sampleDTO.setExperimentList(experimentList);
sampleDTOS.add(sampleDTO);
}
dto.setSampleList(sampleDTOS);
if (editEntrust(dto,account)){
return true;
}
return false;
}
@Override
public void exportSoilPrepareRecord(Long[] ids, HttpServletResponse response, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要导出的试验委托单");
for (Long entrustId:ids) {
SoilEntrust entrust = getById(entrustId);
List<SoilSample> sampleListPre = soilSampleService.listByContractIdForPrepare(entrustId);
List<SoilSampleVO> sampleList = new ArrayList<>();
List<Long> sampleIdsList = new ArrayList<>();
for (SoilSample sample:sampleListPre) {
sampleList.add(sample.convert(SoilSampleVO.class));
sampleIdsList.add(sample.getId());
}
Map<String,String> map=new HashMap<>();
map.put("#{boreholeName}",StringHandleUtils.getString(entrust.getBoreholeName()));
map.put("#{client}",StringHandleUtils.getString(entrust.getClient()));
map.put("#{projectNo}",StringHandleUtils.getString(entrust.getProjectNo()));
map.put("#{entrustCode}","报告编号:"+StringHandleUtils.getString(entrust.getEntrustCode()));
map.put("#{waterDepth}",null == entrust.getWaterDepth()?"":entrust.getWaterDepth().toString());
List<SoilPrepare> soilPrepares = soilPrepareService.list(Condition.create().setSqlSelect("prepare_date").in("sample_id",sampleIdsList).isNotNull("prepare_date"));
if (CollectionUtils.isNotEmpty(soilPrepares)){
List<Date> listDate = soilPrepares.stream().map(p->{
return p.getPrepareDate();
}).collect(Collectors.toList());
String s = DateUtils.getMinToMaxDate(listDate);
map.put("#{openDate}",s);
}else {
map.put("#{openDate}","");
}
RestAssert.fail(CollectionUtils.isEmpty(sampleList),"委托项目"+entrust.getBoreholeName()+"不含样品");
XSSFWorkbook xssfWorkbook= exportService.getXSSFWorkbook("SoilPrepareRecordExport.xlsx");
XSSFSheet sheet= xssfWorkbook.getSheetAt(0);
System.out.println(sheet.getSheetName());
XSSFRow row7= sheet.getRow(7);
XSSFCellStyle xssfCellStyle= row7.getCell(1).getCellStyle();
HSSFWorkbookUtil.replaceModel(map,xssfWorkbook);
xssfCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
xssfCellStyle.setAlignment(HorizontalAlignment.CENTER);
soilSampleService.initItemInfo(sampleList);
int index = 7;
int length = sampleList.size();
if (length<=10){
}else{
int createSize = length - 10 ;
for (int i = 0; i <createSize;i++) {
sheet.shiftRows(16+i, sheet.getLastRowNum(),1,true,false);
XSSFRow row=sheet.createRow(16+i);
row.setHeight(row7.getHeight());
for (int j = 0; j < 12; j++) {
XSSFCell cell= row.createCell(j);
cell.setCellStyle(xssfCellStyle);
}
CellRangeAddress region1 = new CellRangeAddress(16+i, 16+i, 2, 3);
CellRangeAddress region2 = new CellRangeAddress(16+i, 16+i, 4, 5);
CellRangeAddress region3 = new CellRangeAddress(16+i, 16+i, 7, 9);
sheet.addMergedRegion(region1);
sheet.addMergedRegion(region2);
sheet.addMergedRegion(region3);
}
}
for (int i = 0; i < length; i++) {
SoilSampleVO sample =sampleList.get(i);
XSSFRow row = sheet.getRow(index+i);
XSSFCell cell= row.getCell(0);
cell.setCellValue(i+1);
XSSFCell cellPack= row.getCell(1);
cellPack.setCellValue(sample.getSamplePack());
XSSFCell cell1SampleCode= row.getCell(2);
cell1SampleCode.setCellValue(sample.getSampleCode());
XSSFCell cell1Site= row.getCell(4);
cell1Site.setCellValue(sample.getSiteNo());
XSSFCell cell1Shen= row.getCell(6);
cell1Shen.setCellValue(sample.getSampleDepth());
XSSFCell cell1Desc= row.getCell(7);
cell1Desc.setCellValue(sample.getDescribeDetail());
XSSFCell cell1Item= row.getCell(10);
cell1Item.setCellValue(sample.getExperimentShortNames());
}
exportService.downloadXlsx(response,entrust.getBoreholeName()+".xlsx",xssfWorkbook);
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean importEntrust(MultipartFile file, Account account) {
InputStream is= null;
......
......@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.ArrayUtils;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.IdWorker;
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.toolkit.FileUtils;
......@@ -76,6 +77,10 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
@Autowired
private OssClient ossClient;
@Autowired
private ISoilOriginalRecordService soilOriginalRecordService;
@Override
public Page<SoilExperiment> page(Page<SoilExperiment> page, SoilExperiment soilExperiment) {
Wrapper wrapper = new EntityWrapper<>(soilExperiment);
......@@ -123,6 +128,26 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean changeExpAllot(Long[] ids, String user, Long userId, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要调整分配的试验项目");
int count = super.count(Condition.create().in("id",ids).eq("status",SoilExpStatusEnum.TEST));
RestAssert.fail(count != ids.length,"请选择未检测完成的试验项目");
RestAssert.fail(null == userId|| StringUtils.isEmpty(user),"请选择要分配给的试验员");
SoilExperiment experiment = new SoilExperiment();
experiment.setTesterId(userId);
experiment.setTester(user);
if (update(experiment,Condition.create().in("id",ids))){
soilExperimentOperationService.recordAllotInfo(ids,account);
soilExperimentRecordService.record(ids,SoilExpStatusEnum.TEST,SoilExpStatusEnum.TEST,0,account,"试验项目重新分配给:"+user);
}
return true;
}
@Override
public Page<SoilExperimentVO> pageBySampleIds(Page<SoilExperimentVO> page, Long[] sampleIds, SoilExperimentVO vo) {
return page.setRecords(initOriginalRecord(baseMapper.selectListBySampleIds(page,sampleIds,vo)));
......@@ -234,11 +259,11 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
public boolean entrustStatusChange(List<Long> sampleIds){
List<SoilSample> sampleList = soilSampleService.list(Condition.create().setSqlSelect("id,entrust_id").in("id",sampleIds));
List<SoilSample> sampleList = soilSampleService.list(Condition.create().setSqlSelect("id,entrust_id").in("id",sampleIds).ne("status",SoilSampleStatusEnum.RETAIN));
List<Long> entrustIds = sampleList.stream().map(e->{
return e.getEntrustId();
}).collect(Collectors.toList());
List<SoilSample> notOkEntrust = soilSampleService.list(Condition.create().setSqlSelect("entrust_id").in("entrust_id",entrustIds).ne("status",SoilSampleStatusEnum.END).groupBy("entrust_id"));
List<SoilSample> notOkEntrust = soilSampleService.list(Condition.create().setSqlSelect("entrust_id").in("entrust_id",entrustIds).notIn("status", Lists.newArrayList(SoilSampleStatusEnum.END,SoilSampleStatusEnum.RETAIN)).groupBy("entrust_id"));
List<Long> notOkEntrustIds = notOkEntrust.stream().map(e->{
return e.getEntrustId();
}).collect(Collectors.toList());
......@@ -312,7 +337,7 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
@Override
public boolean bathUpdateInfo(Long[] ids, SoilExperiment experiment, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要修改的试验项目");
if (isAllFieldNull(experiment)){
if (StringHandleUtils.isAllFieldNull(experiment)){
RestAssert.fail("请填写试验项目信息");
}
return super.update(experiment,Condition.create().in("id",ids));
......@@ -425,22 +450,6 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
}
public static boolean isAllFieldNull(Object object) {
Class clazz = object.getClass();
Field [] fields = clazz.getDeclaredFields();
try {
for (Field field:fields) {
field.setAccessible(true);
Object value = field.get(object);
if (value!=null){
return false;
}
}
}catch (Exception e){
e.printStackTrace();
}
return true;
}
public List<SoilExperimentVO> initOriginalRecord(List<SoilExperimentVO> voList){
if (CollectionUtils.isEmpty(voList)){
......@@ -455,16 +464,26 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
return voList;
}
List<Long> originalIds = new ArrayList<>();
Map<Long, Long> map =new HashMap<>();
for (SoilExpRelOriginalRecord expRelOriginalRecord:relOriginalRecordList) {
map.put(expRelOriginalRecord.getExpId(),expRelOriginalRecord.getRecordId());
originalIds.add(expRelOriginalRecord.getRecordId());
}
List<SoilOriginalRecord> soilOriginalRecordList = soilOriginalRecordService.list(Condition.create().in("id",originalIds));
Map<Long, Long> mapSoilOriginalRecord =new HashMap<>();
for (SoilOriginalRecord originalRecord:soilOriginalRecordList) {
mapSoilOriginalRecord.put(originalRecord.getId(),originalRecord.getOriginalRecordId());
}
for (SoilExperimentVO vo:voList) {
if (null == map.get(vo.getId())){
vo.setRecorded("否");
}else{
vo.setRecorded("是");
vo.setRecordId(map.get(vo.getId()));
vo.setRecordId(mapSoilOriginalRecord.get(map.get(vo.getId())));
}
}
return voList;
......
......@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.ArrayUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.soil.service.ISoilPrepareRecordService;
import com.patzn.cloud.service.soil.entity.SoilPrepare;
import com.patzn.cloud.service.lims.soil.mapper.SoilPrepareMapper;
......@@ -165,4 +166,16 @@ public class SoilPrepareServiceImpl extends BaseServiceImpl<SoilPrepareMapper, S
public List<SoilPrepareVO> listVOTake(SoilPrepareVO prepareVO, List<Long> groupIds) {
return baseMapper.selectTakeVOList(prepareVO,groupIds);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean bathUpdateSurplusInfo(Long[] ids, SoilPrepare prepare, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要修改的余样信息");
if (StringHandleUtils.isAllFieldNull(prepare)){
RestAssert.fail("请填写余样信息");
}
return super.update(prepare,Condition.create().in("id",ids));
}
}
......@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.toolkit.ArrayUtils;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.soil.mapper.SoilSampleBackupMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilSampleBackupRecordService;
import com.patzn.cloud.service.lims.soil.service.ISoilSampleBackupService;
......@@ -151,4 +152,15 @@ public class SoilSampleBackupServiceImpl extends BaseServiceImpl<SoilSampleBacku
return soilSampleBackupRecordService.record(SoilBackupStatusEnum.DISPOSAL_OK,SoilBackupStatusEnum.HANDLE_END,ids,0,account,"备样处理完成");
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean bathUpdateBackupInfo(Long[] ids, SoilSampleBackup backup, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要修改的备样信息");
if (StringHandleUtils.isAllFieldNull(backup)){
RestAssert.fail("请填写备样信息");
}
return super.update(backup,Condition.create().in("id",ids));
}
}
......@@ -51,6 +51,9 @@ public class SoilSampleOperationServiceImpl extends BaseServiceImpl<SoilSampleOp
return super.update(operation, Condition.create().in("sample_id",ids));
}
@Override
public boolean recordSenderInfo(Long[] ids, Account account) {
SoilSampleOperation operation = new SoilSampleOperation();
......
......@@ -6,14 +6,18 @@ import java.util.stream.Collectors;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
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.StringHandleUtils;
import com.patzn.cloud.feign.lims.base.client.LmsUserGroupClient;
import com.patzn.cloud.service.lims.base.entity.LmsUserGroup;
import com.patzn.cloud.service.lims.common.ExcelReader;
import com.patzn.cloud.service.lims.common.StringStaticDataUtils;
import com.patzn.cloud.service.lims.soil.service.*;
import com.patzn.cloud.service.soil.dto.SoilPrepareDTO;
import com.patzn.cloud.service.soil.entity.SoilAptitudeExp;
import com.patzn.cloud.service.soil.entity.SoilExperiment;
import com.patzn.cloud.service.soil.entity.SoilPrepare;
import com.patzn.cloud.service.soil.entity.SoilSample;
......@@ -33,6 +37,7 @@ 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;
/**
* <p>
......@@ -92,6 +97,20 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
return super.list(Condition.create().eq("entrust_id",id));
}
@Override
public List<SoilSample> listByContractIdForPrepare(Long id) {
return super.list(Condition.create().eq("entrust_id",id).ne("status",SoilSampleStatusEnum.RETAIN).orderBy("sample_code"));
}
@Override
public Map<String, Object> originalRecordDataBind(Long sampleId, Long modelId, Account account) {
Map<String,Object> map = new HashMap<>();
map.put("#{client}","续点费");
return map;
}
@Override
public boolean checkEntrustHaveSample(Long[] entrustIds) {
if (ArrayUtils.isEmpty(entrustIds)){
......@@ -538,4 +557,56 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
soilSampleOperationService.recordReceiveInfo(ids,locationId,location,account);
return super.update(sample,Condition.create().in("id",ids));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean retainSampleTest(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要接收的样品");
int count = super.count(Condition.create().in("id",ids).ne("status",SoilSampleStatusEnum.RETAIN));
RestAssert.fail(count>0,"请选择待留存的样品");
SoilSample sample = new SoilSample();
sample.setStatus(SoilSampleStatusEnum.SEND);
sample.setProgress(SoilSampleStatusEnum.SEND);
List<SoilExperiment> experimentList = soilExperimentService.list(Condition.create().setSqlSelect("sample_id").in("sample_id",ids).groupBy("sample_id"));
RestAssert.fail(experimentList.size()!=ids.length,"请选择含有试验项目的委托");
if (super.update(sample,Condition.create().in("id",ids))){
soilSampleRecordService.record(SoilSampleStatusEnum.RECEIVE,SoilSampleStatusEnum.SEND,ids,0,account,"收样室收样");
}
//更改委托状态
List<SoilSample> sampleList = super.list(Condition.create().setSqlSelect("entrust_id").in("id",ids).groupBy("entrust_id"));
if (CollectionUtils.isEmpty(sampleList)){
return true;
}
List<Long> entrustIds = sampleList.stream().map(s->{
return s.getEntrustId();
}).collect(Collectors.toList());
List<SoilSample> checkList = super.list(Condition.create().setSqlSelect("entrust_id").in("entrust_id",entrustIds).eq("status",SoilSampleStatusEnum.RECEIVE));
if (CollectionUtils.isEmpty(checkList)){
soilEntrustService.changeStatus(SoilEntrustStatusEnum.RECEIVE,SoilEntrustStatusEnum.SEND,entrustIds,account,"样品接收完成");
}else {
List<Long> noReceiveOkList = checkList.stream().map(s->{
return s.getEntrustId();
}).collect(Collectors.toList());
for (Long eId:noReceiveOkList) {
if (entrustIds.contains(eId)){
entrustIds.remove(eId);
}
}
if (CollectionUtils.isNotEmpty(entrustIds)){
soilEntrustService.changeStatus(SoilEntrustStatusEnum.RECEIVE,SoilEntrustStatusEnum.SEND,entrustIds,account,"样品接收完成");
}
}
return sendSample(ids,account);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean importSample(MultipartFile file, Long entrustId, Account account) {
return false;
}
}
......@@ -61,6 +61,16 @@
</if>
<if test="null!=vo.grouped">
<if test="vo.grouped == 0">
AND t.group_id IS NULL
</if>
<if test="vo.grouped == 1">
AND t.group_id IS NOT NULL
</if>
</if>
ORDER BY t.name ,s.sample_code
</select>
......@@ -110,11 +120,15 @@
s.sample_code,
s.sample_depth,
s.describe_detail,
s.sample_pack
s.sample_pack,
o.alloter,
o.allot_time,
e.client
FROM soil_experiment t
JOIN soil_sample s ON t.sample_id = s.id
JOIN soil_entrust e ON s.entrust_id = e.id
JOIN soil_experiment_operation o ON t.id = o.experiment_id
WHERE e.deleted = 0 AND s.deleted = 0 AND t.deleted = 0
AND t.name = #{vo.name}
AND s.entrust_id = #{vo.entrustId}
......
......@@ -32,6 +32,11 @@
<if test="vo.status!=null">
AND p.status = #{vo.status}
</if>
<if test="vo.entrustId!=null">
AND e.id = #{vo.entrustId}
</if>
<if test="vo.sampleCode!=null">
AND s.sample_code LIKE CONCAT('%',#{vo.sampleCode},'%')
</if>
......@@ -52,6 +57,7 @@
p.id,
p.type,
p.group_name,
p.keep_location,
p.group_id,
p.quantity,
p.unit,
......
UPDATE "public"."sys_resource" SET "system_id" = 1304006677087891457, "pid" = 1304244453771292673, "name" = '备样样品处理', "type" = 0, "code" = 'sample_dispose', "uri" = '/soil/sample/dispose', "icon" = 'pt-config', "remark" = NULL, "status" = 1, "sort" = 50, "ctime" = '2020-09-11 10:46:42.391', "ename" = NULL WHERE "id" = 1304249982975455234;
UPDATE "public"."sys_resource" SET "system_id" = 1304006677087891457, "pid" = 1304244453771292673, "name" = '备样样品处理', "type" = 0, "code" = 'sample_dispose', "uri" = '/soil/sample/dispose', "icon" = 'pt-config', "remark" = NULL, "status" = 1, "sort" = 50, "ctime" = '2020-09-11 10:46:42.391', "ename" = NULL WHERE "id" = 1304249982975455234;
ALTER TABLE "public"."soil_prepare"
ALTER TABLE "public"."soil_prepare"
ADD COLUMN "keep_location" varchar(255);
COMMENT ON COLUMN "public"."soil_prepare"."keep_location" 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