Commit 62e75e42 authored by tianbo's avatar tianbo

bugfix:cyl对接气瓶编号唯一校验

parent 00ebf8c6
......@@ -15,6 +15,7 @@ public class CylinderFillingDataValidationResultModel {
private List<String> beforeErrorData;
private List<String> recordErrorData;
private List<String> afterErrorData;
private List<String> seqCodeErrorData;
private String result = "success";
}
......@@ -3,8 +3,8 @@ package com.yeejoin.amos.api.openapi.face.orm.dao;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.MidEquipRegistrationInfo;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Set;
......@@ -18,6 +18,17 @@ import java.util.Set;
public interface MidEquipRegistrationInfoMapper extends BaseMapper<MidEquipRegistrationInfo> {
@DS("tzs")
@Query("SELECT DISTINCT r.* FROM idx_biz_jg_use_info i, idx_biz_jg_register_info r WHERE i.data_source like 'jg%' AND i.RECORD = r.RECORD AND r.EQU_CODE IN :values")
List<MidEquipRegistrationInfo> getUseInfoByEquipCode(@Param("values") Set<String> sequenceCodes);
@Select("<script>" +
"SELECT DISTINCT sequenceCode FROM " +
"(SELECT concat ( fi.\"PRODUCE_UNIT_CREDIT_CODE\", '-', fi.\"FACTORY_NUM\" ) sequenceCode " +
"FROM idx_biz_jg_factory_info fi, idx_biz_jg_other_info oi " +
"WHERE oi.\"RECORD\" = fi.\"RECORD\" " +
" AND oi.\"CLAIM_STATUS\" = '已认领' " +
" AND fi.\"PRODUCE_UNIT_CREDIT_CODE\" IS NOT NULL " +
" AND fi.\"FACTORY_NUM\" IS NOT NULL) WHERE sequenceCode in " +
"<foreach item='item' index='index' collection='sequenceCodes' open='(' separator=',' close=')'>" +
" #{item}" +
"</foreach>" +
"</script>")
List<String> getUsedCountBySeqCodes(@Param("sequenceCodes") Set<String> sequenceCodes);
}
......@@ -5,7 +5,6 @@ import cn.hutool.core.collection.ConcurrentHashSet;
import com.yeejoin.amos.api.openapi.enums.*;
import com.yeejoin.amos.api.openapi.face.model.*;
import com.yeejoin.amos.api.openapi.face.orm.dao.MidEquipRegistrationInfoMapper;
import com.yeejoin.amos.api.openapi.face.orm.entity.MidEquipRegistrationInfo;
import com.yeejoin.amos.boot.module.cylinder.api.dto.TzBaseEnterpriseInfoDto;
import net.sf.json.JSONArray;
import net.sf.json.JSONNull;
......@@ -193,7 +192,7 @@ public class CylinderFillingDataValidationService {
Set<String> afterErrorCylinderSet = new ConcurrentHashSet<>();
CompletableFuture<List<String>> beforeFuture = CompletableFuture.supplyAsync(() -> {
// 异步校验检验前数据
// 异步校验充装前数据
JSONArray fillingBefore = jsonobject.getJSONArray("fillingBefore");
if (!ObjectUtils.isEmpty(fillingBefore)) {
for (int i = 0; i < fillingBefore.size(); i++) {
......@@ -204,7 +203,7 @@ public class CylinderFillingDataValidationService {
return validateFillingBeforeData(fillingBefore, beforeErrorCylinderSet);
});
CompletableFuture<List<String>> recordFuture = CompletableFuture.supplyAsync(() -> {
// 异步校验检填充数据
// 异步校验检充装时数据
JSONArray filling = jsonobject.getJSONArray("filling");
if (!ObjectUtils.isEmpty(filling)) {
for (int i = 0; i < filling.size(); i++) {
......@@ -216,7 +215,7 @@ public class CylinderFillingDataValidationService {
});
CompletableFuture<List<String>> afterFuture = CompletableFuture.supplyAsync(() -> {
// 异步校验检填充后数据
// 异步校验充装后数据
JSONArray fillingAfter = jsonobject.getJSONArray("fillingAfter");
if (!ObjectUtils.isEmpty(fillingAfter)) {
for (int i = 0; i < fillingAfter.size(); i++) {
......@@ -224,7 +223,7 @@ public class CylinderFillingDataValidationService {
cylinderCodeSet.add(row.getString("sequenceCode"));
}
}
return validateFillinAfterData(jsonobject.getJSONArray("fillingAfter"), afterErrorCylinderSet);
return validateFillingAfterData(fillingAfter, afterErrorCylinderSet);
});
/**
......@@ -236,12 +235,20 @@ public class CylinderFillingDataValidationService {
result.setAfterErrorData(afterFuture.get());
result.setCylinderNumber(cylinderCodeSet.size());
result.setBeforeErrorCylinderNumber(beforeErrorCylinderSet.size());
result.setRecordErrorCylinderNumber(recordErrorCylinderSet.size());
result.setAfterErrorCylinderNumber(afterErrorCylinderSet.size());
cylinderCodeSet.removeAll(beforeErrorCylinderSet);
cylinderCodeSet.removeAll(recordErrorCylinderSet);
cylinderCodeSet.removeAll(afterErrorCylinderSet);
if (!ObjectUtils.isEmpty(cylinderCodeSet)) {
// 检查气瓶唯一标识码在系统是否存在
List<String> errorRows = getNotExistSequenceCodes(cylinderCodeSet);
result.setSeqCodeErrorData(errorRows);
}
result.setSuccessCylinderNumber(cylinderCodeSet.size());
return result;
}
......@@ -330,7 +337,7 @@ public class CylinderFillingDataValidationService {
* @param jsonArray
* @return List 异常数据
*/
public List<String> validateFillinAfterData(JSONArray jsonArray, Set<String> errorCylinderSet) {
public List<String> validateFillingAfterData(JSONArray jsonArray, Set<String> errorCylinderSet) {
// 1.必填校验
List<String> errorRows = validateRequired(FillingAfterFieldEnum.getAllRequireKeys(), jsonArray);
......@@ -445,10 +452,9 @@ public class CylinderFillingDataValidationService {
* @return
*/
public List<String> getNotExistSequenceCodes(Set<String> sequenceCodes) {
List<MidEquipRegistrationInfo> useInfos = registrationInfoMapper.getUseInfoByEquipCode(sequenceCodes);
if (useInfos.size() < sequenceCodes.size()) {
List<String> equipCodes = useInfos.stream().map(e -> e.getEquCode()).collect(Collectors.toList());
return sequenceCodes.stream().filter(c -> !equipCodes.contains(c)).collect(Collectors.toList());
List<String> usedSeqCodeList = registrationInfoMapper.getUsedCountBySeqCodes(sequenceCodes);
if (usedSeqCodeList.size() < sequenceCodes.size()) {
return sequenceCodes.stream().filter(c -> !usedSeqCodeList.contains(c)).collect(Collectors.toList());
}
return null;
}
......
......@@ -10,7 +10,6 @@ import com.yeejoin.amos.api.openapi.service.MyBaseServiceImpl;
import com.yeejoin.amos.api.openapi.util.MultiFieldKey;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.typroject.tyboot.core.foundation.utils.Bean;
import java.util.Date;
......@@ -29,8 +28,14 @@ import java.util.List;
@Component
public class TmCylinderFillingService extends MyBaseServiceImpl<TmCylinderFillingModel, TmCylinderFilling, TmCylinderFillingMapper> {
private final SyncCylinderDataService syncCylinderDataService;
@Autowired
private SyncCylinderDataService syncCylinderDataService;
private TmCylinderFillingService self;
public TmCylinderFillingService(SyncCylinderDataService syncCylinderDataService) {
this.syncCylinderDataService = syncCylinderDataService;
}
@DSTransactional
public void createCylinderFillingBefore(List<TmCylinderFillingModel> model) {
......@@ -45,7 +50,7 @@ public class TmCylinderFillingService extends MyBaseServiceImpl<TmCylinderFillin
// 同步至气瓶业务库
syncCylinderFillingBefore(model);
this.saveOrUpdateBatchByUniqueFields(
self.saveOrUpdateBatchByUniqueFields(
tmCylinderFillingList,
tmCylinderFilling -> new LambdaQueryWrapper<TmCylinderFilling>()
.eq(TmCylinderFilling::getAppId, tmCylinderFilling.getAppId())
......
......@@ -9,4 +9,5 @@ public class CylinderFillingMessage {
private Integer cylinderNumber;
private String message;
private String appId;
private String orgCode;
}
......@@ -26,7 +26,6 @@ import com.yeejoin.amos.boot.module.ymt.api.service.IGenerateCodeService;
import com.yeejoin.amos.boot.module.ymt.api.vo.EquipExportVo;
import com.yeejoin.amos.boot.module.ymt.biz.dao.ESElavtorRepository;
import com.yeejoin.amos.boot.module.ymt.biz.utils.JsonUtils;
import com.yeejoin.amos.boot.module.ymt.biz.utils.StringUtils;
import com.yeejoin.amos.boot.module.ymt.flc.api.feign.IdxFeignService;
import com.yeejoin.amos.boot.module.ymt.flc.api.feign.PrivilegeFeginService;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
......
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