|
|
@@ -5,6 +5,7 @@ import com.uas.eis.dao.BaseDao;
|
|
|
import com.uas.eis.dao.SqlRowList;
|
|
|
import com.uas.eis.entity.ErrorMessage;
|
|
|
import com.uas.eis.entity.ProdBindSetRequest;
|
|
|
+import com.uas.eis.entity.SNBindInfoRequest;
|
|
|
import com.uas.eis.exception.ApiSystemException;
|
|
|
import com.uas.eis.sdk.entity.ApiResult;
|
|
|
import com.uas.eis.sdk.resp.ApiResponse;
|
|
|
@@ -18,10 +19,8 @@ import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.sql.Timestamp;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class MESDataServiceImpl implements MESDataService {
|
|
|
@@ -575,6 +574,95 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
return executeSNBindSet(accessKey,requestId,reqData);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @add xiaost 2026-06-03
|
|
|
+ * SN序列号测试LOG采集信息
|
|
|
+ * @param rawJson
|
|
|
+ * .{
|
|
|
+ * ."code": "SNBINDINFO",
|
|
|
+ * ."data":{
|
|
|
+ * ."detail": [{
|
|
|
+ * . "si_sncode":"W20211230029A1" ,
|
|
|
+ * . "si_prodcode": "01.ER0.60R4J02010A",
|
|
|
+ * . "si_macode":"MA2026052801-1",
|
|
|
+ * . "si_cpu":"CPU",
|
|
|
+ * . "si_wifi":"WIFI",
|
|
|
+ * . "si_bt":"BT",
|
|
|
+ * . "si_uuid":"UUID",
|
|
|
+ * . "si_bios":"BIOS",
|
|
|
+ * . "si_os":"OS",
|
|
|
+ * . "si_ec":"EC",
|
|
|
+ * . "si_dp":"DP"
|
|
|
+ * .}]
|
|
|
+ * .}
|
|
|
+ * .}
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ApiResult<Map<Object, Object>> SNBindInfo(String accessKey, String requestId, SNBindInfoRequest reqData, String rawJson) {
|
|
|
+ String AE_MASTER = checkAccessKey(accessKey, requestId);
|
|
|
+ SpObserver.putSp(AE_MASTER); //切换数据源
|
|
|
+ //保存传参数据原始JSON串,记录日志
|
|
|
+ savelog("SN序列号测试LOG采集信息",rawJson,accessKey,requestId);
|
|
|
+ //执行业务操作
|
|
|
+ return executeSNBindInfo(accessKey,requestId,reqData);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ public ApiResult<Map<Object, Object>> executeSNBindInfo(String accessKey, String requestId, SNBindInfoRequest reqData) {
|
|
|
+ List<SNBindInfoRequest.DetailDTO> detailList = reqData.getData().getDetail();
|
|
|
+ // 1. sncode(去重,避免重复处理)
|
|
|
+ List<String> sncodeList = detailList.stream()
|
|
|
+ .map(SNBindInfoRequest.DetailDTO::getSi_sncode)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ // 2. 批量查询已存在的记录(返回 sncode 和 si_id)
|
|
|
+ String selectSql = "SELECT si_id,si_sncode FROM SNBIND_INFO WHERE si_sncode IN (%s)";
|
|
|
+ String inSql = String.join(",", Collections.nCopies(sncodeList.size(), "?"));
|
|
|
+ String fullSelectSql = String.format(selectSql, inSql);
|
|
|
+ List<Map<String, Object>> existList = baseDao.getJdbcTemplate().queryForList(fullSelectSql, sncodeList.toArray());
|
|
|
+ // 3. 如果存在旧记录,则批量插入历史表
|
|
|
+ if (!existList.isEmpty()) {
|
|
|
+ String insertHisSql = "INSERT INTO SNBIND_INFO_HIS (SI_ID,SI_SNCODE,SI_PRODCODE,SI_MACODE," +
|
|
|
+ "SI_CPU,SI_WIFI,SI_BT,SI_UUID,SI_BIOS,SI_OS,SI_EC,SI_DP,SI_INDATE,SIH_INDATE) " +
|
|
|
+ "SELECT SI_ID,SI_SNCODE,SI_PRODCODE,SI_MACODE,SI_CPU,SI_WIFI,SI_BT," +
|
|
|
+ "SI_UUID,SI_BIOS,SI_OS,SI_EC,SI_DP,SI_INDATE,SYSDATE FROM SNBIND_INFO WHERE si_sncode IN (%s)";
|
|
|
+ String inClause = String.join(",", Collections.nCopies(existList.size(), "?"));
|
|
|
+ String fullInsertHisSql = String.format(insertHisSql, inClause);
|
|
|
+ // 提取已存在的 sncode 列表作为条件参数
|
|
|
+ List<String> existSncodes = existList.stream()
|
|
|
+ .map(m -> (String) m.get("si_sncode"))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ baseDao.execute(fullInsertHisSql, existSncodes.toArray());
|
|
|
+ // 4. 批量删除原表中这些 sncode 的记录
|
|
|
+ String deleteSql = "DELETE FROM SNBIND_INFO WHERE si_sncode IN (%s)";
|
|
|
+ String fullDeleteSql = String.format(deleteSql, inClause);
|
|
|
+ baseDao.execute(fullDeleteSql, existSncodes.toArray());
|
|
|
+ }
|
|
|
+ // 5. 批量插入新数据
|
|
|
+ String insertSql = "INSERT INTO SNBIND_INFO (SI_ID,SI_SNCODE,SI_PRODCODE,SI_MACODE,SI_CPU,SI_WIFI,SI_BT," +
|
|
|
+ " SI_UUID,SI_BIOS,SI_OS,SI_EC,SI_DP,SI_INDATE) " +
|
|
|
+ "VALUES (snbind_info_seq.nextval,?, ?, ?, ?, ?, ?, ?,?,?,?,?,sysdate)";
|
|
|
+ List<Object[]> batchArgs = new ArrayList<>();
|
|
|
+ for (SNBindInfoRequest.DetailDTO detail : detailList) {
|
|
|
+ batchArgs.add(new Object[]{
|
|
|
+ detail.getSi_sncode(),
|
|
|
+ detail.getSi_prodcode(),
|
|
|
+ detail.getSi_macode(),
|
|
|
+ detail.getSi_cpu(),
|
|
|
+ detail.getSi_wifi(),
|
|
|
+ detail.getSi_bt(),
|
|
|
+ detail.getSi_uuid(),
|
|
|
+ detail.getSi_bios(),
|
|
|
+ detail.getSi_os(),
|
|
|
+ detail.getSi_ec(),
|
|
|
+ detail.getSi_dp()
|
|
|
+ });
|
|
|
+ }
|
|
|
+ baseDao.getJdbcTemplate().batchUpdate(insertSql, batchArgs);
|
|
|
+ return ApiResponse.successRsp("0",requestId,"操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Transactional
|
|
|
public ApiResult<Map<Object, Object>> executeSNBindSet(String accessKey, String requestId, ProdBindSetRequest reqData){
|
|
|
@@ -588,8 +676,7 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
if(rs.next()){
|
|
|
ss_id = rs.getGeneralLong("ss_id");
|
|
|
}
|
|
|
- List<String> sql = new ArrayList<>();
|
|
|
- if ("ADD".equals(type)) { //新增或者修改
|
|
|
+ if ("ADD".equals(type)) { //新增或者修改
|
|
|
if(ss_id>0){ //存在则删除
|
|
|
baseDao.execute("delete from SNBINDSET where ss_mothercode=?",ss_mothercode);
|
|
|
}
|