Commit 8bd24004 by wangweidong

样品流转模块管理

parent 97a01da3
...@@ -6,6 +6,7 @@ import com.patzn.lims.core.PtConstants; ...@@ -6,6 +6,7 @@ import com.patzn.lims.core.PtConstants;
import com.patzn.lims.core.api.PtResult; import com.patzn.lims.core.api.PtResult;
import com.patzn.lims.core.web.ServiceController; import com.patzn.lims.core.web.ServiceController;
import com.patzn.lims.drug.dto.DrugSampleDTO; import com.patzn.lims.drug.dto.DrugSampleDTO;
import com.patzn.lims.drug.dto.DrugSampleFlowDTO;
import com.patzn.lims.drug.dto.DrugSampleReportDTO; import com.patzn.lims.drug.dto.DrugSampleReportDTO;
import com.patzn.lims.drug.entity.DrugSample; import com.patzn.lims.drug.entity.DrugSample;
import com.patzn.lims.drug.entity.DrugSampleOperation; import com.patzn.lims.drug.entity.DrugSampleOperation;
...@@ -404,6 +405,38 @@ public class DrugSampleController extends ServiceController<IDrugSampleService, ...@@ -404,6 +405,38 @@ public class DrugSampleController extends ServiceController<IDrugSampleService,
return success(baseService.pageVO(getPage(), vo)); return success(baseService.pageVO(getPage(), vo));
} }
@ApiOperation(value = "样品接收分页列表", notes = "样品接收分页查询数据列表")
@ApiImplicitParams({
@ApiImplicitParam(name = PtConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = PtConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = PtConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = PtConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataType = "String"),
})
@PostMapping("/page-sample-flow")
public PtResult<IPage<DrugSampleVO>> getPageSampleFlow(DrugSampleVO vo) {
vo.setStatus(SampleStatusEnum.FLOW);
vo.setCompanyId(getAccount().getCompanyId());
vo.setItemStatus(ItemStatusEnum.DRAFT);
return success(baseService.pageSampleFlow(getPage(), vo));
}
@ApiOperation(value = "样品流转历史分页列表", notes = "样品流转历史分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = PtConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = PtConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = PtConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = PtConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataType = "String"),
})
@PostMapping("/page-sample-flow-his")
public PtResult<IPage<DrugSampleVO>> getPageSampleFlowHis(DrugSampleVO vo) {
vo.setCompanyId(getAccount().getCompanyId());
return success(baseService.pageSampleFlowHis(getPage(), vo));
}
@ApiOperation(value = "样品接收历史分页列表", notes = "分页查询数据列表") @ApiOperation(value = "样品接收历史分页列表", notes = "分页查询数据列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = PtConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataType = "int"), @ApiImplicitParam(name = PtConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataType = "int"),
...@@ -446,6 +479,14 @@ public class DrugSampleController extends ServiceController<IDrugSampleService, ...@@ -446,6 +479,14 @@ public class DrugSampleController extends ServiceController<IDrugSampleService,
return success(baseService.submitReceive(ids,getAccount())); return success(baseService.submitReceive(ids,getAccount()));
} }
@ApiOperation(value = "样品接收提交", notes = "样品接收提交")
@PostMapping("/submit-receive-to-flow")
public PtResult<Boolean> submitReceiveToFlow(@RequestParam("ids") Long [] ids) {
return success(baseService.submitReceiveToFlow(ids,getAccount()));
}
@ApiOperation(value = "样品接收扫码提交", notes = "样品接收扫码提交") @ApiOperation(value = "样品接收扫码提交", notes = "样品接收扫码提交")
@PostMapping("/scan-submit-receive") @PostMapping("/scan-submit-receive")
public PtResult<Boolean> scanSubmitReceive(@RequestParam("sampleCode")String sampleCode) { public PtResult<Boolean> scanSubmitReceive(@RequestParam("sampleCode")String sampleCode) {
...@@ -495,7 +536,6 @@ public class DrugSampleController extends ServiceController<IDrugSampleService, ...@@ -495,7 +536,6 @@ public class DrugSampleController extends ServiceController<IDrugSampleService,
}) })
@PostMapping("/page-sample-input") @PostMapping("/page-sample-input")
public PtResult<IPage<DrugSampleVO>> getPageSampleInput(DrugSampleVO vo) { public PtResult<IPage<DrugSampleVO>> getPageSampleInput(DrugSampleVO vo) {
vo.setStatus(SampleStatusEnum.TEST);
vo.setItemStatus(ItemStatusEnum.INPUT); vo.setItemStatus(ItemStatusEnum.INPUT);
vo.setCompanyId(getAccount().getCompanyId()); vo.setCompanyId(getAccount().getCompanyId());
return success(baseService.pageVOByItemStatus(getPage(), vo)); return success(baseService.pageVOByItemStatus(getPage(), vo));
...@@ -1075,4 +1115,12 @@ public class DrugSampleController extends ServiceController<IDrugSampleService, ...@@ -1075,4 +1115,12 @@ public class DrugSampleController extends ServiceController<IDrugSampleService,
return success(baseService.editSampleVO(dto,getAccount())); return success(baseService.editSampleVO(dto,getAccount()));
} }
@ApiOperation(value = "样品流转提交", notes = "样品流转提交")
@PostMapping("/submit-flow")
public PtResult<Boolean> submitFlow(@RequestBody DrugSampleFlowDTO flowDTO) {
return success(baseService.submitFlow(flowDTO,getAccount()));
}
} }
...@@ -21,6 +21,7 @@ public enum SampleStatusEnum implements IBaseEnum { ...@@ -21,6 +21,7 @@ public enum SampleStatusEnum implements IBaseEnum {
MAKE(10, "样品制备"), MAKE(10, "样品制备"),
SEND(20, "样品送样"), SEND(20, "样品送样"),
RECEIVE(30, "样品接收"), RECEIVE(30, "样品接收"),
FLOW(35, "样品流转"),
TEST(40, "样品检测"), TEST(40, "样品检测"),
REPORT_MAKE(60, "报告编制"), REPORT_MAKE(60, "报告编制"),
REPORT_CHECK(70, "报告审核"), REPORT_CHECK(70, "报告审核"),
......
...@@ -21,6 +21,12 @@ public interface DrugSampleMapper extends BaseMapper<DrugSample> { ...@@ -21,6 +21,12 @@ public interface DrugSampleMapper extends BaseMapper<DrugSample> {
Page<DrugSampleVO> selectVOList(Page page, @Param("vo") DrugSampleVO vo); Page<DrugSampleVO> selectVOList(Page page, @Param("vo") DrugSampleVO vo);
Page<DrugSampleVO> selectVOFlowList(Page page, @Param("vo") DrugSampleVO vo);
Page<DrugSampleVO> selectVOFlowHisList(Page page, @Param("vo") DrugSampleVO vo);
Page<DrugSampleVO> selectVOByItemStatusList(Page page,@Param("vo") DrugSampleVO vo); Page<DrugSampleVO> selectVOByItemStatusList(Page page,@Param("vo") DrugSampleVO vo);
Page<DrugSampleOosVO> selectOosRegister(Page page, @Param("vo") DrugSampleOosVO vo); Page<DrugSampleOosVO> selectOosRegister(Page page, @Param("vo") DrugSampleOosVO vo);
......
...@@ -50,6 +50,10 @@ public interface IDrugItemService extends IBaseService<DrugItem> { ...@@ -50,6 +50,10 @@ public interface IDrugItemService extends IBaseService<DrugItem> {
boolean updateByCondition(Long[] ids, ItemStatusEnum allocate); boolean updateByCondition(Long[] ids, ItemStatusEnum allocate);
boolean updateByCondition(List<Long> ids, ItemStatusEnum allocate);
boolean updateByConditionIds(List<Long> ids, ItemStatusEnum allocate);
boolean adjustTester(Long[] ids, DrugItemAllocate allocate, Account account); boolean adjustTester(Long[] ids, DrugItemAllocate allocate, Account account);
Page<DrugItemVO> pageDispatch(Page page, DrugItemVO vo); Page<DrugItemVO> pageDispatch(Page page, DrugItemVO vo);
......
...@@ -5,6 +5,7 @@ import com.patzn.lims.core.web.Account; ...@@ -5,6 +5,7 @@ import com.patzn.lims.core.web.Account;
import com.patzn.lims.core.web.IBaseService; import com.patzn.lims.core.web.IBaseService;
import com.patzn.lims.drug.entity.DrugSampleOperation; import com.patzn.lims.drug.entity.DrugSampleOperation;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
...@@ -27,6 +28,10 @@ public interface IDrugSampleOperationService extends IBaseService<DrugSampleOper ...@@ -27,6 +28,10 @@ public interface IDrugSampleOperationService extends IBaseService<DrugSampleOper
boolean updateReceiveToTest(Account account, Long[] ids); boolean updateReceiveToTest(Account account, Long[] ids);
boolean updateReceiveToTest(Account account, Collection<Long> ids);
boolean updateReceiveToFlow(Account account, Long[] ids);
boolean updateSampleToReport(List<Long> sampleIdEnd, Account account); boolean updateSampleToReport(List<Long> sampleIdEnd, Account account);
boolean updateReportMakeInfo(Long[] ids, Account account); boolean updateReportMakeInfo(Long[] ids, Account account);
......
...@@ -6,6 +6,8 @@ import com.patzn.lims.core.web.IBaseService; ...@@ -6,6 +6,8 @@ import com.patzn.lims.core.web.IBaseService;
import com.patzn.lims.drug.entity.DrugSampleRecord; import com.patzn.lims.drug.entity.DrugSampleRecord;
import com.patzn.lims.drug.eunms.SampleStatusEnum; import com.patzn.lims.drug.eunms.SampleStatusEnum;
import java.util.Collection;
/** /**
* <p> * <p>
* 食药样品操作日志表 服务类 * 食药样品操作日志表 服务类
...@@ -23,5 +25,7 @@ public interface IDrugSampleRecordService extends IBaseService<DrugSampleRecord> ...@@ -23,5 +25,7 @@ public interface IDrugSampleRecordService extends IBaseService<DrugSampleRecord>
boolean record(Account account, SampleStatusEnum draft, SampleStatusEnum make, Long[] ids,String remark); boolean record(Account account, SampleStatusEnum draft, SampleStatusEnum make, Long[] ids,String remark);
boolean record(Account account, SampleStatusEnum draft, SampleStatusEnum make, Collection<Long> ids, String remark);
boolean record(Account account, SampleStatusEnum draft, SampleStatusEnum make, Long[] ids,Integer type,String remark); boolean record(Account account, SampleStatusEnum draft, SampleStatusEnum make, Long[] ids,Integer type,String remark);
} }
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.patzn.lims.core.web.Account; import com.patzn.lims.core.web.Account;
import com.patzn.lims.core.web.IBaseService; import com.patzn.lims.core.web.IBaseService;
import com.patzn.lims.drug.dto.DrugSampleDTO; import com.patzn.lims.drug.dto.DrugSampleDTO;
import com.patzn.lims.drug.dto.DrugSampleFlowDTO;
import com.patzn.lims.drug.dto.DrugSampleReportDTO; import com.patzn.lims.drug.dto.DrugSampleReportDTO;
import com.patzn.lims.drug.entity.DrugSample; import com.patzn.lims.drug.entity.DrugSample;
import com.patzn.lims.drug.vo.DrugSampleOosVO; import com.patzn.lims.drug.vo.DrugSampleOosVO;
...@@ -26,6 +27,12 @@ public interface IDrugSampleService extends IBaseService<DrugSample> { ...@@ -26,6 +27,12 @@ public interface IDrugSampleService extends IBaseService<DrugSample> {
Page<DrugSampleVO> pageVO(Page page, DrugSampleVO vo); Page<DrugSampleVO> pageVO(Page page, DrugSampleVO vo);
Page<DrugSampleVO> pageSampleFlow(Page page, DrugSampleVO vo);
Page<DrugSampleVO> pageSampleFlowHis(Page page, DrugSampleVO vo);
boolean addRegister(DrugSampleDTO dto, Account account); boolean addRegister(DrugSampleDTO dto, Account account);
boolean submitRegister(Long[] ids, Account account); boolean submitRegister(Long[] ids, Account account);
...@@ -34,6 +41,9 @@ public interface IDrugSampleService extends IBaseService<DrugSample> { ...@@ -34,6 +41,9 @@ public interface IDrugSampleService extends IBaseService<DrugSample> {
boolean submitReceive(Long[] ids, Account account); boolean submitReceive(Long[] ids, Account account);
boolean submitReceiveToFlow(Long[] ids, Account account);
Page<DrugSampleVO> pageVOByItemStatus(Page page, DrugSampleVO vo); Page<DrugSampleVO> pageVOByItemStatus(Page page, DrugSampleVO vo);
DrugSampleVO getSampleVO(Long id); DrugSampleVO getSampleVO(Long id);
...@@ -91,4 +101,7 @@ public interface IDrugSampleService extends IBaseService<DrugSample> { ...@@ -91,4 +101,7 @@ public interface IDrugSampleService extends IBaseService<DrugSample> {
int countPersonalSampleReceive(Long userId); int countPersonalSampleReceive(Long userId);
boolean submitFlow(DrugSampleFlowDTO flowDTO, Account account);
} }
...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; ...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -54,7 +55,18 @@ public class DrugSampleOperationServiceImpl extends BaseServiceImpl<DrugSampleOp ...@@ -54,7 +55,18 @@ public class DrugSampleOperationServiceImpl extends BaseServiceImpl<DrugSampleOp
.setReceiveTime(new Date()),Wrappers.<DrugSampleOperation>query().in("sample_id",ids)); .setReceiveTime(new Date()),Wrappers.<DrugSampleOperation>query().in("sample_id",ids));
} }
@Override
public boolean updateReceiveToTest(Account account, Collection<Long> ids) {
return super.update(new DrugSampleOperation().setReceiver(account.getUserName()).setReceiverId(account.getUserId())
.setReceiveTime(new Date()),Wrappers.<DrugSampleOperation>query().in("sample_id",ids));
}
@Override
public boolean updateReceiveToFlow(Account account, Long[] ids) {
return super.update(new DrugSampleOperation().setReceiver(account.getUserName()).setReceiverId(account.getUserId())
.setReceiveTime(new Date()),Wrappers.<DrugSampleOperation>query().in("sample_id",ids));
}
@Override @Override
......
package com.patzn.lims.drug.service.impl; package com.patzn.lims.drug.service.impl;
import com.baomidou.mybatisplus.core.toolkit.ArrayUtils; import com.baomidou.mybatisplus.core.toolkit.ArrayUtils;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.patzn.lims.core.web.Account; import com.patzn.lims.core.web.Account;
import com.patzn.lims.drug.entity.DrugSampleRecord; import com.patzn.lims.drug.entity.DrugSampleRecord;
import com.patzn.lims.drug.eunms.SampleStatusEnum; import com.patzn.lims.drug.eunms.SampleStatusEnum;
...@@ -13,6 +14,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -13,6 +14,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
...@@ -43,6 +45,29 @@ public class DrugSampleRecordServiceImpl extends BaseServiceImpl<DrugSampleRecor ...@@ -43,6 +45,29 @@ public class DrugSampleRecordServiceImpl extends BaseServiceImpl<DrugSampleRecor
} }
@Override
public boolean record(Account account, SampleStatusEnum from, SampleStatusEnum to, Collection<Long> ids, String remark) {
return record(account,from,to,ids,0,remark);
}
public boolean record(Account account, SampleStatusEnum from, SampleStatusEnum to, Collection<Long> ids,Integer type, String remark) {
if (CollectionUtils.isEmpty(ids)){
return false;
}
List<DrugSampleRecord> sampleRecordList = new ArrayList<>();
for (Long sampleId:ids) {
DrugSampleRecord sampleRecord = new DrugSampleRecord();
sampleRecord.setSampleId(sampleId);
sampleRecord.setOperator(account.getUserName());
sampleRecord.setOperatorId(account.getUserId());
sampleRecord.setOrigin(from.getDisplay());
sampleRecord.setTarget(to.getDisplay());
sampleRecord.setType(type);
sampleRecord.setRemark(remark);
sampleRecordList.add(sampleRecord);
}
return saveBatch(sampleRecordList);
}
@Override @Override
public boolean record(Account account, SampleStatusEnum from, SampleStatusEnum to, Long[] ids,Integer type, String remark) { public boolean record(Account account, SampleStatusEnum from, SampleStatusEnum to, Long[] ids,Integer type, String remark) {
......
...@@ -3,6 +3,7 @@ package com.patzn.lims.drug.service.impl; ...@@ -3,6 +3,7 @@ package com.patzn.lims.drug.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.google.common.collect.Lists;
import com.patzn.cloud.commons.toolkit.DateUtils; import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.FileUtils; import com.patzn.cloud.commons.toolkit.FileUtils;
import com.patzn.cloud.commons.toolkit.StringHandleUtils; import com.patzn.cloud.commons.toolkit.StringHandleUtils;
...@@ -11,6 +12,7 @@ import com.patzn.lims.core.api.PtAssert; ...@@ -11,6 +12,7 @@ import com.patzn.lims.core.api.PtAssert;
import com.patzn.lims.core.oss.OssClient; import com.patzn.lims.core.oss.OssClient;
import com.patzn.lims.core.web.Account; import com.patzn.lims.core.web.Account;
import com.patzn.lims.drug.dto.DrugSampleDTO; import com.patzn.lims.drug.dto.DrugSampleDTO;
import com.patzn.lims.drug.dto.DrugSampleFlowDTO;
import com.patzn.lims.drug.dto.DrugSampleReportDTO; import com.patzn.lims.drug.dto.DrugSampleReportDTO;
import com.patzn.lims.drug.entity.*; import com.patzn.lims.drug.entity.*;
import com.patzn.lims.drug.eunms.*; import com.patzn.lims.drug.eunms.*;
...@@ -99,7 +101,8 @@ public class DrugSampleServiceImpl extends BaseServiceImpl<DrugSampleMapper, Dru ...@@ -99,7 +101,8 @@ public class DrugSampleServiceImpl extends BaseServiceImpl<DrugSampleMapper, Dru
private IDrugSampleOosService drugSampleOosService; private IDrugSampleOosService drugSampleOosService;
// @Autowired // @Autowired
// private ISysMessageService sysMessageService; // private ISysMessageService sysMessageService;
@Autowired
private IDrugSampleFlowService drugSampleFlowService;
@Override @Override
public Page<DrugSample> page(Page<DrugSample> page, DrugSample drugSample) { public Page<DrugSample> page(Page<DrugSample> page, DrugSample drugSample) {
...@@ -112,6 +115,18 @@ public class DrugSampleServiceImpl extends BaseServiceImpl<DrugSampleMapper, Dru ...@@ -112,6 +115,18 @@ public class DrugSampleServiceImpl extends BaseServiceImpl<DrugSampleMapper, Dru
return baseMapper.selectVOList(page,vo); return baseMapper.selectVOList(page,vo);
} }
@Override
public Page<DrugSampleVO> pageSampleFlow(Page page, DrugSampleVO vo) {
return baseMapper.selectVOFlowList(page,vo);
}
@Override
public Page<DrugSampleVO> pageSampleFlowHis(Page page, DrugSampleVO vo) {
return baseMapper.selectVOFlowHisList(page,vo);
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean addEnvRegister(DrugSampleDTO dto, Account account) { public boolean addEnvRegister(DrugSampleDTO dto, Account account) {
...@@ -442,6 +457,29 @@ public class DrugSampleServiceImpl extends BaseServiceImpl<DrugSampleMapper, Dru ...@@ -442,6 +457,29 @@ public class DrugSampleServiceImpl extends BaseServiceImpl<DrugSampleMapper, Dru
return false; return false;
} }
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitReceiveToFlow(Long[] ids, Account account) {
ObjectUtils.checkNull(ids);
List<DrugItem> checkItemList = drugItemService.list(Wrappers.<DrugItem>query().select("sample_id").in("sample_id",ids).groupBy("sample_id"));
if (checkItemList.size()!= ids.length){
PtAssert.fail("接收的样品没有检测项目,请确认");
}
//如果有非样品接收状态的说明已经提交过无法再次提交
int count= count(Wrappers.<DrugSample>query().in("id",ids).ne("status", SampleStatusEnum.RECEIVE));
if (count>0){
PtAssert.fail("您选择的任务含有已经接收的,请确认");
}
if (update(new DrugSample().setStatus(SampleStatusEnum.FLOW).setProgress(SampleStatusEnum.FLOW),
Wrappers.<DrugSample>query().in("id",ids))){
drugSampleOperationService.updateReceiveToFlow(account,ids);
drugSampleRecordService.record(account,SampleStatusEnum.RECEIVE,SampleStatusEnum.FLOW,ids,"样品接收提交");
return true;
}
return false;
}
@Override @Override
public Page<DrugSampleVO> pageVOByItemStatus(Page page, DrugSampleVO vo) { public Page<DrugSampleVO> pageVOByItemStatus(Page page, DrugSampleVO vo) {
return baseMapper.selectVOByItemStatusList(page,vo); return baseMapper.selectVOByItemStatusList(page,vo);
...@@ -1197,4 +1235,74 @@ public class DrugSampleServiceImpl extends BaseServiceImpl<DrugSampleMapper, Dru ...@@ -1197,4 +1235,74 @@ public class DrugSampleServiceImpl extends BaseServiceImpl<DrugSampleMapper, Dru
return baseMapper.selectCountPersonalSampleReceive(userId); return baseMapper.selectCountPersonalSampleReceive(userId);
} }
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitFlow(DrugSampleFlowDTO flowDTO, Account account) {
if (null == flowDTO){
PtAssert.fail("数据有误");
}
List<DrugSampleFlow> flowList = flowDTO.getSampleFlows();
if (CollectionUtils.isEmpty(flowList)){
PtAssert.fail("请选择要流转的样品");
}
for (DrugSampleFlow flow:flowList) {
PtAssert.fail(null == flow.getSampleId(),"请选择要流转的样品");
PtAssert.fail(null == flow.getGroupId(),"请选择要流转到的检测科室");
PtAssert.fail(StringUtils.isBlank(flow.getGroupName()),"请选择要流转到的检测科室");
PtAssert.fail(null == flow.getFlowQuantity(),"请填写流转数量");
PtAssert.fail(StringUtils.isBlank(flow.getUnit()),"请填写流转单位");
if (flow.getFlowerId()==null){
flow.setFlower(account.getUserName());
flow.setFlowerId(account.getUserId());
}
if (flow.getFlowTime() == null){
flow.setFlowTime(new Date());
}
}
Map<Long,List<Long>> groupSampleMap= new HashMap<>();
Set<Long> sampleIdSet = new HashSet<>();
for (DrugSampleFlow flow:flowList) {
if (groupSampleMap.containsKey(flow.getGroupId())){
List<Long> list= groupSampleMap.get(flow.getGroupId());
list.add(flow.getSampleId());
groupSampleMap.put(flow.getGroupId(),list);
}else{
List<Long> list= Lists.newArrayList(flow.getSampleId());
groupSampleMap.put(flow.getGroupId(),list);
}
sampleIdSet.add(flow.getSampleId());
}
for (Map.Entry<Long,List<Long>> entry:groupSampleMap.entrySet()) {
List<DrugItem> itemList = drugItemService.list(Wrappers.<DrugItem>query().eq("status",ItemStatusEnum.DRAFT).eq("group_id",entry.getKey()).in("sample_id",entry.getValue()));
if (CollectionUtils.isNotEmpty(itemList)){
List<Long> itemIds = itemList.stream().map(i->{
return i.getId();
}).collect(Collectors.toList());
drugItemService.updateByConditionIds(itemIds,ItemStatusEnum.INPUT);
}
}
if (drugSampleFlowService.saveBatch(flowList)){
List<DrugItem> itemNoOkList = drugItemService.list(Wrappers.<DrugItem>query().select("sample_id").in("sample_id",sampleIdSet).eq("status",ItemStatusEnum.DRAFT));
List<Long> noOkSampleIds = itemNoOkList.stream().map(item->{
return item.getSampleId();
}).collect(Collectors.toList());
List<Long> changeListIds = new ArrayList<>();
for (Long sampleId:sampleIdSet) {
if(!noOkSampleIds.contains(sampleId)){
changeListIds.add(sampleId);
}
}
if (CollectionUtils.isNotEmpty(changeListIds)){
drugSampleOperationService.updateReceiveToTest(account,changeListIds);
drugSampleRecordService.record(account,SampleStatusEnum.RECEIVE,SampleStatusEnum.TEST,changeListIds,"样品流转完成");
}
}
return true;
}
} }
...@@ -11,6 +11,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -11,6 +11,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -100,4 +101,21 @@ public class DrugSampleVO extends DrugSample { ...@@ -100,4 +101,21 @@ public class DrugSampleVO extends DrugSample {
@ApiModelProperty(value = "ctimeStr") @ApiModelProperty(value = "ctimeStr")
private String ctimeStr; private String ctimeStr;
@ApiModelProperty(value = "实验室")
private String groupName;
@ApiModelProperty(value = "实验室Id")
private Long groupId;
@ApiModelProperty(value = "流转人")
private String flower;
@ApiModelProperty(value = "流转人ID")
private Long flowerId;
@ApiModelProperty(value = "流转时间")
private Date flowTime;
@ApiModelProperty(value = "流转数量")
private BigDecimal flowQuantity;
@ApiModelProperty(value = "流转单位")
private String unit;
} }
...@@ -103,7 +103,7 @@ public class LmsUserGroupController extends SuperController { ...@@ -103,7 +103,7 @@ public class LmsUserGroupController extends SuperController {
lmsUserGroup.setCompanyId(getAccount().getCompanyId()); lmsUserGroup.setCompanyId(getAccount().getCompanyId());
lmsUserGroup.setUid(getAccount().getUserId()); lmsUserGroup.setUid(getAccount().getUserId());
lmsUserGroup.setDeleted(0); lmsUserGroup.setDeleted(0);
return success(lmsUserGroupService.save(lmsUserGroup)); return success(lmsUserGroupService.saveGroup(lmsUserGroup));
} }
......
...@@ -89,4 +89,6 @@ public interface ILmsUserGroupService extends IBaseService<LmsUserGroup> { ...@@ -89,4 +89,6 @@ public interface ILmsUserGroupService extends IBaseService<LmsUserGroup> {
* @return * @return
*/ */
List<LmsUserGroup> getByLeaderUserId(Long userId); List<LmsUserGroup> getByLeaderUserId(Long userId);
boolean saveGroup(LmsUserGroup lmsUserGroup);
} }
...@@ -3,6 +3,7 @@ package com.patzn.lims.res.service.impl; ...@@ -3,6 +3,7 @@ package com.patzn.lims.res.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.lims.core.api.PtAssert; import com.patzn.lims.core.api.PtAssert;
import com.patzn.lims.core.web.BaseServiceImpl; import com.patzn.lims.core.web.BaseServiceImpl;
import com.patzn.lims.res.entity.LmsUserGroup; import com.patzn.lims.res.entity.LmsUserGroup;
...@@ -178,4 +179,16 @@ public class LmsUserGroupServiceImpl extends BaseServiceImpl<LmsUserGroupMapper, ...@@ -178,4 +179,16 @@ public class LmsUserGroupServiceImpl extends BaseServiceImpl<LmsUserGroupMapper,
return baseMapper.getByLeaderUserId(userId); return baseMapper.getByLeaderUserId(userId);
} }
@Override
public boolean saveGroup(LmsUserGroup lmsUserGroup) {
try {
save(lmsUserGroup);
}catch (Exception e){
if (e.getMessage().contains("unique_name_company_id")){
PtAssert.fail("实验室重复");
}
}
return true;
}
} }
...@@ -69,6 +69,24 @@ ...@@ -69,6 +69,24 @@
</sql> </sql>
<select id="selectVOFlowList" resultType="com.patzn.lims.drug.vo.DrugSampleVO">
WITH s AS (SELECT id FROM drug_sample WHERE deleted = 0 AND status = #{vo.status} )
SELECT * FROM (SELECT group_name,sample_id,group_id FROM drug_item WHERE sample_id IN (SELECT id FROM s) AND group_name IS NOT NULL AND status = #{vo.itemStatus} GROUP BY group_name,sample_id,group_id) g
JOIN drug_sample s ON g.sample_id = s.id
</select>
<select id="selectVOFlowHisList" resultType="com.patzn.lims.drug.vo.DrugSampleVO">
SELECT
f.id,f.flower,f.flow_time,f.flow_quantity,f.unit,f.group_name,s.sample_code,s.name,s.category,s.lot_num,s.spec,s.sample_point,s.class_ban,s.standard
FROM
drug_sample_flow f
JOIN drug_sample s ON f.sample_id = s.ID
WHERE s.deleted = 0
</select>
<select id="selectVOList" resultType="com.patzn.lims.drug.vo.DrugSampleVO"> <select id="selectVOList" resultType="com.patzn.lims.drug.vo.DrugSampleVO">
SELECT s.*,o.receiver,o.receive_time,o.sender,o.send_time,o.maker,o.make_time FROM (SELECT s.* FROM drug_sample s WHERE s.deleted = 0 SELECT s.*,o.receiver,o.receive_time,o.sender,o.send_time,o.maker,o.make_time FROM (SELECT s.* FROM drug_sample s WHERE s.deleted = 0
AND s.company_id = #{vo.companyId} AND s.company_id = #{vo.companyId}
......
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