Commit 5052d786 by wangweidong

土工试验平台修改

parent 5aa04732
package com.patzn.cloud.service.lims.common;
import com.patzn.cloud.commons.toolkit.StringHandleUtils;
import java.util.Comparator;
public class MyComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
int a= Integer.parseInt(o1)-Integer.parseInt(o2);
return a ;
if (StringHandleUtils.isNumeric(o1)&&StringHandleUtils.isNumeric(o2)) {
return Integer.parseInt(o1)-Integer.parseInt(o2);
} else{
return o1.compareTo(o2);
}
}
@Override
......
......@@ -528,4 +528,11 @@ public class StringHandleUtils {
}
return filename;
}
public boolean is_alpha(String str) {
if(str==null) return false;
return str.matches("[a-zA-Z]+");
}
}
......@@ -229,4 +229,22 @@ public final class StringStaticDataUtils {
soilAptitudeListColumn.add("testMethod");
soilAptitudeListColumn.add("remark");
}
public static final List<String> importEntrustTitle=new ArrayList<>();
static {
importEntrustTitle.add("说明:");
importEntrustTitle.add("说明");
importEntrustTitle.add("制 表");
importEntrustTitle.add("批 准");
importEntrustTitle.add("土质试验项目单");
importEntrustTitle.add("制表");
importEntrustTitle.add("批准");
importEntrustTitle.add("样品编号");
importEntrustTitle.add("样\n" +
"品\n" +
"编\n" +
"号");
}
}
......@@ -64,6 +64,8 @@ public class SoilEntrustController extends ServiceController {
soilEntrust.setStatusList(Lists.newArrayList(
SoilEntrustStatusEnum.REVIEW,
SoilEntrustStatusEnum.RECEIVE,
SoilEntrustStatusEnum.SEND,
SoilEntrustStatusEnum.TEST,
SoilEntrustStatusEnum.REPORT,
SoilEntrustStatusEnum.REPORT_CHECK,
SoilEntrustStatusEnum.REPORT_ISSUE
......
......@@ -492,4 +492,13 @@ public class SoilExperimentController extends ServiceController {
return success(soilExperimentService.bathUpdateInfo(ids,experiment,getAccount()));
}
@ApiOperation(value = "导入试验项目", notes = "导入试验项目")
@PostMapping("/import_experiments")
public RestResult<Boolean> importExperiments(@RequestParam("ids") Long [] ids,@RequestParam("aptitudeIds") Long [] aptitudeIds) {
return success(soilExperimentService.importExperiments(ids,aptitudeIds,getAccount()));
}
}
......@@ -79,7 +79,7 @@ public class SoilPrepareController extends ServiceController {
@ApiOperation(value = "样品制备历史查询数据列表", notes = "样品制备历史查询数据列表")
@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"),
......@@ -88,6 +88,43 @@ public class SoilPrepareController extends ServiceController {
})
@PostMapping("/page_prepare_his")
public RestResult<Page<SoilPrepareVO>> getPagePrepareHis(SoilPrepareVO soilPrepare) {
soilPrepare.setType(1);
return success(soilPrepareService.pagePrepareVO(getPage(), soilPrepare));
}
@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("/page_secondary")
public RestResult<Page<SoilPrepareVO>> getPageSecondary(SoilPrepareVO soilPrepare) {
soilPrepare.setType(2);
soilPrepare.setStatusList(Lists.newArrayList(
SoilPrepareStatusEnum.PREPARED,
SoilPrepareStatusEnum.DISPOSAL_CHECK,
SoilPrepareStatusEnum.DISPOSAL_OK,
SoilPrepareStatusEnum.DISPOSAL_FAIL
));
return success(soilPrepareService.pagePrepareVO(getPage(), soilPrepare));
}
@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("/page_secondary_his")
public RestResult<Page<SoilPrepareVO>> getPageSecondaryHis(SoilPrepareVO soilPrepare) {
soilPrepare.setType(2);
return success(soilPrepareService.pagePrepareVO(getPage(), soilPrepare));
}
......
......@@ -413,4 +413,27 @@ public class SoilSampleController extends ServiceController {
return success(soilSampleService.scanOperation(sampleCode,type,getAccount()));
}
@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("/page_location_sample")
public RestResult<Page<SoilSampleVO>> getPageLocationSample(SoilSampleVO soilSample) {
return success(soilSampleService.pageLocationSample(getPage(), soilSample));
}
@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()));
}
}
......@@ -25,4 +25,6 @@ public interface SoilSampleMapper extends BaseMapper<SoilSample> {
List<SoilSampleVO> selectVOList(RowBounds rowBounds, @Param("vo") SoilSampleVO soilSample);
List<SoilSampleVO> selectVOListByExp(RowBounds rowBounds, @Param("vo")SoilSampleVO soilSample);
List<SoilSampleVO> selectLocationSample(Page<SoilSampleVO> page, @Param("vo")SoilSampleVO soilSample);
}
......@@ -57,4 +57,6 @@ public interface ISoilExperimentService extends IBaseService<SoilExperiment> {
List<SoilExperimentVO> listVOByIds(List<Long> expIds);
boolean parseTxt(SmbFile smbFile, CollectDataType request);
boolean importExperiments(Long[] ids, Long[] aptitudeIds, Account account);
}
......@@ -53,4 +53,8 @@ public interface ISoilSampleService extends IBaseService<SoilSample> {
Page<SoilSampleVO> pageByExp(Page<SoilSampleVO> page, SoilSampleVO soilSample);
boolean scanOperation(String sampleCode, String type, Account account);
Page<SoilSampleVO> pageLocationSample(Page<SoilSampleVO> page, SoilSampleVO soilSample);
boolean sampleRetain(Long[] ids,Long locationId,String location, Account account);
}
......@@ -23,6 +23,8 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
......@@ -121,11 +123,11 @@ public class SoilAptitudeExpServiceImpl extends BaseServiceImpl<SoilAptitudeExpM
*/
public boolean is_alpha(String str) {
public static boolean is_alpha(String str) {
if(str==null) return false;
return str.matches("[a-zA-Z]+");
String regex = "[\u4e00-\u9fa5]"; //汉字的Unicode取值范围
Pattern pattern = Pattern.compile(regex);
Matcher match = pattern.matcher(str);
return !match.find();
}
}
......@@ -17,6 +17,7 @@ import com.patzn.cloud.service.lims.base.dto.CodeTypeDTO;
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.ILmsMsgService;
import com.patzn.cloud.service.lims.soil.service.*;
import com.patzn.cloud.service.soil.dto.SoilEntrustDTO;
......@@ -642,7 +643,7 @@ public class SoilEntrustServiceImpl extends BaseServiceImpl<SoilEntrustMapper, S
for (int j = 0; j < lastCellNum; j++) {
XSSFCell cell= row.getCell(j);
String cellValue = HSSFWorkbookUtil.getJavaValue(cell).toString();
if ("工程号".equals(cellValue)){
if ("平均容重".equals(cellValue)){
for (int m = j+1; m < lastCellNum; m++) {
String value= HSSFWorkbookUtil.getJavaValue(row.getCell(m)).toString();
if (StringUtils.isNotBlank(value)){
......@@ -722,7 +723,7 @@ public class SoilEntrustServiceImpl extends BaseServiceImpl<SoilEntrustMapper, S
}
}
if (itemIndexMap.size()>0){
if (StringHandleUtils.isNumeric(cellValue0)){
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++) {
......
......@@ -13,6 +13,7 @@ import java.util.stream.Collectors;
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.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.toolkit.FileUtils;
......@@ -70,6 +71,9 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
@Autowired
private ISoilAptitudeExpService soilAptitudeExpService;
@Autowired
private OssClient ossClient;
@Override
......@@ -383,6 +387,44 @@ public class SoilExperimentServiceImpl extends BaseServiceImpl<SoilExperimentMap
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean importExperiments(Long[] ids, Long[] aptitudeIds, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择样品");
RestAssert.fail(ArrayUtils.isEmpty(aptitudeIds),"请选择试验项目");
List<SoilAptitudeExp> soilAptitudeExps = soilAptitudeExpService.list(Condition.create().in("id",aptitudeIds));
RestAssert.fail(CollectionUtils.isEmpty(soilAptitudeExps),"请选择试验项目");
List<SoilExperiment> saveExperimentList = new ArrayList<>();
List<SoilExperimentOperation> saveExperimentOperationList = new ArrayList<>();
for (Long sampleId:ids) {
for (SoilAptitudeExp aptitudeExp:soilAptitudeExps) {
SoilExperiment experiment = aptitudeExp.convert(SoilExperiment.class);
experiment.setSampleId(sampleId);
experiment.setAptitudeExpId(aptitudeExp.getId());
experiment.setStatus(SoilExpStatusEnum.DRAFT);
experiment.setProgress(SoilExpStatusEnum.DRAFT);
experiment.setId(IdWorker.getId());
saveExperimentList.add(experiment);
SoilExperimentOperation experimentOperation = new SoilExperimentOperation();
experimentOperation.setExperimentId(experiment.getId());
saveExperimentOperationList.add(experimentOperation);
}
}
if (CollectionUtils.isNotEmpty(saveExperimentList)){
saveBatch(saveExperimentList);
soilExperimentOperationService.saveBatch(saveExperimentOperationList);
}
return true;
}
public static boolean isAllFieldNull(Object object) {
Class clazz = object.getClass();
Field [] fields = clazz.getDeclaredFields();
......
......@@ -136,7 +136,7 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
Map<Long, Set<String>> shortNameMap = new HashMap<>();
for (SoilExperiment experiment:experimentList) {
if (!nameMap.containsKey(experiment.getSampleId())){
Set<String> set = new HashSet<>();
Set<String> set = new TreeSet<>();
set.add(experiment.getName());
nameMap.put(experiment.getSampleId(),set);
}else{
......@@ -146,9 +146,12 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
}
if (StringUtils.isBlank(experiment.getShortName())){
continue;
}
if (!shortNameMap.containsKey(experiment.getSampleId())){
Set<String> set = new HashSet<>();
Set<String> set = new TreeSet<>();
set.add(experiment.getShortName());
shortNameMap.put(experiment.getSampleId(),set);
}else{
......@@ -189,13 +192,14 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
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))){
soilSampleOperationService.recordReceiveInfo(ids,locationId,receiveLocation,account);
soilSampleRecordService.record(SoilSampleStatusEnum.RECEIVE,SoilSampleStatusEnum.SEND,ids,0,account,"收样室收样");
//soilSampleBackupService.initBackup(ids,account);
//初始化备样
}
//更改委托状态
List<SoilSample> sampleList = super.list(Condition.create().setSqlSelect("entrust_id").in("id",ids).groupBy("entrust_id"));
if (CollectionUtils.isEmpty(sampleList)){
......@@ -231,6 +235,7 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
public boolean sendSample(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要发放的样品");
int count = super.count(Condition.create().in("id",ids).ne("status",SoilSampleStatusEnum.SEND));
RestAssert.fail(!checkSampleHaveExperiment(ids),"请发放含有试验项目的样品");
RestAssert.fail(count>0,"请发放待发放的样品");
SoilSample sample = new SoilSample();
sample.setStatus(SoilSampleStatusEnum.SOIL_PREPARE);
......@@ -270,6 +275,10 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
return true;
}
private boolean checkSampleHaveExperiment(Long[] ids) {
return ids.length!=soilExperimentService.list(Condition.create().setSqlSelect("sample_id").in("sample_id",ids).groupBy("sample_id")).size();
}
@Transactional(rollbackFor = Exception.class)
@Override
......@@ -291,11 +300,17 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
return Lists.newArrayList();
}
List<Long> sampleIds = Arrays.asList(ids);
List<SoilExperiment> experimentListDb = soilExperimentService.list(Condition.create().setSqlSelect("group_id","group_name","sample_id","name").in("sample_id",ids));
for (SoilExperiment experiment:experimentList) {
if (!sampleIds.contains(experiment.getSampleId())){
RestAssert.fail(ArrayUtils.isEmpty(ids),"选择的样品不含试验项目,请确认");
}
RestAssert.fail(null == experiment.getGroupId()||StringUtils.isBlank(experiment.getGroupName()),"试验项目:"+experiment.getName()+"未填写实验科室,请确认!");
}
for (SoilExperiment experiment:experimentListDb) {
RestAssert.fail(null == experiment.getGroupId()||StringUtils.isBlank(experiment.getGroupName()),"试验项目:"+experiment.getName()+"未填写实验科室,请确认!");
}
......@@ -382,6 +397,19 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
if (super.update(sample,Condition.create().in("id",sampleIdSet))){
soilSampleOperationService.recordMakerInfo(sampleIdSet,account);
soilSampleRecordService.record(SoilSampleStatusEnum.SEND,SoilSampleStatusEnum.SOIL_PREPARE,sampleIdSet,0,account,"样品开土制备完成");
List<SoilPrepare> saveList = new ArrayList<>();
for (Long sampleId:sampleIdSet) {
SoilPrepare prepare = new SoilPrepare();
//2代表是副样
prepare.setType(2);
prepare.setStatus(SoilPrepareStatusEnum.PREPARED);
prepare.setProgress(SoilPrepareStatusEnum.PREPARED);
prepare.setSampleId(sampleId);
saveList.add(prepare);
}
if (CollectionUtils.isNotEmpty(saveList)){
soilPrepareService.saveBatch(saveList);
}
}
for (SoilPrepare prepare:prepareList) {
......@@ -482,4 +510,31 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
}
return takeSample(sampleIds,account);
}
@Override
public Page<SoilSampleVO> pageLocationSample(Page<SoilSampleVO> page, SoilSampleVO soilSample) {
if (StringUtils.isBlank(soilSample.getReceiveLocation())){
RestAssert.fail("请填写收样位置");
}
return page.setRecords(baseMapper.selectLocationSample(page,soilSample));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean sampleRetain(Long[] ids,Long locationId,String location, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择试样");
List<SoilExperiment> experimentList= soilExperimentService.list(Condition.create().setSqlSelect("id").in("sample_id",ids));
RestAssert.fail(null == locationId || StringUtils.isBlank(location),"请选择要存放的位置");
if (CollectionUtils.isNotEmpty(experimentList)){
RestAssert.fail("请留存不含试验项目的样品");
}
SoilSample sample = new SoilSample();
sample.setStatus(SoilSampleStatusEnum.RETAIN);
sample.setProgress(SoilSampleStatusEnum.RETAIN);
soilSampleRecordService.record(SoilSampleStatusEnum.RECEIVE,SoilSampleStatusEnum.RECEIVE,ids,0,account,"不含有试验项目的样品进行留存");
soilSampleOperationService.recordReceiveInfo(ids,locationId,location,account);
return super.update(sample,Condition.create().in("id",ids));
}
}
......@@ -68,12 +68,36 @@
JOIN soil_entrust e ON s.entrust_id = e.id
WHERE s.deleted = 0 AND e.deleted = 0
<include refid="sWhere"/>
<if test="vo.haveExp!=null">
<if test="vo.haveExp == 0">
AND (SELECT COUNT(1) FROM soil_experiment WHERE deleted = 0 AND sample_id = s.id )=0
</if>
<if test="vo.haveExp == 1">
AND (SELECT COUNT(1) FROM soil_experiment WHERE deleted = 0 AND sample_id = s.id )>0
</if>
</if>
ORDER BY s.sample_code
</select>
<select id="selectLocationSample" resultType="com.patzn.cloud.service.soil.vo.SoilSampleVO">
WITH o AS ( SELECT sample_id,receive_location,receiver,receive_time,sender,send_time,make_time,maker,company_id FROM soil_sample_operation WHERE receive_location = #{vo.receiveLocation} )
SELECT
<include refid="sColumn"/>,<include refid="eColumn"/>,
o.receive_location,o.receiver,o.receive_time,o.sender,o.send_time,o.make_time,o.maker
FROM
o o
JOIN soil_sample s ON o.sample_id = s.id
JOIN soil_entrust e ON s.entrust_id = e.id
WHERE s.deleted = 0 AND e.deleted = 0
<include refid="sWhere"/>
ORDER BY s.sample_code
</select>
<select id="selectVOListByExp" resultType="com.patzn.cloud.service.soil.vo.SoilSampleVO">
WITH exp AS (
SELECT sample_id,company_id FROM soil_experiment WHERE deleted = 0
......
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