From 21dfddd6e09d32a50a636fff62a3d8a2ed362d5a Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期四, 20 八月 2026 16:29:49 +0800
Subject: [PATCH] feat:合同标的物新增导入 银行流水强制确认 简易合同新增 发票重开 合同标的物导入
---
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java | 14
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/BankStatementServiceImpl.java | 340 ++++++++++++++++++++
platformx-business-finance-biz/src/main/resources/mapper/ContractMapper.xml | 6
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractSubjectMatterService.java | 6
platformx-business-finance-biz/src/main/resources/mapper/PaymentSlipMapper.xml | 6
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java | 12
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractInvoiceController.java | 9
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractInvoice.java | 8
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractSubjectMatterServiceImpl.java | 55 +++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractSubjectMatterController.java | 15
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java | 60 +++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java | 4
platformx-business-finance-biz/src/main/resources/mapper/HistoryOverdueMapper.xml | 6
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java | 12
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java | 6
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractPaymentSchedule.java | 6
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java | 7
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractInvoiceServiceImpl.java | 154 +++++++-
platformx-boot/src/main/resources/application-dev.yml | 14
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BankStatementController.java | 56 +++
platformx-business-finance-biz/src/main/resources/mapper/ContractInvoiceMapper.xml | 6
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BankStatement.java | 4
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/SubjectMatterExcelVO.java | 37 ++
platformx-business-finance-biz/src/main/resources/mapper/CurrentOverdueMapper.xml | 6
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractService.java | 2
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/StatementContractVo.java | 30 +
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BankStatementService.java | 10
platformx-business-finance-biz/src/main/resources/mapper/ContractOutBoundMapper.xml | 12
platformx-business-finance-biz/src/main/resources/template/jxc/product.xlsx | 0
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractInvoiceService.java | 2
30 files changed, 818 insertions(+), 87 deletions(-)
diff --git a/platformx-boot/src/main/resources/application-dev.yml b/platformx-boot/src/main/resources/application-dev.yml
index 8418c31..98ca39e 100644
--- a/platformx-boot/src/main/resources/application-dev.yml
+++ b/platformx-boot/src/main/resources/application-dev.yml
@@ -7,7 +7,7 @@
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
- url: jdbc:mysql://192.168.0.146:3306/platformxx_business_finance_biz?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
+ url: jdbc:mysql://192.168.0.146:3306/platformxx_business_finance_biz1?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
@@ -53,10 +53,10 @@
#bip 閰嶇疆
bip:
flag: false
- url: https://bip01.res.jzeg.cn
- codes: 111111111111111111111111,222222222222222222
- appKey: 800b2805c5584f0abb8705acbe487dc5
- appSecret: 59ba72c62a6a27203d7e517787a738be89ba55cb
+ url: https://bip-pre.res.jzeg.cn/iuap-api-gateway
+ codes: 10860,10802,10801,10861,10668,1086004,1086005
+ appKey: 95578dbdeabc41049b75e8af3dd66d19
+ appSecret: f3a098d7848f87042b39d2cc1645b6c0ffa065cd
BWInvoice:
flag: false
@@ -64,7 +64,9 @@
# 5瀹跺崟浣峣d
dept:
- smj: 2056555602756063234
+ smj: 2089995177814495234
+ smjsc: 2089996921978040321
+ smjzt: 2089997578009128962
sgb: 2056556196124250113
jxc: 2056556317461270529
tfgs: 2056556421857497090
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java
index 0870e9f..e991047 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java
@@ -248,6 +248,12 @@
@Schema(description = "浠樻鏂瑰紡")
private String paymentMethod;
+ @Schema(description = "绠�鏄撳悎鍚岄檮浠禪RL")
+ private String attachmentSimpleUrl;
+
+ @Schema(description = "绠�鏄撳悎鍚岄檮浠跺悕绉�")
+ private String attachmentSimpleName;
+
private List<ContractPaymentScheduleAddDTO> contractPaymentSchedule;
private List<ContractSubjectMatterAddDTO> contractSubjectMatter;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BankStatement.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BankStatement.java
index 3efb129..cc20152 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BankStatement.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BankStatement.java
@@ -53,7 +53,7 @@
private Date tranDate;
@Schema(description = "浜ゆ槗閲戦")
- @Column(columnDefinition = "decimal(10,2) comment '浜ゆ槗閲戦'")
+ @Column(columnDefinition = "decimal(14,2) comment '浜ゆ槗閲戦'")
private BigDecimal tranAmount;
@Schema(description = "鏁版嵁ID")
@@ -73,7 +73,7 @@
private Long contractId;
@Schema(description = "鍚堝悓纭閲戦")
- @Column(columnDefinition = "decimal(10,2) comment '鍚堝悓纭閲戦'")
+ @Column(columnDefinition = "decimal(14,2) default 0.0 comment '鍚堝悓纭閲戦'")
private BigDecimal confirmAmount;
@Schema(description = "浜ゆ槗璇存槑")
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
index d6c349c..5a9978c 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java
@@ -55,7 +55,7 @@
private String partyB;
@Schema(description = "鍚堝悓閲戦")
- @Column(columnDefinition = "decimal(10,2) comment '鍚堝悓閲戦'")
+ @Column(columnDefinition = "decimal(20,2) comment '鍚堝悓閲戦'")
private BigDecimal amount;
@Schema(description = "甯佺锛圕NY/USD绛夛級")
@@ -103,6 +103,14 @@
@Schema(description = "鍒版湡鏃ユ湡")
@Column(columnDefinition = "date comment '鍒版湡鏃ユ湡'")
private Date expirationDate;
+
+ @Schema(description = "绠�鏄撳悎鍚岄檮浠禪RL")
+ @Column(columnDefinition = "VARCHAR(500) comment '绠�鏄撳悎鍚岄檮浠禪RL'")
+ private String attachmentSimpleUrl;
+
+ @Schema(description = "绠�鏄撳悎鍚岄檮浠跺悕绉�")
+ @Column(columnDefinition = "VARCHAR(100) comment '绠�鏄撳悎鍚岄檮浠跺悕绉�'")
+ private String attachmentSimpleName;
@Schema(description = "鍚堝悓闄勪欢URL")
@Column(columnDefinition = "VARCHAR(500) comment '鍚堝悓闄勪欢URL'")
@@ -152,7 +160,7 @@
private String billingStatus;
@Schema(description = "宸插紑绁ㄩ噾棰�")
- @Column(columnDefinition = "decimal(10,2) comment '宸插紑绁ㄩ噾棰�'")
+ @Column(columnDefinition = "decimal(20,2) comment '宸插紑绁ㄩ噾棰�'")
private BigDecimal billingAmout;
@Schema(description = "涓嬩竴闃舵")
@@ -168,7 +176,7 @@
private String salesModel;
@Schema(description = "宸蹭粯娆鹃噾棰�")
- @Column(columnDefinition = "decimal(10,2) comment '宸蹭粯娆鹃噾棰�'")
+ @Column(columnDefinition = "decimal(20,2) comment '宸蹭粯娆鹃噾棰�'")
private BigDecimal paidAmount;
@Schema(description = "鍚堝悓鍒嗙被")
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractInvoice.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractInvoice.java
index d1c7a42..852792a 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractInvoice.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractInvoice.java
@@ -118,6 +118,14 @@
@Column(columnDefinition = "varchar(64) comment '鍏宠仈璇锋眰ID'")
private String bwRequestId;
+ @Schema(description = "鍏宠仈璇锋眰鍙傛暟")
+ @Column(columnDefinition = "text comment '鍏宠仈璇锋眰鍙傛暟'")
+ private String bwRequestParam;
+
+ @Schema(description = "璇锋眰缁撴灉")
+ @Column(columnDefinition = "char comment '璇锋眰缁撴灉 0/澶辫触 1/鎴愬姛'")
+ private String bwRequestResult;
+
@Schema(description = "棰勬敹寮�绁ㄦ爣璇�")
@Column(columnDefinition = "char default '0' comment '0/鍚� 1/鏄�'")
private String advanceFlag;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractPaymentSchedule.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractPaymentSchedule.java
index 9eb2f8d..c2c355c 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractPaymentSchedule.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractPaymentSchedule.java
@@ -33,7 +33,7 @@
// ==================== 鍏宠仈淇℃伅 ====================
@Schema(description = "鍏宠仈鍚堝悓ID")
- @Column(columnDefinition = "bigint not null comment '鍏宠仈鍚堝悓ID'")
+ @Column(columnDefinition = "bigint comment '鍏宠仈鍚堝悓ID'")
private Long contractId;
@Schema(description = "鍚堝悓鍚嶇О")
@@ -77,11 +77,11 @@
private BigDecimal paymentRatio;
@Schema(description = "璁″垝鏀舵閲戦锛堟牴鎹悎鍚屾�婚噾棰�*姣斾緥鑷姩璁$畻锛�")
- @Column(columnDefinition = "decimal(10,2) comment '璁″垝鏀舵閲戦'")
+ @Column(columnDefinition = "decimal(14,2) comment '璁″垝鏀舵閲戦'")
private BigDecimal plannedAmount;
@Schema(description = "瀹為檯鏀舵閲戦")
- @Column(columnDefinition = "decimal(10,2) comment '瀹為檯鏀舵閲戦'")
+ @Column(columnDefinition = "decimal(14,2) comment '瀹為檯鏀舵閲戦'")
private BigDecimal actualAmount;
// ==================== 鏃跺簭鎺у埗 ====================
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java
index 091e25e..3761788 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java
@@ -3,7 +3,6 @@
import com.by4cloud.platformx.business.entity.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.persistence.Column;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@@ -241,6 +240,12 @@
private BigDecimal advancePayment;
+ @Schema(description = "绠�鏄撳悎鍚岄檮浠禪RL")
+ private String attachmentSimpleUrl;
+
+ @Schema(description = "绠�鏄撳悎鍚岄檮浠跺悕绉�")
+ private String attachmentSimpleName;
+
private List<ContractPaymentSchedule> contractPaymentSchedule;
private List<ContractSubjectMatter> contractSubjectMatter;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/StatementContractVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/StatementContractVo.java
new file mode 100644
index 0000000..4dd42ca
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/StatementContractVo.java
@@ -0,0 +1,30 @@
+package com.by4cloud.platformx.business.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.persistence.Column;
+import lombok.Data;
+
+import java.math.BigDecimal;
+@Data
+public class StatementContractVo {
+
+ private Long id;
+
+ @Schema(description = "閾惰娴佹按ID")
+ private Long statetId;
+
+ @Schema(description = "浜ゆ槗娴佹按")
+ private String bankSeqNo;
+
+ @Schema(description = "鍚堝悓ID")
+ private Long contractId;
+
+ @Schema(description = "鍚堝悓纭閲戦")
+ private BigDecimal confirmAmount;
+
+ private String contractNo;
+
+ private String partyA;
+
+ private BigDecimal amount;
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/SubjectMatterExcelVO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/SubjectMatterExcelVO.java
new file mode 100644
index 0000000..71a2d0b
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/SubjectMatterExcelVO.java
@@ -0,0 +1,37 @@
+package com.by4cloud.platformx.business.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.by4cloud.platformx.common.excel.annotation.ExcelLine;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SubjectMatterExcelVO {
+
+ /**
+ * 瀵煎叆鏃跺�欏洖鏄捐鍙�
+ */
+ @ExcelLine
+ @ExcelIgnore
+ private Long lineNum;
+
+ @ExcelProperty("鏍囩殑鐗╁悕绉�")
+ private String materialName;
+
+ @NotBlank(message = "erp缂栫爜涓嶈兘涓虹┖")
+ @ExcelProperty("erp缂栫爜")
+ private String materialCode;
+
+ @NotNull(message = "鍗曚环涓嶈兘涓虹┖")
+ @ExcelProperty("鍗曚环")
+ private BigDecimal unitPrice;
+
+ @NotNull(message = "鏁伴噺涓嶈兘涓虹┖")
+ @ExcelProperty("鏁伴噺")
+ private BigDecimal quantity;
+
+}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BankStatementController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BankStatementController.java
index ac7e2f1..afb7a11 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BankStatementController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/BankStatementController.java
@@ -120,4 +120,60 @@
public List<BankStatement> export(BankStatement bankStatement,Long[] ids) {
return bankStatementService.list(Wrappers.lambdaQuery(bankStatement).in(ArrayUtil.isNotEmpty(ids), BankStatement::getId, ids));
}
+
+ /**
+ * 閫氳繃id鏌ヨ閾惰娴佹按鍘嗗彶纭
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鏌ヨ閾惰娴佹按鍘嗗彶纭" , description = "閫氳繃id鏌ヨ閾惰娴佹按鍘嗗彶纭" )
+ @GetMapping("/history/{id}" )
+ public R getHistoryById(@PathVariable("id" ) Long id) {
+ return bankStatementService.getHistoryById(id);
+ }
+
+ /**
+ * 閫氳繃id鍒犻櫎閾惰娴佹按鍘嗗彶纭
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍒犻櫎閾惰娴佹按鍘嗗彶纭" , description = "閫氳繃id鍒犻櫎閾惰娴佹按鍘嗗彶纭" )
+ @GetMapping("/itemDel/{id}" )
+ public R delHistoryById(@PathVariable("id" ) Long id) {
+ return bankStatementService.delHistoryById(id);
+ }
+
+ /**
+ * 閫氳繃id閫�鍥為摱琛屾祦姘村巻鍙�
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id閫�鍥為摱琛屾祦姘村巻鍙�" , description = "閫氳繃id閫�鍥為摱琛屾祦姘村巻鍙�" )
+ @GetMapping("/backHis/{id}" )
+ public R backHis(@PathVariable("id" ) Long id) {
+ return bankStatementService.backHis(id);
+ }
+
+ /**
+ * 閫氳繃id閫�鍥為摱琛屾祦姘翠綑棰�
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id閫�鍥為摱琛屾祦姘翠綑棰�" , description = "閫氳繃id閫�鍥為摱琛屾祦姘翠綑棰�" )
+ @GetMapping("/backBal/{id}" )
+ public R backBal(@PathVariable("id" ) Long id) {
+ return bankStatementService.backBal(id);
+ }
+
+ /**
+ * 閫氳繃id閫�鍥為摱琛屾祦姘村叏閮�
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id閫�鍥為摱琛屾祦姘村叏閮�" , description = "閫氳繃id閫�鍥為摱琛屾祦姘村叏閮�" )
+ @GetMapping("/backAll/{id}" )
+ public R backAll(@PathVariable("id" ) Long id) {
+ return bankStatementService.backAll(id);
+ }
+
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java
index f858f61..0ade98b 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java
@@ -89,6 +89,18 @@
return contractService.add(addDTO);
}
+ /**
+ * 鏂板绠�鏄撳悎鍚�
+ * @param addDTO 鍚堝悓绠$悊
+ * @return R
+ */
+ @Operation(summary = "鏂板绠�鏄撳悎鍚�" , description = "鏂板绠�鏄撳悎鍚�" )
+ @SysLog("鏂板绠�鏄撳悎鍚�" )
+ @PostMapping("/addSimple")
+ public R addSimple(@RequestBody ContractAddDTO addDTO) {
+ return contractService.addSimple(addDTO);
+ }
+
/**
* 淇敼鍚堝悓绠$悊
* @param updateDTO 鍚堝悓绠$悊
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractInvoiceController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractInvoiceController.java
index 95c50e3..8f81a5b 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractInvoiceController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractInvoiceController.java
@@ -141,6 +141,15 @@
}
/**
+ * 閲嶆柊寮�绁�
+ * @return
+ */
+ @GetMapping("/refresh/{invoiceId}")
+ public R refresh(@PathVariable("invoiceId")Long invoiceId) {
+ return contractInvoiceService.refresh(invoiceId);
+ }
+
+ /**
* 绾㈢エ鏌ヨ
* @return
*/
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractSubjectMatterController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractSubjectMatterController.java
index 3652f12..2d49bad 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractSubjectMatterController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractSubjectMatterController.java
@@ -6,7 +6,10 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.by4cloud.platformx.business.entity.ContractSubjectMatter;
+import com.by4cloud.platformx.business.vo.ProductExcelVO;
+import com.by4cloud.platformx.business.vo.SubjectMatterExcelVO;
import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.excel.annotation.RequestExcel;
import com.by4cloud.platformx.common.log.annotation.SysLog;
import com.by4cloud.platformx.business.service.ContractSubjectMatterService;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -17,6 +20,7 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
+import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -136,4 +140,15 @@
public R selectSubjectMatter(@PathVariable("contractId" ) Long contractId) {
return contractSubjectMatterService.selectSubjectMatter(contractId);
}
+
+ /**
+ * 瀵煎叆鏍囩殑鐗�
+ * @param excelVOList
+ * @param bindingResult
+ * @return
+ */
+ @PostMapping("/importSubjectMatter")
+ public R importSubjectMatter(@RequestExcel List<SubjectMatterExcelVO> excelVOList, BindingResult bindingResult) {
+ return contractSubjectMatterService.importSubjectMatter(excelVOList, bindingResult);
+ }
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BankStatementService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BankStatementService.java
index 72f5663..32bf17c 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BankStatementService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/BankStatementService.java
@@ -8,4 +8,14 @@
public interface BankStatementService extends IIService<BankStatement> {
R edit(BankStatementUpdateDTO updateDTO);
+
+ R getHistoryById(Long id);
+
+ R delHistoryById(Long id);
+
+ R backBal(Long id);
+
+ R backAll(Long id);
+
+ R backHis(Long id);
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractInvoiceService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractInvoiceService.java
index 8aeb719..05563f5 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractInvoiceService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractInvoiceService.java
@@ -32,4 +32,6 @@
Page pageScope(Page page, ContractQueryDTO queryDTO);
R getContractHouseWater(Long contractId);
+
+ R refresh(Long invoiceId);
}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractService.java
index b3394f0..49fb6ab 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractService.java
@@ -64,4 +64,6 @@
void exportContractSMJGYPMMWord(Long id, HttpServletResponse response);
void exportContractJXCXSWord(Long id, HttpServletResponse response);
+
+ R addSimple(ContractAddDTO addDTO);
}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractSubjectMatterService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractSubjectMatterService.java
index 5c37dfb..72190b0 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractSubjectMatterService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractSubjectMatterService.java
@@ -2,11 +2,17 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.by4cloud.platformx.business.entity.ContractSubjectMatter;
+import com.by4cloud.platformx.business.vo.SubjectMatterExcelVO;
import com.by4cloud.platformx.common.core.util.R;
+import org.springframework.validation.BindingResult;
+
+import java.util.List;
public interface ContractSubjectMatterService extends IService<ContractSubjectMatter> {
R selectSubjectMatterProcess(Long id);
R selectSubjectMatter(Long contractId);
+
+ R importSubjectMatter(List<SubjectMatterExcelVO> excelVOList, BindingResult bindingResult);
}
\ No newline at end of file
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 0bc4219..ad2c82a 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,8 +6,10 @@
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;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.admin.api.entity.SysDept;
import com.by4cloud.platformx.admin.api.feign.RemoteDeptService;
@@ -20,8 +22,10 @@
import com.by4cloud.platformx.business.mapper.ContractMapper;
import com.by4cloud.platformx.business.service.BankStatementService;
import com.by4cloud.platformx.business.service.PaymentConfirmService;
+import com.by4cloud.platformx.business.vo.StatementContractVo;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.security.util.SecurityUtils;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@@ -30,6 +34,7 @@
import java.math.BigDecimal;
import java.util.List;
+import java.util.stream.Collectors;
/**
* 閾惰娴佹按
@@ -52,8 +57,8 @@
@Value("${bip.url}")
private String url;
- @Value("${BWInvoice.flag}")
- private Boolean bwFlag;
+ @Value("${bip.flag}")
+ private Boolean bipFlag;
@Override
public R edit(BankStatementUpdateDTO updateDTO) {
@@ -66,6 +71,15 @@
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;
+ }
+ }
+
statement.setConfirmAmount(statement.getConfirmAmount().add(toPaidTotal));
baseMapper.updateById(statement);
@@ -88,16 +102,10 @@
paymentConfirmService.add(addDTO);
});
-
-
- //bip鎺ㄩ��
- if (bwFlag) {
- pushSaveCollection(statement, updateDTO.getContractCollectionList());
- }
return R.ok();
}
- private void pushSaveCollection(BankStatement statement, List<StatementContractDTO> contractDTOList) {
+ private R pushSaveCollection(BankStatement statement, List<StatementContractDTO> contractDTOList) {
String accessToken = "";
if (redisTemplate.hasKey("BIP_TOKEN")) {
accessToken = (String) redisTemplate.opsForValue().get("BIP_TOKEN");
@@ -106,27 +114,33 @@
}
if (StrUtil.isEmpty(accessToken)) {
log.error("bip accessToken 鑾峰彇寮傚父");
- return;
+ return R.failed("bip accessToken 鑾峰彇寮傚父");
}
String finalAccessToken = accessToken;
BusinessCustomer customer = businessCustomerMapper.selectById(statement.getBusGuestId());
if (ObjUtil.isNull(customer)||StrUtil.isEmpty(customer.getBipCode())){
log.error("鏌ヨ瀹㈡埛淇℃伅寮傚父");
- return;
+ return R.failed("鏌ヨ瀹㈡埛淇℃伅寮傚父");
}
R<SysDept> r = remoteDeptService.getById(SecurityUtils.getUser().getCompId());
+ log.info("鏌ヨ鍗曚綅淇℃伅:{}",JSONObject.toJSONString(r.getData()));
if (!r.isOk()){
log.error("鏌ヨ鍗曚綅淇℃伅寮傚父");
- return;
+ return R.failed("鏌ヨ鍗曚綅淇℃伅寮傚父");
}
SysDept dept = r.getData();
JSONObject params = genRequestParam(statement,dept,customer,contractDTOList);
log.info("鏀舵鍗曢泦鎴� Request:{}", params.toJSONString());
- String result = HttpUtil.post(url + "/yonbip/EFI/receivable/save?access_token=" + finalAccessToken, params.toJSONString());
+ String result = HttpUtil.post(url + "/yonbip/EFI/collection/saveandsubmit?access_token=" + finalAccessToken, params.toJSONString());
log.info("鏀舵鍗曢泦鎴� Response:{}", result);
+ JSONObject resultJson = JSONObject.parseObject(result);
+ if (!resultJson.getString("code").equals("200")) {
+ return R.failed(resultJson.getString("message"));
+ }
+ return R.ok();
}
private JSONObject genRequestParam(BankStatement statement,SysDept dept,BusinessCustomer customer,List<StatementContractDTO> contractDTOList) {
@@ -139,8 +153,10 @@
data.put("customerCode",customer.getBipCode());//瀹㈡埛缂栫爜
data.put("financeOrgCode",dept.getBipCode());//寮�绁ㄧ粍缁囩紪鐮�
data.put("orgCode",dept.getBipCode());//涓氬姟缁勭粐缂栫爜
- data.put("bustypeCode","");//浜ゆ槗绫诲瀷缂栫爜 鏆備及榛樿ZGYSFP锛岄攢鍞粯璁JHYXGLXT
+ data.put("bustypeCode","ar_colsale");// TODO 浜ゆ槗绫诲瀷缂栫爜 鏆備及榛樿ZGYSFP锛岃澶囬粯璁BYXGLXT鏆傛椂涓嶈兘鐢�
data.put("oriCurrencyCode","CNY");//甯佺
+ data.put("srcBillType","38");
+ data.put("srcBillNo",statement.getBankSeqNo());
data.put("_status","Insert");
JSONArray bodyItem = new JSONArray();
for (StatementContractDTO statementContractDTO:contractDTOList) {
@@ -156,4 +172,300 @@
jsonObject.put("data",data);
return jsonObject;
}
+
+ @Override
+ public R getHistoryById(Long id) {
+ MPJLambdaWrapper<BankStatementItem> wrapper = new MPJLambdaWrapper<BankStatementItem>()
+ .selectAll(BankStatementItem.class)
+ .select(Contract::getContractNo)
+ .select(Contract::getPartyA)
+ .select(Contract::getAmount)
+ .leftJoin(Contract.class,Contract::getId,BankStatementItem::getContractId)
+ .eq(BankStatementItem::getCompId,SecurityUtils.getUser().getCompId())
+ .orderByDesc(BankStatementItem::getCreateTime);
+ return R.ok(bankStatementItemMapper.selectJoinList(StatementContractVo.class, wrapper));
+ }
+
+ @Override
+ public R delHistoryById(Long id) {
+
+ BankStatementItem statement = bankStatementItemMapper.selectById(id);
+ BankStatement bankStatement = baseMapper.selectById(statement.getStatetId());
+ Contract contract = contractMapper.selectById(statement.getContractId());
+ if (ObjUtil.isNull(contract)){
+ return R.failed("鍚堝悓淇℃伅寮傚父");
+ }
+ BusinessCustomer customer = businessCustomerMapper.selectById(contract.getPartyAId());
+ if (ObjUtil.isNull(customer)){
+ return R.failed("瀹㈡埛淇℃伅淇℃伅寮傚父");
+ }
+ R<SysDept> r = remoteDeptService.getById(contract.getPartyBId());
+ if (!r.isOk()){
+ return r;
+ }
+ //bip鎺ㄩ��
+ if (bipFlag) {
+ String accessToken = "";
+ if (redisTemplate.hasKey("BIP_TOKEN")) {
+ accessToken = (String) redisTemplate.opsForValue().get("BIP_TOKEN");
+ } else {
+ accessToken = paymentConfirmService.getAccessToken(accessToken);
+ }
+ if (StrUtil.isEmpty(accessToken)) {
+ log.error("bip accessToken 鑾峰彇寮傚父");
+ return R.failed("bip accessToken 鑾峰彇寮傚父");
+ }
+ String finalAccessToken = accessToken;
+ JSONObject request = genRefundParam(bankStatement,statement, contract, customer, r.getData());
+ log.info("鏀舵閫�娆惧崟-閫�娆惧崟涓�鍘嗗彶纭璇锋眰鍏ュ弬锛歿}", request.toJSONString());
+ String result = HttpUtil.post(url + "/yonbip/EFI/arRefund/saveandsubmit?access_token=" + finalAccessToken, request.toJSONString());
+ log.info("鏀舵閫�娆惧崟-閫�娆惧崟涓�鍘嗗彶纭璇锋眰鍥炲弬:{}", result);
+ JSONObject resultJson = JSONObject.parseObject(result);
+ if (!resultJson.getString("code").equals("200")) {
+ return R.failed(resultJson.getString("message"));
+ }
+ }
+ bankStatementItemMapper.deleteById(id);
+
+ bankStatement.setConfirmAmount(bankStatement.getConfirmAmount().subtract(statement.getConfirmAmount()));
+ baseMapper.updateById(bankStatement);
+ return R.ok();
+ }
+
+ private JSONObject genRefundParam(BankStatement bankStatement,BankStatementItem statement, Contract contract,BusinessCustomer customer, SysDept dept) {
+ JSONObject jsonObject = new JSONObject();
+ JSONObject data = new JSONObject();
+ data.put("billDate",DateUtil.now());
+ data.put("exchangeRate","1");//姹囩巼
+ data.put("exchangeRateDate",DateUtil.now());//姹囩巼鏃堕棿
+ data.put("objectType","1");
+ data.put("customerCode",customer.getBipCode());//瀹㈡埛缂栫爜
+ data.put("financeOrgCode",dept.getBipCode());//寮�绁ㄧ粍缁囩紪鐮�
+ data.put("orgCode",dept.getBipCode());//涓氬姟缁勭粐缂栫爜
+ data.put("bustypeCode","ar_refsale");//浜ゆ槗绫诲瀷缂栫爜 鏆備及榛樿ZGYSFP锛岄攢鍞粯璁JHYXGLXT
+ data.put("oriCurrencyCode","CNY");//甯佺
+ data.put("srcBillType","38");
+ data.put("srcBillNo",bankStatement.getBankSeqNo());
+ data.put("_status","Insert");
+ JSONArray bodyItem = new JSONArray();
+ JSONObject item = new JSONObject();
+ item.put("oriTaxIncludedAmount", statement.getConfirmAmount());
+ item.put("contractNo", contract.getContractNo());
+ item.put("quickTypeCode", "1");
+ item.put("_status", "Insert");
+ bodyItem.add(item);
+ data.put("bodyItem",bodyItem);
+ jsonObject.put("data",data);
+ return jsonObject;
+ }
+
+ @Override
+ public R backBal(Long id) {
+ BankStatement bankStatement = baseMapper.selectById(id);
+ BusinessCustomer customer = businessCustomerMapper.selectById(bankStatement.getBusGuestId());
+ if (ObjUtil.isNull(customer)||StrUtil.isEmpty(customer.getBipCode())){
+ log.error("鏌ヨ瀹㈡埛淇℃伅寮傚父");
+ return R.failed("鏌ヨ瀹㈡埛淇℃伅寮傚父");
+ }
+ R<SysDept> r = remoteDeptService.getById(SecurityUtils.getUser().getCompId());
+ if (!r.isOk()){
+ log.error("鏌ヨ鍗曚綅淇℃伅寮傚父");
+ return R.failed("鏌ヨ鍗曚綅淇℃伅寮傚父");
+ }
+ SysDept dept = r.getData();
+ List<BankStatementItem> items = bankStatementItemMapper.selectList(Wrappers.<BankStatementItem>lambdaQuery()
+ .eq(BankStatementItem::getStatetId,id));
+ if (bipFlag){
+ String accessToken = "";
+ if (redisTemplate.hasKey("BIP_TOKEN")) {
+ accessToken = (String) redisTemplate.opsForValue().get("BIP_TOKEN");
+ } else {
+ accessToken = paymentConfirmService.getAccessToken(accessToken);
+ }
+ if (StrUtil.isEmpty(accessToken)) {
+ log.error("bip accessToken 鑾峰彇寮傚父");
+ return R.failed("bip accessToken 鑾峰彇寮傚父");
+ }
+ String finalAccessToken = accessToken;
+ JSONObject request = genBackBalParam(bankStatement,customer,dept,items);
+ log.info("鏀舵閫�娆惧崟-閫�娆句綑棰濊姹傚叆鍙傦細{}", request.toJSONString());
+ String result = HttpUtil.post(url + "/yonbip/EFI/arRefund/saveandsubmit?access_token=" + finalAccessToken, request.toJSONString());
+ log.info("鏀舵閫�娆惧崟-閫�娆句綑棰濊姹傚洖鍙�:{}", result);
+ JSONObject resultJson = JSONObject.parseObject(result);
+ if (!resultJson.getString("code").equals("200")) {
+ return R.failed(resultJson.getString("message"));
+ }
+ }
+ bankStatement.setTranAmount(bankStatement.getConfirmAmount());
+ baseMapper.updateById(bankStatement);
+ return R.ok();
+ }
+
+ private JSONObject genBackBalParam(BankStatement bankStatement, BusinessCustomer customer, SysDept dept, List<BankStatementItem> items) {
+ JSONObject jsonObject = new JSONObject();
+ JSONObject data = new JSONObject();
+ data.put("billDate",DateUtil.now());
+ data.put("exchangeRate","1");//姹囩巼
+ data.put("exchangeRateDate",DateUtil.now());//姹囩巼鏃堕棿
+ data.put("objectType","1");
+ data.put("customerCode",customer.getBipCode());//瀹㈡埛缂栫爜
+ data.put("financeOrgCode",dept.getBipCode());//寮�绁ㄧ粍缁囩紪鐮�
+ data.put("orgCode",dept.getBipCode());//涓氬姟缁勭粐缂栫爜
+ data.put("bustypeCode","ar_refsale");//浜ゆ槗绫诲瀷缂栫爜 鏆備及榛樿ZGYSFP锛岄攢鍞粯璁JHYXGLXT
+ data.put("oriCurrencyCode","CNY");//甯佺
+ data.put("srcBillType","38");
+ data.put("srcBillNo",bankStatement.getBankSeqNo());
+ data.put("_status","Insert");
+ JSONArray bodyItem = new JSONArray();
+ JSONObject item = new JSONObject();
+ item.put("oriTaxIncludedAmount", bankStatement.getTranAmount().subtract(bankStatement.getConfirmAmount()));
+ item.put("quickTypeCode", "1");
+ item.put("_status", "Insert");
+ bodyItem.add(item);
+ data.put("bodyItem",bodyItem);
+ jsonObject.put("data",data);
+ return jsonObject;
+ }
+
+ @Override
+ public R backAll(Long id) {
+ BankStatement bankStatement = baseMapper.selectById(id);
+ BusinessCustomer customer = businessCustomerMapper.selectById(bankStatement.getBusGuestId());
+ if (ObjUtil.isNull(customer)||StrUtil.isEmpty(customer.getBipCode())){
+ log.error("鏌ヨ瀹㈡埛淇℃伅寮傚父");
+ return R.failed("鏌ヨ瀹㈡埛淇℃伅寮傚父");
+ }
+ R<SysDept> r = remoteDeptService.getById(SecurityUtils.getUser().getCompId());
+ if (!r.isOk()){
+ log.error("鏌ヨ鍗曚綅淇℃伅寮傚父");
+ return R.failed("鏌ヨ鍗曚綅淇℃伅寮傚父");
+ }
+ SysDept dept = r.getData();
+ List<BankStatementItem> items = bankStatementItemMapper.selectList(Wrappers.<BankStatementItem>lambdaQuery()
+ .eq(BankStatementItem::getStatetId,id));
+ if (bipFlag){
+ String accessToken = "";
+ if (redisTemplate.hasKey("BIP_TOKEN")) {
+ accessToken = (String) redisTemplate.opsForValue().get("BIP_TOKEN");
+ } else {
+ accessToken = paymentConfirmService.getAccessToken(accessToken);
+ }
+ if (StrUtil.isEmpty(accessToken)) {
+ log.error("bip accessToken 鑾峰彇寮傚父");
+ return R.failed("bip accessToken 鑾峰彇寮傚父");
+ }
+ String finalAccessToken = accessToken;
+ JSONObject request = genBackAllParam(bankStatement,customer,dept,items);
+ log.info("鏀舵閫�娆惧崟-閫�娆炬墍鏈夎姹傚叆鍙傦細{}", request.toJSONString());
+ String result = HttpUtil.post(url + "/yonbip/EFI/arRefund/saveandsubmit?access_token=" + finalAccessToken, request.toJSONString());
+ log.info("鏀舵閫�娆惧崟-閫�娆炬墍鏈夎姹傚洖鍙�:{}", result);
+ JSONObject resultJson = JSONObject.parseObject(result);
+ if (!resultJson.getString("code").equals("200")) {
+ return R.failed(resultJson.getString("message"));
+ }
+ }
+ bankStatement.setConfirmAmount(new BigDecimal("0"));
+ baseMapper.updateById(bankStatement);
+ return R.ok();
+ }
+
+ private JSONObject genBackAllParam(BankStatement bankStatement, BusinessCustomer customer, SysDept dept, List<BankStatementItem> items) {
+ JSONObject jsonObject = new JSONObject();
+ JSONObject data = new JSONObject();
+ data.put("billDate",DateUtil.now());
+ data.put("exchangeRate","1");//姹囩巼
+ data.put("exchangeRateDate",DateUtil.now());//姹囩巼鏃堕棿
+ data.put("objectType","1");
+ data.put("customerCode",customer.getBipCode());//瀹㈡埛缂栫爜
+ data.put("financeOrgCode",dept.getBipCode());//寮�绁ㄧ粍缁囩紪鐮�
+ data.put("orgCode",dept.getBipCode());//涓氬姟缁勭粐缂栫爜
+ data.put("bustypeCode","ar_refsale");//浜ゆ槗绫诲瀷缂栫爜 鏆備及榛樿ZGYSFP锛岄攢鍞粯璁JHYXGLXT
+ data.put("oriCurrencyCode","CNY");//甯佺
+ data.put("srcBillType","38");
+ data.put("srcBillNo",bankStatement.getBankSeqNo());
+ data.put("_status","Insert");
+ JSONArray bodyItem = new JSONArray();
+ JSONObject item = new JSONObject();
+ item.put("oriTaxIncludedAmount", bankStatement.getTranAmount());
+ item.put("quickTypeCode", "1");
+ item.put("_status", "Insert");
+ bodyItem.add(item);
+ data.put("bodyItem",bodyItem);
+ jsonObject.put("data",data);
+ return jsonObject;
+ }
+
+ @Override
+ public R backHis(Long id) {
+ BankStatement bankStatement = baseMapper.selectById(id);
+ BusinessCustomer customer = businessCustomerMapper.selectById(bankStatement.getBusGuestId());
+ if (ObjUtil.isNull(customer)||StrUtil.isEmpty(customer.getBipCode())){
+ log.error("鏌ヨ瀹㈡埛淇℃伅寮傚父");
+ return R.failed("鏌ヨ瀹㈡埛淇℃伅寮傚父");
+ }
+ R<SysDept> r = remoteDeptService.getById(SecurityUtils.getUser().getCompId());
+ if (!r.isOk()){
+ log.error("鏌ヨ鍗曚綅淇℃伅寮傚父");
+ return R.failed("鏌ヨ鍗曚綅淇℃伅寮傚父");
+ }
+ SysDept dept = r.getData();
+ List<BankStatementItem> items = bankStatementItemMapper.selectList(Wrappers.<BankStatementItem>lambdaQuery()
+ .eq(BankStatementItem::getStatetId,id));
+ if (bipFlag){
+ String accessToken = "";
+ if (redisTemplate.hasKey("BIP_TOKEN")) {
+ accessToken = (String) redisTemplate.opsForValue().get("BIP_TOKEN");
+ } else {
+ accessToken = paymentConfirmService.getAccessToken(accessToken);
+ }
+ if (StrUtil.isEmpty(accessToken)) {
+ log.error("bip accessToken 鑾峰彇寮傚父");
+ return R.failed("bip accessToken 鑾峰彇寮傚父");
+ }
+ String finalAccessToken = accessToken;
+ JSONObject request = genBackHisParam(bankStatement,customer,dept,items);
+ log.info("鏀舵閫�娆惧崟-閫�娆惧巻鍙茬‘璁よ姹傚叆鍙傦細{}", request.toJSONString());
+ String result = HttpUtil.post(url + "/yonbip/EFI/arRefund/saveandsubmit?access_token=" + finalAccessToken, request.toJSONString());
+ log.info("鏀舵閫�娆惧崟-閫�娆惧巻鍙茬‘璁よ姹傚洖鍙�:{}", result);
+ JSONObject resultJson = JSONObject.parseObject(result);
+ if (!resultJson.getString("code").equals("200")) {
+ return R.failed(resultJson.getString("message"));
+ }
+ }
+
+ bankStatement.setConfirmAmount(new BigDecimal("0"));
+ baseMapper.updateById(bankStatement);
+ bankStatementItemMapper.deleteByIds(items.stream().map(item->item.getId()).collect(Collectors.toList()));
+ return R.ok();
+ }
+
+ private JSONObject genBackHisParam(BankStatement bankStatement, BusinessCustomer customer, SysDept dept,List<BankStatementItem> items) {
+ JSONObject jsonObject = new JSONObject();
+ JSONObject data = new JSONObject();
+ data.put("billDate",DateUtil.now());
+ data.put("exchangeRate","1");//姹囩巼
+ data.put("exchangeRateDate",DateUtil.now());//姹囩巼鏃堕棿
+ data.put("objectType","1");
+ data.put("customerCode",customer.getBipCode());//瀹㈡埛缂栫爜
+ data.put("financeOrgCode",dept.getBipCode());//寮�绁ㄧ粍缁囩紪鐮�
+ data.put("orgCode",dept.getBipCode());//涓氬姟缁勭粐缂栫爜
+ data.put("bustypeCode","ar_refsale");//浜ゆ槗绫诲瀷缂栫爜 鏆備及榛樿ZGYSFP锛岄攢鍞粯璁JHYXGLXT
+ data.put("oriCurrencyCode","CNY");//甯佺
+ data.put("srcBillType","38");
+ data.put("srcBillNo",bankStatement.getBankSeqNo());
+ data.put("_status","Insert");
+ JSONArray bodyItem = new JSONArray();
+ for (BankStatementItem statementItem:items) {
+ Contract contract = contractMapper.selectById(statementItem.getContractId());
+ JSONObject item = new JSONObject();
+ item.put("oriTaxIncludedAmount", statementItem.getConfirmAmount());
+ item.put("contractNo", contract.getContractNo());
+ item.put("quickTypeCode", "1");
+ item.put("_status", "Insert");
+ bodyItem.add(item);
+ }
+ data.put("bodyItem",bodyItem);
+ jsonObject.put("data",data);
+ return jsonObject;
+ }
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractInvoiceServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractInvoiceServiceImpl.java
index 9325098..976dd7c 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractInvoiceServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractInvoiceServiceImpl.java
@@ -507,7 +507,7 @@
ContractOutBound contractOutBound = contractOutBoundMapper.selectById(contractOutBoundInvoiceVo.getContractOutBoundId());
contractOutBound.setInvoiceStatus("1");
if (contractOutBoundInvoiceVo.getInvoiceNum().compareTo(contractOutBound.getOutBoundNum().subtract(contractOutBound.getInvoiceNum())) <= 0) {
- contractOutBound.setInvoiceNum(contractOutBound.getInvoiceNum().subtract(contractOutBoundInvoiceVo.getInvoiceNum()));
+ contractOutBound.setInvoiceNum(contractOutBound.getInvoiceNum().add(contractOutBoundInvoiceVo.getInvoiceNum()));
}
contractOutBoundMapper.updateById(contractOutBound);
});
@@ -550,11 +550,13 @@
JSONObject invoiceDetail = new JSONObject();
invoiceDetail.put("goodsLineNo", lineNo);
+ invoiceDetail.put("goodsName", invoiceItemVo.getItemName());
+ invoiceDetail.put("projectName", invoiceItemVo.getItemName());
invoiceDetail.put("goodsCode", invoiceItemVo.getTaxCode());
invoiceDetail.put("goodsTaxRate", invoiceItemVo.getTaxRate().divide(new BigDecimal("100")));
invoiceDetail.put("goodsUnit", invoiceItemVo.getUnit());
invoiceDetail.put("goodsQuantity", invoiceItemVo.getQuantity());
- invoiceDetail.put("goodsPrice", invoiceItemVo.getUnitPrice());
+// invoiceDetail.put("goodsPrice", invoiceItemVo.getUnitPrice());
if (!StrUtil.equals(vo.getContractCategory(), "water_house")) {
invoiceDetail.put("goodsTotalPrice", invoiceItemVo.getPriceNoTax());
} else {
@@ -565,7 +567,7 @@
invoiceDetailsList.add(invoiceDetail);
lineNo++;
}
- jsonObject.put("invoiceDetailsList", invoiceDetailsList);
+ data.put("invoiceDetailsList", invoiceDetailsList);
//璐柟
data.put("buyerTaxNo", vo.getPartyAOrgCode());
data.put("buyerName", vo.getPartyA());
@@ -691,7 +693,7 @@
invoiceDetail.put("goodsTaxRate", invoiceItemVo.getTaxRate().divide(new BigDecimal("100")));
invoiceDetail.put("goodsUnit", invoiceItemVo.getUnit());
invoiceDetail.put("goodsQuantity", invoiceItemVo.getQuantity());
- invoiceDetail.put("goodsPrice", invoiceItemVo.getUnitPrice());
+// invoiceDetail.put("goodsPrice", invoiceItemVo.getUnitPrice());
invoiceDetail.put("goodsTotalPrice", invoiceItemVo.getPriceNoTax().multiply(new BigDecimal("-1")));
invoiceDetail.put("goodsTotalTax", invoiceItemVo.getPriceTax().multiply(new BigDecimal("-1")));
invoiceDetailsList.add(invoiceDetail);
@@ -706,19 +708,22 @@
public R queryBlueInvoice() {
if (bwFlag) {
List<ContractInvoice> contractInvoices = baseMapper.selectList(Wrappers.<ContractInvoice>lambdaQuery()
- .eq(ContractInvoice::getInvoiceCategory, "1").eq(ContractInvoice::getInvoiceStatus, "1"));
+ .eq(ContractInvoice::getApprovalStatus, "1")
+ .eq(ContractInvoice::getBwRequestResult,"1")
+ .isNull(ContractInvoice::getInvoicePath));
if (ArrayUtil.isNotEmpty(contractInvoices)) {
contractInvoices.stream().forEach(contractInvoice -> {
JSONObject request = new JSONObject();
request.put("taxNo", contractInvoice.getTaxNo());
JSONObject data = new JSONObject();
- data.put("taxNo", contractInvoice.getSerialNo());
+ data.put("serialNo", contractInvoice.getSerialNo());
data.put("returnType", "3");
data.put("invoiceIssueMode", "1");
+ request.put("data",data);
String requestId = IdUtil.fastUUID();
log.info("serial_no:{},鍙戠エ鏌ヨ鍏ュ弬锛歿},", contractInvoice.getSerialNo(), request.toJSONString());
- String result = HttpUtil.post("method=baiwang.output.format.query&version=1.0&request_id=" + requestId, request.toJSONString());
+ String result = HttpUtil.post(bwUrl+"method=baiwang.output.format.query&version=1.0&request_id=" + requestId, request.toJSONString());
log.info("serial_no:{},鍙戠エ鏌ヨ鍥炲弬锛歿},", contractInvoice.getSerialNo(), result);
saveBwRequestRecord("baiwang.output.format.query", requestId, request.toJSONString(), result);
JSONObject resultObj = JSONObject.parseObject(result);
@@ -728,8 +733,6 @@
contractInvoice.setInvoiceStatus("2");
baseMapper.updateById(contractInvoice);
}
- //鎺ㄩ�丅IP
- pushBipInvoice(contractInvoice);
});
}
}
@@ -768,11 +771,11 @@
JSONObject params = genBlueReceiveParams(contractInvoice, contract, customer, dept);
String finalAccessToken = accessToken;
- log.info("XSJZ_YS_DJ_INSERT Request:{}", params.toJSONString());
+ log.info("搴旀敹鍙戠エ闆嗘垚鍏ュ弬:{}", params.toJSONString());
String result = HttpUtil.post(url + "/yonbip/EFI/receivable/save?access_token=" + finalAccessToken, params.toJSONString());
- log.info("XSJZ_YS_DJ_INSERT Response:{}", result);
+ log.info("搴旀敹鍙戠エ闆嗘垚鍥炲弬:{}", result);
//淇濆瓨璇锋眰璁板綍
- paymentConfirmService.saveBipRequestRecord(params, "< XSJZ_YS_DJ_001>-搴旀敹鍙戠エ淇濆瓨鎺ュ彛", result);
+ paymentConfirmService.saveBipRequestRecord(params, "搴旀敹鍙戠エ闆嗘垚鎺ュ彛", result);
JSONObject resultJson = JSONObject.parseObject(result);
if (resultJson.containsKey("code") && resultJson.getString("code").equals("200")) {
JSONObject data = resultJson.getJSONObject("data");
@@ -787,11 +790,11 @@
JSONObject params = genRedReceiveParams(contractInvoice);
String finalAccessToken = accessToken;
- log.info("XSJZ_YS_DJ_DELETE Request:", params.toJSONString());
+ log.info("搴旀敹鍙戠エ鍒犻櫎鍏ュ弬:{}", params.toJSONString());
String result = HttpUtil.post(url + "/yonbip/EFI/receivable/delete?access_token=" + finalAccessToken, params.toJSONString());
- log.info("XSJZ_YS_DJ_DELETE Response:{}", result);
+ log.info("搴旀敹鍙戠エ鍒犻櫎鍥炲弬:{}", result);
//淇濆瓨璇锋眰璁板綍
- paymentConfirmService.saveBipRequestRecord(params, "< XSJZ_YS_DJ_002>-搴旀敹鍙戠エ鍒犻櫎鎺ュ彛", result);
+ paymentConfirmService.saveBipRequestRecord(params, "搴旀敹鍙戠エ鍒犻櫎鎺ュ彛", result);
JSONObject resultJson = JSONObject.parseObject(result);
if (resultJson.containsKey("code") && resultJson.getString("code").equals("200")) {
contractInvoice.setBipPush("1");
@@ -898,6 +901,7 @@
vo.setContractCategory(contract.getContractCategory());
invoice.setApprovalStatus("1");
baseMapper.updateById(invoice);
+ invoice.setBwRequestResult("0");
//钃濈エ
if (invoice.getInvoiceCategory().equals("1")) {
// TODO 寮�钃濈エ鎺ュ彛
@@ -905,23 +909,29 @@
if (bwFlag) {
String requestId = IdUtil.fastUUID();
invoice.setBwRequestId(requestId);
- log.info("钃濈エ璇锋眰鎺ュ彛鍏ュ弬", request.toJSONString());
+ invoice.setBwRequestResult("1");
+ invoice.setBwRequestParam(request.toJSONString());
+ log.info("钃濈エ璇锋眰鎺ュ彛鍏ュ弬:{}", request.toJSONString());
String result = HttpUtil.post(bwUrl + "method=baiwang.output.invoice.issue&version=1.0&requestId=" + requestId, request.toJSONString());
- log.info("钃濈エ璇锋眰鎺ュ彛鍥炲弬", result);
+ log.info("钃濈エ璇锋眰鎺ュ彛鍥炲弬:{}", result);
saveBwRequestRecord("baiwang.output.invoice.issue", requestId, request.toJSONString(), result);
JSONObject resultObj = JSONObject.parseObject(result);
if (resultObj.containsKey("requestId") && StrUtil.equals(resultObj.getString("requestId"), requestId) &&
- !resultObj.getBoolean("success")) {
- log.error("寮�绁ㄥけ璐ワ紒锛侊紒");
- return;
+ resultObj.getBoolean("success")) {
+ log.info("寮�绁ㄦ垚鍔燂紒锛侊紒");
+ invoice.setBwRequestResult("1");
}
JSONObject modelJson = resultObj.getJSONObject("model");
- JSONArray models = modelJson.getJSONArray("success");
- if (ArrayUtil.isNotEmpty(models)) {
- JSONObject model = (JSONObject) models.get(0);
- Date invoiceDate = DateUtil.parse(model.getString("invoiceDate"), DatePattern.PURE_DATETIME_PATTERN);
- invoice.setInvoiceTime(invoiceDate);
- invoice.setInvoiceNo(model.getString("invoiceNo"));
+ if (ObjUtil.isNotNull(modelJson)) {
+ JSONArray models = modelJson.getJSONArray("success");
+ if (CollUtil.isNotEmpty(models)) {
+ JSONObject model = (JSONObject) models.get(0);
+ Date invoiceDate = DateUtil.parse(model.getString("invoiceDate"), DatePattern.PURE_DATETIME_PATTERN);
+ invoice.setInvoiceTime(invoiceDate);
+ invoice.setInvoiceNo(model.getString("invoiceNo"));
+ //鎺ㄩ�丅IP
+ pushBipInvoice(invoice);
+ }
}
}
if (StrUtil.isNotBlank(vo.getAdvanceInvoice())){
@@ -938,6 +948,13 @@
}
if (contract.getBillingAmout().compareTo(contract.getAmount()) < 0) {
contract.setBillingStatus("1");
+ List<ContractOutBound> outBoundList = contractOutBoundMapper.selectList(Wrappers.<ContractOutBound>lambdaQuery()
+ .eq(ContractOutBound::getContractId,contract.getId())
+ .apply("invoice_num < out_bound_num"));
+ if (CollUtil.isNotEmpty(outBoundList)){
+ contract.setBillingStatus("2");
+ }
+
}
//闃叉閲嶅瀹″紑绁ㄥ鏍搁�氳繃鍚� 寮�绁ㄩ噾棰濊秴鍑哄悎鍚岄噾棰�
if (contract.getBillingAmout().compareTo(contract.getAmount()) > 0) {
@@ -979,6 +996,7 @@
}
contractMapper.updateById(contract);
}
+ baseMapper.updateById(invoice);
}
//绾㈢エ
if (invoice.getInvoiceCategory().equals("2")) {
@@ -987,6 +1005,7 @@
JSONObject request = genRedInvoice(contract, blueInvoice, invoice.getSerialNo());
String requestId = IdUtil.fastUUID();
invoice.setBwRequestId(requestId);
+ invoice.setBwRequestParam(request.toJSONString());
if (bwFlag) {
log.info("绾㈠瓧纭鍗曡姹傛帴鍙e叆鍙�:{}", request.toJSONString());
String result = HttpUtil.post(bwUrl + "method=baiwang.output.redinvoice.add&version=1.0&requestId=" + requestId, request.toJSONString());
@@ -994,12 +1013,13 @@
saveBwRequestRecord("baiwang.output.redinvoice.add", requestId, request.toJSONString(), result);
JSONObject resultObj = JSONObject.parseObject(result);
if (resultObj.containsKey("requestId") && StrUtil.equals(resultObj.getString("requestId"), requestId) &&
- !resultObj.getBoolean("success")) {
- log.error("绾㈠瓧纭鍗曞け璐ワ紒锛侊紒");
- return;
+ resultObj.getBoolean("success")) {
+ log.info("绾㈠瓧纭鍗曟垚鍔燂紒锛侊紒");
+ invoice.setBwRequestResult("1");
+
}
JSONArray models = resultObj.getJSONArray("model");
- if (ArrayUtil.isNotEmpty(models)) {
+ if (CollUtil.isNotEmpty(models)) {
JSONObject model = (JSONObject) models.get(0);
if (StrUtil.isEmpty(model.getString("confirmBillingMark")) || StrUtil.equals(model.getString("confirmBillingMark"), "N")) {
@@ -1014,6 +1034,7 @@
}
}
}
+ baseMapper.updateById(invoice);
contract.setBillingAmout(contract.getBillingAmout().subtract(invoice.getInvoiceTotalPriceTax()));
//闃叉閲嶅瀹″紑绁ㄥ鏍搁�氳繃鍚� 寮�绁ㄩ噾棰濅负璐�
if (contract.getBillingAmout().compareTo(new BigDecimal("0")) < 0) {
@@ -1120,4 +1141,77 @@
public Page pageScope(Page page, ContractQueryDTO queryDTO) {
return baseMapper.pageScope(page, queryDTO, DataScope.of("comp_id"));
}
+
+ @Override
+ public R refresh(Long invoiceId) {
+ ContractInvoice invoice = baseMapper.selectById(invoiceId);
+ //钃濈エ
+ if (invoice.getInvoiceCategory().equals("1")) {
+ // TODO 寮�钃濈エ鎺ュ彛
+ if (bwFlag) {
+ String requestId = IdUtil.fastUUID();
+ invoice.setBwRequestId(requestId);
+ invoice.setBwRequestResult("1");
+ invoice.setBwRequestParam(invoice.getBwRequestParam());
+ log.info("钃濈エ璇锋眰鎺ュ彛鍏ュ弬:{}", invoice.getBwRequestParam());
+ String result = HttpUtil.post(bwUrl + "method=baiwang.output.invoice.issue&version=1.0&requestId=" + requestId, invoice.getBwRequestParam());
+ log.info("钃濈エ璇锋眰鎺ュ彛鍥炲弬:{}", result);
+ saveBwRequestRecord("baiwang.output.invoice.issue", requestId, invoice.getBwRequestParam(), result);
+ JSONObject resultObj = JSONObject.parseObject(result);
+ if (resultObj.containsKey("requestId") && StrUtil.equals(resultObj.getString("requestId"), requestId) &&
+ !resultObj.getBoolean("success")) {
+ log.error("寮�绁ㄥけ璐ワ紒锛侊紒");
+ return R.failed(resultObj.getString("message"));
+ }
+ invoice.setBwRequestResult("1");
+ JSONObject modelJson = resultObj.getJSONObject("model");
+ JSONArray models = modelJson.getJSONArray("success");
+ if (CollUtil.isNotEmpty(models)) {
+ JSONObject model = (JSONObject) models.get(0);
+ Date invoiceDate = DateUtil.parse(model.getString("invoiceDate"), DatePattern.PURE_DATETIME_PATTERN);
+ invoice.setInvoiceTime(invoiceDate);
+ invoice.setInvoiceNo(model.getString("invoiceNo"));
+ //鎺ㄩ�丅IP
+ pushBipInvoice(invoice);
+ }
+ }
+ }
+ //绾㈢エ
+ if (invoice.getInvoiceCategory().equals("2")) {
+ // TODO 寮�绾㈢エ鎺ュ彛
+ String requestId = IdUtil.fastUUID();
+ invoice.setBwRequestId(requestId);
+ invoice.setBwRequestParam(invoice.getBwRequestParam());
+ if (bwFlag) {
+ log.info("绾㈠瓧纭鍗曡姹傛帴鍙e叆鍙�:{}", invoice.getBwRequestParam());
+ String result = HttpUtil.post(bwUrl + "method=baiwang.output.redinvoice.add&version=1.0&requestId=" + requestId, invoice.getBwRequestParam());
+ log.info("绾㈠瓧纭鍗曡姹傛帴鍙e洖鍙�:{}", result);
+ saveBwRequestRecord("baiwang.output.redinvoice.add", requestId, invoice.getBwRequestParam(), result);
+ JSONObject resultObj = JSONObject.parseObject(result);
+ if (resultObj.containsKey("requestId") && StrUtil.equals(resultObj.getString("requestId"), requestId) &&
+ !resultObj.getBoolean("success")) {
+ log.error("绾㈠瓧纭鍗曟垚鍔燂紒锛侊紒");
+
+ return R.failed(resultObj.getString("message"));
+ }
+ invoice.setBwRequestResult("1");
+ JSONArray models = resultObj.getJSONArray("model");
+ if (ArrayUtil.isNotEmpty(models)) {
+ JSONObject model = (JSONObject) models.get(0);
+ if (StrUtil.isEmpty(model.getString("confirmBillingMark")) || StrUtil.equals(model.getString("confirmBillingMark"), "N")) {
+ //绛夊緟纭
+ invoice.setRedReversal("3");
+ } else if (StrUtil.equals(model.getString("confirmBillingMark"), "Y")) {
+ //纭鍗冲紑
+ invoice.setInvoiceNo(model.getString("redInvoiceNo"));
+ invoice.setRedReversal("1");
+ //鎺ㄩ�丅IP
+ pushBipInvoice(invoice);
+ }
+ }
+ }
+ }
+ baseMapper.updateById(invoice);
+ return R.ok();
+ }
}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
index 8b4e1b6..4245c12 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
@@ -103,6 +103,12 @@
@Value("${dept.smj}")
private String smj;
+ @Value("${dept.smjsc}")
+ private String smjsc;
+
+ @Value("${dept.smjzt}")
+ private String smjzt;
+
@Value("${dept.sgb}")
private String sgb;
@@ -163,7 +169,8 @@
return R.failed("鏍囩殑鐗╀笉鑳戒负绌�");
}
- if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)||StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjsc)||
+ StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjzt)){
contract.setContractNo(generateSMJContractNo());
}
if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
@@ -286,7 +293,8 @@
contract.setPaidAmount(new BigDecimal("0"));
contract.setBillingAmout(new BigDecimal("0"));
contract.setNickName(SecurityUtils.getUser().getNickname());
- if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)||StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjsc)||
+ StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjzt)){
contract.setContractNo(generateSMJContractNo());
}
if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
@@ -423,6 +431,12 @@
@Override
public R startApproval(Long id) {
Contract contract = baseMapper.selectById(id);
+
+ //绠�鏄撳悎鍚屾棤娉曠户缁悗缁搷浣�
+ if (StrUtil.equals(contract.getContractCategory(), "simple")){
+ return R.failed("璇疯ˉ鍏呮爣鐨勭墿鍜屾敹娆鹃樁娈靛悗鍐嶈繘琛屾搷浣滐紒");
+ }
+
//鍚姩娴佺▼
ProcessInstanceParamDto dto = new ProcessInstanceParamDto();
Map<String, Object> map = BeanUtil.beanToMap(contract);
@@ -441,6 +455,7 @@
Contract contract = baseMapper.selectById(id);
contract.setContractStatus(2);
baseMapper.updateById(contract);
+
List<ContractSubjectMatter> subjectMatterList = contractSubjectMatterMapper.selectList(Wrappers.<ContractSubjectMatter>lambdaQuery()
.eq(ContractSubjectMatter::getContractId,id));
@@ -968,7 +983,8 @@
newContract.setErpPushFlag("0");
newContract.setContractStatus(0);
newContract.setBillingAmout(new BigDecimal("0"));
- if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)||StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjsc)||
+ StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjzt)){
newContract.setContractNo(generateSMJContractNo());
}
if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
@@ -2216,4 +2232,42 @@
e.printStackTrace();
}
}
+
+ @Override
+ public R addSimple(ContractAddDTO addDTO) {
+ Contract contract = BeanUtil.copyProperties(addDTO, Contract.class);
+ contract.setPartyBId(SecurityUtils.getUser().getCompId());
+ contract.setPartyB(SecurityUtils.getUser().getCompName());
+ if (StrUtil.isEmpty(addDTO.getPartyA())){
+ BusinessCustomer bc = businessCustomerMapper.selectById(addDTO.getPartyAId());
+ if (ObjUtil.isNotNull(bc)){
+ contract.setPartyA(bc.getCompanyName());
+ }
+ }
+
+ contract.setPaidAmount(new BigDecimal("0"));
+ contract.setBillingStatus("1");
+ contract.setBillingAmout(new BigDecimal("0"));
+ contract.setErpPushFlag("0");
+ contract.setNickName(SecurityUtils.getUser().getNickname());
+
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)||StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjsc)||
+ StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjzt)){
+ contract.setContractNo(generateSMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
+ contract.setContractNo(generateGYBContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",ymj)){
+ contract.setContractNo(generateYMJContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",tfgs)){
+ contract.setContractNo(generateTFContractNo());
+ }
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",jxc)){
+ contract.setContractNo(generateJXCContractNo());
+ }
+ baseMapper.insert(contract);
+ return R.ok();
+ }
}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractSubjectMatterServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractSubjectMatterServiceImpl.java
index 05de0eb..1e9a195 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractSubjectMatterServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractSubjectMatterServiceImpl.java
@@ -1,19 +1,33 @@
package com.by4cloud.platformx.business.service.impl;
+import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.admin.api.entity.SysDept;
+import com.by4cloud.platformx.admin.api.vo.DeptExcelVO;
+import com.by4cloud.platformx.business.dto.ContractSubjectMatterAddDTO;
import com.by4cloud.platformx.business.entity.ContractSubjectMatter;
+import com.by4cloud.platformx.business.entity.Product;
import com.by4cloud.platformx.business.mapper.ContractSubjectMatterMapper;
+import com.by4cloud.platformx.business.mapper.ProductMapper;
import com.by4cloud.platformx.business.service.ContractSubjectMatterService;
import com.by4cloud.platformx.business.vo.ContractSubjectMatterVo;
+import com.by4cloud.platformx.business.vo.SubjectMatterExcelVO;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.data.datascope.DataScope;
import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import com.by4cloud.platformx.common.excel.vo.ErrorMessage;
+import com.by4cloud.platformx.common.security.util.SecurityUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.validation.BindingResult;
+import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
/**
* 鍚堝悓鏍囩殑鐗╂槑缁嗚〃
@@ -22,7 +36,11 @@
* @date 2026-04-29 16:39:29
*/
@Service
+@RequiredArgsConstructor
public class ContractSubjectMatterServiceImpl extends ServiceImpl<ContractSubjectMatterMapper, ContractSubjectMatter> implements ContractSubjectMatterService {
+
+ private final ProductMapper productMapper;
+
@Override
public R selectSubjectMatterProcess(Long id) {
MPJLambdaWrapper<ContractSubjectMatter> wrapper = new MPJLambdaWrapper<ContractSubjectMatter>()
@@ -38,4 +56,41 @@
return R.ok(baseMapper.selectListByScope(Wrappers.<ContractSubjectMatter>lambdaQuery().eq(ContractSubjectMatter::getContractId,contractId)
.orderByAsc(ContractSubjectMatter::getCreateTime), DataScope.of("comp_id")));
}
+
+ @Override
+ public R importSubjectMatter(List<SubjectMatterExcelVO> excelVOList, BindingResult bindingResult) {
+ List<ErrorMessage> errorMessageList = (List<ErrorMessage>) bindingResult.getTarget();
+ List<ContractSubjectMatterAddDTO> addDTOList = new ArrayList<>();
+ for (SubjectMatterExcelVO item : excelVOList) {
+ Set<String> errorMsg = new HashSet<>();
+
+ Product one = productMapper.selectOne(Wrappers.<Product>lambdaQuery()
+ .eq(Product::getErpCode, item.getMaterialCode())
+ .eq(Product::getCompId, SecurityUtils.getUser().getCompId()));
+
+ if (one == null) {
+ errorMsg.add(item.getMaterialCode()+"erp缂栫爜涓嶅瓨鍦�");
+ }
+ if (CollUtil.isEmpty(errorMsg)) {
+ ContractSubjectMatterAddDTO addDTO = new ContractSubjectMatterAddDTO();
+ addDTO.setMaterialCode(item.getMaterialCode());
+ addDTO.setMaterialInternalName(one.getProductName());
+ addDTO.setMaterialName(item.getMaterialName());
+ addDTO.setUnitPrice(item.getUnitPrice());
+ addDTO.setQuantity(item.getQuantity());
+ addDTO.setSpecification(one.getProductType());
+ addDTOList.add(addDTO);
+ }
+ else {
+ // 鏁版嵁涓嶅悎娉曟儏鍐�
+ errorMessageList.add(new ErrorMessage(item.getLineNum(), errorMsg));
+ }
+ }
+ if (CollUtil.isNotEmpty(errorMessageList)) {
+ return R.failed(errorMessageList,"閮ㄩ棬瀵煎叆澶辫触");
+ }
+ return R.ok(addDTOList, "閮ㄩ棬瀵煎叆鎴愬姛");
+ }
+
+
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
index 2a7809e..32a829d 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
@@ -50,6 +50,12 @@
@Value("${dept.smj}")
private String smj;
+ @Value("${dept.smjsc}")
+ private String smjsc;
+
+ @Value("${dept.smjzt}")
+ private String smjzt;
+
@Value("${dept.sgb}")
private String sgb;
@@ -102,7 +108,8 @@
//鍑哄簱
addDTO.getSubjectMatterList().stream().forEach(outSubjectMatterAddDTO -> {
OutBound outBound = BeanUtil.copyProperties(outSubjectMatterAddDTO, OutBound.class);
- if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)||StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjsc)||
+ StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjzt)){
outBound.setBatchNumber(generateSMJContractCKNo());
}
if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
@@ -545,7 +552,8 @@
contractSubjectMatterMapper.updateById(subjectMatter);
//
OutBound outBound = new OutBound();
- if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)){
+ if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smj)||StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjsc)||
+ StrUtil.equals(SecurityUtils.getUser().getCompId()+"",smjzt)){
outBound.setBatchNumber(generateSMJContractCKNo());
}
if (StrUtil.equals(SecurityUtils.getUser().getCompId()+"",sgb)){
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
index 2df9d21..885ac46 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
@@ -528,7 +528,7 @@
throw new RuntimeException(e);
}
log.info("閾惰娴佹按鏌ヨ Request:{}", params.toJSONString());
- String result = HttpUtil.post(url + "/iuap-api-auth/yonbip/ctm/cmp/bankReconciliationQuery?access_token=" + finalAccessToken, params.toJSONString());
+ String result = HttpUtil.post(url + "/yonbip/ctm/cmp/bankReconciliationQuery?access_token=" + finalAccessToken, params.toJSONString());
log.info("閾惰娴佹按鏌ヨ Response:{}", result);
//淇濆瓨璇锋眰璁板綍
saveBipRequestRecord(params, "閾惰娴佹按鏌ヨ鎺ュ彛", result);
@@ -558,7 +558,7 @@
} catch (InvalidKeyException e) {
throw new RuntimeException(e);
}
- String getTokenResult = HttpUtil.get(url + "/iuap-api-auth/open-auth/selfAppAuth/getAccessToken?appKey=" + appKey + "×tamp=" + timestamp
+ String getTokenResult = HttpUtil.get(url + "/open-auth/selfAppAuth/getAccessToken?appKey=" + appKey + "×tamp=" + timestamp
+ "&signature=" + signature);
log.info("Get access_token Response:{}", getTokenResult);
JSONObject tokenJson = JSONObject.parseObject(getTokenResult);
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/ContractInvoiceMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/ContractInvoiceMapper.xml
index 20efb7b..1873e9d 100644
--- a/platformx-business-finance-biz/src/main/resources/mapper/ContractInvoiceMapper.xml
+++ b/platformx-business-finance-biz/src/main/resources/mapper/ContractInvoiceMapper.xml
@@ -44,21 +44,21 @@
SELECT sum(ci.invoice_total_price_tax)
FROM contract_invoice ci
WHERE ci.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND ci.invoice_time >= CURDATE()
AND ci.invoice_time < DATE_ADD(CURDATE(), INTERVAL 1 DAY )) smjbr,
(
SELECT sum(ci.invoice_total_price_tax)
FROM contract_invoice ci
WHERE ci.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND ci.invoice_time >= DATE_FORMAT(CURDATE(), '%Y-%m-01')
AND ci.invoice_time < DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 1 MONTH ), '%Y-%m-01')) smjby,
(
SELECT sum(ci.invoice_total_price_tax)
FROM contract_invoice ci
WHERE ci.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND ci.invoice_time >= DATE_FORMAT(CURDATE(), '%Y-01-01')
AND ci.invoice_time < DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 1 YEAR ), '%Y-01-01')) smjbn,
(
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/ContractMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/ContractMapper.xml
index 5936e13..a22070a 100644
--- a/platformx-business-finance-biz/src/main/resources/mapper/ContractMapper.xml
+++ b/platformx-business-finance-biz/src/main/resources/mapper/ContractMapper.xml
@@ -1178,7 +1178,7 @@
contract c
WHERE
c.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND c.sign_date >= CURDATE()
AND c.sign_date < DATE_ADD( CURDATE(), INTERVAL 1 DAY )) smjbr,
(
@@ -1188,7 +1188,7 @@
contract c
WHERE
c.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND c.sign_date >=DATE_FORMAT( CURDATE(), '%Y-%m-01' )
AND c.sign_date < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 MONTH ), '%Y-%m-01' )) smjby,
(
@@ -1198,7 +1198,7 @@
contract c
WHERE
c.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND c.sign_date >=DATE_FORMAT( CURDATE(), '%Y-01-01' )
AND c.sign_date < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 YEAR ), '%Y-01-01' )) smjbn,
(
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/ContractOutBoundMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/ContractOutBoundMapper.xml
index cba7f38..57c4e28 100644
--- a/platformx-business-finance-biz/src/main/resources/mapper/ContractOutBoundMapper.xml
+++ b/platformx-business-finance-biz/src/main/resources/mapper/ContractOutBoundMapper.xml
@@ -74,7 +74,7 @@
cob.del_flag = '0'
AND cob.contract_id = csm.contract_id
AND cob.subject_matter_code = csm.material_code
- AND cob.comp_id = 2056555602756063234
+ AND cob.comp_id = 2089995177814495234
<!-- AND cob.out_bound_time >= CURDATE() -->
AND cob.out_bound_time < DATE_ADD( CURDATE(), INTERVAL -6 DAY )) smjbr,
(
@@ -87,7 +87,7 @@
cob.del_flag = '0'
AND cob.contract_id = csm.contract_id
AND cob.subject_matter_code = csm.material_code
- AND cob.comp_id = 2056555602756063234
+ AND cob.comp_id = 2089995177814495234
AND cob.out_bound_time >= DATE_FORMAT( CURDATE(), '%Y-%m-01' )
AND cob.out_bound_time < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 MONTH ), '%Y-%m-01' )) smjby,
(
@@ -100,7 +100,7 @@
cob.del_flag = '0'
AND cob.contract_id = csm.contract_id
AND cob.subject_matter_code = csm.material_code
- AND cob.comp_id = 2056555602756063234
+ AND cob.comp_id = 2089995177814495234
AND cob.out_bound_time >= DATE_FORMAT( CURDATE(), '%Y-01-01' )
AND cob.out_bound_time < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 YEAR ), '%Y-01-01' )) smjbn,
(
@@ -277,7 +277,7 @@
AND csm.del_flag = '0'
AND cob.contract_id = csm.contract_id
AND cob.subject_matter_code = csm.material_code
- AND cob.comp_id = 2056555602756063234
+ AND cob.comp_id = 2089995177814495234
<!-- AND cob.out_bound_time >= CURDATE() -->
AND cob.out_bound_time < DATE_ADD( CURDATE(), INTERVAL -6 DAY )) smjbr,
(
@@ -291,7 +291,7 @@
AND csm.del_flag = '0'
AND cob.contract_id = csm.contract_id
AND cob.subject_matter_code = csm.material_code
- AND cob.comp_id = 2056555602756063234
+ AND cob.comp_id = 2089995177814495234
AND cob.out_bound_time >= DATE_FORMAT( CURDATE(), '%Y-%m-01' )
AND cob.out_bound_time < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 MONTH ), '%Y-%m-01' )) smjby,
(
@@ -305,7 +305,7 @@
AND csm.del_flag = '0'
AND cob.contract_id = csm.contract_id
AND cob.subject_matter_code = csm.material_code
- AND cob.comp_id = 2056555602756063234
+ AND cob.comp_id = 2089995177814495234
AND cob.out_bound_time >= DATE_FORMAT( CURDATE(), '%Y-01-01' )
AND cob.out_bound_time < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 YEAR ), '%Y-01-01' )) smjbn,
(
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/CurrentOverdueMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/CurrentOverdueMapper.xml
index 5b1cfc1..cc71214 100644
--- a/platformx-business-finance-biz/src/main/resources/mapper/CurrentOverdueMapper.xml
+++ b/platformx-business-finance-biz/src/main/resources/mapper/CurrentOverdueMapper.xml
@@ -58,7 +58,7 @@
current_overdue co
WHERE
co.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND co.create_time >= CURDATE()
AND co.create_time < DATE_ADD( CURDATE(), INTERVAL 1 DAY )) smjbr,
(
@@ -68,7 +68,7 @@
current_overdue co
WHERE
co.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND co.create_time >= DATE_FORMAT( CURDATE(), '%Y-%m-01' )
AND co.create_time < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 MONTH ), '%Y-%m-01' )) smjby,
(
@@ -78,7 +78,7 @@
current_overdue co
WHERE
co.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND co.create_time >= DATE_FORMAT( CURDATE(), '%Y-01-01' )
AND co.create_time < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 YEAR ), '%Y-01-01' )) smjbn,
(
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/HistoryOverdueMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/HistoryOverdueMapper.xml
index 6b35c69..2153f4d 100644
--- a/platformx-business-finance-biz/src/main/resources/mapper/HistoryOverdueMapper.xml
+++ b/platformx-business-finance-biz/src/main/resources/mapper/HistoryOverdueMapper.xml
@@ -59,7 +59,7 @@
history_overdue co
WHERE
co.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND co.create_time >= CURDATE()
AND co.create_time < DATE_ADD( CURDATE(), INTERVAL 1 DAY )) smjbr,
(
@@ -69,7 +69,7 @@
history_overdue co
WHERE
co.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND co.create_time >= DATE_FORMAT( CURDATE(), '%Y-%m-01' )
AND co.create_time < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 MONTH ), '%Y-%m-01' )) smjby,
(
@@ -79,7 +79,7 @@
history_overdue co
WHERE
co.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND co.create_time >= DATE_FORMAT( CURDATE(), '%Y-01-01' )
AND co.create_time < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 YEAR ), '%Y-01-01' )) smjbn,
(
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/PaymentSlipMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/PaymentSlipMapper.xml
index e74a144..a1bae91 100644
--- a/platformx-business-finance-biz/src/main/resources/mapper/PaymentSlipMapper.xml
+++ b/platformx-business-finance-biz/src/main/resources/mapper/PaymentSlipMapper.xml
@@ -60,7 +60,7 @@
payment_slip ps
WHERE
ps.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND ps.payment_time >= CURDATE()
AND ps.payment_time < DATE_ADD( CURDATE(), INTERVAL 1 DAY )) smjbr,
(
@@ -70,7 +70,7 @@
payment_slip ps
WHERE
ps.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND ps.payment_time >= DATE_FORMAT( CURDATE(), '%Y-%m-01' )
AND ps.payment_time < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 MONTH ), '%Y-%m-01' )) smjby,
(
@@ -80,7 +80,7 @@
payment_slip ps
WHERE
ps.del_flag = '0'
- AND comp_id = 2056555602756063234
+ AND comp_id = 2089995177814495234
AND ps.payment_time >= DATE_FORMAT( CURDATE(), '%Y-01-01' )
AND ps.payment_time < DATE_FORMAT( DATE_ADD( CURDATE(), INTERVAL 1 YEAR ), '%Y-01-01' )) smjbn,
(
diff --git a/platformx-business-finance-biz/src/main/resources/template/jxc/product.xlsx b/platformx-business-finance-biz/src/main/resources/template/jxc/product.xlsx
index 8da08ab..f756de4 100644
--- a/platformx-business-finance-biz/src/main/resources/template/jxc/product.xlsx
+++ b/platformx-business-finance-biz/src/main/resources/template/jxc/product.xlsx
Binary files differ
--
Gitblit v1.9.1