From e7e6d39b095b6a763e54ab34631171c3de32ec9e Mon Sep 17 00:00:00 2001
From: 李白 <7387820+wjli_13439841639@user.noreply.gitee.com>
Date: 星期五, 15 五月 2026 08:33:50 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutBoundAddDTO.java | 6
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractOutBoundMapper.java | 11
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Contract.java | 4
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractOutBoundController.java | 124 +++++++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java | 70 ++-
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutSubjectMatterAddDTO.java | 6
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/TaxCodeQueryDTO.java | 12
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractOutBoundService.java | 8
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/TaxCode.java | 134 ++++++++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/TaxCodeController.java | 121 +++++++
platformx-business-finance-biz/src/main/resources/mapper/TaxCodeMapper.xml | 30 +
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java | 83 ++--
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/TaxCodeService.java | 11
platformx-business-finance-biz/src/main/resources/mapper/ContractOutBoundMapper.xml | 25 +
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/TaxCodeMapper.java | 11
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java | 105 ++++--
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java | 64 ++++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractOutBoundServiceImpl.java | 16 +
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/TaxCodeServiceImpl.java | 106 ++++++
19 files changed, 838 insertions(+), 109 deletions(-)
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutBoundAddDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutBoundAddDTO.java
index 5dd6f5d..e504be2 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutBoundAddDTO.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutBoundAddDTO.java
@@ -21,6 +21,12 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date outBoundTime;
+ @Schema(description = "鍗曟嵁鍚嶇О")
+ private String outBoundAttNames;
+
+ @Schema(description = "鍗曟嵁璺緞")
+ private String outBoundAttPaths;
+
@Schema(description = "鍑哄簱鏍囩殑鐗�")
private List<OutSubjectMatterAddDTO> subjectMatterList;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutSubjectMatterAddDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutSubjectMatterAddDTO.java
index baeb967..b50a298 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutSubjectMatterAddDTO.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutSubjectMatterAddDTO.java
@@ -17,10 +17,4 @@
@Schema(description = "鍑哄簱鏁伴噺")
private BigDecimal outBoundNum;
- @Schema(description = "鍗曟嵁鍚嶇О")
- private String outBoundAttNames;
-
- @Schema(description = "鍗曟嵁璺緞")
- private String outBoundAttPaths;
-
}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/TaxCodeQueryDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/TaxCodeQueryDTO.java
new file mode 100644
index 0000000..bd5b44a
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/TaxCodeQueryDTO.java
@@ -0,0 +1,12 @@
+package com.by4cloud.platformx.business.dto;
+
+import lombok.Data;
+
+@Data
+public class TaxCodeQueryDTO {
+
+ private String mc;
+
+ private Integer childNum;
+
+}
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 761d6ac..dbd114c 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
@@ -139,6 +139,10 @@
@Column(columnDefinition = "decimal(10,2) comment '宸插紑绁ㄩ噾棰�'")
private BigDecimal billingAmout;
+ @Schema(description = "涓嬩竴闃舵")
+ @Column(columnDefinition = "VARCHAR(128) comment '涓嬩竴闃舵'")
+ private String nextScheduleName;
+
/**
* 涓存椂瀛楁 - 鐢ㄤ簬鎺ユ敹瀹℃壒浜哄悕绉扮瓑鍏宠仈鏌ヨ缁撴灉
*/
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
new file mode 100644
index 0000000..d4d3c81
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractOutBound.java
@@ -0,0 +1,64 @@
+package com.by4cloud.platformx.business.entity;
+
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import lombok.Data;
+import org.hibernate.annotations.Table;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 2026骞�4鏈�29鏃� 10:46:07
+ * syt
+ */
+@Data
+@Entity//鍔犱簡鎵嶈兘鑷姩鐢熸垚琛�
+@Table(appliesTo="contract_out_bound",comment = "鍚堝悓鍑哄簱鍘嗗彶")//缁欒〃鍔犳敞閲�
+@jakarta.persistence.Table(name = "contract_out_bound")//鏁版嵁搴撳垱寤虹殑琛ㄦ槑
+public class ContractOutBound extends BaseModel<ContractOutBound> {
+
+ @Schema(description = "鍏宠仈鍚堝悓ID")
+ @Column(columnDefinition = "bigint not null comment '鍏宠仈鍚堝悓ID'")
+ private Long contractId;
+
+ @Schema(description = "鍚堝悓鍚嶇О")
+ @Column(columnDefinition = "VARCHAR(64) comment '鍚堝悓鍚嶇О'")
+ private String contractName;
+
+ @Schema(description = "瀹㈠晢鍚嶇О")
+ @Column(columnDefinition="VARCHAR(64) comment '瀹㈠晢鍚嶇О'")
+ private String busGuestName;
+
+ @Schema(description = "瀹㈠晢ID")
+ @Column(columnDefinition="bigint comment '瀹㈠晢ID'")
+ private Long busGuestId;
+
+ @Schema(description = "鏍囩殑鐗╁悕绉�")
+ @Column(columnDefinition="VARCHAR(64) comment '鏍囩殑鐗╁悕绉�'")
+ private String subjectMatterName;
+
+ @Schema(description = "鏍囩殑鐗╃紪鐮�")
+ @Column(columnDefinition="VARCHAR(64) comment '鏍囩殑鐗╃紪鐮�'")
+ private String subjectMatterCode;
+
+ @Schema(description = "鍑哄簱鏁伴噺")
+ @Column(columnDefinition="decimal(10,0) comment '鍑哄簱鏁伴噺'")
+ private BigDecimal outBoundNum;
+
+ @Schema(description = "鍑哄簱鏃堕棿")
+ @Column(columnDefinition="datetime comment '鍑哄簱鏃堕棿'")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date outBoundTime;
+
+ @Schema(description = "鍗曟嵁鍚嶇О")
+ @Column(columnDefinition="text comment '鍗曟嵁鍚嶇О'")
+ private String outBoundAttNames;
+
+ @Schema(description = "鍗曟嵁璺緞")
+ @Column(columnDefinition="text comment '鍗曟嵁璺緞'")
+ private String outBoundAttPaths;
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/TaxCode.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/TaxCode.java
new file mode 100644
index 0000000..f19f94c
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/TaxCode.java
@@ -0,0 +1,134 @@
+package com.by4cloud.platformx.business.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+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.Transient;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.Table;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 绋庡姟缂栫爜
+ *
+ * @author syt
+ * @date 2026-05-13 16:35:23
+ */
+@Data
+@Entity//鍔犱簡鎵嶈兘鑷姩鐢熸垚琛�
+@Table(appliesTo="tax_code",comment = "绋庢敹缂栫爜")//缁欒〃鍔犳敞閲�
+@jakarta.persistence.Table(name = "tax_code")//鏁版嵁搴撳垱寤虹殑琛ㄦ槑
+public class TaxCode extends BaseModel<TaxCode> {
+
+ /**
+ * 缂栫爜
+ */
+ @Schema(description="缂栫爜")
+ private String bm;
+
+ /**
+ * 鍏抽敭瀛�
+ */
+ @Schema(description="鍏抽敭瀛�")
+ @Column(columnDefinition = "text comment '璇存槑'")
+ private String gjz;
+
+ /**
+ * 鍥芥皯缁熻浠g爜
+ */
+ @Schema(description="鍥芥皯缁熻浠g爜")
+ private String gmtjdm;
+
+ /**
+ * 鍚嶇О
+ */
+ @Schema(description="鍚嶇О")
+ private String mc;
+
+ /**
+ * 涓婄骇缂栫爜
+ */
+ @Schema(description="涓婄骇缂栫爜")
+ private String parentBm;
+
+ /**
+ * 鐪佷唤
+ */
+ @Schema(description="鐪佷唤")
+ private String prov;
+
+ /**
+ * 绋庣巼
+ */
+ @Schema(description="绋庣巼")
+ private String sl;
+
+ /**
+ * 璇存槑
+ */
+ @Schema(description="璇存槑")
+ @Column(columnDefinition = "text comment '璇存槑'")
+ private String sm;
+
+ /**
+ * 鍟嗗搧璐х墿绠�绉�
+ */
+ @Schema(description="鍟嗗搧璐х墿绠�绉�")
+ private String sphwjc;
+
+ /**
+ * 娑堣垂绋庣鐞�
+ */
+ @Schema(description="娑堣垂绋庣鐞�")
+ private String xfsgl;
+
+ /**
+ * 娑堣垂绋庣壒娈婄鐞嗕唬鐮�
+ */
+ @Schema(description="娑堣垂绋庣壒娈婄鐞嗕唬鐮�")
+ private String xfstsgldm;
+
+ /**
+ * 娑堣垂绋庢斂绛栦緷鎹�
+ */
+ @Schema(description="娑堣垂绋庢斂绛栦緷鎹�")
+ private String xfszcyj;
+
+ /**
+ * 澧炲�肩◣鐗规畩绠$悊
+ */
+ @Schema(description="澧炲�肩◣鐗规畩绠$悊")
+ private String zzstsgl;
+
+ /**
+ * 澧炲�肩◣鐗规畩绠$悊浠g爜
+ */
+ @Schema(description="澧炲�肩◣鐗规畩绠$悊浠g爜")
+ private String zzstsgldm;
+
+ /**
+ * 澧炲�肩◣鐗规畩渚濇嵁
+ */
+ @Schema(description="澧炲�肩◣鐗规畩渚濇嵁")
+ private String zzstsyj;
+
+ /**
+ * 瀛愮◣鐩�
+ */
+ @Transient
+ @TableField(exist = false)
+ private List<TaxCode> children;
+
+ /**
+ *鏈夋棤瀛愮◣鐩�
+ */
+ @Transient
+ @TableField(exist = false)
+ private Integer childNum;
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractOutBoundController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractOutBoundController.java
new file mode 100644
index 0000000..11a0b4f
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractOutBoundController.java
@@ -0,0 +1,124 @@
+package com.by4cloud.platformx.business.controller;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.collection.CollUtil;
+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.common.core.util.R;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.business.entity.ContractOutBound;
+import com.by4cloud.platformx.business.service.ContractOutBoundService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 鍚堝悓鍑哄簱
+ *
+ * @author syt
+ * @date 2026-05-14 09:21:54
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/contractOutBound" )
+@Tag(description = "contractOutBound" , name = "鍚堝悓鍑哄簱绠$悊" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class ContractOutBoundController {
+
+ private final ContractOutBoundService contractOutBoundService;
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param page 鍒嗛〉瀵硅薄
+ * @param contractOutBound 鍚堝悓鍑哄簱
+ * @return
+ */
+ @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+ @GetMapping("/page" )
+ @PreAuthorize("@pms.hasPermission('business_contractOutBound_view')" )
+ public R getContractOutBoundPage(@ParameterObject Page page, @ParameterObject ContractOutBound contractOutBound) {
+ LambdaQueryWrapper<ContractOutBound> wrapper = Wrappers.lambdaQuery();
+ wrapper.like(StrUtil.isNotBlank(contractOutBound.getBusGuestName()),ContractOutBound::getBusGuestName,contractOutBound.getBusGuestName());
+ wrapper.like(StrUtil.isNotBlank(contractOutBound.getContractName()),ContractOutBound::getContractName,contractOutBound.getContractName());
+ wrapper.like(StrUtil.isNotBlank(contractOutBound.getSubjectMatterName()),ContractOutBound::getSubjectMatterName,contractOutBound.getSubjectMatterName());
+ wrapper.orderByDesc(ContractOutBound::getCreateTime);
+ return R.ok(contractOutBoundService.pageByScope(page, wrapper));
+ }
+
+
+ /**
+ * 閫氳繃id鏌ヨ鍚堝悓鍑哄簱
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+ @GetMapping("/{id}" )
+ @PreAuthorize("@pms.hasPermission('business_contractOutBound_view')" )
+ public R getById(@PathVariable("id" ) Long id) {
+ return R.ok(contractOutBoundService.getById(id));
+ }
+
+ /**
+ * 鏂板鍚堝悓鍑哄簱
+ * @param contractOutBound 鍚堝悓鍑哄簱
+ * @return R
+ */
+ @Operation(summary = "鏂板鍚堝悓鍑哄簱" , description = "鏂板鍚堝悓鍑哄簱" )
+ @SysLog("鏂板鍚堝悓鍑哄簱" )
+ @PostMapping
+ @PreAuthorize("@pms.hasPermission('business_contractOutBound_add')" )
+ public R save(@RequestBody ContractOutBound contractOutBound) {
+ return R.ok(contractOutBoundService.save(contractOutBound));
+ }
+
+ /**
+ * 淇敼鍚堝悓鍑哄簱
+ * @param contractOutBound 鍚堝悓鍑哄簱
+ * @return R
+ */
+ @Operation(summary = "淇敼鍚堝悓鍑哄簱" , description = "淇敼鍚堝悓鍑哄簱" )
+ @SysLog("淇敼鍚堝悓鍑哄簱" )
+ @PutMapping
+ @PreAuthorize("@pms.hasPermission('business_contractOutBound_edit')" )
+ public R updateById(@RequestBody ContractOutBound contractOutBound) {
+ return R.ok(contractOutBoundService.updateById(contractOutBound));
+ }
+
+ /**
+ * 閫氳繃id鍒犻櫎鍚堝悓鍑哄簱
+ * @param ids id鍒楄〃
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍒犻櫎鍚堝悓鍑哄簱" , description = "閫氳繃id鍒犻櫎鍚堝悓鍑哄簱" )
+ @SysLog("閫氳繃id鍒犻櫎鍚堝悓鍑哄簱" )
+ @DeleteMapping
+ @PreAuthorize("@pms.hasPermission('business_contractOutBound_del')" )
+ public R removeById(@RequestBody Long[] ids) {
+ return R.ok(contractOutBoundService.removeBatchByIds(CollUtil.toList(ids)));
+ }
+
+
+ /**
+ * 瀵煎嚭excel 琛ㄦ牸
+ * @param contractOutBound 鏌ヨ鏉′欢
+ * @param ids 瀵煎嚭鎸囧畾ID
+ * @return excel 鏂囦欢娴�
+ */
+ @ResponseExcel
+ @GetMapping("/export")
+ @PreAuthorize("@pms.hasPermission('business_contractOutBound_export')" )
+ public List<ContractOutBound> export(ContractOutBound contractOutBound,Long[] ids) {
+ return contractOutBoundService.list(Wrappers.lambdaQuery(contractOutBound).in(ArrayUtil.isNotEmpty(ids), ContractOutBound::getId, ids));
+ }
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/TaxCodeController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/TaxCodeController.java
new file mode 100644
index 0000000..a7b8442
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/TaxCodeController.java
@@ -0,0 +1,121 @@
+package com.by4cloud.platformx.business.controller;
+
+import cn.hutool.core.util.PageUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.collection.CollUtil;
+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.business.dto.TaxCodeQueryDTO;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.business.entity.TaxCode;
+import com.by4cloud.platformx.business.service.TaxCodeService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import com.by4cloud.platformx.common.excel.annotation.ResponseExcel;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.http.HttpHeaders;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 绋庡姟缂栫爜
+ *
+ * @author syt
+ * @date 2026-05-13 16:35:23
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/taxCode" )
+@Tag(description = "taxCode" , name = "绋庡姟缂栫爜绠$悊" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class TaxCodeController {
+
+ private final TaxCodeService taxCodeService;
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param page 鍒嗛〉瀵硅薄
+ * @param queryDTO 绋庡姟缂栫爜
+ * @return
+ */
+ @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+ @GetMapping("/page" )
+ @PreAuthorize("@pms.hasPermission('business_taxCode_view')" )
+ public R getTaxCodePage(@ParameterObject Page page, @ParameterObject TaxCodeQueryDTO queryDTO) {
+ return R.ok(taxCodeService.pageNew(page, queryDTO));
+ }
+
+
+ /**
+ * 閫氳繃id鏌ヨ绋庡姟缂栫爜
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+ @GetMapping("/{id}" )
+ @PreAuthorize("@pms.hasPermission('business_taxCode_view')" )
+ public R getById(@PathVariable("id" ) Integer id) {
+ return R.ok(taxCodeService.getById(id));
+ }
+
+ /**
+ * 鏂板绋庡姟缂栫爜
+ * @param taxCode 绋庡姟缂栫爜
+ * @return R
+ */
+ @Operation(summary = "鏂板绋庡姟缂栫爜" , description = "鏂板绋庡姟缂栫爜" )
+ @SysLog("鏂板绋庡姟缂栫爜" )
+ @PostMapping
+ @PreAuthorize("@pms.hasPermission('business_taxCode_add')" )
+ public R save(@RequestBody TaxCode taxCode) {
+ return R.ok(taxCodeService.save(taxCode));
+ }
+
+ /**
+ * 淇敼绋庡姟缂栫爜
+ * @param taxCode 绋庡姟缂栫爜
+ * @return R
+ */
+ @Operation(summary = "淇敼绋庡姟缂栫爜" , description = "淇敼绋庡姟缂栫爜" )
+ @SysLog("淇敼绋庡姟缂栫爜" )
+ @PutMapping
+ @PreAuthorize("@pms.hasPermission('business_taxCode_edit')" )
+ public R updateById(@RequestBody TaxCode taxCode) {
+ return R.ok(taxCodeService.updateById(taxCode));
+ }
+
+ /**
+ * 閫氳繃id鍒犻櫎绋庡姟缂栫爜
+ * @param ids id鍒楄〃
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍒犻櫎绋庡姟缂栫爜" , description = "閫氳繃id鍒犻櫎绋庡姟缂栫爜" )
+ @SysLog("閫氳繃id鍒犻櫎绋庡姟缂栫爜" )
+ @DeleteMapping
+ @PreAuthorize("@pms.hasPermission('business_taxCode_del')" )
+ public R removeById(@RequestBody Integer[] ids) {
+ return R.ok(taxCodeService.removeBatchByIds(CollUtil.toList(ids)));
+ }
+
+
+ /**
+ * 瀵煎嚭excel 琛ㄦ牸
+ * @param taxCode 鏌ヨ鏉′欢
+ * @param ids 瀵煎嚭鎸囧畾ID
+ * @return excel 鏂囦欢娴�
+ */
+ @ResponseExcel
+ @GetMapping("/export")
+ @PreAuthorize("@pms.hasPermission('business_taxCode_export')" )
+ public List<TaxCode> export(TaxCode taxCode,Integer[] ids) {
+ return taxCodeService.list(Wrappers.lambdaQuery(taxCode).in(ArrayUtil.isNotEmpty(ids), TaxCode::getId, ids));
+ }
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractOutBoundMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractOutBoundMapper.java
new file mode 100644
index 0000000..37ea42f
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractOutBoundMapper.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.ContractOutBound;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ContractOutBoundMapper extends PlatformxBaseMapper<ContractOutBound> {
+
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/TaxCodeMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/TaxCodeMapper.java
new file mode 100644
index 0000000..5b7a834
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/TaxCodeMapper.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.TaxCode;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface TaxCodeMapper extends PlatformxBaseMapper<TaxCode> {
+
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractOutBoundService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractOutBoundService.java
new file mode 100644
index 0000000..2e91cc5
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractOutBoundService.java
@@ -0,0 +1,8 @@
+package com.by4cloud.platformx.business.service;
+
+import com.by4cloud.platformx.business.entity.ContractOutBound;
+import com.by4cloud.platformx.common.data.mybatis.IIService;
+
+public interface ContractOutBoundService extends IIService<ContractOutBound> {
+
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/TaxCodeService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/TaxCodeService.java
new file mode 100644
index 0000000..877bc89
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/TaxCodeService.java
@@ -0,0 +1,11 @@
+package com.by4cloud.platformx.business.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.by4cloud.platformx.business.dto.TaxCodeQueryDTO;
+import com.by4cloud.platformx.business.entity.TaxCode;
+
+public interface TaxCodeService extends IService<TaxCode> {
+
+ Page pageNew(Page page, TaxCodeQueryDTO queryDTO);
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractOutBoundServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractOutBoundServiceImpl.java
new file mode 100644
index 0000000..f4132a6
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractOutBoundServiceImpl.java
@@ -0,0 +1,16 @@
+package com.by4cloud.platformx.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.business.entity.ContractOutBound;
+import com.by4cloud.platformx.business.mapper.ContractOutBoundMapper;
+import com.by4cloud.platformx.business.service.ContractOutBoundService;
+import org.springframework.stereotype.Service;
+/**
+ * 鍚堝悓鍑哄簱
+ *
+ * @author syt
+ * @date 2026-05-14 09:21:54
+ */
+@Service
+public class ContractOutBoundServiceImpl extends ServiceImpl<ContractOutBoundMapper, ContractOutBound> implements ContractOutBoundService {
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java
index 4e6bf29..dcc0047 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java
@@ -121,37 +121,51 @@
if (ArrayUtil.isNotEmpty(afterSchedule.toArray())&&afterSchedule.size()==1){
//鏈�鍚庨樁娈电敓鏁堟椂闂�
ContractPaymentSchedule endSchedule = afterSchedule.get(0);
- endSchedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getProcessDate(),endSchedule.getAgreedDays()));
- endSchedule.setEffectiveEndDate(contract.getExpirationDate());
- contractPaymentScheduleMapper.updateById(endSchedule);
- //褰撳墠闃舵鐢熸晥鏃堕棿
- schedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getProcessDate(),schedule.getAgreedDays()));
- schedule.setEffectiveEndDate(endSchedule.getEffectiveDate());
- contractPaymentScheduleMapper.updateById(schedule);
- //鏈�鍚庨樁娈靛簲鏀�
- PaymentConfirm newConfim = new PaymentConfirm();
- newConfim.setBusinessType(endSchedule.getStageName()+"搴旀敹");
- newConfim.setBusGuestId(contract.getPartyAId());
- newConfim.setBusGuestName(contract.getPartyA());
- newConfim.setContractId(contract.getId());
- newConfim.setContractName(contract.getContractName());
- newConfim.setContractNo(contract.getContractNo());
- newConfim.setScheduleId(endSchedule.getId());
- newConfim.setScheduleName(schedule.getStageName());
- newConfim.setConfirmTime(addDTO.getProcessDate());
- newConfim.setTransationAmount(endSchedule.getPlannedAmount());
- newConfim.setReceivableAmount(endSchedule.getPlannedAmount());
- PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,contract.getId())
- .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
- BigDecimal lastNewTotal = new BigDecimal("0");
- if(ObjUtil.isNotNull(lastNewConfirm)){
- lastNewTotal = lastNewConfirm.getTotalAmount();
+ if (StrUtil.equals(endSchedule.getStageName(),"璐ㄤ繚閲�")) {
+ endSchedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getProcessDate(), endSchedule.getAgreedDays()));
+ endSchedule.setEffectiveEndDate(contract.getExpirationDate());
+ contractPaymentScheduleMapper.updateById(endSchedule);
+ //褰撳墠闃舵鐢熸晥鏃堕棿
+ schedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getProcessDate(), schedule.getAgreedDays()));
+ schedule.setEffectiveEndDate(endSchedule.getEffectiveDate());
+ contractPaymentScheduleMapper.updateById(schedule);
+ //鏈�鍚庨樁娈靛簲鏀�
+ PaymentConfirm newConfim = new PaymentConfirm();
+ newConfim.setBusinessType(endSchedule.getStageName() + "搴旀敹");
+ newConfim.setBusGuestId(contract.getPartyAId());
+ newConfim.setBusGuestName(contract.getPartyA());
+ newConfim.setContractId(contract.getId());
+ newConfim.setContractName(contract.getContractName());
+ newConfim.setContractNo(contract.getContractNo());
+ newConfim.setScheduleId(endSchedule.getId());
+ newConfim.setScheduleName(schedule.getStageName());
+ newConfim.setConfirmTime(addDTO.getProcessDate());
+ newConfim.setTransationAmount(endSchedule.getPlannedAmount());
+ newConfim.setReceivableAmount(endSchedule.getPlannedAmount());
+ PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId())
+ .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
+ BigDecimal lastNewTotal = new BigDecimal("0");
+ if (ObjUtil.isNotNull(lastNewConfirm)) {
+ lastNewTotal = lastNewConfirm.getTotalAmount();
+ }
+ newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
+ paymentConfirmMapper.insert(newConfim);
}
- newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
- paymentConfirmMapper.insert(newConfim);
- }else {
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName(endSchedule.getStageName());
+ contractMapper.updateById(contract);
+ }
+ if(ArrayUtil.isNotEmpty(afterSchedule.toArray())&&afterSchedule.size()>1){
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName(afterSchedule.get(0).getStageName());
+ contractMapper.updateById(contract);
+ }
+ if(ArrayUtil.isEmpty(afterSchedule.toArray())){
schedule.setEffectiveEndDate(contract.getExpirationDate());
contractPaymentScheduleMapper.updateById(schedule);
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName("鏃�");
+ contractMapper.updateById(contract);
}
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 629e3cb..9f9e4bb 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
@@ -166,19 +166,6 @@
baseMapper.updateById(contract);
ContractPaymentSchedule fitstSchedule = contractPaymentScheduleMapper.selectOne(Wrappers.<ContractPaymentSchedule>lambdaQuery().eq(ContractPaymentSchedule::getContractId,contract.getId())
.orderByAsc(ContractPaymentSchedule::getCreateTime).last("limit 1"));
-// PaymentConfirm entity = new PaymentConfirm();
-// entity.setContractId(contract.getId());
-// entity.setContractName(contract.getContractName());
-// entity.setContractNo(contract.getContractNo());
-// entity.setBusGuestId(contract.getPartyAId());
-// entity.setBusGuestName(contract.getPartyA());
-// entity.setBusinessType(fitstSchedule.getStageName()+"搴旀敹");
-// entity.setTransationAmount(new BigDecimal(fitstSchedule.getPlannedAmount()));
-// entity.setReceivableAmount(new BigDecimal(fitstSchedule.getPlannedAmount()));
-// entity.setTotalAmount(new BigDecimal("0").subtract(new BigDecimal(fitstSchedule.getPlannedAmount())));
-// entity.setConfirmTime(new Date());
-// paymentConfirmMapper.insert(entity);
-
if (fitstSchedule.getStageName().equals("鍚堝悓绛捐")){
//鏂板搴旀敹
PaymentConfirm paymentConfirm = new PaymentConfirm();
@@ -207,43 +194,57 @@
//鏌ヨ鏄惁鏈夊悗缁樁娈�
List<ContractPaymentSchedule> afterSchedule = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery()
.eq(ContractPaymentSchedule::getContractId, fitstSchedule.getContractId())
- .gt(ContractPaymentSchedule::getStageOrder, fitstSchedule.getStageOrder()));
+ .gt(ContractPaymentSchedule::getStageOrder, fitstSchedule.getStageOrder())
+ .orderByAsc(ContractPaymentSchedule::getCreateTime));
if (ArrayUtil.isNotEmpty(afterSchedule.toArray())&&afterSchedule.size()==1){
//鏈�鍚庨樁娈电敓鏁堟椂闂�
ContractPaymentSchedule endSchedule = afterSchedule.get(0);
- endSchedule.setEffectiveDate(DateUtil.offsetDay(new Date(),endSchedule.getAgreedDays()));
- endSchedule.setEffectiveEndDate(contract.getExpirationDate());
- contractPaymentScheduleMapper.updateById(endSchedule);
- //绗竴闃舵鐢熸晥鏃堕棿
- fitstSchedule.setEffectiveDate(DateUtil.offsetDay(new Date(),fitstSchedule.getAgreedDays()));
- fitstSchedule.setEffectiveEndDate(endSchedule.getEffectiveDate());
- contractPaymentScheduleMapper.updateById(fitstSchedule);
+ if (StrUtil.equals(endSchedule.getStageName(),"璐ㄤ繚閲�")){
+ endSchedule.setEffectiveDate(DateUtil.offsetDay(new Date(),endSchedule.getAgreedDays()));
+ endSchedule.setEffectiveEndDate(contract.getExpirationDate());
+ contractPaymentScheduleMapper.updateById(endSchedule);
+ //绗竴闃舵鐢熸晥鏃堕棿
+ fitstSchedule.setEffectiveDate(DateUtil.offsetDay(new Date(),fitstSchedule.getAgreedDays()));
+ fitstSchedule.setEffectiveEndDate(endSchedule.getEffectiveDate());
+ contractPaymentScheduleMapper.updateById(fitstSchedule);
- //鏈�鍚庨樁娈靛簲鏀�
- PaymentConfirm newConfim = new PaymentConfirm();
- newConfim.setBusinessType(endSchedule.getStageName()+"搴旀敹");
- newConfim.setBusGuestId(contract.getPartyAId());
- newConfim.setBusGuestName(contract.getPartyA());
- newConfim.setContractId(contract.getId());
- newConfim.setContractName(contract.getContractName());
- newConfim.setContractNo(contract.getContractNo());
- newConfim.setScheduleId(endSchedule.getId());
- newConfim.setScheduleName(endSchedule.getStageName());
- newConfim.setConfirmTime(new Date());
- newConfim.setTransationAmount(endSchedule.getPlannedAmount());
- newConfim.setReceivableAmount(endSchedule.getPlannedAmount());
- PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,contract.getId())
- .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
- BigDecimal lastNewTotal = new BigDecimal("0");
- if(ObjUtil.isNotNull(lastNewConfirm)){
- lastNewTotal = lastNewConfirm.getTotalAmount();
+ //鏈�鍚庨樁娈靛簲鏀�
+ PaymentConfirm newConfim = new PaymentConfirm();
+ newConfim.setBusinessType(endSchedule.getStageName()+"搴旀敹");
+ newConfim.setBusGuestId(contract.getPartyAId());
+ newConfim.setBusGuestName(contract.getPartyA());
+ newConfim.setContractId(contract.getId());
+ newConfim.setContractName(contract.getContractName());
+ newConfim.setContractNo(contract.getContractNo());
+ newConfim.setScheduleId(endSchedule.getId());
+ newConfim.setScheduleName(endSchedule.getStageName());
+ newConfim.setConfirmTime(new Date());
+ newConfim.setTransationAmount(endSchedule.getPlannedAmount());
+ newConfim.setReceivableAmount(endSchedule.getPlannedAmount());
+ PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,contract.getId())
+ .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
+ BigDecimal lastNewTotal = new BigDecimal("0");
+ if(ObjUtil.isNotNull(lastNewConfirm)){
+ lastNewTotal = lastNewConfirm.getTotalAmount();
+ }
+ newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
+ paymentConfirmMapper.insert(newConfim);
}
- newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
- paymentConfirmMapper.insert(newConfim);
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName(endSchedule.getStageName());
+ baseMapper.updateById(contract);
+ }
+ if(ArrayUtil.isNotEmpty(afterSchedule.toArray())&&afterSchedule.size()>1){
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName(afterSchedule.get(0).getStageName());
+ baseMapper.updateById(contract);
}
if(ArrayUtil.isEmpty(afterSchedule.toArray())){
fitstSchedule.setEffectiveEndDate(contract.getExpirationDate());
contractPaymentScheduleMapper.updateById(fitstSchedule);
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName("鏃�");
+ baseMapper.updateById(contract);
}
return Boolean.TRUE;
}
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 ab084f0..98b4924 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
@@ -40,6 +40,7 @@
private final PaymentConfirmMapper paymentConfirmMapper;
private final ContractMapper contractMapper;
private final ContractPaymentScheduleProcessMapper scheduleProcessMapper;
+ private final ContractOutBoundMapper contractOutBoundMapper;
@Override
public R add(OutBoundAddDTO addDTO) {
@@ -49,6 +50,7 @@
MPJLambdaWrapper<ContractSubjectMatter> wrapper = new MPJLambdaWrapper<ContractSubjectMatter>()
.selectAll(ContractSubjectMatter.class)
.ne(ContractSubjectMatter::getDeliveryStatus, 2)
+ .in(ContractSubjectMatter::getMaterialCode,addDTO.getSubjectMatterList().stream().map(item->item.getSubjectMatterCode()).collect(Collectors.toList()))
.exists(Contract.class, contractQuery ->
contractQuery.select(ContractSubjectMatter::getId)
.eq(Contract::getId, ContractSubjectMatter::getContractId)
@@ -80,7 +82,7 @@
addDTO.getSubjectMatterList().stream().forEach(outSubjectMatterAddDTO -> {
BigDecimal remainNum = outSubjectMatterAddDTO.getOutBoundNum();
for (ContractSubjectMatter subjectMatter : subjectMatterList) {
-
+ Contract contract = contractMapper.selectById(subjectMatter.getContractId());
if (subjectMatter.getDeliveredQuantity().compareTo(new BigDecimal("0")) > 0) {
remainNum = remainNum.subtract(subjectMatter.getRemainingQuantity());
//閮ㄥ垎浜や粯鐘舵�佷笅 鍏ㄩ儴鍑哄簱
@@ -93,15 +95,19 @@
subjectMatter.setLastDeliveredQuantity(currentOut);
contractSubjectMatterMapper.updateById(subjectMatter);
currentOutList.add(subjectMatter);
+ //鏂板鍚堝悓鍑哄簱鍘嗗彶
+ saveContractOutBound(contract,addDTO,subjectMatter);
} else {
BigDecimal currentOut = remainNum.add(subjectMatter.getRemainingQuantity());
subjectMatter.setDeliveredQuantity(subjectMatter.getQuantity().add(remainNum));
- subjectMatter.setRemainingQuantity(remainNum.multiply(new BigDecimal("-1")));
+ subjectMatter.setRemainingQuantity(subjectMatter.getRemainingQuantity().subtract(currentOut));
subjectMatter.setActualDeliveryDate(DateUtil.today());
subjectMatter.setDeliveryStatus(1);
subjectMatter.setLastDeliveredQuantity(currentOut);
contractSubjectMatterMapper.updateById(subjectMatter);
currentOutList.add(subjectMatter);
+ //鏂板鍚堝悓鍑哄簱鍘嗗彶
+ saveContractOutBound(contract,addDTO,subjectMatter);
break;
}
@@ -113,9 +119,11 @@
subjectMatter.setRemainingQuantity(new BigDecimal("0"));
subjectMatter.setActualDeliveryDate(DateUtil.today());
subjectMatter.setDeliveryStatus(2);
- contractSubjectMatterMapper.updateById(subjectMatter);
subjectMatter.setLastDeliveredQuantity(subjectMatter.getQuantity());
+ contractSubjectMatterMapper.updateById(subjectMatter);
currentOutList.add(subjectMatter);
+ //鏂板鍚堝悓鍑哄簱鍘嗗彶
+ saveContractOutBound(contract,addDTO,subjectMatter);
} else {
BigDecimal currentOut = remainNum.add(subjectMatter.getQuantity());
subjectMatter.setDeliveredQuantity(subjectMatter.getQuantity().add(remainNum));
@@ -125,6 +133,8 @@
subjectMatter.setLastDeliveredQuantity(currentOut);
contractSubjectMatterMapper.updateById(subjectMatter);
currentOutList.add(subjectMatter);
+ //鏂板鍚堝悓鍑哄簱鍘嗗彶
+ saveContractOutBound(contract,addDTO,subjectMatter);
break;
}
}
@@ -148,7 +158,7 @@
//褰撳墠鍑哄簱閲戦
BigDecimal outPirce = value.stream()
.filter(item -> item.getLastDeliveredQuantity() != null && item.getUnitPrice() != null)
- .map(item -> item.getLastDeliveredQuantity().multiply(item.getUnitPrice()))
+ .map(item ->(item.getDeliveryStatus()==1?item.getDeliveredQuantity():item.getQuantity()).multiply(item.getUnitPrice()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
//鍚堝悓閲戦
Contract contract = contractMapper.selectById(key);
@@ -162,7 +172,6 @@
contractMapper.updateById(contract);
}
if (ObjUtil.isNotNull(schedule)) {
-
//鎸夊嚭搴撹祫閲戞瘮渚� 璁$畻鍙戣揣鍓嶅簲鏀舵洿鏂拌祫閲戞槑缁�
PaymentConfirm paymentConfirm = new PaymentConfirm();
paymentConfirm.setBusinessType("鍙戣揣鍓嶅簲鏀�");
@@ -215,43 +224,56 @@
//鏌ヨ鏄惁鏈夊悗缁樁娈�
List<ContractPaymentSchedule> afterSchedule = scheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery()
.eq(ContractPaymentSchedule::getContractId, schedule.getContractId())
- .gt(ContractPaymentSchedule::getStageOrder, schedule.getStageOrder()));
+ .gt(ContractPaymentSchedule::getStageOrder, schedule.getStageOrder())
+ .orderByAsc(ContractPaymentSchedule::getCreateTime));
if (ArrayUtil.isNotEmpty(afterSchedule.toArray())&&afterSchedule.size()==1){
-
//鏈�鍚庨樁娈电敓鏁堟椂闂�
ContractPaymentSchedule endSchedule = afterSchedule.get(0);
- endSchedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getOutBoundTime(),endSchedule.getAgreedDays()));
- endSchedule.setEffectiveEndDate(contract.getExpirationDate());
- scheduleMapper.updateById(endSchedule);
- //褰撳墠闃舵鐢熸晥鏃堕棿
- schedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getOutBoundTime(),schedule.getAgreedDays()));
- schedule.setEffectiveEndDate(endSchedule.getEffectiveDate());
- scheduleMapper.updateById(schedule);
- //鏈�鍚庨樁娈靛簲鏀�
- PaymentConfirm newConfim = new PaymentConfirm();
- newConfim.setBusinessType(endSchedule.getStageName()+"搴旀敹");
- newConfim.setBusGuestId(contract.getPartyAId());
- newConfim.setBusGuestName(contract.getPartyA());
- newConfim.setContractId(contract.getId());
- newConfim.setContractName(contract.getContractName());
- newConfim.setContractNo(contract.getContractNo());
- newConfim.setScheduleId(endSchedule.getId());
- newConfim.setScheduleName(schedule.getStageName());
- newConfim.setConfirmTime(addDTO.getOutBoundTime());
- newConfim.setTransationAmount(endSchedule.getPlannedAmount());
- newConfim.setReceivableAmount(endSchedule.getPlannedAmount());
- PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,contract.getId())
- .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
- BigDecimal lastNewTotal = new BigDecimal("0");
- if(ObjUtil.isNotNull(lastNewConfirm)){
- lastNewTotal = lastNewConfirm.getTotalAmount();
+ if (StrUtil.equals(endSchedule.getStageName(),"璐ㄤ繚閲�")) {
+ endSchedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getOutBoundTime(), endSchedule.getAgreedDays()));
+ endSchedule.setEffectiveEndDate(contract.getExpirationDate());
+ scheduleMapper.updateById(endSchedule);
+ //褰撳墠闃舵鐢熸晥鏃堕棿
+ schedule.setEffectiveDate(DateUtil.offsetDay(addDTO.getOutBoundTime(), schedule.getAgreedDays()));
+ schedule.setEffectiveEndDate(endSchedule.getEffectiveDate());
+ scheduleMapper.updateById(schedule);
+ //鏈�鍚庨樁娈靛簲鏀�
+ PaymentConfirm newConfim = new PaymentConfirm();
+ newConfim.setBusinessType(endSchedule.getStageName() + "搴旀敹");
+ newConfim.setBusGuestId(contract.getPartyAId());
+ newConfim.setBusGuestName(contract.getPartyA());
+ newConfim.setContractId(contract.getId());
+ newConfim.setContractName(contract.getContractName());
+ newConfim.setContractNo(contract.getContractNo());
+ newConfim.setScheduleId(endSchedule.getId());
+ newConfim.setScheduleName(schedule.getStageName());
+ newConfim.setConfirmTime(addDTO.getOutBoundTime());
+ newConfim.setTransationAmount(endSchedule.getPlannedAmount());
+ newConfim.setReceivableAmount(endSchedule.getPlannedAmount());
+ PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId())
+ .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
+ BigDecimal lastNewTotal = new BigDecimal("0");
+ if (ObjUtil.isNotNull(lastNewConfirm)) {
+ lastNewTotal = lastNewConfirm.getTotalAmount();
+ }
+ newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
+ paymentConfirmMapper.insert(newConfim);
}
- newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount()));
- paymentConfirmMapper.insert(newConfim);
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName(endSchedule.getStageName());
+ contractMapper.updateById(contract);
+ }
+ if(ArrayUtil.isNotEmpty(afterSchedule.toArray())&&afterSchedule.size()>1){
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName(afterSchedule.get(0).getStageName());
+ contractMapper.updateById(contract);
}
if(ArrayUtil.isEmpty(afterSchedule.toArray())){
schedule.setEffectiveEndDate(contract.getExpirationDate());
scheduleMapper.updateById(schedule);
+ //鏇存柊鍚堝悓涓嬩釜闃舵
+ contract.setNextScheduleName("鏃�");
+ contractMapper.updateById(contract);
}
}
});
@@ -259,4 +281,19 @@
return R.ok();
}
+
+ private void saveContractOutBound(Contract contract, OutBoundAddDTO addDTO, ContractSubjectMatter subjectMatter) {
+ ContractOutBound contractOutBound = new ContractOutBound();
+ contractOutBound.setContractId(contract.getId());
+ contractOutBound.setContractName(contract.getContractName());
+ contractOutBound.setBusGuestId(contract.getPartyAId());
+ contractOutBound.setBusGuestName(contract.getPartyA());
+ contractOutBound.setSubjectMatterCode(subjectMatter.getMaterialCode());
+ contractOutBound.setSubjectMatterName(subjectMatter.getMaterialInternalName());
+ contractOutBound.setOutBoundTime(addDTO.getOutBoundTime());
+ contractOutBound.setOutBoundNum(subjectMatter.getLastDeliveredQuantity());
+ contractOutBound.setOutBoundAttNames(addDTO.getOutBoundAttNames());
+ contractOutBound.setOutBoundAttPaths(addDTO.getOutBoundAttPaths());
+ contractOutBoundMapper.insert(contractOutBound);
+ }
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/TaxCodeServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/TaxCodeServiceImpl.java
new file mode 100644
index 0000000..1318846
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/TaxCodeServiceImpl.java
@@ -0,0 +1,106 @@
+package com.by4cloud.platformx.business.service.impl;
+
+import cn.hutool.core.lang.tree.Tree;
+import cn.hutool.core.lang.tree.TreeNode;
+import cn.hutool.core.lang.tree.TreeUtil;
+import cn.hutool.core.util.ObjUtil;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.admin.api.entity.SysDept;
+import com.by4cloud.platformx.business.dto.TaxCodeQueryDTO;
+import com.by4cloud.platformx.business.entity.TaxCode;
+import com.by4cloud.platformx.business.mapper.TaxCodeMapper;
+import com.by4cloud.platformx.business.service.TaxCodeService;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 绋庡姟缂栫爜
+ *
+ * @author syt
+ * @date 2026-05-13 16:35:23
+ */
+@Service
+public class TaxCodeServiceImpl extends ServiceImpl<TaxCodeMapper, TaxCode> implements TaxCodeService {
+
+ @Override
+ public Page pageNew(Page page, TaxCodeQueryDTO queryDTO) {
+ MPJLambdaWrapper<TaxCode> wrapper = new MPJLambdaWrapper<TaxCode>()
+ .selectAll(TaxCode.class)
+ .selectAs("(select count(1) from tax_code t1 where t1.parent_bm = t.bm)",TaxCode::getChildNum)
+ .like(StrUtil.isNotBlank(queryDTO.getMc()),TaxCode::getMc,queryDTO.getMc());
+ if (ObjUtil.isNotNull(queryDTO.getChildNum())){
+ if (queryDTO.getChildNum()==0){
+ wrapper.eq("(select count(1) from tax_code t1 where t1.parent_bm = t.bm)",0);
+ }else {
+ wrapper.gt("(select count(1) from tax_code t1 where t1.parent_bm = t.bm)",0);
+ }
+ }
+// List<TaxCode> taxCodeList = baseMapper.selectPage(wrapper);
+// List<TaxCode> treeList=buildTreeByStream(taxCodeList, "1");
+ return baseMapper.selectPage(page,wrapper);
+ }
+
+ /**
+ * 浣跨敤 Stream 閫掑綊鏋勫缓鏍�
+ * @param allNodes 鎵�鏈夎妭鐐�
+ * @param parentId 褰撳墠灞傜骇鐨勭埗ID
+ * @return 鏍戝舰鍒楄〃
+ */
+ public static List<TaxCode> buildTreeByStream(List<TaxCode> allNodes, String parentId) {
+ return allNodes.stream()
+ .filter(node -> {
+ // 杩囨护鍑虹埗缂栫爜绛変簬褰撳墠 parentId 鐨勮妭鐐�
+ if (parentId == null) {
+ return node.getParentBm() == null || node.getParentBm().isEmpty();
+ }
+ return parentId.equals(node.getParentBm());
+ })
+ .peek(node -> {
+ // 閫掑綊璁剧疆瀛愯妭鐐�
+ node.setChildren(buildTreeByStream(allNodes, node.getBm()));
+ })
+ .collect(Collectors.toList());
+ }
+
+ public <T> Page<T> convert(List<T> dataList, Page<T> pageParam) {
+ if (dataList == null) {
+ dataList = java.util.Collections.emptyList();
+ }
+
+ long total = dataList.size();
+ long current = pageParam.getCurrent();
+ long size = pageParam.getSize();
+
+ // 璁$畻鎬婚〉鏁�
+ long pages = (total + size - 1) / size;
+
+ // 璁$畻鎴彇鑼冨洿
+ long startIndex = (current - 1) * size;
+ long endIndex = Math.min(startIndex + size, total);
+
+ List<T> records;
+ if (startIndex >= total) {
+ records = java.util.Collections.emptyList();
+ } else {
+ records = dataList.subList((int) startIndex, (int) endIndex);
+ }
+
+ // 璁剧疆缁撴灉
+ pageParam.setRecords(records);
+ pageParam.setTotal(total);
+ pageParam.setPages(pages);
+
+ return pageParam;
+ }
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/ContractOutBoundMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/ContractOutBoundMapper.xml
new file mode 100644
index 0000000..ddb7f2b
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/mapper/ContractOutBoundMapper.xml
@@ -0,0 +1,25 @@
+<?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.ContractOutBoundMapper">
+
+ <resultMap id="contractOutBoundMap" type="com.by4cloud.platformx.business.entity.ContractOutBound">
+ <id property="id" column="id"/>
+ <result property="compId" column="comp_id"/>
+ <result property="busGuestId" column="bus_guest_id"/>
+ <result property="busGuestName" column="bus_guest_name"/>
+ <result property="contractId" column="contract_id"/>
+ <result property="contractName" column="contract_name"/>
+ <result property="outBoundAttNames" column="out_bound_att_names"/>
+ <result property="outBoundAttPaths" column="out_bound_att_paths"/>
+ <result property="outBoundNum" column="out_bound_num"/>
+ <result property="outBoundTime" column="out_bound_time"/>
+ <result property="subjectMatterCode" column="subject_matter_code"/>
+ <result property="subjectMatterName" column="subject_matter_name"/>
+ <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
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/TaxCodeMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/TaxCodeMapper.xml
new file mode 100644
index 0000000..eed0baf
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/mapper/TaxCodeMapper.xml
@@ -0,0 +1,30 @@
+<?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.TaxCodeMapper">
+
+ <resultMap id="taxCodeMap" type="com.by4cloud.platformx.business.entity.TaxCode">
+ <id property="id" column="id"/>
+ <result property="compId" column="comp_id"/>
+ <result property="bm" column="bm"/>
+ <result property="gjz" column="gjz"/>
+ <result property="gmtjdm" column="gmtjdm"/>
+ <result property="mc" column="mc"/>
+ <result property="parentBm" column="parent_bm"/>
+ <result property="prov" column="prov"/>
+ <result property="sl" column="sl"/>
+ <result property="sm" column="sm"/>
+ <result property="sphwjc" column="sphwjc"/>
+ <result property="xfsgl" column="xfsgl"/>
+ <result property="xfstsgldm" column="xfstsgldm"/>
+ <result property="xfszcyj" column="xfszcyj"/>
+ <result property="zzstsgl" column="zzstsgl"/>
+ <result property="zzstsgldm" column="zzstsgldm"/>
+ <result property="zzstsyj" column="zzstsyj"/>
+ <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