Commit 06ecc877 by lijingjing

添加检测项目对比查询,添加;

parent 6274c6e7
...@@ -11,6 +11,7 @@ import com.patzn.cloud.commons.controller.ServiceController; ...@@ -11,6 +11,7 @@ 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.RangeStatsQueryDTO; import com.patzn.cloud.service.hmhj.dto.RangeStatsQueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO; import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO;
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;
...@@ -60,19 +61,6 @@ public class EntrustSampleItemController extends ServiceController { ...@@ -60,19 +61,6 @@ public class EntrustSampleItemController extends ServiceController {
return success(entrustSampleItemService.page(getPage(), entrustSampleItem)); return success(entrustSampleItemService.page(getPage(), entrustSampleItem));
} }
@ApiOperation(value = "检测项目对比数据", notes = "检测项目对比数据")
@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),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/compare_items")
public RestResult<Page<ItemCompareVO>> compareItems(RangeStatsQueryDTO queryDTO) {
return success(entrustSampleItemService.pageCompareItems(getPage(), queryDTO));
}
@ApiOperation("查询 id 信息") @ApiOperation("查询 id 信息")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class), @ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
......
package com.patzn.cloud.service.lims.hmhj.controller;
import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO;
import com.patzn.cloud.service.hmhj.entity.ItemComparison;
import com.patzn.cloud.service.lims.hmhj.service.IItemComparisonService;
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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import java.util.List;
/**
* 检测项目比对表 前端控制器
*
* @author meazty
* @since 2022-08-17
*/
@Api(tags = "检测项目比对表")
@RestController
@RequestMapping("/v1/comparison")
public class ItemComparisonController extends ServiceController {
@Resource
private IItemComparisonService itemComparisonService;
@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<ItemComparison>> getPage(SlotQueryDTO queryDTO) {
return success(itemComparisonService.page(getPage(), queryDTO));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<ItemComparison> get(@PathVariable("id") Long id) {
return success(itemComparisonService.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, ItemComparison itemComparison) {
itemComparison.setId(id);
return success(itemComparisonService.updateById(itemComparison));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(ItemComparison itemComparison) {
return success(itemComparisonService.save(itemComparison));
}
@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(itemComparisonService.removeByIds(ids));
}
}
...@@ -6,6 +6,7 @@ import com.patzn.cloud.commons.mapper.BatchMapper; ...@@ -6,6 +6,7 @@ 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.RangeStatsQueryDTO; import com.patzn.cloud.service.hmhj.dto.RangeStatsQueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO; import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem; import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.vo.*; import com.patzn.cloud.service.hmhj.vo.*;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup; import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
...@@ -90,5 +91,5 @@ public interface EntrustSampleItemMapper extends BatchMapper<EntrustSampleItem> ...@@ -90,5 +91,5 @@ public interface EntrustSampleItemMapper extends BatchMapper<EntrustSampleItem>
Integer deletePhysicalByEntrustIds(@Param("entrustIds") List<Long> entrustIds); Integer deletePhysicalByEntrustIds(@Param("entrustIds") List<Long> entrustIds);
List<ItemCompareVO> selectCompareItems(RowBounds rowBounds, @Param("vo") RangeStatsQueryDTO queryDTO);
} }
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO;
import com.patzn.cloud.service.hmhj.entity.ItemComparison;
import com.patzn.cloud.commons.mapper.BatchMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import java.util.List;
/**
* <p>
* 检测项目比对表 Mapper 接口
* </p>
*
* @author meazty
* @since 2022 -08-17
*/
public interface ItemComparisonMapper extends BatchMapper<ItemComparison> {
/**
* Select compare items list.
*
* @param queryDTO the query dto
* @return the list
*/
List<ItemComparison> selectCompareItems(@Param("vo") SlotQueryDTO queryDTO);
/**
* Select data page list.
*
* @param rowBounds the row bounds
* @param slotQueryDTO the slot query dto
* @return the list
*/
List<ItemComparison> selectDataPage(RowBounds rowBounds, SlotQueryDTO slotQueryDTO);
}
...@@ -6,6 +6,7 @@ import com.patzn.cloud.commons.service.IBaseService; ...@@ -6,6 +6,7 @@ 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.RangeStatsQueryDTO; import com.patzn.cloud.service.hmhj.dto.RangeStatsQueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO; import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO;
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;
...@@ -27,21 +28,16 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte ...@@ -27,21 +28,16 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
Page<EntrustSampleItem> page(Page<EntrustSampleItem> page, EntrustSampleItem entrustSampleItem); Page<EntrustSampleItem> page(Page<EntrustSampleItem> page, EntrustSampleItem entrustSampleItem);
Page<ItemCompareVO> pageCompareItems(Page<ItemCompareVO> page, RangeStatsQueryDTO queryDTO);
boolean removeByIds(List<Long> ids); boolean removeByIds(List<Long> ids);
boolean updateItemBatch(String itemJson); boolean updateItemBatch(String itemJson);
Page<EntrustSampleItemVO> pageAllotBySampleRight(Page<EntrustSampleItemVO> page, EntrustSampleItemVO entrustSampleItem); Page<EntrustSampleItemVO> pageAllotBySampleRight(Page<EntrustSampleItemVO> page, EntrustSampleItemVO entrustSampleItem);
boolean allotItem(Long[] ids, String tester, Long testerId,Integer type, Account account); boolean allotItem(Long[] ids, String tester, Long testerId, Integer type, Account account);
Page<EntrustSampleItemVO> pageByItemLeft(Page<EntrustSampleItemVO> page, EntrustSampleItemVO entrustSampleItem); Page<EntrustSampleItemVO> pageByItemLeft(Page<EntrustSampleItemVO> page, EntrustSampleItemVO entrustSampleItem);
Page<EntrustSampleItemVO> pageByItemRight(Page<EntrustSampleItemVO> page, EntrustSampleItemVO entrustSampleItem); Page<EntrustSampleItemVO> pageByItemRight(Page<EntrustSampleItemVO> page, EntrustSampleItemVO entrustSampleItem);
boolean submitTest(Long[] ids, Account account); boolean submitTest(Long[] ids, Account account);
...@@ -58,7 +54,6 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte ...@@ -58,7 +54,6 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
List<EntrustSampleItemVO> listBySampleIdsAndIds(Long[] ids, Long[] itemIds); List<EntrustSampleItemVO> listBySampleIdsAndIds(Long[] ids, Long[] itemIds);
OriginalRecord saveExcelOriginalRecord(Long[] ids, Long templateId, Account account, String entrustCode); OriginalRecord saveExcelOriginalRecord(Long[] ids, Long templateId, Account account, String entrustCode);
OriginalRecord saveExcelOriginalRecords(Long[] ids, Long templateId, Account account); OriginalRecord saveExcelOriginalRecords(Long[] ids, Long templateId, Account account);
......
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.dto.SlotQueryDTO;
import com.patzn.cloud.service.hmhj.entity.ItemComparison;
import java.util.List;
/**
* 检测项目比对表 服务类
*
* @author meazty
* @since 2022 -08-17
*/
public interface IItemComparisonService extends IBaseService<ItemComparison> {
/**
* Page page.
*
* @param page the page
* @param slotQueryDTO the slot query dto
* @return the page
*/
Page<ItemComparison> page(Page<ItemComparison> page, SlotQueryDTO slotQueryDTO);
/**
* Remove by ids boolean.
*
* @param ids the ids
* @return the boolean
*/
boolean removeByIds(List<Long> ids);
List<ItemComparison> listCompareItems(SlotQueryDTO queryDTO);
/**
* Save data batch boolean.
*
* @param queryDTO the comparison queryDTO
* @return the boolean
*/
boolean saveCompareDataBatch(SlotQueryDTO queryDTO);
}
...@@ -20,11 +20,13 @@ import com.patzn.cloud.oss.starter.OssFileResult; ...@@ -20,11 +20,13 @@ import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.base.entity.SysUser; import com.patzn.cloud.service.base.entity.SysUser;
import com.patzn.cloud.service.base.vo.SysUserOrgVO; import com.patzn.cloud.service.base.vo.SysUserOrgVO;
import com.patzn.cloud.service.hmhj.dto.ReportWithdrawDTO; import com.patzn.cloud.service.hmhj.dto.ReportWithdrawDTO;
import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO;
import com.patzn.cloud.service.hmhj.entity.*; import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.*; import com.patzn.cloud.service.hmhj.enums.*;
import com.patzn.cloud.service.hmhj.vo.EntrustReportVO; import com.patzn.cloud.service.hmhj.vo.EntrustReportVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.hmhj.vo.ItemCompareVO;
import com.patzn.cloud.service.lims.common.StringHandleUtils; import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.common.service.impl.LmsMsgService; import com.patzn.cloud.service.lims.common.service.impl.LmsMsgService;
import com.patzn.cloud.service.lims.hmhj.common.EntrustFlowUtils; import com.patzn.cloud.service.lims.hmhj.common.EntrustFlowUtils;
...@@ -38,11 +40,11 @@ import org.apache.commons.lang3.StringUtils; ...@@ -38,11 +40,11 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*; import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
...@@ -61,36 +63,34 @@ import java.util.stream.Collectors; ...@@ -61,36 +63,34 @@ import java.util.stream.Collectors;
@Service @Service
public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMapper, EntrustReport> implements IEntrustReportService { public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMapper, EntrustReport> implements IEntrustReportService {
@Autowired @Resource
private OssClient ossClient; private OssClient ossClient;
@Autowired @Resource
private IEntrustReportRelSampleService entrustReportRelSampleService; private IEntrustReportRelSampleService entrustReportRelSampleService;
@Autowired @Resource
private IEntrustSampleService entrustSampleService; private IEntrustSampleService entrustSampleService;
@Autowired @Resource
private IEntrustSampleItemService entrustSampleItemService; private IEntrustSampleItemService entrustSampleItemService;
@Autowired @Resource
private IEntrustSampleItemIndexService entrustSampleItemIndexService; private IEntrustSampleItemIndexService entrustSampleItemIndexService;
@Autowired @Resource
private IEntrustService entrustService; private IEntrustService entrustService;
@Autowired @Resource
private IEntrustRecordService entrustRecordService; private IEntrustRecordService entrustRecordService;
@Autowired @Resource
private IEntrustReportTemplateService entrustReportTemplateService;
@Autowired
private IEntrustReportTemplateConfigService entrustReportTemplateConfigService; private IEntrustReportTemplateConfigService entrustReportTemplateConfigService;
@Autowired @Resource
private Executor executor1; private Executor executor1;
@Autowired @Resource
private SysUserClient sysUserClient; private SysUserClient sysUserClient;
@Autowired @Resource
private LmsMsgService lmsMsgService; private LmsMsgService lmsMsgService;
@Autowired @Resource
private IOriginalRecordService originalRecordService;
@Autowired
private UserInfoServiceImpl userInfoService; private UserInfoServiceImpl userInfoService;
@Autowired @Resource
private IReportWithdrawApplicationService reportWithdrawApplicationService; private IReportWithdrawApplicationService reportWithdrawApplicationService;
@Resource
private IItemComparisonService itemComparisonService;
@Value("${libreOffice.url}") @Value("${libreOffice.url}")
private String libreOfficeUrl; private String libreOfficeUrl;
...@@ -339,9 +339,27 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe ...@@ -339,9 +339,27 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean submitReportMake(Long[] ids, Account account) { public boolean submitReportMake(Long[] ids, Account account) {
executor1.execute(() -> generateCompareItems(ids, account));
return doExecuteSubmit(ids, EntrustFlowEnum.REPORT_MAKE, EntrustFlowEnum.REPORT_CHECK, account); return doExecuteSubmit(ids, EntrustFlowEnum.REPORT_MAKE, EntrustFlowEnum.REPORT_CHECK, account);
} }
@Transactional(rollbackFor = Exception.class)
protected void generateCompareItems(Long[] ids, Account account) {
if (ArrayUtils.isEmpty(ids)) {
return;
}
EntrustSample sample = entrustSampleService.getById(ids[0]);
logger.error("输出样品:{} ", sample.getName());
if (!(Objects.equals(sample.getName(), "原铝") || Objects.equals(sample.getName(), "铝成品"))) {
return;
}
logger.error("开始处理项目比较...");
SlotQueryDTO slotQuery = new SlotQueryDTO();
slotQuery.setIds(ids);
// 每次提交编制报告时,添加对比记录
itemComparisonService.saveCompareDataBatch(slotQuery);
}
@Override @Override
public void changeExcelReportToPdf(Long[] ids) { public void changeExcelReportToPdf(Long[] ids) {
List<EntrustReport> reportList = list(Condition.create().in("id", ids).isNotNull("object_key")); List<EntrustReport> reportList = list(Condition.create().in("id", ids).isNotNull("object_key"));
......
...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.plugins.Page; ...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils; import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.IOUtils; import com.baomidou.mybatisplus.toolkit.IOUtils;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.MapMaker;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.patzn.cloud.commons.api.RestAssert; import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
...@@ -24,6 +25,7 @@ import com.patzn.cloud.service.hmhj.bean.KV; ...@@ -24,6 +25,7 @@ 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.RangeStatsQueryDTO; import com.patzn.cloud.service.hmhj.dto.RangeStatsQueryDTO;
import com.patzn.cloud.service.hmhj.dto.SampleItemDTO; import com.patzn.cloud.service.hmhj.dto.SampleItemDTO;
import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO;
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;
...@@ -144,9 +146,6 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -144,9 +146,6 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
@Autowired @Autowired
private UserInfoServiceImpl userInfoService; private UserInfoServiceImpl userInfoService;
@Autowired
private IMaterialItemService materialItemService;
@Value("${libreOffice.url}") @Value("${libreOffice.url}")
private String libreOfficeUrl; private String libreOfficeUrl;
...@@ -177,39 +176,6 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -177,39 +176,6 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} }
@Override @Override
public Page<ItemCompareVO> pageCompareItems(Page<ItemCompareVO> page, RangeStatsQueryDTO queryDTO) {
if (null == queryDTO.getQueryDate()) {
queryDTO.setQueryDate(new Date());
}
List<ItemCompareVO> itemCompareVOList = baseMapper.selectCompareItems(page, queryDTO);
// 查询样本库下检测项目限定值
Map<String, String> limitValueMap = materialItemService.listAlLimitItemMap();
itemCompareVOList.forEach(item -> {
item.setLimitValue(limitValueMap.get(item.getSampleName() + item.getName()));
item.setReclaim(false);
try {
BigDecimal newVal = new BigDecimal(item.getTestValue());
BigDecimal oldVal = new BigDecimal(item.getOldTestValue());
BigDecimal difVal = newVal.subtract(oldVal);
item.setDiffValue(difVal.doubleValue());
if (StringUtils.isNotBlank(item.getLimitValue())) {
BigDecimal limitValue = new BigDecimal(item.getLimitValue());
// 差值与限定值相比,大于0需要重取
if (difVal.abs().compareTo(limitValue) > 0) {
item.setReclaim(true);
}
}
} catch (Exception e) {
logger.error("数据转换错误!");
logger.error("data conversion exception---->: {}", e.getMessage());
}
});
return page.setRecords(itemCompareVOList);
}
@Override
public boolean removeByIds(List<Long> ids) { public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
......
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.JacksonUtils;
import com.patzn.cloud.commons.toolkit.MapMergeUtils;
import com.patzn.cloud.service.hmhj.dto.SlotQueryDTO;
import com.patzn.cloud.service.hmhj.entity.ItemComparison;
import com.patzn.cloud.service.lims.hmhj.mapper.ItemComparisonMapper;
import com.patzn.cloud.service.lims.hmhj.service.IItemComparisonService;
import com.patzn.cloud.service.lims.hmhj.service.IMaterialItemService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 检测项目比对表 服务实现类
*
* @author meazty
* @since 2022-08-17
*/
@Service
public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMapper, ItemComparison> implements IItemComparisonService {
@Resource
private IMaterialItemService materialItemService;
@Override
public Page<ItemComparison> page(Page<ItemComparison> page, SlotQueryDTO slotQueryDTO) {
return page.setRecords(baseMapper.selectDataPage(page, slotQueryDTO));
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public List<ItemComparison> listCompareItems(SlotQueryDTO queryDTO) {
if (null == queryDTO.getQueryDate()) {
queryDTO.setQueryDate(new Date());
}
List<ItemComparison> itemCompareVOList = baseMapper.selectCompareItems(queryDTO);
List<ItemComparison> itemList = new ArrayList<>();
// 查询样本库下检测项目限定值
Map<String, String> limitValueMap = materialItemService.listAlLimitItemMap();
Map<String, List<ItemComparison>> slotItemMap = new HashMap<>(16);
itemCompareVOList.forEach(item -> {
item.setLimitValue(limitValueMap.get(item.getSampleName() + item.getName()));
item.setReclaim(false);
try {
BigDecimal newVal = new BigDecimal(item.getTestValue());
BigDecimal oldVal = new BigDecimal(item.getPrevTestValue());
BigDecimal difVal = newVal.subtract(oldVal);
item.setDiffValue(difVal.doubleValue());
if (StringUtils.isNotBlank(item.getLimitValue())) {
BigDecimal limitValue = new BigDecimal(item.getLimitValue());
// 差值与限定值相比,大于0需要重取
if (difVal.abs().compareTo(limitValue) > 0) {
item.setReclaim(true);
}
}
} catch (Exception e) {
logger.error("数据转换错误!");
logger.error("data conversion exception---->: {}", e.getMessage());
}
MapMergeUtils.getorCreateMapArrayList(item.getSlotNo(), slotItemMap, item);
});
// 倘若循环的同槽号的检测项目中,存在大于限定值的项目,都将保存在此列表中
slotItemMap.forEach((slotNo, list) -> {
if (list.stream().anyMatch(ItemComparison::getReclaim)) {
itemList.addAll(list);
}
});
return itemList;
}
@Override
public boolean saveCompareDataBatch(SlotQueryDTO queryDTO) {
List<ItemComparison> comparisonList = listCompareItems(queryDTO);
logger.error("search data : {}", JacksonUtils.toJSONString(comparisonList));
if (CollectionUtils.isEmpty(comparisonList)) {
return false;
}
ItemComparison comparison = comparisonList.get(0);
queryDTO.setQueryDate(DateUtils.str2Date(comparison.getCompareDate()));
queryDTO.setSampleName(comparison.getSampleName());
queryDTO.setIds(null);
// 根据时间查询是否有存在的数据
List<ItemComparison> itemComparisonList = baseMapper.selectDataPage(null, queryDTO);
// 数据组Map,过滤重复数据
if (CollectionUtils.isNotEmpty(itemComparisonList)) {
Map<String, ItemComparison> itemComparisonMap = itemComparisonList.stream().collect(Collectors.toMap(it -> it.getSampleCode(), Function.identity()));
comparisonList.removeIf(item -> itemComparisonMap.containsKey(item.getSampleCode()));
}
if (CollectionUtils.isEmpty(comparisonList)) {
return true;
}
return super.saveBatch(comparisonList);
}
}
...@@ -787,60 +787,6 @@ ...@@ -787,60 +787,6 @@
order by e.code, i.name, s.code order by e.code, i.name, s.code
</select> </select>
<!--查询某个日期的比对检测项目数据-->
<select id="selectCompareItems" resultType="com.patzn.cloud.service.hmhj.vo.ItemCompareVO">
SELECT
n.*,
o.test_value "old_test_value"
FROM
(
SELECT DISTINCT ON
( s.slot_no, ii.NAME ) s.NAME "sample_name",
s.code "sample_code",
s.slot_no,
ii.NAME,
ii.test_value
FROM
entrust_sample_item_index ii
JOIN entrust_sample_item i ON i.ID = ii.entrust_sample_item_id
AND i.deleted = 0
JOIN entrust_sample s ON s.ID = i.entrust_sample_id
AND s.deleted = 0
WHERE
ii.deleted = 0
AND ii.NAME IN ( '原铝Fe', '原铝Ga' )
AND s.NAME IN ( '原铝', '原铝重取' )
AND to_char( ii.ctime, 'yyyy-MM-dd' ) = to_char(#{vo.queryDate}::timestamp,'yyyy-MM-dd')
ORDER BY
s.slot_no,
ii.NAME,
i.ctime DESC
) n
JOIN (
SELECT DISTINCT ON
( s.slot_no, ii.NAME ) s.NAME "sample_name",
s.code "sample_code",
s.slot_no,
ii.NAME,
ii.test_value
FROM
entrust_sample_item_index ii
JOIN entrust_sample_item i ON i.ID = ii.entrust_sample_item_id
AND i.deleted = 0
JOIN entrust_sample s ON s.ID = i.entrust_sample_id
AND s.deleted = 0
WHERE
ii.deleted = 0
AND ii.NAME IN ( '原铝Fe', '原铝Ga' )
AND s.NAME IN ( '原铝', '原铝重取' )
AND to_char( ii.ctime, 'yyyy-MM-dd' ) = to_char(#{vo.queryDate}::timestamp + '-2 day','yyyy-MM-dd')
ORDER BY
s.slot_no,
ii.NAME,
i.ctime DESC
) o ON n.slot_no = o.slot_no AND n.NAME = o.NAME
</select>
<update id="updateBatchByData" parameterType="java.util.List"> <update id="updateBatchByData" parameterType="java.util.List">
<foreach collection="itemList" item="item" index="index" open="" close="" separator=";"> <foreach collection="itemList" item="item" index="index" open="" close="" separator=";">
update entrust_sample_item update entrust_sample_item
......
<?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.ItemComparisonMapper">
<select id="selectDataPage" resultType="com.patzn.cloud.service.hmhj.entity.ItemComparison">
select
ic.*
from item_comparison ic
left join electrolyzer e on e.slot_no = ic.slot_no and e.name = ic.sample_name and e.status = 0
<where>
<if test="null != vo.sampleName">
and ic.sample_name = #{vo.sampleName}
</if>
<if test="null != vo.slotNo">
and ic.slot_no = #{vo.slotNo}
</if>
<if test="null != vo.plant">
and e.plant = #{vo.plant}
</if>
<if test="null != vo.branch">
and e.branch = #{vo.branch}
</if>
<if test="null != vo.partition">
and e.partition = #{vo.partition}
</if>
<if test="null != vo.queryDate">
and ic.compare_date = to_char(#{vo.queryDate}::timestamp,'yyyy-MM-dd')
</if>
</where>
order by ic.compare_date desc, ic.name
</select>
<!--查询某个日期的比对检测项目数据-->
<select id="selectCompareItems" resultType="com.patzn.cloud.service.hmhj.entity.ItemComparison">
SELECT
n.*,
o.sample_name "prev_sample_name",
o.test_value "prev_test_value"
FROM
( SELECT
s.NAME "sample_name",
s.code "sample_code",
s.slot_no,
ii.NAME,
ii.test_value,
ii.ctime,
to_char(ii.ctime,'yyyy-MM-dd') "compare_date"
FROM
entrust_sample_item_index ii
JOIN entrust_sample_item i ON i.ID = ii.entrust_sample_item_id
AND i.deleted = 0
JOIN entrust_sample s ON s.ID = i.entrust_sample_id
AND s.deleted = 0
WHERE
ii.deleted = 0
AND ii.NAME IN ( '原铝Fe', '原铝Si' )
AND s.NAME = '原铝'
<if test="null == vo.ids">
AND to_char( ii.ctime, 'yyyy-MM-dd' ) = to_char(#{vo.queryDate}::timestamp,'yyyy-MM-dd')
</if>
<if test="null != vo.ids">
and s.id in
<foreach collection="vo.ids" item="sampleId" open="(" separator="," close=")">
#{sampleId}
</foreach>
</if>
ORDER BY
s.slot_no,
ii.NAME,
i.ctime DESC
) n
JOIN (
SELECT DISTINCT ON ( s.slot_no, ii.NAME )
replace(s.NAME,'重取','') "sample_name",
(case when strpos(s.code,'-') > 0 then s.code else substr(s.code,0,8) || '-' || substr(s.code,8,4) end) "sample_code",
s.slot_no,
ii.NAME,
ii.test_value,
ii.ctime
FROM
entrust_sample_item_index ii
JOIN entrust_sample_item i ON i.ID = ii.entrust_sample_item_id
AND i.deleted = 0
JOIN entrust_sample s ON s.ID = i.entrust_sample_id
AND s.deleted = 0
WHERE ii.deleted = 0
AND ii.NAME IN ('原铝Fe', '原铝Si')
AND s.NAME IN ('原铝', '原铝重取')
ORDER BY
s.slot_no,
ii.NAME,
i.ctime DESC
) o ON n.slot_no = o.slot_no AND n.NAME = o.NAME AND TO_CHAR(n.ctime, 'yyyy-MM-dd' ) = to_char(o.ctime + '2 day','yyyy-MM-dd')
WHERE 1=1
</select>
</mapper>
...@@ -18,7 +18,7 @@ public class LimsCodeGenerator { ...@@ -18,7 +18,7 @@ public class LimsCodeGenerator {
new PostgresqlGenerator().setDataSourceConfig(new DataSourceConfig() new PostgresqlGenerator().setDataSourceConfig(new DataSourceConfig()
.setDbType(DbType.POSTGRE_SQL) .setDbType(DbType.POSTGRE_SQL)
.setDriverName("org.postgresql.Driver") .setDriverName("org.postgresql.Driver")
.setUrl("jdbc:postgresql://192.168.1.140:5432/dev_lims_hmhj") .setUrl("jdbc:postgresql://192.168.1.140:5432/dev_hmhj")
.setUsername("postgres") .setUsername("postgres")
.setPassword("www.163.com") .setPassword("www.163.com")
).execute("lims"); ).execute("lims");
......
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