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; ...@@ -6,6 +6,7 @@ import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult; import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController; import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.hmhj.dto.QueryDTO; 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.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.entity.ItemDeviate; import com.patzn.cloud.service.hmhj.entity.ItemDeviate;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord; import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
...@@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* ${table.comment} 前端控制器 * ${table.comment} 前端控制器
...@@ -609,4 +611,9 @@ public class EntrustSampleItemController extends ServiceController { ...@@ -609,4 +611,9 @@ public class EntrustSampleItemController extends ServiceController {
return success(entrustSampleItemService.notWriteToReport(ids)); 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; ...@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.annotations.SqlParser;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.mapper.BatchMapper; import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.dto.QueryDTO; 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.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleCalcResultVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleCalcResultVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO; 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.hmhj.vo.TesterWorkloadStatsVO;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup; import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO; import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
...@@ -60,4 +62,6 @@ public interface EntrustSampleItemMapper extends BatchMapper<EntrustSampleItem> ...@@ -60,4 +62,6 @@ public interface EntrustSampleItemMapper extends BatchMapper<EntrustSampleItem>
List<EntrustSampleCalcResultVO> selectSampleCalcResult(@Param("vo") QueryDTO queryDTO); List<EntrustSampleCalcResultVO> selectSampleCalcResult(@Param("vo") QueryDTO queryDTO);
boolean updateItemJudgeByEntrustId(@Param("entrustId") Long entrustId); 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; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService; import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.dto.QueryDTO; 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.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.entity.ItemDeviate; import com.patzn.cloud.service.hmhj.entity.ItemDeviate;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord; import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
...@@ -89,4 +90,6 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte ...@@ -89,4 +90,6 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
Boolean notWriteToReport(List<Long> ids); Boolean notWriteToReport(List<Long> ids);
boolean updateItemComposeJudgeByEntrustId(Long entrustId); 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; package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.Condition; import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils; import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
...@@ -10,7 +11,9 @@ import com.patzn.cloud.commons.toolkit.*; ...@@ -10,7 +11,9 @@ import com.patzn.cloud.commons.toolkit.*;
import com.patzn.cloud.feign.lims.base.client.LmsUserRelGroupClient; import com.patzn.cloud.feign.lims.base.client.LmsUserRelGroupClient;
import com.patzn.cloud.oss.starter.OssClient; import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult; 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.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.entity.*; import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum; import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum; import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
...@@ -779,6 +782,17 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -779,6 +782,17 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return baseMapper.selectByEntrustSampleId(sampleId); 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 @Override
public boolean updateQualityJudge(Long[] ids, Account account) { public boolean updateQualityJudge(Long[] ids, Account account) {
RestAssert.fail(null == ids || ids.length == 0, "样品编号不能为空"); RestAssert.fail(null == ids || ids.length == 0, "样品编号不能为空");
...@@ -788,7 +802,10 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -788,7 +802,10 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
//其他稀有元素 //其他稀有元素
List<String> otherYsList = Arrays.asList("Mn", "V", "Ni"); List<String> otherYsList = Arrays.asList("Mn", "V", "Ni");
List<EntrustSample> updateSampleList = new ArrayList<>();
for (EntrustSampleVO sampleVO : sampleList) { for (EntrustSampleVO sampleVO : sampleList) {
EntrustSample sample = sampleVO.convert(EntrustSample.class);
// 若为此标准,需要判断是否需要过滤掉稀有元素的判断 // 若为此标准,需要判断是否需要过滤掉稀有元素的判断
boolean isSpecStandard = "GB/T 1196 2017".equalsIgnoreCase(sampleVO.getProductCode()); boolean isSpecStandard = "GB/T 1196 2017".equalsIgnoreCase(sampleVO.getProductCode());
...@@ -796,12 +813,14 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -796,12 +813,14 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
List<EntrustSampleItemIndexVO> sampleItemIndexList = entrustSampleItemIndexService.listVOBySampleIds(Arrays.asList(sampleVO.getId())); List<EntrustSampleItemIndexVO> sampleItemIndexList = entrustSampleItemIndexService.listVOBySampleIds(Arrays.asList(sampleVO.getId()));
RestAssert.fail(CollectionUtils.isEmpty(sampleItemIndexList), "样品检测项目及内容不能为空"); 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 // 符合此条件,需要判断是否此标准且为稀有元素且值小于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 BigDecimal.ZERO;
} }
return new BigDecimal(t.getTestValue()); return new BigDecimal(testValue);
}).reduce(BigDecimal.ZERO, BigDecimal::add); }).reduce(BigDecimal.ZERO, BigDecimal::add);
double total = totalValue.doubleValue(); double total = totalValue.doubleValue();
...@@ -832,18 +851,18 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -832,18 +851,18 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
if (i < gradingProductList.size() - 1) { if (i < gradingProductList.size() - 1) {
continue; continue;
} }
return updateJudgeNoPass(sampleVO, account); updateJudgeNoPass(sample, account, updateSampleList);
continue;
} }
// 符合合计,若不为组合判定,则直接判定合格 // 符合合计,若不为组合判定,则直接判定合格
if (!isComposeJudgment) { if (!isComposeJudgment) {
// continue; // 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) .setJudgeCheckTime(new Date()).setJudgeStatus(0).setJudgeProgress(0)
.setSampleGrading(product.getProductGrade()); .setSampleGrading(product.getProductGrade()));
return entrustSampleService.updateById(sampleVO.convert(EntrustSample.class)); continue;
} }
// 若为组合判定,比较单个大小是否都符合 // 若为组合判定,比较单个大小是否都符合
List<GradingItem> gradingItemList = gradingItemService.list(Condition.create() List<GradingItem> gradingItemList = gradingItemService.list(Condition.create()
...@@ -875,21 +894,21 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -875,21 +894,21 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
// 若存在不符合判定要求,则进入下一标准判定 // 若存在不符合判定要求,则进入下一标准判定
if (failCount > 0) { if (failCount > 0) {
// 存在下一个标准等级判定,继续判定 // 存在下一个标准等级判定,继续判定
if (i < gradingProductList.size() - 1) { if (i >= gradingProductList.size() - 1) {
continue; updateJudgeNoPass(sample, account, updateSampleList);
}
// 不存在下一个判定标准,直接不合格
else {
return updateJudgeNoPass(sampleVO.convert(EntrustSample.class), account);
} }
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) .setJudgeCheckTime(new Date()).setJudgeStatus(0).setJudgeProgress(0)
.setSampleGrading(product.getProductGrade()); .setSampleGrading(product.getProductGrade()));
return entrustSampleService.updateById(sampleVO.convert(EntrustSample.class));
}
} }
if (updateSampleList.size() > 0) {
return entrustSampleService.updateBatchById(updateSampleList);
} }
return true; return true;
} }
...@@ -905,11 +924,10 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -905,11 +924,10 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
* @param sample * @param sample
* @return * @return
*/ */
private boolean updateJudgeNoPass(EntrustSample sample, Account account) { private void updateJudgeNoPass(EntrustSample sample, Account account, List<EntrustSample> sampleList) {
sample.setOkJudge("不合格").setJudger(account.getUserName()).setJudgerId(account.getUserId()) sampleList.add(sample.setOkJudge("不合格").setJudger(account.getUserName()).setJudgerId(account.getUserId())
.setJudgeCheckTime(new Date()).setJudgeStatus(0).setJudgeProgress(0) .setJudgeCheckTime(new Date()).setJudgeStatus(0).setJudgeProgress(0)
.setSampleGrading("-"); .setSampleGrading("-"));
return entrustSampleService.updateById(sample);
} }
...@@ -979,6 +997,33 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -979,6 +997,33 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return baseMapper.updateItemJudgeByEntrustId(entrustId); 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: ...@@ -65,7 +65,7 @@ oss:
#libreOffice 安装信息 #libreOffice 安装信息
libreOffice: libreOffice:
url: C:/Program Files/LibreOffice url: D:/Program Files/LibreOffice
### jobs ### jobs
jobs: jobs:
admin-address: http://api.hmlims.com:9000/print admin-address: http://api.hmlims.com:9000/print
\ No newline at end of file
...@@ -59,7 +59,7 @@ oss: ...@@ -59,7 +59,7 @@ oss:
#libreOffice 安装信息 #libreOffice 安装信息
libreOffice: libreOffice:
url: C:/Program Files/LibreOffice url: D:/Program Files/LibreOffice
### jobs ### jobs
jobs: jobs:
admin-address: http://api.dev.patzn.com:7000/print 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 @@ ...@@ -52,13 +52,11 @@
t.id AS "entrustSampleId", t.id AS "entrustSampleId",
e.code AS "entrustCode" e.code AS "entrustCode"
FROM contract_sample s FROM contract_sample s
JOIN entrust_sample t ON s.id = t.contract_sample_id LEFT JOIN entrust_sample t ON s.id = t.contract_sample_id
JOIN entrust e ON t.entrust_id = e.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"/> <include refid="sqlWhere"/>
order by s.ctime desc order by s.ctime desc
</select> </select>
......
...@@ -520,4 +520,39 @@ ...@@ -520,4 +520,39 @@
and spi.sample_id = i.entrust_sample_id and spi.sample_id = i.entrust_sample_id
and spi.entrust_id = #{entrustId} and spi.entrust_id = #{entrustId}
</update> </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> </mapper>
ALTER TABLE "public"."contract_sample"
ALTER TABLE "public"."contract_sample"
ADD COLUMN "acceptance_time" timestamp(6);
COMMENT ON COLUMN "public"."contract_sample"."acceptance_time" IS '验收时间';
----------------------------新增台账表---------------------------------
-- ----------------------------
-- Table structure for anode_spot_check_ledger
-- ----------------------------
DROP TABLE IF EXISTS "public"."anode_spot_check_ledger";
CREATE TABLE "public"."anode_spot_check_ledger" (
"id" int8 NOT NULL,
"spot_check_time" timestamp(6),
"quality_inspector" varchar(64) COLLATE "pg_catalog"."default",
"production_team" varchar(120) COLLATE "pg_catalog"."default",
"yield" varchar(120) COLLATE "pg_catalog"."default",
"spot_check_num" int4,
"yz1_num" int4,
"yz2_gzczcc" varchar(120) COLLATE "pg_catalog"."default",
"yz2_dgczdcc" varchar(120) COLLATE "pg_catalog"."default",
"casting_quality" int4,
"guide_rod_bend" int4,
"guide_rod_pit" int4,
"steel_weld" int4,
"aluminum_weld" int4,
"explosive_weld" int4,
"steel_claw_defect" int4,
"reinforce_weld" int4,
"remark" varchar(255) COLLATE "pg_catalog"."default",
"company_id" int8,
"ctime" timestamp(6),
"uid" int8,
"lid" int8,
"ltime" timestamp(6),
"deleted" int2 DEFAULT 0
)
;
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."spot_check_time" IS '抽检日期';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."quality_inspector" IS '质检员';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."production_team" IS '生产班组';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."yield" IS '产量';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."spot_check_num" IS '抽检总数';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."yz1_num" IS 'YZ-1数量';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."yz2_gzczcc" IS '钢爪垂直度超差';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."yz2_dgczdcc" IS '导杆垂直度超差';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."casting_quality" IS '浇铸质量';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."guide_rod_bend" IS '导杆弯曲';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."guide_rod_pit" IS '导杆凹坑';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."steel_weld" IS '钢钢开焊';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."aluminum_weld" IS '铝铝开焊';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."explosive_weld" IS '爆炸开焊';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."steel_claw_defect" IS '钢爪缺损';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."reinforce_weld" IS '加固开焊';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."remark" IS '备注';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."uid" IS '创建人ID';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."lid" IS '最后修改人ID';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."ltime" IS '最后修改时间';
COMMENT ON COLUMN "public"."anode_spot_check_ledger"."deleted" IS '是否删除0否1是';
COMMENT ON TABLE "public"."anode_spot_check_ledger" IS '阳极组抽检台账';
-- ----------------------------
-- Table structure for carbon_appearance_check_ledger
-- ----------------------------
DROP TABLE IF EXISTS "public"."carbon_appearance_check_ledger";
CREATE TABLE "public"."carbon_appearance_check_ledger" (
"id" int8 NOT NULL,
"raw_block_furnace_no" varchar(120) COLLATE "pg_catalog"."default",
"roast_check_total" int4,
"cooked_block_out_furnace_no" varchar(120) COLLATE "pg_catalog"."default",
"failure_blocks_num" int4,
"rt_cut_corners" int4,
"rt_damaged_carbon_bowl" int4,
"rt_cracks_inner_bowls" int4,
"rt_surface_crack" int4,
"rt_uneven_bottom" int4,
"rt_bulge_pit" int4,
"rt_bottom_crack" int4,
"rt_pitted_surface_oxidation" int4,
"rt_dirty" int4,
"failure_cooked_block_no" varchar(120) COLLATE "pg_catalog"."default",
"quality_check_total" int4,
"missed_blocks_num" int4,
"qi_cut_corners" int4,
"qi_damaged_carbon_bowl" int4,
"qi_cracks_inner_bowls" int4,
"qi_surface_crack" int4,
"qi_uneven_bottom" int4,
"qi_bulge_pit" int4,
"qi_bottom_crack" int4,
"qi_pitted_surface_oxidation" int4,
"qi_dirty" int4,
"random_check_failure_rate" varchar(32) COLLATE "pg_catalog"."default",
"remark" varchar(255) COLLATE "pg_catalog"."default",
"company_id" int8,
"uid" int8,
"ctime" timestamp(0),
"ltime" timestamp(0),
"lid" int8,
"deleted" int2 DEFAULT 0
)
;
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."id" IS 'ID';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."raw_block_furnace_no" IS '生块装炉炉室号';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."roast_check_total" IS '焙烧检查总数';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."cooked_block_out_furnace_no" IS '熟块出炉炉室号';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."failure_blocks_num" IS '不合格块数 ';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."rt_cut_corners" IS '焙烧分厂-掉棱掉角';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."rt_damaged_carbon_bowl" IS '焙烧分厂-碳碗破损';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."rt_cracks_inner_bowls" IS '焙烧分厂-碗间裂纹';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."rt_surface_crack" IS '焙烧分厂-表面裂纹';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."rt_uneven_bottom" IS '焙烧分厂-底部不平';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."rt_bulge_pit" IS '焙烧分厂-鼓包凹坑';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."rt_bottom_crack" IS '焙烧分厂-底部裂纹';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."rt_pitted_surface_oxidation" IS '焙烧分厂-麻面氧化';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."rt_dirty" IS '焙烧分厂-清理不净';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."failure_cooked_block_no" IS '不合格熟块炉室号';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."quality_check_total" IS '质检抽检总数 ';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."missed_blocks_num" IS '漏检错检块数';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."qi_cut_corners" IS '质检当班-掉棱掉角';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."qi_damaged_carbon_bowl" IS '质检当班-碳碗破损';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."qi_cracks_inner_bowls" IS '质检当班-碗间裂纹';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."qi_surface_crack" IS '质检当班-表面裂纹';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."qi_uneven_bottom" IS '质检当班-底部不平';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."qi_bulge_pit" IS '质检当班-鼓包凹坑';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."qi_bottom_crack" IS '质检当班-底部裂纹';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."qi_pitted_surface_oxidation" IS '质检当班-麻面氧化';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."qi_dirty" IS '质检当班-清理不净';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."random_check_failure_rate" IS '抽检不合格率';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."remark" IS '备注';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."uid" IS '创建人ID';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."ctime" IS '创建人';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."ltime" IS '最后修改时间';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."lid" IS '修改人ID';
COMMENT ON COLUMN "public"."carbon_appearance_check_ledger"."deleted" IS '是否删除0否1是';
COMMENT ON TABLE "public"."carbon_appearance_check_ledger" IS '炭块外观检测台账';
-- ----------------------------
-- Primary Key structure for table anode_spot_check_ledger
-- ----------------------------
ALTER TABLE "public"."anode_spot_check_ledger" ADD CONSTRAINT "anode_spot_check_ledger_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table carbon_appearance_check_ledger
-- ----------------------------
ALTER TABLE "public"."carbon_appearance_check_ledger" ADD CONSTRAINT "carbon_appearance_check_Ledger_pkey" PRIMARY KEY ("id");
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