diff --git a/ic/src/private/nc/bs/ic/HttpPostOtherSysImpl.java b/ic/src/private/nc/bs/ic/HttpPostOtherSysImpl.java new file mode 100644 index 0000000..b601a3a --- /dev/null +++ b/ic/src/private/nc/bs/ic/HttpPostOtherSysImpl.java @@ -0,0 +1,161 @@ +package nc.bs.ic; + +import com.alibaba.fastjson.JSONObject; +import nc.IHttpPostOtherSys; +import nc.hr.utils.PubEnv; +import nc.itf.scmpub.reference.uap.para.SysParaInitQuery; +import nc.pub.fa.common.util.StringUtils; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class HttpPostOtherSysImpl implements IHttpPostOtherSys { + + private static final String USER_ID = "BIP"; + private static final String PASSWORD = "BIP@2025bip"; + private static final String CLIENT_TYPE = "S"; + private static final String EP_ID = ""; + private static final String LOGIN_URL = "/GTHINKING/AjaxService/N_MISPRO/100208057.ashx/Login"; + + @Override + public String callLE(String url, JSONObject json) { +// String leip = SysParaInitQuery.getParaString(PubEnv.getPk_group(), "LEIP"); + String mesip = "http://192.168.29.32"; + String baseurl = mesip + url; + String cookie = this.getMESToken(mesip); + Map headers = new HashMap<>(); + headers.put("Set-Cookie", cookie); + return doPost(baseurl, headers, json); + } + + private String getMESToken(String leip) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("userId", USER_ID); + jsonObject.put("password", PASSWORD); + jsonObject.put("clientType", CLIENT_TYPE); + jsonObject.put("epId", EP_ID); + return postCookie(leip + LOGIN_URL, null, jsonObject); + } + + /** + * 业务请求post方法 + */ + private String doPost(String baseurl, Map map, JSONObject json) { + BufferedReader reader = null; + try { + URL url = new URL(baseurl);// 创建连接 + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setUseCaches(false); + connection.setInstanceFollowRedirects(true); + connection.setRequestMethod("POST"); // 设置请求方式 + // 设置接收数据的格式 + connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式 + if (map != null) { + for (String key : map.keySet()) { + connection.setRequestProperty(key, map.get(key)); + } + } + connection.connect(); + // 一定要用BufferedReader 来接收响应, 使用字节来接收响应的方法是接收不到内容的 + OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); // UTF-8编码 + if (json != null) { + out.append(json.toString()); + } + out.flush(); + out.close(); + // 读取响应 + reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); + String line; + String res = ""; + while ((line = reader.readLine()) != null) { + res += line; + } + reader.close(); + return res; + } catch (Exception e) { +// e.printStackTrace(); + throw new RuntimeException(e); + } + } + + /** + * 获取cookie的请求post + */ + private String postCookie(String baseurl, Map map, JSONObject json) { + BufferedReader reader = null; + try { + URL url = new URL(baseurl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setUseCaches(false); + connection.setInstanceFollowRedirects(true); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + + if (map != null) { + for (String key : map.keySet()) { + connection.setRequestProperty(key, map.get(key)); + } + } + + connection.connect(); + + // 写入请求体 + OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); + if (json != null) { + out.append(json.toString()); + } + out.flush(); + out.close(); + + // 读取响应头中的 Set-Cookie + Map> headers = connection.getHeaderFields(); + String setCookieHeader = null; + + for (Map.Entry> entry : headers.entrySet()) { + if ("Set-Cookie".equalsIgnoreCase(entry.getKey())) { + setCookieHeader = entry.getValue().get(0); // 取第一个 Set-Cookie 头 + break; + } + } + if (setCookieHeader != null) { + return extractAspxAuth(setCookieHeader); // 返回 ASPXAUTH 的值 + } else { + return null; + } + + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + // 提取 .ASPXAUTH 的值 + private String extractAspxAuth(String cookieHeader) { + String[] cookies = cookieHeader.split("; "); + for (String cookie : cookies) { + if (cookie.startsWith(".ASPXAUTH=")) { + return cookie.substring(".ASPXAUTH=".length()); + } + } + return null; + } +} diff --git a/ic/src/public/nc/IHttpPostOtherSys.java b/ic/src/public/nc/IHttpPostOtherSys.java new file mode 100644 index 0000000..0c51069 --- /dev/null +++ b/ic/src/public/nc/IHttpPostOtherSys.java @@ -0,0 +1,15 @@ +package nc; + +import com.alibaba.fastjson.JSONObject; + + +public interface IHttpPostOtherSys { + + /** + * xuwjl@yonyou.com 2025年4月24日 15:24:14 + * @param url LE的接口地址,不包含ip + * @param json 入参 + */ + public String callLE(String url, JSONObject json); + +} diff --git a/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java b/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java index 5f6292e..e8d1085 100644 --- a/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java +++ b/so/src/public/nccloud/openapi/so/m30/SaleOrderResource.java @@ -7,6 +7,7 @@ import nc.bs.framework.common.InvocationInfoProxy; import nc.bs.framework.common.NCLocator; import nc.itf.bd.defdoc.IDefdocService; import nc.itf.pim.project.prv.IProject; +import nc.jdbc.framework.SQLParameter; import nc.jdbc.framework.processor.ColumnListProcessor; import nc.jdbc.framework.processor.ColumnProcessor; import nc.jdbc.framework.processor.MapProcessor; @@ -21,6 +22,8 @@ import nccloud.api.rest.utils.NCCRestUtils; import nccloud.api.rest.utils.ResultMessageUtil; import nccloud.api.so.m30.IAPISaleOrderMaitain; import nccloud.api.so.m30.IAPISaleOrderQuery; +import nccloud.baseapp.core.log.NCCForUAPLogger; +import nccloud.commons.lang.StringUtils; import nccloud.openapi.scmpub.pub.NCCPubRestResource; import nccloud.openapi.scmpub.pub.TransferCodeToPKTool; import nccloud.openapi.scmpub.pub.TransferMapToVOTool; @@ -483,4 +486,45 @@ public class SaleOrderResource extends NCCPubRestResource { return ResultMessageUtil.exceptionToJSON(e); } } + + /** + * 金慧软件修改BIP销售订单明细 + * + * @author mzr + * @date 2025/05/14 + */ + @POST + @Path("updateDef") + @Consumes({"application/json"}) + @Produces({"application/json"}) + public JSONString updateDef(Map paramMap) { + String csaleorderbid = (String) paramMap.get("csaleorderbid"); + if (StringUtils.isEmpty(csaleorderbid)) { + return ResultMessageUtil.exceptionToJSON("传入参数为空,请检查", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + try { + StringBuilder sql = new StringBuilder("update so_saleorder_b set "); + SQLParameter parameter = new SQLParameter(); + for (Map.Entry entry : paramMap.entrySet()) { + if (!"csaleorderbid".equals(entry.getKey())) { + sql.append(entry.getKey()).append(" = ?, "); + parameter.addParam(entry.getValue()); + } + } + if (parameter.getCountParams() <= 0) { + return ResultMessageUtil.toJSON("传入参数为空,请检查", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); + } + // 删除最后的", " + sql.delete(sql.length() - 2, sql.length()); + sql.append(" where csaleorderbid = ?"); + NCCForUAPLogger.debug("updateDef-sql:" + sql); + parameter.addParam(csaleorderbid); + BaseDAO baseDAO = new BaseDAO(); + int num = baseDAO.executeUpdate(sql.toString(), parameter); + return ResultMessageUtil.toJSON(num, "销售订单修改成功"); + } catch (BusinessException e) { + return ResultMessageUtil.exceptionToJSON(e); + } + } + }