From 0ee46d33cc339f3fd17593e6bfe2f033afe6019a Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期三, 17 六月 2026 15:14:13 +0800
Subject: [PATCH] feat:合同新增时显示供应属性 出库新增根据合同出库 资金账目新增时间条件检索 新增延期出货菜单
---
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutBoundAddDTO.java | 5
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractSubjectMatterService.java | 2
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractDelayOutMapper.java | 6
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractController.java | 8
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractDelayOutService.java | 11
platformx-business-finance-biz/src/main/resources/mapper/ContractDelayOutMapper.xml | 37 +++
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/OutSubjectMatterAddDTO.java | 2
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/OutBoundController.java | 12 +
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDelayOutPageVo.java | 38 +++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/PaymentConfirmController.java | 14
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractSubjectMatterServiceImpl.java | 9
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractSubjectMatterController.java | 10
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractDelayOutServiceImpl.java | 22 +
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractDelayOutController.java | 123 +++++++++++
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/PaymentConfirmQueryDTO.java | 28 ++
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractSubjectMatter.java | 8
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/OutBoundService.java | 2
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BipTaxEconomicMatters.java | 24 ++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java | 278 ++++++++++++++++++++++++
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractDelayOutQueryDTO.java | 14 +
20 files changed, 625 insertions(+), 28 deletions(-)
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractDelayOutQueryDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractDelayOutQueryDTO.java
new file mode 100644
index 0000000..e7f7e22
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractDelayOutQueryDTO.java
@@ -0,0 +1,14 @@
+package com.by4cloud.platformx.business.dto;
+
+import lombok.Data;
+
+@Data
+public class ContractDelayOutQueryDTO {
+
+ private String partyA;
+
+ private String partyB;
+
+ private String contractName;
+
+}
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 e504be2..9a19632 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
@@ -17,8 +17,11 @@
@Schema(description = "瀹㈠晢ID")
private Long busGuestId;
+ @Schema(description = "鍚堝悓缂栧彿")
+ private String contractNo;
+
@Schema(description = "鍑哄簱鏃堕棿")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd")
private Date outBoundTime;
@Schema(description = "鍗曟嵁鍚嶇О")
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 b50a298..60c0b29 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
@@ -8,6 +8,8 @@
@Data
public class OutSubjectMatterAddDTO {
+ private Long id;
+
@Schema(description = "鏍囩殑鐗╁悕绉�")
private String subjectMatterName;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/PaymentConfirmQueryDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/PaymentConfirmQueryDTO.java
new file mode 100644
index 0000000..d901172
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/PaymentConfirmQueryDTO.java
@@ -0,0 +1,28 @@
+package com.by4cloud.platformx.business.dto;
+
+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;
+
+import java.util.Date;
+
+@Data
+public class PaymentConfirmQueryDTO {
+
+ @Schema(description = "瀹㈠晢鍚嶇О")
+ private String busGuestName;
+
+ @Schema(description = "涓氬姟绫诲瀷")
+ private String businessType;
+
+ @Schema(description = "鍚堝悓鍚嶇О")
+ private String contractName;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date startTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endTime;
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BipTaxEconomicMatters.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BipTaxEconomicMatters.java
new file mode 100644
index 0000000..fed9a33
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BipTaxEconomicMatters.java
@@ -0,0 +1,24 @@
+package com.by4cloud.platformx.business.entity;
+
+import com.by4cloud.platformx.common.data.mybatis.BaseModel;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import lombok.Data;
+import org.hibernate.annotations.Comment;
+import org.hibernate.annotations.Table;
+
+@Data
+@Entity
+@jakarta.persistence.Table(name = "bip_tax_economic_matters")
+@Table(appliesTo = "bip_tax_economic_matters")
+@Comment("bip缁忔祹浜嬮」鍏宠仈绋庢敹鍒嗙被")
+public class BipTaxEconomicMatters extends BaseModel<BipTaxEconomicMatters> {
+
+ @Comment("绋庢敹鍒嗙被缂栫爜")
+ @Column(name="taxCode",length = 64)
+ private String taxCode;
+
+ @Comment("缁忔祹浜嬮」")
+ @Column(name="economicMatters",length = 64)
+ private String economicMatters;
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractSubjectMatter.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractSubjectMatter.java
index 472b9e5..b6007cf 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractSubjectMatter.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ContractSubjectMatter.java
@@ -106,11 +106,11 @@
@Column(columnDefinition = "date comment '璁″垝浜や粯鏃ユ湡'")
private Date plannedDeliveryDate;
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd")
@Schema(description = "瀹為檯浜や粯鏃ユ湡")
- @Column(columnDefinition = "VARCHAR(64) comment '瀹為檯浜や粯鏃ユ湡'")
- private String actualDeliveryDate;
+ @Column(columnDefinition = "date comment '瀹為檯浜や粯鏃ユ湡'")
+ private Date actualDeliveryDate;
@Schema(description = "浜や粯鐘舵�侊紙0-鏈氦浠� 1-閮ㄥ垎浜や粯 2-宸蹭氦浠橈級")
@Column(columnDefinition = "tinyint(2) default 0 comment '浜や粯鐘舵��'")
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDelayOutPageVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDelayOutPageVo.java
new file mode 100644
index 0000000..d7708da
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDelayOutPageVo.java
@@ -0,0 +1,38 @@
+package com.by4cloud.platformx.business.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ContractDelayOutPageVo {
+
+ @Schema(description = "鍚堝悓鍚嶇О")
+ private String contractName;
+
+ @Schema(description = "鍚堝悓鍚嶇О鐢叉柟")
+ private String partyA;
+
+ @Schema(description = "鍚堝悓鍚嶇О涔欐柟")
+ private String partyB;
+
+ @Schema(description = "寤舵湡澶╂暟")
+ private Integer delayDay;
+
+ @Schema(description = "寤舵湡鍗曟嵁鍚嶇О")
+ private String delayAttNames;
+
+ @Schema(description = "寤舵湡鍗曟嵁璺緞")
+ private String delayAttPaths;
+
+ @Schema(description = "鎻愪氦璐﹀彿")
+ private String applyName;
+
+ @Schema(description = "鎻愪氦鏃堕棿")
+ private Date applyTime;
+
+ @Schema(description = "鐘舵��")
+ private String delayStatus;
+
+}
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 64f1152..f3447f0 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
@@ -133,6 +133,14 @@
}
/**
+ * list 涓嬫媺
+ */
+ @GetMapping("/list")
+ public R list() {
+ return R.ok(contractService.list(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractStatus,2).orderByDesc(Contract::getCreateTime)));
+ }
+
+ /**
* 鍚姩瀹℃牳娴佺▼
* @param id id
* @return R
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractDelayOutController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractDelayOutController.java
new file mode 100644
index 0000000..9f16368
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ContractDelayOutController.java
@@ -0,0 +1,123 @@
+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.business.dto.ContractDelayOutQueryDTO;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.business.entity.ContractDelayOut;
+import com.by4cloud.platformx.business.service.ContractDelayOutService;
+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-06-17 08:44:56
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/contractDelayOut" )
+@Tag(description = "contractDelayOut" , name = "寤舵湡鍑鸿揣绠$悊" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class ContractDelayOutController {
+
+ private final ContractDelayOutService contractDelayOutService;
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param page 鍒嗛〉瀵硅薄
+ * @param queryDTO 寤舵湡鍑鸿揣
+ * @return
+ */
+ @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+ @GetMapping("/page" )
+ @PreAuthorize("@pms.hasPermission('business_contractDelayOut_view')" )
+ public R getContractDelayOutPage(@ParameterObject Page page, @ParameterObject ContractDelayOutQueryDTO queryDTO) {
+ LambdaQueryWrapper<ContractDelayOut> wrapper = Wrappers.lambdaQuery();
+// wrapper.eq(StrUtil.isNotBlank(contractDelayOut.getDelayAttNames()),ContractDelayOut::getDelayAttNames,contractDelayOut.getDelayAttNames());
+// wrapper.eq(StrUtil.isNotBlank(contractDelayOut.getDelayStatus()),ContractDelayOut::getDelayStatus,contractDelayOut.getDelayStatus());
+ return R.ok(contractDelayOutService.pageNew(page, queryDTO));
+ }
+
+
+ /**
+ * 閫氳繃id鏌ヨ寤舵湡鍑鸿揣
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+ @GetMapping("/{id}" )
+ @PreAuthorize("@pms.hasPermission('business_contractDelayOut_view')" )
+ public R getById(@PathVariable("id" ) Long id) {
+ return R.ok(contractDelayOutService.getById(id));
+ }
+
+ /**
+ * 鏂板寤舵湡鍑鸿揣
+ * @param contractDelayOut 寤舵湡鍑鸿揣
+ * @return R
+ */
+ @Operation(summary = "鏂板寤舵湡鍑鸿揣" , description = "鏂板寤舵湡鍑鸿揣" )
+ @SysLog("鏂板寤舵湡鍑鸿揣" )
+ @PostMapping
+ @PreAuthorize("@pms.hasPermission('business_contractDelayOut_add')" )
+ public R save(@RequestBody ContractDelayOut contractDelayOut) {
+ return R.ok(contractDelayOutService.save(contractDelayOut));
+ }
+
+ /**
+ * 淇敼寤舵湡鍑鸿揣
+ * @param contractDelayOut 寤舵湡鍑鸿揣
+ * @return R
+ */
+ @Operation(summary = "淇敼寤舵湡鍑鸿揣" , description = "淇敼寤舵湡鍑鸿揣" )
+ @SysLog("淇敼寤舵湡鍑鸿揣" )
+ @PutMapping
+ @PreAuthorize("@pms.hasPermission('business_contractDelayOut_edit')" )
+ public R updateById(@RequestBody ContractDelayOut contractDelayOut) {
+ return R.ok(contractDelayOutService.updateById(contractDelayOut));
+ }
+
+ /**
+ * 閫氳繃id鍒犻櫎寤舵湡鍑鸿揣
+ * @param ids id鍒楄〃
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍒犻櫎寤舵湡鍑鸿揣" , description = "閫氳繃id鍒犻櫎寤舵湡鍑鸿揣" )
+ @SysLog("閫氳繃id鍒犻櫎寤舵湡鍑鸿揣" )
+ @DeleteMapping
+ @PreAuthorize("@pms.hasPermission('business_contractDelayOut_del')" )
+ public R removeById(@RequestBody Long[] ids) {
+ return R.ok(contractDelayOutService.removeBatchByIds(CollUtil.toList(ids)));
+ }
+
+
+ /**
+ * 瀵煎嚭excel 琛ㄦ牸
+ * @param contractDelayOut 鏌ヨ鏉′欢
+ * @param ids 瀵煎嚭鎸囧畾ID
+ * @return excel 鏂囦欢娴�
+ */
+ @ResponseExcel
+ @GetMapping("/export")
+ @PreAuthorize("@pms.hasPermission('business_contractDelayOut_export')" )
+ public List<ContractDelayOut> export(ContractDelayOut contractDelayOut,Long[] ids) {
+ return contractDelayOutService.list(Wrappers.lambdaQuery(contractDelayOut).in(ArrayUtil.isNotEmpty(ids), ContractDelayOut::getId, ids));
+ }
+}
\ No newline at end of file
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 29ef60c..3652f12 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
@@ -126,4 +126,14 @@
public R selectSubjectMatterProcess(@PathVariable("id" ) Long id) {
return contractSubjectMatterService.selectSubjectMatterProcess(id);
}
+
+ /**
+ * 閫氳繃鍚堝悓id鏌ヨ鏍囩殑鐗╁饱绾﹁繘搴�
+ * @param contractId id
+ * @return R
+ */
+ @GetMapping("/selectSubjectMatter/{contractId}" )
+ public R selectSubjectMatter(@PathVariable("contractId" ) Long contractId) {
+ return contractSubjectMatterService.selectSubjectMatter(contractId);
+ }
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/OutBoundController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/OutBoundController.java
index 16f9a4f..0e2103b 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/OutBoundController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/OutBoundController.java
@@ -82,6 +82,18 @@
return outBoundService.add(addDTO);
}
+ /**
+ * 鏂板鍚堝悓鍑哄簱璁板綍
+ * @param addDTO 鍚堝悓鍑哄簱璁板綍
+ * @return R
+ */
+ @Operation(summary = "鏂板鍚堝悓鍑哄簱璁板綍" , description = "鏂板鍚堝悓鍑哄簱璁板綍" )
+ @SysLog("鏂板鍚堝悓鍑哄簱璁板綍" )
+ @PostMapping("/addContractOut")
+ public R addContractOut(@RequestBody OutBoundAddDTO addDTO) {
+ return outBoundService.addContractOut(addDTO);
+ }
+
/**
* 淇敼EPR鍑哄簱璁板綍
* @param outBound EPR鍑哄簱璁板綍
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/PaymentConfirmController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/PaymentConfirmController.java
index 41db2a9..63c0af2 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/PaymentConfirmController.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/PaymentConfirmController.java
@@ -1,5 +1,6 @@
package com.by4cloud.platformx.business.controller;
+import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
@@ -7,6 +8,7 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.by4cloud.platformx.business.dto.PaymentConfirmAddDTO;
+import com.by4cloud.platformx.business.dto.PaymentConfirmQueryDTO;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.log.annotation.SysLog;
import com.by4cloud.platformx.business.entity.PaymentConfirm;
@@ -42,17 +44,19 @@
/**
* 鍒嗛〉鏌ヨ
* @param page 鍒嗛〉瀵硅薄
- * @param paymentConfirm 鏀舵纭
+ * @param queryDTO 鏀舵纭
* @return
*/
@Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
@GetMapping("/page" )
@PreAuthorize("@pms.hasPermission('business_paymentConfirm_view')" )
- public R getPaymentConfirmPage(@ParameterObject Page page, @ParameterObject PaymentConfirm paymentConfirm) {
+ public R getPaymentConfirmPage(@ParameterObject Page page, @ParameterObject PaymentConfirmQueryDTO queryDTO) {
LambdaQueryWrapper<PaymentConfirm> wrapper = Wrappers.lambdaQuery();
- wrapper.like(StrUtil.isNotBlank(paymentConfirm.getBusGuestName()),PaymentConfirm::getBusGuestName,paymentConfirm.getBusGuestName());
- wrapper.like(StrUtil.isNotBlank(paymentConfirm.getContractName()),PaymentConfirm::getContractName,paymentConfirm.getContractName());
- wrapper.like(StrUtil.isNotBlank(paymentConfirm.getBusinessType()),PaymentConfirm::getBusinessType,paymentConfirm.getBusinessType());
+ wrapper.like(StrUtil.isNotBlank(queryDTO.getBusGuestName()),PaymentConfirm::getBusGuestName,queryDTO.getBusGuestName());
+ wrapper.like(StrUtil.isNotBlank(queryDTO.getContractName()),PaymentConfirm::getContractName,queryDTO.getContractName());
+ wrapper.like(StrUtil.isNotBlank(queryDTO.getBusinessType()),PaymentConfirm::getBusinessType,queryDTO.getBusinessType());
+ wrapper.ge(ObjUtil.isNotNull(queryDTO.getStartTime()),PaymentConfirm::getConfirmTime,queryDTO.getStartTime());
+ wrapper.le(ObjUtil.isNotNull(queryDTO.getEndTime()),PaymentConfirm::getConfirmTime,queryDTO.getEndTime());
wrapper.orderByDesc(PaymentConfirm::getCreateTime);
return R.ok(paymentConfirmService.pageByScope(page, wrapper));
}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractDelayOutMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractDelayOutMapper.java
index 1698d9e..55eef09 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractDelayOutMapper.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ContractDelayOutMapper.java
@@ -1,11 +1,17 @@
package com.by4cloud.platformx.business.mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.business.dto.ContractDelayOutQueryDTO;
import com.by4cloud.platformx.business.entity.ContractDelayOut;
+import com.by4cloud.platformx.business.vo.ContractDelayOutPageVo;
+import com.by4cloud.platformx.common.data.datascope.DataScope;
import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
@Mapper
public interface ContractDelayOutMapper extends PlatformxBaseMapper<ContractDelayOut> {
+ Page<ContractDelayOutPageVo> pageNew(Page page, @Param("queryDTO") ContractDelayOutQueryDTO queryDTO, DataScope comp_id);
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractDelayOutService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractDelayOutService.java
index 6d6dce6..b56fd2c 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractDelayOutService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ContractDelayOutService.java
@@ -1,7 +1,14 @@
package com.by4cloud.platformx.business.service;
-public interface ContractDelayOutService {
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.business.dto.ContractDelayOutQueryDTO;
+import com.by4cloud.platformx.business.entity.ContractDelayOut;
+import com.by4cloud.platformx.common.data.mybatis.IIService;
+
+public interface ContractDelayOutService extends IIService<ContractDelayOut> {
void approvalPass(Long contractId);
void refuseApproval(Long contractId);
-}
+
+ Page pageNew(Page page, ContractDelayOutQueryDTO queryDTO);
+}
\ No newline at end of file
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 09a4c79..5c37dfb 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
@@ -7,4 +7,6 @@
public interface ContractSubjectMatterService extends IService<ContractSubjectMatter> {
R selectSubjectMatterProcess(Long id);
+
+ R selectSubjectMatter(Long contractId);
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/OutBoundService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/OutBoundService.java
index b1a795b..79ede4c 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/OutBoundService.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/OutBoundService.java
@@ -8,4 +8,6 @@
public interface OutBoundService extends IIService<OutBound> {
R add(OutBoundAddDTO addDTO);
+
+ R addContractOut(OutBoundAddDTO addDTO);
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractDelayOutServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractDelayOutServiceImpl.java
index 167d897..f5e3cce 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractDelayOutServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractDelayOutServiceImpl.java
@@ -1,23 +1,28 @@
package com.by4cloud.platformx.business.service.impl;
-
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
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.business.dto.ContractDelayOutQueryDTO;
import com.by4cloud.platformx.business.entity.Contract;
import com.by4cloud.platformx.business.entity.ContractDelayOut;
import com.by4cloud.platformx.business.mapper.ContractDelayOutMapper;
import com.by4cloud.platformx.business.mapper.ContractMapper;
import com.by4cloud.platformx.business.service.ContractDelayOutService;
+import com.by4cloud.platformx.common.data.datascope.DataScope;
import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
-
-@Slf4j
+/**
+ * 寤舵湡鍑鸿揣
+ *
+ * @author syt
+ * @date 2026-06-17 08:44:56
+ */
@Service
@RequiredArgsConstructor
-public class ContractDelayOutServiceImpl extends ServiceImpl<ContractDelayOutMapper, ContractDelayOut> implements ContractDelayOutService {
+public class ContractDelayOutServiceImpl extends ServiceImpl<ContractDelayOutMapper, ContractDelayOut> implements ContractDelayOutService {
private final ContractMapper contractMapper;
@@ -51,4 +56,9 @@
delayOut.setDelayStatus("2");
baseMapper.updateById(delayOut);
}
-}
+
+ @Override
+ public Page pageNew(Page page, ContractDelayOutQueryDTO queryDTO) {
+ return baseMapper.pageNew(page,queryDTO, DataScope.of("comp_id"));
+ }
+}
\ No newline at end of file
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 7f133c5..05de0eb 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,11 +1,14 @@
package com.by4cloud.platformx.business.service.impl;
+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.business.entity.ContractSubjectMatter;
import com.by4cloud.platformx.business.mapper.ContractSubjectMatterMapper;
import com.by4cloud.platformx.business.service.ContractSubjectMatterService;
import com.by4cloud.platformx.business.vo.ContractSubjectMatterVo;
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.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.stereotype.Service;
@@ -29,4 +32,10 @@
List<ContractSubjectMatterVo> matterVoList = baseMapper.selectJoinList(ContractSubjectMatterVo.class,wrapper);
return R.ok(matterVoList);
}
+
+ @Override
+ public R selectSubjectMatter(Long contractId) {
+ return R.ok(baseMapper.selectListByScope(Wrappers.<ContractSubjectMatter>lambdaQuery().eq(ContractSubjectMatter::getContractId,contractId)
+ .orderByAsc(ContractSubjectMatter::getCreateTime), DataScope.of("comp_id")));
+ }
}
\ 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 8782f83..79dd3bc 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
@@ -53,7 +53,7 @@
.in(ContractSubjectMatter::getMaterialCode, addDTO.getSubjectMatterList().stream().map(item -> item.getSubjectMatterCode()).collect(Collectors.toList()))
.exists(Contract.class, contractQuery ->
contractQuery.select(ContractSubjectMatter::getId)
- .eq(Contract::getContractStatus,2)
+ .eq(Contract::getContractStatus, 2)
.eq(Contract::getId, ContractSubjectMatter::getContractId)
.eq(StrUtil.isNotBlank(addDTO.getBusGuestName()), Contract::getPartyA, addDTO.getBusGuestName())
.eq(ObjUtil.isNotNull(addDTO.getBusGuestId()), Contract::getPartyAId, addDTO.getBusGuestId())
@@ -98,7 +98,7 @@
BigDecimal currentOut = subjectMatter.getRemainingQuantity();
subjectMatter.setDeliveredQuantity(subjectMatter.getQuantity());
subjectMatter.setRemainingQuantity(new BigDecimal("0"));
- subjectMatter.setActualDeliveryDate(DateUtil.today());
+ subjectMatter.setActualDeliveryDate(addDTO.getOutBoundTime());
subjectMatter.setDeliveryStatus(2);
subjectMatter.setLastDeliveredQuantity(currentOut);
contractSubjectMatterMapper.updateById(subjectMatter);
@@ -109,7 +109,7 @@
BigDecimal currentOut = remainNum.add(subjectMatter.getRemainingQuantity());
subjectMatter.setDeliveredQuantity(subjectMatter.getQuantity().add(remainNum));
subjectMatter.setRemainingQuantity(subjectMatter.getRemainingQuantity().subtract(currentOut));
- subjectMatter.setActualDeliveryDate(DateUtil.today());
+ subjectMatter.setActualDeliveryDate(addDTO.getOutBoundTime());
subjectMatter.setDeliveryStatus(1);
subjectMatter.setLastDeliveredQuantity(currentOut);
contractSubjectMatterMapper.updateById(subjectMatter);
@@ -125,7 +125,7 @@
if (remainNum.compareTo(new BigDecimal("0")) > 0) {
subjectMatter.setDeliveredQuantity(subjectMatter.getQuantity());
subjectMatter.setRemainingQuantity(new BigDecimal("0"));
- subjectMatter.setActualDeliveryDate(DateUtil.today());
+ subjectMatter.setActualDeliveryDate(addDTO.getOutBoundTime());
subjectMatter.setDeliveryStatus(2);
subjectMatter.setLastDeliveredQuantity(subjectMatter.getQuantity());
contractSubjectMatterMapper.updateById(subjectMatter);
@@ -136,7 +136,7 @@
BigDecimal currentOut = remainNum.add(subjectMatter.getQuantity());
subjectMatter.setDeliveredQuantity(subjectMatter.getQuantity().add(remainNum));
subjectMatter.setRemainingQuantity(remainNum.multiply(new BigDecimal("-1")));
- subjectMatter.setActualDeliveryDate(DateUtil.today());
+ subjectMatter.setActualDeliveryDate(addDTO.getOutBoundTime());
subjectMatter.setDeliveryStatus(1);
subjectMatter.setLastDeliveredQuantity(currentOut);
contractSubjectMatterMapper.updateById(subjectMatter);
@@ -257,9 +257,9 @@
//鏇存柊褰撳墠闃舵瀹為檯鏀舵 鍜� 鏀舵鐘舵��
schedule.setActualAmount(inConfirm.getTransationAmount());
schedule.setPaymentStatus(2);
- if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) > 0){
+ if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) > 0) {
inConfirm.setAdvanceAmount(inConfirm.getTotalAmount());
- }else if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) < 0) {
+ } else if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) < 0) {
inConfirm.setReceivableAmount(inConfirm.getTotalAmount().multiply(new BigDecimal("-1")));
schedule.setActualAmount(paymentConfirm.getTotalAmount().subtract(currentInSum));
schedule.setPaymentStatus(1);
@@ -388,8 +388,8 @@
contractOutBound.setInvoiceStatus("0");
contractOutBound.setInvoiceNum(new BigDecimal("0"));
contractOutBoundMapper.insert(contractOutBound);
- if (StrUtil.isEmpty(contract.getContractCategory())){
- if (DateUtil.compare(addDTO.getOutBoundTime(),contract.getExpirationDate())>0){
+ if (StrUtil.isEmpty(contract.getContractCategory())) {
+ if (DateUtil.compare(addDTO.getOutBoundTime(), contract.getExpirationDate()) > 0) {
saveOverdueOutBound(contract, addDTO, subjectMatter);
}
}
@@ -406,7 +406,265 @@
overdue.setMaterialCode(subjectMatter.getMaterialCode());
overdue.setOverdueNum(subjectMatter.getLastDeliveredQuantity());
overdue.setTotalAmount(subjectMatter.getUnitPrice().multiply(subjectMatter.getLastDeliveredQuantity()));
- overdue.setOverdueDuration(new BigDecimal(DateUtil.betweenDay(addDTO.getOutBoundTime(),contract.getExpirationDate(),true)));
+ overdue.setOverdueDuration(new BigDecimal(DateUtil.betweenDay(addDTO.getOutBoundTime(), contract.getExpirationDate(), true)));
deliveryOverdueMapper.insert(overdue);
}
+
+ @Override
+ public R addContractOut(OutBoundAddDTO addDTO) {
+ if (ArrayUtil.isEmpty(addDTO.getSubjectMatterList().toArray())) {
+ return R.failed("鍑哄簱鏍囩殑鐗╀笉鑳戒负绌�");
+ }
+ Contract contract = contractMapper.selectOne(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, addDTO.getContractNo()).eq(Contract::getContractStatus, 2)
+ .last("limit 1"));
+ if (ObjUtil.isNull(contract)) {
+ return R.failed("鍚堝悓淇℃伅鏌ヨ澶辫触");
+ }
+ //鍑哄簱鎵规
+ String batchNumber = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_MS_PATTERN);
+
+ addDTO.getSubjectMatterList().stream().forEach(outSubjectMatterAddDTO -> {
+ ContractSubjectMatter subjectMatter = contractSubjectMatterMapper.selectById(outSubjectMatterAddDTO.getId());
+ subjectMatter.setLastDeliveredQuantity(outSubjectMatterAddDTO.getOutBoundNum());
+ if (subjectMatter.getDeliveryStatus() == 0) {
+ subjectMatter.setDeliveredQuantity(outSubjectMatterAddDTO.getOutBoundNum());
+ subjectMatter.setRemainingQuantity(subjectMatter.getQuantity().subtract(outSubjectMatterAddDTO.getOutBoundNum()));
+ }
+ if (subjectMatter.getDeliveryStatus() == 1) {
+ subjectMatter.setDeliveredQuantity(subjectMatter.getDeliveredQuantity().add(outSubjectMatterAddDTO.getOutBoundNum()));
+ subjectMatter.setRemainingQuantity(subjectMatter.getRemainingQuantity().subtract(outSubjectMatterAddDTO.getOutBoundNum()));
+ }
+ subjectMatter.setDeliveryStatus(1);
+ if (subjectMatter.getRemainingQuantity().compareTo(new BigDecimal("0")) == 0) {
+ subjectMatter.setDeliveryStatus(2);
+ }
+ subjectMatter.setActualDeliveryDate(addDTO.getOutBoundTime());
+ contractSubjectMatterMapper.updateById(subjectMatter);
+ //
+ OutBound outBound = new OutBound();
+ outBound.setBatchNumber(batchNumber);
+ outBound.setOutBoundNum(outSubjectMatterAddDTO.getOutBoundNum());
+ outBound.setOutBoundAttNames(addDTO.getOutBoundAttNames());
+ outBound.setOutBoundAttPaths(addDTO.getOutBoundAttPaths());
+ outBound.setBusGuestName(contract.getPartyA());
+ outBound.setBusGuestId(contract.getPartyAId());
+ outBound.setOutBoundTime(addDTO.getOutBoundTime());
+ outBound.setSubjectMatterCode(outSubjectMatterAddDTO.getSubjectMatterCode());
+ outBound.setSubjectMatterName(outSubjectMatterAddDTO.getSubjectMatterName());
+ baseMapper.insert(outBound);
+ //
+ saveContractOutBound(contract, addDTO, subjectMatter, outBound.getId());
+ });
+ //褰撳墠鍑哄簱鍚堝悓鍑哄簱鏍囩殑鐗�
+ List<ContractSubjectMatter> contractSubjectMatterList = contractSubjectMatterMapper.selectList(Wrappers.<ContractSubjectMatter>lambdaQuery()
+ .eq(ContractSubjectMatter::getContractId, contract.getId()).ne(ContractSubjectMatter::getDeliveryStatus, 0));
+ //鏌ヨ鍚堝悓鏄惁鏈夊嚭搴撻樁娈�
+ ContractPaymentSchedule schedule = scheduleMapper.selectOne(Wrappers.<ContractPaymentSchedule>lambdaQuery().eq(ContractPaymentSchedule::getContractId, contract.getId())
+ .eq(ContractPaymentSchedule::getStageName, "鍙戣揣鍓�"));
+ //瀛樺湪鍑哄簱闃舵
+ if (ObjUtil.isNotNull(schedule)) {
+ //褰撳墠鍑哄簱閲戦
+ BigDecimal outPirce = contractSubjectMatterList.stream()
+ .map(item -> (item.getDeliveryStatus() == 1 ? item.getDeliveredQuantity().multiply(item.getUnitPrice()) : item.getQuantity().multiply(item.getUnitPrice())))
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ //鍑哄簱鏄惁瀹屾垚
+ if (outPirce.compareTo(contract.getAmount()) < 0) {
+ contract.setBillingStatus("1");
+ contractMapper.updateById(contract);
+ }
+ if (outPirce.compareTo(contract.getAmount()) == 0) {
+ contract.setBillingStatus("2");
+ contractMapper.updateById(contract);
+ }
+ //璁$畻鍙戣揣鍓嶅簲鏀舵洿鏂拌祫閲戞槑缁�
+ PaymentConfirm paymentConfirm = new PaymentConfirm();
+ paymentConfirm.setBusinessType("鍙戣揣鍓嶅簲鏀�");
+ paymentConfirm.setBusGuestId(contract.getPartyAId());
+ paymentConfirm.setBusGuestName(contract.getPartyA());
+ paymentConfirm.setContractId(contract.getId());
+ paymentConfirm.setContractName(contract.getContractName());
+ paymentConfirm.setContractNo(contract.getContractNo());
+ paymentConfirm.setScheduleId(schedule.getId());
+ paymentConfirm.setScheduleName(schedule.getStageName());
+ paymentConfirm.setConfirmTime(addDTO.getOutBoundTime());
+ //鎸夊嚭搴撹祫閲戞瘮渚� 璁$畻鍙戣揣鍓嶅簲鏀�
+ paymentConfirm.setTransationAmount(outPirce.divide(contract.getAmount(), 10, RoundingMode.HALF_UP).multiply(schedule.getPlannedAmount()));
+ paymentConfirm.setReceivableAmount(paymentConfirm.getTransationAmount());
+
+ //鏈�杩戝簲鏀�
+ PaymentConfirm lastConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId())
+ .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
+
+ if (ObjUtil.isNotNull(lastConfirm)) {
+ //宸插瓨鍦ㄥ彂璐у簲鏀�
+ if (StrUtil.equals(lastConfirm.getBusinessType(), paymentConfirm.getBusinessType())) {
+
+ //鏌ヨ涔嬪墠鎵�鏈夊彂璐у墠搴旀敹
+ List<PaymentConfirm> fhConfirmList = paymentConfirmMapper.selectList(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId())
+ .eq(PaymentConfirm::getScheduleId, schedule.getId()).orderByDesc(PaymentConfirm::getCreateTime));
+ BigDecimal fhTotalAmount = fhConfirmList.stream().map(item -> item.getTransationAmount()).reduce(BigDecimal.ZERO, BigDecimal::add);
+ //鏈鍙戣揣鍓嶅簲鏀� 鍑哄簱鎬婚 - 鎵�鏈夊彂璐у墠搴旀敹
+ paymentConfirm.setTransationAmount(paymentConfirm.getTransationAmount().subtract(fhTotalAmount));
+ paymentConfirm.setReceivableAmount(paymentConfirm.getTransationAmount());
+ paymentConfirm.setTotalAmount(lastConfirm.getTotalAmount().subtract(paymentConfirm.getTransationAmount()));
+ if (schedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) {
+ paymentConfirmMapper.insert(paymentConfirm);
+ }
+ } else {
+ //涓嶅瓨鍦ㄥ彂璐у簲鏀� 鍑哄簱鎬婚
+ paymentConfirm.setTotalAmount(lastConfirm.getTotalAmount().subtract(paymentConfirm.getTransationAmount()));
+ if (schedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) {
+ paymentConfirmMapper.insert(paymentConfirm);
+ }
+ }
+ } else {
+ //鏃犱箣鍓嶉樁娈靛簲鏀�
+ paymentConfirm.setTotalAmount(paymentConfirm.getTransationAmount().multiply(new BigDecimal("-1")));
+ if (schedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) {
+ paymentConfirmMapper.insert(paymentConfirm);
+ //瀹㈡埛浠樻瀹屾垚鍚堝悓
+ List<Contract> customerCompleteContractList = contractMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getPartyAId, contract.getPartyAId())
+ .eq(Contract::getPartyBId, SecurityUtils.getUser().getCompId()).apply(" amount = paid_amount"));
+ if (ArrayUtil.isNotEmpty(customerCompleteContractList)) {
+ List<BigDecimal> outAmountList = new ArrayList<>();
+ for (Contract completeContract : customerCompleteContractList
+ ) {
+ PaymentConfirm contractLastConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, completeContract.getId())
+ .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
+ //鏌ヨ瀹㈡埛浠樻瀹屾垚鍚堝悓涓渶鍚庢槑缁嗛噾棰� 鏈夐鏀惰浆鍏ュ綋鍓嶅悎鍚�
+ if (contractLastConfirm.getTotalAmount().compareTo(new BigDecimal("0")) > 0) {
+ //鏂板瀹屾垚浠樻鍚堝悓 璧勯噾杞嚭
+ PaymentConfirm outConfirm = BeanUtil.copyProperties(contractLastConfirm, PaymentConfirm.class, "id", "transationAmount",
+ "advanceAmount", "receivableAmount", "overdueAmount", "totalAmount");
+ outConfirm.setBusinessType("璧勯噾杞嚭");
+ outConfirm.setConfirmTime(new Date());
+ outConfirm.setTransationAmount(contractLastConfirm.getTotalAmount());
+ outConfirm.setTotalAmount(new BigDecimal("0"));
+ paymentConfirmMapper.insert(outConfirm);
+ outAmountList.add(outConfirm.getTransationAmount());
+ }
+ }
+ if (ArrayUtil.isNotEmpty(outAmountList.toArray())) {
+ BigDecimal currentInSum = outAmountList.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
+ //鏂板褰撳墠鍚堝悓 璧勯噾杞叆
+ PaymentConfirm inConfirm = BeanUtil.copyProperties(paymentConfirm, PaymentConfirm.class, "id", "transationAmount",
+ "advanceAmount", "receivableAmount", "overdueAmount", "totalAmount");
+ inConfirm.setBusinessType("璧勯噾杞叆");
+ inConfirm.setConfirmTime(new Date());
+ inConfirm.setTransationAmount(currentInSum);
+ inConfirm.setTotalAmount(paymentConfirm.getTotalAmount().add(currentInSum));
+ //鏇存柊褰撳墠闃舵瀹為檯鏀舵 鍜� 鏀舵鐘舵��
+ schedule.setActualAmount(inConfirm.getTransationAmount());
+ schedule.setPaymentStatus(2);
+ if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) > 0) {
+ inConfirm.setAdvanceAmount(inConfirm.getTotalAmount());
+ } else if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) < 0) {
+ inConfirm.setReceivableAmount(inConfirm.getTotalAmount().multiply(new BigDecimal("-1")));
+ schedule.setActualAmount(paymentConfirm.getTotalAmount().subtract(currentInSum));
+ schedule.setPaymentStatus(1);
+ }
+ paymentConfirmMapper.insert(inConfirm);
+ //鏇存柊褰撳墠闃舵瀹為檯鏀舵 鍜� 鏀舵鐘舵��
+ scheduleMapper.updateById(schedule);
+ }
+ }
+ }
+ }
+
+ //鏇存柊鍙戣揣鍓嶆敹娆剧敓鏁堟椂闂�
+ if (ObjUtil.isNull(schedule.getEffectiveDate())) {
+ schedule.setEffectiveEndDate(DateUtil.offsetDay(addDTO.getOutBoundTime(), schedule.getAgreedDays()));
+ //鏌ヨ鏄惁鏈夊悗缁樁娈�
+// List<ContractPaymentSchedule> afterSchedule = scheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery().eq(ContractPaymentSchedule::getContractId, contractId)
+// .gt(ContractPaymentSchedule::getStageOrder, schedule.getStageOrder()));
+// if (ArrayUtil.isEmpty(afterSchedule.toArray())) {
+// schedule.setEffectiveEndDate(contract.getExpirationDate());
+// }
+ scheduleMapper.updateById(schedule);
+ //鏌ヨ鏄惁鏈変箣鍓嶉樁娈�
+// ContractPaymentSchedule beforeSchedule = scheduleMapper.selectOne(Wrappers.<ContractPaymentSchedule>lambdaQuery().eq(ContractPaymentSchedule::getContractId, schedule.getContractId())
+// .lt(ContractPaymentSchedule::getStageOrder, schedule.getStageOrder()).orderByDesc(ContractPaymentSchedule::getCreateTime).last("limit 1"));
+// if (ObjUtil.isNotNull(beforeSchedule)) {
+// beforeSchedule.setEffectiveEndDate(schedule.getEffectiveDate());
+// scheduleMapper.updateById(beforeSchedule);
+// }
+ //鏇存柊灞ョ害
+ ContractPaymentScheduleProcess contractPaymentScheduleProcess = new ContractPaymentScheduleProcess();
+ contractPaymentScheduleProcess.setContractId(schedule.getContractId());
+ contractPaymentScheduleProcess.setContractName(schedule.getContractName());
+ contractPaymentScheduleProcess.setScheduleId(schedule.getId());
+ contractPaymentScheduleProcess.setScheduleName(schedule.getStageName());
+ contractPaymentScheduleProcess.setProcessDate(addDTO.getOutBoundTime());
+ ContractPaymentScheduleProcess lastProcess = scheduleProcessMapper.selectOne(Wrappers.<ContractPaymentScheduleProcess>lambdaQuery().eq(ContractPaymentScheduleProcess::getContractId, schedule.getContractId())
+ .eq(ContractPaymentScheduleProcess::getScheduleId, schedule.getId()).last("limit 1"));
+ if (ObjUtil.isNull(lastProcess)) {
+ scheduleProcessMapper.insert(contractPaymentScheduleProcess);
+ }
+ }
+
+ //鏌ヨ鏄惁鏈夊悗缁樁娈�
+ List<ContractPaymentSchedule> afterSchedule = scheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery()
+ .eq(ContractPaymentSchedule::getContractId, schedule.getContractId())
+ .gt(ContractPaymentSchedule::getStageOrder, schedule.getStageOrder())
+ .orderByAsc(ContractPaymentSchedule::getCreateTime));
+ if (ArrayUtil.isNotEmpty(afterSchedule.toArray()) && afterSchedule.size() == 1) {
+ //鏈�鍚庨樁娈电敓鏁堟椂闂�
+ ContractPaymentSchedule endSchedule = afterSchedule.get(0);
+ if (StrUtil.equals(endSchedule.getStageName(), "璐ㄤ繚閲�")) {
+// endSchedule.setEffectiveEndDate(DateUtil.offsetDay(addDTO.getOutBoundTime(), endSchedule.getAgreedDays()));
+// scheduleMapper.updateById(endSchedule);
+ //褰撳墠闃舵鐢熸晥鏃堕棿
+// schedule.setEffectiveEndDate(DateUtil.offsetDay(addDTO.getOutBoundTime(), schedule.getAgreedDays()));
+// 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()));
+ if (endSchedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) {
+ 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);
+ //褰撳墠涓哄悎鍚屾渶鍚庨樁娈�
+ PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId())
+ .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1"));
+ if (lastNewConfirm.getTotalAmount().compareTo(new BigDecimal("0")) >= 0) {
+ //鏈夐浠樹笖瓒呰繃搴旀敹 鍏抽棴鍚堝悓鐘舵��
+ contract.setContractStatus(3);
+ contractMapper.updateById(contract);
+ }
+ }
+ }
+ return R.ok();
+ }
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/ContractDelayOutMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/ContractDelayOutMapper.xml
index 552f4e1..3edf7d6 100644
--- a/platformx-business-finance-biz/src/main/resources/mapper/ContractDelayOutMapper.xml
+++ b/platformx-business-finance-biz/src/main/resources/mapper/ContractDelayOutMapper.xml
@@ -20,4 +20,41 @@
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
+ <select id="pageNew" resultType="com.by4cloud.platformx.business.vo.ContractDelayOutPageVo">
+ SELECT
+ t.id,
+ t.contract_id,
+ t1.contract_name,
+ t.delay_day,
+ t.delay_att_names,
+ t.delay_att_paths,
+ t.apply_name,
+ t.apply_time,
+ t.delay_status,
+ t.create_by,
+ t.update_by,
+ t.create_time,
+ t.update_time,
+ t.del_flag,
+ t.comp_id,
+ t1.party_a,
+ t1.party_b
+ FROM
+ contract_delay_out t
+ LEFT JOIN contract t1 ON ( t1.id = t.contract_id AND t1.del_flag = '0' )
+ LEFT JOIN business_customer t2 ON ( t2.id = t1.party_a_id AND t2.del_flag = '0' )
+ WHERE
+ t.del_flag = '0'
+ <if test="queryDTO.partyA !=null and queryDTO.partyA !=''">
+ and t1.party_a LIKE CONCAT('%', #{queryDTO.partyA}, '%')
+ </if>
+ <if test="queryDTO.partyB !=null and queryDTO.partyB !=''">
+ and t1.party_b LIKE CONCAT('%', #{queryDTO.partyB}, '%')
+ </if>
+ <if test="queryDTO.contractName !=null and queryDTO.contractName !=''">
+ and t1.contract_name LIKE CONCAT('%', #{queryDTO.contractName}, '%')
+ </if>
+ ORDER BY
+ t.create_time DESC
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1