Browse Source

2023年7月17日17:25:45

纪新园 2 years ago
parent
commit
fcde770ac0
23 changed files with 898 additions and 194 deletions
  1. 2 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/goods/enums/RedisKey.java
  2. 8 0
      blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/feign/IPriceBankClient.java
  3. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjSettlement.java
  4. 6 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShip.java
  5. 396 0
      blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjpfFiles.java
  6. 13 3
      blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java
  7. 1 0
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/receiving/ReCeVingController.java
  8. 66 64
      blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java
  9. 8 0
      blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/PriceBankClient.java
  10. 81 33
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  11. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsStatisticsController.java
  12. 6 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.xml
  13. 19 21
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java
  14. 57 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/files/controller/FilesController.java
  15. 16 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/files/mapper/PjpfFilesMapper.java
  16. 34 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/files/mapper/PjpfFilesMapper.xml
  17. 14 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/files/service/PjpfFilesService.java
  18. 18 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/files/service/impl/PjpfFilesServiceImpl.java
  19. 2 2
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java
  20. 11 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/controller/SettlementController.java
  21. 24 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/service/impl/SettlementServiceImpl.java
  22. 31 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java
  23. 76 71
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

+ 2 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/goods/enums/RedisKey.java

@@ -25,5 +25,7 @@ public class RedisKey {
 	public static final String FEE_NAME = "feeName";
 	//商品属性、配件
 	public static final String SPECIFICATION = "specification";
+	//金蝶token
+	public static final String JDY_TOKEN = "JDY-token";
 
 }

+ 8 - 0
blade-service-api/blade-mocha-item-api/src/main/java/org/springblade/mocha/feign/IPriceBankClient.java

@@ -22,6 +22,7 @@ public interface IPriceBankClient {
 	String UPDATE_PRICE = API_PREFIX + "/updatePrice";
 	String SELECT_BY_ID = API_PREFIX + "/selectById";
 	String SELECT_LIST = API_PREFIX + "/selectList";
+	String SELECT_BY_GOODS_ID = API_PREFIX + "/selectByGoodsId";
 
 	/**
 	 * 更新出口价格库价格
@@ -78,4 +79,11 @@ public interface IPriceBankClient {
 	@GetMapping(SELECT_LIST)
 	List<PriceBank> selectList();
 
+	/**
+	 * 获得所有数据
+	 * @return
+	 */
+	@GetMapping(SELECT_BY_GOODS_ID)
+	List<PriceBank> selectByGoodsId(@RequestParam("goodsId") Long goodsId,@RequestParam("tenantId") String tenantId);
+
 }

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjSettlement.java

@@ -185,4 +185,10 @@ public class PjSettlement implements Serializable {
 	 */
 	@TableField(exist = false)
 	private List<PjSettlementItems> settlementItemsList;
+
+	/**
+	 * 附件
+	 */
+	@TableField(exist = false)
+	private List<PjpfFiles> filesList;
 }

+ 6 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjShip.java

@@ -281,4 +281,10 @@ public class PjShip implements Serializable {
 	 */
 	@TableField(exist = false)
 	private List<String> businesDateList;
+
+	/**
+	 * 附件
+	 */
+	@TableField(exist = false)
+	private List<PjpfFiles> filesList;
 }

+ 396 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjpfFiles.java

@@ -0,0 +1,396 @@
+package org.springblade.salesPart.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 轮胎商城业务附件表
+ * @TableName pjpf_files
+ */
+public class PjpfFiles implements Serializable {
+    /**
+     * 住建Id
+     */
+    private Long id;
+
+    /**
+     * 主表id
+     */
+    private Long pid;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 文件名
+     */
+    private String fileName;
+
+    /**
+     * 文件地址
+     */
+    private String url;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 版本
+     */
+    private String version;
+
+    /**
+     * 租户
+     */
+    private String tenantId;
+
+    /**
+     * 创建人
+     */
+    private Long createUser;
+
+    /**
+     * 创建部门
+     */
+    private Long createDept;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改人
+     */
+    private Long updateUser;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+    /**
+     * 状态(0 正常 1停用)
+     */
+    private Integer status;
+
+    /**
+     * 是否已删除(0 否 1是)
+     */
+    private Integer isDeleted;
+
+    /**
+     * 分类
+     */
+    private String type;
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 住建Id
+     */
+    public Long getId() {
+        return id;
+    }
+
+    /**
+     * 住建Id
+     */
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * 主表id
+     */
+    public Long getPid() {
+        return pid;
+    }
+
+    /**
+     * 主表id
+     */
+    public void setPid(Long pid) {
+        this.pid = pid;
+    }
+
+    /**
+     * 排序
+     */
+    public Integer getSort() {
+        return sort;
+    }
+
+    /**
+     * 排序
+     */
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
+
+    /**
+     * 文件名
+     */
+    public String getFileName() {
+        return fileName;
+    }
+
+    /**
+     * 文件名
+     */
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    /**
+     * 文件地址
+     */
+    public String getUrl() {
+        return url;
+    }
+
+    /**
+     * 文件地址
+     */
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    /**
+     * 备注
+     */
+    public String getRemarks() {
+        return remarks;
+    }
+
+    /**
+     * 备注
+     */
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    /**
+     * 版本
+     */
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * 版本
+     */
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    /**
+     * 租户
+     */
+    public String getTenantId() {
+        return tenantId;
+    }
+
+    /**
+     * 租户
+     */
+    public void setTenantId(String tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    /**
+     * 创建人
+     */
+    public Long getCreateUser() {
+        return createUser;
+    }
+
+    /**
+     * 创建人
+     */
+    public void setCreateUser(Long createUser) {
+        this.createUser = createUser;
+    }
+
+    /**
+     * 创建部门
+     */
+    public Long getCreateDept() {
+        return createDept;
+    }
+
+    /**
+     * 创建部门
+     */
+    public void setCreateDept(Long createDept) {
+        this.createDept = createDept;
+    }
+
+    /**
+     * 创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    /**
+     * 创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 修改人
+     */
+    public Long getUpdateUser() {
+        return updateUser;
+    }
+
+    /**
+     * 修改人
+     */
+    public void setUpdateUser(Long updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    /**
+     * 修改时间
+     */
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    /**
+     * 修改时间
+     */
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    /**
+     * 状态(0 正常 1停用)
+     */
+    public Integer getStatus() {
+        return status;
+    }
+
+    /**
+     * 状态(0 正常 1停用)
+     */
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    /**
+     * 是否已删除(0 否 1是)
+     */
+    public Integer getIsDeleted() {
+        return isDeleted;
+    }
+
+    /**
+     * 是否已删除(0 否 1是)
+     */
+    public void setIsDeleted(Integer isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+
+    /**
+     * 分类
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * 分类
+     */
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        PjpfFiles other = (PjpfFiles) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getPid() == null ? other.getPid() == null : this.getPid().equals(other.getPid()))
+            && (this.getSort() == null ? other.getSort() == null : this.getSort().equals(other.getSort()))
+            && (this.getFileName() == null ? other.getFileName() == null : this.getFileName().equals(other.getFileName()))
+            && (this.getUrl() == null ? other.getUrl() == null : this.getUrl().equals(other.getUrl()))
+            && (this.getRemarks() == null ? other.getRemarks() == null : this.getRemarks().equals(other.getRemarks()))
+            && (this.getVersion() == null ? other.getVersion() == null : this.getVersion().equals(other.getVersion()))
+            && (this.getTenantId() == null ? other.getTenantId() == null : this.getTenantId().equals(other.getTenantId()))
+            && (this.getCreateUser() == null ? other.getCreateUser() == null : this.getCreateUser().equals(other.getCreateUser()))
+            && (this.getCreateDept() == null ? other.getCreateDept() == null : this.getCreateDept().equals(other.getCreateDept()))
+            && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
+            && (this.getUpdateUser() == null ? other.getUpdateUser() == null : this.getUpdateUser().equals(other.getUpdateUser()))
+            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
+            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+            && (this.getIsDeleted() == null ? other.getIsDeleted() == null : this.getIsDeleted().equals(other.getIsDeleted()))
+            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getPid() == null) ? 0 : getPid().hashCode());
+        result = prime * result + ((getSort() == null) ? 0 : getSort().hashCode());
+        result = prime * result + ((getFileName() == null) ? 0 : getFileName().hashCode());
+        result = prime * result + ((getUrl() == null) ? 0 : getUrl().hashCode());
+        result = prime * result + ((getRemarks() == null) ? 0 : getRemarks().hashCode());
+        result = prime * result + ((getVersion() == null) ? 0 : getVersion().hashCode());
+        result = prime * result + ((getTenantId() == null) ? 0 : getTenantId().hashCode());
+        result = prime * result + ((getCreateUser() == null) ? 0 : getCreateUser().hashCode());
+        result = prime * result + ((getCreateDept() == null) ? 0 : getCreateDept().hashCode());
+        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
+        result = prime * result + ((getUpdateUser() == null) ? 0 : getUpdateUser().hashCode());
+        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
+        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+        result = prime * result + ((getIsDeleted() == null) ? 0 : getIsDeleted().hashCode());
+        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", pid=").append(pid);
+        sb.append(", sort=").append(sort);
+        sb.append(", fileName=").append(fileName);
+        sb.append(", url=").append(url);
+        sb.append(", remarks=").append(remarks);
+        sb.append(", version=").append(version);
+        sb.append(", tenantId=").append(tenantId);
+        sb.append(", createUser=").append(createUser);
+        sb.append(", createDept=").append(createDept);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", updateUser=").append(updateUser);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", status=").append(status);
+        sb.append(", isDeleted=").append(isDeleted);
+        sb.append(", type=").append(type);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 13 - 3
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -166,6 +166,9 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 		}
 		int finalCurrent = current;
 
+		//达沃特新需求
+		String value = sysClient.getParamService("automatic.translation");
+
 		List<AuditPathsLevels> pathsLevelsList = auditProecessDTO.getPathsLevelsList();
 		//根据审批级次 生成 有多少调就生成多条审批流
 
@@ -313,10 +316,17 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 
 				message.setUrl("/approveData/index");
 				sendMsgToGroup(message, e.getAuditUserId());
-
-				auditProecess.setAuditStatus("S");
+				if (ObjectUtils.isNotNull(value) && value.equals("1")){
+					auditProecess.setAuditStatus("A");
+				}else{
+					auditProecess.setAuditStatus("S");
+				}
 			} else {
-				auditProecess.setAuditStatus("N");
+				if (ObjectUtils.isNotNull(value) && value.equals("1")){
+					auditProecess.setAuditStatus("A");
+				}else{
+					auditProecess.setAuditStatus("N");
+				}
 			}
 
 			//根据pathId和ActId查询保存字段

+ 1 - 0
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/receiving/ReCeVingController.java

@@ -123,6 +123,7 @@ public class ReCeVingController extends BladeController {
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getCreateUser()), Delivery::getCreateUser, delivery.getCreateUser());//制单人
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getStorageId()), Delivery::getStorageId, delivery.getStorageId());//仓库
 		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getDeliveryStatus()), Delivery::getDeliveryStatus, delivery.getDeliveryStatus());//状态
+		lambdaQueryWrapper.eq(Func.isNotEmpty(delivery.getVoucherStatus()), Delivery::getVoucherStatus, delivery.getVoucherStatus());//状态
 		lambdaQueryWrapper.orderByDesc(Delivery::getCreateTime);
 		IPage<Delivery> pages = deliveryService.page(Condition.getPage(query), lambdaQueryWrapper);
 		//解决回显字段问题

+ 66 - 64
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.deliver.goods.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -36,6 +37,7 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import org.springblade.client.entity.*;
 import org.springblade.client.feign.*;
+import org.springblade.client.goods.enums.RedisKey;
 import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.common.config.MD5Util;
 import org.springblade.common.dto.token2DTO;
@@ -1721,6 +1723,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 					for (Delivery delivery1 : deliveryList) {
 						delivery1.setVoucherId(delivery.getVoucherId());
 						delivery1.setVoucherNo(delivery.getVoucherNo());
+						delivery1.setVoucherStatus("1");
 					}
 					this.updateBatchById(deliveryList);
 				}
@@ -1791,7 +1794,7 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 					try {
 						//测试账套-工厂发货生成凭证
 						Delivery delivery1 = this.testTakeGoodsSaveVoucher(brand, select, accountName, corpName, corpNumber, wareHouse, acoount, orderNo);
-						if (ObjectUtils.isNotNull(delivery1)){
+						if (ObjectUtils.isNotNull(delivery1)) {
 							delivery1.setVoucherStatus("1");
 							baseMapper.updateById(delivery1);
 						}
@@ -1946,7 +1949,6 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		} else {
 			tenantId = delivery.getTenantId();
 		}
-
 		//获取token
 		String token = this.getAccountGroupRequest(tenantId);
 		//获取套账url
@@ -2316,69 +2318,69 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 	 * 测试获取AccountGroupRequest
 	 */
 	public String getAccountGroupRequest(String tenantId) throws Exception {
-		//校验当前租户配置,如果存在配置,返回token
-		LambdaQueryWrapper<JdTenant> jdTenantLambdaQueryWrapper = new LambdaQueryWrapper<>();
-		jdTenantLambdaQueryWrapper
-			.last("limit 1")
-			.eq(JdTenant::getTenantId, tenantId)
-			.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("app-token"));
-
-		/*//获取测试账套token的url
-		String getTokenUrl = "https://api.kingdee.com/auth/user/access_token?client_id=" + jdTenant.getClientId() +
-			"&client_secret=" + jdTenant.getClientSecret() +
-			"&username=" + jdTenant.getUsername() +
-			"&password=" + jdTenant.getPassword();
-		Map<String, String> urlParams = new HashMap<>();
-
-		String result = this.doGet(getTokenUrl, urlParams);
-		tokenDTO tokenDTO = JSONObject.parseObject(result, tokenDTO.class);
-		if (tokenDTO.errcode == 1006) {
-			throw new SecurityException("当前密码错误次数超过限定值,请稍后再试");
+		//获取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, tenantId)
+				.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 json = JSON.parseObject(results.getBody());
+			if ("1000402002".equals(json.getString("errcode"))) {
+				throw new RuntimeException("金蝶返回数据:" + json.getString("description"));
+			}
+			JSONObject jsonObject = JSONObject.parseObject(results.getBody());
+			System.out.println("app-token======>" + jsonObject.getJSONObject("data").getString("app-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;
 		}
-		return tokenDTO.getData().getAccess_token();*/
-		return jsonObject.getJSONObject("data").getString("access_token");
 	}
 
 	public String doGet(String url, Map<String, String> urlParams)

+ 8 - 0
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/feign/PriceBankClient.java

@@ -162,4 +162,12 @@ public class PriceBankClient implements IPriceBankClient {
 		lambdaQueryWrapper.eq(PriceBank::getIsDeleted, 0).eq(PriceBank::getTenantId, AuthUtil.getTenantId());
 		return priceBankMapper.selectList(lambdaQueryWrapper);
 	}
+
+	@Override
+	public List<PriceBank> selectByGoodsId(Long goodsId, String tenantId) {
+		LambdaQueryWrapper<PriceBank> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PriceBank::getIsDeleted, 0).eq(PriceBank::getTenantId, tenantId)
+		.eq(PriceBank::getItemId,goodsId);
+		return priceBankMapper.selectList(lambdaQueryWrapper);
+	}
 }

+ 81 - 33
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -54,6 +54,8 @@ import org.springblade.finance.vojo.Items;
 import org.springblade.finance.vojo.Settlement;
 import org.springblade.land.entity.LandOrder;
 import org.springblade.land.feign.ILandClient;
+import org.springblade.mocha.entity.PriceBank;
+import org.springblade.mocha.feign.IPriceBankClient;
 import org.springblade.pay.tonglianPayment.dto.PaymentDTO;
 import org.springblade.pay.tonglianPayment.entity.Parameters;
 import org.springblade.pay.tonglianPayment.fegin.IPaymentClient;
@@ -174,6 +176,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 	private final IStorageClient storageClient;
 
+	private final IPriceBankClient priceBankClient;
+
 
 	@Override
 	public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
@@ -1242,11 +1246,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				}
 			}
 		}
+		//达沃特新需求
+		String value = sysClient.getParamService("automatic.translation");
 		// 判断是采购审批 还是 销售审批  新增3特批审核
 		if (checkFlag == 1) {
 			pathsActs = iCheckClient.getActsByActId(4, "status");
 		} else if (checkFlag == 2) {
-			pathsActs = iCheckClient.getActsByActId(3, "status");
+			if (ObjectUtils.isNotNull(value) && value.equals("1")){
+				pathsActs = iCheckClient.getActsByActId(1108, "status");
+			}else{
+				pathsActs = iCheckClient.getActsByActId(3, "status");
+			}
 		} else if (checkFlag == 3) {
 			pathsActs = iCheckClient.getActsByActId(13, "status");
 		} else {
@@ -1263,11 +1273,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				salesOrder.setSpecialCheckUser(AuthUtil.getUserName());
 				salesOrder.setSpecialCheckTime(new Date());
 			} else {
-				salesOrder.setStatus(1);
-				salesOrder.setOrderStatus(OrderStatusEnum.SUBMIT.getType());
-				salesOrder.setCheckDate(new Date());
-				salesOrder.setFudaPurchaseStatus(OrderStatusEnum.SUBMIT.getType());
-				salesOrder.setFudaPurchaseDate(new Date());
+				if (ObjectUtils.isNotNull(value) && value.equals("1")){
+					salesOrder.setStatus(3);
+					salesOrder.setOrderStatus(OrderStatusEnum.PASS.getType());
+					salesOrder.setFudaPurchaseStatus(OrderStatusEnum.PASS.getType());
+				}else{
+					salesOrder.setStatus(1);
+					salesOrder.setOrderStatus(OrderStatusEnum.SUBMIT.getType());
+					salesOrder.setCheckDate(new Date());
+					salesOrder.setFudaPurchaseStatus(OrderStatusEnum.SUBMIT.getType());
+					salesOrder.setFudaPurchaseDate(new Date());
+				}
 			}
 			baseMapper.updateById(salesOrder);
 
@@ -1276,7 +1292,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			if (checkFlag == 1) {
 				auditPathsLevels = iCheckClient.listLevelsByActId(4, "status");
 			} else if (checkFlag == 2) {
-				auditPathsLevels = iCheckClient.listLevelsByActId(3, "status");
+				if (ObjectUtils.isNotNull(value) && value.equals("1")){
+					auditPathsLevels = iCheckClient.listLevelsByActId(1108, "status");
+				}else{
+					auditPathsLevels = iCheckClient.listLevelsByActId(3, "status");
+				}
 			} else {
 				auditPathsLevels = iCheckClient.listLevelsByActId(13, "status");
 			}
@@ -5472,6 +5492,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		List<Order> orderListAll = new ArrayList<>();
 		Order order = null;
 		for (OrderItems items : itemsList) {
+			List<PriceBank> priceBankList = priceBankClient.selectByGoodsId(items.getItemId(),AuthUtil.getTenantId());
 			if("MX".equals(items.getDetailType())){
 				OrderItems orderItems = orderItemsMapper.selectById(items.getId());
 				if (ObjectUtils.isNotNull(orderItems)) {
@@ -5488,7 +5509,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						orderItems_.setBillType("CG");
 						orderItems_.setOrderQuantity(items.getOrderQuantity());
 						orderItems_.setDetailType(OrderTypeEnum.ITEMTYPE.getType());//明细
-
 						if (ObjectUtils.isNotNull(orderItems_.getCorpId())) {
 							CorpsDesc corpsDesc = corpsDescClient.getCorpId(orderItems_.getCorpId());
 							if (ObjectUtils.isNotNull(corpsDesc)) {
@@ -5508,12 +5528,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						} else {
 							orderItems_.setActualQuantity(orderItems_.getOrderQuantity());
 						}
-						if (ObjectUtils.isNotNull(orderItems_.getPurchasePrice())) {
-							orderItems_.setPrice(orderItems_.getPurchasePrice());
-							orderItems_.setAmount(orderItems_.getPurchasePrice().multiply(orderItems_.getActualQuantity()));
-						} else {
-							orderItems_.setPrice(orderItems_.getPrice());
-							orderItems_.setAmount(orderItems_.getPrice().multiply(orderItems_.getActualQuantity()));
+						if (ObjectUtils.isNotNull(priceBankList) && priceBankList.size()>0){
+							if (ObjectUtils.isNotNull(priceBankList.get(0).getPrice()) && !priceBankList.get(0).getPrice().equals(new BigDecimal("0.00"))){
+								orderItems_.setPrice(priceBankList.get(0).getPrice());
+								orderItems_.setAmount(orderItems_.getPurchaseQuantity().multiply(priceBankList.get(0).getPrice()));
+							}else{
+								orderItems_.setPrice(new BigDecimal("0.00"));
+								orderItems_.setAmount(new BigDecimal("0.00"));
+							}
+						}else{
+							orderItems_.setPrice(new BigDecimal("0.00"));
+							orderItems_.setAmount(new BigDecimal("0.00"));
 						}
 						orderItemsListAll.add(orderItems_);
 						orderListAll.add(order);
@@ -5552,12 +5577,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						} else {
 							orderItems_.setActualQuantity(orderItems_.getOrderQuantity());
 						}
-						if (ObjectUtils.isNotNull(orderItems_.getPurchasePrice())) {
-							orderItems_.setPrice(orderItems_.getPurchasePrice());
-							orderItems_.setAmount(orderItems_.getPurchasePrice().multiply(orderItems_.getActualQuantity()));
-						} else {
-							orderItems_.setPrice(orderItems_.getPrice());
-							orderItems_.setAmount(orderItems_.getPrice().multiply(orderItems_.getActualQuantity()));
+						if (ObjectUtils.isNotNull(priceBankList) && priceBankList.size()>0){
+							if (ObjectUtils.isNotNull(priceBankList.get(0).getPrice()) && !priceBankList.get(0).getPrice().equals(new BigDecimal("0.00"))){
+								orderItems_.setPrice(priceBankList.get(0).getPrice());
+								orderItems_.setAmount(orderItems_.getPurchaseQuantity().multiply(priceBankList.get(0).getPrice()));
+							}else{
+								orderItems_.setPrice(new BigDecimal("0.00"));
+								orderItems_.setAmount(new BigDecimal("0.00"));
+							}
+						}else{
+							orderItems_.setPrice(new BigDecimal("0.00"));
+							orderItems_.setAmount(new BigDecimal("0.00"));
 						}
 						orderItemsListAll.add(orderItems_);
 						orderListAll.add(order);
@@ -5574,6 +5604,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						orderItems_.setSrcId(order.getId());
 						orderItems_.setOrgOrderNo(order.getSysNo());
 						orderItems_.setSrcItemId(orderItems_.getId());
+						orderItems_.setPlannedDeliveryDate(order.getBusinesDate());
+						orderItems_.setTaxRate(new BigDecimal("0.00"));
+						orderItems_.setItemProp("配件");
 						orderItems_.setPid(null);
 						orderItems_.setId(null);
 						orderItems_.setBillType("CG");
@@ -5596,6 +5629,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 								orderItems_.setPriceCategoryNames(orderItems.getGoodTypeName());
 								orderItems_.setPriceCategory(orderItems.getGoodTypeName());
 								orderItems_.setItemId(goodsDesc.getId());
+								orderItems_.setUnit(goodsDesc.getUnit());
 							}
 						}
 
@@ -5604,18 +5638,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						} else {
 							orderItems_.setActualQuantity(orderItems_.getOrderQuantity());
 						}
-						if (ObjectUtils.isNotNull(orderItems_.getPurchasePrice())) {
-							orderItems_.setPrice(orderItems_.getPurchasePrice());
-							orderItems_.setAmount(orderItems_.getPurchasePrice().multiply(orderItems_.getActualQuantity()));
-						} else {
-							orderItems_.setPrice(orderItems_.getPrice());
-							orderItems_.setAmount(orderItems_.getPrice().multiply(orderItems_.getActualQuantity()));
+						if (ObjectUtils.isNotNull(priceBankList) && priceBankList.size()>0){
+							if (ObjectUtils.isNotNull(priceBankList.get(0).getPrice()) && !priceBankList.get(0).getPrice().equals(new BigDecimal("0.00"))){
+								orderItems_.setPrice(priceBankList.get(0).getPrice());
+								orderItems_.setAmount(orderItems_.getPurchaseQuantity().multiply(priceBankList.get(0).getPrice()));
+							}else{
+								orderItems_.setPrice(new BigDecimal("0.00"));
+								orderItems_.setAmount(new BigDecimal("0.00"));
+							}
+						}else{
+							orderItems_.setPrice(new BigDecimal("0.00"));
+							orderItems_.setAmount(new BigDecimal("0.00"));
 						}
 						orderItemsListAll.add(orderItems_);
 						orderListAll.add(order);
 					}
 				} else {
-					order = baseMapper.selectById(orderItems.getSrcPid());
+					order = baseMapper.selectById(items.getPid());
 					if (ObjectUtils.isNotNull(order)) {
 						OrderItems orderItems_ = new OrderItems();
 						BeanUtil.copyProperties(items, orderItems_);
@@ -5623,6 +5662,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						orderItems_.setSrcId(order.getId());
 						orderItems_.setOrgOrderNo(order.getSysNo());
 						orderItems_.setSrcItemId(orderItems_.getId());
+						orderItems_.setPlannedDeliveryDate(order.getBusinesDate());
+						orderItems_.setTaxRate(new BigDecimal("0.00"));
+						orderItems_.setItemProp("配件");
 						orderItems_.setPid(null);
 						orderItems_.setId(null);
 						orderItems_.setBillType("CG");
@@ -5640,6 +5682,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							if (ObjectUtils.isNotNull(goodsDesc)) {
 								orderItems_.setCname(goodsDesc.getCname());
 								orderItems_.setCode(goodsDesc.getCode());
+								orderItems_.setUnit(goodsDesc.getUnit());
 							}
 						}
 
@@ -5648,12 +5691,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						} else {
 							orderItems_.setActualQuantity(orderItems_.getOrderQuantity());
 						}
-						if (ObjectUtils.isNotNull(orderItems_.getPurchasePrice())) {
-							orderItems_.setPrice(orderItems_.getPurchasePrice());
-							orderItems_.setAmount(orderItems_.getPurchasePrice().multiply(orderItems_.getActualQuantity()));
-						} else {
-							orderItems_.setPrice(orderItems_.getPrice());
-							orderItems_.setAmount(orderItems_.getPrice().multiply(orderItems_.getActualQuantity()));
+						if (ObjectUtils.isNotNull(priceBankList) && priceBankList.size()>0){
+							if (ObjectUtils.isNotNull(priceBankList.get(0).getPrice()) && !priceBankList.get(0).getPrice().equals(new BigDecimal("0.00"))){
+								orderItems_.setPrice(priceBankList.get(0).getPrice());
+								orderItems_.setAmount(orderItems_.getPurchaseQuantity().multiply(priceBankList.get(0).getPrice()));
+							}else{
+								orderItems_.setPrice(new BigDecimal("0.00"));
+								orderItems_.setAmount(new BigDecimal("0.00"));
+							}
+						}else{
+							orderItems_.setPrice(new BigDecimal("0.00"));
+							orderItems_.setAmount(new BigDecimal("0.00"));
 						}
 						orderItemsListAll.add(orderItems_);
 						orderListAll.add(order);

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsStatisticsController.java

@@ -9,6 +9,7 @@ import lombok.AllArgsConstructor;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+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;
@@ -63,6 +64,7 @@ public class CorpsStatisticsController {
 			} else {
 				lambdaQueryWrapper.eq(PjOrder::getBsType, "CG");
 			}
+			lambdaQueryWrapper.eq(PjOrder::getSalesCompanyId, AuthUtil.getTenantId());
 			if (ObjectUtils.isNotNull(corpsDescDto1.getCreditLimit()) && ObjectUtils.isNotNull(corpsDescDto1.getUseCreditLimit())) {
 				corpsDescDto1.setCreditLimitBalance(corpsDescDto1.getCreditLimit().subtract(corpsDescDto1.getUseCreditLimit()));
 			}
@@ -113,6 +115,7 @@ public class CorpsStatisticsController {
 			} else {
 				lambdaQueryWrapper.eq(PjOrder::getBsType, "CG");
 			}
+			lambdaQueryWrapper.eq(PjOrder::getSalesCompanyId, AuthUtil.getTenantId());
 			List<PjOrder> orderList = orderService.list(lambdaQueryWrapper);
 			if (ObjectUtils.isNotNull(orderList)) {
 				BigDecimal sumAmount = orderList.stream().map(PjOrder::getTotalMoney).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);

+ 6 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.xml

@@ -148,6 +148,9 @@
         <if test="CorpsDesc.status!=null">
             and status = #{CorpsDesc.status}
         </if>
+        <if test="CorpsDesc.salesCompanyId!=null">
+            and sales_company_id = #{CorpsDesc.salesCompanyId}
+        </if>
         <if test="CorpsDesc.enableOrNot != null">
             and enable_or_not = #{CorpsDesc.enableOrNot}
         </if>
@@ -196,6 +199,9 @@
         <if test="CorpsDesc.status!=null">
             and status = #{CorpsDesc.status}
         </if>
+        <if test="CorpsDesc.salesCompanyId!=null">
+            and sales_company_id = #{CorpsDesc.salesCompanyId}
+        </if>
         <if test="CorpsDesc.enableOrNot != null">
             and enable_or_not = #{CorpsDesc.enableOrNot}
         </if>

+ 19 - 21
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java

@@ -16,7 +16,6 @@
  */
 package org.springblade.salesPart.corps.service.impl;
 
-import com.alibaba.csp.sentinel.util.StringUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -26,15 +25,11 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
-import org.springblade.client.entity.CorpsAddr;
-import org.springblade.client.entity.CorpsAttn;
 import org.springblade.client.entity.CorpsDesc;
-import org.springblade.client.entity.CorpsType;
 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.ObjectUtil;
-import org.springblade.purchase.sales.entity.Biding;
 import org.springblade.salesPart.corps.mapper.CorpsDescMapper;
 import org.springblade.salesPart.corps.mapper.CorpsTypeDescMapper;
 import org.springblade.salesPart.corps.mapper.CorpsTypeMapper;
@@ -59,7 +54,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 /**
- *  配件批发客户服务实现类
+ * 配件批发客户服务实现类
  *
  * @author BladeX
  * @since 2023-04-21
@@ -82,6 +77,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 
 	/**
 	 * 获取客户详情
+	 *
 	 * @param corpsDesc
 	 * @return
 	 */
@@ -230,12 +226,12 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 					corpsDesc.setPriceSystem(e.getPriceSystem());
 					corpsDesc.setAccountPeriod(e.getAccountPeriod());
 					//获得业务员
-					if (StringUtils.isNotBlank(e.getSalesmanName())){
+					if (StringUtils.isNotBlank(e.getSalesmanName())) {
 						List<User> user = userClient.userInfoByName(e.getSalesmanName(), AuthUtil.getTenantId());
 						if (ObjectUtils.isNotNull(user)) {
 							corpsDesc.setSalesmanId(user.get(0).getId());
 							corpsDesc.setSalesmanName(user.get(0).getRealName());
-						}else {
+						} else {
 							throw new SecurityException("请输入正确的业务员");
 						}
 					}
@@ -252,12 +248,12 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 					corpsDesc.setUseCreditLimit(e.getUseCreditLimit());
 
 					//获得仓库
-					if (StringUtils.isNotBlank(e.getDeliveryWarehouseName())){
+					if (StringUtils.isNotBlank(e.getDeliveryWarehouseName())) {
 						PjStorageDesc storageDesc = storageDescService.getMessageByName(e.getDeliveryWarehouseName());
-						if (ObjectUtil.isNotEmpty(storageDesc)){
+						if (ObjectUtil.isNotEmpty(storageDesc)) {
 							corpsDesc.setDeliveryWarehouseId(storageDesc.getId());
 							corpsDesc.setDeliveryWarehouseName(storageDesc.getCname());
-						}else {
+						} else {
 							throw new SecurityException("请输入正确的仓库");
 						}
 					}
@@ -329,7 +325,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 			data.forEach(e -> {
 				String type = e.getType();
 				PjCorpsType corpsType = corpsTypeMapper.selectCorpsTypeCname(type, AuthUtil.getTenantId());
-				if (corpsType != null){
+				if (corpsType != null) {
 					countList.add(true);
 					PjCorpsDesc corpsDesc = new PjCorpsDesc();
 					corpsDesc.setCname(e.getCname());
@@ -337,12 +333,12 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 					corpsDesc.setTenantId(AuthUtil.getTenantId());
 
 					//获得业务员
-					if (StringUtils.isNotBlank(e.getSalesmanName())){
+					if (StringUtils.isNotBlank(e.getSalesmanName())) {
 						List<User> user = userClient.userInfoByName(e.getSalesmanName(), AuthUtil.getTenantId());
 						if (ObjectUtils.isNotNull(user)) {
 							corpsDesc.setSalesmanId(user.get(0).getId());
 							corpsDesc.setSalesmanName(user.get(0).getRealName());
-						}else {
+						} else {
 							throw new SecurityException("请输入正确的业务员");
 						}
 					}
@@ -385,7 +381,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 					}
 
 					//保存联系人
-					if (ObjectUtil.isEmpty(e.getAttnCname())){
+					if (ObjectUtil.isEmpty(e.getAttnCname())) {
 						LambdaQueryWrapper<PjCorpsAttn> corpsAttnLambdaQueryWrapper = new LambdaQueryWrapper<>();
 						corpsAttnLambdaQueryWrapper.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
 							.eq(PjCorpsAttn::getCname, e.getAttnCname())
@@ -410,16 +406,16 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 					}
 
 					//保存地址
-					if (ObjectUtil.isEmpty(e.getDetailedAddress())){
+					if (ObjectUtil.isEmpty(e.getDetailedAddress())) {
 
-						if (ObjectUtil.isNotEmpty(e.getDefaultAddres()) && "是".equals(e.getDefaultAddres())){
+						if (ObjectUtil.isNotEmpty(e.getDefaultAddres()) && "是".equals(e.getDefaultAddres())) {
 							LambdaQueryWrapper<PjCorpsAddr> corpsAttnLambdaQueryWrapper = new LambdaQueryWrapper<>();
 							corpsAttnLambdaQueryWrapper.eq(PjCorpsAddr::getTenantId, AuthUtil.getTenantId())
 								.eq(PjCorpsAddr::getDefaultAddres, "1")
 								.eq(PjCorpsAddr::getPid, corpsDesc.getId())
 								.eq(PjCorpsAddr::getIsDeleted, 0);
 							PjCorpsAddr corpsAddr = corpsAddrService.getOne(corpsAttnLambdaQueryWrapper);
-							if (ObjectUtil.isEmpty(corpsAddr)){
+							if (ObjectUtil.isEmpty(corpsAddr)) {
 								corpsAddr.setPid(corpsDesc.getId());
 								corpsAddr.setBelongtoarea(e.getBelongtoarea());
 								corpsAddr.setDetailedAddress(e.getDetailedAddress());
@@ -428,10 +424,10 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 								corpsAddr.setCreateTime(new Date());
 								corpsAddr.setCreateUser(AuthUtil.getUserId());
 								corpsAddrService.save(corpsAddr);
-							}else {
+							} else {
 								throw new RuntimeException(corpsDesc.getCname() + "已存在默认地址");
 							}
-						}else if (ObjectUtil.isNotEmpty(e.getDefaultAddres()) && "否".equals(e.getDefaultAddres())){
+						} else if (ObjectUtil.isNotEmpty(e.getDefaultAddres()) && "否".equals(e.getDefaultAddres())) {
 							PjCorpsAddr corpsAddr = new PjCorpsAddr();
 							corpsAddr.setPid(corpsDesc.getId());
 							corpsAddr.setBelongtoarea(e.getBelongtoarea());
@@ -570,6 +566,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 		}
 		corpsDescDto.setTenantId(AuthUtil.getTenantId());
 		corpsDescDto.setId(corpsDescDto.getId());
+		corpsDescDto.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
 		return page.setRecords(baseMapper.selectPartsCorpsDescPage(page, corpsDescDto));
 	}
 
@@ -599,6 +596,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 		}
 		corpsDescDto.setTenantId(AuthUtil.getTenantId());
 		corpsDescDto.setId(corpsDescDto.getId());
+		corpsDescDto.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
 		return baseMapper.selectPartsCorpsStatistics(corpsDescDto);
 	}
 
@@ -633,6 +631,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 
 	/**
 	 * 小程序新增或修改 客户详情
+	 *
 	 * @param corpsDesc
 	 * @return
 	 */
@@ -788,7 +787,6 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 	}
 
 
-
 	/**
 	 * 保存客户联系人信息
 	 *

+ 57 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/files/controller/FilesController.java

@@ -0,0 +1,57 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.salesPart.files.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.salesPart.files.service.PjpfFilesService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 配件附件表 控制器
+ *
+ * @author BladeX
+ * @since 2023-04-21
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/files")
+@Api(value = "配件附件表", tags = "配件附件表接口")
+public class FilesController extends BladeController {
+
+	private final PjpfFilesService filesService;
+
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		return R.status(filesService.removeByIds(Func.toLongList(ids)));
+	}
+
+}

+ 16 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/files/mapper/PjpfFilesMapper.java

@@ -0,0 +1,16 @@
+package org.springblade.salesPart.files.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.salesPart.entity.PjpfFiles;
+
+/**
+* @author 10599
+* @description 针对表【pjpf_files(轮胎商城业务附件表)】的数据库操作Mapper
+* @createDate 2023-07-17 14:34:49
+* @Entity org.springblade.salesPart.files.domain.PjpfFiles
+*/
+public interface PjpfFilesMapper extends BaseMapper<PjpfFiles> {
+
+
+}

+ 34 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/files/mapper/PjpfFilesMapper.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.salesPart.files.mapper.PjpfFilesMapper">
+
+    <resultMap id="BaseResultMap" type="org.springblade.salesPart.entity.PjpfFiles">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="pid" column="pid" jdbcType="BIGINT"/>
+            <result property="sort" column="sort" jdbcType="INTEGER"/>
+            <result property="fileName" column="file_name" jdbcType="VARCHAR"/>
+            <result property="url" column="url" jdbcType="VARCHAR"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="version" column="version" jdbcType="VARCHAR"/>
+            <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/>
+            <result property="createUser" column="create_user" jdbcType="BIGINT"/>
+            <result property="createDept" column="create_dept" jdbcType="BIGINT"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateUser" column="update_user" jdbcType="BIGINT"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="status" column="status" jdbcType="INTEGER"/>
+            <result property="isDeleted" column="is_deleted" jdbcType="INTEGER"/>
+            <result property="type" column="type" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,pid,sort,
+        file_name,url,remarks,
+        version,tenant_id,create_user,
+        create_dept,create_time,update_user,
+        update_time,status,is_deleted,
+        type
+    </sql>
+</mapper>

+ 14 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/files/service/PjpfFilesService.java

@@ -0,0 +1,14 @@
+package org.springblade.salesPart.files.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.salesPart.entity.PjpfFiles;
+
+/**
+* @author 10599
+* @description 针对表【pjpf_files(轮胎商城业务附件表)】的数据库操作Service
+* @createDate 2023-07-17 14:34:49
+*/
+public interface PjpfFilesService extends IService<PjpfFiles> {
+
+}

+ 18 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/files/service/impl/PjpfFilesServiceImpl.java

@@ -0,0 +1,18 @@
+package org.springblade.salesPart.files.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.salesPart.entity.PjpfFiles;
+import org.springblade.salesPart.files.service.PjpfFilesService;
+import org.springblade.salesPart.files.mapper.PjpfFilesMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 10599
+* @description 针对表【pjpf_files(轮胎商城业务附件表)】的数据库操作Service实现
+* @createDate 2023-07-17 14:34:49
+*/
+@Service
+public class PjpfFilesServiceImpl extends ServiceImpl<PjpfFilesMapper, PjpfFiles>
+implements PjpfFilesService{
+
+}

+ 2 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java

@@ -105,7 +105,7 @@ public class GoodsDescController extends BladeController {
 
 		lambdaQueryWrapper.eq(PjGoodsDesc::getTenantId, AuthUtil.getTenantId())
 			.eq(PjGoodsDesc::getIsDeleted, 0)
-			.eq(PjGoodsDesc::getSalesCompanyId, AuthUtil.getDeptId())//公司
+//			.eq(PjGoodsDesc::getSalesCompanyId, AuthUtil.getDeptId())//公司
 			.like(StringUtils.isNotBlank(goods.getSpecificationAndModel()), PjGoodsDesc::getSpecificationAndModel, goods.getSpecificationAndModel())//规格型号
 			.like(StringUtils.isNotBlank(goods.getBrandItem()), PjGoodsDesc::getBrandItem, goods.getBrandItem())//花纹
 			.eq(ObjectUtils.isNotEmpty(goods.getBrandId()), PjGoodsDesc::getBrandId, goods.getBrandId())//品牌
@@ -262,7 +262,7 @@ public class GoodsDescController extends BladeController {
 			.like(StringUtils.isNotBlank(goods.getBrandItem()), PjGoodsDesc::getBrandItem, goods.getBrandItem())//花纹
 			.eq(ObjectUtils.isNotEmpty(goods.getBrandId()), PjGoodsDesc::getBrandId, goods.getBrandId())//品牌
 			.like(ObjectUtils.isNotEmpty(goods.getBrandName()), PjGoodsDesc::getBrandName, goods.getBrandName())
-			.eq(ObjectUtils.isNotEmpty(goods.getSalesCompanyId()), PjGoodsDesc::getSalesCompanyId, goods.getSalesCompanyId())//所属公司
+//			.eq(ObjectUtils.isNotEmpty(goods.getSalesCompanyId()), PjGoodsDesc::getSalesCompanyId, goods.getSalesCompanyId())//所属公司
 			.eq(ObjectUtils.isNotEmpty(goods.getWhether()), PjGoodsDesc::getWhether, goods.getWhether())//是否管理到批次号
 			.eq(ObjectUtils.isNotNull(goods.getEnableOrNot()), PjGoodsDesc::getEnableOrNot, goods.getEnableOrNot())//状态
 			.eq(ObjectUtils.isNotEmpty(goods.getExplosionProof()), PjGoodsDesc::getExplosionProof, goods.getExplosionProof());//是否防爆

+ 11 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/controller/SettlementController.java

@@ -28,12 +28,16 @@ import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.salesPart.entity.PjSettlement;
 import org.springblade.salesPart.entity.PjSettlementItems;
+import org.springblade.salesPart.entity.PjpfFiles;
 import org.springblade.salesPart.excel.PjSettlementExcel;
+import org.springblade.salesPart.files.mapper.PjpfFilesMapper;
+import org.springblade.salesPart.files.service.PjpfFilesService;
 import org.springblade.salesPart.settlement.service.ISettlementItemsService;
 import org.springblade.salesPart.settlement.service.ISettlementService;
 import org.springblade.salesPart.vo.SettlementVO;
@@ -58,6 +62,7 @@ import java.util.List;
 public class SettlementController extends BladeController {
 
 	private final ISettlementService settlementService;
+	private final PjpfFilesService pjpfFilesService;
 
 	private final ISettlementItemsService settlementItemsService;
 
@@ -73,6 +78,12 @@ public class SettlementController extends BladeController {
 		PjSettlement detail = settlementService.getOne(Condition.getQueryWrapper(settlement));
 		detail.setSettlementItemsList(settlementItemsService.list(new LambdaQueryWrapper<PjSettlementItems>()
 			.eq(PjSettlementItems::getPid, detail.getId())));
+		//附件
+		LambdaQueryWrapper<PjpfFiles> filesLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		filesLambdaQueryWrapper.eq(PjpfFiles::getTenantId, AuthUtil.getTenantId())
+			.eq(PjpfFiles::getIsDeleted, 0)
+			.eq(PjpfFiles::getPid, detail.getId());
+		detail.setFilesList(pjpfFilesService.list(filesLambdaQueryWrapper));
 		return R.data(detail);
 	}
 

+ 24 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/settlement/service/impl/SettlementServiceImpl.java

@@ -18,6 +18,7 @@ package org.springblade.salesPart.settlement.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
@@ -28,6 +29,7 @@ import org.springblade.salesPart.accountManagement.service.IAccountManagementSer
 import org.springblade.salesPart.corps.service.ICorpsDescService;
 import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.enums.OrderTypeEnum;
+import org.springblade.salesPart.files.service.PjpfFilesService;
 import org.springblade.salesPart.order.service.IOrderService;
 import org.springblade.salesPart.settlement.mapper.SettlementMapper;
 import org.springblade.salesPart.settlement.service.ISettlementItemsService;
@@ -60,6 +62,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 
 	private final ICorpsDescService corpsDescService;
 
+	private final PjpfFilesService filesService;
+
 	/**
 	 * 生成系统编号
 	 */
@@ -111,6 +115,26 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, PjSettl
 		}
 		settlement.setContractNumber(stringBuilder.toString());
 		this.saveOrUpdate(settlement);
+		// 保存附件
+		if (CollectionUtils.isNotEmpty(settlement.getFilesList())) {
+			List<PjpfFiles> filesList = new ArrayList<>();
+			settlement.getFilesList().forEach(item -> {
+				if (item.getId() == null) {
+					item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setPid(settlement.getId());
+					item.setTenantId(AuthUtil.getTenantId());
+					item.setType(settlement.getBillType());
+				} else {
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setPid(settlement.getId());
+				}
+				filesList.add(item);
+			});
+			filesService.saveOrUpdateBatch(filesList);
+		}
 		return R.data(settlement);
 	}
 

+ 31 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/ship/service/impl/ShipServiceImpl.java

@@ -37,6 +37,8 @@ import org.springblade.salesPart.entity.*;
 import org.springblade.salesPart.enums.OrderTypeEnum;
 import org.springblade.salesPart.excel.PjShipStockDetails;
 import org.springblade.salesPart.excel.ShipItemImportExcel;
+import org.springblade.salesPart.files.mapper.PjpfFilesMapper;
+import org.springblade.salesPart.files.service.PjpfFilesService;
 import org.springblade.salesPart.goods.mapper.GoodsDescMapper;
 import org.springblade.salesPart.goods.mapper.GoodsTypeMapper;
 import org.springblade.salesPart.history.mapper.HistoryMapper;
@@ -90,6 +92,7 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 	private final GoodsTypeMapper goodsTypeMapper;
 	private final IProductLaunchService productLaunchService;
 	private final HistoryMapper historyMapper;
+	private final PjpfFilesService pjpfFilesService;
 	private final IUserClient userClient;
 	private final StorageDescMapper storageDescMapper;
 	//消息
@@ -126,6 +129,13 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 			.eq(PjHistory::getPid, detail.getId());
 		detail.setHistoryList(historyMapper.selectList(historyLambdaQueryWrapper));
 
+		//附件
+		LambdaQueryWrapper<PjpfFiles> filesLambdaQueryWrapper = new LambdaQueryWrapper<>();
+		filesLambdaQueryWrapper.eq(PjpfFiles::getTenantId, AuthUtil.getTenantId())
+			.eq(PjpfFiles::getIsDeleted, 0)
+			.eq(PjpfFiles::getPid, detail.getId());
+		detail.setFilesList(pjpfFilesService.list(filesLambdaQueryWrapper));
+
 		return detail;
 	}
 
@@ -213,6 +223,27 @@ public class ShipServiceImpl extends ServiceImpl<ShipMapper, PjShip> implements
 		}
 		baseMapper.updateById(ship);
 
+		// 保存附件
+		if (CollectionUtils.isNotEmpty(ship.getFilesList())) {
+			List<PjpfFiles> filesList = new ArrayList<>();
+			ship.getFilesList().forEach(item -> {
+				if (item.getId() == null) {
+					item.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setPid(ship.getId());
+					item.setTenantId(AuthUtil.getTenantId());
+					item.setType(ship.getBsType());
+				} else {
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setPid(ship.getId());
+				}
+				filesList.add(item);
+			});
+			pjpfFilesService.saveOrUpdateBatch(filesList);
+		}
+
 		return R.data(ship);
 	}
 

+ 76 - 71
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -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;
+		}
 	}
 
 /*	//测试获取套账