提交 faee3c48 authored 作者: inroi's avatar inroi

微调

上级 39dfb21f
...@@ -37,7 +37,6 @@ public class KingdeeLogUtil { ...@@ -37,7 +37,6 @@ public class KingdeeLogUtil {
public void KingdeeLog(List<List<Object>> list, String name, String content) { public void KingdeeLog(List<List<Object>> list, String name, String content) {
//获取该线程的存入的变量,在接口开头添加追加的参数 //获取该线程的存入的变量,在接口开头添加追加的参数
Map map = ThreadLocalConfig.get(); Map map = ThreadLocalConfig.get();
String kingdeeLogOZTName = map.get("KingdeeLogOZTName").toString();
Kingdeelog kingdeelog = new Kingdeelog(); Kingdeelog kingdeelog = new Kingdeelog();
if (!ObjectUtils.isEmpty(map)) { if (!ObjectUtils.isEmpty(map)) {
long costime = Long.valueOf(map.get("Costime").toString()); long costime = Long.valueOf(map.get("Costime").toString());
...@@ -52,7 +51,7 @@ public class KingdeeLogUtil { ...@@ -52,7 +51,7 @@ public class KingdeeLogUtil {
kingdeelog.setFailReason("此单据不存在"); kingdeelog.setFailReason("此单据不存在");
} }
kingdeelog.setName(name); kingdeelog.setName(name);
kingdeelog.setOztName(kingdeeLogOZTName); kingdeelog.setOztName(map.get("KingdeeLogOZTName") != null ? map.get("KingdeeLogOZTName").toString() : "");
kingdeelog.setCreatetime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); kingdeelog.setCreatetime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
//获取result的返回信息的成功状态 //获取result的返回信息的成功状态
//查询失败则会有报错 //查询失败则会有报错
......
package org.jeecg.modules.iost.ims.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author Inori
*/
@Data
@TableName("ims_common_syn")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "ims_common_syn对象", description = "通用同步类")
public class ImsCommonSyn {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**
* 金蝶标识
*/
@Excel(name = "主键ID", width = 15)
@ApiModelProperty(value = "金蝶标识")
private String formId;
/**
* ims标识
*/
@Excel(name = "ims标识", width = 15)
@ApiModelProperty(value = "ims标识")
private String docType;
/**
* 日志名称
*/
@Excel(name = "日志名称", width = 15)
@ApiModelProperty(value = "日志名称")
private String name;
/**
* 明细内容
*/
@Excel(name = "明细内容", width = 15)
@ApiModelProperty(value = "明细内容")
private String detail;
/**
* 创建日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private Date createTime;
/**
* 更新日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private Date updateTime;
}
package org.jeecg.modules.iost.ims.kingdeeapi;
import org.jeecg.modules.iost.ims.Dao.CategoryDao;
import org.jeecg.modules.iost.ims.Util.ImsUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.*;
/**
* @author Inori
*/
@Component
public class ImsCommonKingdeeApi {
@Autowired
private CategoryDao categoryDao;
/**
* 封装金蝶字段
*/
private Map<String, String> purchaseKingDee(List<Map<String, String>> fieldList) {
Map<String, String> key = new LinkedHashMap<>();
for (Map<String, String> map : fieldList) {
String kingDee = map.get("kingdee");
if ("true".equals(map.get("isNumber"))) {
kingDee = kingDee + ".Fnumber";
} else if ("true".equals(map.get("isName"))) {
kingDee = kingDee + ".Fname";
}
key.put(kingDee, kingDee);
}
return key;
}
/**
* 获取金蝶云数据
*/
public List<Map<String, Object>> selectAndLog(String sFormId, List<Map<String, String>> fieldList, Map<String, String> where, String name) {
Map<String, String> key = purchaseKingDee(fieldList);
List<List<Object>> result = categoryDao.selectAndLog(sFormId, key, where, name);
return purchaseIms(result, fieldList);
}
/**
* 封装第三方字段
*/
private List<Map<String, Object>> purchaseIms(List<List<Object>> list, List<Map<String, String>> fieldList) {
List<Map<String, Object>> result = new ArrayList<>();
if (!CollectionUtils.isEmpty(list)) {
if (!list.get(0).get(0).toString().contains("Errors")) {
Map<String, Object> map = new HashMap<>(fieldList.size());
List<Map<String, Object>> imsList = new ArrayList<>();
for (List<Object> objectList : list) {
Map<String, Object> tempMap = new HashMap<>(fieldList.size());
for (int i = 0; i < fieldList.size(); i++) {
//是否是明细字段
if ("true".equals(fieldList.get(i).get("isDetail"))) {
tempMap.put(fieldList.get(i).get("ims"), String.valueOf(objectList.get(i)));
} else {
map.put(fieldList.get(i).get("ims"), String.valueOf(objectList.get(i)));
}
}
if (!CollectionUtils.isEmpty(tempMap)) {
imsList.add(tempMap);
}
}
if (!CollectionUtils.isEmpty(imsList)) {
map.put("detail_list", imsList);
}
result.add(map);
} else {
//如果有错误信息则返回
String message = ImsUtil.getMessage(list.get(0).get(0));
Map<String, Object> resultMap = new HashMap<>(1);
resultMap.put("false", message);
result.add(resultMap);
}
}
return result;
}
}
package org.jeecg.modules.iost.ims.kingdeeapi;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.jeecg.modules.iost.ims.entity.ImsCommonSyn;
import org.jeecg.modules.iost.ims.mapper.ImsCommonSynMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author Inori
*/
@Component
public class ImsConstants {
private Map<String, Map<String, String>> map = new ConcurrentHashMap<>();
@Autowired
private ImsCommonSynMapper imsCommonSynMapper;
@PostConstruct
public void init() {
List<ImsCommonSyn> imsCommonSynList = imsCommonSynMapper.selectList(null);
for (ImsCommonSyn imsCommonSyn : imsCommonSynList) {
Map<String, String> temp = new HashMap<>(5);
temp.put("formId", imsCommonSyn.getFormId());
temp.put("docType", imsCommonSyn.getDocType());
temp.put("name", imsCommonSyn.getName());
temp.put("detail", imsCommonSyn.getDetail());
map.put(imsCommonSyn.getFormId(), temp);
}
}
public Map<String, String> get(String formId) {
return map.get(formId);
}
public void set(String formId) {
ImsCommonSyn imsCommonSyn = imsCommonSynMapper.selectOne(new QueryWrapper<ImsCommonSyn>().eq("form_id", formId));
if (imsCommonSyn != null) {
map.remove(formId);
Map<String, String> temp = new HashMap<>(4);
temp.put("formId", imsCommonSyn.getFormId());
temp.put("docType", imsCommonSyn.getDocType());
temp.put("name", imsCommonSyn.getName());
temp.put("detail", imsCommonSyn.getDetail());
map.put(imsCommonSyn.getFormId(), temp);
}
}
}
...@@ -101,7 +101,7 @@ public class PurchaseReturnKingdeeApi { ...@@ -101,7 +101,7 @@ public class PurchaseReturnKingdeeApi {
return list; return list;
} }
List<Map<String, Object>> purchaseWarehousing(List<List<Object>> list) { private List<Map<String, Object>> purchaseWarehousing(List<List<Object>> list) {
List<Map<String, Object>> result = new ArrayList<>(); List<Map<String, Object>> result = new ArrayList<>();
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
if (!list.get(0).get(0).toString().contains("Errors")) { if (!list.get(0).get(0).toString().contains("Errors")) {
......
package org.jeecg.modules.iost.ims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.jeecg.modules.iost.ims.entity.ImsCommonSyn;
/**
* @author Inori
*/
@Mapper
public interface ImsCommonSynMapper extends BaseMapper<ImsCommonSyn> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.iost.ims.mapper.ImsCommonSynMapper">
</mapper>
package org.jeecg.modules.iost.ims.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.iost.ims.entity.ImsCommonSyn;
/**
* @author Inori
*/
public interface IImsCommonSynService extends IService<ImsCommonSyn> {
/**
* 通用同步方法
*
* @param fid FID
* @param formId formId
* @return 是否成功
*/
Boolean synchronization(Object fid, Object formId);
}
...@@ -52,6 +52,8 @@ public class ISynServiceImpl extends ServiceImpl<SynMapper, Syn> implements ISyn ...@@ -52,6 +52,8 @@ public class ISynServiceImpl extends ServiceImpl<SynMapper, Syn> implements ISyn
IImsImsNestingAnalysisService nestingAnalysisService; IImsImsNestingAnalysisService nestingAnalysisService;
@Autowired @Autowired
IImsPickingListService iImsPickingListService; IImsPickingListService iImsPickingListService;
@Autowired
IImsCommonSynService iImsCommonSynService;
/** /**
* 查询新更新的记录 * 查询新更新的记录
...@@ -146,7 +148,10 @@ public class ISynServiceImpl extends ServiceImpl<SynMapper, Syn> implements ISyn ...@@ -146,7 +148,10 @@ public class ISynServiceImpl extends ServiceImpl<SynMapper, Syn> implements ISyn
} else if (data.get("formid").equals("LQKJ_ContrastRecord")) { } else if (data.get("formid").equals("LQKJ_ContrastRecord")) {
logName = "提料分析同步失败"; logName = "提料分析同步失败";
success = iImsPickingListService.synchronization(data.get("dataid"), sysUser);//提料分析 success = iImsPickingListService.synchronization(data.get("dataid"), sysUser);//提料分析
} }/* else {
logName = data.get("dataid") + "同步失败";
success = iImsCommonSynService.synchronization(data.get("dataid"), sysUser);//通用同步
}*/
/*//将金蝶云的数据同步该成1 已同步 /*//将金蝶云的数据同步该成1 已同步
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
......
package org.jeecg.modules.iost.ims.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.iost.ims.ExternalInterface.IMSApi;
import org.jeecg.modules.iost.ims.Util.ImsLogUtil;
import org.jeecg.modules.iost.ims.Util.JsonUtil;
import org.jeecg.modules.iost.ims.Util.KingdeeLogUtil;
import org.jeecg.modules.iost.ims.entity.ImsCommonSyn;
import org.jeecg.modules.iost.ims.kingdeeapi.ImsCommonKingdeeApi;
import org.jeecg.modules.iost.ims.kingdeeapi.ImsConstants;
import org.jeecg.modules.iost.ims.mapper.ImsCommonSynMapper;
import org.jeecg.modules.iost.ims.service.IImsCommonSynService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author Inori
*/
@Service
public class ImsCommonSynServiceImpl extends ServiceImpl<ImsCommonSynMapper, ImsCommonSyn> implements IImsCommonSynService {
@Autowired
private ImsCommonKingdeeApi imsCommonKingdeeApi;
@Autowired
private ImsConstants imsConstants;
@Autowired
private IMSApi imsApi;
@Override
public Boolean synchronization(Object fid, Object formId) {
//查询表单
Map<String, String> temp = imsConstants.get(formId.toString());
if (CollectionUtils.isEmpty(temp)) {
new KingdeeLogUtil().synLog("通用同步失败", "formId为: " + formId + "的表单不存在");
return false;
}
//追加参数(上下文对象)
/*String kingDeeLogOZTName = temp.get("name");
Map map2 = ThreadLocalConfig.get();
map2.put("KingdeeLogOZTName", kingDeeLogOZTName);*/
List<Object> objectList = JsonUtil.toList(temp.get("detail"), Object.class);
List<Map<String, String>> fieldList = objectList.stream().map(m -> JsonUtil.toMap(JsonUtil.toString(m), String.class, String.class)).collect(Collectors.toList());
//设置需要同步的主键
Map<String, String> where = new HashMap<>(1);
where.put("FID", fid.toString());
List<Map<String, Object>> list = imsCommonKingdeeApi.selectAndLog(temp.get("formId"), fieldList, where, temp.get("name"));
//将数据包装成IMS格式
Map<String, Object> map = new HashMap<>(3);
map.put("docType", temp.get("docType"));
map.put("updateType", "UPDATE");
map.put("data", list);
String json = JsonUtil.toString(map);
String result = imsApi.add(json, temp.get("name"), temp.get("docType"));
//记录IMS日志
return new ImsLogUtil().ImsLog(json, result, temp.get("name"), temp.get("docType"), null);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论