Commit 372cd089 by wangweidong

Merge remote-tracking branch 'origin/master'

parents e63219cf e60262d4
package com.patzn.cloud.service.lims.common;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import java.beans.PropertyDescriptor;
import java.util.HashSet;
import java.util.Set;
public class BeanUtils {
public static String[] getNullPropertyNames(Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<>();
for (PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue(pd.getName());
if (srcValue == null)
emptyNames.add(pd.getName());
}
String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}
public static void copyProperties(Object source, Object target) {
copyProperties(source, target, null);
}
public static void copyProperties(Object source, Object target, Boolean ignoreNull) {
ConvertUtils.register(new DateConverter(null), java.util.Date.class);
String[] ignoreArr = null != ignoreNull && ignoreNull.booleanValue() ? getNullPropertyNames(source) : null;
org.springframework.beans.BeanUtils.copyProperties(source, target, ignoreArr);
}
}
......@@ -306,6 +306,18 @@ public class EntrustController extends ServiceController {
return success(entrustService.backFromCheck(ids, getAccount(), reason));
}
@ApiOperation("委托制备退回")
@PostMapping("/back_from_make")
public RestResult<Boolean> backFromMake(@RequestParam("ids") Long[] ids, @RequestParam("reason") String reason) {
return success(entrustService.backFromMake(ids, getAccount(), reason));
}
@ApiOperation("委托接收退回")
@PostMapping("/back_from_receive")
public RestResult<Boolean> backFromReceive(@RequestParam("ids") Long[] ids, @RequestParam("reason") String reason) {
return success(entrustService.backFromReceive(ids, getAccount(), reason));
}
@ApiOperation("提交至样品制备")
@PostMapping("/submit_to_make")
......@@ -320,6 +332,12 @@ public class EntrustController extends ServiceController {
return success(entrustService.registerSubmitToMake(ids, getAccount()));
}
@ApiOperation("复制委托信息")
@PostMapping("/clone_entrust")
public RestResult<Boolean> clone(@RequestParam("ids") Long[] ids) {
return success(entrustService.cloneEntrust(ids, getAccount()));
}
@ApiOperation("样品接收委托分页列表")
@ApiImplicitParams({
......@@ -416,6 +434,8 @@ public class EntrustController extends ServiceController {
@PostMapping("/page_entrust_test_data")
public RestResult<Page<EntrustVO>> getPageTaskTestData(EntrustVO entrust) {
entrust.setItemStatus(EntrustSampleItemStatusEnum.TEST);
// 过滤当前人为检测人的委托数据
entrust.setTesterId(getAccount().getUserId());
// 获取当前用户分组
entrust.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustService.pageEntrustByItemData(getPage(), entrust));
......
......@@ -120,6 +120,12 @@ public class EntrustSampleController extends ServiceController {
return success(entrustSampleService.updateById(entrustSample));
}
@ApiOperation("根据 id 修改信息")
@PutMapping("/edit_sample")
public RestResult<Boolean> editSample(EntrustSample entrustSample,String source) {
return success(entrustSampleService.updateSample(entrustSample,source,getAccount()));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(EntrustSample entrustSample) {
......
......@@ -169,6 +169,7 @@ public class EntrustSampleItemController extends ServiceController {
@PostMapping("/page_input_by_sample_right")
public RestResult<Page<EntrustSampleItemVO>> getPageInputBySampleRight(EntrustSampleItemVO entrustSampleItem) {
entrustSampleItem.setStatus(EntrustSampleItemStatusEnum.TEST);
entrustSampleItem.setTesterId(getAccount().getUserId());
return success(entrustSampleItemService.pageAllotBySampleRight(getPage(), entrustSampleItem));
}
......@@ -308,6 +309,7 @@ public class EntrustSampleItemController extends ServiceController {
@PostMapping("/page_test_by_item_left")
public RestResult<Page<EntrustSampleItemVO>> getPageTestByItemLeft(EntrustSampleItemVO entrustSampleItem) {
entrustSampleItem.setStatus(EntrustSampleItemStatusEnum.TEST);
entrustSampleItem.setTesterId(getAccount().getUserId());
return success(entrustSampleItemService.pageByItemLeft(getPage(), entrustSampleItem));
}
......@@ -341,6 +343,8 @@ public class EntrustSampleItemController extends ServiceController {
@PostMapping("/page_test_by_item_right")
public RestResult<Page<EntrustSampleItemVO>> getPageTestByItemRight(EntrustSampleItemVO entrustSampleItem) {
entrustSampleItem.setStatus(EntrustSampleItemStatusEnum.TEST);
// 限制只有当前人为检测人方可见
entrustSampleItem.setTesterId(getAccount().getUserId());
return success(entrustSampleItemService.pageByItemRight(getPage(), entrustSampleItem));
}
......
package com.patzn.cloud.service.lims.hmhj.controller;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleRecord;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 样品操作日志表 前端控制器
*
* @author meazty
* @since 2021-07-08
*/
@Api(tags = "样品操作日志表")
@RestController
@RequestMapping("/v1/entrust_sample_record")
public class EntrustSampleRecordController extends ServiceController {
@Autowired
private IEntrustSampleRecordService entrustSampleRecordService;
@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),
})
@PostMapping("/page")
public RestResult<Page<EntrustSampleRecord>> getPage(EntrustSampleRecord entrustSampleRecord) {
return success(entrustSampleRecordService.page(getPage(), entrustSampleRecord));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<EntrustSampleRecord> get(@PathVariable("id") Long id) {
return success(entrustSampleRecordService.getById(id));
}
@ApiOperation("根据 id 修改信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@PutMapping("/{id}")
public RestResult<Boolean> edit(@PathVariable("id") Long id, EntrustSampleRecord entrustSampleRecord) {
entrustSampleRecord.setId(id);
return success(entrustSampleRecordService.updateById(entrustSampleRecord));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(EntrustSampleRecord entrustSampleRecord) {
return success(entrustSampleRecordService.save(entrustSampleRecord));
}
@ApiOperation("根据 ids 删除")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "主键列表", required = true, paramType = "query", allowMultiple = true, dataTypeClass = Long.class),
})
@DeleteMapping("/")
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(entrustSampleRecordService.removeByIds(ids));
}
}
......@@ -2,6 +2,7 @@ package com.patzn.cloud.service.lims.hmhj.controller;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
import com.patzn.cloud.service.hmhj.vo.OriginalRecordVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -56,6 +57,10 @@ public class OriginalRecordController extends ServiceController {
})
@PostMapping("/pageVO")
public RestResult<Page<OriginalRecordVO>> getPageVO(OriginalRecordVO originalRecordVO) {
// 数据检测只能当前人看
if(StringUtils.isNotBlank(originalRecordVO.getSource()) && "test".equalsIgnoreCase(originalRecordVO.getSource())) {
originalRecordVO.setTesterId(getAccount().getUserId());
}
return success(originalRecordService.pageVO(getPage(), originalRecordVO));
}
......
package com.patzn.cloud.service.lims.hmhj.controller;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import com.patzn.cloud.service.lims.hmhj.service.ILmsOriginalRecordInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 原始记录解析后的数据存储表 前端控制器
*
* @author meazty
* @since 2021-07-05
*/
@Api(tags = "原始记录解析后的数据存储表")
@RestController
@RequestMapping("/v1/original_record_info")
public class OriginalRecordInfoController extends ServiceController {
@Autowired
private ILmsOriginalRecordInfoService lmsOriginalRecordInfoService;
@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),
})
@PostMapping("/page")
public RestResult<Page<LmsOriginalRecordInfo>> getPage(LmsOriginalRecordInfo lmsOriginalRecordInfo) {
return success(lmsOriginalRecordInfoService.page(getPage(), lmsOriginalRecordInfo));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<LmsOriginalRecordInfo> get(@PathVariable("id") Long id) {
return success(lmsOriginalRecordInfoService.getById(id));
}
@ApiOperation("根据 id 修改信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@PutMapping("/{id}")
public RestResult<Boolean> edit(@PathVariable("id") Long id, LmsOriginalRecordInfo lmsOriginalRecordInfo) {
lmsOriginalRecordInfo.setId(id);
return success(lmsOriginalRecordInfoService.updateById(lmsOriginalRecordInfo));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(LmsOriginalRecordInfo lmsOriginalRecordInfo) {
return success(lmsOriginalRecordInfoService.save(lmsOriginalRecordInfo));
}
@ApiOperation("根据 ids 删除")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "主键列表", required = true, paramType = "query", allowMultiple = true, dataTypeClass = Long.class),
})
@DeleteMapping("/")
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(lmsOriginalRecordInfoService.removeByIds(ids));
}
@ApiOperation("解析采集原始数据信息")
@PostMapping("/analysisOriginalData")
public RestResult<Boolean> analysisOriginalData(@RequestParam("templateId") Long templateId, @RequestParam("itemIds") Long[] itemIds) {
return success(lmsOriginalRecordInfoService.analysisOriginalData(templateId, itemIds, getAccount()));
}
}
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleRecord;
/**
* <p>
* 样品操作日志表 Mapper 接口
* </p>
*
* @author meazty
* @since 2021-07-08
*/
public interface EntrustSampleRecordMapper extends BatchMapper<EntrustSampleRecord> {
}
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.vo.OriginalRecordInfoVO;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
......@@ -16,10 +18,5 @@ import java.util.Map;
*/
public interface LmsOriginalRecordInfoMapper extends BatchMapper<LmsOriginalRecordInfo> {
/**
* @return
*/
List<LmsOriginalRecordInfo> selectUnGeneratedEntrustData();
List<LmsOriginalRecordInfo> selectUnGeneratedSampleData();
List<OriginalRecordInfoVO> selectByItem(@Param("itemIds") Long[] itemIds);
}
......@@ -28,4 +28,6 @@ public interface IEntrustSamplePrepareService extends IBaseService<EntrustSample
boolean submitSampleReceive(Long[] ids, Account account);
boolean addOrUpdateToSetStatus(Long[] sampleIds, EntrustSamplePrepareStatusEnum statusEnum);
boolean removeBySampleIds(Long[] sampleIds);
}
package com.patzn.cloud.service.lims.hmhj.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.hmhj.entity.EntrustSampleRecord;
import java.util.Collection;
import java.util.List;
/**
* 样品操作日志表 服务类
*
* @author meazty
* @since 2021-07-08
*/
public interface IEntrustSampleRecordService extends IBaseService<EntrustSampleRecord> {
Page<EntrustSampleRecord> page(Page<EntrustSampleRecord> page, EntrustSampleRecord entrustSampleRecord);
boolean removeByIds(List<Long> ids);
void record(Long[] ids, String from, String to, int type, Account account, String remark);
void record(Collection<Long> ids, String from, String to, int type, Account account, String remark);
}
......@@ -74,4 +74,10 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
boolean updateSamplePrevFlowInfo(Entrust entrust, EntrustFlowEnum prevFlowStatus, Account account);
boolean addStandardSampleDTO(EntrustSampleDTO dto, Account account);
List<EntrustSample> getByEntrustId(Long entrustId);
List<Long> getIdsByEntrustId(Long entrustId);
boolean updateSample(EntrustSample entrustSample, String source, Account account);
}
......@@ -76,4 +76,10 @@ public interface IEntrustService extends IBaseService<Entrust> {
boolean rejectToPrevNode(Long id,String reason, Account account);
boolean rejectToPrevNode(Entrust entrust,String reason, Account account);
boolean cloneEntrust(Long[] ids, Account account);
boolean backFromMake(Long[] ids, Account account, String reason);
boolean backFromReceive(Long[] ids, Account account, String reason);
}
package com.patzn.cloud.service.lims.hmhj.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.lims.collection.entity.LmsOriginalRecordInfo;
......@@ -18,5 +19,6 @@ public interface ILmsOriginalRecordInfoService extends IBaseService<LmsOriginalR
boolean removeByIds(List<Long> ids);
boolean generateOriginalRelData();
boolean analysisOriginalData(Long templateId, Long[] itemIds, Account account);
}
......@@ -5,6 +5,7 @@ import com.patzn.cloud.service.hmhj.entity.ContractSampleItem;
import com.patzn.cloud.service.lims.hmhj.mapper.ContractSampleItemMapper;
import com.patzn.cloud.service.lims.hmhj.service.IContractSampleItemService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
......@@ -23,8 +24,12 @@ public class ContractSampleItemServiceImpl extends BaseServiceImpl<ContractSampl
@Override
public Page<ContractSampleItem> page(Page<ContractSampleItem> page, ContractSampleItem contractSampleItem) {
String name = contractSampleItem.getName();
contractSampleItem.setName(null);
Wrapper wrapper = new EntityWrapper<>(contractSampleItem);
if(StringUtils.isNotBlank(name)){
wrapper.like("name",name);
}
return this.page(page, wrapper);
}
......
......@@ -59,7 +59,17 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
@Override
public Page<ContractSample> page(Page<ContractSample> page, ContractSample contractSample) {
String code = contractSample.getCode();
String materialName = contractSample.getMaterialName();
contractSample.setCode(null).setMaterialName(null);
Wrapper wrapper = new EntityWrapper<>(contractSample);
if(StringUtils.isNotBlank(code)){
wrapper.like("code",code);
}
if(StringUtils.isNotBlank(materialName)){
wrapper.like("material_name",materialName);
}
wrapper.orderBy("ctime",false);
return this.page(page, wrapper);
}
......
......@@ -202,7 +202,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
}
private boolean executeSubmitOperation(Entrust entrust, Account account) {
if (null == entrust || StringUtils.isBlank(entrust.getStatusPath())) {
if (StringUtils.isBlank(entrust.getStatusPath())) {
logger.error("委托为空,或者委托路径为空不进行下一步操作");
return false;
}
......@@ -269,7 +269,10 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
}
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
Entrust entrust = getByReportId(ids[0]);
entrust.setTestTimeE(new Date());
entrustService.updateById(entrust);
executeSubmitOperation(entrust, account);
return super.update(report, Condition.create().in("id", ids));
}
......@@ -301,7 +304,12 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
}
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
Entrust entrust = getByReportId(ids[0]);
// 报告批准,获取当前时间为检测结束时间
entrust.setTestTimeE(new Date());
entrustService.updateById(entrust);
executeSubmitOperation(entrust, account);
return super.update(report, Condition.create().in("id", ids));
}
......
......@@ -112,8 +112,12 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
@Override
public Page<EntrustSampleItem> page(Page<EntrustSampleItem> page, EntrustSampleItem entrustSampleItem) {
String name = entrustSampleItem.getName();
entrustSampleItem.setName(null);
Wrapper wrapper = new EntityWrapper<>(entrustSampleItem);
if(StringUtils.isNotBlank(name)){
wrapper.like("name",name);
}
return this.page(page, wrapper);
}
......
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.StringUtils;
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.service.hmhj.dto.SamplePrepareDTO;
import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.*;
......@@ -64,6 +65,17 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public boolean removeBySampleIds(Long[] sampleIds) {
if(null == sampleIds || sampleIds.length == 0){
return false;
}
Account account = LoginHelper.getAccount();
EntrustSamplePrepare samplePrepare = new EntrustSamplePrepare();
samplePrepare.setDeleted(1).setLid(account.getUserId()).setLtime(new Date());
return update(samplePrepare,Condition.create().in("entrust_sample_id",sampleIds).eq("deleted",0));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean makeEnd(SamplePrepareDTO dto, Account account) {
......@@ -155,7 +167,7 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
saveBatch(savePrepare);
List<EntrustSample> checkMakeList = entrustSampleService.list(Condition.create().eq("entrust_id", entrust.getId()).eq("status", EntrustSampleStatusEnum.DRAFT));
if (CollectionUtils.isEmpty(checkMakeList) && StringUtils.isNotEmpty(entrust.getStatusPath())) {
if (CollectionUtils.isEmpty(checkMakeList)) {
// String flowStatus = entrust.getFlowStatus();
// String statusPath = entrust.getStatusPath();
// // 获取委托的状态
......@@ -170,7 +182,18 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
// updateEntrust.setId(entrust.getId());
// entrustService.updateById(updateEntrust);
// 根据流程状态提交
entrustService.submitToNextNode(entrust, account);
if (StringUtils.isNotEmpty(entrust.getStatusPath())) {
entrustService.submitToNextNode(entrust, account);
} else {
Entrust updateEntrust = new Entrust();
updateEntrust.setStatus(EntrustStatusEnum.TEST);
updateEntrust.setProgress(EntrustStatusEnum.TEST);
updateEntrust.setFlowStatus(EntrustFlowEnum.RECEIVE.getName());
updateEntrust.setId(entrust.getId());
entrustService.updateById(updateEntrust);
// String remark = "提交至样品接收", title = "新的样品接收任务!";
// entrustRecordService.record(new Long[]{entrust.getId()}, status.getDisplay(), nextStatus.getDisplay(), 0, account, remark);
}
}
......@@ -195,6 +218,12 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
sampleIdsList.add(prepare.getEntrustSampleId());
}
EntrustSample entrustSample = entrustSampleService.getById(prepareList.get(0).getEntrustSampleId());
Entrust entrust = entrustService.getById(entrustSample.getEntrustId());
if(null == entrust.getTestAddress()){
// entrust.setReceiveTime(new Date());
}
EntrustSamplePrepare prepare = new EntrustSamplePrepare();
prepare.setStatus(EntrustSamplePrepareStatusEnum.TEST);
prepare.setStatus(EntrustSamplePrepareStatusEnum.TEST);
......@@ -226,10 +255,13 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
}
if (CollectionUtils.isEmpty(notOkSampleIds)) {
EntrustSample entrustSample = entrustSampleService.getById(prepareList.get(0).getEntrustSampleId());
Entrust entrust = entrustService.getById(entrustSample.getEntrustId());
// 检测开始时间为接收时间
entrust.setTestTimeS(new Date());
if (StringUtils.isNotEmpty(entrust.getStatusPath())) {
entrustService.submitToNextNode(entrust, account);
}else{
entrust.setFlowStatus(EntrustFlowEnum.TEST.getName());
entrustService.updateById(entrust);
}
}
......@@ -263,7 +295,7 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
} else {
EntrustSamplePrepare prepare = new EntrustSamplePrepare();
prepare.setStatus(statusEnum).setStatus(statusEnum);
update(prepare,Condition.create().in("entrust_sample_id",sampleIds).eq("deleted", 0));
update(prepare, Condition.create().in("entrust_sample_id", sampleIds).eq("deleted", 0));
}
return false;
}
......
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleRecord;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleRecordMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleRecordService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
/**
* 样品操作日志表 服务实现类
*
* @author meazty
* @since 2021-07-08
*/
@Service
public class EntrustSampleRecordServiceImpl extends BaseServiceImpl<EntrustSampleRecordMapper, EntrustSampleRecord> implements IEntrustSampleRecordService {
@Override
public Page<EntrustSampleRecord> page(Page<EntrustSampleRecord> page, EntrustSampleRecord entrustSampleRecord) {
Wrapper wrapper = new EntityWrapper<>(entrustSampleRecord);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public void record(Long[] ids, String from, String to, int type, Account account, String remark) {
record(Arrays.asList(ids), from, to, type, account, remark);
}
@Override
public void record(Collection<Long> ids, String from, String to, int type, Account account, String remark) {
RestAssert.fail(CollectionUtils.isEmpty(ids), "样品ID不能为空");
List<EntrustSampleRecord> saveRecord = new ArrayList<>();
for (Long entrustId : ids) {
EntrustSampleRecord sampleRecord = new EntrustSampleRecord();
sampleRecord.setSampleId(entrustId);
sampleRecord.setOperator(account.getUserName());
sampleRecord.setOperatorId(account.getUserId());
sampleRecord.setOrigin(from);
sampleRecord.setTarget(to);
sampleRecord.setType(type);
sampleRecord.setRemark(remark);
saveRecord.add(sampleRecord);
}
if (CollectionUtils.isNotEmpty(saveRecord)) {
saveBatch(saveRecord);
}
}
}
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
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.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplate;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplateConfig;
import com.patzn.cloud.service.hmhj.vo.CollectionVO;
import com.patzn.cloud.service.hmhj.vo.OriginalRecordInfoVO;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import com.patzn.cloud.service.lims.collection.entity.OriginalAtlas;
import com.patzn.cloud.service.lims.hmhj.mapper.LmsOriginalRecordInfoMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemIndexService;
import com.patzn.cloud.service.lims.hmhj.service.ILmsOriginalRecordInfoService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.lims.hmhj.service.IOriginalTemplateConfigService;
import com.patzn.cloud.service.lims.hmhj.service.IOriginalTemplateService;
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 java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 原始记录解析后的数据存储表 服务实现类
......@@ -35,13 +37,13 @@ import java.util.stream.Collectors;
public class LmsOriginalRecordInfoServiceImpl extends BaseServiceImpl<LmsOriginalRecordInfoMapper, LmsOriginalRecordInfo> implements ILmsOriginalRecordInfoService {
@Autowired
private IEntrustService entrustService;
private IOriginalTemplateService originalTemplateService;
@Autowired
private IEntrustSampleService entrustSampleService;
private IOriginalTemplateConfigService originalTemplateConfigService;
@Autowired
private IEntrustSampleItemService entrustSampleItemService;
private IEntrustSampleItemIndexService entrustSampleItemIndexService;
@Override
public Page<LmsOriginalRecordInfo> page(Page<LmsOriginalRecordInfo> page, LmsOriginalRecordInfo lmsOriginalRecordInfo) {
......@@ -54,36 +56,72 @@ public class LmsOriginalRecordInfoServiceImpl extends BaseServiceImpl<LmsOrigina
return baseMapper.deleteBatchIds(ids) > 0;
}
/**
* 生成从委托到原始记录相关数据
*
* @return
*/
@Override
public boolean generateOriginalRelData() {
Account account = LoginHelper.getAccount();
// 查询未生成的委托数据
List<LmsOriginalRecordInfo> entrustList = baseMapper.selectUnGeneratedEntrustData();
if (CollectionUtils.isNotEmpty(entrustList)) {
List<Entrust> entrusts = entrustList.stream().map(t -> {
return new Entrust().setStatus(EntrustStatusEnum.TEST).setProgress(EntrustStatusEnum.TEST)
.setCode(t.getContractCode()).setCompanyId(account.getCompanyId()).setUid(account.getUserId());
}).collect(Collectors.toList());
entrustService.saveBatch(entrusts);
public boolean analysisOriginalData(Long templateId, Long[] itemIds, Account account) {
RestAssert.fail(null == templateId, "原始记录模板编号为空");
RestAssert.fail(null == itemIds || 0 == itemIds.length, "检测项目为空");
OriginalTemplate template = originalTemplateService.getById(templateId);
RestAssert.fail(null == template, "原始记录模板为空");
// String tempName = template.getName();
// 需要采集的指标项
List<OriginalTemplateConfig> configList = originalTemplateConfigService.list(Condition.create()
.eq("template_id", template).eq("itemed", 1).eq("deleted", 0));
RestAssert.fail(CollectionUtils.isEmpty(configList), "原始记录模板指标未配置");
// 根据检测项目ID查询采集数据
List<OriginalRecordInfoVO> originalRecordInfoList = baseMapper.selectByItem(itemIds);
RestAssert.fail(CollectionUtils.isEmpty(originalRecordInfoList), "所选检测项目对应的采集数据不存在");
List<EntrustSampleItemIndex> itemIndexList = new ArrayList<>();
// 具体逻辑需要额外处理
//
for (OriginalRecordInfoVO vo : originalRecordInfoList) {
// OriginalAtlas data = JSONObject.parseObject(vo.getData(),OriginalAtlas.class);
CollectionVO data = JSONObject.parseObject(vo.getData(), CollectionVO.class);
for (OriginalTemplateConfig config : configList) {
EntrustSampleItemIndex itemIndex = new EntrustSampleItemIndex();
itemIndex.setStatus(0);
itemIndex.setProgress(0);
itemIndex.setUid(account.getUserId());
itemIndex.setName(config.getAttributeName());
itemIndex.setCompanyId(account.getCompanyId());
itemIndex.setEntrustSampleItemId(vo.getItemId());
String attrName = config.getAttributeName();
// 取值待定
if (attrName.contains("一次浓度")) {
itemIndex.setTestValue(data.getOneContent());
} else if (attrName.contains("二次浓度")) {
itemIndex.setTestValue(data.getTwoContent());
} else if (attrName.contains("三次浓度")) {
itemIndex.setTestValue(data.getThreeContent());
} else if (attrName.contains("四次浓度")) {
itemIndex.setTestValue(data.getFourContent());
} else if (attrName.contains("浓度") || attrName.contains("初晶温度")) {
itemIndex.setTestValue(data.getContent());
} else if (attrName.contains("校准后荧光强度")) {
itemIndex.setTestValue(data.getCorrectedContent());
} else if (attrName.contains("荧光强度")) {
itemIndex.setTestValue(data.getAbs());
} else if (attrName.contains("分析日期")) {
itemIndex.setTestValue(data.getDateTime());
} else if (attrName.contains("耐压/抗折强度")) {
itemIndex.setTestValue(data.getStrength());
} else if (attrName.contains("最大载荷")) {
itemIndex.setTestValue(data.getMaxLoad());
} else if (attrName.contains("面积")) {
itemIndex.setTestValue(data.getArea());
}
itemIndexList.add(itemIndex);
}
}
// 查询未生成的样品数据
List<LmsOriginalRecordInfo> sampleList = baseMapper.selectUnGeneratedSampleData();
if (CollectionUtils.isNotEmpty(sampleList)) {
List<EntrustSample> samples = sampleList.stream().map(t -> {
return new EntrustSample().setStatus(EntrustSampleStatusEnum.TEST).setProgress(EntrustSampleStatusEnum.TEST)
.setCode(t.getSampleNum()).setCompanyId(account.getCompanyId()).setUid(account.getUserId());
}).collect(Collectors.toList());
List<Entrust> entrusts = entrustService.list(Condition.create().setSqlSelect(new String[]{"id","code"})
.eq("status", EntrustStatusEnum.TEST.getValue())
.eq("deleted", 0));
entrustSampleService.saveBatch(samples);
if (CollectionUtils.isNotEmpty(itemIndexList)) {
entrustSampleItemIndexService.saveBatch(itemIndexList);
}
return false;
return true;
}
}
package com.patzn.cloud.service.lims.schedule;
import com.patzn.cloud.service.lims.hmhj.service.ILmsOriginalRecordInfoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class LmsOriginalRecordInfoSchedule {
private Logger logger = LoggerFactory.getLogger(LmsOriginalRecordInfoSchedule.class);
@Autowired
private ILmsOriginalRecordInfoService lmsOriginalRecordInfoService;
/**
* 每隔5分钟,执行生成委托->样品->检测项目->原始记录数据
*/
@Scheduled(cron = "0 */50 * * * ?")
public void execute(){
logger.info("------每隔5分钟,执行生成委托->样品->检测项目->原始记录数据------");
// lmsOriginalRecordInfoService.generateOriginalRelData();
}
}
......@@ -87,6 +87,9 @@
<if test="null!=vo.testSide">
AND e.test_side LIKE CONCAT('%',#{vo.testSide},'%')
</if>
<if test="null!=vo.testerId">
AND i.tester_id = #{vo.testerId}
</if>
order by e.entrust_time desc,e.code desc
</select>
......
......@@ -28,6 +28,11 @@
#{sampleId}
</foreach>
</if>
<if test="null != vo.testerId">
AND tester_id = #{vo.testerId}
</if>
GROUP BY name ORDER BY name
</select>
......@@ -81,6 +86,9 @@
</foreach>
</if>
<if test="null!=vo.testerId">
AND tester_id = #{vo.testerId}
</if>
)
SELECT i.*,s.name AS "sampleName",e.test_side "testSide",s.code AS "sampleCode",l.record_id,r.object_key AS "recordObjectKey" FROM i
......@@ -142,6 +150,10 @@
#{sampleId}
</foreach>
</if>
<if test="null != vo.testerId">
AND tester_id = #{vo.testerId}
</if>
)
SELECT i.*,s.name AS "sampleName",s.code AS "sampleCode",e.test_side "testSide",l.record_id,r.object_key AS "recordObjectKey"
......
......@@ -58,6 +58,7 @@
#{sampleId}
</foreach>
</if>
order by order_by asc,ctime desc
</select>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleRecordMapper">
</mapper>
......@@ -2,30 +2,27 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.patzn.cloud.service.lims.hmhj.mapper.LmsOriginalRecordInfoMapper">
<!--获取未生成的委托数据-->
<select id="selectUnGeneratedEntrustData"
resultType="com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo">
select o.file_id,o.contract_code from lms_original_record_info o
<select id="selectByItem"
resultType="com.patzn.cloud.service.hmhj.vo.OriginalRecordInfoVO">
with item as (
select
i.id "item_id",i.name "item_name",s.id "sample_id",s.code "sample_code",
e.id "entrust_id" ,e.code "entrust_code",i.company_id
from entrust_sample_item i,entrust_sample s,entrust e
where i.deleted = 0 and s.deleted = 0 and e.deleted = 0
and i.entrust_sample_id = s.id and s.entrust_id = e.id
AND i.id IN
<foreach collection="itemIds" index="index" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
)
select
o.*,i.item_id,i.sample_id,i.entrust_id
from lms_original_record_info o, item i
where o.deleted = 0
and o.contract_code is not null
and not exists (select 1 from entrust e where e.deleted = 0 and e.code = o.contract_code)
group by o.file_id, o.contract_code order by o.file_id
</select>
<select id="selectUnGeneratedSampleData"
resultType="com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo">
select o.file_id,o.contract_code,o.sample_num from lms_original_record_info o
where o.deleted = 0
and o.contract_code is not null
and o.sample_num is not null
and not exists (
select 1 from entrust e,entrust_sample s
where
e.deleted = 0
and e.code = o.contract_code
and s.entrust_id = e.id
and s.code = o.sample_num
)
group by o.file_id, o.contract_code, o.sample_num order by o.file_id
and o.item_name = i.item_name
and o.contract_code = i.entrust_code
and o.sample_num = i.sample_code
and o.data is not null
</select>
</mapper>
......@@ -16,6 +16,13 @@
<if test="null != vo.entrustCode">
AND e.code LIKE CONCAT('%',#{vo.entrustCode},'%')
</if>
<if test="null != vo.testerId">
AND exists (
select 1 from entrust_sample_item i,item_rel_original_record rr
where i.deleted = 0 and rr.deleted = 0 and rr.item_id = i.id
and r.id = rr.record_id and i.tester_id = #{vo.testerId}
)
</if>
order by r.id desc
</select>
......
package com.patzn.cloud.service.lims.test;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.patzn.cloud.service.hmhj.vo.CollectionVO;
public class JsonObjectTest {
public static void main(String[] args) {
String str = "{\"abs\":\"-0.000\",\"content\":\"-0.0007\",\"curveData\":[{\"content\":\"0.0000\",\"abs\":\"0.001\"},{\"content\":\"0.0030\",\"abs\":\"0.012\"},{\"content\":\"0.0060\",\"abs\":\"0.022\"},{\"content\":\"0.0100\",\"abs\":\"0.034\"},{\"content\":\"0.0150\",\"abs\":\"0.049\"}]}";
CollectionVO collectionVO = JSONObject.parseObject(str,CollectionVO.class);
System.out.println(collectionVO);
}
}
CREATE TABLE "public"."entrust_sample_record" (
CREATE TABLE "public"."entrust_sample_record" (
"id" int8 NOT NULL,
"sample_id" int8,
"remark" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"ctime" timestamp(0) DEFAULT NULL::timestamp without time zone,
"uid" int8,
"lid" int8,
"ltime" timestamp(0) DEFAULT NULL::timestamp without time zone,
"deleted" int2 DEFAULT 0,
"company_id" int8,
"type" int2 DEFAULT 0,
"origin" varchar(50) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"target" varchar(50) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"operator" varchar(50) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"operator_id" int8
)
;
COMMENT ON COLUMN "public"."entrust_sample_record"."id" IS '主键';
COMMENT ON COLUMN "public"."entrust_sample_record"."sample_id" IS '样品ID';
COMMENT ON COLUMN "public"."entrust_sample_record"."remark" IS '操作原因';
COMMENT ON COLUMN "public"."entrust_sample_record"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."entrust_sample_record"."uid" IS '创建人ID';
COMMENT ON COLUMN "public"."entrust_sample_record"."lid" IS '最后修改人ID';
COMMENT ON COLUMN "public"."entrust_sample_record"."ltime" IS '最后修改时间';
COMMENT ON COLUMN "public"."entrust_sample_record"."deleted" IS '是否删除0否1是';
COMMENT ON COLUMN "public"."entrust_sample_record"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."entrust_sample_record"."type" IS '类型 0流转 1回退 2更新';
COMMENT ON COLUMN "public"."entrust_sample_record"."origin" IS '操作阶段';
COMMENT ON COLUMN "public"."entrust_sample_record"."target" IS '目标阶段';
COMMENT ON COLUMN "public"."entrust_sample_record"."operator" IS '操作人';
COMMENT ON COLUMN "public"."entrust_sample_record"."operator_id" IS '操作人ID';
COMMENT ON TABLE "public"."entrust_sample_record" IS '样品操作日志表';
-- ----------------------------
-- Primary Key structure for table entrust_sample_record
-- ----------------------------
ALTER TABLE "public"."entrust_sample_record" ADD CONSTRAINT "entrust_sample_record_pkey" PRIMARY KEY ("id");
-- 新增委托字段 --
ALTER TABLE "public"."entrust"
ADD COLUMN "expect_send_time" timestamp(6),
ADD COLUMN "live_witness" int2,
ADD COLUMN "sample_size" varchar(64) COLLATE "pg_catalog"."default",
ADD COLUMN "priority" varchar(32) COLLATE "pg_catalog"."default",
ADD COLUMN "test_fee" numeric(10,2) default 0.00,
ADD COLUMN "test_time_s" timestamp(6),
ADD COLUMN "test_time_e" timestamp(6);
COMMENT ON COLUMN "public"."entrust"."expect_send_time" IS '客户期望报告发出日期';
COMMENT ON COLUMN "public"."entrust"."live_witness" IS '现场见证【0:否,1:是】';
COMMENT ON COLUMN "public"."entrust"."sample_size" IS '样品尺寸';
COMMENT ON COLUMN "public"."entrust"."priority" IS '优先级';
COMMENT ON COLUMN "public"."entrust"."test_fee" IS '检测费用';
COMMENT ON COLUMN "public"."entrust"."test_time_s" IS '检测开始日期';
COMMENT ON COLUMN "public"."entrust"."test_time_e" IS '检测结束日期';
-- 新增样品字段 --
ALTER TABLE "public"."entrust_sample"
ADD COLUMN "compliance_test" int2;
COMMENT ON COLUMN "public"."entrust_sample"."compliance_test" IS '符合性检测【0:否,1:是】';
-- 新增样品检测项目字段 --
ALTER TABLE "public"."entrust_sample_item"
ADD COLUMN "univalent" numeric(10,2) default 0.00;
COMMENT ON COLUMN "public"."entrust_sample_item"."univalent" IS '单价';
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