Browse Source

添加IFS 工具属性同步的方法 把IFS的数据同步到PLM库中

master
rui_li 5 months ago
parent
commit
3e2e036431
  1. 22
      src/main/java/com/spring/modules/Tooling/controller/ToolController.java
  2. 9
      src/main/java/com/spring/modules/Tooling/service/ToolService.java
  3. 94
      src/main/java/com/spring/modules/Tooling/service/impl/ToolServiceImpl.java

22
src/main/java/com/spring/modules/Tooling/controller/ToolController.java

@ -6,6 +6,7 @@ import com.spring.modules.Tooling.entity.IfsTool;
import com.spring.modules.Tooling.entity.IfsToolInstance;
import com.spring.modules.Tooling.entity.IfsToolInstanceDate;
import com.spring.modules.Tooling.service.ToolService;
import com.spring.modules.base.data.PlmPropertiesItemData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -122,7 +123,7 @@ public class ToolController {
* @version 1.0
*/
@RequestMapping(value = "insertToolInstance")
public R insertToolInstance(@RequestBody com.spring.modules.Tooling.entity.IfsToolInstance inData){
public R insertToolInstance(@RequestBody IfsToolInstance inData){
toolService.insertToolInstance(inData);
return R.ok()
.put("code", 200)
@ -136,7 +137,7 @@ public class ToolController {
* @version 1.0
*/
@RequestMapping(value = "modifyToolInstance")
public R modifyToolInstance(@RequestBody com.spring.modules.Tooling.entity.IfsToolInstance inData){
public R modifyToolInstance(@RequestBody IfsToolInstance inData){
toolService.modifyToolInstance(inData);
return R.ok()
.put("code", 200)
@ -150,7 +151,7 @@ public class ToolController {
* @version 1.0
*/
@RequestMapping(value = "removeToolInstance")
public R removeToolInstance(@RequestBody com.spring.modules.Tooling.entity.IfsToolInstance inData){
public R removeToolInstance(@RequestBody IfsToolInstance inData){
toolService.removeToolInstance(inData);
return R.ok()
.put("code", 200)
@ -214,4 +215,19 @@ public class ToolController {
.put("msg", "");
}
/**
* @description: 同步IFS属性项数据
* @author HP
* @date 2025/11/25 10:36
* @version 1.0
*/
@RequestMapping(value = "syncIfsProperties")
public R syncIfsProperties(@RequestBody PlmPropertiesItemData inData){
toolService.syncIfsProperties(inData);
return R.ok()
.put("code", 200)
.put("resultMsg", "操作成功!")
.put("msg", "");
}
}

9
src/main/java/com/spring/modules/Tooling/service/ToolService.java

@ -6,6 +6,7 @@ import com.spring.modules.Tooling.data.ToolInstanceDate;
import com.spring.modules.Tooling.entity.IfsTool;
import com.spring.modules.Tooling.entity.IfsToolInstance;
import com.spring.modules.Tooling.entity.IfsToolInstanceDate;
import com.spring.modules.base.data.PlmPropertiesItemData;
import java.util.List;
@ -127,4 +128,12 @@ public interface ToolService {
* @version 1.0
*/
IfsTool getNextToolId(IfsTool inData);
/**
* @description: 同步IFS属性
* @author LR
* @date 2024/9/24 18:11
* @version 1.0
*/
void syncIfsProperties(PlmPropertiesItemData inData);
}

94
src/main/java/com/spring/modules/Tooling/service/impl/ToolServiceImpl.java

@ -3,8 +3,11 @@ package com.spring.modules.Tooling.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.spring.ifs.api.IfsServer;
import com.spring.ifs.bean.BaseSearchBean;
import com.spring.ifs.bean.TechnicalClassBean;
import com.spring.ifs.bean.ToolServiceBean;
import com.spring.ifs.data.BaseSearchData;
import com.spring.ifs.data.TechnicalAttribute;
import com.spring.modules.Tooling.dao.BaseConfigDao;
import com.spring.modules.Tooling.data.*;
import com.spring.modules.Tooling.dao.ToolDao;
@ -12,12 +15,16 @@ import com.spring.modules.Tooling.entity.IfsTool;
import com.spring.modules.Tooling.entity.IfsToolInstance;
import com.spring.modules.Tooling.entity.IfsToolInstanceDate;
import com.spring.modules.Tooling.service.ToolService;
import com.spring.modules.base.data.PartSubPropertiesValueData;
import com.spring.modules.base.data.PlmPropertiesItemData;
import com.spring.modules.base.utils.DateUtils;
import com.spring.modules.part.entity.APIEntity.PartIfsCatalogModel;
import com.spring.modules.part.mapper.PartInformationMapper;
import com.spring.modules.report.dao.ProcedureDao;
import com.spring.modules.sys.dao.SysUserDao;
import com.spring.modules.sys.entity.SysUserEntity;
import ifs.fnd.ap.Server;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.slf4j.Logger;
import org.springframework.beans.BeanUtils;
@ -52,6 +59,10 @@ public class ToolServiceImpl implements ToolService {
private TechnicalClassBean technicalClassBean;
@Autowired
private SysUserDao sysUserDao;
@Autowired
private BaseSearchBean baseSearchBean;
@Autowired
private PartInformationMapper partInformationMapper;
private static final Logger logger = org.slf4j.LoggerFactory.getLogger(ToolServiceImpl.class);
@ -938,6 +949,89 @@ public class ToolServiceImpl implements ToolService {
return inData;
}
@Override
@Transactional
public void syncIfsProperties(PlmPropertiesItemData inData) {
//公共参数
String site = inData.getSite();
String partNo = inData.getPartNo();
String codeNo = inData.getCodeNo();
String recordType = inData.getRecordType();
//1.获取IFS属性
//获取当前操作的账号
String username = ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername();
SysUserEntity ifsUser = sysUserDao.selectOne(new QueryWrapper<SysUserEntity>().eq("username", username));
if (ifsUser == null || !org.apache.commons.lang3.StringUtils.isNotBlank(ifsUser.getIfsUsername()) || !org.apache.commons.lang3.StringUtils.isNotBlank(ifsUser.getIfsPassword())) {
throw new RuntimeException("请维护IFS账号和密码!");
}
String ifsUsername = ifsUser.getIfsUsername();
String ifsPassword = ifsUser.getIfsPassword();
//获取链接
Server srv = srv = ifsServer.getIfsServer(ifsUsername, ifsPassword);
//区分不同类型 设置不同的参数
BaseSearchData baseSearchData = new BaseSearchData();
if("TL".equalsIgnoreCase(recordType)){
baseSearchData.setLuName("ManufTool");
baseSearchData.setKeyRef("CONTRACT="+site+"^TOOL_ID="+partNo+"^");
}else if("TLI".equalsIgnoreCase(recordType)){
baseSearchData.setLuName("ManufToolDetail");
String[] toolArr = partNo.split("#");
String keyRef = "CONTRACT="+site+"^TOOL_ID="+toolArr[0]+"^TOOL_INSTANCE="+toolArr[1]+"^";
baseSearchData.setKeyRef(keyRef);
}
Map<String, String> getInfoResponse = baseSearchBean.getTechnicalAttributesByCon(srv, baseSearchData);
if (!"200".equals(getInfoResponse.get("resultCode"))) {
throw new RuntimeException("IFS 获取物料件属性异常信息:" + getInfoResponse.get("resultMsg"));
}
String s = String.valueOf(getInfoResponse.get("obj"));
List<TechnicalAttribute> ifsItems = JSON.parseArray(s, TechnicalAttribute.class);
if (ifsItems.isEmpty()) {
throw new RuntimeException("IFS 获取物料件属性为空值!");
}
// 转成PLM对象
List<PartSubPropertiesValueData> arrayList = new ArrayList<>();
int itemNo = 1;
for (TechnicalAttribute item : ifsItems) {
PartSubPropertiesValueData valueData = new PartSubPropertiesValueData();
valueData.setSite(site);
valueData.setPartNo(partNo);
valueData.setCodeNo(codeNo);
valueData.setSubCodeSeqNo(Double.valueOf("1"));
valueData.setItemNo((double) itemNo++);
valueData.setPropertiesItemNo(item.getAttribute());
if ("Numeric".equals(item.getAttributeType())) {
valueData.setNumValue(StringUtils.isNotBlank(item.getValueNo()) ? Double.valueOf(item.getValueNo()) : null);
} else {
valueData.setTextValue(item.getValueText() == null ? "" : item.getValueText());
}
valueData.setRecordType(recordType);
arrayList.add(valueData);
}
//调用存储过程 删除数据
this.deletePartSubPropertiesForSyncIfs(site, partNo, codeNo, recordType);
//批量新增属性
partInformationMapper.savePartSubPropertiesValues(arrayList);
}
/**
* @description: 调用存储过程 删除属性数据 为同步IFS数据
* @author HP
* @date 2025/11/25 11:39
* @version 1.0
*/
public Map<String, Object> deletePartSubPropertiesForSyncIfs(String site, String partNo, String codeNo, String recordType) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(partNo);
params.add(codeNo);
params.add(recordType);
//调用存储过程
List<Map<String, Object>> resultList = procedureDao.getProcedureData("deletePartSubPropertiesForSyncIfs", params);
//处理返回的结果
return resultList.get(0);
}
/**
* @description: 获取工具的下一个编码
* @author LR

Loading…
Cancel
Save