From d36a5483f0287028bf65cfcd69b88543070e7e98 Mon Sep 17 00:00:00 2001
From: shiyunteng <shiyunteng@example.com>
Date: 星期四, 28 五月 2026 14:44:27 +0800
Subject: [PATCH] feat:新增房屋租赁/水电代缴合同新增功能 新增逾期出库功能 新增水电代缴合同抄表功能
---
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/DeliveryOverdueService.java | 11 +
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/MeterReadRecordServiceImpl.java | 30 ++
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/DeliveryOverduePageVo.java | 46 +++++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/DeliveryOverdueServiceImpl.java | 38 ++++
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/DeliveryOverdueQueryDTO.java | 16 +
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractSubjectMatterAddDTO.java | 9 +
/dev/null | 0
platformx-business-finance-biz/src/main/resources/mapper/DeliveryOverdueMapper.xml | 66 +++++++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/DeliveryOverdueController.java | 120 +++++++++++++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java | 44 ++++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java | 32 +++
platformx-business-finance-biz/src/main/resources/template/ymjjgclht.docx | 0
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/impl/OutBoundServiceImpl.java | 21 ++
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java | 3
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java | 3
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/DeliveryOverdue.java | 64 +++++++
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/DeliveryOverdueMapper.java | 18 ++
18 files changed, 513 insertions(+), 16 deletions(-)
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java
index 4b11d85..a7190d5 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractAddDTO.java
@@ -55,6 +55,9 @@
@Schema(description = "绛剧讲鏃ユ湡")
private Date signDate;
+ @Schema(description = "澶囨敞")
+ private String signPlace;
+
@Schema(description = "浜や粯鍛ㄦ湡")
private Integer deliveryCycle;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractSubjectMatterAddDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractSubjectMatterAddDTO.java
index 352d76f..9c5ab6e 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractSubjectMatterAddDTO.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ContractSubjectMatterAddDTO.java
@@ -39,4 +39,13 @@
@Schema(description = "鎶勮〃鍗曟嵁璺緞")
private String meterReadAttPaths;
+ @Schema(description = "璁¢噺鍗曚綅")
+ private String unit;
+
+ @Schema(description = "鍗曢噸")
+ private BigDecimal singleWight;
+
+ @Schema(description = "鎬婚噸")
+ private BigDecimal totalWight;
+
}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/DeliveryOverdueQueryDTO.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/DeliveryOverdueQueryDTO.java
new file mode 100644
index 0000000..bf8bf0e
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/DeliveryOverdueQueryDTO.java
@@ -0,0 +1,16 @@
+package com.by4cloud.platformx.business.dto;
+
+import lombok.Data;
+
+@Data
+public class DeliveryOverdueQueryDTO {
+
+ private String industryId;
+
+ private String areaId;
+
+ private String partyB;
+
+ private String contractName;
+
+}
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 12ac3db..2347d87 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
@@ -173,4 +173,12 @@
@Schema(description = "鎶勮〃鍗曟嵁璺緞")
@Column(columnDefinition="text comment '鍗曟嵁璺緞'")
private String meterReadAttPaths;
+
+ @Schema(description = "鍗曢噸")
+ @Column(columnDefinition = "decimal(10,2) comment '鍗曢噸 /kg'")
+ private BigDecimal singleWight;
+
+ @Schema(description = "鎬婚噸")
+ @Column(columnDefinition = "decimal(10,2) comment '鎬婚噸 /kg'")
+ private BigDecimal totalWight;
}
\ No newline at end of file
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/DeliveryOverdue.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/DeliveryOverdue.java
new file mode 100644
index 0000000..e626d4a
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/DeliveryOverdue.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骞�5鏈�28鏃� 10:52:02
+ * syt
+ */
+@Data
+@Entity//鍔犱簡鎵嶈兘鑷姩鐢熸垚琛�
+@Table(appliesTo="delivery_overdue",comment = "鍑鸿揣閫炬湡")//缁欒〃鍔犳敞閲�
+@jakarta.persistence.Table(name = "delivery_overdue")//鏁版嵁搴撳垱寤虹殑琛ㄦ槑
+public class DeliveryOverdue extends BaseModel<DeliveryOverdue> {
+
+ @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 contractName;
+
+ @Schema(description = "鍚堝悓ID")
+ @Column(columnDefinition="bigint comment '鍚堝悓ID'")
+ private Long contractId;
+
+ @Schema(description = "鏍囩殑鐗╁悕绉�")
+ @Column(columnDefinition = "VARCHAR(200) comment '鏍囩殑鐗╁悕绉�'")
+ private String materialName;
+
+ @Schema(description = "鏍囩殑鐗╃紪鐮侊紙鍐呴儴鍞竴缂栫爜锛�")
+ @Column(columnDefinition = "VARCHAR(64) comment '鏍囩殑鐗╃紪鐮�'")
+ private String materialCode;
+
+ @Schema(description = "鏍囩殑鐗╃紪鐮侊紙鍐呴儴鍞竴鍚嶇О锛�")
+ @Column(columnDefinition = "VARCHAR(64) comment '鏍囩殑鐗╁悕绉�(鍐呴儴)'")
+ private String materialInternalName;
+
+ @Schema(description = "閫炬湡浜や粯鏁伴噺")
+ @Column(columnDefinition="decimal(10,2) comment '閫炬湡浜や粯鏁伴噺'")
+ private BigDecimal overdueNum;
+
+ @Schema(description = "鎬婚噾棰�")
+ @Column(columnDefinition="decimal(10,2) comment '鎬婚噾棰� /鍏� 涓や綅灏忔暟'")
+ private BigDecimal totalAmount;
+
+ @Schema(description = "閫炬湡鏃堕暱")
+ @Column(columnDefinition="decimal(10,0) comment '閫炬湡鏃堕暱 /澶�'")
+ private BigDecimal overdueDuration;
+
+}
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java
index b0d71f2..c2df2ee 100644
--- a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ContractDetailVo.java
@@ -74,6 +74,9 @@
@Schema(description = "妯$増ID")
private Long templateId;
+ @Schema(description = "鍚堝悓鍒嗙被")
+ private String contractCategory;
+
private List<ContractPaymentSchedule> contractPaymentSchedule;
private List<ContractSubjectMatter> contractSubjectMatter;
diff --git a/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/DeliveryOverduePageVo.java b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/DeliveryOverduePageVo.java
new file mode 100644
index 0000000..126b5a0
--- /dev/null
+++ b/platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/DeliveryOverduePageVo.java
@@ -0,0 +1,46 @@
+package com.by4cloud.platformx.business.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.persistence.Column;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class DeliveryOverduePageVo {
+
+ private Long id;
+
+ @Schema(description = "瀹㈠晢鍚嶇О")
+ private String busGuestName;
+
+ @Schema(description = "瀹㈠晢ID")
+ private Long busGuestId;
+
+ @Schema(description = "鍚堝悓鍚嶇О")
+ private String contractName;
+
+ @Schema(description = "鍚堝悓ID")
+ private Long contractId;
+
+ @Schema(description = "鏍囩殑鐗╁悕绉�")
+ private String materialName;
+
+ @Schema(description = "鏍囩殑鐗╃紪鐮侊紙鍐呴儴鍞竴缂栫爜锛�")
+ private String materialCode;
+
+ @Schema(description = "鏍囩殑鐗╃紪鐮侊紙鍐呴儴鍞竴鍚嶇О锛�")
+ private String materialInternalName;
+
+ @Schema(description = "閫炬湡浜や粯鏁伴噺")
+ private BigDecimal overdueNum;
+
+ @Schema(description = "鎬婚噾棰�")
+ private BigDecimal totalAmount;
+
+ @Schema(description = "閫炬湡鏃堕暱")
+ private BigDecimal overdueDuration;
+
+ @Schema(description = "鐢熶骇鍗曚綅")
+ private String partyA;
+}
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/DeliveryOverdueController.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/DeliveryOverdueController.java
new file mode 100644
index 0000000..196f31c
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/DeliveryOverdueController.java
@@ -0,0 +1,120 @@
+package com.by4cloud.platformx.business.controller;
+
+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.DeliveryOverdueQueryDTO;
+import com.by4cloud.platformx.common.core.util.R;
+import com.by4cloud.platformx.common.log.annotation.SysLog;
+import com.by4cloud.platformx.business.entity.DeliveryOverdue;
+import com.by4cloud.platformx.business.service.DeliveryOverdueService;
+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-28 11:01:05
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/deliveryOverdue" )
+@Tag(description = "deliveryOverdue" , name = "鍑鸿揣閫炬湡绠$悊" )
+@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
+public class DeliveryOverdueController {
+
+ private final DeliveryOverdueService deliveryOverdueService;
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param page 鍒嗛〉瀵硅薄
+ * @param queryDTO 鍑鸿揣閫炬湡
+ * @return
+ */
+ @Operation(summary = "鍒嗛〉鏌ヨ" , description = "鍒嗛〉鏌ヨ" )
+ @GetMapping("/page" )
+ @PreAuthorize("@pms.hasPermission('business_deliveryOverdue_view')" )
+ public R getDeliveryOverduePage(@ParameterObject Page page, @ParameterObject DeliveryOverdueQueryDTO queryDTO) {
+ LambdaQueryWrapper<DeliveryOverdue> wrapper = Wrappers.lambdaQuery();
+ return R.ok(deliveryOverdueService.pageNew(page, queryDTO));
+ }
+
+
+ /**
+ * 閫氳繃id鏌ヨ鍑鸿揣閫炬湡
+ * @param id id
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鏌ヨ" , description = "閫氳繃id鏌ヨ" )
+ @GetMapping("/{id}" )
+ @PreAuthorize("@pms.hasPermission('business_deliveryOverdue_view')" )
+ public R getById(@PathVariable("id" ) Long id) {
+ return R.ok(deliveryOverdueService.getById(id));
+ }
+
+ /**
+ * 鏂板鍑鸿揣閫炬湡
+ * @param deliveryOverdue 鍑鸿揣閫炬湡
+ * @return R
+ */
+ @Operation(summary = "鏂板鍑鸿揣閫炬湡" , description = "鏂板鍑鸿揣閫炬湡" )
+ @SysLog("鏂板鍑鸿揣閫炬湡" )
+ @PostMapping
+ @PreAuthorize("@pms.hasPermission('business_deliveryOverdue_add')" )
+ public R save(@RequestBody DeliveryOverdue deliveryOverdue) {
+ return R.ok(deliveryOverdueService.save(deliveryOverdue));
+ }
+
+ /**
+ * 淇敼鍑鸿揣閫炬湡
+ * @param deliveryOverdue 鍑鸿揣閫炬湡
+ * @return R
+ */
+ @Operation(summary = "淇敼鍑鸿揣閫炬湡" , description = "淇敼鍑鸿揣閫炬湡" )
+ @SysLog("淇敼鍑鸿揣閫炬湡" )
+ @PutMapping
+ @PreAuthorize("@pms.hasPermission('business_deliveryOverdue_edit')" )
+ public R updateById(@RequestBody DeliveryOverdue deliveryOverdue) {
+ return R.ok(deliveryOverdueService.updateById(deliveryOverdue));
+ }
+
+ /**
+ * 閫氳繃id鍒犻櫎鍑鸿揣閫炬湡
+ * @param ids id鍒楄〃
+ * @return R
+ */
+ @Operation(summary = "閫氳繃id鍒犻櫎鍑鸿揣閫炬湡" , description = "閫氳繃id鍒犻櫎鍑鸿揣閫炬湡" )
+ @SysLog("閫氳繃id鍒犻櫎鍑鸿揣閫炬湡" )
+ @DeleteMapping
+ @PreAuthorize("@pms.hasPermission('business_deliveryOverdue_del')" )
+ public R removeById(@RequestBody Long[] ids) {
+ return R.ok(deliveryOverdueService.removeBatchByIds(CollUtil.toList(ids)));
+ }
+
+
+ /**
+ * 瀵煎嚭excel 琛ㄦ牸
+ * @param deliveryOverdue 鏌ヨ鏉′欢
+ * @param ids 瀵煎嚭鎸囧畾ID
+ * @return excel 鏂囦欢娴�
+ */
+ @ResponseExcel
+ @GetMapping("/export")
+ @PreAuthorize("@pms.hasPermission('business_deliveryOverdue_export')" )
+ public List<DeliveryOverdue> export(DeliveryOverdue deliveryOverdue,Long[] ids) {
+ return deliveryOverdueService.list(Wrappers.lambdaQuery(deliveryOverdue).in(ArrayUtil.isNotEmpty(ids), DeliveryOverdue::getId, ids));
+ }
+}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/DeliveryOverdueMapper.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/DeliveryOverdueMapper.java
new file mode 100644
index 0000000..04f1328
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/DeliveryOverdueMapper.java
@@ -0,0 +1,18 @@
+package com.by4cloud.platformx.business.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.business.dto.DeliveryOverdueQueryDTO;
+import com.by4cloud.platformx.business.entity.DeliveryOverdue;
+import com.by4cloud.platformx.business.vo.DeliveryOverduePageVo;
+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 DeliveryOverdueMapper extends PlatformxBaseMapper<DeliveryOverdue> {
+
+
+ Page<DeliveryOverduePageVo> pageNew(Page page, @Param("queryDTO") DeliveryOverdueQueryDTO 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/DeliveryOverdueService.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/DeliveryOverdueService.java
new file mode 100644
index 0000000..101de20
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/DeliveryOverdueService.java
@@ -0,0 +1,11 @@
+package com.by4cloud.platformx.business.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.by4cloud.platformx.business.dto.DeliveryOverdueQueryDTO;
+import com.by4cloud.platformx.business.entity.DeliveryOverdue;
+import com.by4cloud.platformx.common.data.mybatis.IIService;
+
+public interface DeliveryOverdueService extends IIService<DeliveryOverdue> {
+
+ Page pageNew(Page page, DeliveryOverdueQueryDTO queryDTO);
+}
\ No newline at end of file
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 029813d..6634811 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
@@ -179,6 +179,19 @@
subjectMatter.setDeliveredQuantity(new BigDecimal("0"));
subjectMatter.setDeliveryStatus(0);
contractSubjectMatterMapper.insert(subjectMatter);
+ //姘寸數绫诲繀椤绘湁鍒濇琛ㄥ彿
+ if (StrUtil.isNotEmpty(contractSubjectMatterAddDTO.getMeterReadCode()) &&
+ ObjUtil.isNotNull(contractSubjectMatterAddDTO.getMeterReadNum())) {
+ meterReadRecordMapper.delete(Wrappers.<MeterReadRecord>lambdaQuery().eq(MeterReadRecord::getContractId, contract.getId()));
+ MeterReadRecord record = BeanUtil.copyProperties(contractSubjectMatterAddDTO, MeterReadRecord.class,"id");
+ record.setContractId(contract.getId());
+ record.setMatterId(subjectMatter.getId());
+ record.setContractName(contract.getContractName());
+ record.setBusGuestId(contract.getPartyAId());
+ record.setBusGuestName(contract.getPartyA());
+ record.setMeterReadTime(new Date());
+ meterReadRecordMapper.insert(record);
+ }
});
}
@@ -506,7 +519,6 @@
PaymentConfirm oiverdueConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getScheduleId, contractPaymentSchedule.getId())
.eq(PaymentConfirm::getBusinessType, "搴旀敹瓒呮湡"));
if (ObjUtil.isNull(oiverdueConfirm) && overdueConfirm.getTransationAmount().compareTo(new BigDecimal("0")) > 0) {
- overdueConfirm.setCompId(contractPaymentSchedule.getCompId());
paymentConfirmMapper.insert(overdueConfirm);
}
//褰撳墠閫炬湡
@@ -525,7 +537,6 @@
CurrentOverdue overdue = currentOverdueMapper.selectOne(Wrappers.<CurrentOverdue>lambdaQuery().eq(CurrentOverdue::getContractId, currentOverdue.getContractId())
.eq(CurrentOverdue::getScheduleId, currentOverdue.getScheduleId()).last("limit 1"));
if (ObjUtil.isNull(overdue)) {
- currentOverdue.setCompId(contractPaymentSchedule.getCompId());
if (currentOverdue.getReceivableAmount().compareTo(new BigDecimal("0")) > 0) {
currentOverdueMapper.insert(currentOverdue);
}
@@ -607,11 +618,11 @@
Map<String, Object> item = new HashMap<>();
item.put("no", no);
item.put("materialName", contractSubjectMatter.getMaterialName());
- item.put("guige", "");
- item.put("unit", "");
+ item.put("guige", contractSubjectMatter.getSpecification());
+ item.put("unit", contractSubjectMatter.getUnit());
item.put("quantity", contractSubjectMatter.getQuantity());
- item.put("danzhong", "");
- item.put("zongzhong", "");
+ item.put("danzhong", contractSubjectMatter.getSingleWight());
+ item.put("zongzhong", contractSubjectMatter.getTotalWight());
item.put("unitPrice", contractSubjectMatter.getUnitPrice());
item.put("price", contractSubjectMatter.getTotalAmount());
items.add(item);
@@ -689,6 +700,25 @@
record.setBusGuestName(contract.getPartyA());
meterReadRecordMapper.insert(record);
}else {
+ //鍒涘缓鏀舵鑺傜偣
+ //鏌ヨ涓婃鏀舵鑺傜偣
+ ContractPaymentSchedule lastSchedule = contractPaymentScheduleMapper.selectOne(Wrappers.<ContractPaymentSchedule>lambdaQuery()
+ .eq(ContractPaymentSchedule::getContractId,contract.getId())
+ .orderByDesc(ContractPaymentSchedule::getCreateTime).last("limit 1"));
+ ContractPaymentSchedule schedule = new ContractPaymentSchedule();
+ schedule.setStageName("鎴跨绉熻祦缂磋垂");
+ schedule.setContractId(contract.getId());
+ schedule.setContractName(contract.getContractName());
+ schedule.setPlannedAmount(subjectMatter.getUnitPrice().multiply(subjectMatter.getQuantity()));
+ schedule.setEffectiveEndDate(contractExecDate.getExecDate());
+ schedule.setStageOrder(1);
+ if (ObjUtil.isNotNull(lastSchedule)){
+ schedule.setStageOrder(lastSchedule.getStageOrder()+1);
+ }
+ schedule.setPaymentStatus(0);
+ schedule.setActualAmount(new BigDecimal("0"));
+ schedule.setCompId(contract.getCompId());
+ contractPaymentScheduleMapper.insert(schedule);
//鎴垮眿绉熻祦鐢熸垚搴旀敹
PaymentConfirm confirm = new PaymentConfirm();
confirm.setBusinessType("鎴垮眿绉熻祦搴旀敹");
@@ -697,6 +727,8 @@
confirm.setContractId(contract.getId());
confirm.setContractName(contract.getContractName());
confirm.setContractNo(contract.getContractNo());
+ confirm.setScheduleId(schedule.getId());
+ confirm.setScheduleName(schedule.getStageName());
confirm.setConfirmTime(contractExecDate.getExecDate());
confirm.setTransationAmount(subjectMatter.getUnitPrice().multiply(subjectMatter.getQuantity()));
confirm.setTotalAmount(confirm.getTransationAmount().multiply(new BigDecimal("-1")));
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/DeliveryOverdueServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/DeliveryOverdueServiceImpl.java
new file mode 100644
index 0000000..b3b3157
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/DeliveryOverdueServiceImpl.java
@@ -0,0 +1,38 @@
+package com.by4cloud.platformx.business.service.impl;
+
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.by4cloud.platformx.business.dto.DeliveryOverdueQueryDTO;
+import com.by4cloud.platformx.business.entity.BusinessCustomer;
+import com.by4cloud.platformx.business.entity.Contract;
+import com.by4cloud.platformx.business.entity.DeliveryOverdue;
+import com.by4cloud.platformx.business.mapper.DeliveryOverdueMapper;
+import com.by4cloud.platformx.business.service.DeliveryOverdueService;
+import com.by4cloud.platformx.business.vo.DeliveryOverduePageVo;
+import com.by4cloud.platformx.common.data.datascope.DataScope;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.springframework.stereotype.Service;
+/**
+ * 鍑鸿揣閫炬湡
+ *
+ * @author syt
+ * @date 2026-05-28 11:01:05
+ */
+@Service
+public class DeliveryOverdueServiceImpl extends ServiceImpl<DeliveryOverdueMapper, DeliveryOverdue> implements DeliveryOverdueService {
+ @Override
+ public Page pageNew(Page page, DeliveryOverdueQueryDTO queryDTO) {
+ MPJLambdaWrapper<DeliveryOverdue> wrapper = new MPJLambdaWrapper<DeliveryOverdue>()
+ .selectAll(DeliveryOverdue.class)
+ .leftJoin(Contract.class,Contract::getId,DeliveryOverdue::getContractId)
+ .leftJoin(BusinessCustomer.class,BusinessCustomer::getId,Contract::getPartyAId)
+ .eq(ObjUtil.isNotNull(queryDTO.getAreaId()),BusinessCustomer::getAreaId,queryDTO.getAreaId())
+ .eq(ObjUtil.isNotNull(queryDTO.getIndustryId()),BusinessCustomer::getIndustryId,queryDTO.getIndustryId())
+ .like(StrUtil.isNotBlank(queryDTO.getPartyB()),Contract::getPartyB,queryDTO.getPartyB())
+ .like(StrUtil.isNotBlank(queryDTO.getContractName()),Contract::getContractName,queryDTO.getContractName())
+ .orderByDesc(DeliveryOverdue::getCreateTime);
+ 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/MeterReadRecordServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/MeterReadRecordServiceImpl.java
index ffcb0f5..ebc0afb 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/MeterReadRecordServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/MeterReadRecordServiceImpl.java
@@ -4,14 +4,8 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.business.dto.MeterReadRecordUpdateDTO;
-import com.by4cloud.platformx.business.entity.Contract;
-import com.by4cloud.platformx.business.entity.ContractSubjectMatter;
-import com.by4cloud.platformx.business.entity.MeterReadRecord;
-import com.by4cloud.platformx.business.entity.PaymentConfirm;
-import com.by4cloud.platformx.business.mapper.ContractMapper;
-import com.by4cloud.platformx.business.mapper.ContractSubjectMatterMapper;
-import com.by4cloud.platformx.business.mapper.MeterReadRecordMapper;
-import com.by4cloud.platformx.business.mapper.PaymentConfirmMapper;
+import com.by4cloud.platformx.business.entity.*;
+import com.by4cloud.platformx.business.mapper.*;
import com.by4cloud.platformx.business.service.MeterReadRecordService;
import com.by4cloud.platformx.common.core.util.R;
import lombok.RequiredArgsConstructor;
@@ -31,6 +25,7 @@
private final ContractMapper contractMapper;
private final ContractSubjectMatterMapper contractSubjectMatterMapper;
+ private final ContractPaymentScheduleMapper contractPaymentScheduleMapper;
private final PaymentConfirmMapper paymentConfirmMapper;
@Override
@@ -56,6 +51,25 @@
if(ObjUtil.isNull(lastRecord)){
R.failed("鏃犲悎鍚屼俊鎭紝璇疯仈绯绘妧鏈汉鍛�");
}
+ //鍒涘缓鏀舵鑺傜偣
+ //鏌ヨ涓婃鏀舵鑺傜偣
+ ContractPaymentSchedule lastSchedule = contractPaymentScheduleMapper.selectOne(Wrappers.<ContractPaymentSchedule>lambdaQuery()
+ .eq(ContractPaymentSchedule::getContractId,contract.getId())
+ .orderByDesc(ContractPaymentSchedule::getCreateTime).last("limit 1"));
+ ContractPaymentSchedule schedule = new ContractPaymentSchedule();
+ schedule.setStageName("姘寸數浠g即");
+ schedule.setContractId(contract.getId());
+ schedule.setContractName(contract.getContractName());
+ schedule.setPlannedAmount(subjectMatter.getUnitPrice().multiply(updateDTO.getMeterReadNum().subtract(lastRecord.getMeterReadNum())));
+ schedule.setEffectiveEndDate(updateDTO.getMeterReadTime());
+ schedule.setStageOrder(1);
+ if (ObjUtil.isNotNull(lastSchedule)){
+ schedule.setStageOrder(lastSchedule.getStageOrder()+1);
+ }
+ schedule.setPaymentStatus(0);
+ schedule.setActualAmount(new BigDecimal("0"));
+ contractPaymentScheduleMapper.insert(schedule);
+ //鎴垮眿绉熻祦鐢熸垚搴旀敹
PaymentConfirm confirm = new PaymentConfirm();
confirm.setBusinessType(subjectMatter.getMaterialInternalName()+"搴旀敹");
confirm.setBusGuestId(contract.getPartyAId());
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 3b5e5e9..f329f11 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 ContractMapper contractMapper;
private final ContractPaymentScheduleProcessMapper scheduleProcessMapper;
private final ContractOutBoundMapper contractOutBoundMapper;
+ private final DeliveryOverdueMapper deliveryOverdueMapper;
@Override
public R add(OutBoundAddDTO addDTO) {
@@ -384,5 +385,25 @@
contractOutBound.setOutBoundAttPaths(addDTO.getOutBoundAttPaths());
contractOutBound.setOutBoundId(outBoundId);
contractOutBoundMapper.insert(contractOutBound);
+ if (StrUtil.isEmpty(contract.getContractCategory())){
+ if (DateUtil.compare(addDTO.getOutBoundTime(),contract.getExpirationDate())>0){
+ saveOverdueOutBound(contract, addDTO, subjectMatter);
+ }
+ }
+ }
+
+ private void saveOverdueOutBound(Contract contract, OutBoundAddDTO addDTO, ContractSubjectMatter subjectMatter) {
+ DeliveryOverdue overdue = new DeliveryOverdue();
+ overdue.setContractId(contract.getId());
+ overdue.setContractName(contract.getContractName());
+ overdue.setBusGuestId(contract.getPartyAId());
+ overdue.setBusGuestName(contract.getPartyA());
+ overdue.setMaterialName(subjectMatter.getMaterialName());
+ overdue.setMaterialInternalName(subjectMatter.getMaterialInternalName());
+ 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)));
+ deliveryOverdueMapper.insert(overdue);
}
}
\ No newline at end of file
diff --git a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
index 779692a..04944ea 100644
--- a/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
+++ b/platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
@@ -53,6 +53,7 @@
private final HistoryOverdueMapper historyOverdueMapper;
private final PaymentSlipMapper paymentSlipMapper;
private final BipRequestRecordMapper bipRequestRecordMapper;
+ private final ContractExecDateMapper contractExecDateMapper;
private final RemoteDeptService remoteDeptService;
private final RedisTemplate redisTemplate;
@@ -393,7 +394,21 @@
if (contract.getAmount().compareTo(contract.getPaidAmount()) > 0) {
payNoCompleteContractList.add(contract);
}
- contractService.updateById(contract);
+ if (StrUtil.isNotEmpty(contract.getContractCategory())&&StrUtil.equals(contract.getContractCategory(),"water_house")){
+ List<ContractExecDate> execDateList = contractExecDateMapper.selectList(Wrappers.<ContractExecDate>lambdaQuery()
+ .eq(ContractExecDate::getContractId,contract.getId()).eq(ContractExecDate::getGenFlag,"0"));
+ if (ArrayUtil.isEmpty(execDateList.toArray())){
+ List<ContractPaymentSchedule> contractPaymentScheduleList = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery()
+ .eq(ContractPaymentSchedule::getContractId, contract.getId()));
+ if (ArrayUtil.isNotEmpty(contractPaymentScheduleList.toArray())&&contractPaymentScheduleList.stream().allMatch(item -> Objects.equals(item.getPaymentStatus(), 2))) {
+ contract.setContractStatus(3);
+ contractService.updateById(contract);
+ }
+ }
+ }else {
+ contractService.updateById(contract);
+ }
+
}
});
@@ -721,7 +736,20 @@
if (contract.getAmount().compareTo(contract.getPaidAmount()) > 0) {
payNoCompleteContractList.add(contract);
}
- contractService.updateById(contract);
+ if (StrUtil.isNotEmpty(contract.getContractCategory())&&StrUtil.equals(contract.getContractCategory(),"water_house")){
+ List<ContractExecDate> execDateList = contractExecDateMapper.selectList(Wrappers.<ContractExecDate>lambdaQuery()
+ .eq(ContractExecDate::getContractId,contract.getId()).eq(ContractExecDate::getGenFlag,"0"));
+ if (ArrayUtil.isEmpty(execDateList)){
+ List<ContractPaymentSchedule> contractPaymentScheduleList = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery()
+ .eq(ContractPaymentSchedule::getContractId, contract.getId()));
+ if (ArrayUtil.isNotEmpty(contractPaymentScheduleList.toArray())&&contractPaymentScheduleList.stream().allMatch(item -> Objects.equals(item.getPaymentStatus(), 2))) {
+ contract.setContractStatus(3);
+ contractService.updateById(contract);
+ }
+ }
+ }else {
+ contractService.updateById(contract);
+ }
}
});
diff --git a/platformx-business-finance-biz/src/main/resources/mapper/DeliveryOverdueMapper.xml b/platformx-business-finance-biz/src/main/resources/mapper/DeliveryOverdueMapper.xml
new file mode 100644
index 0000000..79d31c8
--- /dev/null
+++ b/platformx-business-finance-biz/src/main/resources/mapper/DeliveryOverdueMapper.xml
@@ -0,0 +1,66 @@
+<?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.DeliveryOverdueMapper">
+
+ <resultMap id="deliveryOverdueMap" type="com.by4cloud.platformx.business.entity.DeliveryOverdue">
+ <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="materialCode" column="material_code"/>
+ <result property="materialInternalName" column="material_internal_name"/>
+ <result property="materialName" column="material_name"/>
+ <result property="overdueDuration" column="overdue_duration"/>
+ <result property="overdueNum" column="overdue_num"/>
+ <result property="totalAmount" column="total_amount"/>
+ <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>
+ <select id="pageNew" resultType="com.by4cloud.platformx.business.vo.DeliveryOverduePageVo">
+ SELECT
+ t.id,
+ t.bus_guest_name,
+ t.bus_guest_id,
+ t.contract_name,
+ t.contract_id,
+ t.material_name,
+ t.material_code,
+ t.material_internal_name,
+ t.overdue_num,
+ t.total_amount,
+ t.overdue_duration,
+ t.create_by,
+ t.update_by,
+ t.create_time,
+ t.update_time,
+ t.del_flag,
+ t.comp_id,
+ t1.party_a
+ FROM
+ delivery_overdue 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.areaId !=null and queryDTO.areaId !='' ">
+ and t2.area_id = #{queryDTO.areaId}
+ </if>
+ <if test="queryDTO.industryId !=null and queryDTO.industryId !=''">
+ and t2.industry_id = #{queryDTO.industryId}
+ </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
diff --git a/platformx-business-finance-biz/src/main/resources/template/ymjjgclht.doc b/platformx-business-finance-biz/src/main/resources/template/ymjjgclht.doc
deleted file mode 100644
index a5b550f..0000000
--- a/platformx-business-finance-biz/src/main/resources/template/ymjjgclht.doc
+++ /dev/null
Binary files differ
diff --git a/platformx-business-finance-biz/src/main/resources/template/ymjjgclht.docx b/platformx-business-finance-biz/src/main/resources/template/ymjjgclht.docx
index 3f268e1..53c8911 100644
--- a/platformx-business-finance-biz/src/main/resources/template/ymjjgclht.docx
+++ b/platformx-business-finance-biz/src/main/resources/template/ymjjgclht.docx
Binary files differ
--
Gitblit v1.9.1