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

工作中心111

parent 324f972c
...@@ -62,4 +62,11 @@ function updateHandler(data) { ...@@ -62,4 +62,11 @@ function updateHandler(data) {
data.updkz = 'U'; data.updkz = 'U';
let url = DataUtil.composeURLByParam('/sapWorkCenter/goWorkCenterDetail.do', data); let url = DataUtil.composeURLByParam('/sapWorkCenter/goWorkCenterDetail.do', data);
UICtrl.addTabItem({tabid: 'workCenterEdit' + new Date().getTime(), text: "AAAA", url: url}); 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.ClientHttpRequest;
import org.springframework.http.client.ClientHttpResponse; import org.springframework.http.client.ClientHttpResponse;
......
package com.huigou.topsun.sap.workcenter.application; package com.huigou.topsun.sap.workcenter.application;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.huigou.topsun.sap.workcenter.domain.SapWorkCenter;
import com.huigou.util.SDO; import com.huigou.util.SDO;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -18,5 +19,5 @@ public interface SapWorkCenterApplication { ...@@ -18,5 +19,5 @@ public interface SapWorkCenterApplication {
Map<String, Object> saveWorkCenterDetail(SDO sdo); Map<String, Object> saveWorkCenterDetail(SDO sdo);
boolean saveWorkCenter(); boolean saveWorkCenter(SapWorkCenter workCenter);
} }
...@@ -5,24 +5,19 @@ import com.fasterxml.jackson.core.JsonProcessingException; ...@@ -5,24 +5,19 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; 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.repository.SapWorkCenterRepository;
import com.huigou.topsun.sap.workcenter.application.SapWorkCenterApplication; import com.huigou.topsun.sap.workcenter.application.SapWorkCenterApplication;
import com.huigou.topsun.sap.workcenter.domain.SapWorkCenter; 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 com.huigou.util.SDO;
import lombok.RequiredArgsConstructor; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.*; import javax.persistence.EntityManager;
import java.net.URI; import javax.persistence.PersistenceContext;
import java.nio.charset.StandardCharsets; import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* @author YourUserName * @author YourUserName
...@@ -33,6 +28,10 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication { ...@@ -33,6 +28,10 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication {
private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;
@PersistenceContext(unitName = "system")
private EntityManager entityManager;
private final PersistTool persist;
private final SapWorkCenterRepository rep; private final SapWorkCenterRepository rep;
/*** /***
...@@ -47,7 +46,7 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication { ...@@ -47,7 +46,7 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication {
HashMap<String, Object> param = new HashMap<>(12); HashMap<String, Object> param = new HashMap<>(12);
List<SapWorkCenter> workCenters; List<SapWorkCenter> workCenters;
try { 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(); String resultStr = JSONObject.parseObject(execute).get("data").toString();
workCenters = objectMapper.readValue(resultStr, new TypeReference<List<SapWorkCenter>>() {}); workCenters = objectMapper.readValue(resultStr, new TypeReference<List<SapWorkCenter>>() {});
} catch (Exception e) { } catch (Exception e) {
...@@ -60,18 +59,6 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication { ...@@ -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 系统,保存工作中心数据 * @description 发送请求到 SAP 系统,保存工作中心数据
* @param sdo 提交的数据集 * @param sdo 提交的数据集
...@@ -85,7 +72,7 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication { ...@@ -85,7 +72,7 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication {
HashMap<String, Object> param = new HashMap<>(12); HashMap<String, Object> param = new HashMap<>(12);
param.put("data", sdo.getProperties()); param.put("data", sdo.getProperties());
try { 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) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
...@@ -93,56 +80,31 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication { ...@@ -93,56 +80,31 @@ public class SapWorkCenterApplicationImpl implements SapWorkCenterApplication {
} }
@Override @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"); System.out.println("GG");
return false; return false;
} }
/*** /**
* description 模拟发送请求到 SAP * description 模拟 SAP 接口 (临时)
* @param param 请求体 body
* @param url 请求地址
* @return java.lang.String * @return java.lang.String
* @author qinzhenguan * @author qinzhenguan
* @createDate 2024/1/17 17:01 * @createDate 2024/1/17 14:57
*/ */
public String execute(Object param, String url) throws IOException { @Override
String str = ""; public String queryWorkCenter() throws JsonProcessingException {
try { List<SapWorkCenter> list = rep.findAll();
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); return list.size() > 0 ? objectMapper.writeValueAsString(list) : "";
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;
}
} }
...@@ -4,17 +4,27 @@ import com.fasterxml.jackson.core.JsonProcessingException; ...@@ -4,17 +4,27 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.huigou.topsun.sap.workcenter.application.SapWorkCenterApplication; 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.ControllerMapping;
import com.huigou.uasp.annotation.SkipAuth; import com.huigou.uasp.annotation.SkipAuth;
import com.huigou.uasp.client.CommonController; import com.huigou.uasp.client.CommonController;
import com.huigou.util.SDO; import com.huigou.util.SDO;
import com.huigou.util.StringUtil; import com.huigou.util.StringUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Controller; 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.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* SapWorkCenterLogController SAP工作中心控制类 * SapWorkCenterLogController SAP工作中心控制类
...@@ -72,7 +82,18 @@ public class SapWorkCenterLogController extends CommonController { ...@@ -72,7 +82,18 @@ public class SapWorkCenterLogController extends CommonController {
@SkipAuth @SkipAuth
public String saveWorkCenter() { 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(); return success();
} }
......
...@@ -9,6 +9,8 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; ...@@ -9,6 +9,8 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.huigou.topsun.common.NumberToStringSerializer; import com.huigou.topsun.common.NumberToStringSerializer;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
/** /**
* @author YourUserName * @author YourUserName
...@@ -386,7 +388,20 @@ public class SapWorkCenter implements Serializable { ...@@ -386,7 +388,20 @@ public class SapWorkCenter implements Serializable {
*/ */
@Column(name = "UPDKZ", nullable = true, length = 255) @Column(name = "UPDKZ", nullable = true, length = 255)
private String updkz; 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() { public String getId() {
return this.id; return this.id;
} }
......
...@@ -8,10 +8,7 @@ import javax.persistence.Id; ...@@ -8,10 +8,7 @@ import javax.persistence.Id;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.*;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -27,11 +24,11 @@ public class PersistTool { ...@@ -27,11 +24,11 @@ public class PersistTool {
private EntityManager entityManager; private EntityManager entityManager;
/** /**
* @description 持久化数据. 不执行.flush() 业务代码自行控制提交 <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param entitys 持久化数据集合 Set { Entity, HashMap }
* @description 持久化数据. 不执行.flush() 业务代码自行控制提交 <br>&nbsp;&nbsp;&nbsp;&nbsp;
* Entity 时,如果 ID 为空执行 Persist,否则执行 Merge <br>&nbsp;&nbsp;&nbsp;&nbsp; * Entity 时,如果 ID 为空执行 Persist,否则执行 Merge <br>&nbsp;&nbsp;&nbsp;&nbsp;
* List 时,要求数据集格式 : <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * List 时,要求数据集格式 : <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* HashMap {”add“: List< Entity >,”up“: List< Entity >,”del“: List< Entity >} * HashMap {”add“: List< Entity >,”up“: List< Entity >,”del“: List< Entity >}
* @param entitys 持久化数据集合 Set { Entity, HashMap }
* @author qinzhenguan * @author qinzhenguan
* @createDate 2023/12/26 16:44 * @createDate 2023/12/26 16:44
*/ */
...@@ -65,11 +62,11 @@ public class PersistTool { ...@@ -65,11 +62,11 @@ public class PersistTool {
} else { } else {
persistEntity(list.get(i)); persistEntity(list.get(i));
} }
// 这里不执行批量提交, 会导致在此之后 无法回滚此提交的更改 // 这里批量提交, 可能会导致在此之后 无法回滚此提交的更改 (未测试)
// if(i % 80 == 0 || i == (list.size() - 1)) { if(i % 80 == 0 || i == (list.size() - 1)) {
// entityManager.flush(); entityManager.flush();
// entityManager.clear(); entityManager.clear();
// } }
} }
} }
...@@ -89,7 +86,11 @@ public class PersistTool { ...@@ -89,7 +86,11 @@ public class PersistTool {
String id = (String) field.get(entity); String id = (String) field.get(entity);
if(StringUtil.isBlank(id)){ if(StringUtil.isBlank(id)){
if(field.getType().equals(BigDecimal.class)) { if(field.getType().equals(BigDecimal.class)) {
// js 大数字丢失精度, 故 在代码中使用 String。
field.set(entity, String.valueOf(Snowflake.nextId())); 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); entityManager.persist(entity);
} else { } 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