From 70862b9228ccb2156971a22085ac31b6c8b6d2cd Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 07 七月 2020 19:35:42 +0800
Subject: [PATCH] 优化代码
---
service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java | 181 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 179 insertions(+), 2 deletions(-)
diff --git a/service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java b/service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java
index e2fe540..6ef665d 100644
--- a/service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java
+++ b/service-order/src/main/java/com/java110/order/smo/impl/OIdServiceSMOImpl.java
@@ -9,6 +9,7 @@
import com.java110.order.dao.ICenterServiceDAO;
import com.java110.order.smo.IOIdServiceSMO;
import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
import com.java110.utils.util.StringUtil;
import com.java110.vo.ResultVo;
import org.slf4j.Logger;
@@ -33,7 +34,7 @@
private static Logger logger = LoggerFactory.getLogger(OIdServiceSMOImpl.class);
- public static final String FALLBACK_URL = "http://SERVICE_NAME/fallBack";
+ public static final String FALLBACK_URL = "http://SERVICE_NAME/businessApi/fallBack";
public static final String SERVICE_NAME = "SERVICE_NAME";
@@ -59,6 +60,10 @@
if (StringUtil.isEmpty(orderDto.getRequestTime())) {
throw new IllegalArgumentException("鏈寘鍚姹傛椂闂�");
+ }
+
+ if (StringUtil.isEmpty(orderDto.getUserId())) {
+ throw new IllegalArgumentException("鏈寘鍚敤鎴稩D");
}
//淇濆瓨璁㈠崟淇℃伅
@@ -93,18 +98,158 @@
List<OrderItemDto> errorOrderItemDtos = new ArrayList<>();
for (OrderItemDto orderItemDto : orderItemDtos) {
try {
- httpEntity = new HttpEntity<String>(JSONObject.toJSONString(orderItemDto), header);
+ JSONArray params = generateParam(orderItemDto);
+ httpEntity = new HttpEntity<String>(params.toJSONString(), header);
restTemplate.exchange(FALLBACK_URL.replace(SERVICE_NAME, orderItemDto.getServiceName()), HttpMethod.POST, httpEntity, String.class);
} catch (Exception e) {
logger.error("鍥為��浜嬪姟澶辫触", e);
errorOrderItemDtos.add(orderItemDto);
}
}
+
+ //鏍囪涓鸿鍗曢」澶辫触
+ Map info = new HashMap();
+ info.put("finishTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+ info.put("statusCd", "E");
+ info.put("oId", orderDto.getoId());
+ centerServiceDAOImpl.updateOrderItem(info);
+
+ //鍒犻櫎 浜嬪姟鏃ュ織
+ centerServiceDAOImpl.deleteUnItemLog(info);
+
+ //鏍囪涓鸿鍗曞け璐�
+ info = new HashMap();
+ info.put("finishTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+ info.put("statusCd", "E");
+ info.put("oId", orderDto.getoId());
+ centerServiceDAOImpl.updateOrder(info);
+
if (errorOrderItemDtos.size() > 0) {
return new ResponseEntity<String>(JSONArray.toJSONString(errorOrderItemDtos), HttpStatus.BAD_REQUEST);
} else {
return new ResponseEntity<String>("", HttpStatus.OK);
}
+ }
+
+ /**
+ * 鐢熸垚鍥炴粴sql
+ *
+ * @param orderItemDto
+ * @return
+ */
+ private JSONArray generateParam(OrderItemDto orderItemDto) {
+ JSONArray params = null;
+ switch (orderItemDto.getAction()) {
+ case "ADD":
+ params = generateDeleteSql(orderItemDto);
+ break;
+ case "MOD":
+ params = generateUpdateSql(orderItemDto);
+ break;
+ case "DEL":
+ params = generateInsertSql(orderItemDto);
+ break;
+ }
+
+ return params;
+ }
+
+ /**
+ * 鐢熸垚insert璇彞
+ *
+ * @param orderItemDto
+ * @return
+ */
+ private JSONArray generateInsertSql(OrderItemDto orderItemDto) {
+ JSONArray params = new JSONArray();
+ JSONObject param = null;
+ String sql = "";
+ String logText = orderItemDto.getLogText();
+
+ JSONObject logTextObj = JSONObject.parseObject(logText);
+ JSONArray preValues = logTextObj.getJSONArray("preValue");
+ for (int preValueIndex = 0; preValueIndex < preValues.size(); preValueIndex++) {
+ sql = "insert into " + orderItemDto.getActionObj() + " ";
+ param = new JSONObject();
+ JSONObject keyValue = preValues.getJSONObject(preValueIndex);
+ String keySql = "( ";
+ String valueSql = " values (";
+ for (String key : keyValue.keySet()) {
+ keySql += (key + ",");
+ valueSql += (keyValue.getString(key) + ",");
+ }
+ if (keySql.endsWith(",")) {
+ keySql = keySql.substring(0, keySql.length() - 1);
+ }
+ if (valueSql.endsWith(",")) {
+ valueSql = valueSql.substring(0, valueSql.length() - 1);
+ }
+ sql = sql + keySql + ") " + valueSql + ") ";
+ param.put("fallBackSql", sql);
+ params.add(param);
+ }
+
+ return params;
+ }
+
+ private JSONArray generateUpdateSql(OrderItemDto orderItemDto) {
+ JSONArray params = new JSONArray();
+ JSONObject param = null;
+ String sql = "";
+ String logText = orderItemDto.getLogText();
+
+ JSONObject logTextObj = JSONObject.parseObject(logText);
+ JSONArray preValues = logTextObj.getJSONArray("preValue");
+ JSONArray afterValues = logTextObj.getJSONArray("afterValue");
+
+ for (int preValueIndex = 0; preValueIndex < preValues.size(); preValueIndex++) {
+ sql = "update " + orderItemDto.getActionObj() + " set ";
+ param = new JSONObject();
+ JSONObject keyValue = preValues.getJSONObject(preValueIndex);
+ JSONObject afterKeyValue = afterValues.getJSONObject(preValueIndex);
+ String whereSql = " where 1=1 ";
+ for (String key : keyValue.keySet()) {
+ sql += (key + "=" + keyValue.getString(key) + ",");
+ whereSql += (" and " + key + " = " + afterKeyValue.getString(key));
+ }
+ if (sql.endsWith(",")) {
+ sql = sql.substring(0, sql.length() - 1);
+ }
+
+ sql += whereSql;
+
+ param.put("fallBackSql", sql);
+ params.add(param);
+ }
+
+ return params;
+ }
+
+ /**
+ * 鐢熸垚鍒犻櫎璇彞
+ *
+ * @param orderItemDto
+ */
+ private JSONArray generateDeleteSql(OrderItemDto orderItemDto) {
+ JSONArray params = new JSONArray();
+ JSONObject param = null;
+ String sql = "";
+ String logText = orderItemDto.getLogText();
+
+ JSONObject logTextObj = JSONObject.parseObject(logText);
+ JSONArray preValues = logTextObj.getJSONArray("preValue");
+ for (int preValueIndex = 0; preValueIndex < preValues.size(); preValueIndex++) {
+ sql = "delete from " + orderItemDto.getActionObj() + " where 1=1 ";
+ param = new JSONObject();
+ JSONObject keyValue = preValues.getJSONObject(preValueIndex);
+ for (String key : keyValue.keySet()) {
+ sql += (" and " + key + "=" + keyValue.getString(key));
+ }
+ param.put("fallBackSql", sql);
+ params.add(param);
+ }
+
+ return params;
}
@Override
@@ -135,4 +280,36 @@
return ResultVo.createResponseEntity(ResultVo.CODE_OK, ResultVo.MSG_OK);
}
+
+ /**
+ * 瀹屾垚浜嬪姟
+ *
+ * @param orderDto
+ * @return
+ */
+ @Override
+ public ResponseEntity<String> finishOrder(OrderDto orderDto) {
+ if (StringUtil.isEmpty(orderDto.getoId())) {
+ return new ResponseEntity<String>("璇锋眰鎶ユ枃涓湭鍖呭惈浜嬪姟ID", HttpStatus.NOT_FOUND);
+ }
+
+ //瀹屾垚璁㈠崟椤�
+ Map info = new HashMap();
+ info.put("finishTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+ info.put("statusCd", "C");
+ info.put("oId", orderDto.getoId());
+ centerServiceDAOImpl.updateOrderItem(info);
+
+ //鍒犻櫎 浜嬪姟鏃ュ織
+ centerServiceDAOImpl.deleteUnItemLog(info);
+
+ //瀹屾垚璁㈠崟
+ info = new HashMap();
+ info.put("finishTime", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+ info.put("statusCd", "C");
+ info.put("oId", orderDto.getoId());
+ centerServiceDAOImpl.updateOrder(info);
+
+ return ResultVo.createResponseEntity(ResultVo.CODE_OK, ResultVo.MSG_OK);
+ }
}
--
Gitblit v1.8.0