1,申请物料编码

This commit is contained in:
大米 2023-12-08 10:51:42 +08:00
parent 056f908093
commit b2dc5fa1b7
8 changed files with 429 additions and 12 deletions

View File

@ -11,6 +11,7 @@ import com.nflg.product.bomnew.pojo.dto.OriginalSaveBomDTO;
import com.nflg.product.bomnew.pojo.query.OriginalBomQuery;
import com.nflg.product.bomnew.pojo.vo.BomOriginalListVO;
import com.nflg.product.bomnew.service.BomNewOriginalParentService;
import com.nflg.product.bomnew.service.MaterialService;
import com.nflg.product.bomnew.util.EecExcelUtil;
import com.nflg.product.bomnew.util.TreeNode;
import com.nflg.product.bomnew.util.VUtils;
@ -147,5 +148,18 @@ public class OriginalBomApi extends BaseApi {
return ResultVO.success(true);
}
@Resource
MaterialService materialService;
@ApiOperation("testaddMaterial")
@GetMapping("新增物料")
@Transactional(rollbackFor = Exception.class)
public ResultVO<String> importBom(@RequestParam("drawingNo")String drawingNo,
@RequestParam("materialName")String materialName,
@RequestParam("materialCategoryCode")String materialCategoryCode) throws IOException {
materialService.addMaterial(drawingNo, materialName,materialCategoryCode);
return ResultVO.success("true");
}
}

View File

@ -81,6 +81,9 @@ public class NacosConfig {
@Value("${ini.share.path}")
private String sharePath;
@Value("${material.add.url}")
private String addMaterialUrl;

View File

@ -94,11 +94,7 @@ public class MaterialMainDTO implements Serializable {
private List<String> materialTypeThreeFiles=new ArrayList<>();
private Object materialTypeZeroFile=new Object();
private Object materialTypeOneFile=new Object();
private Object materialTypeTwoFile=new Object();
private List<String> attrs=new ArrayList<>();

View File

@ -2,15 +2,21 @@ package com.nflg.product.bomnew.service;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.nflg.product.base.core.conmon.util.SessionUtil;
import com.nflg.product.base.core.exception.NflgBusinessException;
import com.nflg.product.bomnew.client.MaterialMainClient;
import com.nflg.product.bomnew.config.NacosConfig;
import com.nflg.product.bomnew.pojo.dto.MaterialMainDTO;
import com.nflg.product.bomnew.util.HttpUtils;
import nflg.product.common.constant.STATE;
import nflg.product.common.vo.ResultVO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@Service
public class MaterialService {
@ -26,7 +32,7 @@ public class MaterialService {
* @param materialCategoryCode 物料类别编码
* @return 物料编码
*/
public String addMaterial(String drawingNo, String materialName, String materialCategoryCode){
public String addMaterial(String drawingNo, String materialName, String materialCategoryCode) throws IOException {
MaterialMainDTO materialMainDTO=new MaterialMainDTO();
materialMainDTO.setMaterialName(materialName);
materialMainDTO.setDrawingNo(drawingNo);
@ -34,15 +40,13 @@ public class MaterialService {
materialMainDTO.setMaterialCategoryCode(materialCategoryCode);
materialMainDTO.setOpEnum(1);
materialMainDTO.setApplyDeptName(SessionUtil.getDepartName());
String token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySW5mbyI6IntcImRlcGFydE5hbWVcIjpcIuS_oeaBr-a1geeoi-S4reW_gy9JVOaUr-aMgVwiLFwiZGVwYXJ0Um93SWRcIjoxNTg1MTk2OTc4NDEzNjk0OTc4LFwiZnVsbERlcHROYW1lXCI6XCJPVT1JVOaUr-aMgSxPVT3kv6Hmga_mtYHnqIvkuK3lv4MsT1U956aP5bu65Y2X5pa56Lev6Z2i5py65qKw5pyJ6ZmQ5YWs5Y-4LERDPW5mbGdcIixcInF1ZXJ5RGF0YVwiOjMsXCJyZWFsTmFtZVwiOlwi6YOR5Yab5qaVXCIsXCJyb3dJZFwiOjE1ODUxNjQ2NjgzMzU0Mzk4ODEsXCJ1c2VyQ29kZVwiOlwiUUhJMTcwNjIxMDBcIixcInVzZXJOYW1lXCI6XCJRSEkxNzA2MjEwMFwifSIsImV4cCI6MTcwMjAzMTg2MiwianRpIjoiMjdmMjg2MDUtNzgxZi00MDQwLWJkZDMtMzcwNGI2MWU1YzJiIn0.hpzLa9-ZYEqclA5iT-Jv62Ow3PduuP7Gqyvb7uYJcRE";
// String token=SessionUtil.getsessionKey();
HttpUtils httpUtils=new HttpUtils();
String s = httpUtils.doPost(NacosConfig.getNacosConfig().getAddMaterialUrl(),JSON.toJSONString(materialMainDTO),token);
return s;
ResultVO<String> stringResultVO = materialMainClient.addMaterialMainEntity(materialMainDTO);
if(stringResultVO.getState().equals(STATE.Success)){
return stringResultVO.getData();
}
else {
throw new NflgBusinessException(STATE.Error, "申请编码失败"+stringResultVO.getMsg());
}
}
}

View File

@ -0,0 +1,393 @@
package com.nflg.product.bomnew.util;
import com.nflg.product.base.core.exception.NflgBusinessException;
import lombok.extern.slf4j.Slf4j;
import nflg.product.common.constant.STATE;
import okhttp3.*;
import org.springframework.http.HttpStatus;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* http请求工具类封装于okHttp3
*/
@Slf4j
public class HttpUtils {
//请求类
private OkHttpClient okHttpClient;
//请求头类型
private final MediaType jsonMediaType = MediaType.parse("application/json;charset=utf-8");
//请求时间
private int timeout = 80;
public HttpUtils() {
}
public HttpUtils(int timeout) {
this.timeout = timeout;
}
/*请求返回响应头*/
/**
* get请求返回响应头
*
* @param url 请求地址
* @return Response
* @throws IOException e
*/
public Response doGetRtnRsp(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.get()
.build();
Response response = getOkHttpClient().newCall(request).execute();
if (response.code() != HttpStatus.OK.value()) {
log.error("请求失败" + (response.body() == null ? "" : "" + response.body().string()));
throw new NflgBusinessException(STATE.ParamErr, "请求失败" + (response.body() == null ? "" : "" + response.body().string()));
}
return response;
}
/**
* get请求自动构造参数传空则不构造
*
* @param url URL地址
* @param map 参数
* @return Response
* @throws IOException e
*/
public Response doGetRtnRsp(String url, Map<String, String> map) throws IOException {
Request request = new Request.Builder()
.url(url + buildGetParams(map))
.get()
.build();
return getOkHttpClient().newCall(request).execute();
}
/**
* post请求表单
*
* @param url URL地址
* @param map 参数
* @return Response
* @throws IOException e
*/
public Response doPostRtnRsp(String url, Map<String, String> map) throws IOException {
RequestBody requestBody = buildRequestBody(map);
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
return getOkHttpClient().newCall(request).execute();
}
/**
* post请求JSON
*
* @param url URL地址
* @param json json字符串
* @return Response
* @throws IOException e
*/
public Response doPostRtnRsp(String url, String json,String token) throws IOException {
RequestBody requestBody = RequestBody.create(jsonMediaType, json);
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.addHeader("authorization",token)
.build();
return getOkHttpClient().newCall(request).execute();
}
/**
* 表单请求
*
* @param url URL地址
* @param map 参数
* @return Response
* @throws IOException e
*/
public Response doFormUrlEncodedPostRtnRsp(String url, Map<String, String> map) throws IOException {
RequestBody requestBody = buildRequestBody(map);
Request request = new Request.Builder()
.url(url)
.header("Content-Type", "application/x-www-form-urlencoded")
.post(requestBody)
.build();
return getOkHttpClient().newCall(request).execute();
}
/**
* form-data表单请求兼容图片png\jpg\jpeg上传
*
* @param url URL地址
* @param map 参数
* @return Response
* @throws IOException e
*/
public Response doFileRequestBodyRtnRsp(String url, Map<String, String> map, File file) throws Exception {
RequestBody requestBody = buildFileRequestBody(map,file);
Request request = new Request.Builder()
.url(url)
.header("Content-Type", "multipart/form-data")
.post(requestBody)
.build();
return getOkHttpClient().newCall(request).execute();
}
/*请求返回响应内容*/
/**
* get请求表单
*
* @param url 请求地址
* @return String
* @throws IOException e
*/
public String doGet(String url) throws IOException {
Response response = doGetRtnRsp(url);
if (response == null || response.body() == null) {
return null;
}
return response.body().string();
}
/**
* get请求表单自动构造参数
*
* @param url 请求地址
* @param map 参数
* @return String
* @throws IOException e
*/
public String doGet(String url, Map<String, String> map) throws IOException {
Response response = doGetRtnRsp(url, map);
if (response == null || response.body() == null) {
return null;
}
return response.body().string();
}
/**
* post请求表单
*
* @param url 请求地址
* @param map 参数
* @return String
* @throws IOException e
*/
public String doPost(String url, Map<String, String> map) throws IOException {
Response response = doPostRtnRsp(url, map);
if (response == null || response.body() == null) {
return null;
}
return response.body().string();
}
/**
* post请求JSON
*
* @param url 请求地址
* @param json json字符串
* @return String
* @throws IOException e
*/
public String doPost(String url, String json,String token) throws IOException {
System.out.println(url);
System.out.println(json);
Response response = doPostRtnRsp(url, json,token);
if (response == null || response.body() == null) {
return null;
}
return response.body().string();
}
/**
* 表单请求
*
* @param url URL地址
* @param map 参数
* @return String
* @throws IOException e
*/
public String doformPost(String url, Map<String, String> map) throws IOException {
Response response = doFormUrlEncodedPostRtnRsp(url, map);
if (response == null || response.body() == null) {
return null;
}
return response.body().string();
}
/**
* multipart文件类型表单请求兼容图片png\jpg\jpeg上传
*
* @param url URL地址
* @param map 参数
* @return String
* @throws IOException e
*/
public String doMultipartFormPost(String url, Map<String, String> map, File file) throws Exception {
Response response = doFileRequestBodyRtnRsp(url, map,file);
if (response == null || response.body() == null) {
return null;
}
return response.body().string();
}
/**
* 获取网络图片流
*
* @param url url地址
* @return InputStream
* @throws IOException e
*/
public InputStream getImageStream(String url) throws IOException {
OkHttpClient client = getOkHttpClient();
Request request = new Request.Builder()
.url(url)
.get()
.build();
ResponseBody responseBody = client.newCall(request).execute().body();
if (responseBody == null) {
return null;
}
return responseBody.byteStream();
}
/*公共方法*/
/**
* 构建键值对表单
*
* @param map 参数
* @return RequestBody
*/
private RequestBody buildRequestBody(Map<String, String> map) {
FormBody.Builder builder = new FormBody.Builder(StandardCharsets.UTF_8);
if (map != null && map.size() > 0) {
for (String string : map.keySet()) {
builder.add(string, map.get(string));
}
}
return builder.build();
}
/**
* 获取对象
*
* @return OkHttpClient
*/
private OkHttpClient getOkHttpClient() {
if (okHttpClient != null) {
return okHttpClient;
}
okHttpClient = new OkHttpClient.Builder()
.connectTimeout(timeout, TimeUnit.SECONDS)
.writeTimeout(timeout, TimeUnit.SECONDS)
.readTimeout(timeout, TimeUnit.SECONDS)
.build();
return okHttpClient;
}
/**
* 构建url请求字符串
*
* @param map 参数
* @return String
*/
private String buildGetParams(Map<String, String> map) {
if (map == null || map.size() == 0) {
return "";
}
StringBuilder params = new StringBuilder();
for (String string : map.keySet()) {
params.append(string).append("=").append(map.get(string)).append("&");
}
return "?" + params.toString();
}
/**
* 构建multipart类型键值对表单
*
* @param map 参数
* @return RequestBody
*/
private RequestBody buildFileRequestBody(Map<String, String> map, File file)throws Exception {
MultipartBody.Builder multiBuilder=new MultipartBody.Builder();
// 设置请求体
multiBuilder.setType(MultipartBody.FORM);
String name = file.getName();
RequestBody filebody=null;
if(name.endsWith(".png")||name.endsWith(".PNG"))
{
filebody = MultipartBody.create(MediaType.parse("image/png"), file);
}else if(name.endsWith(".jpeg")||name.endsWith(".jpg")||name.endsWith(".JPEG")||name.endsWith(".JPG"))
{
filebody = MultipartBody.create(MediaType.parse("image/jpeg"), file);
}
if(filebody==null)
{
throw new Exception("图片文件上传类型"+name+"与要求不符");
}
multiBuilder.addFormDataPart("file", name, filebody);
if (map != null && map.size() > 0) {
for (String string : map.keySet()) {
multiBuilder.addFormDataPart(string, map.get(string));
}
}
return multiBuilder.build();
}
/**
* @author liusongsheng
* @date 2021/12/22 9:48
*/
public String doGet(String url,String token) throws IOException {
Response response = doGetByToken(url,token);
if (response == null || response.body() == null) {
return null;
}
return response.body().string();
}
/**
* get请求返回响应头
* tokenType Bearer
* @param url 请求地址
* @return Response
* @throws IOException e
*/
public Response doGetByToken(String url,String token) throws IOException {
Request request = new Request.Builder()
.url(url)
.get()
.addHeader("Authorization", "Bearer " + token)
.build();
return getOkHttpClient().newCall(request).execute();
}
}

View File

@ -30,6 +30,7 @@ public class BaseApi {
ResultVO result = JwtUtil.parse(token);
if (result.getState().equals(STATE.Success.getState())) {
LoginUserInfoDTO userInfo = (LoginUserInfoDTO) result.getData();
userInfo.setSessionKey(token);
userInfo.setLanguage(language);
if (!Objects.isNull(userInfo)) {
loginUser.set(userInfo);

View File

@ -87,4 +87,8 @@ public class SessionUtil {
public static String getLanguage() {
return Optional.ofNullable(loginUser.get()).map(LoginUserInfoDTO::getLanguage).orElse(null);
}
public static String getsessionKey() {
return Optional.ofNullable(loginUser.get()).map(LoginUserInfoDTO::getSessionKey).orElse(null);
}
}

View File

@ -31,4 +31,6 @@ public class LoginUserInfoDTO {
private String fullDeptName;
private String language;
private String sessionKey;
}