Commit 5d5b5826 authored by 覃振观's avatar 覃振观 👶

工作中心111

parent 324f972c
......@@ -63,3 +63,10 @@ function updateHandler(data) {
let url = DataUtil.composeURLByParam('/sapWorkCenter/goWorkCenterDetail.do', data);
UICtrl.addTabItem({tabid: 'workCenterEdit' + new Date().getTime(), text: "AAAA", url: url});
}
function addHandler(data) {
// 更新标识: I 插入; U 修改; D 删除
data.updkz = 'I';
let url = DataUtil.composeURLByParam('/sapWorkCenter/goWorkCenterDetail.do', data);
UICtrl.addTabItem({tabid: 'workCenterAdd' + new Date().getTime(), text: "AAAA", url: url});
}
\ No newline at end of file
package com.huigou.topsun.common;
package com.huigou.topsun.config;
import org.springframework.http.client.ClientHttpRequest;
import org.springframework.http.client.ClientHttpResponse;
......
package com.huigou.topsun.sap.workcenter.application;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.huigou.topsun.sap.workcenter.domain.SapWorkCenter;
import com.huigou.util.SDO;
import java.util.ArrayList;
......@@ -18,5 +19,5 @@ public interface SapWorkCenterApplication {
Map<String, Object> saveWorkCenterDetail(SDO sdo);
boolean saveWorkCenter();
boolean saveWorkCenter(SapWorkCenter workCenter);
}
......@@ -5,24 +5,19 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.huigou.topsun.common.CloseableClientHttpRequest;
import com.huigou.topsun.sap.workcenter.repository.SapWorkCenterRepository;
import com.huigou.topsun.sap.workcenter.application.SapWorkCenterApplication;
import com.huigou.topsun.sap.workcenter.domain.SapWorkCenter;
import com.huigou.topsun.util.PersistTool;
import com.huigou.topsun.util.TestClientHttp;
import com.huigou.util.SDO;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpMethod;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.*;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.*;
/**
* @author YourUserName
......@@ -33,6 +28,10 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication {
private final ObjectMapper objectMapper;
@PersistenceContext(unitName = "system")
private EntityManager entityManager;
private final PersistTool persist;
private final SapWorkCenterRepository rep;
/***
......@@ -47,7 +46,7 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication {
HashMap<String, Object> param = new HashMap<>(12);
List<SapWorkCenter> workCenters;
try {
execute = execute(param, "http://127.0.0.1:8080/topsun_xt_war/sapWorkCenter/queryWorkCenter.ajax");
execute = TestClientHttp.execute(param, "http://127.0.0.1:8080/topsun_xt_war/sapWorkCenter/queryWorkCenter.ajax");
String resultStr = JSONObject.parseObject(execute).get("data").toString();
workCenters = objectMapper.readValue(resultStr, new TypeReference<List<SapWorkCenter>>() {});
} catch (Exception e) {
......@@ -60,18 +59,6 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication {
});
}
/**
* description 模拟 SAP 接口 (临时)
* @return java.lang.String
* @author qinzhenguan
* @createDate 2024/1/17 14:57
*/
@Override
public String queryWorkCenter() throws JsonProcessingException {
List<SapWorkCenter> list = rep.findAll();
return list.size() > 0 ? objectMapper.writeValueAsString(list) : "";
}
/***
* @description 发送请求到 SAP 系统,保存工作中心数据
* @param sdo 提交的数据集
......@@ -85,7 +72,7 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication {
HashMap<String, Object> param = new HashMap<>(12);
param.put("data", sdo.getProperties());
try {
execute = execute(param, "http://127.0.0.1:8080/topsun_xt_war/sapWorkCenter/saveWorkCenter.ajax");
execute = TestClientHttp.execute(param, "http://127.0.0.1:8080/topsun_xt_war/sapWorkCenter/saveWorkCenter.ajax");
} catch (Exception e) {
throw new RuntimeException(e);
}
......@@ -93,56 +80,31 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication {
}
@Override
public boolean saveWorkCenter() {
@Transactional(transactionManager = "transactionManager", rollbackFor = { Exception.class })
public boolean saveWorkCenter(SapWorkCenter workCenter) {
Set<Object> set = new HashSet<>();
set.add(workCenter);
persist.persistEntitys(set);
entityManager.flush();
entityManager.clear();
// String str = null;
// str.length();
System.out.println("GG");
return false;
}
/***
* description 模拟发送请求到 SAP
* @param param 请求体 body
* @param url 请求地址
/**
* description 模拟 SAP 接口 (临时)
* @return java.lang.String
* @author qinzhenguan
* @createDate 2024/1/17 17:01
* @createDate 2024/1/17 14:57
*/
public String execute(Object param, String url) throws IOException {
String str = "";
try {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(5000);
requestFactory.setReadTimeout(5000);
URI uri = URI.create(url);
HttpMethod method = HttpMethod.POST;
// ------------------------ header ------------------------
try (CloseableClientHttpRequest request = new CloseableClientHttpRequest(requestFactory.createRequest(uri, method))) {
request.addHeader("Content-type", "application/json;charset=utf-8");
// ------------------------ body ------------------------
//JSONObject body = new JSONObject();
if(param != null) {
String bodyText = new ObjectMapper().writeValueAsString(param);
try (OutputStream requestBody = request.getBody()) {
requestBody.write(bodyText.getBytes());
}
@Override
public String queryWorkCenter() throws JsonProcessingException {
List<SapWorkCenter> list = rep.findAll();
return list.size() > 0 ? objectMapper.writeValueAsString(list) : "";
}
// ------------------------ response ------------------------
try (ClientHttpResponse response = request.execute();
InputStream ist = response.getBody();
InputStreamReader istr = new InputStreamReader(ist, StandardCharsets.UTF_8);
BufferedReader bfreader = new BufferedReader(istr)) {
str = bfreader.readLine();
System.out.println(str);
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
return str;
}
}
......@@ -4,17 +4,27 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.huigou.topsun.sap.workcenter.application.SapWorkCenterApplication;
import com.huigou.topsun.sap.workcenter.domain.SapWorkCenter;
import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.annotation.SkipAuth;
import com.huigou.uasp.client.CommonController;
import com.huigou.util.SDO;
import com.huigou.util.StringUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
/**
* SapWorkCenterLogController SAP工作中心控制类
......@@ -72,7 +82,18 @@ public class SapWorkCenterLogController extends CommonController {
@SkipAuth
public String saveWorkCenter() {
boolean isSuccess = centerServer.saveWorkCenter();
HttpServletRequest request = this.getRequest();
SapWorkCenter workCenter;
try (InputStream ist = request.getInputStream();
InputStreamReader istr = new InputStreamReader(ist, StandardCharsets.UTF_8);) {
String requestBody = new BufferedReader(istr).lines().collect(Collectors.joining("\n"));
ObjectMapper objectMapper = new ObjectMapper();
workCenter = objectMapper.readValue(requestBody, SapWorkCenter.class);
} catch (IOException e) {
throw new RuntimeException(e);
}
boolean isSuccess = centerServer.saveWorkCenter(workCenter);
return success();
}
......
......@@ -9,6 +9,8 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.huigou.topsun.common.NumberToStringSerializer;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
/**
* @author YourUserName
......@@ -387,6 +389,19 @@ public class SapWorkCenter implements Serializable {
@Column(name = "UPDKZ", nullable = true, length = 255)
private String updkz;
@Override
public boolean equals(Object o) {
if (this == o) { return true; }
if (o == null || getClass() != o.getClass()) { return false; }
SapWorkCenter center = (SapWorkCenter) o;
return new EqualsBuilder().append(id, center.id).append(werks, center.werks).append(apbpl, center.apbpl).append(verwe, center.verwe).append(stext, center.stext).append(planv, center.planv).append(veran, center.veran).append(rgekz, center.rgekz).append(vorgschl, center.vorgschl).append(steus, center.steus).append(ktext, center.ktext).append(kapart, center.kapart).append(planr, center.planr).append(kalid, center.kalid).append(meins, center.meins).append(begzt, center.begzt).append(endzt, center.endzt).append(ngrad, center.ngrad).append(aznor, center.aznor).append(kapeh, center.kapeh).append(kapter, center.kapter).append(ueberlast, center.ueberlast).append(fork2, center.fork2).append(kapartJh, center.kapartJh).append(fort2, center.fort2).append(begda, center.begda).append(endda, center.endda).append(kostl, center.kostl).append(lstar1, center.lstar1).append(leinh1, center.leinh1).append(forml1, center.forml1).append(lstar2, center.lstar2).append(leinh2, center.leinh2).append(forml2, center.forml2).append(lstar3, center.lstar3).append(leinh3, center.leinh3).append(forml3, center.forml3).append(lstar4, center.lstar4).append(leinh4, center.leinh4).append(forml4, center.forml4).append(lstar5, center.lstar5).append(leinh5, center.leinh5).append(forml5, center.forml5).append(lstar6, center.lstar6).append(leinh6, center.leinh6).append(forml6, center.forml6).append(par01, center.par01).append(parv1, center.parv1).append(par02, center.par02).append(parv2, center.parv2).append(par03, center.par03).append(parv3, center.parv3).append(par04, center.par04).append(parv4, center.parv4).append(par05, center.par05).append(parv5, center.parv5).append(par06, center.par06).append(parv6, center.parv6).append(lstarRef1, center.lstarRef1).append(zbz, center.zbz).append(updkz, center.updkz).isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37).append(id).append(werks).append(apbpl).append(verwe).append(stext).append(planv).append(veran).append(rgekz).append(vorgschl).append(steus).append(ktext).append(kapart).append(planr).append(kalid).append(meins).append(begzt).append(endzt).append(ngrad).append(aznor).append(kapeh).append(kapter).append(ueberlast).append(fork2).append(kapartJh).append(fort2).append(begda).append(endda).append(kostl).append(lstar1).append(leinh1).append(forml1).append(lstar2).append(leinh2).append(forml2).append(lstar3).append(leinh3).append(forml3).append(lstar4).append(leinh4).append(forml4).append(lstar5).append(leinh5).append(forml5).append(lstar6).append(leinh6).append(forml6).append(par01).append(parv1).append(par02).append(parv2).append(par03).append(parv3).append(par04).append(parv4).append(par05).append(parv5).append(par06).append(parv6).append(lstarRef1).append(zbz).append(updkz).toHashCode();
}
public String getId() {
return this.id;
}
......
......@@ -8,10 +8,7 @@ import javax.persistence.Id;
import javax.persistence.PersistenceContext;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -27,11 +24,11 @@ public class PersistTool {
private EntityManager entityManager;
/**
* @param entitys 持久化数据集合 Set { Entity, HashMap }
* @description 持久化数据. 不执行.flush() 业务代码自行控制提交 <br>&nbsp;&nbsp;&nbsp;&nbsp;
* Entity 时,如果 ID 为空执行 Persist,否则执行 Merge <br>&nbsp;&nbsp;&nbsp;&nbsp;
* List 时,要求数据集格式 : <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* HashMap {”add“: List< Entity >,”up“: List< Entity >,”del“: List< Entity >}
* @param entitys 持久化数据集合 Set { Entity, HashMap }
* @author qinzhenguan
* @createDate 2023/12/26 16:44
*/
......@@ -65,11 +62,11 @@ public class PersistTool {
} else {
persistEntity(list.get(i));
}
// 这里不执行批量提交, 会导致在此之后 无法回滚此提交的更改
// if(i % 80 == 0 || i == (list.size() - 1)) {
// entityManager.flush();
// entityManager.clear();
// }
// 这里批量提交, 可能会导致在此之后 无法回滚此提交的更改 (未测试)
if(i % 80 == 0 || i == (list.size() - 1)) {
entityManager.flush();
entityManager.clear();
}
}
}
......@@ -89,7 +86,11 @@ public class PersistTool {
String id = (String) field.get(entity);
if(StringUtil.isBlank(id)){
if(field.getType().equals(BigDecimal.class)) {
// js 大数字丢失精度, 故 在代码中使用 String。
field.set(entity, String.valueOf(Snowflake.nextId()));
} else if(field.getType().equals(String.class)) {
String uuid = UUID.randomUUID().toString().replace("-", "");
field.set(entity, uuid);
}
entityManager.persist(entity);
} else {
......
package com.huigou.topsun.util;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.huigou.topsun.config.CloseableClientHttpRequest;
import org.springframework.http.HttpMethod;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import java.io.*;
import java.net.URI;
import java.nio.charset.StandardCharsets;
/**
* TestClientHttp 用于测试的 ClientHttp
*
* @author qinzhenguan
* @createDate 2024/01/19 15:43
**/
public class TestClientHttp {
/***
* description 模拟发送请求到 SAP
* @param param 请求体 body
* @param url 请求地址
* @return java.lang.String
* @author qinzhenguan
* @createDate 2024/1/17 17:01
*/
public static String execute(Object param, String url) throws IOException {
String str = "";
try {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(5000);
requestFactory.setReadTimeout(5000);
URI uri = URI.create(url);
HttpMethod method = HttpMethod.POST;
// ------------------------ header ------------------------
try (CloseableClientHttpRequest request = new CloseableClientHttpRequest(requestFactory.createRequest(uri, method))) {
request.addHeader("Content-type", "application/json;charset=utf-8");
// ------------------------ body ------------------------
//JSONObject body = new JSONObject();
if(param != null) {
String bodyText = new ObjectMapper().writeValueAsString(param);
try (OutputStream requestBody = request.getBody()) {
requestBody.write(bodyText.getBytes());
}
}
// ------------------------ response ------------------------
try (ClientHttpResponse response = request.execute();
InputStream ist = response.getBody();
InputStreamReader istr = new InputStreamReader(ist, StandardCharsets.UTF_8);
BufferedReader bfreader = new BufferedReader(istr)) {
str = bfreader.readLine();
System.out.println(str);
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
return str;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment