Commit 59719297 by lijingjing

异常项目对比,清除重新填写原始记录消除异常的对比项;

parent 1ed9f46a
...@@ -40,7 +40,7 @@ public interface IItemComparisonService extends IBaseService<ItemComparison> { ...@@ -40,7 +40,7 @@ public interface IItemComparisonService extends IBaseService<ItemComparison> {
* @param queryDTO the query dto * @param queryDTO the query dto
* @return the list * @return the list
*/ */
List<ItemComparison> listCompareItems(SlotQueryDTO queryDTO); List<List<ItemComparison>> listCompareItems(SlotQueryDTO queryDTO);
/** /**
* Save data batch boolean. * Save data batch boolean.
...@@ -63,8 +63,8 @@ public interface IItemComparisonService extends IBaseService<ItemComparison> { ...@@ -63,8 +63,8 @@ public interface IItemComparisonService extends IBaseService<ItemComparison> {
/** /**
* 是否存在对比数据 * 是否存在对比数据
* *
* @param sampleCodeList * @param sampleCodeList the sample code list
* @return * @return boolean boolean
*/ */
boolean isExistCompareData(List<String> sampleCodeList); boolean isExistCompareData(List<String> sampleCodeList);
} }
...@@ -344,7 +344,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe ...@@ -344,7 +344,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
protected void generateCompareItems(Long[] ids, Account account) { public void generateCompareItems(Long[] ids, Account account) {
if (ArrayUtils.isEmpty(ids)) { if (ArrayUtils.isEmpty(ids)) {
logger.error("==== EntrustReportServiceImpl ==== generateCompareItems ====> 报告IDS数据为空!"); logger.error("==== EntrustReportServiceImpl ==== generateCompareItems ====> 报告IDS数据为空!");
return; return;
...@@ -631,7 +631,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe ...@@ -631,7 +631,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
protected boolean doExecuteSubmit(Long[] ids, EntrustFlowEnum fromFlowStatus, EntrustFlowEnum toFlowStatus, Account account) { public boolean doExecuteSubmit(Long[] ids, EntrustFlowEnum fromFlowStatus, EntrustFlowEnum toFlowStatus, Account account) {
Entrust entrust = handleConditionGetEntrust(ids); Entrust entrust = handleConditionGetEntrust(ids);
String statusPath = entrust.getStatusPath(), flowStatus = entrust.getFlowStatus(); String statusPath = entrust.getStatusPath(), flowStatus = entrust.getFlowStatus();
......
...@@ -21,6 +21,7 @@ import org.springframework.stereotype.Service; ...@@ -21,6 +21,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 检测项目比对表 服务实现类 * 检测项目比对表 服务实现类
...@@ -96,7 +97,8 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap ...@@ -96,7 +97,8 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap
@Override @Override
public List<ItemComparison> listCompareItems(SlotQueryDTO queryDTO) { public List<List<ItemComparison>> listCompareItems(SlotQueryDTO queryDTO) {
List<List<ItemComparison>> result = new ArrayList<>();
if (null == queryDTO.getQueryDate()) { if (null == queryDTO.getQueryDate()) {
queryDTO.setQueryDate(new Date()); queryDTO.setQueryDate(new Date());
} }
...@@ -104,7 +106,8 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap ...@@ -104,7 +106,8 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap
List<ItemComparison> itemCompareVOList = baseMapper.selectCompareItems(queryDTO); List<ItemComparison> itemCompareVOList = baseMapper.selectCompareItems(queryDTO);
logger.error("listCompare items data: " + JacksonUtils.toJSONString(itemCompareVOList)); logger.error("listCompare items data: " + JacksonUtils.toJSONString(itemCompareVOList));
List<ItemComparison> itemList = new ArrayList<>(); List<ItemComparison> updateItemList = new ArrayList<>();
List<ItemComparison> removeItemList = new ArrayList<>();
// 查询样本库下检测项目限定值 // 查询样本库下检测项目限定值
Map<String, String> limitValueMap = materialItemService.listAlLimitItemMap(); Map<String, String> limitValueMap = materialItemService.listAlLimitItemMap();
...@@ -120,17 +123,18 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap ...@@ -120,17 +123,18 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap
logger.error("compare item data: {}", JacksonUtils.toJSONString(item)); logger.error("compare item data: {}", JacksonUtils.toJSONString(item));
try { try {
BigDecimal newVal = new BigDecimal(item.getTestValue()); BigDecimal newVal = new BigDecimal(item.getTestValue());
logger.error("newValue is :" + newVal.doubleValue()); logger.error("==== compareTestValue ====> newValue :{}", newVal);
BigDecimal oldVal = new BigDecimal(item.getPrevTestValue()); BigDecimal oldVal = new BigDecimal(item.getPrevTestValue());
logger.error("oldVal is :" + oldVal.doubleValue()); logger.error("==== compareTestValue ====> oldValue :{}", oldVal);
BigDecimal difVal = newVal.subtract(oldVal).abs(); BigDecimal difVal = newVal.subtract(oldVal).abs();
logger.error("difVal is :" + difVal.doubleValue()); logger.error("==== compareTestValue ====> difValue :{}", difVal);
item.setDiffValue(difVal.toPlainString()); item.setDiffValue(difVal.toPlainString());
BigDecimal limitValue = new BigDecimal(item.getLimitValue()); BigDecimal limitValue = new BigDecimal(item.getLimitValue());
logger.error("limitValue is :" + difVal.doubleValue()); logger.error("==== compareTestValue ====> limitValue :{}", limitValue);
// 差值与限定值相比,大于0需要重取 // 差值与限定值相比,大于0需要重取
double compareValue = difVal.subtract(limitValue).doubleValue(); double compareValue = difVal.subtract(limitValue).doubleValue();
logger.error("compare diff value and limit value subtract is: " + compareValue); logger.error("==== compareTestValue ====> 差值与限定值相比,大于0需要重取。");
logger.error("==== compareTestValue ====> compareValue :{}", compareValue);
if (compareValue >= 0) { if (compareValue >= 0) {
item.setReclaim(true); item.setReclaim(true);
} }
...@@ -143,55 +147,106 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap ...@@ -143,55 +147,106 @@ public class ItemComparisonServiceImpl extends BaseServiceImpl<ItemComparisonMap
// 倘若循环的同槽号的检测项目中,存在大于限定值的项目,都将保存在此列表中 // 倘若循环的同槽号的检测项目中,存在大于限定值的项目,都将保存在此列表中
slotItemMap.forEach((slotNo, list) -> { slotItemMap.forEach((slotNo, list) -> {
if (list.stream().anyMatch(ItemComparison::getReclaim)) { if (list.stream().anyMatch(ItemComparison::getReclaim)) {
itemList.addAll(list); updateItemList.addAll(list);
} else {
removeItemList.addAll(list);
} }
}); });
logger.error("handler data for list is: {}", JacksonUtils.toJSONString(itemList)); logger.error("handler data for list is: {}", JacksonUtils.toJSONString(updateItemList));
return itemList; result.add(updateItemList);
result.add(removeItemList);
return result;
} }
@Override @Override
public boolean saveCompareDataBatch(SlotQueryDTO queryDTO, Account account) { public boolean saveCompareDataBatch(SlotQueryDTO queryDTO, Account account) {
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> [queryDTO]: {}", JacksonUtils.toJSONString(queryDTO)); logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> [queryDTO]: {}", JacksonUtils.toJSONString(queryDTO));
List<ItemComparison> comparisonList = listCompareItems(queryDTO); List<List<ItemComparison>> resultList = listCompareItems(queryDTO);
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> [comparisonList]: {}", JacksonUtils.toJSONString(comparisonList)); List<ItemComparison> comparisonUpdateList = resultList.get(0);
if (CollectionUtils.isEmpty(comparisonList)) { List<ItemComparison> comparisonRemoveList = resultList.get(1);
logger.error("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> 比对的检测项目数据为空!"); logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> [comparisonUpdateList]: {}", JacksonUtils.toJSONString(comparisonUpdateList));
return false; logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> [comparisonRemoveList]: {}", JacksonUtils.toJSONString(comparisonRemoveList));
}
// ==
comparisonList.forEach(item -> item.setUid(account.getUserId()).setCompanyId(account.getCompanyId()));
ItemComparison comparison = comparisonList.get(0); ItemComparison comparison;
List<ItemComparison> comparisonOldList;
// == 要更新或新增的数据为空,需要删除老数据
if (CollectionUtils.isEmpty(comparisonUpdateList)) {
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> 比对的检测项目数据为空!");
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> 清除之前的对比异常数据!");
comparison = comparisonRemoveList.get(0);
List<String> sampleCodes = new ArrayList<>(), itemNames = new ArrayList<>();
for (ItemComparison item : comparisonRemoveList) {
String delSampleCode = item.getSampleCode(), delItemName = item.getName();
if (!sampleCodes.contains(delSampleCode)) {
sampleCodes.add(delSampleCode);
}
if (!itemNames.contains(delItemName)) {
itemNames.add(delItemName);
}
}
queryDTO.setPeriod(comparison.getPeriod());
queryDTO.setQueryDate(DateUtils.str2Date(comparison.getCompareDate())); queryDTO.setQueryDate(DateUtils.str2Date(comparison.getCompareDate()));
queryDTO.setSampleName(comparison.getSampleName()); queryDTO.setSampleName(comparison.getSampleName());
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> [ItemComparison.queryDTO]: {}", JacksonUtils.toJSONString(queryDTO)); queryDTO.setItemNames(itemNames);
queryDTO.setSampleCodes(sampleCodes);
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> remove[comparisonOldList.queryDTO]: {}", JacksonUtils.toJSONString(queryDTO));
// 根据名称和日期查询要清除的对比数据
comparisonOldList = baseMapper.selectDataPage(new Page(1, Integer.MAX_VALUE), queryDTO);
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> remove[comparisonOldList]: {}", JacksonUtils.toJSONString(comparisonOldList));
if (CollectionUtils.isNotEmpty(comparisonOldList)) {
List<Long> removeIds = comparisonOldList.stream().map(ItemComparison::getId).collect(Collectors.toList());
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> removeIds: {}", JacksonUtils.toJSONString(removeIds));
super.removeBatchIds(removeIds);
}
return true;
}
// 取其一作查询条件
comparison = comparisonUpdateList.get(0);
queryDTO.setQueryDate(DateUtils.str2Date(comparison.getCompareDate()));
queryDTO.setSampleName(comparison.getSampleName());
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> [comparisonOldList.queryDTO]: {}", JacksonUtils.toJSONString(queryDTO));
// 根据时间查询是否有存在的数据 // 根据时间查询是否有存在的数据
List<ItemComparison> itemComparisonList = baseMapper.selectDataPage(new Page(1, Integer.MAX_VALUE), queryDTO); comparisonOldList = baseMapper.selectDataPage(new Page(1, Integer.MAX_VALUE), queryDTO);
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> [itemComparisonList]: {}", JacksonUtils.toJSONString(itemComparisonList)); logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> [comparisonOldList]: {}", JacksonUtils.toJSONString(comparisonOldList));
// ==
comparisonUpdateList.forEach(item -> item.setUid(account.getUserId()).setCompanyId(account.getCompanyId()));
// 老数据Map组信息,用来取Id // 老数据Map组信息,用来取Id
Map<String, ItemComparison> comparisonMap = new HashMap<>(4); Map<String, ItemComparison> comparisonMap = new HashMap<>(4);
// 组list,过滤重复数据 // 组list,过滤重复数据
if (CollectionUtils.isNotEmpty(itemComparisonList)) { if (CollectionUtils.isNotEmpty(comparisonOldList)) {
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> itemComparisonList: 更新老数据检测对比值");
// 处理老数据,组key用来获取ID // 处理老数据,组key用来获取ID
itemComparisonList.forEach(ic -> { comparisonOldList.forEach(ic -> {
String key = ic.getSampleCode() + ic.getName(); String key = ic.getSampleCode() + ic.getName();
logger.info("==== saveCompareDataBatch ====> key: {}", key);
logger.info("==== saveCompareDataBatch ====> value: {}", JacksonUtils.toJSONString(ic));
comparisonMap.put(key, ic); comparisonMap.put(key, ic);
}); });
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> comparisonMap: {}", JacksonUtils.toJSONString(comparisonMap));
// 新数据,存在对应的改ID // 新数据,存在对应的改ID
comparisonList.forEach(d -> { comparisonUpdateList.forEach(d -> {
String key = d.getSampleCode() + d.getName(); String key = d.getSampleCode() + d.getName();
ItemComparison source = comparisonMap.get(key); ItemComparison source = comparisonMap.get(key);
logger.info("==== ItemComparisonServiceImpl ==== comparisonList.source ====> key: {}", key);
logger.info("==== ItemComparisonServiceImpl ==== comparisonList.source ====> sampleCode: {}", d.getSampleCode());
logger.info("==== ItemComparisonServiceImpl ==== comparisonList.source ====> prevSampleCode: {}", d.getPrevSampleCode());
logger.info("==== ItemComparisonServiceImpl ==== comparisonList.source ====> testValue: {}", d.getTestValue());
logger.info("==== ItemComparisonServiceImpl ==== comparisonList.source ====> prevTestValue: {}", d.getPrevTestValue());
if (Objects.nonNull(source)) { if (Objects.nonNull(source)) {
d.setId(source.getId()); d.setId(source.getId());
d.setCtime(new Date()); d.setCtime(new Date());
d.setUid(account.getUserId()); d.setUid(account.getUserId());
logger.info("==== ItemComparisonServiceImpl ==== comparisonList.target ====> {}", JacksonUtils.toJSONString(d));
logger.info("==== ItemComparisonServiceImpl ==== comparisonList.target ====> sampleCode: {}", d.getSampleCode());
logger.info("==== ItemComparisonServiceImpl ==== comparisonList.target ====> prevSampleCode: {}", d.getPrevSampleCode());
logger.info("==== ItemComparisonServiceImpl ==== comparisonList.target ====> testValue: {}", d.getTestValue());
logger.info("==== ItemComparisonServiceImpl ==== comparisonList.target ====> prevTestValue: {}", d.getPrevTestValue());
} }
}); });
logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> data handler: {}", JacksonUtils.toJSONString(comparisonList)); logger.info("==== ItemComparisonServiceImpl ==== saveCompareDataBatch ====> data handler: {}", JacksonUtils.toJSONString(comparisonUpdateList));
} }
return super.saveOrUpdateBatch(comparisonList); return super.saveOrUpdateBatch(comparisonUpdateList);
} }
@Override @Override
......
...@@ -29,6 +29,21 @@ ...@@ -29,6 +29,21 @@
<if test="null != vo.queryDate"> <if test="null != vo.queryDate">
and ic.compare_date = to_char(#{vo.queryDate}::timestamp,'yyyy-MM-dd') and ic.compare_date = to_char(#{vo.queryDate}::timestamp,'yyyy-MM-dd')
</if> </if>
<if test="null != vo.sampleCodes">
and ic.sample_code in
<foreach collection="vo.sampleCodes" item="sc" open="(" separator="," close=")">
#{sc}
</foreach>
</if>
<if test="null != vo.itemNames">
and ic.name in
<foreach collection="vo.itemNames" item="itn" open="(" separator="," close=")">
#{itn}
</foreach>
</if>
<if test="null != vo.queryDate">
and ic.compare_date = to_char(#{vo.queryDate}::timestamp,'yyyy-MM-dd')
</if>
</where> </where>
order by ic.sample_code desc,ic.name order by ic.sample_code desc,ic.name
</select> </select>
......
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