|
|
@@ -1,5 +1,6 @@
|
|
|
package com.uas.eis.serviceImpl;
|
|
|
|
|
|
+import com.uas.eis.annotation.ApiLog;
|
|
|
import com.uas.eis.core.config.SpObserver;
|
|
|
import com.uas.eis.dao.BaseDao;
|
|
|
import com.uas.eis.dao.SqlRowList;
|
|
|
@@ -19,6 +20,8 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import javax.validation.ConstraintViolation;
|
|
|
+import javax.validation.Validator;
|
|
|
import java.sql.Timestamp;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -34,6 +37,9 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
|
|
|
String Master;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private Validator validator;
|
|
|
+
|
|
|
@Override
|
|
|
public List<Map<Object,Object>> snStepPass(String accessKey, String requestId, String data) {
|
|
|
String AE_MASTER = checkAccessKey(accessKey, requestId);
|
|
|
@@ -547,7 +553,7 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
/**
|
|
|
* @add xiaost 2026-06-01
|
|
|
* 设置产品SN强制绑定项
|
|
|
- * @param jsonData
|
|
|
+ * @param rawJson
|
|
|
* * .{
|
|
|
* * ."code": "PRODBINDSET",
|
|
|
* * ."data":{
|
|
|
@@ -566,15 +572,18 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public ApiResult<Map<Object, Object>> prodBindSet(String accessKey, String requestId, ProdBindSetRequest reqData,String jsonData) {
|
|
|
+ @ApiLog(actionType = "设置产品SN强制绑定项")
|
|
|
+ public ApiResult<Map<Object, Object>> prodBindSet(String accessKey, String requestId, String rawJson) {
|
|
|
String AE_MASTER = checkAccessKey(accessKey, requestId);
|
|
|
SpObserver.putSp(AE_MASTER); //切换数据源
|
|
|
//保存传参数据原始JSON串,记录日志
|
|
|
- savelog("设置产品SN强制绑定项",jsonData,accessKey,requestId);
|
|
|
+ //savelog("设置产品SN强制绑定项",rawJson,accessKey,requestId);
|
|
|
+ ProdBindSetRequest reqData = prodBindSetCheck(requestId,rawJson);
|
|
|
//执行业务操作
|
|
|
return executeSNBindSet(accessKey,requestId,reqData);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* @add xiaost 2026-06-03
|
|
|
* SN序列号测试LOG采集信息
|
|
|
@@ -600,16 +609,15 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public ApiResult<Map<Object, Object>> SNBindInfo(String accessKey, String requestId, SNBindInfoRequest reqData, String rawJson) {
|
|
|
+ @ApiLog(actionType = "SN序列号测试LOG采集信息")
|
|
|
+ public ApiResult<Map<Object, Object>> SNBindInfo(String accessKey, String requestId,String rawJson) {
|
|
|
String AE_MASTER = checkAccessKey(accessKey, requestId);
|
|
|
SpObserver.putSp(AE_MASTER); //切换数据源
|
|
|
- //保存传参数据原始JSON串,记录日志
|
|
|
- savelog("SN序列号测试LOG采集信息",rawJson,accessKey,requestId);
|
|
|
+ SNBindInfoRequest reqData = SNBindInfoCheck(requestId,rawJson);
|
|
|
//执行业务操作
|
|
|
return executeSNBindInfo(accessKey,requestId,reqData);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* @add xiaost 2026-06-03
|
|
|
* 接收SN序列号扫码绑定物料结果
|
|
|
@@ -635,11 +643,13 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public ApiResult<Map<Object, Object>> SNBindMaterial(String accessKey, String requestId, SNBindMaterialRequest reqData, String rawJson) {
|
|
|
+ @ApiLog(actionType = "接收SN序列号扫码绑定物料结果")
|
|
|
+ public ApiResult<Map<Object, Object>> SNBindMaterial(String accessKey, String requestId, String rawJson) {
|
|
|
String AE_MASTER = checkAccessKey(accessKey, requestId);
|
|
|
SpObserver.putSp(AE_MASTER); //切换数据源
|
|
|
//保存传参数据原始JSON串,记录日志
|
|
|
- savelog("接收SN序列号扫码绑定物料结果",rawJson,accessKey,requestId);
|
|
|
+ //savelog("接收SN序列号扫码绑定物料结果",rawJson,accessKey,requestId);
|
|
|
+ SNBindMaterialRequest reqData = SNBindMaterialCheck(requestId,rawJson);
|
|
|
//执行业务操作
|
|
|
return executeSNBindMaterial(accessKey,requestId,reqData);
|
|
|
}
|
|
|
@@ -660,11 +670,12 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
+ @ApiLog(actionType = "校验SN序列号绑定数据")
|
|
|
public ApiResult<Map<Object, Object>> checkSNBind(String accessKey, String requestId, String rawJson) {
|
|
|
String AE_MASTER = checkAccessKey(accessKey, requestId);
|
|
|
SpObserver.putSp(AE_MASTER); //切换数据源
|
|
|
//保存传参数据原始JSON串,记录日志
|
|
|
- savelog("校验SN序列号绑定数据",rawJson,accessKey,requestId);
|
|
|
+ //savelog("校验SN序列号绑定数据",rawJson,accessKey,requestId);
|
|
|
Map<Object, Object> map = BaseUtil.parseFormStoreToMap(rawJson);
|
|
|
if(!map.containsKey("data") || !StringUtil.hasText(map.get("data"))){
|
|
|
return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(), requestId, "参数错误sncode不能为空");
|
|
|
@@ -707,7 +718,6 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
String macode = dataDTO.getSm_macode();
|
|
|
String type = dataDTO.getType();
|
|
|
List<SNBindMaterialRequest.DetailDTO> detailList = dataDTO.getDetail();
|
|
|
-
|
|
|
//绑定项编号不能重复
|
|
|
Set<String> set = new HashSet<>();
|
|
|
List<String> duplicates = detailList.stream()
|
|
|
@@ -806,7 +816,6 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
@Transactional
|
|
|
public ApiResult<Map<Object, Object>> executeSNBindInfo(String accessKey, String requestId, SNBindInfoRequest reqData) {
|
|
|
List<SNBindInfoRequest.DetailDTO> detailList = reqData.getData().getDetail();
|
|
|
-
|
|
|
Set<String> set = new HashSet<>();
|
|
|
List<String> duplicates = detailList.stream()
|
|
|
.map(SNBindInfoRequest.DetailDTO::getSi_sncode)
|
|
|
@@ -961,9 +970,11 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
i++;
|
|
|
}
|
|
|
baseDao.getJdbcTemplate().batchUpdate(insertSql, batchArgs);
|
|
|
+ baseDao.execute("update product set pr_nocheckm=0 where pr_code=? and nvl(pr_nocheckm,0) != 0 ",ss_mothercode);
|
|
|
} else if ("DEL".equals(type)) {
|
|
|
+ baseDao.execute("update product set pr_nocheckm=-1 where pr_code=? and nvl(pr_nocheckm,0) != -1",ss_mothercode);
|
|
|
if(ss_id == 0){
|
|
|
- return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(), requestId, "错误,当前产品编号:"+ss_mothercode+",未设置绑定项,不需要删除");
|
|
|
+ return ApiResponse.successRsp("0", requestId, "错误,当前产品编号:"+ss_mothercode+",未设置绑定项,不需要删除");
|
|
|
}else { //不存在
|
|
|
baseDao.execute("delete from SNBINDSET where ss_mothercode=?",ss_mothercode);
|
|
|
}
|
|
|
@@ -979,8 +990,8 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
}
|
|
|
|
|
|
private String checkAccessKey(String accessKey,String requestId){
|
|
|
- Object accessSecret_O = baseDao.getFieldDataByCondition("APIEMPLOYEE", "AE_SECRET", "AE_KEY='"+accessKey+"'");
|
|
|
- Object AE_MASTER = baseDao.getFieldDataByCondition("APIEMPLOYEE", "AE_MASTER", "AE_KEY='"+accessKey+"'");
|
|
|
+ Object accessSecret_O = baseDao.getFieldDataByCondition(username+".APIEMPLOYEE", "AE_SECRET", "AE_KEY='"+accessKey+"'");
|
|
|
+ Object AE_MASTER = baseDao.getFieldDataByCondition(username+".APIEMPLOYEE", "AE_MASTER", "AE_KEY='"+accessKey+"'");
|
|
|
String accessSecret = accessSecret_O == null ? "" : accessSecret_O.toString();
|
|
|
// 检查KEY是否合理
|
|
|
if (StringUtils.isEmpty(accessKey) || StringUtils.isEmpty(accessSecret) || AE_MASTER== null || "".equals(AE_MASTER.toString())) {
|
|
|
@@ -993,5 +1004,66 @@ public class MESDataServiceImpl implements MESDataService {
|
|
|
return AE_MASTER.toString();
|
|
|
}
|
|
|
|
|
|
+ private ProdBindSetRequest prodBindSetCheck(String requestId, String rawJson) {
|
|
|
+ //@RequestBody ProdBindSetRequest reqData
|
|
|
+ // 获取原始的 JSON 字符串(从 HttpServletRequest 的 body 中读取)
|
|
|
+ // 手动解析 JSON 字符串为 ProdBindSetRequest
|
|
|
+ ProdBindSetRequest reqData;
|
|
|
+ try {
|
|
|
+ reqData = FlexJsonUtil.fromJson(rawJson, ProdBindSetRequest.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new ApiSystemException(new ApiResult(ErrorMessage.ACCESSKEY_ILLEGAL.getCode(),requestId,"传参数据格式错误"));
|
|
|
+ //return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(), requestId, "传参数据格式错误");
|
|
|
+ }
|
|
|
+ // 手动校验
|
|
|
+ Set<ConstraintViolation<ProdBindSetRequest>> violations = validator.validate(reqData);
|
|
|
+ if (!violations.isEmpty()) {
|
|
|
+ String msg = violations.stream()
|
|
|
+ .map(ConstraintViolation::getMessage)
|
|
|
+ .distinct() // 按消息内容去重
|
|
|
+ .collect(Collectors.joining(";"));
|
|
|
+ throw new ApiSystemException(new ApiResult(ErrorMessage.ACCESSKEY_ILLEGAL.getCode(),requestId,"传参数据格式错误"));
|
|
|
+ }
|
|
|
+ return reqData;
|
|
|
+ }
|
|
|
+
|
|
|
+ private SNBindInfoRequest SNBindInfoCheck(String requestId,String rawJson){
|
|
|
+ SNBindInfoRequest reqData;
|
|
|
+ try {
|
|
|
+ reqData = FlexJsonUtil.fromJson(rawJson, SNBindInfoRequest.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new ApiSystemException(new ApiResult(ErrorMessage.ACCESSKEY_ILLEGAL.getCode(),requestId,"传参数据格式错误"));
|
|
|
+ }
|
|
|
+ // 手动校验
|
|
|
+ Set<ConstraintViolation<SNBindInfoRequest>> violations = validator.validate(reqData);
|
|
|
+ if (!violations.isEmpty()) {
|
|
|
+ String msg = violations.stream()
|
|
|
+ .map(ConstraintViolation::getMessage)
|
|
|
+ .distinct() // 按消息内容去重
|
|
|
+ .collect(Collectors.joining(";"));
|
|
|
+ throw new ApiSystemException(new ApiResult(ErrorMessage.ACCESSKEY_ILLEGAL.getCode(),requestId,msg));
|
|
|
+ }
|
|
|
+ return reqData;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private SNBindMaterialRequest SNBindMaterialCheck(String requestId, String rawJson){
|
|
|
+ SNBindMaterialRequest reqData;
|
|
|
+ try {
|
|
|
+ reqData = FlexJsonUtil.fromJson(rawJson, SNBindMaterialRequest.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new ApiSystemException(new ApiResult(ErrorMessage.ACCESSKEY_ILLEGAL.getCode(),requestId,"传参数据格式错误"));
|
|
|
+ }
|
|
|
+ // 手动校验
|
|
|
+ Set<ConstraintViolation<SNBindMaterialRequest>> violations = validator.validate(reqData);
|
|
|
+ if (!violations.isEmpty()) {
|
|
|
+ String msg = violations.stream()
|
|
|
+ .map(ConstraintViolation::getMessage)
|
|
|
+ .distinct() // 按消息内容去重
|
|
|
+ .collect(Collectors.joining(";"));
|
|
|
+ throw new ApiSystemException(new ApiResult(ErrorMessage.ACCESSKEY_ILLEGAL.getCode(),requestId,msg));
|
|
|
+ }
|
|
|
+ return reqData;
|
|
|
+ }
|
|
|
|
|
|
}
|