diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/a8bill/plugin/AccLogPluginInitializer.java b/buildpackage/src/main/java/com/hzya/frame/plugin/a8bill/plugin/AccLogPluginInitializer.java new file mode 100644 index 00000000..602932c2 --- /dev/null +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/a8bill/plugin/AccLogPluginInitializer.java @@ -0,0 +1,136 @@ +package com.hzya.frame.plugin.a8bill.plugin; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.map.MapBuilder; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import com.hzya.frame.base.PluginBaseEntity; +import com.hzya.frame.ningboBankTreasury.dto.req.AccTransactionReq; +import com.hzya.frame.ningboBankTreasury.dto.res.AccTransactionRes; +import com.hzya.frame.ningboBankTreasury.util.NingboBankUtil; +import com.hzya.frame.plugin.a8bill.service.INingboBankPluginService; +import com.hzya.frame.web.entity.BaseResult; +import com.hzya.frame.web.entity.JsonResultEntity; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; +import java.util.Map; + +/** + * @Description 查询宁波银行账户交易明细 保存到OA + * @Author xiangerlin + * @Date 2024/7/25 16:24 + **/ +public class AccLogPluginInitializer extends PluginBaseEntity { + Logger logger = LoggerFactory.getLogger(getClass()); + @Autowired + private INingboBankPluginService ningboBankPluginService; + /*** + * 插件初始化方法 + * @Author 👻👻👻👻👻👻👻👻 gjh + * @Date 2023-08-02 10:48 + * @Param [] + * @return void + **/ + @Override + public void initialize() { + logger.info(getPluginLabel() + "執行初始化方法initialize()"); + } + + /**** + * 插件销毁方法 + * @author 👻👻👻👻👻👻👻👻 gjh + * @date 2023-08-02 10:48 + * @return void + **/ + @Override + public void destroy() { + logger.info(getPluginLabel() + "執行銷毀方法destroy()"); + } + + /**** + * 插件的ID + * @author 👻👻👻👻👻👻👻👻 gjh + * @date 2023-08-02 10:48 + * @return void + **/ + @Override + public String getPluginId() { + return "AccLogPlugin"; + } + + /**** + * 插件的名称 + * @author 👻👻👻👻👻👻👻👻 gjh + * @date 2023-08-02 10:48 + * @return void + **/ + @Override + public String getPluginName() { + return "查询交易明细插件"; + } + + /**** + * 插件的显示值 + * @author 👻👻👻👻👻👻👻👻 gjh + * @date 2023-08-02 10:48 + * @return void + **/ + @Override + public String getPluginLabel() { + return "AccLogPlugin"; + } + + /*** + * 插件类型 1、场景插件 + * @Author 👻👻👻👻👻👻👻👻 gjh + * @Date 2023-08-02 14:01 + * @Param [] + * @return java.lang.String + **/ + @Override + public String getPluginType() { + return "1"; + } + + /*** + * 执行业务代码 + * @Author 👻👻👻👻👻👻👻👻 gjh + * @Date 2023-08-07 11:20 + * @param requestJson 执行业务代码的参数 + * @return void + **/ + @Override + public JsonResultEntity executeBusiness(JSONObject requestJson) throws Exception { + //1、查询宁波银行的交易记录 + AccTransactionReq accTransactionReq = new AccTransactionReq(); + accTransactionReq.setCdSign(NingboBankUtil.SHOURU); + accTransactionReq.setBeginDate("2024-05-01"); + accTransactionReq.setEndDate("2024-05-30"); + accTransactionReq.setBankAccList(Convert.toList(String.class,"86041110000110293,86041110000109337,6223160030547665,6214180002001411023,6214180000002609736")); + Map headerMap = MapBuilder.create(true) + .put("apiCode", "8000360002") + .put("publicKey","ZJYAWb7lhAUTYqekPkU+uHJv1/ObJxb7dT7sD8HPRDGAgyhCe7eDIk+3zDUT+v578prj") + .put("secretKey","fviZnLBsQUAGF8w8FSOdJi7XlIm/XAZclMxRagDLfTyJFlvnIBF3w66Hrpfzs8cYj3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=") + .put("appId","800036") + .build(); + String body = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface").addHeaders(headerMap).body(JSONObject.toJSONString(accTransactionReq)).timeout(60000).execute().body(); + System.out.println(body); + if (StrUtil.isNotEmpty(body)){ + JSONObject response = JSONObject.parseObject(body); + if (response.getBoolean("flag")){ + List accTransactionResList = JSONObject.parseArray(response.getJSONObject("attribute").getString("attribute"), AccTransactionRes.class); + //2、保存到OA底表 + if (CollectionUtils.isNotEmpty(accTransactionResList)){ + ningboBankPluginService.saveAccLog(accTransactionResList); + } + return BaseResult.getSuccessMessageEntity(getPluginName()+"执行成功:{}",accTransactionResList); + } + } + return BaseResult.getSuccessMessageEntity(getPluginName()+"执行成功"); + } +} diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/a8bill/service/INingboBankPluginService.java b/buildpackage/src/main/java/com/hzya/frame/plugin/a8bill/service/INingboBankPluginService.java new file mode 100644 index 00000000..72ed2d87 --- /dev/null +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/a8bill/service/INingboBankPluginService.java @@ -0,0 +1,19 @@ +package com.hzya.frame.plugin.a8bill.service; + +import com.hzya.frame.ningboBankTreasury.dto.res.AccTransactionRes; + +import java.util.List; + +/** + * @Description 宁波银行插件用 + * @Author xiangerlin + * @Date 2024/7/25 16:33 + **/ +public interface INingboBankPluginService { + + /** + * 保存收款日志到oa底表 + * @param accTransactionResList + */ + void saveAccLog(List accTransactionResList); +} diff --git a/buildpackage/src/main/java/com/hzya/frame/plugin/a8bill/service/impl/NingboBankPluginServiceImpl.java b/buildpackage/src/main/java/com/hzya/frame/plugin/a8bill/service/impl/NingboBankPluginServiceImpl.java new file mode 100644 index 00000000..2dcbf164 --- /dev/null +++ b/buildpackage/src/main/java/com/hzya/frame/plugin/a8bill/service/impl/NingboBankPluginServiceImpl.java @@ -0,0 +1,95 @@ +package com.hzya.frame.plugin.a8bill.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapBuilder; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import com.hzya.frame.ningboBankTreasury.dto.res.AccTransactionRes; +import com.hzya.frame.ningboBankTreasury.enums.CurrencyEnum; +import com.hzya.frame.plugin.a8bill.service.INingboBankPluginService; +import com.hzya.frame.seeyon.dongj.entity.Formmain0044Entity; +import com.hzya.frame.seeyon.dongj.service.IFormmain0044Service; +import com.hzya.frame.stringutil.StringUtil; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Description 宁波银行插件用 + * @Author xiangerlin + * @Date 2024/7/25 16:34 + **/ +public class NingboBankPluginServiceImpl implements INingboBankPluginService { + +@Autowired +private IFormmain0044Service formmain0044Service; + + @Value("${OA.data_source_code}") + private String oa_data_source_code; + /** + * 保存收款日志到oa底表 + * @param accTransactionResList + */ + @Override + public void saveAccLog(List accTransactionResList) { + if (CollectionUtils.isNotEmpty(accTransactionResList)){ + //查询已经存在的数据 + Formmain0044Entity formmain0044 = new Formmain0044Entity(); + formmain0044.setStart_date(DateUtil.lastWeek().toDateStr()); + formmain0044.setDataSourceCode(oa_data_source_code); + List formmain0044List = formmain0044Service.querySeridId(formmain0044); + //过滤已保存的数据 + if (CollectionUtils.isNotEmpty(formmain0044List) && CollectionUtils.isNotEmpty(accTransactionResList)){ + accTransactionResList = accTransactionResList.stream() + .filter(acc -> formmain0044List.stream() + .noneMatch(f -> acc.getSerialId().equals(f.getField0018()))) + .collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(accTransactionResList)){ + for (AccTransactionRes accTransactionRes : accTransactionResList) { + String bankAcc = StringUtil.nullConvert(accTransactionRes.getBankAcc()); + String bankName = StringUtil.nullConvert(accTransactionRes.getBankName()); + String accName = StringUtil.nullConvert(accTransactionRes.getAccName()); + String oppAccNo = StringUtil.nullConvert(accTransactionRes.getOppAccNo()); + String oppAccName = StringUtil.nullConvert(accTransactionRes.getOppAccName()); + String oppAccBank = StringUtil.nullConvert(accTransactionRes.getOppAccBank()); + String transTime = StringUtil.nullConvert(accTransactionRes.getTransTime()); + //这个是唯一的 + String serialId = StringUtil.nullConvert(StringUtil.replaceBlank(accTransactionRes.getSerialId())); + String amt = StringUtil.nullConvert(accTransactionRes.getAmt()); + String abs = StringUtil.nullConvert(accTransactionRes.getAbs()); + String bankType = StringUtil.nullConvert(accTransactionRes.getBankType()); + String serialNo = StringUtil.nullConvert(accTransactionRes.getSerialNo()); + String currency = StringUtil.nullConvert(CurrencyEnum.getNameByCode(accTransactionRes.getCurCode())); + String uses = StringUtil.nullConvert(accTransactionRes.getUses()); + String curCode = StringUtil.nullConvert(accTransactionRes.getCurCode()); + String postScript = StringUtil.nullConvert(accTransactionRes.getPostScript()); + String data = StrUtil.format(getAccLogXmlTemplate(),bankAcc,bankName,accName,oppAccNo,oppAccName,oppAccBank,transTime,serialId,amt,abs,bankType,serialNo,currency,uses,postScript,curCode); + JSONObject paramsTemplate = new JSONObject(); + paramsTemplate.put("loginName", "oa1"); + paramsTemplate.put("dataXml", data); + Map header = MapBuilder.create(true) + .put("apiCode", "8000340006") + .put("publicKey","ZJYAA9Z/jWMe1rC+Sjh8NVMRtwVMb5Bn0DbmIEsgpVlR3C9Ce7eDIk+3zDUT+v578prj") + .put("secretKey","B8sgQwEaskwM7BQj1XLvu3kdKD3xm7Lyd4FWsPaFQk5v+UtQLCkzVzLlCZ9Bdyv2j3JzOP8MtA1LSGvL+2BWG8c/o7DKi92S4mr3zcGearA=") + .put("appId","800034") + .build(); + String res = HttpRequest.post("http://127.0.0.1:9999/kangarooDataCenterV3/entranceController/externalCallInterface").addHeaders(header).body(paramsTemplate.toString()).timeout(60000).execute().body(); + System.out.println("保存oa底表结果:"+res); + } + } + } + } + + + private static String getAccLogXmlTemplate(){ + // return ""; + return ""; + } +}