From c427840445fefb679a287dbeaba81bd417388aeb Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期五, 04 九月 2026 17:10:44 +0800
Subject: [PATCH] feat:开票和bip推送分离 新增bip报账单 新增合同标的物变更
---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BankStatementServiceImpl.java | 133 ++++++++++++++++++++++++++++++++++++-------
1 files changed, 110 insertions(+), 23 deletions(-)
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BankStatementServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BankStatementServiceImpl.java
index ad2c82a..6e01709 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BankStatementServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BankStatementServiceImpl.java
@@ -6,7 +6,6 @@
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
-import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -16,12 +15,10 @@
import com.by4cloud.platformx.business.dto.BankStatementUpdateDTO;
import com.by4cloud.platformx.business.dto.PaymentConfirmAddDTO;
import com.by4cloud.platformx.business.entity.*;
-import com.by4cloud.platformx.business.mapper.BankStatementItemMapper;
-import com.by4cloud.platformx.business.mapper.BankStatementMapper;
-import com.by4cloud.platformx.business.mapper.BusinessCustomerMapper;
-import com.by4cloud.platformx.business.mapper.ContractMapper;
+import com.by4cloud.platformx.business.mapper.*;
import com.by4cloud.platformx.business.service.BankStatementService;
import com.by4cloud.platformx.business.service.PaymentConfirmService;
+import com.by4cloud.platformx.business.vo.CustInfoVo;
import com.by4cloud.platformx.business.vo.StatementContractVo;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.security.util.SecurityUtils;
@@ -33,6 +30,7 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
+import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -53,12 +51,20 @@
private final StringRedisTemplate redisTemplate;
private final RemoteDeptService remoteDeptService;
private final BankStatementItemMapper bankStatementItemMapper;
+ private final ErpRequestRecordMapper erpRequestRecordMapper;
+ private final BipViewMapper bipViewMapper;
@Value("${bip.url}")
private String url;
@Value("${bip.flag}")
private Boolean bipFlag;
+
+ @Value("${dept.sgb}")
+ private String sgb;
+
+ @Value("${erp.sgb}")
+ private String sgbErp;
@Override
public R edit(BankStatementUpdateDTO updateDTO) {
@@ -68,16 +74,8 @@
}
BigDecimal toPaidTotal = updateDTO.getContractCollectionList().stream() .map(StatementContractDTO::getToPaidAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- if (toPaidTotal.compareTo(statement.getTranAmount().subtract(statement.getConfirmAmount()))>0){
- return R.failed("纭鏀舵鎬婚涓嶈兘瓒呰繃浜ゆ槗娴佹按閲戦");
- }
-
- //bip鎺ㄩ��
- if (bipFlag) {
- R r = pushSaveCollection(statement, updateDTO.getContractCollectionList());
- if (!r.isOk()){
- return r;
- }
+ if (toPaidTotal.compareTo(statement.getTranAmount().subtract(statement.getConfirmAmount()))!=0){
+ return R.failed("纭鏀舵鎬婚蹇呴』涓庝氦鏄撴祦姘撮噾棰濅竴鑷�");
}
statement.setConfirmAmount(statement.getConfirmAmount().add(toPaidTotal));
@@ -96,13 +94,86 @@
addDTO.setBusGuestId(statement.getBusGuestId()+"");
addDTO.setConfirmTime(statement.getTranDate());
addDTO.setContractNo(contract.getContractNo());
- addDTO.setInOrOut("1");
+ addDTO.setInOrOut(statement.getDcFlag());
addDTO.setTransationAmount(statementContractDTO.getToPaidAmount());
addDTO.setBankSeqNo(statement.getBankSeqNo());
paymentConfirmService.add(addDTO);
+
+
+ //鐭冲伐娉典富鍔ㄦ帹閫佺郴缁�
+ if ((StrUtil.equals(SecurityUtils.getUser().getCompId() + "", sgb)) && StrUtil.isNotEmpty(sgbErp)) {
+ BusinessCustomer customer = businessCustomerMapper.selectById(contract.getPartyAId());
+ if (ObjUtil.isNotNull(customer)) {
+ pushCollection(statement, contract,customer,item);
+ }
+ }
+
});
+ //鍒ゆ柇鏄惁鍐呴儴鍗曚綅
+ CustInfoVo custInfoVo = bipViewMapper.selectBaseInfoByCustName(statement.getPayBankAccName());
+ if (ObjUtil.isNull(custInfoVo)){
+ return R.ok();
+ }
+ //bip鎺ㄩ��
+ if (bipFlag&&custInfoVo.getCustCode().equals("01")) {
+ return pushSaveCollection(statement, updateDTO.getContractCollectionList());
+ }
+ log.info("鍐呴儴寰�鏉ユ敹娆惧崟锛屽鎴峰悕绉帮細{},瀹㈡埛绫诲瀷锛歿},涓嶇敤淇濆瓨鏀舵鍗�",custInfoVo.getCustName(),custInfoVo.getCustclass());
return R.ok();
+ }
+
+ private void pushCollection(BankStatement statement,Contract contract,BusinessCustomer customer,BankStatementItem item) {
+ new Thread(() -> {
+ JSONObject request = genErpParam(statement,contract,customer,item);
+ String resp = "";
+ String reqPath = "";
+ log.info("宸ヤ笟娉垫敹娆�/閫�娆撅細{},鍏ュ弬:{}",statement.getDcFlag(),request.toJSONString());
+ if (statement.getDcFlag().equals("1")){
+ reqPath = sgbErp + "/arpclose/create";
+ }
+ if (statement.getDcFlag().equals("2")){
+ reqPath = sgbErp+"/arpclose/create";
+ }
+ resp = HttpUtil.post(reqPath,request.toJSONString());
+ saveErpRequestRecord("sgb",reqPath,request.toJSONString(),resp);
+ log.info("宸ヤ笟娉垫敹娆�/閫�娆惧洖鍙傦細{}",resp);
+
+ try {
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }).start();
+ }
+
+ private void saveErpRequestRecord(String ymj,String medthodName, String toJSONString, String result) {
+ ErpRequestRecord record = new ErpRequestRecord();
+ record.setErpName(ymj);
+ record.setMothedName(medthodName);
+ record.setRequestParams(toJSONString);
+ record.setResponseParams(result);
+ erpRequestRecordMapper.insert(record);
+ }
+
+ private JSONObject genErpParam(BankStatement statement, Contract contract,BusinessCustomer customer,BankStatementItem item) {
+ JSONObject req = new JSONObject();
+ JSONObject djt = new JSONObject();
+ djt.put("iAmt",item.getConfirmAmount());
+ djt.put("iAmt_f",item.getConfirmAmount());
+ djt.put("cCusVen",customer.getErpCompanyCode());
+ djt.put("cexch_name","浜烘皯甯�");
+ djt.put("iAmount",item.getConfirmAmount());
+ req.put("鍗曟嵁澶�",djt);
+ JSONArray array = new JSONArray();
+ JSONObject djti = new JSONObject();
+ djti.put("cVouchID",statement.getBankSeqNo());
+ djti.put("dVouchDate",DateUtil.formatDate(statement.getTranDate()));
+ djti.put("cDwCode",customer.getErpCompanyCode());
+ djti.put("cexch_name","浜烘皯甯�");
+ djti.put("iAmount",item.getConfirmAmount());
+ array.add(djti);
+ req.put("鍗曟嵁澶�",array);
+ return req;
}
private R pushSaveCollection(BankStatement statement, List<StatementContractDTO> contractDTOList) {
@@ -118,11 +189,6 @@
}
String finalAccessToken = accessToken;
- BusinessCustomer customer = businessCustomerMapper.selectById(statement.getBusGuestId());
- if (ObjUtil.isNull(customer)||StrUtil.isEmpty(customer.getBipCode())){
- log.error("鏌ヨ瀹㈡埛淇℃伅寮傚父");
- return R.failed("鏌ヨ瀹㈡埛淇℃伅寮傚父");
- }
R<SysDept> r = remoteDeptService.getById(SecurityUtils.getUser().getCompId());
log.info("鏌ヨ鍗曚綅淇℃伅:{}",JSONObject.toJSONString(r.getData()));
if (!r.isOk()){
@@ -130,7 +196,7 @@
return R.failed("鏌ヨ鍗曚綅淇℃伅寮傚父");
}
SysDept dept = r.getData();
- JSONObject params = genRequestParam(statement,dept,customer,contractDTOList);
+ JSONObject params = genRequestParam(statement,dept,contractDTOList);
log.info("鏀舵鍗曢泦鎴� Request:{}", params.toJSONString());
String result = HttpUtil.post(url + "/yonbip/EFI/collection/saveandsubmit?access_token=" + finalAccessToken, params.toJSONString());
@@ -143,7 +209,9 @@
return R.ok();
}
- private JSONObject genRequestParam(BankStatement statement,SysDept dept,BusinessCustomer customer,List<StatementContractDTO> contractDTOList) {
+ private JSONObject genRequestParam(BankStatement statement,SysDept dept,List<StatementContractDTO> contractDTOList) {
+ Contract contract1 = contractMapper.selectById(contractDTOList.get(0).getId());
+ BusinessCustomer customer = businessCustomerMapper.selectById(contract1.getPartyAId());
JSONObject jsonObject = new JSONObject();
JSONObject data = new JSONObject();
data.put("billDate",DateUtil.format(statement.getTranDate(), DatePattern.NORM_DATETIME_FORMAT));
@@ -182,6 +250,7 @@
.select(Contract::getAmount)
.leftJoin(Contract.class,Contract::getId,BankStatementItem::getContractId)
.eq(BankStatementItem::getCompId,SecurityUtils.getUser().getCompId())
+ .eq(BankStatementItem::getStatetId,id)
.orderByDesc(BankStatementItem::getCreateTime);
return R.ok(bankStatementItemMapper.selectJoinList(StatementContractVo.class, wrapper));
}
@@ -468,4 +537,22 @@
jsonObject.put("data",data);
return jsonObject;
}
+
+ @Override
+ public R pushBip(Long itemId) {
+ BankStatementItem item = bankStatementItemMapper.selectById(itemId);
+ BankStatement statement = baseMapper.selectById(item.getStatetId());
+ List<StatementContractDTO> statementContractDTOList = new ArrayList<>();
+ StatementContractDTO contractDTO = new StatementContractDTO();
+ contractDTO.setId(item.getContractId());
+ contractDTO.setToPaidAmount(item.getConfirmAmount());
+ statementContractDTOList.add(contractDTO);
+ R r = pushSaveCollection(statement,statementContractDTOList);
+ if (r.isOk()){
+ item.setPushFlag("1");
+ bankStatementItemMapper.updateById(item);
+ return r;
+ }
+ return r;
+ }
}
\ No newline at end of file
--
Gitblit v1.9.1