协议书编号

This commit is contained in:
syruan 2026-01-15 18:17:57 +08:00
parent b3f45b178b
commit 9042c13c4c
10 changed files with 132 additions and 41 deletions

View File

@ -64,7 +64,7 @@ public class IwsCostPushTask {
/**
* 定时任务 -- 保存未结算报表记录 -- 每月最后一天的23点00分执行
* 定时任务 -- 保存未结算报表记录工器具 -- 每月最后一天的23点00分执行
*/
@Scheduled(cron = "0 00 23 L * ?", zone = "Asia/Shanghai")
public void saveUnSltHistoryReport() {
@ -234,10 +234,8 @@ public class IwsCostPushTask {
} catch (Exception e) {
log.error("保存未结算报表记录到数据库失败,记录数量:{}", validRecords.size(), e);
// 打印所有记录的关键信息用于排查
validRecords.forEach(vo -> {
log.error("失败记录agreementId={}, agreementCode={}, unitName={}, projectName={}",
vo.getAgreementId(), vo.getAgreementCode(), vo.getUnitName(), vo.getProjectName());
});
validRecords.forEach(vo -> log.error("失败记录agreementId={}, agreementCode={}, unitName={}, projectName={}",
vo.getAgreementId(), vo.getAgreementCode(), vo.getUnitName(), vo.getProjectName()));
throw e;
}
} else {
@ -247,7 +245,6 @@ public class IwsCostPushTask {
log.error("保存未结算报表记录失败", e);
throw e;
} finally {
// 在整个批量处理完成后清理缓存而不是在每次循环中清理
sltAgreementInfoService.clearCache();
log.info("缓存已清理");
}
@ -257,7 +254,7 @@ public class IwsCostPushTask {
/**
* 定时任务 -- 保存未结算报表记录 -- 每月最后一天的23点10分执行
* 定时任务 -- 保存未结算报表记录安全工器具 -- 每月最后一天的23点10分执行
*/
@Scheduled(cron = "0 10 23 L * ?", zone = "Asia/Shanghai")
public void saveUnSltSafetyHistoryReport() {

View File

@ -2018,6 +2018,17 @@ public class SltAgreementInfoController extends BaseController {
return getDataTable(list);
}
/**
* 修改结算协议书编号
* @param sltAgreementInfo 编号
* @return 结果
*/
@ApiOperation(value = "修改结算协议书编号")
@PostMapping("/updateSltBookCodeById")
public AjaxResult updateSltBookCodeById(@RequestBody SltAgreementInfo sltAgreementInfo) {
int result = sltAgreementInfoService.updateSltBookCodeById(sltAgreementInfo);
return result > 0 ? success("修改成功") : error();
}
/**

View File

@ -322,4 +322,7 @@ public class SltAgreementInfo extends BaseEntity {
@ApiModelProperty(value = "任务状态列表")
private List<Integer> statusList;
@ApiModelProperty(value = "结算协议书编号")
private String bookCode;
}

View File

@ -1,9 +1,12 @@
package com.bonus.material.settlement.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 结算历史报表对象 slt_history_report
@ -30,4 +33,15 @@ public class SltHistoryReport {
private LocalDateTime createTime;
private Long companyId;
/**
* 0未竣工 1竣工 2未竣工并且未绑定i8工程
*/
private Integer isFinish;
/**
* 竣工日期
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date actualEndDate;
}

View File

@ -192,4 +192,9 @@ public class SltInfoVo {
private List<SltInfoVo> signUrlList;
private Long companyId;
/**
* 协议书编号
*/
private String bookCode;
}

View File

@ -84,6 +84,11 @@ public interface SltAgreementInfoMapper {
*/
public int insertSltAgreementInfo(SltAgreementInfo sltAgreementInfo);
/**
* 修改结算协议书编号
*/
int updateSltBookCodeById(SltAgreementInfo sltAgreementInfo);
/**
* 修改结算信息
*

View File

@ -184,6 +184,11 @@ public interface ISltAgreementInfoService {
*/
List<PeriodCostSummaryVo> selectPeriodCostSummary(PeriodCostQueryDto queryDto);
/**
* 修改结算协议书编号
*/
int updateSltBookCodeById(SltAgreementInfo sltAgreementInfo);
List<SltAgreementInfo> getRepairCodeList(SltAgreementInfo bean);

View File

@ -1884,6 +1884,16 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
}
}
/**
* 修改结算协议书编号
*
* @param sltAgreementInfo ID及协议书编号
*/
@Override
public int updateSltBookCodeById(SltAgreementInfo sltAgreementInfo) {
return sltAgreementInfoMapper.updateSltBookCodeById(sltAgreementInfo);
}
@Override
public List<SltAgreementInfo> getRepairCodeList(SltAgreementInfo bean) {
return sltAgreementInfoMapper.getRepairCodeList(bean);
@ -1928,6 +1938,9 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
summary.setQueryStartDate(queryStartDate);
summary.setQueryEndDate(queryEndDate);
summary.setRemark(firstDetail.getRemark());
summary.setActualEndDate(firstDetail.getActualEndDate());
summary.setIsFinish(firstDetail.getIsFinish());
summary.setProStatus((firstDetail.getIsFinish() != null && firstDetail.getIsFinish().equals("1")) ? "已竣工" : "未竣工");
// 计算汇总数据
int equipmentTypeCount = agreementDetails.size(); // 设备种类数量

View File

@ -4,10 +4,13 @@ import com.bonus.material.settlement.domain.SltHistoryReport;
import com.bonus.material.settlement.domain.SltHistoryReportDetail;
import com.bonus.material.settlement.mapper.SltAgreementInfoMapper;
import com.bonus.material.settlement.service.SltHistoryReportService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@Service
public class SltHistoryReportServiceImpl implements SltHistoryReportService {
@ -19,7 +22,19 @@ public class SltHistoryReportServiceImpl implements SltHistoryReportService {
@Override
public List<SltHistoryReport> selectHistoryReportList(SltHistoryReport report) {
return sltAgreementInfoMapper.selectSltHistoryReportList(report);
List<SltHistoryReport> sltHistoryReports = sltAgreementInfoMapper.selectSltHistoryReportList(report);
sltHistoryReports.removeIf(Objects::isNull);
if (CollectionUtils.isEmpty(sltHistoryReports)) {
return Collections.emptyList();
}
return sltHistoryReports;
}
@Override

View File

@ -2173,6 +2173,12 @@
<select id="selectSltHistoryReportList" resultType="com.bonus.material.settlement.domain.SltHistoryReport">
SELECT
case
WHEN bp.actual_end_date is not null THEN '1'
WHEN bp.actual_end_date is null and bp.external_id is null THEN '2'
ELSE '0'
END as isFinish,
bp.actual_end_date as actualEndDate,
shr.id,
shr.agreement_id as agreementId,
shr.agreement_code as agreementCode,
@ -2188,13 +2194,18 @@
shr.reduction_cost as reductionCost,
shr.`year_month` as yearMonth,
shr.create_time as createTime
FROM slt_history_report shr
left join bm_agreement_info bai on shr.agreement_id =bai.agreement_id
FROM
slt_history_report shr
left join bm_agreement_info bai on shr.agreement_id = bai.agreement_id
LEFT JOIN slt_agreement_apply saa ON saa.agreement_id = shr.agreement_id AND saa.settlement_type = #{settlementType}
LEFT JOIN bm_project bp ON bai.project_id = bp.pro_id
WHERE
shr.`year_month` = #{yearMonth}
and shr.settlement_type = #{settlementType}
<if test="companyId !=null"> and bai.company_id =#{companyId}</if>
ORDER BY shr.create_time DESC
and shr.settlement_type = #{settlementType}
AND saa.id IS NULL
<if test="companyId !=null"> and bai.company_id =#{companyId}</if>
ORDER BY
shr.create_time DESC
</select>
<select id="getAgreementInfo" resultType="com.bonus.material.settlement.domain.SltAgreementInfo">
@ -2348,7 +2359,7 @@
<select id="getSltAgreementBook" resultType="com.bonus.material.settlement.domain.vo.SltInfoVo">
SELECT
agreementId,
agreementId, res.bookCode,
bai.agreement_code as agreementCode,
LEFT(createTime,10) as applyTime,
bui.unit_name AS unitName,
@ -2364,20 +2375,21 @@
FROM
(
SELECT
saa.agreement_id AS agreementId,
saa.create_time AS createTime,
IF
( sad.slt_type = 1, sad.money, 0 ) AS leaseCost,
IF
( sad.slt_type = 2, sad.money, 0 ) AS loseCost,
IF(sad.slt_type = 3 AND (sad.is_charge = 1 ), sad.money, 0) AS repairCost,
IF(sad.slt_type = 4 AND (sad.is_charge = 1 ), sad.money, 0) AS scrapCost,
0 AS aqLeaseCost,
0 AS aqLoseCost,
0 AS aqRepairCost,
0 AS aqScrapCost
saa.book_code as bookCode,
saa.agreement_id AS agreementId,
saa.create_time AS createTime,
IF
( sad.slt_type = 1, sad.money, 0 ) AS leaseCost,
IF
( sad.slt_type = 2, sad.money, 0 ) AS loseCost,
IF(sad.slt_type = 3 AND (sad.is_charge = 1 ), sad.money, 0) AS repairCost,
IF(sad.slt_type = 4 AND (sad.is_charge = 1 ), sad.money, 0) AS scrapCost,
0 AS aqLeaseCost,
0 AS aqLoseCost,
0 AS aqRepairCost,
0 AS aqScrapCost
FROM
slt_agreement_apply saa
slt_agreement_apply saa
LEFT JOIN slt_agreement_details sad ON saa.id = sad.apply_id
WHERE
saa.agreement_id = #{agreementId}
@ -2385,21 +2397,22 @@
GROUP BY
sad.id UNION ALL
SELECT
saa.agreement_id AS agreementId,
saa.create_time AS createTime,
0 AS leaseCost,
0 AS loseCost,
0 AS repairCost,
0 AS scrapCost,
IF
( sad.slt_type = 1, sad.money, 0 ) AS aqLeaseCost,
IF
( sad.slt_type = 2, sad.money, 0 ) AS aqLoseCost,
IF(sad.slt_type = 3 AND (sad.is_charge = 1 ), sad.money, 0) AS aqRepairCost,
IF(sad.slt_type = 4 AND (sad.is_charge = 1 ), sad.money, 0) AS aqScrapCost
saa.book_code as bookCode,
saa.agreement_id AS agreementId,
saa.create_time AS createTime,
0 AS leaseCost,
0 AS loseCost,
0 AS repairCost,
0 AS scrapCost,
IF
( sad.slt_type = 1, sad.money, 0 ) AS aqLeaseCost,
IF
( sad.slt_type = 2, sad.money, 0 ) AS aqLoseCost,
IF(sad.slt_type = 3 AND (sad.is_charge = 1 ), sad.money, 0) AS aqRepairCost,
IF(sad.slt_type = 4 AND (sad.is_charge = 1 ), sad.money, 0) AS aqScrapCost
FROM
slt_agreement_apply saa
LEFT JOIN slt_agreement_details sad ON saa.id = sad.apply_id
slt_agreement_apply saa
LEFT JOIN slt_agreement_details sad ON saa.id = sad.apply_id
WHERE
saa.agreement_id = #{agreementId}
AND saa.settlement_type = 2
@ -2590,4 +2603,14 @@
</insert>
<update id="updateSltBookCodeById">
update
slt_agreement_apply
set
book_code = #{bookCode}
where
id = #{id}
and book_code is null
</update>
</mapper>