From 3a102b246b592e5e1dd34d6de07a8191de90a8e1 Mon Sep 17 00:00:00 2001
From: 李白 <7387820+wjli_13439841639@user.noreply.gitee.com>
Date: 星期五, 29 五月 2026 11:15:17 +0800
Subject: [PATCH] 开票前基础数据设置
---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/SaleCreditService.java | 8
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/SaleCreditServiceImpl.java | 18 +
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java | 160 ++++++++++++++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java | 269 ++++++++++++++++++++++++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductionPlanServiceImpl.java | 32 ++
platformx-business-finance-biz/src/main/resources/mapper/SaleCreditMapper.xml | 31 ++
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ProductionPlan.java | 4
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundVo.java | 36 +++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductionPlanService.java | 3
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BusinessCustomer.java | 9
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/SaleCreditMapper.java | 11 +
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java | 4
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java | 11 +
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/PlanSubjectMatter.java | 4
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java | 56 ++++
15 files changed, 651 insertions(+), 5 deletions(-)
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BusinessCustomer.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BusinessCustomer.java
index 8706068..ff4f49e 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BusinessCustomer.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BusinessCustomer.java
@@ -117,4 +117,13 @@
@Column(columnDefinition = "bigint comment '甯傚満绫诲瀷'")
private Long className;
+ @Schema(description = "鍑哄彛鏈嶅姟灞炴��")
+ @Column(columnDefinition = "bigint comment '鍑哄彛鏈嶅姟灞炴��'")
+ private Long exportServiceAttr;
+
+ @Schema(description = "閿�鍞ā寮�")
+ @Column(columnDefinition = "bigint comment '閿�鍞ā寮�'")
+ private Long salesModel;
+
+
}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java
index 02286f9..2d6769d 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java
@@ -21,6 +21,10 @@
@jakarta.persistence.Table(name = "contract_out_bound")//鏁版嵁搴撳垱寤虹殑琛ㄦ槑
public class ContractOutBound extends BaseModel<ContractOutBound> {
+ @Schema(description = "Erp鍑哄簱Id")
+ @Column(columnDefinition = "bigint not null comment 'Erp鍑哄簱Id'")
+ private Long OutBoundId;
+
@Schema(description = "鍏宠仈鍚堝悓ID")
@Column(columnDefinition = "bigint not null comment '鍏宠仈鍚堝悓ID'")
private Long contractId;
@@ -75,8 +79,54 @@
@Column(columnDefinition="text comment '鍒拌揣鍗曟嵁璺緞'")
private String arrivalAttPaths;
- @Schema(description = "erp鍑哄簱ID")
- @Column(columnDefinition="bigint comment 'erp鍑哄簱ID'")
- private Long outBoundId;
+ //浠ヤ笅寮�绁ㄧ浉鍏�
+
+ @Schema(description = "閿�鍞寕璐d")
+ @Column(columnDefinition = "bigint default null comment '閿�鍞寕璐d'")
+ private Long saleCreditId;
+
+ @Schema(description = "寮�绁ㄧ姸鎬侊紙0-鏈紑绁� 1-寮�绁ㄤ腑 2-宸插紑绁級")
+ @Column(columnDefinition = "tinyint(2) default 0 comment '寮�绁ㄧ姸鎬侊紙0-鏈紑绁� 1-寮�绁ㄤ腑 2-宸插紑绁級'")
+ private Integer invoiceSatus;
+
+ @Schema(description = "鎬诲崟浠�")
+ @Column(columnDefinition = "decimal(10,0) comment '鍑哄簱鏁伴噺'")
+ private BigDecimal totalPrice;
+
+ @Schema(description = "鎬荤◣棰�")
+ @Column(columnDefinition = "decimal(10,0) comment '鎬荤◣棰�'")
+ private BigDecimal totalTax;
+
+ //浜у搧淇℃伅
+
+ @Schema(description = "浜у搧id")
+ @Column(columnDefinition = "bigint not null comment '浜у搧id'")
+ private Long productId;
+
+ @Schema(description = "绋庣巼锛堢櫨鍒嗘瘮锛屽13琛ㄧず13%锛�")
+ @Column(columnDefinition = "double default 0.00 comment '绋庣巼'")
+ private Double taxRate;
+
+ @Schema(description = "绋庢敹鍒嗙被")
+ @Column(columnDefinition = "VARCHAR(50) comment '绋庢敹鍒嗙被'")
+ private String taxClass;
+
+ @Schema(description = "绋庢敹缂栫爜")
+ @Column(columnDefinition = "VARCHAR(80) comment '绋庢敹缂栫爜'")
+ private String taxCode;
+
+ //鍚堝悓鏍囩殑鐗╀腑淇℃伅
+
+ @Schema(description = "鏍囩殑鐗╄鏍�/鍨嬪彿")
+ @Column(columnDefinition = "VARCHAR(200) comment '鏍囩殑鐗╄鏍�/鍨嬪彿'")
+ private String specification;
+
+ @Schema(description = "璁¢噺鍗曚綅锛堜釜/鍙�/鍚�/椤�/濂楃瓑锛�")
+ @Column(columnDefinition = "VARCHAR(20) comment '璁¢噺鍗曚綅'")
+ private String unit;
+
+ @Schema(description = "鍗曚环")
+ @Column(columnDefinition = "decimal(10,2) comment '鍗曚环'")
+ private BigDecimal unitPrice;
}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/PlanSubjectMatter.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/PlanSubjectMatter.java
index 5c9b4a9..fae3bd3 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/PlanSubjectMatter.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/PlanSubjectMatter.java
@@ -31,6 +31,10 @@
@Column(columnDefinition = "VARCHAR(50) comment '浜у搧鍚嶇О'")
private String productName;
+ @Schema(description = "浜у搧鍨嬪彿")
+ @Column(columnDefinition = "VARCHAR(50) comment '浜у搧鍨嬪彿'")
+ private String productType;
+
@Schema(description = "浜у搧Erp缂栫爜")
@Column(columnDefinition = "VARCHAR(50) comment '浜у搧Erp缂栫爜'")
private String erpCode;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java
index 8de5aac..a5a0e74 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java
@@ -51,6 +51,10 @@
@Column(columnDefinition = "VARCHAR(50) comment '绋庢敹鍒嗙被'")
private String taxClass;
+ @Schema(description = "绋庢敹缂栫爜")
+ @Column(columnDefinition = "VARCHAR(80) comment '绋庢敹缂栫爜'")
+ private String taxCode;
+
@Schema(description = "鐖禝D")
@Column(columnDefinition = "bigint default 0 comment '鐖禝D'")
private Long parentId;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ProductionPlan.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ProductionPlan.java
index 083b595..44ff6af 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ProductionPlan.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ProductionPlan.java
@@ -77,8 +77,8 @@
@Column(columnDefinition = "tinyint(2) default 0 comment '渚涘簲灞炴�� 0-鎴愬搧 1-澶囦欢 2-澶т慨 3-鍏朵粬'")
private Integer supplyAttribute;*/
- @Schema(description = "璁″垝鐘舵�侊紙0-鑽夌 1-宸茬敓鏁� 2-宸茬粓姝� 3-宸茶繃鏈燂級")
- @Column(columnDefinition = "tinyint(2) default 0 comment '璁″垝鐘舵��'")
+ @Schema(description = "璁″垝鐘舵�侊紙0-宸插け鏁� 1-宸茬敓鏁堬級")
+ @Column(columnDefinition = "tinyint(2) default 1 comment '璁″垝鐘舵��'")
private Integer status;
@Schema(description = "鏄惁鎺ㄩ�乪rp锛�0-娌℃湁 1-鎺ㄩ�侊級")
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java
new file mode 100644
index 0000000..48ba3de
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SaleCredit.java
@@ -0,0 +1,160 @@
+package com.by4cloud.platformx.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import lombok.Data;
+import org.hibernate.annotations.Comment;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author wjli
+ * @description
+ * @date 2026/4/29 10:51
+ **/
+@Data
+@Entity
+@Table(name = "sale_credit")
+@Comment("閿�鍞寕璐�")
+public class SaleCredit extends BaseModel<SaleCredit> {
+
+ @Schema(description = "閿�鍞紪鍙�")
+ @Column(columnDefinition = "VARCHAR(64) comment '閿�鍞紪鍙�'")
+ private String entrustCode;
+
+ @Schema(description = "鍏宠仈鍚堝悓ID")
+ @Column(columnDefinition = "bigint not null comment '鍏宠仈鍚堝悓ID'")
+ private Long contractId;
+
+ @Schema(description = "鍚堝悓缂栧彿")
+ @Column(columnDefinition = "VARCHAR(64) comment '鍚堝悓缂栧彿'")
+ private String contractNo;
+
+ @Schema(description = "鍚堝悓鍚嶇О")
+ @Column(columnDefinition = "VARCHAR(64) comment '鍚堝悓鍚嶇О'")
+ private String contractName;
+
+ @Schema(description = "鐢叉柟id")
+ @Column(name = "party_a_id",columnDefinition = "bigint comment '鐢叉柟id'")
+ private Long partyAId;
+
+ @Schema(description = "鐢叉柟鍚嶇О")
+ @Column(name = "party_a",columnDefinition = "VARCHAR(100) comment '鐢叉柟鍚嶇О'")
+ private String partyA;
+
+ @Schema(description = "鐢叉柟缁熶竴绀句細淇$敤浠g爜")
+ @Column(name = "credit_code_a",columnDefinition = "VARCHAR(30) comment '鐢叉柟缁熶竴绀句細淇$敤浠g爜'")
+ private String creditCodeA;
+
+ @Schema(description = "鐢叉柟寮�鎴烽摱琛�")
+ @Column(name = "bank_name_a",columnDefinition = "VARCHAR(20) comment '鐢叉柟寮�鎴烽摱琛�'")
+ private String bankNameA;
+
+ @Schema(description = "鐢叉柟閾惰璐﹀彿")
+ @Column(name = "bank_account_a",columnDefinition = "VARCHAR(50) comment '鐢叉柟閾惰璐﹀彿'")
+ private String bankAccountA;
+
+ @Schema(description = "鐢叉柟鑱旂郴鐢佃瘽")
+ @Column(name = "contact_phone_a",columnDefinition = "VARCHAR(50) comment '鐢叉柟鑱旂郴鐢佃瘽'")
+ private String contactPhoneA;
+
+ @Schema(description = "涔欐柟id")
+ @Column(name = "party_b_id",columnDefinition = "bigint comment '涔欐柟id'")
+ private Long partyBId;
+
+ @Schema(description = "涔欐柟鍚嶇О")
+ @Column(name = "party_b",columnDefinition = "VARCHAR(100) comment '涔欐柟鍚嶇О'")
+ private String partyB;
+
+ @Schema(description = "涔欐柟缁熶竴绀句細淇$敤浠g爜")
+ @Column(name = "credit_code_b",columnDefinition = "VARCHAR(30) comment '涔欐柟缁熶竴绀句細淇$敤浠g爜'")
+ private String creditCodeB;
+
+ @Schema(description = "涔欐柟寮�鎴烽摱琛�")
+ @Column(name = "bank_name_b",columnDefinition = "VARCHAR(20) comment '涔欐柟寮�鎴烽摱琛�'")
+ private String bankNameB;
+
+ @Schema(description = "涔欐柟閾惰璐﹀彿")
+ @Column(name = "bank_account_b",columnDefinition = "VARCHAR(50) comment '涔欐柟閾惰璐﹀彿'")
+ private String bankAccountB;
+
+ @Schema(description = "涔欐柟鑱旂郴鐢佃瘽")
+ @Column(name = "contact_phone_b",columnDefinition = "VARCHAR(50) comment '涔欐柟鑱旂郴鐢佃瘽'")
+ private String contactPhoneB;
+
+ @Schema(description = "鎸傝处閲戦")
+ @Column(columnDefinition = "decimal(10,2) comment '鎸傝处閲戦'")
+ private BigDecimal totalAmount;
+
+ @Schema(description = "鎸傝处閲戦鎬荤◣棰�")
+ @Column(columnDefinition = "decimal(10,2) comment '鎸傝处閲戦鎬荤◣棰�'")
+ private BigDecimal totalTax;
+
+ @Schema(description = "鏍囩殑鐗╄鎯�")
+ @Column(columnDefinition = "TEXT comment '鏍囩殑鐗╄鎯�'")
+ private String matterStr;
+
+ @Schema(description = "瀵瑰簲鍑鸿揣鍗�")
+ @Column(columnDefinition = "varchar(300) comment '瀵瑰簲鍑鸿揣鍗�'")
+ private String outBoundIds;
+
+ @Schema(description = "鐘舵�侊紙0-鐢熸晥 1-澶辨晥锛�")
+ @Column(columnDefinition = "tinyint(2) default 0 comment '鐘舵�侊紙0-鐢熸晥 1-澶辨晥锛�'")
+ private Integer status;
+
+ @Schema(description = "鐘舵�侊紙200锛�")
+ @Column(columnDefinition = "tinyint(2) default 0 comment '鐘舵�侊紙200锛�'")
+ private Integer bipStatus;
+
+ @Schema(description = "寮�绁ㄧ粨鏋滅姸鎬� 0鏈彁浜ら粯璁� 1澶勭悊涓� 2閫氳繃 3椹冲洖 4寮�绁ㄥけ璐�")
+ @javax.persistence.Column(columnDefinition="int(1) comment '鎺掑簭'")
+ private Integer blueResultStatus;
+
+ @Schema(description = "寮�绾㈢エ缁撴灉鐘舵�� 0鏈彁浜ら粯璁� 1澶勭悊涓� 2閫氳繃 3椹冲洖 4寮�绁ㄥけ璐�")
+ @javax.persistence.Column(columnDefinition="int(1) comment '鎺掑簭'")
+ private Integer redResultStatus;
+
+ @Schema(description = "钃濈エid")
+ @Column(columnDefinition = "bigint default null comment '钃濈エid'")
+ private Long blueInvoiceResultId;
+
+ @Schema(description = "绾㈢エid")
+ @Column(columnDefinition = "bigint default null comment '绾㈢エid'")
+ private Long redInvoiceResultId;
+
+ @Schema(description = "寮�绁ㄨ鎯�")
+ @Column(columnDefinition = "TEXT comment '寮�绁ㄨ鎯�'")
+ private String invoiceRemark;
+
+ @Schema(description = "钃濈エ鍦板潃")
+ @Column(columnDefinition = "varchar(300) comment '钃濈エ鍦板潃'")
+ private String invoicPath;
+
+ @Schema(description = "绾㈢エ鍦板潃")
+ @Column(columnDefinition = "varchar(300) comment '绾㈢エ鍦板潃'")
+ private String invoicRedPath;
+
+ @Schema(description = "鍙戠エurl")
+ @javax.persistence.Column(columnDefinition="VARCHAR(50) comment '鍙戠エurl'")
+ private String invoicUrl;
+
+ @Schema(description = "绾㈠啿鍙戠エurl")
+ @javax.persistence.Column(columnDefinition="VARCHAR(50) comment '绾㈠啿鍙戠エurl'")
+ private String invoicRedUrl;
+
+ /**
+ * 鍑鸿揣鍗曞垪琛�
+ */
+ @Transient
+ @TableField(exist = false)
+ private List<ContractOutBoundVo> contractOutBoundList;
+
+
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundVo.java
new file mode 100644
index 0000000..ac2f458
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractOutBoundVo.java
@@ -0,0 +1,36 @@
+package com.by4cloud.platformx.business.vo;
+
+import com.by4cloud.platformx.business.entity.ContractOutBound;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ContractOutBoundVo extends ContractOutBound {
+ //浜у搧涓俊鎭�
+
+ @Schema(description = "浜у搧id")
+ private Long productId;
+
+ @Schema(description = "绋庣巼锛堢櫨鍒嗘瘮锛屽13琛ㄧず13%锛�")
+ private Double taxRate;
+
+ @Schema(description = "绋庢敹鍒嗙被")
+ private String taxClass;
+
+ @Schema(description = "绋庢敹缂栫爜")
+ private String taxCode;
+
+ //鍚堝悓鏍囩殑鐗╀腑淇℃伅
+
+ @Schema(description = "鏍囩殑鐗╄鏍�/鍨嬪彿")
+ private String specification;
+
+ @Schema(description = "璁¢噺鍗曚綅锛堜釜/鍙�/鍚�/椤�/濂楃瓑锛�")
+ private String unit;
+
+ @Schema(description = "鍗曚环")
+ private BigDecimal unitPrice;
+
+}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java
index 0530d36..662ad16 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductionPlanController.java
@@ -205,4 +205,15 @@
public List<ProductionPlan> export(ProductionPlan productionPlan,Long[] ids) {
return productionPlanService.list(Wrappers.lambdaQuery(productionPlan).in(ArrayUtil.isNotEmpty(ids), ProductionPlan::getId, ids));
}
+
+ /**
+ * 鍚姩瀹℃牳娴佺▼
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍚姩瀹℃牳娴佺▼" , description = "閫氳繃id鍚堝悓鐢熸晥" )
+ @GetMapping("/startApproval/{id}" )
+ public R startApproval(@PathVariable("id" ) Long id) {
+ return productionPlanService.startApproval(id);
+ }
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
new file mode 100644
index 0000000..2959929
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/SaleCreditController.java
@@ -0,0 +1,269 @@
+package com.by4cloud.platformx.business.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.admin.api.entity.SysDept;
+import com.by4cloud.platformx.admin.api.feign.RemoteDeptService;
+import com.by4cloud.platformx.business.entity.*;
+import com.by4cloud.platformx.business.service.*;
+import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.common.security.annotation.Inner;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 閿�鍞寕璐�
+ *
+ * @author wjli
+ * @date 2026-05-21 16:16:31
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/saleCredit" )
+@Tag(description = "saleCredit" , name = "閿�鍞寕璐︾鐞�" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class SaleCreditController {
+
+ private final SaleCreditService saleCreditService;
+ private final ContractService contractService;
+ private final BusinessCustomerService businessCustomerService;
+ private final ContractOutBoundService contractOutBoundService;
+ private final ProductService productService;
+ private final ContractSubjectMatterService contractSubjectMatterService;
+ private final RemoteDeptService remoteDeptService;
+
+
+
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param page 鍒嗛〉瀵硅薄
+ * @param saleCredit 閿�鍞寕璐�
+ * @return
+ */
+ @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+ @GetMapping("/page" )
+ @PreAuthorize("@pms.hasPermission('business_saleCredit_view')" )
+ public R getSaleCreditPage(@ParameterObject Page page, @ParameterObject SaleCredit saleCredit) {
+ LambdaQueryWrapper<SaleCredit> wrapper = Wrappers.lambdaQuery();
+ return R.ok(saleCreditService.page(page, wrapper));
+ }
+
+
+ /**
+ * 閫氳繃id鏌ヨ閿�鍞寕璐�
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+ @GetMapping("/{id}" )
+ @PreAuthorize("@pms.hasPermission('business_saleCredit_view')" )
+ public R getById(@PathVariable("id" ) Long id) {
+ return R.ok(saleCreditService.getById(id));
+ }
+
+ /**
+ * 鏂板閿�鍞寕璐�
+ * @param saleCredit 閿�鍞寕璐�
+ * @return R
+ */
+ @Operation(summary = "鏂板閿�鍞寕璐�" , description = "鏂板閿�鍞寕璐�" )
+ @SysLog("鏂板閿�鍞寕璐�" )
+ @PostMapping
+ @PreAuthorize("@pms.hasPermission('business_saleCredit_add')" )
+ public R save(@RequestBody SaleCredit saleCredit) {
+ return R.ok(saleCreditService.save(saleCredit));
+ }
+
+
+ /**
+ * 鏂板閿�鍞寕璐�
+ * @param saleCredit 閿�鍞寕璐�
+ * @return R
+ */
+ @Operation(summary = "閿�鍞寕璐︾敓鎴�" , description = "閿�鍞寕璐︾敓鎴�" )
+ @SysLog("閿�鍞寕璐︾敓鎴�" )
+ @PostMapping("/saveSaleCredit")
+ @PreAuthorize("@pms.hasPermission('business_saleCredit_add')" )
+ public R saveInvoice(@RequestBody SaleCredit saleCredit) {
+ //寮�绁ㄤ腑
+ saleCredit.setStatus(1);
+ saleCreditService.save(saleCredit);
+ //鏍囪鍑哄簱鍗曡鏍囪瘑
+ List<ContractOutBoundVo> contractOutBoundList = saleCredit.getContractOutBoundList();
+ if(contractOutBoundList==null){
+ return R.failed("璇烽�夋嫨鍑哄簱鍗曪紒");
+ }
+ if(contractOutBoundList.size()==0){
+ return R.failed("璇烽�夋嫨鍑哄簱鍗曪紒");
+ }
+ String outBoundIds = "";
+ for(ContractOutBoundVo vo : contractOutBoundList){
+ if(StrUtil.isEmpty(outBoundIds)){
+ outBoundIds = "" + vo.getId();
+ }else{
+ outBoundIds += "," + vo.getId();
+ }
+ ContractOutBound outBound = contractOutBoundService.getById(vo.getId());
+ outBound.setSaleCreditId(saleCredit.getId());
+ outBound.setTotalPrice(vo.getTotalPrice());
+ outBound.setTotalTax(vo.getTotalTax());
+ outBound.setProductId(vo.getProductId());
+ outBound.setTaxRate(vo.getTaxRate());
+ outBound.setTaxClass(vo.getTaxClass());
+ outBound.setTaxCode(vo.getTaxCode());
+ outBound.setSpecification(vo.getSpecification());
+ outBound.setUnit(vo.getUnit());
+ outBound.setUnitPrice(vo.getUnitPrice());
+ outBound.setInvoiceSatus(1);
+ contractOutBoundService.updateById(outBound);
+ }
+ saleCredit.setOutBoundIds(outBoundIds);
+ saleCreditService.save(saleCredit);
+
+ return R.ok("閿�鍞寕璐︾敓鎴愶紒");
+ }
+
+
+
+
+
+ /**
+ * 鎷兼帴閿�鍞寕璐�
+ * @param saleCredit 閿�鍞寕璐�
+ * @return R
+ */
+ @Operation(summary = "鎷兼帴閿�鍞寕璐�" , description = "鎷兼帴閿�鍞寕璐�" )
+ @SysLog("鎷兼帴閿�鍞寕璐�" )
+ @GetMapping("/generatorInvoice")
+ @PreAuthorize("@pms.hasPermission('business_saleCredit_view')" )
+ @Inner(value = false)
+ public R generatorInvoice(@ParameterObject SaleCredit saleCredit) {
+ if(saleCredit.getContractId()==null){
+ return R.failed("鍚堝悓id涓嶈兘涓虹┖");
+ }
+ Contract contract = contractService.getById(saleCredit.getContractId());
+ if(contract==null){
+ return R.failed("鍚堝悓id閿欒");
+ }
+ saleCredit.setContractName(contract.getContractName());
+ saleCredit.setContractNo(contract.getContractNo());
+
+ BusinessCustomer partA = businessCustomerService.getById(contract.getPartyAId());
+ if(partA!=null){
+ saleCredit.setPartyA(partA.getCompanyName());
+ saleCredit.setCreditCodeA(partA.getCreditCode());
+ saleCredit.setBankAccountA(partA.getBankAccount());
+ saleCredit.setBankNameA(partA.getBankName());
+ }
+ R<SysDept> r = remoteDeptService.getById(contract.getPartyBId());
+
+ SysDept dept = r.getData();
+ if(dept!=null){
+ saleCredit.setPartyB(dept.getOrgName());
+ saleCredit.setCreditCodeB(dept.getOrgCode());
+ saleCredit.setBankAccountB(dept.getOrgBankAccount());
+ saleCredit.setBankNameB(dept.getOrgBank());
+ }
+
+ List<ContractOutBound> outBoundList = contractOutBoundService.list(new LambdaQueryWrapper<ContractOutBound>()
+ .eq(ContractOutBound::getContractId,contract.getId())
+ .eq(ContractOutBound::getInvoiceSatus,0)
+ .orderByAsc(ContractOutBound::getOutBoundTime)
+ );
+
+ if(outBoundList!=null){
+ if(!outBoundList.isEmpty()){
+ List<ContractOutBoundVo> list = new ArrayList<>();
+ for(ContractOutBound outBound : outBoundList){
+ ContractOutBoundVo vo = new ContractOutBoundVo();
+ BeanUtil.copyProperties(outBound,vo);
+ Product product = productService.getOne(new LambdaQueryWrapper<Product>().eq(Product::getErpCode,outBound.getSubjectMatterCode()).last("limit 1"));
+
+ if(product!=null){
+ vo.setProductId(product.getId());
+ vo.setTaxClass(product.getTaxClass());
+ vo.setTaxCode(product.getTaxCode());
+ vo.setTaxRate(product.getTaxRate());
+ }
+ ContractSubjectMatter matter = contractSubjectMatterService.getOne(new LambdaQueryWrapper<ContractSubjectMatter>()
+ .eq(ContractSubjectMatter::getContractId,contract.getId())
+ .eq(ContractSubjectMatter::getMaterialCode,outBound.getSubjectMatterCode())
+ .last("limit 1")
+ );
+ if(matter!=null){
+ vo.setSpecification(matter.getSpecification());
+ vo.setUnit(matter.getUnit());
+ vo.setUnitPrice(matter.getUnitPrice());
+ }
+ list.add(vo);
+ }
+ saleCredit.setContractOutBoundList(list);
+ }
+ }
+ return R.ok(saleCredit);
+ }
+
+
+
+ /**
+ * 淇敼閿�鍞寕璐�
+ * @param saleCredit 閿�鍞寕璐�
+ * @return R
+ */
+ @Operation(summary = "淇敼閿�鍞寕璐�" , description = "淇敼閿�鍞寕璐�" )
+ @SysLog("淇敼閿�鍞寕璐�" )
+ @PutMapping
+ @PreAuthorize("@pms.hasPermission('business_saleCredit_edit')" )
+ public R updateById(@RequestBody SaleCredit saleCredit) {
+ return R.ok(saleCreditService.updateById(saleCredit));
+ }
+
+ /**
+ * 閫氳繃id鍒犻櫎閿�鍞寕璐�
+ * @param ids id鍒楄〃
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍒犻櫎閿�鍞寕璐�" , description = "閫氳繃id鍒犻櫎閿�鍞寕璐�" )
+ @SysLog("閫氳繃id鍒犻櫎閿�鍞寕璐�" )
+ @DeleteMapping
+ @PreAuthorize("@pms.hasPermission('business_saleCredit_del')" )
+ public R removeById(@RequestBody Long[] ids) {
+ return R.ok(saleCreditService.removeBatchByIds(CollUtil.toList(ids)));
+ }
+
+
+ /**
+ * 瀵煎嚭excel 琛ㄦ牸
+ * @param saleCredit 鏌ヨ鏉′欢
+ * @param ids 瀵煎嚭鎸囧畾ID
+ * @return excel 鏂囦欢娴�
+ */
+ @ResponseExcel
+ @GetMapping("/export")
+ @PreAuthorize("@pms.hasPermission('business_saleCredit_export')" )
+ public List<SaleCredit> export(SaleCredit saleCredit,Long[] ids) {
+ return saleCreditService.list(Wrappers.lambdaQuery(saleCredit).in(ArrayUtil.isNotEmpty(ids), SaleCredit::getId, ids));
+ }
+
+
+
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/SaleCreditMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/SaleCreditMapper.java
new file mode 100644
index 0000000..437929c
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/SaleCreditMapper.java
@@ -0,0 +1,11 @@
+package com.by4cloud.platformx.business.mapper;
+
+import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
+import com.by4cloud.platformx.business.entity.SaleCredit;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SaleCreditMapper extends PlatformxBaseMapper<SaleCredit> {
+
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductionPlanService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductionPlanService.java
index 1396680..3f82344 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductionPlanService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductionPlanService.java
@@ -2,7 +2,10 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.by4cloud.platformx.business.entity.ProductionPlan;
+import com.by4cloud.platformx.common.core.util.R;
public interface ProductionPlanService extends IService<ProductionPlan> {
+ R startApproval(Long id);
+
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/SaleCreditService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/SaleCreditService.java
new file mode 100644
index 0000000..fe3e291
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/SaleCreditService.java
@@ -0,0 +1,8 @@
+package com.by4cloud.platformx.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.business.entity.SaleCredit;
+
+public interface SaleCreditService extends IService<SaleCredit> {
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductionPlanServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductionPlanServiceImpl.java
index 72f27f6..0b39122 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductionPlanServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductionPlanServiceImpl.java
@@ -1,10 +1,20 @@
package com.by4cloud.platformx.business.service.impl;
+import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.business.api.feign.RemoteFlowProcessService;
+import com.by4cloud.platformx.business.constant.FlowNameEnum;
+import com.by4cloud.platformx.business.entity.Contract;
import com.by4cloud.platformx.business.entity.ProductionPlan;
import com.by4cloud.platformx.business.mapper.ProductionPlanMapper;
import com.by4cloud.platformx.business.service.ProductionPlanService;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.flow.task.dto.ProcessInstanceParamDto;
+import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
/**
* 鎺掍骇璁″垝
*
@@ -12,5 +22,27 @@
* @date 2026-05-07 10:27:42
*/
@Service
+@RequiredArgsConstructor
public class ProductionPlanServiceImpl extends ServiceImpl<ProductionPlanMapper, ProductionPlan> implements ProductionPlanService {
+
+ private final RemoteFlowProcessService remoteFlowProcessService;
+
+ @Override
+ public R startApproval(Long id) {
+ ProductionPlan plan = baseMapper.selectById(id);
+ //鍚姩娴佺▼
+ ProcessInstanceParamDto dto = new ProcessInstanceParamDto();
+ Map<String, Object> map = BeanUtil.beanToMap(plan);
+ dto.setParamMap(map);
+ dto.setFlowName(FlowNameEnum.鎺掍骇璁″垝瀹℃壒.name());
+
+ R r1 = remoteFlowProcessService.startProcessInstance(dto);
+ if (r1.getCode() == 1) {
+ return R.failed("娴佺▼鍚姩澶辫触");
+ }
+ plan.setStatus(1);
+ baseMapper.updateById(plan);
+ return R.ok();
+ }
+
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/SaleCreditServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/SaleCreditServiceImpl.java
new file mode 100644
index 0000000..7b7fa90
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/SaleCreditServiceImpl.java
@@ -0,0 +1,18 @@
+package com.by4cloud.platformx.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.business.entity.SaleCredit;
+import com.by4cloud.platformx.business.mapper.SaleCreditMapper;
+import com.by4cloud.platformx.business.service.SaleCreditService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 閿�鍞寕璐�
+ *
+ * @author wjli
+ * @date 2026-05-21 16:16:31
+ */
+@Service
+public class SaleCreditServiceImpl extends ServiceImpl<SaleCreditMapper, SaleCredit> implements SaleCreditService {
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/SaleCreditMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/SaleCreditMapper.xml
new file mode 100644
index 0000000..7acfe9e
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/mapper/SaleCreditMapper.xml
@@ -0,0 +1,31 @@
+<?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="com.by4cloud.platformx.business.mapper.SaleCreditMapper">
+
+ <resultMap id="saleCreditMap" type="com.by4cloud.platformx.business.entity.SaleCredit">
+ <id property="id" column="id"/>
+ <result property="contractId" column="contract_id"/>
+ <result property="contractNo" column="contract_no"/>
+ <result property="contractName" column="contract_name"/>
+ <result property="partyAId" column="party_a_id"/>
+ <result property="partyA" column="party_a"/>
+ <result property="creditCodeA" column="credit_code_a"/>
+ <result property="bankNameA" column="bank_name_a"/>
+ <result property="bankAccountA" column="bank_account_a"/>
+ <result property="partyBId" column="party_b_id"/>
+ <result property="partyB" column="party_b"/>
+ <result property="creditCodeB" column="credit_code_b"/>
+ <result property="bankNameB" column="bank_name_b"/>
+ <result property="bankAccountB" column="bank_account_b"/>
+ <result property="totalAmount" column="total_amount"/>
+ <result property="matterStr" column="matter_str"/>
+ <result property="outBoundIds" column="out_bound_ids"/>
+ <result property="compId" column="comp_id"/>
+ <result property="createBy" column="create_by"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateBy" column="update_by"/>
+ <result property="updateTime" column="update_time"/>
+ <result property="delFlag" column="del_flag"/>
+ </resultMap>
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.1