Commit b465d62e by lijingjing

添加原始记录采集相关表;

parent 3dc34d70
......@@ -167,6 +167,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));
}
......@@ -306,6 +307,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));
}
......@@ -339,6 +341,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.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.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);
}
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);
}
......@@ -280,7 +280,12 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
for (PMakeFeStatsVO vo : list) {
PMakeFeVO val = new PMakeFeVO(), per = new PMakeFeVO(), ltNum = new PMakeFeVO(), gtNum = new PMakeFeVO(), inNum = new PMakeFeVO();
PMakeFeVO val = new PMakeFeVO();
PMakeFeVO per = new PMakeFeVO();
PMakeFeVO ltNum = new PMakeFeVO();
PMakeFeVO gtNum = new PMakeFeVO();
PMakeFeVO inNum = new PMakeFeVO();
val.setCVal(vo.getCVal() + "").setMnVal(vo.getMnVal() + "").setSiVal(vo.getSiVal() + "").setPVal(vo.getPVal() + "").setSVal(vo.getSVal() + "");
per.setCVal(vo.getCPer() + "").setMnVal(vo.getMnPer() + "").setSiVal(vo.getSiPer() + "").setPVal(vo.getPPer() + "").setSVal(vo.getSPer() + "");
ltNum.setCVal(vo.getCLtNum() + "").setMnVal(vo.getMnLtNum() + "").setSiVal(vo.getSiLtNum() + "").setPVal(vo.getPLtNum() + "");
......@@ -430,7 +435,7 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
if (null == dto){
return false;
}
EntrustSample sample = dto.convert(EntrustSample.class);
EntrustSample sample = dto.convert(EntrustSample.class);
//标样
sample.setType(1);
if (save(sample)){
......@@ -444,7 +449,7 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
entrustSampleItemService.saveBatch(itemList);
}
}
return false;
return true;
}
@Override
......
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.Condition;
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.entity.*;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
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.ILmsOriginalRecordInfoService;
import com.patzn.cloud.service.lims.hmhj.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -21,6 +22,8 @@ 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.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
......@@ -38,11 +41,20 @@ public class LmsOriginalRecordInfoServiceImpl extends BaseServiceImpl<LmsOrigina
private IEntrustService entrustService;
@Autowired
private IOriginalTemplateService originalTemplateService;
@Autowired
private IOriginalTemplateConfigService originalTemplateConfigService;
@Autowired
private IEntrustSampleService entrustSampleService;
@Autowired
private IEntrustSampleItemService entrustSampleItemService;
@Autowired
private IEntrustSampleItemIndexService entrustSampleItemIndexService;
@Override
public Page<LmsOriginalRecordInfo> page(Page<LmsOriginalRecordInfo> page, LmsOriginalRecordInfo lmsOriginalRecordInfo) {
Wrapper wrapper = new EntityWrapper<>(lmsOriginalRecordInfo);
......@@ -54,36 +66,79 @@ 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<>();
// 具体逻辑需要额外处理
// 目前不清楚字段content和abs代表的含义
// and so on ...
//
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);
}
// 曲线信息
if (CollectionUtils.isNotEmpty(data.getCurveData())) {
}
}
// 查询未生成的样品数据
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();
}
}
......@@ -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"
......
......@@ -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>
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);
}
}
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