Commit 56d3a331 authored by wanghang's avatar wanghang

Merge remote-tracking branch 'origin/dev' into dev

parents d7074f39 204a58e5
...@@ -20,7 +20,7 @@ function loadResourceGrid() { ...@@ -20,7 +20,7 @@ function loadResourceGrid() {
deleteHandler: function (){ deleteHandler: function (){
var _grid = UICtrl.getGridManager('#resourceGrid'); var _grid = UICtrl.getGridManager('#resourceGrid');
DataUtil.delSelectedRows({ DataUtil.delSelectedRows({
action: 'processResource/deleteProcessResource.ajax', action: 'process/deleteProcessResource.ajax',
param: {}, param: {},
gridManager: _grid, gridManager: _grid,
idFieldName: 'processResourceId', idFieldName: 'processResourceId',
...@@ -37,19 +37,23 @@ function loadResourceGrid() { ...@@ -37,19 +37,23 @@ function loadResourceGrid() {
required: true, type: "select", required: true, type: "select",
data: { data: {
type: 'system', type: 'system',
name: "resourceSelect", name: "resourceNameGroup",
back: { back: {
resourceId: "resourceId", id: "resourceId",
resourceName:"resourceName", gxmc:"resourceName",
version:"version", version:"version",
} },
getParam: function () {
return {paramValue: $("#processType").val()}
},
}, },
} }
}, },
{ display: "版本", name: "version", width: 200, minWidth: 60, type: "string", align: "left" }, { display: "版本", name: "version", width: 200, minWidth: 60, type: "string", align: "left" },
], ],
dataAction: "server", dataAction: "server",
url: web_app.name + '/processResource/slicedProcessResourceList.ajax', url: web_app.name + '/process/slicedProcessResourceList.ajax',
parms:{processId:$("#processId").val()},
pageSize: 20, pageSize: 20,
usePager: true, usePager: true,
toolbar: toolbarOptions, toolbar: toolbarOptions,
...@@ -79,7 +83,7 @@ function loadProcessMaterialGrid() { ...@@ -79,7 +83,7 @@ function loadProcessMaterialGrid() {
deleteHandler: function (){ deleteHandler: function (){
var _grid = UICtrl.getGridManager('#processMaterialGrid'); var _grid = UICtrl.getGridManager('#processMaterialGrid');
DataUtil.delSelectedRows({ DataUtil.delSelectedRows({
action: 'processMaterialItem/deleteProcessMaterialItem.ajax', action: 'process/deleteProcessMaterialItem.ajax',
param: {}, param: {},
gridManager: _grid, gridManager: _grid,
idFieldName: 'processMaterialItemId', idFieldName: 'processMaterialItemId',
...@@ -117,7 +121,8 @@ function loadProcessMaterialGrid() { ...@@ -117,7 +121,8 @@ function loadProcessMaterialGrid() {
{ display: "物料相关内容", name: "materialJson", width: 400, minWidth: 60, type: "string", align: "left" }, { display: "物料相关内容", name: "materialJson", width: 400, minWidth: 60, type: "string", align: "left" },
], ],
dataAction: "server", dataAction: "server",
url: web_app.name + '/processMaterialItem/slicedProcessMaterialItems.ajax', url: web_app.name + '/process/slicedProcessMaterialItems.ajax',
parms:{processId:$("#processId").val()},
pageSize: 20, pageSize: 20,
usePager: true, usePager: true,
toolbar: toolbarOptions, toolbar: toolbarOptions,
......
...@@ -106,7 +106,7 @@ function updateHandler(row){ ...@@ -106,7 +106,7 @@ function updateHandler(row){
UICtrl.addTabItem({ UICtrl.addTabItem({
tabid: 'processDetail'+row.processId, tabid: 'processDetail'+row.processId,
text: "修改工序", text: "修改工序",
url: web_app.name + '/process/addProcessDetail.do?processId='+row.processId url: web_app.name + '/process/showProcessDetail.do?processId='+row.processId
}) })
} }
......
package com.huigou.topsun.sap.common;
import com.huigou.cache.SystemCache;
import com.huigou.topsun.sap.common.serializer.MessageSerializer;
import com.huigou.uasp.bmp.common.application.BaseApplication;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Base64;
import java.util.Map;
import java.util.stream.Collectors;
/**
*/
@Component
public class DefaultHttpClient extends BaseApplication implements HttpClient {
private final static Logger LOG = LoggerFactory.getLogger(DefaultHttpClient.class);
private final MessageSerializer messageSerializer;
private final org.apache.http.client.HttpClient http = HttpClientBuilder.create().build();
@Autowired
public DefaultHttpClient(MessageSerializer messageSerializer) {
this.messageSerializer = messageSerializer;
}
@Override
public String execute(Map<String, Object> param,String url) throws IOException {
//系统接口地址
// ip地址
String ip = SystemCache.getParameter("sap.service.ip", String.class);
// 上下文
String applicationContext = SystemCache.getParameter("sap.service.application.context", String.class);
// 用户名
String password = SystemCache.getParameter("ap.service.password", String.class);
// 密码
String username = SystemCache.getParameter("sap.service.username", String.class);
// 客户端
String client = SystemCache.getParameter("sap.service.client", String.class);
//String serverUrl = "http://192.168.3.109:8000/sap/bc/erp_ep/bd_mastdata/material?sap-client=200";
StringBuffer serverUrl = new StringBuffer();
serverUrl
.append(ip)
.append(applicationContext)
.append(url)
.append("?")
.append(client);
HttpPost post = new HttpPost(serverUrl.toString());
String usernameAndPassword = username + ":" + password;
post.addHeader("Authorization", "Basic " + Base64.getEncoder().encodeToString(usernameAndPassword.getBytes()));
//post.addHeader("token",SystemCache.getParameter("material.token",String.class));
String requestText = messageSerializer.serialize(param);
LOG.info("requestText={}", requestText);
post.setEntity(new StringEntity(requestText, ContentType.APPLICATION_JSON));
LOG.info("post={}", post);
HttpResponse response;
String responseText = "";
try {
response = http.execute(post);
LOG.info("response={}", response);
StatusLine statusLine = response.getStatusLine();
LOG.info("statusLine={}", statusLine);
int statusCode = statusLine.getStatusCode();
if (statusLine.getStatusCode() < HttpStatus.SC_OK || statusLine.getStatusCode() >= HttpStatus.SC_MULTIPLE_CHOICES) {
throw new IOException(String.format("调用SAP系统出错,statusCode=%s, %s", statusCode, statusLine.getReasonPhrase()));
}
responseText = IOUtils.readLines(response.getEntity().getContent())
.stream()
.collect(Collectors.joining("\n"));
LOG.info("responseText={}", responseText);
LOG.info("----------->> 调用SAP接口 {} 成功 <<-----------", serverUrl);
}finally {
post.releaseConnection();
}
return responseText;
}
}
package com.huigou.topsun.sap.common;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Endpoint {
}
package com.huigou.topsun.sap.common;
import com.alibaba.fastjson.JSONWriter;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.MimeTypeUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletResponse;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
@Aspect
@Component
public class EndpointInterceptor {
private final static Logger LOG = LoggerFactory.getLogger(com.huigou.topsun.sap.common.EndpointInterceptor.class);
@Around("@annotation(Endpoint)")
public Object intercept(ProceedingJoinPoint pjp) throws Throwable {
// HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
Map<String, Object> result = new HashMap<>(2);
try {
pjp.proceed(pjp.getArgs());
result.put("type", HttpServletResponse.SC_OK);
} catch (IllegalArgumentException iae) {
LOG.error("", iae);
result.put("type", HttpServletResponse.SC_BAD_REQUEST);
result.put("mesg", "请求失败," + iae.getMessage());
} catch (Exception e) {
LOG.error("", e);
result.put("type", HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
result.put("mesg", "请求失败");
}
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
response.setContentType(MimeTypeUtils.APPLICATION_JSON_VALUE);
try (JSONWriter writer = new JSONWriter(response.getWriter())) {
writer.writeObject(result);
writer.flush();
}
return null;
}
}
package com.huigou.topsun.sap.common;
import java.io.IOException;
import java.util.Map;
/**
* esb客户端,用于调用esb服务。
*/
public interface HttpClient {
/**
* param 要传递的数据,包括结构,在请求前会序列化和转json,不用特殊处理
* url 采用restful风格接口,ip、端口、上下文基本固定,只传名称
* 比如:"http://192.168.3.109:8000/sap/bc/erp_ep/bd_mastdata/material?sap-client=200";
* @param param
* @param url
* @return
* @throws IOException
*/
String execute(Map<String, Object> param,String url) throws IOException;
}
package com.huigou.topsun.sap.common.domain;
import java.util.HashMap;
import java.util.Map;
/**
* 消息
*/
public class Message {
/**
* 消息头
*/
private final Map<String, Object> body = new HashMap<>(16);
public Map<String, Object> getBody() {
return body;
}
public Message setBody(String name, Object value) {
body.put(name, value);
return this;
}
}
/**
* 同sap进行数据同步相关
*/
package com.huigou.topsun.sap.common;
\ No newline at end of file
package com.huigou.topsun.sap.common.serializer;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.huigou.topsun.sap.common.domain.Message;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component("messageCodec")
public class MessageCodec implements MessageSerializer, MessageDeserializer {
@Override
public String serialize(Map<String, Object> map) {
return JSON.toJSONString(map, SerializerFeature.DisableCircularReferenceDetect);
}
@Override
public Message deserialze(String text) {
JSONObject jsonObject = JSONObject.parseObject(text);
Map<String, Object> body = jsonObject.getJSONObject("body");
Message message = new Message();
message.getBody().putAll(body);
return message;
}
}
package com.huigou.topsun.sap.common.serializer;
import com.huigou.topsun.sap.common.domain.Message;
/**
* 消息反序列化器
*/
public interface MessageDeserializer {
Message deserialze(String text);
}
package com.huigou.topsun.sap.common.serializer;
import java.util.Map;
/**
* 消息序列化器
*/
public interface MessageSerializer {
String serialize(Map<String, Object> map);
}
package com.huigou.topsun.sap.common.support;
import com.huigou.topsun.sap.common.domain.Message;
import com.huigou.topsun.sap.common.serializer.MessageDeserializer;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.MethodParameter;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.stream.Collectors;
public class MessageHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
private final static Logger LOG = LoggerFactory.getLogger(MessageHandlerMethodArgumentResolver.class);
private MessageDeserializer messageDeserializer;
public MessageHandlerMethodArgumentResolver(MessageDeserializer messageDeserializer) {
this.messageDeserializer = messageDeserializer;
}
@Override
public boolean supportsParameter(MethodParameter parameter) {
return Message.class.isAssignableFrom(parameter.getParameterType());
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
String requestText;
try {
requestText = IOUtils.readLines(webRequest.getNativeRequest(HttpServletRequest.class).getReader()).stream()
.collect(Collectors.joining("\n"));
} catch (IOException ioe) {
throw new IllegalArgumentException("解析SAP消息出错", ioe);
}
LOG.info("{},收到SAP消息: {}", parameter.getMethod().toString(), requestText);
return messageDeserializer.deserialze(requestText);
}
}
...@@ -18,4 +18,8 @@ public interface ProcessMaterialItemApplication { ...@@ -18,4 +18,8 @@ public interface ProcessMaterialItemApplication {
void saveProcessMaterialItem(String processId, List<ProcessMaterialItem> processMaterialList); void saveProcessMaterialItem(String processId, List<ProcessMaterialItem> processMaterialList);
List<ProcessMaterialItem> slicedProcessMaterialItems(String processId);
void deleteByIds(List<String> ids);
} }
...@@ -2,8 +2,10 @@ package com.huigou.topsun.technology.application; ...@@ -2,8 +2,10 @@ package com.huigou.topsun.technology.application;
import com.huigou.topsun.technology.domain.model.ProcessResource; import com.huigou.topsun.technology.domain.model.ProcessResource;
import com.huigou.topsun.technology.vo.ProcessResourceVo;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author 16508 * @author 16508
...@@ -12,10 +14,16 @@ import java.util.List; ...@@ -12,10 +14,16 @@ import java.util.List;
*/ */
public interface ProcessResourceApplication { public interface ProcessResourceApplication {
public static final String QUERY_XML_FILE_PATH = "config/topsun/technology/processResource.xml";
ProcessResource saveProcessResource(ProcessResource processResource); ProcessResource saveProcessResource(ProcessResource processResource);
void deleteByTechnologyProcessId(String technologyProcessId); void deleteByTechnologyProcessId(String technologyProcessId);
void deleteByIds(List<String> ids);
void saveProcessResource(String processId, List<ProcessResource> resourceList); void saveProcessResource(String processId, List<ProcessResource> resourceList);
List<ProcessResourceVo> slicedProcessResourceList(String processId);
} }
...@@ -37,6 +37,18 @@ public class ProcessMaterialItemApplicationImpl implements ProcessMaterialItemAp ...@@ -37,6 +37,18 @@ public class ProcessMaterialItemApplicationImpl implements ProcessMaterialItemAp
processMaterialItemRepository.save(processMaterialItem); processMaterialItemRepository.save(processMaterialItem);
}); });
} }
@Override
public List<ProcessMaterialItem> slicedProcessMaterialItems(String processId) {
return processMaterialItemRepository.findByProcessId(processId);
}
@Override
public void deleteByIds(List<String> ids) {
ids.forEach(id->{
processMaterialItemRepository.delete(id);
});
}
} }
......
package com.huigou.topsun.technology.application.impl; package com.huigou.topsun.technology.application.impl;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.topsun.technology.application.ProcessResourceApplication; import com.huigou.topsun.technology.application.ProcessResourceApplication;
import com.huigou.topsun.technology.domain.model.ProcessResource; import com.huigou.topsun.technology.domain.model.ProcessResource;
import com.huigou.topsun.technology.repository.ProcessResourceRepository; import com.huigou.topsun.technology.repository.ProcessResourceRepository;
import com.huigou.topsun.technology.vo.ProcessResourceVo;
import com.huigou.uasp.bmp.common.application.BaseApplication;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author 16508 * @author 16508
...@@ -14,7 +18,7 @@ import java.util.List; ...@@ -14,7 +18,7 @@ import java.util.List;
* @createDate 2023-11-22 11:04:03 * @createDate 2023-11-22 11:04:03
*/ */
@Service @Service
public class ProcessResourceApplicationImpl implements ProcessResourceApplication { public class ProcessResourceApplicationImpl extends BaseApplication implements ProcessResourceApplication {
@Resource @Resource
private ProcessResourceRepository processResourceRepository; private ProcessResourceRepository processResourceRepository;
...@@ -29,6 +33,13 @@ public class ProcessResourceApplicationImpl implements ProcessResourceApplicatio ...@@ -29,6 +33,13 @@ public class ProcessResourceApplicationImpl implements ProcessResourceApplicatio
processResourceRepository.delete(processResourceList); processResourceRepository.delete(processResourceList);
} }
@Override
public void deleteByIds(List<String> ids) {
ids.forEach(id->{
processResourceRepository.delete(id);
});
}
@Override @Override
public void saveProcessResource(String processId, List<ProcessResource> resourceList) { public void saveProcessResource(String processId, List<ProcessResource> resourceList) {
resourceList resourceList
...@@ -37,6 +48,12 @@ public class ProcessResourceApplicationImpl implements ProcessResourceApplicatio ...@@ -37,6 +48,12 @@ public class ProcessResourceApplicationImpl implements ProcessResourceApplicatio
processResourceRepository.save(processResource); processResourceRepository.save(processResource);
}); });
} }
@Override
public List<ProcessResourceVo> slicedProcessResourceList(String processId) {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "slicedProcessResourceList");
return this.sqlExecutorDao.queryToList(queryDescriptor.getSql(),ProcessResourceVo.class,processId);
}
} }
......
...@@ -2,9 +2,12 @@ package com.huigou.topsun.technology.controller; ...@@ -2,9 +2,12 @@ package com.huigou.topsun.technology.controller;
import com.huigou.cache.DictUtil; import com.huigou.cache.DictUtil;
import com.huigou.topsun.technology.application.ProcessApplication; import com.huigou.topsun.technology.application.ProcessApplication;
import com.huigou.topsun.technology.application.ProcessMaterialItemApplication;
import com.huigou.topsun.technology.application.ProcessResourceApplication;
import com.huigou.topsun.technology.domain.model.ProcessMaterialItem; import com.huigou.topsun.technology.domain.model.ProcessMaterialItem;
import com.huigou.topsun.technology.domain.model.ProcessResource; import com.huigou.topsun.technology.domain.model.ProcessResource;
import com.huigou.topsun.technology.domain.query.ProcessQueryRequest; import com.huigou.topsun.technology.domain.query.ProcessQueryRequest;
import com.huigou.topsun.technology.vo.ProcessResourceVo;
import com.huigou.topsun.technology.vo.ProcessVo; import com.huigou.topsun.technology.vo.ProcessVo;
import com.huigou.uasp.annotation.ControllerMapping; import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.client.CommonController; import com.huigou.uasp.client.CommonController;
...@@ -29,6 +32,10 @@ public class ProcessController extends CommonController { ...@@ -29,6 +32,10 @@ public class ProcessController extends CommonController {
@Resource @Resource
private ProcessApplication processApplication; private ProcessApplication processApplication;
@Resource
private ProcessResourceApplication processResourceApplication;
@Resource
private ProcessMaterialItemApplication processMaterialItemApplication;
public String forwardProcessList(){ public String forwardProcessList(){
Map<String, String> processType = DictUtil.getDictionary("processType"); Map<String, String> processType = DictUtil.getDictionary("processType");
...@@ -81,4 +88,31 @@ public class ProcessController extends CommonController { ...@@ -81,4 +88,31 @@ public class ProcessController extends CommonController {
return success(); return success();
} }
public String slicedProcessResourceList(){
SDO sdo = getSDO();
String processId = sdo.getString("processId");
List<ProcessResourceVo> resourceList = processResourceApplication.slicedProcessResourceList(processId);
return packGridDataAndResult(resourceList);
}
public String deleteProcessResource(){
SDO sdo = getSDO();
List<String> ids = sdo.getIds();
processResourceApplication.deleteByIds(ids);
return success();
}
public String slicedProcessMaterialItems(){
SDO sdo = getSDO();
String processId = sdo.getString("processId");
List<ProcessMaterialItem> processMaterialItems = processMaterialItemApplication.slicedProcessMaterialItems(processId);
return packGridDataAndResult(processMaterialItems);
}
public String deleteProcessMaterialItem(){
SDO sdo = getSDO();
List<String> ids = sdo.getIds();
processMaterialItemApplication.deleteByIds(ids);
return success();
}
} }
package com.huigou.topsun.technology.vo;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
* 工序资源
* @TableName process_resource
*/
@Data
public class ProcessResourceVo implements Serializable {
/**
* ID
*/
private String processResourceId;
/**
* 所属工序ID
*/
private String processId;
/**
* 使用的资源ID
*/
private String resourceId;
/**
* 版本号
*/
private String version;
/**
* 资源名称
*/
private String resourceName;
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<query-mappings>
<query name="slicedProcessResourceList" label="工序资源表" table="process_resource">
<sql-query>
SELECT
pr.process_resource_id,
pr.process_id,
pr.resource_id,
CASE WHEN p.process_type = 'pakeage' THEN
( SELECT gxmc FROM res_bz t WHERE t.id = pr.resource_id )
WHEN p.process_type = 'printing' THEN
( SELECT gxmc FROM res_ys t WHERE t.id = pr.resource_id )
WHEN p.process_type = 'cropping' THEN
( SELECT gxmc FROM res_cj t WHERE t.id = pr.resource_id ) ELSE '' end AS resource_name
FROM
process_resource pr left join process p on p.process_id = pr.process_id
WHERE pr.process_id = ?
</sql-query>
</query>
</query-mappings>
\ 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