提交 303f56ee authored 作者: inroi's avatar inroi

微调

上级 bbbb9d0b
...@@ -2,6 +2,7 @@ package com.system.api; ...@@ -2,6 +2,7 @@ package com.system.api;
import com.system.constants.Constants; import com.system.constants.Constants;
import com.system.transfer.form.MallFieldMappingListOutVoRecords; import com.system.transfer.form.MallFieldMappingListOutVoRecords;
import com.system.utils.JsonUtil;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -15,16 +16,39 @@ import java.util.Map; ...@@ -15,16 +16,39 @@ import java.util.Map;
*/ */
public class CommonApi { public class CommonApi {
public static Map<String, Object> purchaseData(Map<String, String> config, List<Map<String, Object>> dataList, List<MallFieldMappingListOutVoRecords> fieldList) { public static String encapsulationData(Map<String, String> config, String queueId, List<Map<String, Object>> dataList, List<MallFieldMappingListOutVoRecords> fieldList) {
if (Integer.parseInt(config.get(Constants.ENCAPSULATION_FORMAT)) == 1) {
return encapsulationDataOnWhole(queueId, dataList, fieldList);
} else {
return encapsulationDataOnPolymerization(queueId, config.get("entryName"), dataList, fieldList);
}
}
private static String encapsulationDataOnWhole(String queueId, List<Map<String, Object>> dataList, List<MallFieldMappingListOutVoRecords> fieldList) {
List<Map<String, Object>> request = new ArrayList<>();
for (Map<String, Object> data : dataList) {
Map<String, Object> temp = new LinkedHashMap<>();
temp.put("QUEUE_ID", queueId);
for (MallFieldMappingListOutVoRecords records : fieldList) {
encapsulationFieldData(data, temp, records);
}
request.add(temp);
}
return JsonUtil.toString(request);
}
private static String encapsulationDataOnPolymerization(String queueId, String entryName, List<Map<String, Object>> dataList, List<MallFieldMappingListOutVoRecords> fieldList) {
Map<String, Object> request = new LinkedHashMap<>(2); Map<String, Object> request = new LinkedHashMap<>(2);
List<Map<String, Object>> tempList = new ArrayList<>(); List<Map<String, Object>> tempList = new ArrayList<>();
for (Map<String, Object> data : dataList) { for (Map<String, Object> data : dataList) {
request.put("QUEUE_ID", queueId);
Map<String, Object> temp = new LinkedHashMap<>(); Map<String, Object> temp = new LinkedHashMap<>();
for (MallFieldMappingListOutVoRecords records : fieldList) { for (MallFieldMappingListOutVoRecords records : fieldList) {
if (Constants.SUCCESS_CODE.equals(records.getIsEntryField())) { if (Constants.SUCCESS_CODE.equals(records.getIsEntryField())) {
purchaseFieldData(data, temp, records); encapsulationFieldData(data, temp, records);
} else { } else {
purchaseFieldData(data, request, records); encapsulationFieldData(data, request, records);
} }
} }
if (!CollectionUtils.isEmpty(temp)) { if (!CollectionUtils.isEmpty(temp)) {
...@@ -33,12 +57,12 @@ public class CommonApi { ...@@ -33,12 +57,12 @@ public class CommonApi {
} }
if (!CollectionUtils.isEmpty(tempList)) { if (!CollectionUtils.isEmpty(tempList)) {
request.put(config.get("entryName"), tempList); request.put(entryName, tempList);
} }
return request; return JsonUtil.toString(request);
} }
private static void purchaseFieldData(Map<String, Object> temp, Map<String, Object> data, MallFieldMappingListOutVoRecords records) { private static void encapsulationFieldData(Map<String, Object> temp, Map<String, Object> data, MallFieldMappingListOutVoRecords records) {
String fieldType = records.getFieldType(); String fieldType = records.getFieldType();
String fieldBeforeMapping = records.getFieldBeforeMapping(); String fieldBeforeMapping = records.getFieldBeforeMapping();
String fieldAfterMapping = records.getFieldAfterMapping(); String fieldAfterMapping = records.getFieldAfterMapping();
......
package com.system.api;
import com.system.constants.Constants;
import com.system.transfer.form.MallFieldMappingListOutVoRecords;
import com.system.utils.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author Inori
*/
@Component
public class CommonGetApi {
@Autowired
private ThirdPartyLogUtil thirdPartyLogUtil;
public String commonGet(Map<String, String> config, Map<String, Object> data, String queueId) {
Map<String, Object> response = new HashMap<>(3);
List<MallFieldMappingListOutVoRecords> fieldList = FormFieldMappingUtil.purchaseMapping(config.get("formFieldMappingDetail"));
List<String> tempList = fieldList.stream().map(MallFieldMappingListOutVoRecords::getFieldBeforeMapping).collect(Collectors.toList());
Map<String, Object> request = new HashMap<>();
request.put("formId", config.get("docType"));
request.put("fieldKeys", String.join(",", tempList));
request.put("filterString", this.stringWhere(data));
String result = "";
try {
result = HttpUtil.httpPost(config.get("requestAddress"), JsonUtil.toString(request)).getBody();
} catch (Exception e) {
e.printStackTrace();
response.put("message", "Http请求异常");
response.put("success", false);
return JsonUtil.toString(response);
}
int flag = 0;
Map<String, Object> map = JsonUtil.toMap(result, String.class, Object.class);
if (!CollectionUtils.isEmpty(map)) {
if (Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME)))) {
List<Object> objectList = JsonUtil.toList(JsonUtil.toString(map.get("data")), Object.class);
List<Map<String, Object>> dataList = objectList.stream().map(m -> JsonUtil.toMap(JsonUtil.toString(m), String.class, Object.class)).collect(Collectors.toList());
response.put("data", CommonApi.purchaseData(config, dataList, fieldList));
response.put("success", true);
flag = 1;
}
} else if (!Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME))) && map.containsKey(Constants.ERROR_MESSAGE)) {
response.put("message", map.get(Constants.ERROR_MESSAGE));
response.put("success", false);
} else {
response.put("message", "");
response.put("success", false);
}
thirdPartyLogUtil.thirdPartyLogCreate(config.get("name"), config.get("docType"), queueId, config.get("configureDirection"), JsonUtil.toString(request), result, flag);
return JsonUtil.toString(response);
}
private String stringWhere(Map<String, Object> map) {
StringBuilder where = new StringBuilder();
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (StringUtil.isNotBlank(where)) {
where.append(" AND ").append(entry.getKey()).append("='").append(entry.getValue()).append("'");
} else {
where = new StringBuilder(entry.getKey() + "='" + entry.getValue() + "'");
}
}
if (StringUtil.isNotBlank(where.toString())) {
return where.toString();
}
return "";
}
public String commonSync(String responseAddress, Map<String, String> config, String queueId, String json) {
try {
String result = HttpUtil.httpPost(responseAddress, json).getBody();
thirdPartyLogUtil.thirdPartyLogCreate(config.get("name"), config.get("docType"), queueId, config.get("configureDirection"), json, result);
return result;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
}
package com.system.api;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.system.constants.MallConstants;
import com.system.dao.InitConnectParamMapper;
import com.system.exception.MallCommonException;
import com.system.model.DelayedElement;
import com.system.model.InitConnectParam;
import com.system.utils.HttpUtil;
import com.system.utils.JsonUtil;
import com.system.utils.MallLogUtil;
import com.system.utils.StringUtil;
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.*;
/**
* @author Inori
*/
@Component
public class CommonHttpApi {
private ExecutorService threadPool = new ThreadPoolExecutor(10, 10,
0L,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024),
new ThreadFactoryBuilder().setNameFormat("http-pool-%d").build(),
new ThreadPoolExecutor.AbortPolicy());
private static final String LOGIN_MESSAGE = "商城服务器连接异常";
public InitConnectParam initConnectParam;
public String mallAddress;
public boolean flag = false;
@Autowired
private InitConnectParamMapper initConnectParamMapper;
@Autowired
private MallLogUtil mallLogUtil;
@PostConstruct
public void init() {
initConnectParam = initConnectParamMapper.selectOne(new QueryWrapper<InitConnectParam>().last("LIMIT 1"));
System.out.println("++++++" + initConnectParam);
if (StringUtil.isNotNull(initConnectParam)) {
mallAddress = initConnectParam.getMallAddress();
}
}
public InitConnectParam getInitConnectParam() {
return initConnectParam;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
private String stringKey(Map<String, String> map) {
StringBuilder keys = new StringBuilder();
for (Map.Entry<String, String> entry : map.entrySet()) {
if (StringUtil.isNotBlank(keys)) {
keys.append(", ").append(entry.getKey());
} else {
keys = new StringBuilder(entry.getKey());
}
}
if (StringUtil.isNotBlank(keys.toString())) {
return keys.toString();
}
return "";
}
private String stringWhere(Map<String, Object> map) {
StringBuilder where = new StringBuilder();
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (StringUtil.isNotBlank(where)) {
where.append(" AND ").append(entry.getKey()).append("='").append(entry.getValue()).append("'");
} else {
where = new StringBuilder(entry.getKey() + "='" + entry.getValue() + "'");
}
}
if (StringUtil.isNotBlank(where.toString())) {
return where.toString();
}
return "";
}
public String commonHttpSync() {
try {
return HttpUtil.httpPost("http://192.168.0.9:8089/wx/" + "api/dataSyn/getSyn", "").getBody();
} catch (Exception e) {
e.printStackTrace();
throw new MallCommonException(LOGIN_MESSAGE);
}
}
public String commonHttpPostByUpdate(String data) {
try {
return HttpUtil.httpPost("http://192.168.0.9:8089/wx/" + "api/dataSyn/success", data).getBody();
} catch (Exception e) {
e.printStackTrace();
throw new MallCommonException(LOGIN_MESSAGE);
}
}
public String commonHttpGet(Map<String, String> config, String queueId, String name, List<String> keyList, Map<String, Object> where) {
Map<String, Object> request = new HashMap<>(3);
request.put("formId", config.get("sFormId"));
request.put("fieldKeys", String.join(",", keyList));
request.put("filterString", this.stringWhere(where));
String response;
try {
response = HttpUtil.httpPost("", JsonUtil.toString(request)).getBody();
mallLogUtil.mallLogCreate(name, config.get("docType"), queueId, Integer.valueOf(config.get("operation")), JsonUtil.toString(request), response);
} catch (Exception e) {
e.printStackTrace();
throw new MallCommonException(LOGIN_MESSAGE);
}
return response;
}
public String sendThirdParty(String receiveAddress, String data, int index) {
try {
return HttpUtil.httpPost(receiveAddress, data).getBody();
} catch (Exception e) {
e.printStackTrace();
if (index != 0) {
this.sendThirdParty(receiveAddress, data, index - 1);
} else {
//TODO 关闭同步
//HttpUtil.httpGet("http://integrate-system:8090/integrate/api/turn/off/synchronization");
DelayQueue<DelayedElement> delayQueue = new DelayQueue<>();
threadPool.execute(() -> {
//take方法将阻塞线程
delayQueue.add(new DelayedElement(60));
try {
delayQueue.take();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
//TODO 开启同步
HttpUtil.httpGet("http://integrate-system:8090/integrate/api/start/synchronization");
});
}
Map<String, Object> map = new HashMap<>(2);
map.put("resultCode", MallConstants.OVERTIME_CODE);
map.put("resultMsg", "第三方请求超时");
return JsonUtil.toString(map);
}
}
}
...@@ -2,10 +2,7 @@ package com.system.api; ...@@ -2,10 +2,7 @@ package com.system.api;
import com.system.constants.Constants; import com.system.constants.Constants;
import com.system.transfer.form.MallFieldMappingListOutVoRecords; import com.system.transfer.form.MallFieldMappingListOutVoRecords;
import com.system.utils.FormFieldMappingUtil; import com.system.utils.*;
import com.system.utils.HttpUtil;
import com.system.utils.JsonUtil;
import com.system.utils.ThirdPartyLogUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -21,40 +18,38 @@ import java.util.Map; ...@@ -21,40 +18,38 @@ import java.util.Map;
public class CommonPostApi { public class CommonPostApi {
@Autowired @Autowired
private ThirdPartyLogUtil thirdPartyLogUtil; private MallLogUtil mallLogUtil;
public String commonPost(Map<String, String> config, List<Map<String, Object>> dataList, String queueId) { public String commonPost(Map<String, String> config, String queueId, List<Map<String, Object>> dataList) {
int flag = 0; Map<String, Object> result = new HashMap<>(3);
Map<String, Object> response = new HashMap<>(3);
try { try {
List<MallFieldMappingListOutVoRecords> fieldList = FormFieldMappingUtil.purchaseMapping(config.get("formFieldMappingDetail")); List<MallFieldMappingListOutVoRecords> fieldList = FormFieldMappingUtil.encapsulationMapping(config.get("formFieldMappingDetail"));
Map<String, Object> data = CommonApi.purchaseData(config, dataList, fieldList);
Map<String, Object> request = new HashMap<>(); Map<String, Object> request = new HashMap<>();
request.put("formId", config.get("docType")); request.put("formId", config.get("docType"));
request.put("model", data); request.put("model", CommonApi.encapsulationData(config, queueId, dataList, fieldList));
String result = HttpUtil.httpPost(config.get("requestAddress"), JsonUtil.toString(request)).getBody();
Map<String, Object> map = JsonUtil.toMap(result, String.class, Object.class); String response = HttpUtil.httpPost(config.get("requestAddress"), JsonUtil.toString(request)).getBody();
Map<String, Object> map = JsonUtil.toMap(response, String.class, Object.class);
if (!CollectionUtils.isEmpty(map)) { if (!CollectionUtils.isEmpty(map)) {
if (Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME)))) { if (Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME)))) {
flag = 1; result.put("success", true);
response.put("success", true);
} }
} else if (!Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME))) && map.containsKey(Constants.ERROR_MESSAGE)) { } else if (!Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME))) && map.containsKey(Constants.ERROR_MESSAGE)) {
response.put("success", false); result.put("success", false);
response.put("message", map.get(Constants.ERROR_MESSAGE)); result.put("message", map.get(Constants.ERROR_MESSAGE));
} else { } else {
response.put("message", ""); result.put("message", "");
response.put("success", false); result.put("success", false);
} }
thirdPartyLogUtil.thirdPartyLogCreate(config.get("name"), config.get("docType"), queueId, config.get("configureDirection"), JsonUtil.toString(request), result, flag); mallLogUtil.mallLogCreate(config.get("name"), config.get("docType"), queueId, Integer.valueOf(config.get("operation")), JsonUtil.toString(request), response);
return JsonUtil.toString(response); return JsonUtil.toString(result);
} catch (Exception e) { } catch (Exception e) {
response.put("message", e.getMessage()); result.put("message", e.getMessage());
response.put("success", false); result.put("success", false);
return JsonUtil.toString(response); return JsonUtil.toString(result);
} }
} }
......
...@@ -8,13 +8,7 @@ public interface Constants { ...@@ -8,13 +8,7 @@ public interface Constants {
String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
String FILE_FORMAT = "lic.tmp"; String ENCAPSULATION_FORMAT = "encapsulationFormat";
String EFFECTIVE_TIME = "effectiveTime";
String VERIFICATION_INTERVAL = "verificationInterval";
Integer ROOT_MENU_CODE = -1; Integer ROOT_MENU_CODE = -1;
...@@ -26,6 +20,9 @@ public interface Constants { ...@@ -26,6 +20,9 @@ public interface Constants {
String SUCCESS_NAME = "success"; String SUCCESS_NAME = "success";
String DATE_NAME = "data";
String ERROR_MESSAGE = "message"; String ERROR_MESSAGE = "message";
......
...@@ -3,6 +3,7 @@ package com.system.constants; ...@@ -3,6 +3,7 @@ package com.system.constants;
import com.system.dao.MallCommonConfigMapper; import com.system.dao.MallCommonConfigMapper;
import com.system.transfer.form.MallCommonConfigListOutVoRecords; import com.system.transfer.form.MallCommonConfigListOutVoRecords;
import com.system.utils.JsonUtil; import com.system.utils.JsonUtil;
import com.system.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -13,6 +14,7 @@ import java.util.List; ...@@ -13,6 +14,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @author Inori * @author Inori
...@@ -34,7 +36,7 @@ public class MallCommonGetConstants { ...@@ -34,7 +36,7 @@ public class MallCommonGetConstants {
List<Map<String, Object>> fieldMappingList = mallCommonConfigMapper.mallFieldMappingList(idList); List<Map<String, Object>> fieldMappingList = mallCommonConfigMapper.mallFieldMappingList(idList);
for (MallCommonConfigListOutVoRecords records : recordsList) { for (MallCommonConfigListOutVoRecords records : recordsList) {
List<Map<String, Object>> tempList = fieldMappingList.stream().filter(m -> records.getId().equals(m.get("id"))).collect(Collectors.toList()); List<Map<String, Object>> tempList = fieldMappingList.stream().filter(m -> records.getId().equals(m.get("id"))).collect(Collectors.toList());
this.map.put(records.getDocType(), this.purchaseCustomFormConfig(records, tempList)); this.map.put(records.getDocType(), this.encapsulationMallFieldConfig(records, tempList));
} }
} }
} }
...@@ -46,20 +48,32 @@ public class MallCommonGetConstants { ...@@ -46,20 +48,32 @@ public class MallCommonGetConstants {
return this.map.get(docType); return this.map.get(docType);
} }
public void refresh(Integer id, String docType) {
this.map.remove(docType);
MallCommonConfigListOutVoRecords records = mallCommonConfigMapper.getMallCommonConfigById(id);
if (StringUtil.isNotNull(records)) {
List<Map<String, Object>> tempList = mallCommonConfigMapper.mallFieldMappingList(Stream.of(records.getId()).collect(Collectors.toList()));
this.map.put(records.getSFormId(), this.encapsulationMallFieldConfig(records, tempList));
}
}
/** /**
* 封装自定义表单配置 * 封装自定义表单配置
*/ */
private Map<String, String> purchaseCustomFormConfig(MallCommonConfigListOutVoRecords records, List<Map<String, Object>> tempList) { private Map<String, String> encapsulationMallFieldConfig(MallCommonConfigListOutVoRecords records, List<Map<String, Object>> tempList) {
Map<String, String> result = new HashMap<>(10); Map<String, String> temp = new HashMap<>(10);
result.put("docType", records.getDocType()); temp.put("productId", records.getPlatformProductRelationId().toString());
result.put("sFormId", records.getSFormId()); temp.put("docType", records.getDocType());
result.put("name", records.getName()); temp.put("sFormId", records.getSFormId());
result.put("operation", String.valueOf(records.getOperation())); temp.put("name", records.getName());
result.put("requestAddress", records.getRequestAddress()); temp.put("direction", records.getDirection());
result.put("entryName", records.getEntryName()); temp.put("operation", String.valueOf(records.getOperation()));
result.put("customSql", records.getCustomSql()); temp.put("encapsulationFormat", String.valueOf(records.getEncapsulationFormat()));
result.put("formFieldMappingDetail", JsonUtil.toString(tempList)); temp.put("entryName", records.getEntryName());
return result; temp.put("customSql", records.getCustomSql());
temp.put("formFieldMappingDetail", JsonUtil.toString(tempList));
return temp;
} }
......
...@@ -3,6 +3,7 @@ package com.system.constants; ...@@ -3,6 +3,7 @@ package com.system.constants;
import com.system.dao.MallCommonConfigMapper; import com.system.dao.MallCommonConfigMapper;
import com.system.transfer.form.MallCommonConfigListOutVoRecords; import com.system.transfer.form.MallCommonConfigListOutVoRecords;
import com.system.utils.JsonUtil; import com.system.utils.JsonUtil;
import com.system.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -13,6 +14,7 @@ import java.util.List; ...@@ -13,6 +14,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @author Inori * @author Inori
...@@ -34,7 +36,7 @@ public class MallCommonPostConstants { ...@@ -34,7 +36,7 @@ public class MallCommonPostConstants {
List<Map<String, Object>> fieldMappingList = mallCommonConfigMapper.mallFieldMappingList(idList); List<Map<String, Object>> fieldMappingList = mallCommonConfigMapper.mallFieldMappingList(idList);
for (MallCommonConfigListOutVoRecords records : recordsList) { for (MallCommonConfigListOutVoRecords records : recordsList) {
List<Map<String, Object>> tempList = fieldMappingList.stream().filter(m -> records.getId().equals(m.get("id"))).collect(Collectors.toList()); List<Map<String, Object>> tempList = fieldMappingList.stream().filter(m -> records.getId().equals(m.get("id"))).collect(Collectors.toList());
this.map.put(records.getDocType(), this.purchaseCustomFormConfig(records, tempList)); this.map.put(records.getDocType(), this.encapsulationMallFieldConfig(records, tempList));
} }
} }
} }
...@@ -46,20 +48,32 @@ public class MallCommonPostConstants { ...@@ -46,20 +48,32 @@ public class MallCommonPostConstants {
return this.map.get(docType); return this.map.get(docType);
} }
public void refresh(Integer id, String docType) {
this.map.remove(docType);
MallCommonConfigListOutVoRecords records = mallCommonConfigMapper.getMallCommonConfigById(id);
if (StringUtil.isNotNull(records)) {
List<Map<String, Object>> tempList = mallCommonConfigMapper.mallFieldMappingList(Stream.of(records.getId()).collect(Collectors.toList()));
this.map.put(records.getSFormId(), this.encapsulationMallFieldConfig(records, tempList));
}
}
/** /**
* 封装自定义表单配置 * 封装自定义表单配置
*/ */
private Map<String, String> purchaseCustomFormConfig(MallCommonConfigListOutVoRecords records, List<Map<String, Object>> tempList) { private Map<String, String> encapsulationMallFieldConfig(MallCommonConfigListOutVoRecords records, List<Map<String, Object>> tempList) {
Map<String, String> result = new HashMap<>(10); Map<String, String> temp = new HashMap<>(10);
result.put("docType", records.getDocType()); temp.put("productId", records.getPlatformProductRelationId().toString());
result.put("sFormId", records.getSFormId()); temp.put("docType", records.getDocType());
result.put("name", records.getName()); temp.put("sFormId", records.getSFormId());
result.put("operation", String.valueOf(records.getOperation())); temp.put("name", records.getName());
result.put("requestAddress", records.getRequestAddress()); temp.put("direction", records.getDirection());
result.put("entryName", records.getEntryName()); temp.put("operation", String.valueOf(records.getOperation()));
result.put("customSql", records.getCustomSql()); temp.put("encapsulationFormat", String.valueOf(records.getEncapsulationFormat()));
result.put("formFieldMappingDetail", JsonUtil.toString(tempList)); temp.put("entryName", records.getEntryName());
return result; temp.put("customSql", records.getCustomSql());
temp.put("formFieldMappingDetail", JsonUtil.toString(tempList));
return temp;
} }
......
...@@ -8,11 +8,13 @@ import org.springframework.stereotype.Component; ...@@ -8,11 +8,13 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @author Inori * @author Inori
...@@ -20,7 +22,7 @@ import java.util.stream.Collectors; ...@@ -20,7 +22,7 @@ import java.util.stream.Collectors;
@Component @Component
public class MallCommonSyncConstants { public class MallCommonSyncConstants {
private Map<String, Map<String, String>> map = new ConcurrentHashMap<>(); private Map<Integer, Map<String, Map<String, String>>> map = new ConcurrentHashMap<>();
@Autowired @Autowired
private MallCommonConfigMapper mallCommonConfigMapper; private MallCommonConfigMapper mallCommonConfigMapper;
...@@ -32,34 +34,61 @@ public class MallCommonSyncConstants { ...@@ -32,34 +34,61 @@ public class MallCommonSyncConstants {
if (!CollectionUtils.isEmpty(recordsList)) { if (!CollectionUtils.isEmpty(recordsList)) {
List<Integer> idList = recordsList.stream().map(MallCommonConfigListOutVoRecords::getId).collect(Collectors.toList()); List<Integer> idList = recordsList.stream().map(MallCommonConfigListOutVoRecords::getId).collect(Collectors.toList());
List<Map<String, Object>> fieldMappingList = mallCommonConfigMapper.mallFieldMappingList(idList); List<Map<String, Object>> fieldMappingList = mallCommonConfigMapper.mallFieldMappingList(idList);
for (MallCommonConfigListOutVoRecords records : recordsList) {
List<Map<String, Object>> tempList = fieldMappingList.stream().filter(m -> records.getId().equals(m.get("id"))).collect(Collectors.toList()); List<Integer> keyList = recordsList.stream().map(MallCommonConfigListOutVoRecords::getPlatformProductRelationId).distinct().collect(Collectors.toList());
this.map.put(records.getSFormId(), this.purchaseCustomFormConfig(records, tempList)); for (Integer key : keyList) {
this.map.put(key, new ConcurrentHashMap<>(5));
Map<String, Map<String, String>> config = this.map.get(key);
List<MallCommonConfigListOutVoRecords> temp01List = recordsList.stream().filter(m -> key.equals(m.getPlatformProductRelationId())).collect(Collectors.toList());
for (MallCommonConfigListOutVoRecords records : temp01List) {
List<Map<String, Object>> temp02List = fieldMappingList.stream().filter(m -> records.getId().equals(m.get("id"))).collect(Collectors.toList());
config.put(records.getSFormId(), this.encapsulationMallFieldConfig(records, temp02List));
}
}
}
}
public List<Map<String, String>> get(String sFormId) {
List<Map<String, String>> configList = new ArrayList<>();
for (Map.Entry<Integer, Map<String, Map<String, String>>> entry : this.map.entrySet()) {
Map<String, Map<String, String>> temp = entry.getValue();
Map<String, String> result = temp.get(sFormId);
if (!CollectionUtils.isEmpty(result)) {
configList.add(result);
} }
} }
return configList;
} }
public Map<String, String> get(String sFormId) { public void refresh(Integer id, String sFormId) {
if (CollectionUtils.isEmpty(this.map)) { MallCommonConfigListOutVoRecords records = mallCommonConfigMapper.getMallCommonConfigById(id);
return new HashMap<>(1);
Map<String, Map<String, String>> temp = this.map.get(records.getPlatformProductRelationId());
if (!CollectionUtils.isEmpty(temp)) {
temp.remove(sFormId);
List<Map<String, Object>> tempList = mallCommonConfigMapper.mallFieldMappingList(Stream.of(records.getId()).collect(Collectors.toList()));
temp.put(records.getSFormId(), this.encapsulationMallFieldConfig(records, tempList));
} }
return this.map.get(sFormId);
} }
/** /**
* 封装自定义表单配置 * 封装自定义表单配置
*/ */
private Map<String, String> purchaseCustomFormConfig(MallCommonConfigListOutVoRecords records, List<Map<String, Object>> tempList) { private Map<String, String> encapsulationMallFieldConfig(MallCommonConfigListOutVoRecords records, List<Map<String, Object>> tempList) {
Map<String, String> result = new HashMap<>(10); Map<String, String> temp = new HashMap<>(10);
result.put("docType", records.getDocType()); temp.put("productId", records.getPlatformProductRelationId().toString());
result.put("sFormId", records.getSFormId()); temp.put("docType", records.getDocType());
result.put("name", records.getName()); temp.put("sFormId", records.getSFormId());
result.put("operation", String.valueOf(records.getOperation())); temp.put("name", records.getName());
result.put("requestAddress", records.getRequestAddress()); temp.put("direction", records.getDirection());
result.put("entryName", records.getEntryName()); temp.put("operation", String.valueOf(records.getOperation()));
result.put("customSql", records.getCustomSql()); temp.put("encapsulationFormat", String.valueOf(records.getEncapsulationFormat()));
result.put("formFieldMappingDetail", JsonUtil.toString(tempList)); temp.put("entryName", records.getEntryName());
return result; temp.put("customSql", records.getCustomSql());
temp.put("formFieldMappingDetail", JsonUtil.toString(tempList));
return temp;
} }
......
package com.system.constants;
/**
* @author Inori
*/
public interface MallConstants {
String CODE_NAME = "resultCode";
String DATA_NAME = "resultData";
String MSG_NAME = "resultMsg";
String SUCCESS_CODE = "0000";
String ERROR_CODE = "0002";
String OVERTIME_CODE = "0101";
String NOT_LOGGED_IN_CODE = "0010";
String DATA = "data";
}
package com.system.constants;
import com.system.dao.SynchronizationOperationMapper;
import com.system.transfer.synchronization.SynchronizationOperationListOutVoRecords;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* @author Inori
*/
@Component
public class SynchronizationOperationConstants {
private Map<Integer, Map<String, Map<String, String>>> map = new ConcurrentHashMap<>();
@Autowired
private SynchronizationOperationMapper synchronizationOperationMapper;
@PostConstruct
public void init() {
List<SynchronizationOperationListOutVoRecords> recordsList = synchronizationOperationMapper.synchronizationOperationList();
if (!CollectionUtils.isEmpty(recordsList)) {
List<Integer> keyList = recordsList.stream().map(SynchronizationOperationListOutVoRecords::getPlatformProductRelationId).distinct().collect(Collectors.toList());
for (Integer key : keyList) {
this.map.put(key, new ConcurrentHashMap<>(5));
Map<String, Map<String, String>> config = this.map.get(key);
List<SynchronizationOperationListOutVoRecords> tempList = recordsList.stream().filter(m -> key.equals(m.getPlatformProductRelationId())).collect(Collectors.toList());
for (SynchronizationOperationListOutVoRecords records : tempList) {
config.put(records.getSFormId(), this.encapsulationSynchronizationOperation(records));
}
}
}
}
public Map<String, String> get(Integer platformProductRelationId, String sFormId) {
Map<String, Map<String, String>> config = this.map.get(platformProductRelationId);
if (CollectionUtils.isEmpty(config)) {
return new HashMap<>(1);
}
return config.get(sFormId);
}
public void refresh(Integer id, String sFormId) {
SynchronizationOperationListOutVoRecords records = synchronizationOperationMapper.getSynchronizationOperationById(id);
Map<String, Map<String, String>> temp = this.map.get(records.getPlatformProductRelationId());
if (!CollectionUtils.isEmpty(temp)) {
temp.remove(sFormId);
temp.put(records.getSFormId(), this.encapsulationSynchronizationOperation(records));
}
}
private Map<String, String> encapsulationSynchronizationOperation(SynchronizationOperationListOutVoRecords records) {
Map<String, String> temp = new HashMap<>(6);
temp.put("productId", records.getPlatformProductRelationId().toString());
temp.put("jobClassName", records.getJobClassName());
temp.put("sFormId", records.getSFormId());
temp.put("docType", records.getDocType());
temp.put("receiveAddress", records.getReceiveAddress());
return temp;
}
}
package com.system.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.system.model.InitConnectParam;
/**
* @author Inori
*/
public interface InitConnectParamMapper extends BaseMapper<InitConnectParam> {
}
...@@ -26,6 +26,14 @@ public interface MallCommonConfigMapper { ...@@ -26,6 +26,14 @@ public interface MallCommonConfigMapper {
List<MallCommonConfigListOutVoRecords> mallCommonConfigGetList(); List<MallCommonConfigListOutVoRecords> mallCommonConfigGetList();
/** /**
* 商城通用配置
*
* @param id ID
* @return 商城通用配置
*/
MallCommonConfigListOutVoRecords getMallCommonConfigById(Integer id);
/**
* 商城通用配置字段映射列表 * 商城通用配置字段映射列表
* *
* @param idList id列表 * @param idList id列表
......
package com.system.dao;
import com.system.transfer.log.ProductLogCreateInVo;
/**
* @author Inori
*/
public interface ProductLogMapper {
/**
* 根据唯一标识查询是否存在
*
* @param queueId 唯一标识
* @return 是否存在
*/
Integer getProductLogByQueueId(String queueId);
/**
* 产品日志创建
*
* @param inVo 条件
*/
void productLogCreate(ProductLogCreateInVo inVo);
/**
* 产品日志更
*
* @param inVo 条件
*/
void productLogUpdate(ProductLogCreateInVo inVo);
}
package com.system.dao;
import com.system.transfer.synchronization.SynchronizationOperationListOutVoRecords;
import java.util.List;
/**
* @author Inori
*/
public interface SynchronizationOperationMapper {
/**
* 金蝶定时任务同步操作列表
*
* @return 列表
*/
List<SynchronizationOperationListOutVoRecords> synchronizationOperationList();
/**
* 金蝶定时任务同步操作
*
* @param id ID
* @return 同步操作
*/
SynchronizationOperationListOutVoRecords getSynchronizationOperationById(Integer id);
}
package com.system.dao; package com.system.dao;
import com.system.transfer.synchronization.SynchronizationRecordsDeleteInVo; import com.system.transfer.mall.SynchronizationRecordsDeleteInVo;
import com.system.transfer.synchronization.SynchronizationRecordsListOutVoRecords; import com.system.transfer.mall.SynchronizationRecordsListOutVoRecords;
import com.system.transfer.synchronization.SynchronizationRecordsUpdateInVo; import com.system.transfer.mall.SynchronizationRecordsUpdateInVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
......
<?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="com.system.dao.InitConnectParamMapper">
</mapper>
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<select id="mallCommonConfigList" parameterType="java.lang.Integer" resultType="com.system.transfer.form.MallCommonConfigListOutVoRecords"> <select id="mallCommonConfigList" parameterType="java.lang.Integer" resultType="com.system.transfer.form.MallCommonConfigListOutVoRecords">
SELECT SELECT
id, doc_type, s_form_id, name, operation, request_address, entry_name, custom_sql, create_time id, platform_product_relation_id, doc_type, s_form_id, `name`,direction, operation, entry_name, custom_sql, create_time
FROM tb_mall_common_config WHERE operation = #{operation} FROM tb_mall_common_config WHERE operation = #{operation}
</select> </select>
...@@ -17,17 +17,27 @@ ...@@ -17,17 +17,27 @@
<select id="mallCommonConfigGetList" resultType="com.system.transfer.form.MallCommonConfigListOutVoRecords"> <select id="mallCommonConfigGetList" resultType="com.system.transfer.form.MallCommonConfigListOutVoRecords">
SELECT SELECT
m1.id, m1.doc_type, m1.s_form_id, m1.name, m1.operation, m1.request_address, m1.entry_name, m1.custom_sql, m1.create_time m1.id, m1.platform_product_relation_id, m1.doc_type, m1.s_form_id, m1.name, m1.direction, m1.operation, m1.entry_name, m1.custom_sql, m1.create_time
FROM tb_mall_common_config AS m1 INNER JOIN ( FROM tb_mall_common_config AS m1 INNER JOIN (
SELECT SELECT
s_form_id, MIN(operation) AS operation platform_product_relation_id, s_form_id, MIN(operation) AS operation
FROM tb_mall_common_config WHERE operation IN (1, 3) GROUP BY s_form_id FROM tb_mall_common_config WHERE operation IN (1, 3) GROUP BY platform_product_relation_id, s_form_id
) AS m2 ON m1.s_form_id = m2.s_form_id AND m1.operation = m2.operation ) AS m2 ON m1.s_form_id = m2.s_form_id AND m1.operation = m2.operation
</select> </select>
<select id="getMallCommonConfigById" parameterType="java.lang.Integer" resultType="com.system.transfer.form.MallCommonConfigListOutVoRecords">
SELECT
id, platform_product_relation_id, doc_type, s_form_id, `name`,direction, operation, entry_name, custom_sql, create_time
FROM tb_mall_common_config WHERE id = #{id}
</select>
<select id="mallFieldMappingList" parameterType="java.util.List" resultType="java.util.Map"> <select id="mallFieldMappingList" parameterType="java.util.List" resultType="java.util.Map">
SELECT SELECT
......
<?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="com.system.dao.ProductLogMapper">
<select id="getProductLogByQueueId" parameterType="java.lang.String" resultType="java.lang.Integer">
SELECT COUNT(*) FROM tb_product_log WHERE queue_id = #{queueId} LIMIT 1
</select>
<insert id="productLogCreate" parameterType="com.system.transfer.log.ProductLogCreateInVo" useGeneratedKeys="true" keyProperty="id">
INSERT INTO tb_product_log (
platform_product_relation_id, queue_id, `name`, code, direction, request, flag, response, message, cost_time
) VALUES (
#{platformProductRelationId}, #{queueId}, #{name}, #{code}, #{direction}, #{request}, #{flag}, #{response}, #{message}, #{costTime}
)
</insert>
<update id="productLogUpdate" parameterType="com.system.transfer.log.ProductLogCreateInVo">
UPDATE tb_product_log SET
flag = #{flag}, response = #{response}, message = #{message}, cost_time = #{costTime}
WHERE id = #{id}
</update>
</mapper>
<?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="com.system.dao.SynchronizationOperationMapper">
<select id="synchronizationOperationList" resultType="com.system.transfer.synchronization.SynchronizationOperationListOutVoRecords">
SELECT
s.id, s.platform_product_relation_id, s.job_class_name, s.common_config_id,
k.doc_type, k.s_form_id, s.receive_address, s.create_time
FROM tb_synchronization_operation AS s
LEFT JOIN tb_kingdee_common_config AS k ON s.common_config_id = k.id
WHERE job_class_name = "com.system.quartz.job.mallSynchronizationJob"
</select>
<select id="getSynchronizationOperationById" parameterType="java.lang.Integer" resultType="com.system.transfer.synchronization.SynchronizationOperationListOutVoRecords">
SELECT
s.id, s.platform_product_relation_id, s.job_class_name, s.common_config_id,
k.doc_type, k.s_form_id, s.receive_address, s.create_time
FROM tb_synchronization_operation AS s
LEFT JOIN tb_kingdee_common_config AS k ON s.common_config_id = k.id
WHERE s.id = #{id}
</select>
</mapper>
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<select id="synchronizationRecordsListByStatus" parameterType="java.lang.Integer" resultType="com.system.transfer.synchronization.SynchronizationRecordsListOutVoRecords"> <select id="synchronizationRecordsListByStatus" parameterType="java.lang.Integer" resultType="com.system.transfer.mall.SynchronizationRecordsListOutVoRecords">
SELECT SELECT
id, fid, data_id, entry_id, form, operation id, fid, data_id, entry_id, form, operation
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
<update id="synchronizationRecordsUpdate" parameterType="com.system.transfer.synchronization.SynchronizationRecordsUpdateInVo"> <update id="synchronizationRecordsUpdate" parameterType="com.system.transfer.mall.SynchronizationRecordsUpdateInVo">
UPDATE tb_mall_synchronization_record SET queue_id = #{queueId}, message = #{message}, status = #{status} WHERE id = #{id} LIMIT 1 UPDATE tb_mall_synchronization_record SET queue_id = #{queueId}, message = #{message}, status = #{status} WHERE id = #{id} LIMIT 1
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
<delete id="synchronizationRecordsDelete" parameterType="com.system.transfer.synchronization.SynchronizationRecordsDeleteInVo"> <delete id="synchronizationRecordsDelete" parameterType="com.system.transfer.mall.SynchronizationRecordsDeleteInVo">
DELETE FROM tb_mall_synchronization_record WHERE id = #{id} DELETE FROM tb_mall_synchronization_record WHERE id = #{id}
......
package com.system.exception;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 金蝶云连接异常
*
* @author Inori
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class MallCommonException extends RuntimeException {
private String result;
public MallCommonException(String message) {
super(message);
this.result = message;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
}
package com.system.mall;
import com.system.api.CommonHttpApi;
import com.system.utils.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author Inori
*/
@Component
public class MallCommonApi {
@Autowired
private CommonHttpApi commonHttpApi;
public List<Map<String, Object>> getSynchronizationRecords() {
try {
String response = commonHttpApi.commonHttpSync();
List<Object> objectList = JsonUtil.toList(response, Object.class);
if (!CollectionUtils.isEmpty(objectList)) {
return objectList.stream().map(m -> JsonUtil.toMap(JsonUtil.toString(m), String.class, Object.class)).collect(Collectors.toList());
}
return new ArrayList<>();
} catch (Exception e) {
e.printStackTrace();
return new ArrayList<>();
}
}
public void mallSynchronizedRecordsUpdate(List<Map<String, Object>> tempList) {
List<String> idList = tempList.stream().filter(m -> !"LQKJ_IMSSync".equals(m.get("formId"))).map(m -> String.valueOf(m.get("fid"))).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(idList)) {
//修改商城是否同步
Map<String, Object> map = new HashMap<>();
map.put("ids", idList);
String response = commonHttpApi.commonHttpPostByUpdate(JsonUtil.toString(map));
System.out.println("更新订单状态: " + response);
}
}
}
package com.system.mall;
import com.system.api.CommonApi;
import com.system.api.CommonHttpApi;
import com.system.constants.Constants;
import com.system.transfer.form.MallFieldMappingListOutVoRecords;
import com.system.utils.FormFieldMappingUtil;
import com.system.utils.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author Inori
*/
@Component
public class MallCommonSyncApi {
@Autowired
private CommonHttpApi commonHttpApi;
public Map<String, Object> synchronization(Map<String, String> config, String queueId, String name, Map<String, Object> where) {
Map<String, Object> result = new HashMap<>(3);
List<MallFieldMappingListOutVoRecords> fieldList = FormFieldMappingUtil.encapsulationMapping(config.get("formFieldMappingDetail"));
List<String> keyList = fieldList.stream().map(MallFieldMappingListOutVoRecords::getFieldBeforeMapping).collect(Collectors.toList());
String response = commonHttpApi.commonHttpGet(config, queueId, name, keyList, where);
Map<String, Object> map = JsonUtil.toMap(response, String.class, Object.class);
if (!CollectionUtils.isEmpty(map)) {
if (Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME)))) {
List<Object> objectList = JsonUtil.toList(JsonUtil.toString(map.get("data")), Object.class);
List<Map<String, Object>> dataList = objectList.stream().map(m -> JsonUtil.toMap(JsonUtil.toString(m), String.class, Object.class)).collect(Collectors.toList());
result.put("data", CommonApi.encapsulationData(config, queueId, dataList, fieldList));
result.put("success", true);
}
} else if (!Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME))) && map.containsKey(Constants.ERROR_MESSAGE)) {
result.put("message", map.get(Constants.ERROR_MESSAGE));
result.put("success", false);
} else {
result.put("message", "");
result.put("success", false);
}
return result;
}
/**
* 同步至第三方
*/
public String sendThirdParty(String receiveAddress, String data) {
return commonHttpApi.sendThirdParty(receiveAddress, data, 3);
}
}
package com.system.model;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;
/**
* @author Inori
*/
public class DelayedElement implements Delayed {
private long mills;
public DelayedElement(Integer min) {
this.mills = System.currentTimeMillis() / 1000 + (60 * min);
}
/**
* 当方法返回小于或等于0的数值时, 元素将会被消耗
*/
@Override
public long getDelay(TimeUnit unit) {
return mills - (System.currentTimeMillis() / 1000);
}
/**
* DelayQueue底层是优先队列,需要实现compareTo方法,
* 用于在入列的时候与容器中的数据进行比较,以便确定元素位置。
*/
@Override
public int compareTo(Delayed o) {
return (int) (mills - ((DelayedElement) o).getMills());
}
public long getMills() {
return mills;
}
public void setMills(long mills) {
this.mills = mills;
}
}
package com.system.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
/**
* 金蝶配置表
*
* @author Inori
*/
@TableName("tb_mall_init_connect_param")
public class InitConnectParam {
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 金蝶地址
*/
private String mallAddress;
/**
* 用户名
*/
private String account;
/**
* 密码
*/
private String password;
/**
* 定时任务时长/分钟
*/
private Integer duration;
/**
* 创建时间
*/
private String createTime;
/**
* 更新时间
*/
private String updateTime;
public InitConnectParam() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMallAddress() {
return mallAddress;
}
public void setMallAddress(String mallAddress) {
this.mallAddress = mallAddress;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getDuration() {
return duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
}
package com.system.scheduler;
import com.system.api.CommonHttpApi;
import com.system.model.InitConnectParam;
import com.system.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
/**
* @author Inori
*/
@Configuration
@EnableScheduling
public class MallLoginScheduler {
private static final Logger log = LoggerFactory.getLogger(MallLoginScheduler.class);
@Autowired
private CommonHttpApi commonHttpApi;
@Scheduled(fixedRate = 1000 * 60 * 15)
public void configureTasks() {
InitConnectParam initConnectParam = commonHttpApi.getInitConnectParam();
if (StringUtil.isNotNull(initConnectParam)) {
Boolean flag;
try {
flag = true;
} catch (Exception e) {
flag = false;
log.info("商城登录失败!");
}
if (flag) {
log.info("商城登录成功!");
} else {
log.info("商城登录失败!");
}
commonHttpApi.setFlag(flag);
} else {
commonHttpApi.setFlag(false);
}
}
}
package com.system.scheduler;
import com.system.serivce.impl.DockingDistributionServiceImpl;
import com.system.utils.HttpUtil;
import com.system.utils.JsonUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import java.util.Map;
/**
* @author Inori
*/
@Configuration
@EnableScheduling
public class SecretScheduler {
private static final Logger log = LoggerFactory.getLogger(SecretScheduler.class);
@Autowired
private DockingDistributionServiceImpl dockingDistributionServiceImpl;
@Scheduled(fixedRate = 1000 * 60 * 15)
public void configureTasks() {
String result = HttpUtil.httpGet("http://192.168.0.34:8080/api/v1/getSign").getBody();
Map<String, Object> map = JsonUtil.toMap(result, String.class, Object.class);
dockingDistributionServiceImpl.setSecret(String.valueOf(map.get("data")));
}
}
package com.system.serivce.impl; package com.system.serivce.impl;
import com.system.api.CommonGetApi;
import com.system.constants.Constants; import com.system.constants.Constants;
import com.system.constants.MallCommonSyncConstants; import com.system.constants.MallCommonSyncConstants;
import com.system.constants.MallConstants;
import com.system.constants.SynchronizationOperationConstants;
import com.system.dao.SynchronizationRecordsMapper;
import com.system.mall.MallCommonSyncApi;
import com.system.serivce.IMallSyncService; import com.system.serivce.IMallSyncService;
import com.system.transfer.mall.SynchronizationRecordsUpdateInVo;
import com.system.utils.JsonUtil; import com.system.utils.JsonUtil;
import com.system.utils.MallLogUtil; import com.system.utils.ProductLogUtil;
import com.system.utils.SnowFlakeIdUtil; import com.system.utils.SnowFlakeIdUtil;
import com.system.utils.ThirdPartyLogUtil; import com.system.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -25,58 +30,68 @@ public class IMallSyncServiceImpl implements IMallSyncService { ...@@ -25,58 +30,68 @@ public class IMallSyncServiceImpl implements IMallSyncService {
private MallCommonSyncConstants mallCommonSyncConstants; private MallCommonSyncConstants mallCommonSyncConstants;
@Autowired @Autowired
private CommonGetApi commonGetApi; private SynchronizationOperationConstants synchronizationOperationConstants;
@Autowired @Autowired
private MallLogUtil mallLogUtil; private MallCommonSyncApi mallCommonSyncApi;
@Autowired @Autowired
private ThirdPartyLogUtil thirdPartyLogUtil; private SynchronizationRecordsMapper synchronizationRecordsMapper;
@Autowired
private ProductLogUtil productLogUtil;
@Override @Override
public void synchronization(Integer id, String sFormId, Integer dataId, Integer entryId) { public void synchronization(Integer id, String sFormId, Integer dataId, Integer entryId) {
String queueId = SnowFlakeIdUtil.generateId().toString(); List<Map<String, String>> configList = mallCommonSyncConstants.get(sFormId);
Map<String, String> config = mallCommonSyncConstants.get(sFormId); if (!CollectionUtils.isEmpty(configList)) {
if (!CollectionUtils.isEmpty(config)) { synchronizationRecordsMapper.synchronizationRecordsUpdate(new SynchronizationRecordsUpdateInVo(id, SnowFlakeIdUtil.generateId().toString(), "商城同步失败! sFormId为: " + sFormId + " 的商城表单不存在", 2));
mallLogUtil.thirdPartyErrorLogCreate("商城同步失败", sFormId, queueId, 3, "", "sFormId为: " + sFormId + " 的商城表单不存在");
return; return;
} }
Map<String, Object> data = new HashMap<>();
String result = commonGetApi.commonGet(config, data, queueId); for (Map<String, String> config : configList) {
Map<String, Object> map = JsonUtil.toMap(result, String.class, Object.class); String queueId = SnowFlakeIdUtil.generateId().toString();
if (!CollectionUtils.isEmpty(map)) { //查询同步操作
if (!map.containsKey(Constants.SUCCESS_NAME) || !Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME)))) { Map<String, String> operation = synchronizationOperationConstants.get(Integer.valueOf(config.get("productId")), sFormId);
if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(operation)) {
productLogUtil.productSyncErrorLogCreate(Integer.valueOf(config.get("productId")), queueId, config.get("name") + "的同步取消", config.get("docType"), config.get("direction"), "", "表单标识为: " + sFormId + " 的表单同步操作不存在");
synchronizationRecordsMapper.synchronizationRecordsUpdate(new SynchronizationRecordsUpdateInVo(id, queueId, "sFormId为: " + sFormId + " 的同步操作不存在", 2));
return; return;
} }
} else {
return; Map<String, Object> where = new HashMap<>(3);
where.put("form", sFormId);
where.put("dataId", dataId);
if (StringUtil.isNotNull(entryId)) {
where.put("entryId", entryId);
}
Map<String, Object> map = mallCommonSyncApi.synchronization(config, queueId, config.get("name"), where);
if (!Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME)))) {
synchronizationRecordsMapper.synchronizationRecordsUpdate(new SynchronizationRecordsUpdateInVo(id, queueId, String.valueOf(map.get(Constants.ERROR_MESSAGE)), 2));
return;
}
this.encapsulationRequest(config, operation, queueId, id, map);
} }
}
private void encapsulationRequest(Map<String, String> config, Map<String, String> operation, String queueId, Integer id, Map<String, Object> data) {
Map<String, Object> request = new HashMap<>(); Map<String, Object> request = new HashMap<>();
request.put("docType", config.get("docType")); request.put("docType", config.get("docType"));
request.put("update", ""); request.put("updateType", "update");
request.put("data", map.get("data")); request.put("data", data.get(Constants.DATE_NAME));
//TODO 同步至某某地址 String response = mallCommonSyncApi.sendThirdParty(operation.get("receiveAddress"), JsonUtil.toString(request));
String response = commonGetApi.commonSync("", config, queueId, JsonUtil.toString(request)); //记录第三方日志
/*List<Object> objectList = JsonUtil.toList(responseEntity.getBody(), Object.class); productLogUtil.productHttpLogCreate(Integer.valueOf(config.get("productId")), queueId, id, config.get("name"), config.get("docType"), config.get("direction"), JsonUtil.toString(request), response);
for (Object object : objectList) {
Map<String, Object> temp = JsonUtil.toMap(JsonUtil.toString(object), String.class, Object.class);
Map<String, String> config = commonGetConstants.get(String.valueOf(temp.get("form")));
if (!CollectionUtils.isEmpty(config)) {
continue;
}
String queueId = SnowFlakeIdUtil.generateId().toString();
String result = commonGetApi.commonGet(config, "", queueId);
Map<String, Object> map = JsonUtil.toMap(result, String.class, Object.class); Map<String, Object> map = JsonUtil.toMap(response, String.class, Object.class);
if (!CollectionUtils.isEmpty(map) && Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME)))) { if (!CollectionUtils.isEmpty(map)) {
Map<String, Object> data = JsonUtil.toMap(JsonUtil.toString(map.get("data")), String.class, Object.class); if (MallConstants.OVERTIME_CODE.equals(map.get(MallConstants.CODE_NAME))) {
commonGetApi.commonSync(String.valueOf(temp.get("response_address")), queueId, config, JsonUtil.toString(data)); Thread.currentThread().interrupt();
} }
}*/ }
} }
......
package com.system.serivce.impl; package com.system.serivce.impl;
import com.system.api.CommonGetApi; import com.system.api.CommonHttpApi;
import com.system.constants.MallCommonGetConstants; import com.system.constants.MallCommonGetConstants;
import com.system.serivce.IMallCommonGetService; import com.system.serivce.IMallCommonGetService;
import com.system.transfer.common.MallCommonGetInVo; import com.system.transfer.common.MallCommonGetInVo;
...@@ -18,7 +18,7 @@ import java.util.Map; ...@@ -18,7 +18,7 @@ import java.util.Map;
public class MallCommonGetServiceImpl implements IMallCommonGetService { public class MallCommonGetServiceImpl implements IMallCommonGetService {
@Autowired @Autowired
private CommonGetApi commonGetApi; private CommonHttpApi commonHttpApi;
@Autowired @Autowired
private MallCommonGetConstants mallCommonGetConstants; private MallCommonGetConstants mallCommonGetConstants;
...@@ -31,7 +31,7 @@ public class MallCommonGetServiceImpl implements IMallCommonGetService { ...@@ -31,7 +31,7 @@ public class MallCommonGetServiceImpl implements IMallCommonGetService {
return RestResponse.fail("操作失败!第三方标识为: " + inVo.getDocType() + "的标识不存在"); return RestResponse.fail("操作失败!第三方标识为: " + inVo.getDocType() + "的标识不存在");
} }
String result = commonGetApi.commonGet(config, inVo.getData(), inVo.getQueueId()); //String result = commonGetApi.commonHttpGet(config, inVo.getData(), inVo.getQueueId());
return null; return null;
} }
......
...@@ -2,18 +2,14 @@ package com.system.serivce.impl; ...@@ -2,18 +2,14 @@ package com.system.serivce.impl;
import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.system.dao.SynchronizationRecordsMapper; import com.system.dao.SynchronizationRecordsMapper;
import com.system.mall.MallCommonApi;
import com.system.serivce.ISynchronizationService; import com.system.serivce.ISynchronizationService;
import com.system.transfer.synchronization.SynchronizationRecordsListOutVoRecords; import com.system.transfer.mall.SynchronizationRecordsListOutVoRecords;
import com.system.utils.HttpUtil;
import com.system.utils.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
...@@ -42,6 +38,9 @@ public class SynchronizationServiceImpl implements ISynchronizationService { ...@@ -42,6 +38,9 @@ public class SynchronizationServiceImpl implements ISynchronizationService {
@Autowired @Autowired
private IMallSyncServiceImpl mallSyncService; private IMallSyncServiceImpl mallSyncService;
@Autowired
private MallCommonApi mallCommonApi;
@Override @Override
public void mallSynchronization() { public void mallSynchronization() {
...@@ -50,14 +49,14 @@ public class SynchronizationServiceImpl implements ISynchronizationService { ...@@ -50,14 +49,14 @@ public class SynchronizationServiceImpl implements ISynchronizationService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void synchronization() { public void synchronization() {
List<Map<String, Object>> tempList = this.getSynchronizationRecords(); List<Map<String, Object>> tempList = mallCommonApi.getSynchronizationRecords();
if (!CollectionUtils.isEmpty(tempList)) { if (!CollectionUtils.isEmpty(tempList)) {
synchronizationRecordsMapper.synchronizationRecordsTempCreate(tempList); synchronizationRecordsMapper.synchronizationRecordsTempCreate(tempList);
} }
//更新状态 //更新状态
this.mallSynchronizedRecordsUpdate(tempList); mallCommonApi.mallSynchronizedRecordsUpdate(tempList);
List<Map<String, Object>> dataList = synchronizationRecordsMapper.synchronizationRecordsTempList(); List<Map<String, Object>> dataList = synchronizationRecordsMapper.synchronizationRecordsTempList();
if (!CollectionUtils.isEmpty(dataList)) { if (!CollectionUtils.isEmpty(dataList)) {
...@@ -76,7 +75,7 @@ public class SynchronizationServiceImpl implements ISynchronizationService { ...@@ -76,7 +75,7 @@ public class SynchronizationServiceImpl implements ISynchronizationService {
for (SynchronizationRecordsListOutVoRecords records : recordsList) { for (SynchronizationRecordsListOutVoRecords records : recordsList) {
if (!"LQKJ_IMSSync".equals(records.getSFormId())) { if (!"LQKJ_IMSSync".equals(records.getSFormId())) {
//mallSyncService.synchronization(records.getId(), records.getSFormId(), records.getDataId()); mallSyncService.synchronization(records.getId(), records.getSFormId(), records.getDataId(), records.getEntryId());
} }
if (Thread.currentThread().isInterrupted()) { if (Thread.currentThread().isInterrupted()) {
break; break;
...@@ -85,38 +84,5 @@ public class SynchronizationServiceImpl implements ISynchronizationService { ...@@ -85,38 +84,5 @@ public class SynchronizationServiceImpl implements ISynchronizationService {
}); });
} }
private List<Map<String, Object>> getSynchronizationRecords() {
try {
ResponseEntity<String> responseEntity = HttpUtil.httpPost("http://192.168.0.9:8089/api/dataSyn/getSyn", "");
List<Object> objectList = JsonUtil.toList(responseEntity.getBody(), Object.class);
if (!CollectionUtils.isEmpty(objectList)) {
return objectList.stream().map(m -> JsonUtil.toMap(JsonUtil.toString(m), String.class, Object.class)).collect(Collectors.toList());
}
return new ArrayList<>();
} catch (Exception e) {
e.printStackTrace();
return new ArrayList<>();
}
}
private void mallSynchronizedRecordsUpdate(List<Map<String, Object>> tempList) {
List<String> idList = tempList.stream().filter(m -> !"LQKJ_IMSSync".equals(m.get("formId"))).map(m -> String.valueOf(m.get("fid"))).collect(Collectors.toList());
List<Map<String, Object>> dataList = new ArrayList<>();
for (String id : idList) {
//将商城的数据同步该成1
Map<String, Object> request = new HashMap<>(3);
request.put("id", id);
request.put("status", "1");
dataList.add(request);
}
if (!CollectionUtils.isEmpty(dataList)) {
//修改商城是否同步
//kingDeeSynchronizationApi.batchAdd(uList);
}
}
} }
...@@ -18,6 +18,12 @@ public class MallCommonConfigListOutVoRecords { ...@@ -18,6 +18,12 @@ public class MallCommonConfigListOutVoRecords {
/** /**
* 平台产品关系id
*/
private Integer platformProductRelationId;
/**
* 第三方唯一标识 * 第三方唯一标识
*/ */
private String docType; private String docType;
...@@ -36,15 +42,21 @@ public class MallCommonConfigListOutVoRecords { ...@@ -36,15 +42,21 @@ public class MallCommonConfigListOutVoRecords {
/** /**
* 方向
*/
private String direction;
/**
* 操作(1-查询 2-创建/更新 3-同步) * 操作(1-查询 2-创建/更新 3-同步)
*/ */
private Integer operation; private Integer operation;
/** /**
* 请求地址 * 封装格式(1-全部 2-聚合)
*/ */
private String requestAddress; private Integer encapsulationFormat;
/** /**
......
package com.system.transfer.log;
import lombok.Data;
/**
* @author Inori
*/
@Data
public class ProductLogCreateInVo {
/**
* ID
*/
private Integer id;
/**
* 平台产品关系id
*/
private Integer platformProductRelationId;
/**
* 唯一标识
*/
private String queueId;
/**
* 业务名称
*/
private String name;
/**
* 业务标识
*/
private String code;
/**
* 方向
*/
private String direction;
/**
* 请求参数
*/
private String request;
/**
* 是否成功(0-失败,1-成功)
*/
private Integer flag;
/**
* 响应信息
*/
private String response;
/**
* 错误原因
*/
private String message;
/**
* 耗时
*/
private Integer costTime;
}
package com.system.transfer.synchronization; package com.system.transfer.mall;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
......
package com.system.transfer.synchronization; package com.system.transfer.mall;
import com.system.utils.StringUtil; import com.system.utils.StringUtil;
......
package com.system.transfer.synchronization; package com.system.transfer.mall;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
......
package com.system.transfer.synchronization;
import lombok.Data;
/**
* @author Inori
*/
@Data
public class SynchronizationOperationListOutVoRecords {
/**
* ID
*/
private Integer id;
/**
* 平台产品关系id
*/
private Integer platformProductRelationId;
/**
* 任务类名
*/
private String jobClassName;
/**
* 金蝶通用配置id
*/
private Integer kingdeeCommonConfigId;
/**
* 金蝶标识
*/
private String sFormId;
/**
* 第三方唯一标识
*/
private String docType;
/**
* 接收地址
*/
private String receiveAddress;
/**
* 创建时间
*/
private String createTime;
}
package com.system.utils;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import java.nio.charset.Charset;
/**
* @author Inori
*/
public class DesHelperUtil {
/**
* 加密
*/
public static String encrypt(String srcStr, Charset charset, String sKey) {
byte[] src = srcStr.getBytes(charset);
byte[] buf = encrypt(src, sKey);
return parseByte2HexStr(buf);
}
/**
* 解密
*/
public static String decrypt(String hexStr, Charset charset, String sKey) throws Exception {
byte[] src = parseHexStr2Byte(hexStr);
byte[] buf = decrypt(src, sKey);
return new String(buf, charset);
}
/**
* 加密
*/
public static byte[] encrypt(byte[] data, String sKey) {
try {
byte[] key = sKey.getBytes();
// 初始化向量
IvParameterSpec iv = new IvParameterSpec(key);
DESKeySpec desKey = new DESKeySpec(key);
// 创建一个密匙工厂,然后用它把DESKeySpec转换成securekey
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey securekey = keyFactory.generateSecret(desKey);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
// 用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, iv);
// 现在,获取数据并加密
// 正式执行加密操作
return cipher.doFinal(data);
} catch (Throwable e) {
e.printStackTrace();
}
return null;
}
/**
* 解密
*/
public static byte[] decrypt(byte[] src, String sKey) throws Exception {
byte[] key = sKey.getBytes();
// 初始化向量
IvParameterSpec iv = new IvParameterSpec(key);
// 创建一个DESKeySpec对象
DESKeySpec desKey = new DESKeySpec(key);
// 创建一个密匙工厂
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
// 将DESKeySpec对象转换成SecretKey对象
SecretKey securekey = keyFactory.generateSecret(desKey);
// Cipher对象实际完成解密操作
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
// 用密匙初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, securekey, iv);
// 真正开始解密操作
return cipher.doFinal(src);
}
/**
* 将二进制转换成16进制
*/
public static String parseByte2HexStr(byte buf[]) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < buf.length; i++) {
String hex = Integer.toHexString(buf[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
sb.append(hex.toUpperCase());
}
return sb.toString();
}
/**
* 将16进制转换为二进制
*/
public static byte[] parseHexStr2Byte(String hexStr) {
if (hexStr.length() < 1) return null;
byte[] result = new byte[hexStr.length() / 2];
for (int i = 0; i < hexStr.length() / 2; i++) {
int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
result[i] = (byte) (high * 16 + low);
}
return result;
}
}
\ No newline at end of file
...@@ -10,7 +10,7 @@ import java.util.stream.Collectors; ...@@ -10,7 +10,7 @@ import java.util.stream.Collectors;
*/ */
public class FormFieldMappingUtil { public class FormFieldMappingUtil {
public static List<MallFieldMappingListOutVoRecords> purchaseMapping(String formFieldMappingDetail) { public static List<MallFieldMappingListOutVoRecords> encapsulationMapping(String formFieldMappingDetail) {
List<Object> objectList = JsonUtil.toList(formFieldMappingDetail, Object.class); List<Object> objectList = JsonUtil.toList(formFieldMappingDetail, Object.class);
return objectList.stream().map(m -> JsonUtil.toBean(JsonUtil.toString(m), MallFieldMappingListOutVoRecords.class)).collect(Collectors.toList()); return objectList.stream().map(m -> JsonUtil.toBean(JsonUtil.toString(m), MallFieldMappingListOutVoRecords.class)).collect(Collectors.toList());
} }
......
package com.system.utils; package com.system.utils;
import com.system.constants.Constants;
import com.system.dao.MallLogMapper; import com.system.dao.MallLogMapper;
import com.system.transfer.log.MallLogCreateInVo; import com.system.transfer.log.MallLogCreateInVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.Map;
/** /**
* @author Inori * @author Inori
...@@ -15,6 +19,30 @@ public class MallLogUtil { ...@@ -15,6 +19,30 @@ public class MallLogUtil {
private MallLogMapper mallLogMapper; private MallLogMapper mallLogMapper;
public void mallLogCreate(String name, String docType, String queueId, Integer operation, String request, String response) {
MallLogCreateInVo inVo = new MallLogCreateInVo();
inVo.setName(name);
inVo.setCode(docType);
inVo.setQueueId(queueId);
inVo.setOperation(operation);
inVo.setRequest(request);
inVo.setResponse(response);
Map<String, Object> map = JsonUtil.toMap(response, String.class, Object.class);
if (!CollectionUtils.isEmpty(map)) {
if (Constants.SUCCESS_CODE.equals(String.valueOf(map.get(Constants.SUCCESS_NAME)))) {
inVo.setFlag(1);
} else {
inVo.setFlag(0);
inVo.setMessage(response);
}
} else {
inVo.setFlag(0);
}
mallLogMapper.mallLogCreate(inVo);
}
public void thirdPartyErrorLogCreate(String name, String sFormId, String queueId, Integer operation, String request, String message) { public void thirdPartyErrorLogCreate(String name, String sFormId, String queueId, Integer operation, String request, String message) {
MallLogCreateInVo inVo = new MallLogCreateInVo(); MallLogCreateInVo inVo = new MallLogCreateInVo();
inVo.setName(name); inVo.setName(name);
......
package com.system.utils;
import com.system.config.ThreadLocalConfig;
import com.system.constants.MallConstants;
import com.system.dao.ProductLogMapper;
import com.system.dao.SynchronizationRecordsMapper;
import com.system.transfer.log.ProductLogCreateInVo;
import com.system.transfer.mall.SynchronizationRecordsDeleteInVo;
import com.system.transfer.mall.SynchronizationRecordsUpdateInVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author Inori
*/
@Component
public class ProductLogUtil {
@Autowired
private ProductLogMapper productLogMapper;
@Autowired
private SynchronizationRecordsMapper synchronizationRecordsMapper;
public Integer isExist(String queueId) {
return productLogMapper.getProductLogByQueueId(queueId);
}
public Integer productLogCreate(Integer productId, String queueId, String name, String code, String direction, String request, String response, Integer flag, Integer costTime) {
ProductLogCreateInVo inVo = this.encapsulationInVo(productId, queueId, name, code, direction, request, response);
inVo.setFlag(flag);
if (costTime != 0) {
inVo.setCostTime(costTime);
}
productLogMapper.productLogCreate(inVo);
return inVo.getId();
}
public void productLogUpdate(Integer id, String response, Integer costTime) {
ProductLogCreateInVo inVo = new ProductLogCreateInVo();
inVo.setId(id);
inVo.setResponse(response);
if (costTime != 0) {
inVo.setCostTime(costTime);
}
Map<String, Object> map = JsonUtil.toMap(response, String.class, Object.class);
if (MallConstants.SUCCESS_CODE.equals(map.get(MallConstants.CODE_NAME))) {
inVo.setFlag(1);
} else {
inVo.setFlag(0);
String message = String.valueOf(map.get("resultMsg"));
List<Object> tempList = JsonUtil.toList(JsonUtil.toString(map.get("resultData")), Object.class);
if (!CollectionUtils.isEmpty(tempList)) {
message = message + " " + tempList.stream()
.map(m -> (String) JsonUtil.toMap(JsonUtil.toString(m), String.class, Object.class).get("Msg"))
.collect(Collectors.joining(", "));
}
inVo.setMessage(message);
}
productLogMapper.productLogUpdate(inVo);
}
public void productLogUpdate(Integer id, String response, String message, Integer costTime) {
ProductLogCreateInVo inVo = new ProductLogCreateInVo();
inVo.setId(id);
inVo.setResponse(response);
inVo.setMessage(message);
inVo.setCostTime(costTime);
if (StringUtil.isNotBlank(message)) {
inVo.setFlag(0);
} else {
inVo.setFlag(1);
}
productLogMapper.productLogUpdate(inVo);
}
public void productHttpLogCreate(Integer productId, String queueId, Integer id, String name, String code, String direction, String request, String response) {
ProductLogCreateInVo inVo = this.encapsulationInVo(productId, queueId, name, code, direction, request, response);
Map<String, Object> map = JsonUtil.toMap(response, String.class, Object.class);
if (!CollectionUtils.isEmpty(map)) {
if (map.containsKey(MallConstants.CODE_NAME) && MallConstants.SUCCESS_CODE.equals(map.get(MallConstants.CODE_NAME))) {
inVo.setFlag(1);
synchronizationRecordsMapper.synchronizationRecordsDelete(new SynchronizationRecordsDeleteInVo(id));
} else {
inVo.setFlag(0);
if (map.containsKey(MallConstants.MSG_NAME)) {
inVo.setMessage(map.get("resultMsg").toString());
}
synchronizationRecordsMapper.synchronizationRecordsUpdate(new SynchronizationRecordsUpdateInVo(id, queueId, inVo.getMessage(), 2));
}
} else {
inVo.setFlag(0);
inVo.setMessage("请求响应信息错误");
synchronizationRecordsMapper.synchronizationRecordsUpdate(new SynchronizationRecordsUpdateInVo(id, queueId, inVo.getMessage(), 2));
}
productLogMapper.productLogCreate(inVo);
}
public void productPushLogCreate(Integer productId, String queueId, String name, String code, String direction, String request, String response) {
ProductLogCreateInVo inVo = this.encapsulationInVo(productId, queueId, name, code, direction, request, response);
encapsulationOperation(response, inVo);
}
public void productSqlLogCreate(Integer productId, String queueId, String name, String code, String direction, String request, String response) {
ProductLogCreateInVo inVo = this.encapsulationInVo(productId, queueId, name, code, direction, request, response);
try {
inVo.setRequest(DesHelperUtil.decrypt(request, StandardCharsets.UTF_8, "MES&&DES"));
} catch (Exception e) {
e.printStackTrace();
}
encapsulationOperation(response, inVo);
}
public void productSyncErrorLogCreate(Integer productId, String queueId, String name, String code, String direction, String request, String message) {
ProductLogCreateInVo inVo = this.encapsulationInVo(productId, queueId, name, code, direction, request, message);
inVo.setFlag(0);
inVo.setMessage(message);
productLogMapper.productLogCreate(inVo);
}
private ProductLogCreateInVo encapsulationInVo(Integer productId, String queueId, String name, String code, String direction, String request, String response) {
ProductLogCreateInVo inVo = new ProductLogCreateInVo();
inVo.setPlatformProductRelationId(productId);
inVo.setName(name);
inVo.setCode(code);
inVo.setDirection(direction);
inVo.setQueueId(queueId);
inVo.setRequest(request);
inVo.setResponse(response);
Map<String, Object> map = ThreadLocalConfig.get();
if (!CollectionUtils.isEmpty(map)) {
int costTime = StringUtil.isNotNull(map.get("costTime")) ? Integer.parseInt(map.get("costTime").toString()) : 0;
inVo.setCostTime(costTime);
}
return inVo;
}
private void encapsulationOperation(String response, ProductLogCreateInVo inVo) {
Map<String, Object> map = JsonUtil.toMap(response, String.class, Object.class);
if (StringUtil.isNotBlank(response) && !CollectionUtils.isEmpty(map)) {
if (map.containsKey(MallConstants.CODE_NAME) && MallConstants.SUCCESS_CODE.equals(map.get(MallConstants.CODE_NAME))) {
inVo.setFlag(1);
} else {
inVo.setFlag(0);
inVo.setMessage(String.valueOf(map.get("resultMsg")));
}
} else {
inVo.setFlag(0);
}
productLogMapper.productLogCreate(inVo);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论