|
|
@@ -53,14 +53,12 @@ import org.springblade.client.entity.CorpsDesc;
|
|
|
import org.springblade.client.entity.Message;
|
|
|
import org.springblade.client.feign.ICorpsDescClient;
|
|
|
import org.springblade.client.feign.IMessageClient;
|
|
|
-import org.springblade.client.feign.ISerialClient;
|
|
|
+import org.springblade.client.goods.enums.RedisKey;
|
|
|
import org.springblade.common.config.MD5Util;
|
|
|
import org.springblade.common.dto.token2DTO;
|
|
|
-import org.springblade.core.excel.util.ExcelUtil;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
import org.springblade.core.secure.utils.SecureUtil;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
-import org.springblade.core.tool.utils.BeanUtil;
|
|
|
import org.springblade.core.tool.utils.CollectionUtil;
|
|
|
import org.springblade.core.tool.utils.ObjectUtil;
|
|
|
import org.springblade.deliver.goods.entity.DeliveryFees;
|
|
|
@@ -93,6 +91,7 @@ import org.springblade.system.feign.ISysClient;
|
|
|
import org.springblade.system.user.entity.User;
|
|
|
import org.springblade.system.user.feign.IUserClient;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
@@ -100,7 +99,6 @@ import javax.net.ssl.*;
|
|
|
import java.io.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.BigInteger;
|
|
|
-import java.math.RoundingMode;
|
|
|
import java.net.HttpURLConnection;
|
|
|
import java.net.URL;
|
|
|
import java.net.URLEncoder;
|
|
|
@@ -108,6 +106,7 @@ import java.security.SecureRandom;
|
|
|
import java.security.cert.X509Certificate;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -123,10 +122,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
|
|
|
private ItemsMapper itemsMapper;
|
|
|
|
|
|
- /**
|
|
|
- * 生成系统编号
|
|
|
- */
|
|
|
- private final ISerialClient serialClient;
|
|
|
+ private final RedisTemplate<String, Object> redisTemplate;
|
|
|
|
|
|
private final AccMapper accMapper;
|
|
|
|
|
|
@@ -198,9 +194,9 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
}
|
|
|
if ("结算完成".equals(settlement.getFinanceStatus()) && "681169".equals(AuthUtil.getTenantId())) {
|
|
|
throw new SecurityException("此结算单已生成凭证,禁止撤销");
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
if (ObjectUtils.isNotNull(sysClient.getParamService("synchronous"))
|
|
|
- && "1".equals(sysClient.getParamService("synchronous"))){
|
|
|
+ && "1".equals(sysClient.getParamService("synchronous"))) {
|
|
|
throw new SecurityException("此结算单已生成凭证,禁止撤销");
|
|
|
}
|
|
|
}
|
|
|
@@ -234,9 +230,9 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
throw new SecurityException(overpayment.getMsg());
|
|
|
}
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
if (ObjectUtils.isNotNull(sysClient.getParamService("synchronous"))
|
|
|
- && "1".equals(sysClient.getParamService("synchronous"))){
|
|
|
+ && "1".equals(sysClient.getParamService("synchronous"))) {
|
|
|
//收费明细的核销金额
|
|
|
BigDecimal reduce = new BigDecimal(BigInteger.ZERO);
|
|
|
if (CollectionUtils.isNotEmpty(itemsList)) {
|
|
|
@@ -372,9 +368,9 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
throw new SecurityException(overpayment.getMsg());
|
|
|
}
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
if (ObjectUtils.isNotNull(sysClient.getParamService("synchronous"))
|
|
|
- && "1".equals(sysClient.getParamService("synchronous"))){
|
|
|
+ && "1".equals(sysClient.getParamService("synchronous"))) {
|
|
|
//收费明细的核销金额
|
|
|
BigDecimal reduce = new BigDecimal(BigInteger.ZERO);
|
|
|
if (CollectionUtils.isNotEmpty(itemsList)) {
|
|
|
@@ -476,7 +472,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
// 给角色为助理的人发送消息
|
|
|
R<String> roleId = sysClient.getRoleIds(AuthUtil.getTenantId(), "助理");
|
|
|
if (roleId.isSuccess() && roleId.getData() != null) {
|
|
|
- R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(roleId.getData()),null,null);
|
|
|
+ R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(roleId.getData()), null, null);
|
|
|
if (userList.isSuccess() && userList.getData() != null) {
|
|
|
userList.getData().forEach(user -> {
|
|
|
// 推送消息提醒助理生成采购
|
|
|
@@ -765,7 +761,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
}
|
|
|
tradingBoxFeesR.getData().setReconciliationAmount(decimal);
|
|
|
tradingBoxFeesR.getData().setReconciliationDate(null);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
if (tradingBoxFeesR.getData().getSettlementAmount() == null) {
|
|
|
throw new SecurityException("撤销账单失败,原业务表对账金额为空");
|
|
|
}
|
|
|
@@ -801,7 +797,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
}
|
|
|
transportItemFeesR.getData().setReconciliationAmount(decimal);
|
|
|
transportItemFeesR.getData().setReconciliationDate(null);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
if (transportItemFeesR.getData().getSettlementAmount() == null) {
|
|
|
throw new SecurityException("撤销账单失败,原业务表已收金额为空");
|
|
|
}
|
|
|
@@ -1004,7 +1000,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
accMapper.updateById(acc);
|
|
|
//原业务表,计算应收未收款,应收未收款 = 销售金额 - 本次溢付款 - 已收款
|
|
|
client.setBalanceAmount((client.getDebitAmount().subtract(client.getSettlmentAmount())).subtract(client.getCaseOverPayment()));
|
|
|
- if (ObjectUtils.isEmpty(items.getSettlementAmount())){
|
|
|
+ if (ObjectUtils.isEmpty(items.getSettlementAmount())) {
|
|
|
items.setSettlementAmount(BigDecimal.ZERO);
|
|
|
}
|
|
|
if (!items.getAmount().equals(items.getThisAmount().add(items.getSettlementAmount()))) {
|
|
|
@@ -1060,7 +1056,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
order1.setId(acc.getSrcId());
|
|
|
order1.setSettlmentAmount(receivedAmount);
|
|
|
order1.setBalanceAmount(amount);
|
|
|
- if("YPJ".equals(settlementDTO.getItemType())){
|
|
|
+ if ("YPJ".equals(settlementDTO.getItemType())) {
|
|
|
order1.setStatus(3);
|
|
|
order1.setActualPaymentStatus(2);
|
|
|
}
|
|
|
@@ -1084,7 +1080,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
accMapper.updateById(acc);
|
|
|
BeanUtils.copyProperties(tradingBoxFeesR.getData(), tradingBoxFees);
|
|
|
tradingBoxFees.setReconciliationDate(settlementDTO.getSettlementDate());
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
acc.setSettlementAmount(acc.getSettlementAmount() != null ? acc.getSettlementAmount().add(items.getThisAmount()) : new BigDecimal("0").add(items.getThisAmount()));
|
|
|
tradingBoxFeesR.getData().setSettlementAmount(tradingBoxFeesR.getData().getSettlementAmount() != null ? tradingBoxFeesR.getData().getSettlementAmount().add(items.getThisAmount()) : new BigDecimal("0").add(items.getThisAmount()));
|
|
|
accMapper.updateById(acc);
|
|
|
@@ -1107,7 +1103,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
transportItemFeesR.getData().setReconciliationAmount(transportItemFeesR.getData().getReconciliationAmount() != null ? transportItemFeesR.getData().getReconciliationAmount().add(items.getThisAmount()) : new BigDecimal("0").add(items.getThisAmount()));
|
|
|
accMapper.updateById(acc);
|
|
|
transportItemFeesR.getData().setReconciliationDate(settlementDTO.getSettlementDate());
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
acc.setSettlementAmount(acc.getSettlementAmount() != null ? acc.getSettlementAmount().add(items.getThisAmount()) : new BigDecimal("0").add(items.getThisAmount()));
|
|
|
transportItemFeesR.getData().setSettlementAmount(transportItemFeesR.getData().getSettlementAmount() != null ? transportItemFeesR.getData().getSettlementAmount().add(items.getThisAmount()) : new BigDecimal("0").add(items.getThisAmount()));
|
|
|
accMapper.updateById(acc);
|
|
|
@@ -1534,7 +1530,7 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
// todo 暂定用租户判断 国内贸易 收费 人民币金额 可以手输
|
|
|
if (!"681169".equals(SecureUtil.getTenantId())) {
|
|
|
if (!ObjectUtils.isNotNull(sysClient.getParamService("synchronous"))
|
|
|
- && !"1".equals(sysClient.getParamService("synchronous"))){
|
|
|
+ && !"1".equals(sysClient.getParamService("synchronous"))) {
|
|
|
if (!"234557".equals(SecureUtil.getTenantId())) {
|
|
|
model.setAmount(total);
|
|
|
}
|
|
|
@@ -2503,54 +2499,57 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
|
|
|
//测试获取AccountGroupRequest
|
|
|
public String getAccountGroupRequest() throws Exception {
|
|
|
- //校验当前租户配置,如果存在配置,返回token
|
|
|
- LambdaQueryWrapper<JdTenant> jdTenantLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- jdTenantLambdaQueryWrapper
|
|
|
- .last("limit 1")
|
|
|
- .eq(JdTenant::getTenantId, AuthUtil.getTenantId())
|
|
|
- .eq(JdTenant::getIsEnable, 1);
|
|
|
- JdTenant jdTenant = jdTenantMapper.selectOne(jdTenantLambdaQueryWrapper);
|
|
|
- if (jdTenant == null) {
|
|
|
- throw new SecurityException("当前租户未配置凭证信息");
|
|
|
- }
|
|
|
-
|
|
|
- ApigwConfig config = new ApigwConfig();
|
|
|
- //设置client_id 245905
|
|
|
- String client_id = "245905";
|
|
|
- config.setClientID(client_id);
|
|
|
- //设置client_secret
|
|
|
- String client_secret = "a4ae57bc06ea205a013acbf7ec753139";
|
|
|
- config.setClientSecret(client_secret);//
|
|
|
- ApigwClient apigwClient = ApigwClient.getInstance();
|
|
|
- //初始化API网关客户端
|
|
|
- apigwClient.init(config);
|
|
|
-
|
|
|
- //获得当天的appSecret
|
|
|
- ApiRequest requestSecret = new ApiRequest(HttpMethod.POST_FORM, "api.kingdee.com", "/jdyconnector/app_management/push_app_authorize");
|
|
|
- Map<String, String> querysSecret = new LinkedHashMap<>();
|
|
|
-
|
|
|
- querysSecret.put("outerInstanceId", "131805614467846144");
|
|
|
-
|
|
|
- requestSecret.setQuerys(querysSecret);
|
|
|
- ApiResult resultsSecret = ApigwClient.getInstance().send(requestSecret);
|
|
|
-
|
|
|
- token2DTO token2DTO = JSONObject.parseObject(resultsSecret.getBody(), token2DTO.class);
|
|
|
-
|
|
|
- //获得token
|
|
|
- ApiRequest request = new ApiRequest(HttpMethod.GET, "api.kingdee.com", "/jdyconnector/app_management/kingdee_auth_token");
|
|
|
-
|
|
|
- String key = token2DTO.getData().get(0).getAppKey();
|
|
|
- String secret = token2DTO.getData().get(0).getAppSecret();
|
|
|
-
|
|
|
- String s = MD5Util.hashMAC(key, secret);
|
|
|
- Map<String, String> querys = new LinkedHashMap<>();
|
|
|
- querys.put("app_key", key);
|
|
|
- querys.put("app_signature",s);
|
|
|
- request.setQuerys(querys);
|
|
|
- ApiResult results = ApigwClient.getInstance().send(request);
|
|
|
- System.out.println("金蝶返回数据======》"+results.getBody());
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(results.getBody());
|
|
|
- System.out.println("app-token======>"+jsonObject.getJSONObject("data").getString("access_token"));
|
|
|
+ //获取token
|
|
|
+ String token = redisTemplate.opsForValue().get(RedisKey.JDY_TOKEN) == null ? "" : redisTemplate.opsForValue().get(RedisKey.JDY_TOKEN).toString();
|
|
|
+ if (ObjectUtils.isNull(token)) {
|
|
|
+ //校验当前租户配置,如果存在配置,返回token
|
|
|
+ LambdaQueryWrapper<JdTenant> jdTenantLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ jdTenantLambdaQueryWrapper
|
|
|
+ .last("limit 1")
|
|
|
+ .eq(JdTenant::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(JdTenant::getIsEnable, 1);
|
|
|
+ JdTenant jdTenant = jdTenantMapper.selectOne(jdTenantLambdaQueryWrapper);
|
|
|
+ if (jdTenant == null) {
|
|
|
+ throw new SecurityException("当前租户未配置凭证信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ ApigwConfig config = new ApigwConfig();
|
|
|
+ //设置client_id 245905
|
|
|
+ String client_id = "245905";
|
|
|
+ config.setClientID(client_id);
|
|
|
+ //设置client_secret
|
|
|
+ String client_secret = "a4ae57bc06ea205a013acbf7ec753139";
|
|
|
+ config.setClientSecret(client_secret);//
|
|
|
+ ApigwClient apigwClient = ApigwClient.getInstance();
|
|
|
+ //初始化API网关客户端
|
|
|
+ apigwClient.init(config);
|
|
|
+
|
|
|
+ //获得当天的appSecret
|
|
|
+ ApiRequest requestSecret = new ApiRequest(HttpMethod.POST_FORM, "api.kingdee.com", "/jdyconnector/app_management/push_app_authorize");
|
|
|
+ Map<String, String> querysSecret = new LinkedHashMap<>();
|
|
|
+
|
|
|
+ querysSecret.put("outerInstanceId", "131805614467846144");
|
|
|
+
|
|
|
+ requestSecret.setQuerys(querysSecret);
|
|
|
+ ApiResult resultsSecret = ApigwClient.getInstance().send(requestSecret);
|
|
|
+
|
|
|
+ token2DTO token2DTO = JSONObject.parseObject(resultsSecret.getBody(), token2DTO.class);
|
|
|
+
|
|
|
+ //获得token
|
|
|
+ ApiRequest request = new ApiRequest(HttpMethod.GET, "api.kingdee.com", "/jdyconnector/app_management/kingdee_auth_token");
|
|
|
+
|
|
|
+ String key = token2DTO.getData().get(0).getAppKey();
|
|
|
+ String secret = token2DTO.getData().get(0).getAppSecret();
|
|
|
+
|
|
|
+ String s = MD5Util.hashMAC(key, secret);
|
|
|
+ Map<String, String> querys = new LinkedHashMap<>();
|
|
|
+ querys.put("app_key", key);
|
|
|
+ querys.put("app_signature", s);
|
|
|
+ request.setQuerys(querys);
|
|
|
+ ApiResult results = ApigwClient.getInstance().send(request);
|
|
|
+ System.out.println("金蝶返回数据======》" + results.getBody());
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(results.getBody());
|
|
|
+ System.out.println("app-token======>" + jsonObject.getJSONObject("data").getString("access_token"));
|
|
|
|
|
|
/*//获取测试账套token的url
|
|
|
String getTokenUrl = "https://api.kingdee.com/auth/user/access_token?client_id=" + jdTenant.getClientId() +
|
|
|
@@ -2566,7 +2565,13 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
|
|
|
}
|
|
|
return tokenDTO.getData().getAccess_token();*/
|
|
|
// return jsonObject.getJSONObject("data").getString("app-token");
|
|
|
- return jsonObject.getJSONObject("data").getString("access_token");
|
|
|
+ String stamp = jsonObject.getJSONObject("data").getString("expires");
|
|
|
+ long expires = Long.parseLong(stamp);
|
|
|
+ redisTemplate.opsForValue().set(RedisKey.JDY_TOKEN, jsonObject.getJSONObject("data").getString("access_token"), expires, TimeUnit.MILLISECONDS);
|
|
|
+ return jsonObject.getJSONObject("data").getString("access_token");
|
|
|
+ } else {
|
|
|
+ return token;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* //测试获取套账
|