Browse Source

[深爱] 科目余额表、现金流量表对接

zxl 1 year ago
parent
commit
973f7ab9e4

+ 2 - 0
src/main/java/com/uas/eis/UasEisApplication.java

@@ -16,6 +16,8 @@ import com.uas.eis.core.support.TokenPropertiesListener;
 public class UasEisApplication {
 	public static void main(String[] args) {
 		SpringApplication application = new SpringApplication(UasEisApplication.class);
+		//application.addListeners(new TokenPropertiesListener("token.properties"));
+		application.addListeners(new TokenPropertiesListener("api_sign_key_mapping.properties"));
 		application.run(args);
 	}
 	

+ 110 - 0
src/main/java/com/uas/eis/controller/STKController.java

@@ -0,0 +1,110 @@
+package com.uas.eis.controller;
+
+import com.uas.eis.sdk.dto.AssistBalanceDTO;
+import com.uas.eis.sdk.dto.Md5TestVo;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.service.STKService;
+import com.uas.eis.utils.MD5Util;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+
+
+/**
+ * @author zhuxl
+ * @date 2024-10-12
+ */
+@RestController
+public class STKController {
+    @Autowired
+    private STKService stkService;
+
+    /**
+     * 获取科目余额表-总条数
+     */
+    @PostMapping("/api/getAssistBalanceCount")
+    public ApiResult<String> getAssistBalanceCount(HttpServletRequest request, @RequestBody AssistBalanceDTO dto){
+        return stkService.getAssistBalanceCount(request, dto);
+    }
+
+    /**
+     * 获取科目余额表
+     */
+    @RequestMapping(value="/api/getAssistBalance",method=RequestMethod.POST)
+    @ResponseBody
+    public ApiResult<String> getAssistBalance(HttpServletRequest request, @RequestBody AssistBalanceDTO dto){
+        return stkService.getAssistBalance(request, dto);
+    }
+
+
+
+
+    /**
+     * 现金流量表-总条数
+     */
+    @RequestMapping(value="/api/getCashFlowCount",method=RequestMethod.POST)
+    @ResponseBody
+    public ApiResult<String> getCashFlowCount(HttpServletRequest request, @RequestBody AssistBalanceDTO dto){
+        return stkService.getCashFlowCount(request, dto);
+    }
+
+    /**
+     * 现金流量表
+     */
+    @RequestMapping(value="/api/getCashFlow",method=RequestMethod.POST)
+    @ResponseBody
+    public ApiResult<String> getCashFlow(HttpServletRequest request, @RequestBody AssistBalanceDTO dto){
+        return stkService.getCashFlow(request, dto);
+    }
+
+    /**
+     * 接口测试
+     * */
+    @PostMapping("/api/getAssistBalanceCountTest")
+    public ApiResult<String> 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 = "STKAPI";
+        String accessKey = "STK";
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("AccessKey",accessKey);
+        params.put("RequestId",requestId);
+        params.put("Timestamp",timestamp);
+        Set<String> 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;
+    }
+}

+ 19 - 0
src/main/java/com/uas/eis/sdk/dto/AssistBalanceDTO.java

@@ -0,0 +1,19 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class AssistBalanceDTO extends BalancePageDTO{
+
+    /**
+     * 期间
+     * */
+    private String yearMonth;
+
+    /**
+     * 批次id
+     * */
+    private String batch_no;
+}

+ 30 - 0
src/main/java/com/uas/eis/sdk/dto/BalanceCountDTO.java

@@ -0,0 +1,30 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * dto说明
+ * */
+
+@Data
+@NoArgsConstructor
+public class BalanceCountDTO {
+
+    /**
+     * 期间
+     * */
+    private String yearMonth;
+
+    /**
+     * 批次id
+     * */
+    private Integer batch_no;
+
+    /**
+     * 总条数
+     * */
+    private Integer count;
+
+}

+ 56 - 0
src/main/java/com/uas/eis/sdk/dto/BalanceDTO.java

@@ -0,0 +1,56 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * dto说明
+ * */
+
+@Data
+@NoArgsConstructor
+public class BalanceDTO {
+
+    /**
+     *主键ID
+     * */
+    private Integer fid;
+    private String fssno;
+    private String fsoid;
+    private String forgunitno;
+    private String forgunitname;
+    private String fperiodname;
+    private String fcurrencyname;
+    private String forginalcname;
+    private String faccountno;
+    private String faccountname;
+    private String fassistgrptype;
+    private String fassistgrpno1;
+    private String fassistgrpname1;
+    private String fassistgrpno2;
+    private String fassistgrpname2;
+    private Long fbeginbalancefor;
+    private Long fbeginbalancelocal;
+    private Long fcreditfor;
+    private Long fcreditlocal;
+    private Long fdebitfor;
+    private Long fdebitlocal;
+    private Long fendbalancefor;
+    private Long fendbalancelocal;
+    private Long fyearpnlfor;
+    private Long fyearpnllocal;
+    private Long fyeardebitfor;
+    private Long fyeardebitlocal;
+    private Long fyearcreditfor;
+    private Long fyearcreditlocal;
+    private Long faccoccurfor;
+    private Long faccoccurlocal;
+    private String fmodifytime;
+    private String flockintime;
+    private String fdisablelabel;
+    private String fdatamode;
+    private String fbilltype;
+    private Integer batch_no;
+
+}

+ 25 - 0
src/main/java/com/uas/eis/sdk/dto/BalancePageDTO.java

@@ -0,0 +1,25 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * dto说明
+ * */
+
+@Data
+@NoArgsConstructor
+public class BalancePageDTO {
+
+    /**
+     *页码
+     * */
+    private Integer pageNum;
+
+    /**
+     * 每页条数
+     * */
+    private Integer pageSize;
+
+}

+ 41 - 0
src/main/java/com/uas/eis/sdk/dto/CashFlowDTO.java

@@ -0,0 +1,41 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * dto说明
+ * */
+
+@Data
+@NoArgsConstructor
+public class CashFlowDTO {
+
+    /**
+     *主键ID
+     * */
+    private Integer fid;
+    private String fssno;
+    private String fsoid;
+    private String forgunitno;
+    private String forgunitname;
+    private String fperiodname;
+    private String fcurrencyname;
+    private String forginalcname;
+    private String faccountno;
+    private String faccountname;
+    private String fassistgrptype;
+    private String fassistgrpno1;
+    private String fassistgrpname1;
+    private String fassistgrpno2;
+    private String fassistgrpname2;
+    private Long fytdamt;
+    private Long fytdlocalamt;
+    private String fmodifytime;
+    private String flockintime;
+    private String fdisablelabel;
+    private String fdatamode;
+    private Integer batch_no;
+
+}

+ 16 - 0
src/main/java/com/uas/eis/sdk/dto/Md5TestVo.java

@@ -0,0 +1,16 @@
+package com.uas.eis.sdk.dto;
+
+import lombok.Data;
+
+@Data
+public class Md5TestVo {
+
+    private String accessKey;
+
+    private String requestId;
+
+    private Long timestamp;
+
+    private String signature;
+
+}

+ 191 - 0
src/main/java/com/uas/eis/service/Impl/STKServiceImpl.java

@@ -0,0 +1,191 @@
+package com.uas.eis.service.Impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.uas.eis.core.config.SpObserver;
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.dao.SqlRowList;
+import com.uas.eis.sdk.dto.AssistBalanceDTO;
+import com.uas.eis.sdk.dto.BalanceCountDTO;
+import com.uas.eis.sdk.dto.BalanceDTO;
+import com.uas.eis.sdk.dto.CashFlowDTO;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.resp.ApiResponse;
+import com.uas.eis.service.STKService;
+import com.uas.eis.utils.CollectionUtil;
+import com.uas.eis.utils.FlexJsonUtil;
+import com.uas.eis.utils.PSHttpUtils;
+import com.uas.eis.utils.StringUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * @author zhuxl
+ * @date 2024-10-12
+ */
+@Service
+public class STKServiceImpl implements STKService {
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+    @Autowired
+    private BaseDao baseDao;
+
+    @Override
+    public ApiResult<String> getAssistBalanceCount(HttpServletRequest request, AssistBalanceDTO dto) {
+        String yearmonth = dto.getYearMonth();
+        boolean bool = baseDao.checkIf("PeriodsDetail", "pd_code='MONTH-A' and pd_status=99 and pd_detno='"+yearmonth+"'");
+        if (bool) {
+            int batch_no = baseDao.getSeqId("STK_ASSISTBALANCE2_SEQ");
+            String res = baseDao.callProcedure("SP_INSER_ASSISTBALANCE",
+                    new Object[] {batch_no,yearmonth});
+            if (res != null && !res.trim().equals("")) {
+                return ApiResponse.successRsp("1",res,request.getHeader("RequestId"),null);
+            }else{
+                int count = baseDao.getCount("select count(1)  from STK_ASSISTBALANCE where FPERIODNAME='" + yearmonth + "'");
+                BalanceCountDTO balanceCountDTO = new BalanceCountDTO();
+                balanceCountDTO.setYearMonth(yearmonth);
+                balanceCountDTO.setBatch_no(batch_no);
+                balanceCountDTO.setCount(count);
+                String s = JSON.toJSONString(balanceCountDTO, SerializerFeature.WriteMapNullValue);
+                return ApiResponse.successRsp("1",null,request.getHeader("RequestId"),s);
+            }
+        }else{
+            return ApiResponse.successRsp("2001","当前期间未结账!",request.getHeader("RequestId"),null);
+        }
+    }
+
+    @Override
+    public ApiResult<String> getAssistBalance(HttpServletRequest request, AssistBalanceDTO dto) {
+        String yearmonth = dto.getYearMonth();
+        String batch_no = dto.getBatch_no();
+        int pageNum = Integer.valueOf(dto.getPageNum());
+        int pageSize = Integer.valueOf(dto.getPageSize());
+        int start = ((pageNum - 1) * pageSize + 1);
+        int end = pageNum * pageSize;
+        boolean bool = baseDao.checkIf("PeriodsDetail", "pd_code='MONTH-A' and pd_status=99 and pd_detno='"+yearmonth+"'");
+        if (bool) {
+            List<BalanceDTO> balanceDTO = baseDao.query("SELECT fid,fssno,fsoid,forgunitno,forgunitname,fperiodname,fcurrencyname,forginalcname,faccountno,faccountname," +
+                    "     fassistgrptype,fassistgrpno1,fassistgrpname1," +
+                    "     fassistgrpno2,fassistgrpname2," +
+                    "     fbeginbalancefor,fbeginbalancelocal," +
+                    "     fcreditfor,fcreditlocal,fdebitfor,fdebitlocal," +
+                    "     fendbalancefor,fendbalancelocal," +
+                    "     fyearpnlfor,fyearpnllocal," +
+                    "     fyeardebitfor,fyeardebitlocal,fyearcreditfor,fyearcreditlocal," +
+                    "     faccoccurfor,faccoccurlocal," +
+                    "     to_char(fmodifytime,'yyyy-mm-dd hh24:mi:ss') fmodifytime,to_char(flockintime,'yyyy-mm-dd hh24:mi:ss') flockintime," +
+                    "     fdisablelabel,fdatamode,fbilltype,batch_no from stk_assistbalance " +
+                    "WHERE batch_no ="+batch_no+" and FPERIODNAME = '"+yearmonth +"' and QUERYDETNO >= " +start+ " and QUERYDETNO <= " + end, BalanceDTO.class);
+
+            //String s = JSON.toJSONString(rs.getResultList(), SerializerFeature.WriteMapNullValue);
+            String s = JSON.toJSONString(balanceDTO, SerializerFeature.WriteMapNullValue);
+            return ApiResponse.successRsp("1",null,request.getHeader("RequestId"),s);
+        }else{
+            return ApiResponse.successRsp("2001","当前期间未结账!",request.getHeader("RequestId"),null);
+        }
+    }
+
+    @Override
+    public ApiResult<String> getCashFlowCount(HttpServletRequest request, AssistBalanceDTO dto) {
+        String yearmonth = dto.getYearMonth();
+        boolean bool = baseDao.checkIf("PeriodsDetail", "pd_code='MONTH-A' and pd_status=99 and pd_detno='"+yearmonth+"'");
+        if (bool) {
+            int batch_no = baseDao.getSeqId("STK_CASHFLOW2_SEQ");
+            String res = baseDao.callProcedure("SP_INSER_CASHFLOW",
+                    new Object[] {batch_no,yearmonth});
+            if (res != null && !res.trim().equals("")) {
+                return ApiResponse.successRsp("2001",res,request.getHeader("RequestId"),null);
+            }else{
+                int count = baseDao.getCount("select count(1)  from STK_CASHFLOW where FPERIODNAME='" + yearmonth + "'");
+                BalanceCountDTO balanceCountDTO = new BalanceCountDTO();
+                balanceCountDTO.setYearMonth(yearmonth);
+                balanceCountDTO.setBatch_no(batch_no);
+                balanceCountDTO.setCount(count);
+                String s = JSON.toJSONString(balanceCountDTO, SerializerFeature.WriteMapNullValue);
+                return ApiResponse.successRsp("2001",null,request.getHeader("RequestId"),s);
+            }
+        }else{
+            return ApiResponse.successRsp("2001","当前期间未结账!",request.getHeader("RequestId"),null);
+        }
+    }
+
+    @Override
+    public ApiResult<String> getCashFlow(HttpServletRequest request, AssistBalanceDTO dto) {
+        String yearmonth = dto.getYearMonth();
+        String batch_no = dto.getBatch_no();
+        int pageNum = Integer.valueOf(dto.getPageNum());
+        int pageSize = Integer.valueOf(dto.getPageSize());
+        int start = ((pageNum - 1) * pageSize + 1);
+        int end = pageNum * pageSize;
+        boolean bool = baseDao.checkIf("PeriodsDetail", "pd_code='MONTH-A' and pd_status=99 and pd_detno='"+yearmonth+"'");
+        if (bool) {
+            List<CashFlowDTO> cashFlowDTO = baseDao.query("SELECT fid,fssno,fsoid,forgunitno,forgunitname,fperiodname,fcurrencyname,forginalcname,faccountno,faccountname," +
+                    "     fassistgrptype,fassistgrpno1,fassistgrpname1," +
+                    "     fassistgrpno2,fassistgrpname2," +
+                    "     fytdamt,fytdlocalamt," +
+                    "     fmodifytime,flockintime,fdisablelabel,fdatamode,batch_no from STK_CASHFLOW " +
+                    "WHERE batch_no ="+batch_no+" and FPERIODNAME = '"+yearmonth +"' and QUERYDETNO >= " +start+ " and QUERYDETNO <= " + end, CashFlowDTO.class);
+
+            //String s = JSON.toJSONString(rs.getResultList(), SerializerFeature.WriteMapNullValue);
+            String s = JSON.toJSONString(cashFlowDTO, SerializerFeature.WriteMapNullValue);
+            return ApiResponse.successRsp("1",null,request.getHeader("RequestId"),s);
+        }else{
+            return ApiResponse.successRsp("2001","当前期间未结账!",request.getHeader("RequestId"),null);
+        }
+    }
+
+    @Override
+    public ApiResult<String> getAssistBalanceCountTest(HttpServletRequest request, AssistBalanceDTO dto) {
+        //取yearMonth
+        String yearMonth = dto.getYearMonth();
+        System.out.println("body参数打印:"+dto.getYearMonth());
+        //获取header参数
+        Map<String,String> headerMap = getHeaderParams(request);
+        System.out.println("header参数:【AccessKey:"+headerMap.get("AccessKey")+",Timestamp:"+headerMap.get("Timestamp")
+        +",RequestId:"+headerMap.get("RequestId")+",Signature:"+headerMap.get("Signature")+"】");
+        return null;
+    }
+
+    /**
+     * 获取header参数
+     * */
+    public Map<String,String> getHeaderParams(HttpServletRequest request){
+        String accessKey = request.getHeader("AccessKey");
+        String timestamp = request.getHeader("Timestamp");
+        String requestId = request.getHeader("RequestId");
+        String signature = request.getHeader("Signature");
+        Map<String,String> headerMap = new HashMap<>();
+        if(!StringUtils.isEmpty(accessKey)){
+            headerMap.put("AccessKey",accessKey);
+        }
+        if(!StringUtils.isEmpty(timestamp)){
+            headerMap.put("Timestamp",timestamp);
+        }
+        if(!StringUtils.isEmpty(requestId)){
+            headerMap.put("RequestId",requestId);
+        }
+        if(!StringUtils.isEmpty(signature)){
+            headerMap.put("Signature",signature);
+        }
+        return headerMap;
+    }
+
+    private JSONObject getJsonData(HttpServletRequest request){
+        JSONObject jsonObject=null;
+        try {
+            String data = PSHttpUtils.readRaw(request.getInputStream());
+            jsonObject = JSON.parseObject(data);
+        } catch (IOException e) {
+            logger.info("参数解析异常信息:"+e.getMessage());
+            e.printStackTrace();
+        }
+        return jsonObject;
+    }
+}

+ 44 - 0
src/main/java/com/uas/eis/service/STKService.java

@@ -0,0 +1,44 @@
+package com.uas.eis.service;
+
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.eis.sdk.dto.AssistBalanceDTO;
+import com.uas.eis.sdk.entity.ApiResult;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/**
+ * @author zhuxl
+ * @date 2024-10-12
+ */
+public interface STKService {
+    /**
+     * 获取科目余额表-总条数
+     */
+    ApiResult<String> getAssistBalanceCount(HttpServletRequest request, AssistBalanceDTO dto);
+
+
+    /**
+     * 获取科目余额表
+     */
+    ApiResult<String> getAssistBalance(HttpServletRequest request, AssistBalanceDTO dto);
+
+
+    /**
+     * 现金流量表-总条数
+     */
+    ApiResult<String> getCashFlowCount(HttpServletRequest request, AssistBalanceDTO dto);
+
+
+    /**
+     * 现金流量表
+     */
+    ApiResult<String> getCashFlow(HttpServletRequest request, AssistBalanceDTO dto);
+
+    /**
+     * 接口测试
+     * */
+    ApiResult<String> getAssistBalanceCountTest(HttpServletRequest request, AssistBalanceDTO dto);
+}

+ 1 - 0
src/main/resources/api_sign_key_mapping.properties

@@ -6,3 +6,4 @@ syncProduct=updateItemByErp
 syncMakeBase=updateProdByErp
 syncMakeBaseDetail=updateProdBomByErp
 syncUpdateReceiveByErp=updateReceiveByErp
+STK=STKAPI