Commit 2a0e5d1d by lijingjing

新增台账后端;

相关功能优化;
parent 949f9e77
package com.patzn.cloud.service.lims.hmhj.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
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.AnodeSpotCheckLedger;
import com.patzn.cloud.service.lims.hmhj.service.IAnodeSpotCheckLedgerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* 阳极组抽检台账 前端控制器
*
* @author meazty
* @since 2021-07-16
*/
@Api(tags = "阳极组抽检台账")
@RestController
@RequestMapping("/v1/spot_check_ledger")
public class AnodeSpotCheckLedgerController extends ServiceController {
@Autowired
private IAnodeSpotCheckLedgerService anodeSpotCheckLedgerService;
@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<AnodeSpotCheckLedger>> getPage(AnodeSpotCheckLedger anodeSpotCheckLedger) {
return success(anodeSpotCheckLedgerService.page(getPage(), anodeSpotCheckLedger));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<AnodeSpotCheckLedger> get(@PathVariable("id") Long id) {
return success(anodeSpotCheckLedgerService.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, AnodeSpotCheckLedger anodeSpotCheckLedger) {
anodeSpotCheckLedger.setId(id);
return success(anodeSpotCheckLedgerService.updateById(anodeSpotCheckLedger));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(AnodeSpotCheckLedger anodeSpotCheckLedger) {
return success(anodeSpotCheckLedgerService.save(anodeSpotCheckLedger));
}
@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(anodeSpotCheckLedgerService.removeByIds(ids));
}
}
package com.patzn.cloud.service.lims.hmhj.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
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.CarbonAppearanceCheckLedger;
import com.patzn.cloud.service.lims.hmhj.service.ICarbonAppearanceCheckLedgerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* ${table.comment} 前端控制器
*
* @author meazty
* @since 2021-07-16
*/
@Api(tags = "炭块外观检测台账")
@RestController
@RequestMapping("/v1/appearance_check_ledger")
public class CarbonAppearanceCheckLedgerController extends ServiceController {
@Autowired
private ICarbonAppearanceCheckLedgerService carbonAppearanceCheckLedgerService;
@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<CarbonAppearanceCheckLedger>> getPage(CarbonAppearanceCheckLedger carbonAppearanceCheckLedger) {
return success(carbonAppearanceCheckLedgerService.page(getPage(), carbonAppearanceCheckLedger));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<CarbonAppearanceCheckLedger> get(@PathVariable("id") Long id) {
return success(carbonAppearanceCheckLedgerService.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, CarbonAppearanceCheckLedger carbonAppearanceCheckLedger) {
carbonAppearanceCheckLedger.setId(id);
setFailureRate(carbonAppearanceCheckLedger);
return success(carbonAppearanceCheckLedgerService.updateById(carbonAppearanceCheckLedger));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(CarbonAppearanceCheckLedger carbonAppearanceCheckLedger) {
setFailureRate(carbonAppearanceCheckLedger);
return success(carbonAppearanceCheckLedgerService.save(carbonAppearanceCheckLedger));
}
@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(carbonAppearanceCheckLedgerService.removeByIds(ids));
}
private void setFailureRate(CarbonAppearanceCheckLedger ledger) {
Integer total = ledger.getQualityCheckTotal();
Integer missedNum = ledger.getMissedBlocksNum();
if (null == total || missedNum == null || 0 == total.intValue()) {
return;
}
ledger.setRandomCheckFailureRate(((float) missedNum / total * 100) + "%");
}
}
......@@ -6,6 +6,7 @@ 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.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.entity.ItemDeviate;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
......@@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* ${table.comment} 前端控制器
......@@ -609,4 +611,9 @@ public class EntrustSampleItemController extends ServiceController {
return success(entrustSampleItemService.notWriteToReport(ids));
}
@ApiOperation("样品检测项目统计查询")
@PostMapping("/sample_item_stats_query")
public RestResult<Map> getSampleItemStatsQuery(SampleItemDTO sampleItemDTO) {
return success(entrustSampleItemService.getSampleItemStatsQuery(sampleItemDTO));
}
}
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.service.hmhj.entity.AnodeSpotCheckLedger;
import com.patzn.cloud.commons.mapper.BatchMapper;
/**
* <p>
* 阳极组抽检台账 Mapper 接口
* </p>
*
* @author meazty
* @since 2021-07-16
*/
public interface AnodeSpotCheckLedgerMapper extends BatchMapper<AnodeSpotCheckLedger> {
}
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.service.hmhj.entity.CarbonAppearanceCheckLedger;
import com.patzn.cloud.commons.mapper.BatchMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author meazty
* @since 2021-07-16
*/
public interface CarbonAppearanceCheckLedgerMapper extends BatchMapper<CarbonAppearanceCheckLedger> {
}
......@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.annotations.SqlParser;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleCalcResultVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.SampleItemStatsVO;
import com.patzn.cloud.service.hmhj.vo.TesterWorkloadStatsVO;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
......@@ -60,4 +62,6 @@ public interface EntrustSampleItemMapper extends BatchMapper<EntrustSampleItem>
List<EntrustSampleCalcResultVO> selectSampleCalcResult(@Param("vo") QueryDTO queryDTO);
boolean updateItemJudgeByEntrustId(@Param("entrustId") Long entrustId);
List<SampleItemStatsVO> selectSampleItemStats(@Param("vo") SampleItemDTO sampleItemDTO);
}
package com.patzn.cloud.service.lims.hmhj.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.entity.AnodeSpotCheckLedger;
import java.util.List;
/**
* 阳极组抽检台账 服务类
*
* @author meazty
* @since 2021-07-16
*/
public interface IAnodeSpotCheckLedgerService extends IBaseService<AnodeSpotCheckLedger> {
Page<AnodeSpotCheckLedger> page(Page<AnodeSpotCheckLedger> page, AnodeSpotCheckLedger anodeSpotCheckLedger);
boolean removeByIds(List<Long> ids);
}
package com.patzn.cloud.service.lims.hmhj.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.entity.CarbonAppearanceCheckLedger;
import java.util.List;
/**
* 服务类
*
* @author meazty
* @since 2021-07-16
*/
public interface ICarbonAppearanceCheckLedgerService extends IBaseService<CarbonAppearanceCheckLedger> {
Page<CarbonAppearanceCheckLedger> page(Page<CarbonAppearanceCheckLedger> page, CarbonAppearanceCheckLedger carbonAppearanceCheckLedger);
boolean removeByIds(List<Long> ids);
}
......@@ -4,6 +4,7 @@ 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.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.entity.ItemDeviate;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
......@@ -89,4 +90,6 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
Boolean notWriteToReport(List<Long> ids);
boolean updateItemComposeJudgeByEntrustId(Long entrustId);
Map<String,Object> getSampleItemStatsQuery(SampleItemDTO sampleItemDTO);
}
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.patzn.cloud.service.hmhj.entity.AnodeSpotCheckLedger;
import com.patzn.cloud.service.lims.hmhj.mapper.AnodeSpotCheckLedgerMapper;
import com.patzn.cloud.service.lims.hmhj.service.IAnodeSpotCheckLedgerService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
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.List;
/**
* 阳极组抽检台账 服务实现类
*
* @author meazty
* @since 2021-07-16
*/
@Service
public class AnodeSpotCheckLedgerServiceImpl extends BaseServiceImpl<AnodeSpotCheckLedgerMapper, AnodeSpotCheckLedger> implements IAnodeSpotCheckLedgerService {
@Override
public Page<AnodeSpotCheckLedger> page(Page<AnodeSpotCheckLedger> page, AnodeSpotCheckLedger anodeSpotCheckLedger) {
Wrapper wrapper = new EntityWrapper<>(anodeSpotCheckLedger);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
}
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.patzn.cloud.service.hmhj.entity.CarbonAppearanceCheckLedger;
import com.patzn.cloud.service.lims.hmhj.mapper.CarbonAppearanceCheckLedgerMapper;
import com.patzn.cloud.service.lims.hmhj.service.ICarbonAppearanceCheckLedgerService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
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.List;
/**
* 服务实现类
*
* @author meazty
* @since 2021-07-16
*/
@Service
public class CarbonAppearanceCheckLedgerServiceImpl extends BaseServiceImpl<CarbonAppearanceCheckLedgerMapper, CarbonAppearanceCheckLedger> implements ICarbonAppearanceCheckLedgerService {
@Override
public Page<CarbonAppearanceCheckLedger> page(Page<CarbonAppearanceCheckLedger> page, CarbonAppearanceCheckLedger carbonAppearanceCheckLedger) {
Wrapper wrapper = new EntityWrapper<>(carbonAppearanceCheckLedger);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
}
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists;
......@@ -10,7 +11,9 @@ import com.patzn.cloud.commons.toolkit.*;
import com.patzn.cloud.feign.lims.base.client.LmsUserRelGroupClient;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.hmhj.bean.KV;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
......@@ -779,6 +782,17 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return baseMapper.selectByEntrustSampleId(sampleId);
}
private boolean isNumber(String testValueStr) {
try {
Double.parseDouble(testValueStr);
return true;
} catch (NumberFormatException e) {
logger.error(e.getMessage(), e.getCause());
return false;
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateQualityJudge(Long[] ids, Account account) {
RestAssert.fail(null == ids || ids.length == 0, "样品编号不能为空");
......@@ -788,7 +802,10 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
//其他稀有元素
List<String> otherYsList = Arrays.asList("Mn", "V", "Ni");
List<EntrustSample> updateSampleList = new ArrayList<>();
for (EntrustSampleVO sampleVO : sampleList) {
EntrustSample sample = sampleVO.convert(EntrustSample.class);
// 若为此标准,需要判断是否需要过滤掉稀有元素的判断
boolean isSpecStandard = "GB/T 1196 2017".equalsIgnoreCase(sampleVO.getProductCode());
......@@ -796,12 +813,14 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
List<EntrustSampleItemIndexVO> sampleItemIndexList = entrustSampleItemIndexService.listVOBySampleIds(Arrays.asList(sampleVO.getId()));
RestAssert.fail(CollectionUtils.isEmpty(sampleItemIndexList), "样品检测项目及内容不能为空");
// 计算合计值
BigDecimal totalValue = sampleItemIndexList.stream().filter(t -> StringUtils.isBlank(t.getTestValue())).map(t -> {
BigDecimal totalValue = sampleItemIndexList.stream().filter(t -> StringUtils.isNotBlank(t.getTestValue())).map(t -> {
// 符合此条件,需要判断是否此标准且为稀有元素且值小于0.01即可忽略为0
if (isSpecStandard && otherYsList.contains(t.getName()) && Double.parseDouble(t.getTestValue()) < 0.01) {
String testValue = t.getTestValue().trim();
RestAssert.fail(!isNumber(testValue), String.format("样品编号【%s】存在错误检测值【%s】", sample.getCode(), testValue));
if (isSpecStandard && otherYsList.contains(t.getName()) && Double.parseDouble(testValue) < 0.01) {
return BigDecimal.ZERO;
}
return new BigDecimal(t.getTestValue());
return new BigDecimal(testValue);
}).reduce(BigDecimal.ZERO, BigDecimal::add);
double total = totalValue.doubleValue();
......@@ -832,18 +851,18 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
if (i < gradingProductList.size() - 1) {
continue;
}
return updateJudgeNoPass(sampleVO, account);
updateJudgeNoPass(sample, account, updateSampleList);
continue;
}
// 符合合计,若不为组合判定,则直接判定合格
if (!isComposeJudgment) {
// continue;
// 样品判定合格
sampleVO.setOkJudge("合格").setJudger(account.getUserName()).setJudgerId(account.getUserId())
updateSampleList.add(sample.setOkJudge("合格").setJudger(account.getUserName()).setJudgerId(account.getUserId())
.setJudgeCheckTime(new Date()).setJudgeStatus(0).setJudgeProgress(0)
.setSampleGrading(product.getProductGrade());
return entrustSampleService.updateById(sampleVO.convert(EntrustSample.class));
.setSampleGrading(product.getProductGrade()));
continue;
}
// 若为组合判定,比较单个大小是否都符合
List<GradingItem> gradingItemList = gradingItemService.list(Condition.create()
......@@ -875,22 +894,22 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
// 若存在不符合判定要求,则进入下一标准判定
if (failCount > 0) {
// 存在下一个标准等级判定,继续判定
if (i < gradingProductList.size() - 1) {
continue;
}
// 不存在下一个判定标准,直接不合格
else {
return updateJudgeNoPass(sampleVO.convert(EntrustSample.class), account);
if (i >= gradingProductList.size() - 1) {
updateJudgeNoPass(sample, account, updateSampleList);
}
continue;
}
// 样品判定合格
sampleVO.setOkJudge("合格").setJudger(account.getUserName()).setJudgerId(account.getUserId())
updateSampleList.add(sample.setOkJudge("合格").setJudger(account.getUserName()).setJudgerId(account.getUserId())
.setJudgeCheckTime(new Date()).setJudgeStatus(0).setJudgeProgress(0)
.setSampleGrading(product.getProductGrade());
return entrustSampleService.updateById(sampleVO.convert(EntrustSample.class));
.setSampleGrading(product.getProductGrade()));
}
}
if (updateSampleList.size() > 0) {
return entrustSampleService.updateBatchById(updateSampleList);
}
return true;
}
......@@ -905,11 +924,10 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
* @param sample
* @return
*/
private boolean updateJudgeNoPass(EntrustSample sample, Account account) {
sample.setOkJudge("不合格").setJudger(account.getUserName()).setJudgerId(account.getUserId())
private void updateJudgeNoPass(EntrustSample sample, Account account, List<EntrustSample> sampleList) {
sampleList.add(sample.setOkJudge("不合格").setJudger(account.getUserName()).setJudgerId(account.getUserId())
.setJudgeCheckTime(new Date()).setJudgeStatus(0).setJudgeProgress(0)
.setSampleGrading("-");
return entrustSampleService.updateById(sample);
.setSampleGrading("-"));
}
......@@ -979,6 +997,33 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return baseMapper.updateItemJudgeByEntrustId(entrustId);
}
@Override
public Map<String, Object> getSampleItemStatsQuery(SampleItemDTO sampleItemDTO) {
Map<String, Object> result = new HashMap<>();
List<String> itemNameList = sampleItemDTO.getItemList();
List<SampleItemStatsVO> sampleItemStatsVOList = baseMapper.selectSampleItemStats(sampleItemDTO);
// 检测项目为空,不返回结果
if (CollectionUtils.isEmpty(itemNameList) || CollectionUtils.isEmpty(sampleItemStatsVOList)) {
return result;
}
List<String> sampleCodeList = sampleItemStatsVOList.stream().map(SampleItemStatsVO::getSampleCode).collect(Collectors.toList());
List<Map<String, List<String>>> itemInfoList = new ArrayList<>();
for (String itemName : itemNameList) {
Map<String, List<String>> mapData = new HashMap<>();
List<String> itemValueList = new ArrayList<>();
for (SampleItemStatsVO vo : sampleItemStatsVOList) {
List<KV> kvList = JSONArray.parseArray(vo.getItemJson(), KV.class);
List<String> valueList = kvList.stream().filter(t -> t.getKey().equals(itemName)).map(t -> t.getValue().toString()).collect(Collectors.toList());
itemValueList.add(CollectionUtils.isEmpty(valueList) ? "0" : valueList.get(0));
}
mapData.put(itemName, itemValueList);
itemInfoList.add(mapData);
}
result.put("sampleCodeList", sampleCodeList);
result.put("sampleItemList", itemInfoList);
return result;
}
/**
* 处理 原铝等标准为
*
......
......@@ -65,7 +65,7 @@ oss:
#libreOffice 安装信息
libreOffice:
url: C:/Program Files/LibreOffice
url: D:/Program Files/LibreOffice
### jobs
jobs:
admin-address: http://api.hmlims.com:9000/print
\ No newline at end of file
......@@ -59,7 +59,7 @@ oss:
#libreOffice 安装信息
libreOffice:
url: C:/Program Files/LibreOffice
url: D:/Program Files/LibreOffice
### jobs
jobs:
admin-address: http://api.dev.patzn.com:7000/print
\ No newline at end of file
<?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.AnodeSpotCheckLedgerMapper">
</mapper>
<?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.CarbonAppearanceCheckLedgerMapper">
</mapper>
......@@ -52,13 +52,11 @@
t.id AS "entrustSampleId",
e.code AS "entrustCode"
FROM contract_sample s
JOIN entrust_sample t ON s.id = t.contract_sample_id
JOIN entrust e ON t.entrust_id = e.id
LEFT JOIN entrust_sample t ON s.id = t.contract_sample_id
LEFT JOIN entrust e ON t.entrust_id = e.id
WHERE s.deleted = 0 AND t.judge_status NOT IN (0,1)
WHERE s.deleted = 0 AND (t.id is null or t.judge_status NOT IN (0,1))
<include refid="sqlWhere"/>
order by s.ctime desc
</select>
......
......@@ -520,4 +520,39 @@
and spi.sample_id = i.entrust_sample_id
and spi.entrust_id = #{entrustId}
</update>
<select id="selectSampleItemStats" resultType="com.patzn.cloud.service.hmhj.vo.SampleItemStatsVO">
SELECT
s.code "sample_code",
'[' || string_agg('{"key":"'||ii.name||'","value":'||COALESCE(ii.test_value,'0')||'}',',') || ']' "itemJson"
FROM
entrust_sample_item_index ii
JOIN entrust_sample_item i ON i.ID = ii.entrust_sample_item_id
JOIN entrust_sample s ON s.ID = i.entrust_sample_id
JOIN entrust e on e.id = s.entrust_id
where ii.deleted = 0 and i.deleted = 0 and s.deleted = 0 and e.deleted = 0
<if test="null != vo.client">
and e.client LIKE CONCAT('%',#{vo.client},'%')
</if>
<if test="null != vo.timeS">
and e.entrust_time &gt;= #{vo.timeS}
</if>
<if test="null != vo.timeE">
and e.entrust_time &lt;= #{vo.timeE}
</if>
<if test="null != vo.slotNo">
and s.slot_no = #{vo.slotNo}
</if>
<if test="null != vo.name">
and s.name LIKE CONCAT('%',#{vo.name},'%')
</if>
<if test="null != vo.itemList">
and ii.name IN
<foreach collection="vo.itemList" index="index" item="itemName" open="(" separator="," close=")">
#{itemName}
</foreach>
</if>
GROUP BY S.CODE
order by S.CODE asc
</select>
</mapper>
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