package com.uas.eis.controller; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.uas.eis.dto.stksto.QueryAccountantProjectDto; import com.uas.eis.dto.stksto.QueryCashFlowItemsDto; import com.uas.eis.dto.stksto.QueryTravellingMerchantDto; import com.uas.eis.dto.stksto.StkCommonDto; import com.uas.eis.sdk.dto.*; import com.uas.eis.sdk.entity.ApiResult; import com.uas.eis.sdk.resp.ApiResponse; import com.uas.eis.service.RequestSTKService; import com.uas.eis.service.STKService; import com.uas.eis.utils.HuToolUtils; import com.uas.eis.utils.MD5Util; import com.uas.eis.utils.STKSignUtil; import com.uas.eis.vo.stkVo.AccountantProjectVo; import com.uas.eis.vo.stkVo.CashFlowItemsVo; import com.uas.eis.vo.stkVo.HttpResultResponse; import com.uas.eis.vo.stkVo.TravellingMerchantVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; import java.util.*; /** * @author zhuxl * @date 2024-10-12 */ @Slf4j @RestController public class STKController { @Autowired private STKService stkService; @Autowired private RequestSTKService requestSTKService; /** * 获取科目余额表-总条数 */ @PostMapping("/api/getAssistBalanceCount") public ApiResult getAssistBalanceCount(HttpServletRequest request, @RequestBody AssistBalanceDTO dto){ return stkService.getAssistBalanceCount(request, dto); } /** * 获取科目余额表 */ @RequestMapping(value="/api/getAssistBalance",method=RequestMethod.POST) @ResponseBody public ApiResult getAssistBalance(HttpServletRequest request, @RequestBody AssistBalanceDTO dto){ return stkService.getAssistBalance(request, dto); } /** * 现金流量表-总条数 */ @RequestMapping(value="/api/getCashFlowCount",method=RequestMethod.POST) @ResponseBody public ApiResult getCashFlowCount(HttpServletRequest request, @RequestBody AssistBalanceDTO dto){ return stkService.getCashFlowCount(request, dto); } /** * 现金流量表 */ @RequestMapping(value="/api/getCashFlow",method=RequestMethod.POST) @ResponseBody public ApiResult getCashFlow(HttpServletRequest request, @RequestBody AssistBalanceDTO dto){ return stkService.getCashFlow(request, dto); } /** * 新增修改客商信息 */ @PostMapping(value="/erp/updateCustVend") public ApiResult updateCustVend(@RequestBody UpdateCustVendDTO dto){ return stkService.updateCustVend( dto); } /*** * 新增修改客商2 * */ /*@PostMapping(value="/erp/updateCustVend") public ApiResult updateCustVend(@RequestBody UpdateCustVendDTO dto){ Integer page = 1; Integer size = 500; String result = null; try { HttpResultResponse resultResponse = requestSTKService.updateKSPostParam(page,size,dto); log.info("修改客商返回信息:{}",JSONObject.toJSONString(resultResponse)); result = resultResponse.getBody(); } catch (Exception e) { e.printStackTrace(); log.info("新增修改客商信息异常!"); } return new ApiResult(); }*/ /** * 接口测试 * */ @PostMapping("/api/getAssistBalanceCountTest") public ApiResult getAssistBalanceCountTest(HttpServletRequest request, @RequestBody AssistBalanceDTO dto){ return stkService.getAssistBalanceCountTest(request, dto); } /** * 加密生成 * */ @GetMapping("/erp/md5Test") public Md5TestVo md5Test(){ Long timestamp = System.currentTimeMillis(); String requestId = UUID.randomUUID().toString(); String accessSecret = "SISEMI"; String accessKey = "SISEMI"; Map params = new HashMap(); params.put("AccessKey",accessKey); params.put("RequestId",requestId); params.put("Timestamp",timestamp); Set keysSet = params.keySet(); Object[] keys = keysSet.toArray(); Arrays.sort(keys); StringBuilder temp = new StringBuilder(); boolean first = true; for (Object key : keys) { if (first) { first = false; } else { temp.append("&"); } temp.append(key).append("="); Object value = params.get(key); String valueString = ""; if (null != value) { valueString = String.valueOf(value); } temp.append(valueString); } temp.append("&").append("AccessSecret").append("=").append(accessSecret); Md5TestVo vo = new Md5TestVo(); vo.setAccessKey(accessKey); vo.setRequestId(requestId); vo.setTimestamp(timestamp); vo.setSignature(MD5Util.encrypt32Up(temp.toString())); return vo; } /** * 模拟客商数据信息 * */ @PostMapping("/queryTestList") public List queryTestList(@RequestBody QueryTravellingMerchantDto dto){ log.info("请求参数:{}", JSONObject.toJSONString(dto)); return requestSTKService.queryList(); } /** * 获取客商信息接口编码 * */ @Value("${STK.get_travelling_merchant}") private String GET_TRAVELLING_MERCHANT; @GetMapping("/queryListTest") public TravellingMerchantVo queryListTest(){ QueryTravellingMerchantDto dto = new QueryTravellingMerchantDto(); dto.setCode(GET_TRAVELLING_MERCHANT); return requestSTKService.selectTravellingMerchantList(dto,"http://192.168.1.104:8186/eis_cw/queryTestList"); } @GetMapping("apiPost2") public String apiPost() throws Exception { //应用id String appid = "bf00be8b_0387_44f4_b073_50c3c2d6"; //应用key String appkey = "eb1b6053bdda437c98a93d93013d9fae"; //接口代码 每个接口的接口代码都不同 String apiCode = "vhtITAFq"; //时间戳 String timestamp = Long.toString(System.currentTimeMillis()); //加签方法的重要参数 //若该接口需要传入一些参数 如:name、age等等 //则直接在这个位置put即可 JSONObject request=new JSONObject(4); request.put("code",apiCode); request.put("s_orgcode","5418");//119030009 //request.put("start_time","2022-11-02 09:38:23"); //request.put("end_time","2025-01-06 22:04:47"); //request.put("jslx","合并口径"); //request.put("dwmc","担保集团"); request.put("page","1"); request.put("size","10"); String content = request.toString(); //加签方法第一个参数 StringBuilder signBuilder = new StringBuilder("appid").append("=").append(appid).append("&") .append(content).append("&") .append("timestamp").append("=").append(timestamp).append("&") .append("key").append("=").append(appkey); //加签 String sign = STKSignUtil.HMACSHA256(signBuilder.toString(),appkey); System.out.println("原始:"+signBuilder); System.out.println("签名:"+sign); System.out.println("content:"+content); //请求数据 (接口地址根据测试环境与正式环境变更) String body = HttpRequest.post("http://192.168.2.179/api/oapigw/api/oapisvc/api/v2/search") .header("appid",appid) //请求头 .header("timestamp", timestamp) .header("sign", sign) .header("Content-Type", "application/json") .body(content) //请求参数 .timeout(20000) //超时时间 .execute().body(); //JSONObject jsonObject = JSON.parseObject(body); //JSONObject dataObject = jsonObject.getJSONObject("data"); //JSONArray listArray = dataObject.getJSONArray("list"); System.out.println("返回结果:"+body); //System.out.println("返回结果:"+listArray.size()); return (body); //返回结果 } //现金流测试 @GetMapping("apiPostxjl") public String apiPostxjl() throws Exception { //应用id String appid = "bf00be8b_0387_44f4_b073_50c3c2d6"; //应用key String appkey = "eb1b6053bdda437c98a93d93013d9fae"; //接口代码 每个接口的接口代码都不同 String apiCode = "89edb885a8cf4412b870233fc89fb381"; //时间戳 String timestamp = Long.toString(System.currentTimeMillis()); //分页内容 自行调整 String page = "1"; String pageSize = "500"; //支持 时间字段_start 时间字段_end 的传值 例:UPDATE_TIME DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime begin = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).with(TemporalAdjusters.firstDayOfYear()); LocalDateTime end = LocalDateTime.now(); //加签方法的重要参数 JSONObject request=new JSONObject(4); //request.put("code","MJ3ahZ9f"); request.put("page",page); request.put("size",pageSize); //传入参数 此处案例仅放置了时间,可自行添加 JSONObject param=new JSONObject(); //param.put("UPDATE_TIME_start","2024-05-09 14:24:06"); //param.put("UPDATE_TIME_end","2024-05-09 15:01:28"); //param.put("TASKNO","P2022032200000041"); //param.put("TASKCODE","202409"); request.put("param",param); String content = request.toString(); //加签方法第一个参数 StringBuilder signBuilder = new StringBuilder("appid").append("=").append(appid).append("&") .append(content).append("&") .append("timestamp").append("=").append(timestamp).append("&") .append("key").append("=").append(appkey); //加签 String sign = STKSignUtil.HMACSHA256(signBuilder.toString(),appkey); System.out.println("原始:"+signBuilder); log.info("STK,原始签名:"+signBuilder.toString()); System.out.println("签名:"+sign); log.info("STK,加密签名:"+sign); System.out.println("content:"+content); //请求数据 (接口地址根据测试环境与正式环境变更) /*String body = HttpRequest.post("https://192.168.2.179/api/oapigw/api/oapisvc/automicApi/"+apiCode) .header("appid",appid) //请求头 .header("timestamp", timestamp) .header("sign", sign) .header("Content-Type", "application/json") .body(content) //请求参数 .timeout(20000) //超时时间 .execute().body(); ) */ Map header = new HashMap<>(); header.put("appid",appid); header.put("timestamp", timestamp); header.put("sign", sign); header.put("Content-Type", "application/json"); HttpResultResponse resultResponse = HuToolUtils.post("https://192.168.2.179/api/oapigw/api/oapisvc/automicApi/"+apiCode,request, header); log.info("示例返回:{}",JSONObject.toJSONString(resultResponse)); // System.out.println("返回结果:"+body); //System.out.println(body); return (resultResponse.getBody()); //返回结果 } //科目测试 @GetMapping("apiPostkm") public String apiPostkm() throws Exception { //应用id String appid = "bf00be8b_0387_44f4_b073_50c3c2d6"; //应用key String appkey = "eb1b6053bdda437c98a93d93013d9fae"; //接口代码 每个接口的接口代码都不同 String apiCode = "11e72229359a4fdeb038dd6713dc9330"; //时间戳 String timestamp = Long.toString(System.currentTimeMillis()); //分页内容 自行调整 String page = "1"; String pageSize = "500"; //支持 时间字段_start 时间字段_end 的传值 例:UPDATE_TIME DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime begin = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).with(TemporalAdjusters.firstDayOfYear()); LocalDateTime end = LocalDateTime.now(); //加签方法的重要参数 JSONObject request=new JSONObject(4); //request.put("code","MJ3ahZ9f"); request.put("page",page); request.put("size",pageSize); //传入参数 此处案例仅放置了时间,可自行添加 JSONObject param=new JSONObject(); //param.put("UPDATE_TIME_start","2024-05-09 14:24:06"); //param.put("UPDATE_TIME_end","2024-05-09 15:01:28"); //param.put("TASKNO","P2022032200000041"); //param.put("TASKCODE","202409"); request.put("param",param); String content = request.toString(); //加签方法第一个参数 StringBuilder signBuilder = new StringBuilder("appid").append("=").append(appid).append("&") .append(content).append("&") .append("timestamp").append("=").append(timestamp).append("&") .append("key").append("=").append(appkey); //加签 String sign = STKSignUtil.HMACSHA256(signBuilder.toString(),appkey); System.out.println("原始:"+signBuilder); System.out.println("签名:"+sign); System.out.println("content:"+content); //请求数据 (接口地址根据测试环境与正式环境变更) String body = HttpRequest.post("https://192.168.2.179/api/oapigw/api/oapisvc/automicApi/"+apiCode) .header("appid",appid) //请求头 .header("timestamp", timestamp) .header("sign", sign) .header("Content-Type", "application/json") .body(content) //请求参数 .timeout(20000) //超时时间 .execute().body(); // System.out.println("返回结果:"+body); System.out.println(body); return (body); //返回结果 } //现金流测试 @GetMapping("apiPostxjl2") public CashFlowItemsVo apiPostxjl2() throws Exception { StkCommonDto dto = new StkCommonDto(); int pageXjl = 1; dto.setPage(String.valueOf(pageXjl)); dto.setSize("500"); QueryCashFlowItemsDto dtoParam = new QueryCashFlowItemsDto(); HttpResultResponse cashFlowItemsVo = requestSTKService.buildPostParam(1,500,dtoParam); return JSONObject.parseObject(cashFlowItemsVo.getBody(),CashFlowItemsVo.class); } //会计科目测试 @GetMapping("apiPostkm2") public AccountantProjectVo apiPostkm2() throws Exception { QueryAccountantProjectDto dto = new QueryAccountantProjectDto(); int pageKm = 1; dto.setPage(pageKm); dto.setSize(500); AccountantProjectVo accountantProjectVo = new AccountantProjectVo(); accountantProjectVo = requestSTKService.getAccountantProject(dto); return accountantProjectVo; } }