机械合同

This commit is contained in:
lg
2025-11-12 19:46:40 +08:00
parent 2b25ec1483
commit 4b3a56eb5f
34 changed files with 4710 additions and 3 deletions

View File

@ -320,6 +320,8 @@ xss:
- /xzd/fenbaohetongbiangg/** - /xzd/fenbaohetongbiangg/**
- /xzd/fenbaohetongxinxi/** - /xzd/fenbaohetongxinxi/**
- /xzd/contractManagement/** - /xzd/contractManagement/**
- /xzd/jixiehetongxinxi/contractMachinery/**
- /xzd/jixiehetongbiang/machineryContractAlteration/**
# 全局线程池相关配置 # 全局线程池相关配置
# 如使用JDK21请直接使用虚拟线程 不要开启此配置 # 如使用JDK21请直接使用虚拟线程 不要开启此配置

View File

@ -8,9 +8,11 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import org.dromara.xzd.domain.XzdBusinessChange;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 采购合同终止业务对象 xzd_purchase_contract_suspend * 采购合同终止业务对象 xzd_purchase_contract_suspend
@ -135,5 +137,10 @@ public class XzdPurchaseContractSuspendBo extends BaseEntity {
private LocalDate endDate; private LocalDate endDate;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
} }

View File

@ -15,9 +15,11 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.xzd.domain.XzdBusinessChange;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
@ -210,5 +212,10 @@ public class XzdPurchaseContractSuspendVo implements Serializable {
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime; private LocalDateTime createTime;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
} }

View File

@ -24,10 +24,14 @@ import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.XzdSubcontrac
import org.dromara.xzd.contractManagement.purchaseManagement.domain.XzdPurchaseContractInformation; import org.dromara.xzd.contractManagement.purchaseManagement.domain.XzdPurchaseContractInformation;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdPurchaseContractInformationVo; import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdPurchaseContractInformationVo;
import org.dromara.xzd.contractManagement.purchaseManagement.service.IXzdPurchaseContractInformationService; import org.dromara.xzd.contractManagement.purchaseManagement.service.IXzdPurchaseContractInformationService;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdSettlementRules; import org.dromara.xzd.domain.XzdSettlementRules;
import org.dromara.xzd.domain.dto.QuerCorrespondentDto; import org.dromara.xzd.domain.dto.QuerCorrespondentDto;
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
import org.dromara.xzd.service.IXzdCorrespondentList; import org.dromara.xzd.service.IXzdCorrespondentList;
import org.dromara.xzd.service.IXzdSettlementRulesService; import org.dromara.xzd.service.IXzdSettlementRulesService;
import org.dromara.xzd.service.impl.XzdBusinessChangeServiceImpl;
import org.dromara.xzd.service.impl.XzdBusinessSealServiceImpl;
import org.dromara.xzd.service.impl.XzdSupplierInfoServiceImpl; import org.dromara.xzd.service.impl.XzdSupplierInfoServiceImpl;
import org.dromara.xzd.settlement.fenbaohetongjungong.domain.vo.SettlementOfSubcontractingCompletionVo; import org.dromara.xzd.settlement.fenbaohetongjungong.domain.vo.SettlementOfSubcontractingCompletionVo;
import org.dromara.xzd.utilS.AreaUtil; import org.dromara.xzd.utilS.AreaUtil;
@ -74,7 +78,12 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl<XzdPurcha
@Autowired @Autowired
private SysOssServiceImpl sysOssService; private SysOssServiceImpl sysOssService;
private final AreaUtil areaUtil;
@Autowired
private XzdBusinessChangeServiceImpl xzdBusinessChangeService;
@Autowired
private XzdBusinessSealServiceImpl xzdBusinessSealService;
/** /**
* 查询采购合同终止 * 查询采购合同终止
@ -101,6 +110,18 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl<XzdPurcha
} }
} }
//印章信息
LambdaQueryWrapper<XzdBusinessChange> xzdBusinessChangeWrapper = new LambdaQueryWrapper<>();
xzdBusinessChangeWrapper.eq(XzdBusinessChange::getContractChangeId, item.getId());
List<XzdBusinessChange> xzdBusinessChanges = xzdBusinessChangeService.list(xzdBusinessChangeWrapper);
for (XzdBusinessChange businessChange : xzdBusinessChanges) {
XzdBusinessSealVo sealVo = xzdBusinessSealService.queryById(businessChange.getBusinessId());
if (sealVo != null){
businessChange.setSealName(sealVo.getYzName());
}
}
item.setSealInfo(xzdBusinessChanges);
} }
} }
@ -176,8 +197,18 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl<XzdPurcha
String banBen = BatchNumberGenerator.generateBatchNumber("CGHTZZ-"); String banBen = BatchNumberGenerator.generateBatchNumber("CGHTZZ-");
add.setReceiptsCode(banBen); add.setReceiptsCode(banBen);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
//印章信息
if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()){
for (XzdBusinessChange sealInfo : bo.getSealInfo()) {
sealInfo.setContractChangeId(add.getId());
sealInfo.setType("9");
}
xzdBusinessChangeService.saveBatch(bo.getSealInfo());
}
if (flag) { if (flag) {
bo.setId(add.getId()); bo.setId(add.getId());
} }
@ -194,6 +225,16 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl<XzdPurcha
public Boolean updateByBo(XzdPurchaseContractSuspendBo bo) { public Boolean updateByBo(XzdPurchaseContractSuspendBo bo) {
XzdPurchaseContractSuspend update = MapstructUtils.convert(bo, XzdPurchaseContractSuspend.class); XzdPurchaseContractSuspend update = MapstructUtils.convert(bo, XzdPurchaseContractSuspend.class);
validEntityBeforeSave(update); validEntityBeforeSave(update);
//印章信息
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().eq(XzdBusinessChange::getContractChangeId, update.getId()));
for (XzdBusinessChange xzdBusinessChange : bo.getSealInfo()) {
xzdBusinessChange.setContractChangeId(update.getId());
xzdBusinessChange.setType("9");
}
xzdBusinessChangeService.saveBatch(bo.getSealInfo());
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }
@ -226,6 +267,8 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl<XzdPurcha
sysOssService.deleteWithValidByIds(collect, false); sysOssService.deleteWithValidByIds(collect, false);
} }
} }
//印章信息
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().in(XzdBusinessChange::getContractChangeId, ids));
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.contractManagement.jixiehetongbiang.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.vo.XzdMachineryContractAlterationVo;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.bo.XzdMachineryContractAlterationBo;
import org.dromara.xzd.contractManagement.jixiehetongbiang.service.IXzdMachineryContractAlterationService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 机械合同变更
*
* @author Lion Li
* @date 2025-11-12
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/xzd/jixiehetongbiang/machineryContractAlteration")
public class XzdMachineryContractAlterationController extends BaseController {
private final IXzdMachineryContractAlterationService xzdMachineryContractAlterationService;
/**
* 查询机械合同变更列表
*/
@SaCheckPermission("jixiehetongbiang:machineryContractAlteration:list")
@GetMapping("/list")
public TableDataInfo<XzdMachineryContractAlterationVo> list(XzdMachineryContractAlterationBo bo, PageQuery pageQuery) {
return xzdMachineryContractAlterationService.queryPageList(bo, pageQuery);
}
/**
* 导出机械合同变更列表
*/
@SaCheckPermission("jixiehetongbiang:machineryContractAlteration:export")
@Log(title = "机械合同变更", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdMachineryContractAlterationBo bo, HttpServletResponse response) {
List<XzdMachineryContractAlterationVo> list = xzdMachineryContractAlterationService.queryList(bo);
ExcelUtil.exportExcel(list, "机械合同变更", XzdMachineryContractAlterationVo.class, response);
}
/**
* 获取机械合同变更详细信息
*
* @param id 主键
*/
@SaCheckPermission("jixiehetongbiang:machineryContractAlteration:query")
@GetMapping("/{id}")
public R<XzdMachineryContractAlterationVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdMachineryContractAlterationService.queryById(id));
}
/**
* 新增机械合同变更
*/
@SaCheckPermission("jixiehetongbiang:machineryContractAlteration:add")
@Log(title = "机械合同变更", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdMachineryContractAlterationBo bo) {
return toAjax(xzdMachineryContractAlterationService.insertByBo(bo));
}
/**
* 修改机械合同变更
*/
@SaCheckPermission("jixiehetongbiang:machineryContractAlteration:edit")
@Log(title = "机械合同变更", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdMachineryContractAlterationBo bo) {
return toAjax(xzdMachineryContractAlterationService.updateByBo(bo));
}
/**
* 删除机械合同变更
*
* @param ids 主键串
*/
@SaCheckPermission("jixiehetongbiang:machineryContractAlteration:remove")
@Log(title = "机械合同变更", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdMachineryContractAlterationService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,223 @@
package org.dromara.xzd.contractManagement.jixiehetongbiang.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.io.Serial;
import java.time.LocalDate;
/**
* 机械合同变更对象 xzd_machinery_contract_alteration
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_machinery_contract_alteration")
public class XzdMachineryContractAlteration extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 合同信息ID合同编码
*/
private Long contractInformationId;
/**
* 单据编码
*/
private String receiptsCode;
/**
* 标题
*/
private String title;
/**
* 单据日期
*/
private LocalDate documentDate;
/**
* 合同名称
*/
private String contractName;
/**
* 合同类型
*/
private String contractType;
/**
* 变更类型
*/
private String alterationType;
/**
* 项目名称
*/
private String project;
/**
* 经营模式
*/
private String businessModel;
/**
* 原合同造价
*/
private BigDecimal originalContractCost;
/**
* 支付比例
*/
private BigDecimal paymentRatio;
/**
* 甲方单位
*/
private Long partyAUnit;
/**
* 集采模式
*/
private Long centralizedPurchasingMode;
/**
* 乙方单位
*/
private Long artyBUnit;
/**
* 警示信息
*/
private String warning;
/**
* 累计变更金额
*/
private Long cumulativeChangeAmount;
/**
* 支付条款
*/
private String paymentTerms;
/**
* 备注说明
*/
private String remarks;
/**
* 变更原合同单项已结工程量
*/
private Long biangengyuanhetong;
/**
* 是否用印1-是0-否
*/
private Long isSeal;
/**
* 变更后项目经理
*/
private Long changeProjectManager;
/**
* 变更后项目责任人
*/
private Long changeProjectResponsible;
/**
* 变更后现场经理
*/
private Long changeSiteManager;
/**
* 变更后合同备注
*/
private String changeContractRemarks;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目类型
*/
private String projectType;
/**
* 付款额不能超合同额1-是0-否
*/
private Long paymentNotExceedPayment;
/**
* 付款额不能超合同额支付比例
*/
private BigDecimal paymentNotExceedContractRatio;
/**
* 付款额是否不能超支付比例1-是0-否
*/
private Long paymentNotExceedPaymentRatio;
/**
* 预结算/结算额是否不能超合同额1-是0-否
*/
private Long preSettlementNotExceedContract;
/**
* 预结算/结算额不能超合同额比例
*/
private BigDecimal preSettlementNotExceedContractRatio;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
/**
* 变更价税合计
*/
private String changeInTotalAmount;
/**
* 变更后价税合计
*/
private String revisedTotalAmount;
/**
* 合同文本
*/
private String contractText;
/**
* 组织id
*/
private Long deptId;
}

View File

@ -0,0 +1,269 @@
package org.dromara.xzd.contractManagement.jixiehetongbiang.domain.bo;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.XzdMachineryContractAlteration;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractAdvanceInfo;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 机械合同变更业务对象 xzd_machinery_contract_alteration
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdMachineryContractAlteration.class, reverseConvertGenerate = false)
public class XzdMachineryContractAlterationBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 合同信息ID合同编码
*/
private Long contractInformationId;
/**
* 单据编码
*/
private String receiptsCode;
/**
* 标题
*/
@NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class })
private String title;
/**
* 单据日期
*/
@NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate documentDate;
/**
* 合同名称
*/
@NotBlank(message = "合同名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractName;
/**
* 合同类型
*/
@NotBlank(message = "合同类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractType;
/**
* 变更类型
*/
@NotBlank(message = "变更类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String alterationType;
/**
* 项目名称
*/
@NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String project;
/**
* 经营模式
*/
private String businessModel;
/**
* 原合同造价
*/
private BigDecimal originalContractCost;
/**
* 支付比例
*/
private BigDecimal paymentRatio;
/**
* 甲方单位
*/
@NotNull(message = "甲方单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long partyAUnit;
/**
* 集采模式
*/
private Long centralizedPurchasingMode;
/**
* 乙方单位
*/
@NotNull(message = "乙方单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long artyBUnit;
/**
* 警示信息
*/
private String warning;
/**
* 累计变更金额
*/
private Long cumulativeChangeAmount;
/**
* 支付条款
*/
private String paymentTerms;
/**
* 备注说明
*/
private String remarks;
/**
* 变更原合同单项已结工程量
*/
private Long biangengyuanhetong;
/**
* 是否用印1-是0-否
*/
private Long isSeal;
/**
* 变更后项目经理
*/
@NotNull(message = "变更后项目经理不能为空", groups = { AddGroup.class, EditGroup.class })
private Long changeProjectManager;
/**
* 变更后项目责任人
*/
@NotNull(message = "变更后项目责任人不能为空", groups = { AddGroup.class, EditGroup.class })
private Long changeProjectResponsible;
/**
* 变更后现场经理
*/
@NotNull(message = "变更后现场经理不能为空", groups = { AddGroup.class, EditGroup.class })
private Long changeSiteManager;
/**
* 变更后合同备注
*/
@NotBlank(message = "变更后合同备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String changeContractRemarks;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目类型
*/
private String projectType;
/**
* 付款额不能超合同额1-是0-否
*/
private Long paymentNotExceedPayment;
/**
* 付款额不能超合同额支付比例
*/
private BigDecimal paymentNotExceedContractRatio;
/**
* 付款额是否不能超支付比例1-是0-否
*/
private Long paymentNotExceedPaymentRatio;
/**
* 预结算/结算额是否不能超合同额1-是0-否
*/
private Long preSettlementNotExceedContract;
/**
* 预结算/结算额不能超合同额比例
*/
private BigDecimal preSettlementNotExceedContractRatio;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
/**
* 变更价税合计
*/
private String changeInTotalAmount;
/**
* 变更后价税合计
*/
private String revisedTotalAmount;
/**
* 合同文本
*/
private String contractText;
/**
* 组织id
*/
private Long deptId;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
/**
* 设备租聘列表
*/
private List<XzdEquipmentLeasing> jqlist;
/**
* 预收款项
*/
private List<XzdContractAdvanceInfo> yskx;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
}

View File

@ -0,0 +1,371 @@
package org.dromara.xzd.contractManagement.jixiehetongbiang.domain.vo;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.XzdMachineryContractAlteration;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractAdvanceInfo;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
* 机械合同变更视图对象 xzd_machinery_contract_alteration
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdMachineryContractAlteration.class)
public class XzdMachineryContractAlterationVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 合同信息ID合同编码
*/
@ExcelProperty(value = "合同信息ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "合=同编码")
private Long contractInformationId;
/**
* 合同信息ID合同编码
*/
@ExcelProperty(value = "合同信息ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "合=同编码")
private String contractInformationName;
/**
* 单据编码
*/
@ExcelProperty(value = "单据编码")
private String receiptsCode;
/**
* 标题
*/
@ExcelProperty(value = "标题")
private String title;
/**
* 单据日期
*/
@ExcelProperty(value = "单据日期")
private LocalDate documentDate;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 合同类型
*/
@ExcelProperty(value = "合同类型")
private String contractType;
/**
* 变更类型
*/
@ExcelProperty(value = "变更类型")
private String alterationType;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
private String project;
/**
* 经营模式
*/
@ExcelProperty(value = "经营模式")
private String businessModel;
/**
* 原合同造价
*/
@ExcelProperty(value = "原合同造价")
private BigDecimal originalContractCost;
/**
* 支付比例
*/
@ExcelProperty(value = "支付比例")
private BigDecimal paymentRatio;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private Long partyAUnit;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyAUnit")
private String partyAUnitName;
/**
* 集采模式
*/
@ExcelProperty(value = "集采模式")
private Long centralizedPurchasingMode;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private Long artyBUnit;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "artyBUnit")
private String artyBUnitName;
/**
* 警示信息
*/
@ExcelProperty(value = "警示信息")
private String warning;
/**
* 累计变更金额
*/
@ExcelProperty(value = "累计变更金额")
private Long cumulativeChangeAmount;
/**
* 支付条款
*/
@ExcelProperty(value = "支付条款")
private String paymentTerms;
/**
* 备注说明
*/
@ExcelProperty(value = "备注说明")
private String remarks;
/**
* 变更原合同单项已结工程量
*/
@ExcelProperty(value = "变更原合同单项已结工程量")
private Long biangengyuanhetong;
/**
* 是否用印1-是0-否
*/
@ExcelProperty(value = "是否用印1-是0-否")
private Long isSeal;
/**
* 变更后项目经理
*/
@ExcelProperty(value = "变更后项目经理")
private Long changeProjectManager;
/**
* 变更后项目经理
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "changeProjectManager")
@ExcelProperty(value = "变更后项目经理")
private String changeProjectManageName;
/**
* 变更后项目责任人
*/
@ExcelProperty(value = "变更后项目责任人")
private Long changeProjectResponsible;
/**
* 变更后项目责任人
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "changeProjectResponsible")
@ExcelProperty(value = "变更后项目责任人")
private String changeProjectResponsibleName;
/**
* 变更后现场经理
*/
@ExcelProperty(value = "变更后现场经理")
private Long changeSiteManager;
/**
* 变更后现场经理
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "changeSiteManager")
@ExcelProperty(value = "变更后现场经理")
private String changeSiteManagerName;
/**
* 变更后合同备注
*/
@ExcelProperty(value = "变更后合同备注")
private String changeContractRemarks;
/**
* 项目大类
*/
@ExcelProperty(value = "项目大类")
private String projectCategory;
/**
* 项目类型
*/
@ExcelProperty(value = "项目类型")
private String projectType;
/**
* 付款额不能超合同额1-是0-否
*/
@ExcelProperty(value = "付款额不能超合同额1-是0-否")
private Long paymentNotExceedPayment;
/**
* 付款额不能超合同额支付比例
*/
@ExcelProperty(value = "付款额不能超合同额支付比例")
private BigDecimal paymentNotExceedContractRatio;
/**
* 付款额是否不能超支付比例1-是0-否
*/
@ExcelProperty(value = "付款额是否不能超支付比例1-是0-否")
private Long paymentNotExceedPaymentRatio;
/**
* 预结算/结算额是否不能超合同额1-是0-否
*/
@ExcelProperty(value = "预结算/结算额是否不能超合同额1-是0-否")
private Long preSettlementNotExceedContract;
/**
* 预结算/结算额不能超合同额比例
*/
@ExcelProperty(value = "预结算/结算额不能超合同额比例")
private BigDecimal preSettlementNotExceedContractRatio;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
/**
* 变更价税合计
*/
@ExcelProperty(value = "变更价税合计")
private String changeInTotalAmount;
/**
* 变更后价税合计
*/
@ExcelProperty(value = "变更后价税合计")
private String revisedTotalAmount;
/**
* 合同文本
*/
@ExcelProperty(value = "合同文本")
private String contractText;
/**
* 组织id
*/
@ExcelProperty(value = "组织id")
private Long deptId;
/**
* 创建者
*/
@TableField(fill = FieldFill.INSERT)
private Long createBy;
/**
* 创建者
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy")
@TableField(fill = FieldFill.INSERT)
private Long createByName;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
/**
* 设备租聘列表
*/
private List<XzdEquipmentLeasing> jqlist;
/**
* 预收款项
*/
private List<XzdContractAdvanceInfo> yskx;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.contractManagement.jixiehetongbiang.mapper;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.XzdMachineryContractAlteration;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.vo.XzdMachineryContractAlterationVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 机械合同变更Mapper接口
*
* @author Lion Li
* @date 2025-11-12
*/
public interface XzdMachineryContractAlterationMapper extends BaseMapperPlus<XzdMachineryContractAlteration, XzdMachineryContractAlterationVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.contractManagement.jixiehetongbiang.service;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.vo.XzdMachineryContractAlterationVo;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.bo.XzdMachineryContractAlterationBo;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.XzdMachineryContractAlteration;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 机械合同变更Service接口
*
* @author Lion Li
* @date 2025-11-12
*/
public interface IXzdMachineryContractAlterationService extends IService<XzdMachineryContractAlteration>{
/**
* 查询机械合同变更
*
* @param id 主键
* @return 机械合同变更
*/
XzdMachineryContractAlterationVo queryById(Long id);
/**
* 分页查询机械合同变更列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 机械合同变更分页列表
*/
TableDataInfo<XzdMachineryContractAlterationVo> queryPageList(XzdMachineryContractAlterationBo bo, PageQuery pageQuery);
/**
* 查询符合条件的机械合同变更列表
*
* @param bo 查询条件
* @return 机械合同变更列表
*/
List<XzdMachineryContractAlterationVo> queryList(XzdMachineryContractAlterationBo bo);
/**
* 新增机械合同变更
*
* @param bo 机械合同变更
* @return 是否新增成功
*/
Boolean insertByBo(XzdMachineryContractAlterationBo bo);
/**
* 修改机械合同变更
*
* @param bo 机械合同变更
* @return 是否修改成功
*/
Boolean updateByBo(XzdMachineryContractAlterationBo bo);
/**
* 校验并批量删除机械合同变更信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,445 @@
package org.dromara.xzd.contractManagement.jixiehetongbiang.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.contractManagement.caigouhetongbiangeng.domain.XzdPurchaseContractAlteration;
import org.dromara.xzd.contractManagement.caigouhetongbiangeng.domain.vo.XzdPurchaseContractAlterationVo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo.XzdContractMachineryVo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo.XzdEquipmentLeasingVo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.service.IXzdContractMachineryService;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.service.IXzdEquipmentLeasingService;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdPurchaseContractInformationVo;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractAdvanceInfo;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
import org.dromara.xzd.enums.XzdClassEnum;
import org.dromara.xzd.service.IXzdContractAdvanceInfoService;
import org.dromara.xzd.service.IXzdContractClauseService;
import org.dromara.xzd.service.IXzdDeductionItemsService;
import org.dromara.xzd.service.impl.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.bo.XzdMachineryContractAlterationBo;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.vo.XzdMachineryContractAlterationVo;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.XzdMachineryContractAlteration;
import org.dromara.xzd.contractManagement.jixiehetongbiang.mapper.XzdMachineryContractAlterationMapper;
import org.dromara.xzd.contractManagement.jixiehetongbiang.service.IXzdMachineryContractAlterationService;
import java.util.*;
/**
* 机械合同变更Service业务层处理
*
* @author Lion Li
* @date 2025-11-12
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class XzdMachineryContractAlterationServiceImpl extends ServiceImpl<XzdMachineryContractAlterationMapper, XzdMachineryContractAlteration> implements IXzdMachineryContractAlterationService {
private final XzdMachineryContractAlterationMapper baseMapper;
private final IXzdContractMachineryService xzdContractMachineryService;
@Autowired
private XzdBusinessChangeServiceImpl xzdBusinessChangeService;
@Autowired
private XzdBusinessSealServiceImpl xzdBusinessSealService;
@Autowired
private XzdContractAdvanceInfoServiceImpl xzdContractAdvanceInfoService;
@Autowired
private XzdDeductionItemsServiceImpl xzdDeductionItemsService;
@Autowired
private XzdContractClauseServiceImpl xzdContractClauseService;
@Autowired
private SysOssServiceImpl sysOssService;
private final IXzdContractAdvanceInfoService iXzdContractAdvanceInfoService;
private final IXzdDeductionItemsService iXzdDeductionItemsService;
private final IXzdContractClauseService iXzdContractClauseService;
private final IXzdEquipmentLeasingService xzdEquipmentLeasingService;
/**
* 查询机械合同变更
*
* @param id 主键
* @return 机械合同变更
*/
@Override
public XzdMachineryContractAlterationVo queryById(Long id){
XzdMachineryContractAlterationVo xzdPurchaseContractAlterationVo = baseMapper.selectVoById(id);
List<XzdMachineryContractAlterationVo> list = List.of(xzdPurchaseContractAlterationVo);
saveValue(list);
return list.getFirst();
}
/**
* 分页查询机械合同变更列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 机械合同变更分页列表
*/
@Override
public TableDataInfo<XzdMachineryContractAlterationVo> queryPageList(XzdMachineryContractAlterationBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdMachineryContractAlteration> lqw = buildQueryWrapper(bo);
Page<XzdMachineryContractAlterationVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
saveValue(result.getRecords());
return TableDataInfo.build(result);
}
private void saveValue(List<XzdMachineryContractAlterationVo> records) {
for (XzdMachineryContractAlterationVo item : records) {
// 机械
List<XzdEquipmentLeasing> xzdEquipmentLeasings = xzdEquipmentLeasingService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdEquipmentLeasing>().eq(XzdEquipmentLeasing::getRelevanceId, item.getId()));
if (xzdEquipmentLeasings != null && xzdEquipmentLeasings.size() > 0) {
item.setJqlist(xzdEquipmentLeasings);
}
// 合同编码
if (item.getContractInformationId() != null){
XzdContractMachineryVo vo = xzdContractMachineryService.queryById(item.getContractInformationId());
if (vo != null){
item.setContractInformationName(vo.getContractCode());
}
}
//印章信息
LambdaQueryWrapper<XzdBusinessChange> xzdBusinessChangeWrapper = new LambdaQueryWrapper<>();
xzdBusinessChangeWrapper.eq(XzdBusinessChange::getContractChangeId, item.getId());
List<XzdBusinessChange> xzdBusinessChanges = xzdBusinessChangeService.list(xzdBusinessChangeWrapper);
for (XzdBusinessChange businessChange : xzdBusinessChanges) {
XzdBusinessSealVo sealVo = xzdBusinessSealService.queryById(businessChange.getBusinessId());
if (sealVo != null){
businessChange.setSealName(sealVo.getYzName());
}
}
item.setSealInfo(xzdBusinessChanges);
//合同文本-预收款项
LambdaQueryWrapper<XzdContractAdvanceInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(XzdContractAdvanceInfo::getContractDetailsId, item.getId());
List<XzdContractAdvanceInfo> advanceInfos = xzdContractAdvanceInfoService.list(lambdaQueryWrapper);
item.setYskx(advanceInfos);
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.eq(XzdDeductionItems::getContractDetailsId, item.getId());
List<XzdDeductionItems> list = xzdDeductionItemsService.list(lambdaQueryWrapper1);
item.setKkyjlx(list);
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, item.getId());
List<XzdContractClause> list1 = xzdContractClauseService.list(lambdaQueryWrapper2);
item.setHttk(list1);
}
}
/**
* 查询符合条件的机械合同变更列表
*
* @param bo 查询条件
* @return 机械合同变更列表
*/
@Override
public List<XzdMachineryContractAlterationVo> queryList(XzdMachineryContractAlterationBo bo) {
LambdaQueryWrapper<XzdMachineryContractAlteration> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdMachineryContractAlteration> buildQueryWrapper(XzdMachineryContractAlterationBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdMachineryContractAlteration> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdMachineryContractAlteration::getId);
lqw.eq(bo.getContractInformationId() != null, XzdMachineryContractAlteration::getContractInformationId, bo.getContractInformationId());
lqw.eq(StringUtils.isNotBlank(bo.getReceiptsCode()), XzdMachineryContractAlteration::getReceiptsCode, bo.getReceiptsCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdMachineryContractAlteration::getTitle, bo.getTitle());
lqw.eq(bo.getDocumentDate() != null, XzdMachineryContractAlteration::getDocumentDate, bo.getDocumentDate());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdMachineryContractAlteration::getContractName, bo.getContractName());
lqw.eq(StringUtils.isNotBlank(bo.getContractType()), XzdMachineryContractAlteration::getContractType, bo.getContractType());
lqw.eq(StringUtils.isNotBlank(bo.getAlterationType()), XzdMachineryContractAlteration::getAlterationType, bo.getAlterationType());
lqw.eq(StringUtils.isNotBlank(bo.getProject()), XzdMachineryContractAlteration::getProject, bo.getProject());
lqw.eq(StringUtils.isNotBlank(bo.getBusinessModel()), XzdMachineryContractAlteration::getBusinessModel, bo.getBusinessModel());
lqw.eq(bo.getOriginalContractCost() != null, XzdMachineryContractAlteration::getOriginalContractCost, bo.getOriginalContractCost());
lqw.eq(bo.getPaymentRatio() != null, XzdMachineryContractAlteration::getPaymentRatio, bo.getPaymentRatio());
lqw.eq(bo.getPartyAUnit() != null, XzdMachineryContractAlteration::getPartyAUnit, bo.getPartyAUnit());
lqw.eq(bo.getCentralizedPurchasingMode() != null, XzdMachineryContractAlteration::getCentralizedPurchasingMode, bo.getCentralizedPurchasingMode());
lqw.eq(bo.getArtyBUnit() != null, XzdMachineryContractAlteration::getArtyBUnit, bo.getArtyBUnit());
lqw.eq(StringUtils.isNotBlank(bo.getWarning()), XzdMachineryContractAlteration::getWarning, bo.getWarning());
lqw.eq(bo.getCumulativeChangeAmount() != null, XzdMachineryContractAlteration::getCumulativeChangeAmount, bo.getCumulativeChangeAmount());
lqw.eq(StringUtils.isNotBlank(bo.getPaymentTerms()), XzdMachineryContractAlteration::getPaymentTerms, bo.getPaymentTerms());
lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), XzdMachineryContractAlteration::getRemarks, bo.getRemarks());
lqw.eq(bo.getBiangengyuanhetong() != null, XzdMachineryContractAlteration::getBiangengyuanhetong, bo.getBiangengyuanhetong());
lqw.eq(bo.getIsSeal() != null, XzdMachineryContractAlteration::getIsSeal, bo.getIsSeal());
lqw.eq(bo.getChangeProjectManager() != null, XzdMachineryContractAlteration::getChangeProjectManager, bo.getChangeProjectManager());
lqw.eq(bo.getChangeProjectResponsible() != null, XzdMachineryContractAlteration::getChangeProjectResponsible, bo.getChangeProjectResponsible());
lqw.eq(bo.getChangeSiteManager() != null, XzdMachineryContractAlteration::getChangeSiteManager, bo.getChangeSiteManager());
lqw.eq(StringUtils.isNotBlank(bo.getChangeContractRemarks()), XzdMachineryContractAlteration::getChangeContractRemarks, bo.getChangeContractRemarks());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdMachineryContractAlteration::getProjectCategory, bo.getProjectCategory());
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdMachineryContractAlteration::getProjectType, bo.getProjectType());
lqw.eq(bo.getPaymentNotExceedPayment() != null, XzdMachineryContractAlteration::getPaymentNotExceedPayment, bo.getPaymentNotExceedPayment());
lqw.eq(bo.getPaymentNotExceedContractRatio() != null, XzdMachineryContractAlteration::getPaymentNotExceedContractRatio, bo.getPaymentNotExceedContractRatio());
lqw.eq(bo.getPaymentNotExceedPaymentRatio() != null, XzdMachineryContractAlteration::getPaymentNotExceedPaymentRatio, bo.getPaymentNotExceedPaymentRatio());
lqw.eq(bo.getPreSettlementNotExceedContract() != null, XzdMachineryContractAlteration::getPreSettlementNotExceedContract, bo.getPreSettlementNotExceedContract());
lqw.eq(bo.getPreSettlementNotExceedContractRatio() != null, XzdMachineryContractAlteration::getPreSettlementNotExceedContractRatio, bo.getPreSettlementNotExceedContractRatio());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdMachineryContractAlteration::getFileId, bo.getFileId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdMachineryContractAlteration::getAuditStatus, bo.getAuditStatus());
lqw.eq(StringUtils.isNotBlank(bo.getChangeInTotalAmount()), XzdMachineryContractAlteration::getChangeInTotalAmount, bo.getChangeInTotalAmount());
lqw.eq(StringUtils.isNotBlank(bo.getRevisedTotalAmount()), XzdMachineryContractAlteration::getRevisedTotalAmount, bo.getRevisedTotalAmount());
lqw.eq(StringUtils.isNotBlank(bo.getContractText()), XzdMachineryContractAlteration::getContractText, bo.getContractText());
lqw.eq(bo.getDeptId() != null, XzdMachineryContractAlteration::getDeptId, bo.getDeptId());
return lqw;
}
/**
* 新增机械合同变更
*
* @param bo 机械合同变更
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdMachineryContractAlterationBo bo) {
XzdMachineryContractAlteration add = MapstructUtils.convert(bo, XzdMachineryContractAlteration.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("JXHTXX-");
add.setReceiptsCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
String tableName = XzdClassEnum.JIXIEHETONGBIANG_XINXI.getClassName();
//合同文本-预收款项
for (XzdContractAdvanceInfo yskx : bo.getYskx()) {
yskx.setTableName(tableName);
yskx.setContractDetailsId(add.getId());
}
xzdContractAdvanceInfoService.saveBatch(bo.getYskx());
//合同条款-扣款与奖励项
for (XzdDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setContractDetailsId(add.getId());
}
xzdDeductionItemsService.saveBatch(bo.getKkyjlx());
//合同条款-合同条款
for (XzdContractClause clause : bo.getHttk()) {
clause.setTableName(tableName);
clause.setContractDetailsId(add.getId());
}
xzdContractClauseService.saveBatch(bo.getHttk());
//印章信息
if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()){
for (XzdBusinessChange sealInfo : bo.getSealInfo()) {
sealInfo.setContractChangeId(add.getId());
sealInfo.setType("14");
}
xzdBusinessChangeService.saveBatch(bo.getSealInfo());
}
// 机械列表
if (bo.getJqlist() != null && !bo.getJqlist().isEmpty()){
for (XzdEquipmentLeasing xzdEquipmentLeasing : bo.getJqlist()) {
xzdEquipmentLeasing.setRelevanceId(add.getId());
}
xzdEquipmentLeasingService.saveBatch(bo.getJqlist());
}
return flag;
}
/**
* 修改机械合同变更
*
* @param bo 机械合同变更
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdMachineryContractAlterationBo bo) {
XzdMachineryContractAlteration update = MapstructUtils.convert(bo, XzdMachineryContractAlteration.class);
validEntityBeforeSave(update);
/**
* 预收款项 优先删除数据在添加
*/
String tableName = XzdClassEnum.JIXIEHETONG_JINDU.getClassName();
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("contract_details_id", bo.getId());
List<XzdContractAdvanceInfo> yskx = bo.getYskx();
iXzdContractAdvanceInfoService.getBaseMapper().deleteByMap(hashMap);
if (yskx != null){
yskx.forEach(item -> {
item.setTableName(tableName);
item.setContractDetailsId(bo.getId());
});
iXzdContractAdvanceInfoService.saveBatch(yskx);
}
/**
* 扣款与奖励项
*/
List<XzdDeductionItems> kkyjlx = bo.getKkyjlx();
iXzdDeductionItemsService.getBaseMapper().deleteByMap(hashMap);
if(kkyjlx != null){
kkyjlx.forEach(item -> {
item.setTableName(tableName);
item.setContractDetailsId(bo.getId());
});
iXzdDeductionItemsService.saveBatch(kkyjlx);
}
/**
* 合同条款
*/
List<XzdContractClause> httk = bo.getHttk();
iXzdContractClauseService.getBaseMapper().deleteByMap(hashMap);
if (httk != null){
httk.forEach(item -> {
item.setTableName(tableName);
item.setContractDetailsId(bo.getId());
});
iXzdContractClauseService.saveBatch(httk);
}
// 机械租聘
xzdEquipmentLeasingService.getBaseMapper().delete(new LambdaQueryWrapper<XzdEquipmentLeasing>().eq(XzdEquipmentLeasing::getRelevanceId,bo.getId()));
if (bo.getJqlist() != null && !bo.getJqlist().isEmpty()){
for (XzdEquipmentLeasing xzdEquipmentLeasing : bo.getJqlist()) {
xzdEquipmentLeasing.setRelevanceId(update.getId());
}
xzdEquipmentLeasingService.saveBatch(bo.getJqlist());
}
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdMachineryContractAlteration entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除机械合同变更信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
for (Long id : ids) {
XzdMachineryContractAlterationVo vo = baseMapper.selectVoById(id);
if (vo != null){
//删除附件
if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){
List<Long> deleteIds = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList();
if (!deleteIds.isEmpty()) {
sysOssService.deleteWithValidByIds(deleteIds, false);
}
}
}
}
//印章信息
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().in(XzdBusinessChange::getContractChangeId, ids));
//合同文本-预收款项
LambdaQueryWrapper<XzdContractAdvanceInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(XzdContractAdvanceInfo::getContractDetailsId, ids);
xzdContractAdvanceInfoService.remove(lambdaQueryWrapper);
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.in(XzdDeductionItems::getContractDetailsId, ids);
xzdDeductionItemsService.remove(lambdaQueryWrapper1);
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.in(XzdContractClause::getContractDetailsId, ids);
xzdContractClauseService.remove(lambdaQueryWrapper2);
// 机械租聘
xzdEquipmentLeasingService.getBaseMapper().delete(new LambdaQueryWrapper<XzdEquipmentLeasing>().in(XzdEquipmentLeasing::getRelevanceId,ids));
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdjxhtbg')")
public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
log.info("机械合同变更审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
XzdMachineryContractAlteration vo = baseMapper.selectById(Long.valueOf(id));
if (vo == null) {
return;
}
vo.setAuditStatus(processEvent.getStatus());
this.updateById(vo);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdjxhtbg')")
public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) {
log.info("机械合同变更审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('xzdjxhtbg')")
public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) {
log.info("机械合同变更删除流程事件,机械合同变更审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo.XzdContractMachineryVo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.bo.XzdContractMachineryBo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.service.IXzdContractMachineryService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 机械合同信息
*
* @author Lion Li
* @date 2025-11-12
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/xzd/jixiehetongxinxi/contractMachinery")
public class XzdContractMachineryController extends BaseController {
private final IXzdContractMachineryService xzdContractMachineryService;
/**
* 查询机械合同信息列表
*/
@SaCheckPermission("jixiehetongxinxi:contractMachinery:list")
@GetMapping("/list")
public TableDataInfo<XzdContractMachineryVo> list(XzdContractMachineryBo bo, PageQuery pageQuery) {
return xzdContractMachineryService.queryPageList(bo, pageQuery);
}
/**
* 导出机械合同信息列表
*/
@SaCheckPermission("jixiehetongxinxi:contractMachinery:export")
@Log(title = "机械合同信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdContractMachineryBo bo, HttpServletResponse response) {
List<XzdContractMachineryVo> list = xzdContractMachineryService.queryList(bo);
ExcelUtil.exportExcel(list, "机械合同信息", XzdContractMachineryVo.class, response);
}
/**
* 获取机械合同信息详细信息
*
* @param id 主键
*/
@SaCheckPermission("jixiehetongxinxi:contractMachinery:query")
@GetMapping("/{id}")
public R<XzdContractMachineryVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdContractMachineryService.queryById(id));
}
/**
* 新增机械合同信息
*/
@SaCheckPermission("jixiehetongxinxi:contractMachinery:add")
@Log(title = "机械合同信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdContractMachineryBo bo) {
return toAjax(xzdContractMachineryService.insertByBo(bo));
}
/**
* 修改机械合同信息
*/
@SaCheckPermission("jixiehetongxinxi:contractMachinery:edit")
@Log(title = "机械合同信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdContractMachineryBo bo) {
return toAjax(xzdContractMachineryService.updateByBo(bo));
}
/**
* 删除机械合同信息
*
* @param ids 主键串
*/
@SaCheckPermission("jixiehetongxinxi:contractMachinery:remove")
@Log(title = "机械合同信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdContractMachineryService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,248 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.io.Serial;
import java.time.LocalDate;
/**
* 机械合同信息对象 xzd_contract_machinery
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_contract_machinery")
public class XzdContractMachinery extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 合同编码
*/
private String contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 单据日期
*/
private LocalDate documentDate;
/**
* 合同类型,例如:主要物资采购合同
*/
private String contractType;
/**
* 项目
*/
private Long project;
/**
* 经营模式
*/
private String businessModel;
/**
* 原合同造价
*/
private BigDecimal originalContractCost;
/**
* 签订日期
*/
private LocalDate signingDate;
/**
* 甲方单位
*/
private Long partyAUnit;
/**
* 含税合同金额
*/
private BigDecimal taxInclusiveContractAmount;
/**
* 合同状态,例如:新增
*/
private String contractStatus;
/**
* 累计变更金额
*/
private BigDecimal cumulativeChangeAmount;
/**
* 归档日期
*/
private LocalDate filingDate;
/**
* 管理组织
*/
private Long managementOrganization;
/**
* 开票单位(支持搜索,必填)
*/
private Long invoiceIssuingUnit;
/**
* 收票单位(支持搜索,必填)
*/
private Long invoiceReceivingUnit;
/**
* 警示信息
*/
private String warning;
/**
* 备注说明
*/
private String remarks;
/**
* 支付条款
*/
private String paymentTerms;
/**
* 集采模式
*/
private Long centralizedPurchasingMode;
/**
* 乙方单位
*/
private Long partyBUnit;
/**
* 其他收入合同组织
*/
private Long otherIncomeContractOrganization;
/**
* 其他收入合同项目
*/
private Long otherIncomeContractProject;
/**
* 其他收入合同类型
*/
private Long otherIncomeContractType;
/**
* 是否启用1-是0-否
*/
private Long isEnabled;
/**
* 大写合同价税合计
*/
private String capitalizedTaxInclusiveTotal;
/**
* 签约组织
*/
private Long signingOrganization;
/**
* 项目类型
*/
private String projectType;
/**
* 项目大类
*/
private String projectCategory;
/**
* 是否用印1-是0-否
*/
private Long isSeal;
/**
* 是否为固定单价合同1-是0-否
*/
private Long fixedUnitPriceContract;
/**
* 是否为总价包干合同1-是0-否
*/
private Long lumpSumContract;
/**
* 付款额是否不能超支付比例1-是0-否
*/
private Long paymentNotExceedPaymentRatio;
/**
* 付款额不能超合同额1-是0-否
*/
private Long paymentNotExceedPayment;
/**
* 付款额不能超合同额支付比例
*/
private BigDecimal paymentNotExceedContractRatio;
/**
* 预结算/结算额是否不能超合同额1-是0-否
*/
private Long preSettlementNotExceedContract;
/**
* 预结算/结算额不能超合同额比例
*/
private BigDecimal preSettlementNotExceedContractRatio;
/**
* 是否终止
*/
private String sfzz;
/**
* 合同文本
*/
private String contractText;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
/**
* 组织id
*/
private Long deptId;
}

View File

@ -0,0 +1,81 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 机械合同信息-设备租赁对象 xzd_equipment_leasing
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_equipment_leasing")
public class XzdEquipmentLeasing extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 关联ID
*/
private Long relevanceId;
/**
* 设备名称
*/
private String equipmentName;
/**
* 规格型号
*/
private String specificationModel;
/**
* 数量(台)
*/
private Long quantity;
/**
* 租赁金额(元/H)
*/
private BigDecimal rentalAmountPerHour;
/**
* 工程量( H)
*/
private BigDecimal engineeringQuantity;
/**
* 金额(元)
*/
private BigDecimal totalAmount;
/**
* 备注
*/
private String remarks;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,290 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.bo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdContractMachinery;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractAdvanceInfo;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 机械合同信息业务对象 xzd_contract_machinery
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdContractMachinery.class, reverseConvertGenerate = false)
public class XzdContractMachineryBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 合同编码
*/
private String contractCode;
/**
* 合同名称
*/
@NotBlank(message = "合同名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractName;
/**
* 单据日期
*/
@NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate documentDate;
/**
* 合同类型,例如:主要物资采购合同
*/
@NotBlank(message = "合同类型,例如:主要物资采购合同不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractType;
/**
* 项目
*/
@NotNull(message = "项目不能为空", groups = { AddGroup.class, EditGroup.class })
private Long project;
/**
* 经营模式
*/
private String businessModel;
/**
* 原合同造价
*/
private BigDecimal originalContractCost;
/**
* 签订日期
*/
private LocalDate signingDate;
/**
* 甲方单位
*/
@NotNull(message = "甲方单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long partyAUnit;
/**
* 含税合同金额
*/
private BigDecimal taxInclusiveContractAmount;
/**
* 合同状态,例如:新增
*/
private String contractStatus;
/**
* 累计变更金额
*/
private BigDecimal cumulativeChangeAmount;
/**
* 归档日期
*/
private LocalDate filingDate;
/**
* 管理组织
*/
private Long managementOrganization;
/**
* 开票单位(支持搜索,必填)
*/
@NotNull(message = "开票单位(支持搜索,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long invoiceIssuingUnit;
/**
* 收票单位(支持搜索,必填)
*/
@NotNull(message = "收票单位(支持搜索,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long invoiceReceivingUnit;
/**
* 警示信息
*/
private String warning;
/**
* 备注说明
*/
private String remarks;
/**
* 支付条款
*/
private String paymentTerms;
/**
* 集采模式
*/
private Long centralizedPurchasingMode;
/**
* 乙方单位
*/
@NotNull(message = "乙方单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long partyBUnit;
/**
* 其他收入合同组织
*/
private Long otherIncomeContractOrganization;
/**
* 其他收入合同项目
*/
private Long otherIncomeContractProject;
/**
* 其他收入合同类型
*/
private Long otherIncomeContractType;
/**
* 是否启用1-是0-否
*/
private Long isEnabled;
/**
* 大写合同价税合计
*/
private String capitalizedTaxInclusiveTotal;
/**
* 签约组织
*/
private Long signingOrganization;
/**
* 项目类型
*/
private String projectType;
/**
* 项目大类
*/
private String projectCategory;
/**
* 是否用印1-是0-否
*/
private Long isSeal;
/**
* 是否为固定单价合同1-是0-否
*/
private Long fixedUnitPriceContract;
/**
* 是否为总价包干合同1-是0-否
*/
private Long lumpSumContract;
/**
* 付款额是否不能超支付比例1-是0-否
*/
private Long paymentNotExceedPaymentRatio;
/**
* 付款额不能超合同额1-是0-否
*/
private Long paymentNotExceedPayment;
/**
* 付款额不能超合同额支付比例
*/
private BigDecimal paymentNotExceedContractRatio;
/**
* 预结算/结算额是否不能超合同额1-是0-否
*/
private Long preSettlementNotExceedContract;
/**
* 预结算/结算额不能超合同额比例
*/
private BigDecimal preSettlementNotExceedContractRatio;
/**
* 是否终止
*/
private String sfzz;
/**
* 合同文本
*/
private String contractText;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
/**
* 组织id
*/
private Long deptId;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
/**
* 设备租聘列表
*/
private List<XzdEquipmentLeasing> jqlist;
/**
* 预收款项
*/
private List<XzdContractAdvanceInfo> yskx;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
}

View File

@ -0,0 +1,90 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.bo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 机械合同信息-设备租赁业务对象 xzd_equipment_leasing
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdEquipmentLeasing.class, reverseConvertGenerate = false)
public class XzdEquipmentLeasingBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 关联ID
*/
private Long relevanceId;
/**
* 设备名称
*/
@NotBlank(message = "设备名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String equipmentName;
/**
* 规格型号
*/
private String specificationModel;
/**
* 数量(台)
*/
@NotNull(message = "数量(台)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long quantity;
/**
* 租赁金额(元/H)
*/
private BigDecimal rentalAmountPerHour;
/**
* 工程量( H)
*/
private BigDecimal engineeringQuantity;
/**
* 金额(元)
*/
private BigDecimal totalAmount;
/**
* 备注
*/
private String remarks;
/**
* 审核状态
*/
private String auditStatus;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新时间
*/
private Date updatedTime;
}

View File

@ -0,0 +1,428 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdContractMachinery;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractAdvanceInfo;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
* 机械合同信息视图对象 xzd_contract_machinery
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdContractMachinery.class)
public class XzdContractMachineryVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 合同编码
*/
@ExcelProperty(value = "合同编码")
private String contractCode;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 单据日期
*/
@ExcelProperty(value = "单据日期")
private LocalDate documentDate;
/**
* 合同类型,例如:主要物资采购合同
*/
@ExcelProperty(value = "合同类型,例如:主要物资采购合同")
private String contractType;
/**
* 阶段状态
*/
private String jdzt;
/**
* 项目
*/
@ExcelProperty(value = "项目")
private Long project;
/**
* 项目
*/
@ExcelProperty(value = "项目")
@Translation(type = TransConstant.XZD_PROJECT_ID_TO_NAME, mapper = "project")
private String projectName;
/**
* 经营模式
*/
@ExcelProperty(value = "经营模式")
private String businessModel;
/**
* 原合同造价
*/
@ExcelProperty(value = "原合同造价")
private BigDecimal originalContractCost;
/**
* 签订日期
*/
@ExcelProperty(value = "签订日期")
private LocalDate signingDate;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private Long partyAUnit;
/**
* 甲方单位名称
*/
@ExcelProperty(value = "甲方单位名称")
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyAUnit")
private String partyAUnitName;
/**
* 含税合同金额
*/
@ExcelProperty(value = "含税合同金额")
private BigDecimal taxInclusiveContractAmount;
/**
* 合同状态,例如:新增
*/
@ExcelProperty(value = "合同状态,例如:新增")
private String contractStatus;
/**
* 累计变更金额
*/
@ExcelProperty(value = "累计变更金额")
private BigDecimal cumulativeChangeAmount;
/**
* 归档日期
*/
@ExcelProperty(value = "归档日期")
private LocalDate filingDate;
/**
* 管理组织
*/
@ExcelProperty(value = "管理组织")
private Long managementOrganization;
/**
* 管理组织名称
*/
@ExcelProperty(value = "管理组织名称")
@Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "managementOrganization")
private String managementOrganizationName;
/**
* 开票单位(支持搜索,必填)
*/
@ExcelProperty(value = "开票单位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "支=持搜索,必填")
private Long invoiceIssuingUnit;
/**
* 开票单位名称
*/
@ExcelProperty(value = "开票单位名称", converter = ExcelDictConvert.class)
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "invoiceIssuingUnit")
private String invoiceIssuingUnitName;
/**
* 收票单位(支持搜索,必填)
*/
@ExcelProperty(value = "收票单位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "支=持搜索,必填")
private Long invoiceReceivingUnit;
/**
* 收票单位名称
*/
@ExcelProperty(value = "收票单位名称", converter = ExcelDictConvert.class)
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "invoiceReceivingUnit")
private String invoiceReceivingUnitName;
/**
* 警示信息
*/
@ExcelProperty(value = "警示信息")
private String warning;
/**
* 备注说明
*/
@ExcelProperty(value = "备注说明")
private String remarks;
/**
* 支付条款
*/
@ExcelProperty(value = "支付条款")
private String paymentTerms;
/**
* 集采模式
*/
@ExcelProperty(value = "集采模式")
private Long centralizedPurchasingMode;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private Long partyBUnit;
/**
* 乙方单位名称
*/
@ExcelProperty(value = "乙方单位名称")
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyBUnit")
private String partyBUnitName;
/**
* 其他收入合同组织
*/
@ExcelProperty(value = "其他收入合同组织")
private Long otherIncomeContractOrganization;
/**
* 其他收入合同组织名称
*/
@ExcelProperty(value = "其他收入合同组织名称")
@Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "otherIncomeContractOrganization")
private String otherIncomeContractOrganizationName;
/**
* 其他收入合同项目
*/
@ExcelProperty(value = "其他收入合同项目")
private Long otherIncomeContractProject;
/**
* 其他收入合同项目名称
*/
@ExcelProperty(value = "其他收入合同项目名称")
@Translation(type = TransConstant.XZD_PROJECT_ID_TO_NAME, mapper = "otherIncomeContractProject")
private String otherIncomeContractProjectName;
/**
* 其他收入合同类型
*/
@ExcelProperty(value = "其他收入合同类型")
private Long otherIncomeContractType;
/**
* 是否启用1-是0-否
*/
@ExcelProperty(value = "是否启用1-是0-否")
private Long isEnabled;
/**
* 大写合同价税合计
*/
@ExcelProperty(value = "大写合同价税合计")
private String capitalizedTaxInclusiveTotal;
/**
* 签约组织
*/
@ExcelProperty(value = "签约组织")
private Long signingOrganization;
/**
* 签约组织名称
*/
@ExcelProperty(value = "签约组织名称")
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "signingOrganization")
private String signingOrganizationName;
/**
* 项目类型
*/
@ExcelProperty(value = "项目类型")
private String projectType;
/**
* 项目大类
*/
@ExcelProperty(value = "项目大类")
private String projectCategory;
/**
* 是否用印1-是0-否
*/
@ExcelProperty(value = "是否用印1-是0-否")
private Long isSeal;
/**
* 是否为固定单价合同1-是0-否
*/
@ExcelProperty(value = "是否为固定单价合同1-是0-否")
private Long fixedUnitPriceContract;
/**
* 是否为总价包干合同1-是0-否
*/
@ExcelProperty(value = "是否为总价包干合同1-是0-否")
private Long lumpSumContract;
/**
* 付款额是否不能超支付比例1-是0-否
*/
@ExcelProperty(value = "付款额是否不能超支付比例1-是0-否")
private Long paymentNotExceedPaymentRatio;
/**
* 付款额不能超合同额1-是0-否
*/
@ExcelProperty(value = "付款额不能超合同额1-是0-否")
private Long paymentNotExceedPayment;
/**
* 付款额不能超合同额支付比例
*/
@ExcelProperty(value = "付款额不能超合同额支付比例")
private BigDecimal paymentNotExceedContractRatio;
/**
* 预结算/结算额是否不能超合同额1-是0-否
*/
@ExcelProperty(value = "预结算/结算额是否不能超合同额1-是0-否")
private Long preSettlementNotExceedContract;
/**
* 预结算/结算额不能超合同额比例
*/
@ExcelProperty(value = "预结算/结算额不能超合同额比例")
private BigDecimal preSettlementNotExceedContractRatio;
/**
* 是否终止
*/
@ExcelProperty(value = "是否终止")
private String sfzz;
/**
* 合同文本
*/
@ExcelProperty(value = "合同文本")
private String contractText;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
/**
* 创建者
*/
@TableField(fill = FieldFill.INSERT)
private Long createBy;
/**
* 创建者
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy")
@TableField(fill = FieldFill.INSERT)
private Long createByName;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 组织id
*/
@ExcelProperty(value = "组织id")
private Long deptId;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
/**
* 设备租聘列表
*/
private List<XzdEquipmentLeasing> jqlist;
/**
* 预收款项
*/
private List<XzdContractAdvanceInfo> yskx;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
}

View File

@ -0,0 +1,107 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 机械合同信息-设备租赁视图对象 xzd_equipment_leasing
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdEquipmentLeasing.class)
public class XzdEquipmentLeasingVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 关联ID
*/
@ExcelProperty(value = "关联ID")
private Long relevanceId;
/**
* 设备名称
*/
@ExcelProperty(value = "设备名称")
private String equipmentName;
/**
* 规格型号
*/
@ExcelProperty(value = "规格型号")
private String specificationModel;
/**
* 数量(台)
*/
@ExcelProperty(value = "数量(台)")
private Long quantity;
/**
* 租赁金额(元/H)
*/
@ExcelProperty(value = "租赁金额(元/H)")
private BigDecimal rentalAmountPerHour;
/**
* 工程量( H)
*/
@ExcelProperty(value = "工程量( H)")
private BigDecimal engineeringQuantity;
/**
* 金额(元)
*/
@ExcelProperty(value = "金额(元)")
private BigDecimal totalAmount;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remarks;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
/**
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private Date createdTime;
/**
* 更新时间
*/
@ExcelProperty(value = "更新时间")
private Date updatedTime;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.mapper;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdContractMachinery;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo.XzdContractMachineryVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 机械合同信息Mapper接口
*
* @author Lion Li
* @date 2025-11-12
*/
public interface XzdContractMachineryMapper extends BaseMapperPlus<XzdContractMachinery, XzdContractMachineryVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.mapper;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo.XzdEquipmentLeasingVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 机械合同信息-设备租赁Mapper接口
*
* @author Lion Li
* @date 2025-11-12
*/
public interface XzdEquipmentLeasingMapper extends BaseMapperPlus<XzdEquipmentLeasing, XzdEquipmentLeasingVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.service;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo.XzdContractMachineryVo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.bo.XzdContractMachineryBo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdContractMachinery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 机械合同信息Service接口
*
* @author Lion Li
* @date 2025-11-12
*/
public interface IXzdContractMachineryService extends IService<XzdContractMachinery>{
/**
* 查询机械合同信息
*
* @param id 主键
* @return 机械合同信息
*/
XzdContractMachineryVo queryById(Long id);
/**
* 分页查询机械合同信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 机械合同信息分页列表
*/
TableDataInfo<XzdContractMachineryVo> queryPageList(XzdContractMachineryBo bo, PageQuery pageQuery);
/**
* 查询符合条件的机械合同信息列表
*
* @param bo 查询条件
* @return 机械合同信息列表
*/
List<XzdContractMachineryVo> queryList(XzdContractMachineryBo bo);
/**
* 新增机械合同信息
*
* @param bo 机械合同信息
* @return 是否新增成功
*/
Boolean insertByBo(XzdContractMachineryBo bo);
/**
* 修改机械合同信息
*
* @param bo 机械合同信息
* @return 是否修改成功
*/
Boolean updateByBo(XzdContractMachineryBo bo);
/**
* 校验并批量删除机械合同信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.service;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo.XzdEquipmentLeasingVo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.bo.XzdEquipmentLeasingBo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 机械合同信息-设备租赁Service接口
*
* @author Lion Li
* @date 2025-11-12
*/
public interface IXzdEquipmentLeasingService extends IService<XzdEquipmentLeasing>{
/**
* 查询机械合同信息-设备租赁
*
* @param id 主键
* @return 机械合同信息-设备租赁
*/
XzdEquipmentLeasingVo queryById(Long id);
/**
* 分页查询机械合同信息-设备租赁列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 机械合同信息-设备租赁分页列表
*/
TableDataInfo<XzdEquipmentLeasingVo> queryPageList(XzdEquipmentLeasingBo bo, PageQuery pageQuery);
/**
* 查询符合条件的机械合同信息-设备租赁列表
*
* @param bo 查询条件
* @return 机械合同信息-设备租赁列表
*/
List<XzdEquipmentLeasingVo> queryList(XzdEquipmentLeasingBo bo);
/**
* 新增机械合同信息-设备租赁
*
* @param bo 机械合同信息-设备租赁
* @return 是否新增成功
*/
Boolean insertByBo(XzdEquipmentLeasingBo bo);
/**
* 修改机械合同信息-设备租赁
*
* @param bo 机械合同信息-设备租赁
* @return 是否修改成功
*/
Boolean updateByBo(XzdEquipmentLeasingBo bo);
/**
* 校验并批量删除机械合同信息-设备租赁信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,467 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.XzdSubcontractChange;
import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.XzdSubcontractTermination;
import org.dromara.xzd.contractManagement.jixiehetongbiang.domain.XzdMachineryContractAlteration;
import org.dromara.xzd.contractManagement.jixiehetongbiang.service.IXzdMachineryContractAlterationService;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.service.IXzdEquipmentLeasingService;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.XzdMachineryContractSuspend;
import org.dromara.xzd.contractManagement.jixiehetongzz.service.IXzdMachineryContractSuspendService;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.XzdPurchaseContractInformation;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdPurchaseContractInformationVo;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractAdvanceInfo;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
import org.dromara.xzd.enums.XzdClassEnum;
import org.dromara.xzd.enums.ZxdEnum;
import org.dromara.xzd.service.IXzdContractAdvanceInfoService;
import org.dromara.xzd.service.IXzdContractClauseService;
import org.dromara.xzd.service.IXzdDeductionItemsService;
import org.dromara.xzd.service.impl.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.bo.XzdContractMachineryBo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo.XzdContractMachineryVo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdContractMachinery;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.mapper.XzdContractMachineryMapper;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.service.IXzdContractMachineryService;
import java.util.*;
/**
* 机械合同信息Service业务层处理
*
* @author Lion Li
* @date 2025-11-12
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class XzdContractMachineryServiceImpl extends ServiceImpl<XzdContractMachineryMapper, XzdContractMachinery> implements IXzdContractMachineryService {
private final XzdContractMachineryMapper baseMapper;
@Autowired
private XzdBusinessChangeServiceImpl xzdBusinessChangeService;
@Autowired
private XzdBusinessSealServiceImpl xzdBusinessSealService;
@Autowired
private XzdContractAdvanceInfoServiceImpl xzdContractAdvanceInfoService;
@Autowired
private XzdDeductionItemsServiceImpl xzdDeductionItemsService;
@Autowired
private XzdContractClauseServiceImpl xzdContractClauseService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
@Lazy
private IXzdMachineryContractSuspendService xzdMachineryContractSuspendService;
@Autowired
@Lazy
private IXzdMachineryContractAlterationService xzdMachineryContractAlterationService;
private final IXzdContractAdvanceInfoService iXzdContractAdvanceInfoService;
private final IXzdDeductionItemsService iXzdDeductionItemsService;
private final IXzdContractClauseService iXzdContractClauseService;
private final IXzdEquipmentLeasingService xzdEquipmentLeasingService;
/**
* 查询机械合同信息
*
* @param id 主键
* @return 机械合同信息
*/
@Override
public XzdContractMachineryVo queryById(Long id){
XzdContractMachineryVo vo = baseMapper.selectVoById(id);
List<XzdContractMachineryVo> res = List.of(vo);
saveValue(res);
return res.getFirst();
}
/**
* 分页查询机械合同信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 机械合同信息分页列表
*/
@Override
public TableDataInfo<XzdContractMachineryVo> queryPageList(XzdContractMachineryBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdContractMachinery> lqw = buildQueryWrapper(bo);
Page<XzdContractMachineryVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
saveValue(result.getRecords());
return TableDataInfo.build(result);
}
private void saveValue(List<XzdContractMachineryVo> infos) {
for (XzdContractMachineryVo item : infos) {
// 机械
List<XzdEquipmentLeasing> xzdEquipmentLeasings = xzdEquipmentLeasingService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdEquipmentLeasing>().eq(XzdEquipmentLeasing::getRelevanceId, item.getId()));
if (xzdEquipmentLeasings != null && xzdEquipmentLeasings.size() > 0) {
item.setJqlist(xzdEquipmentLeasings);
}
//印章信息
LambdaQueryWrapper<XzdBusinessChange> xzdBusinessChangeWrapper = new LambdaQueryWrapper<>();
xzdBusinessChangeWrapper.eq(XzdBusinessChange::getContractChangeId, item.getId());
List<XzdBusinessChange> xzdBusinessChanges = xzdBusinessChangeService.list(xzdBusinessChangeWrapper);
for (XzdBusinessChange businessChange : xzdBusinessChanges) {
XzdBusinessSealVo sealVo = xzdBusinessSealService.queryById(businessChange.getBusinessId());
if (sealVo != null){
businessChange.setSealName(sealVo.getYzName());
}
}
item.setSealInfo(xzdBusinessChanges);
//合同文本-预收款项
LambdaQueryWrapper<XzdContractAdvanceInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(XzdContractAdvanceInfo::getContractDetailsId, item.getId());
List<XzdContractAdvanceInfo> advanceInfos = xzdContractAdvanceInfoService.list(lambdaQueryWrapper);
item.setYskx(advanceInfos);
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.eq(XzdDeductionItems::getContractDetailsId, item.getId());
List<XzdDeductionItems> list = xzdDeductionItemsService.list(lambdaQueryWrapper1);
item.setKkyjlx(list);
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, item.getId());
List<XzdContractClause> list1 = xzdContractClauseService.list(lambdaQueryWrapper2);
item.setHttk(list1);
// 阶段状态
item.setJdzt(ZxdEnum.HETONGZTYS.getTypeValue());
Long l = xzdMachineryContractAlterationService.getBaseMapper().selectCount(new LambdaQueryWrapper<XzdMachineryContractAlteration>().eq(XzdMachineryContractAlteration::getContractInformationId, item.getId()));
if (l > 0) {
item.setJdzt(ZxdEnum.HETONGZTBG.getTypeValue());
}
Long l1 = xzdMachineryContractSuspendService.getBaseMapper().selectCount(new LambdaQueryWrapper<XzdMachineryContractSuspend>().eq(XzdMachineryContractSuspend::getContractInformationId, item.getId()));
if (l1 > 0) {
item.setJdzt(ZxdEnum.HETONGZTZZ.getTypeValue());
}
}
}
/**
* 查询符合条件的机械合同信息列表
*
* @param bo 查询条件
* @return 机械合同信息列表
*/
@Override
public List<XzdContractMachineryVo> queryList(XzdContractMachineryBo bo) {
LambdaQueryWrapper<XzdContractMachinery> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdContractMachinery> buildQueryWrapper(XzdContractMachineryBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdContractMachinery> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdContractMachinery::getId);
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdContractMachinery::getContractCode, bo.getContractCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdContractMachinery::getContractName, bo.getContractName());
lqw.eq(bo.getDocumentDate() != null, XzdContractMachinery::getDocumentDate, bo.getDocumentDate());
lqw.eq(StringUtils.isNotBlank(bo.getContractType()), XzdContractMachinery::getContractType, bo.getContractType());
lqw.eq(bo.getProject() != null, XzdContractMachinery::getProject, bo.getProject());
lqw.eq(StringUtils.isNotBlank(bo.getBusinessModel()), XzdContractMachinery::getBusinessModel, bo.getBusinessModel());
lqw.eq(bo.getOriginalContractCost() != null, XzdContractMachinery::getOriginalContractCost, bo.getOriginalContractCost());
lqw.eq(bo.getSigningDate() != null, XzdContractMachinery::getSigningDate, bo.getSigningDate());
lqw.eq(bo.getPartyAUnit() != null, XzdContractMachinery::getPartyAUnit, bo.getPartyAUnit());
lqw.eq(bo.getTaxInclusiveContractAmount() != null, XzdContractMachinery::getTaxInclusiveContractAmount, bo.getTaxInclusiveContractAmount());
lqw.eq(StringUtils.isNotBlank(bo.getContractStatus()), XzdContractMachinery::getContractStatus, bo.getContractStatus());
lqw.eq(bo.getCumulativeChangeAmount() != null, XzdContractMachinery::getCumulativeChangeAmount, bo.getCumulativeChangeAmount());
lqw.eq(bo.getFilingDate() != null, XzdContractMachinery::getFilingDate, bo.getFilingDate());
lqw.eq(bo.getManagementOrganization() != null, XzdContractMachinery::getManagementOrganization, bo.getManagementOrganization());
lqw.eq(bo.getInvoiceIssuingUnit() != null, XzdContractMachinery::getInvoiceIssuingUnit, bo.getInvoiceIssuingUnit());
lqw.eq(bo.getInvoiceReceivingUnit() != null, XzdContractMachinery::getInvoiceReceivingUnit, bo.getInvoiceReceivingUnit());
lqw.eq(StringUtils.isNotBlank(bo.getWarning()), XzdContractMachinery::getWarning, bo.getWarning());
lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), XzdContractMachinery::getRemarks, bo.getRemarks());
lqw.eq(StringUtils.isNotBlank(bo.getPaymentTerms()), XzdContractMachinery::getPaymentTerms, bo.getPaymentTerms());
lqw.eq(bo.getCentralizedPurchasingMode() != null, XzdContractMachinery::getCentralizedPurchasingMode, bo.getCentralizedPurchasingMode());
lqw.eq(bo.getPartyBUnit() != null, XzdContractMachinery::getPartyBUnit, bo.getPartyBUnit());
lqw.eq(bo.getOtherIncomeContractOrganization() != null, XzdContractMachinery::getOtherIncomeContractOrganization, bo.getOtherIncomeContractOrganization());
lqw.eq(bo.getOtherIncomeContractProject() != null, XzdContractMachinery::getOtherIncomeContractProject, bo.getOtherIncomeContractProject());
lqw.eq(bo.getOtherIncomeContractType() != null, XzdContractMachinery::getOtherIncomeContractType, bo.getOtherIncomeContractType());
lqw.eq(bo.getIsEnabled() != null, XzdContractMachinery::getIsEnabled, bo.getIsEnabled());
lqw.eq(StringUtils.isNotBlank(bo.getCapitalizedTaxInclusiveTotal()), XzdContractMachinery::getCapitalizedTaxInclusiveTotal, bo.getCapitalizedTaxInclusiveTotal());
lqw.eq(bo.getSigningOrganization() != null, XzdContractMachinery::getSigningOrganization, bo.getSigningOrganization());
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdContractMachinery::getProjectType, bo.getProjectType());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdContractMachinery::getProjectCategory, bo.getProjectCategory());
lqw.eq(bo.getIsSeal() != null, XzdContractMachinery::getIsSeal, bo.getIsSeal());
lqw.eq(bo.getFixedUnitPriceContract() != null, XzdContractMachinery::getFixedUnitPriceContract, bo.getFixedUnitPriceContract());
lqw.eq(bo.getLumpSumContract() != null, XzdContractMachinery::getLumpSumContract, bo.getLumpSumContract());
lqw.eq(bo.getPaymentNotExceedPaymentRatio() != null, XzdContractMachinery::getPaymentNotExceedPaymentRatio, bo.getPaymentNotExceedPaymentRatio());
lqw.eq(bo.getPaymentNotExceedPayment() != null, XzdContractMachinery::getPaymentNotExceedPayment, bo.getPaymentNotExceedPayment());
lqw.eq(bo.getPaymentNotExceedContractRatio() != null, XzdContractMachinery::getPaymentNotExceedContractRatio, bo.getPaymentNotExceedContractRatio());
lqw.eq(bo.getPreSettlementNotExceedContract() != null, XzdContractMachinery::getPreSettlementNotExceedContract, bo.getPreSettlementNotExceedContract());
lqw.eq(bo.getPreSettlementNotExceedContractRatio() != null, XzdContractMachinery::getPreSettlementNotExceedContractRatio, bo.getPreSettlementNotExceedContractRatio());
lqw.eq(StringUtils.isNotBlank(bo.getSfzz()), XzdContractMachinery::getSfzz, bo.getSfzz());
lqw.eq(StringUtils.isNotBlank(bo.getContractText()), XzdContractMachinery::getContractText, bo.getContractText());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdContractMachinery::getFileId, bo.getFileId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdContractMachinery::getAuditStatus, bo.getAuditStatus());
lqw.eq(bo.getDeptId() != null, XzdContractMachinery::getDeptId, bo.getDeptId());
return lqw;
}
/**
* 新增机械合同信息
*
* @param bo 机械合同信息
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdContractMachineryBo bo) {
XzdContractMachinery add = MapstructUtils.convert(bo, XzdContractMachinery.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("JXHTXX-");
add.setContractCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
String tableName = XzdClassEnum.JIXIEHETONG_JINDU.getClassName();
//合同文本-预收款项
for (XzdContractAdvanceInfo yskx : bo.getYskx()) {
yskx.setTableName(tableName);
yskx.setContractDetailsId(add.getId());
}
xzdContractAdvanceInfoService.saveBatch(bo.getYskx());
//合同条款-扣款与奖励项
for (XzdDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setContractDetailsId(add.getId());
}
xzdDeductionItemsService.saveBatch(bo.getKkyjlx());
//合同条款-合同条款
for (XzdContractClause clause : bo.getHttk()) {
clause.setTableName(tableName);
clause.setContractDetailsId(add.getId());
}
xzdContractClauseService.saveBatch(bo.getHttk());
//印章信息
if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()){
for (XzdBusinessChange sealInfo : bo.getSealInfo()) {
sealInfo.setContractChangeId(add.getId());
sealInfo.setType("13");
}
xzdBusinessChangeService.saveBatch(bo.getSealInfo());
}
// 机械列表
if (bo.getJqlist() != null && !bo.getJqlist().isEmpty()){
for (XzdEquipmentLeasing xzdEquipmentLeasing : bo.getJqlist()) {
xzdEquipmentLeasing.setRelevanceId(add.getId());
}
xzdEquipmentLeasingService.saveBatch(bo.getJqlist());
}
return flag;
}
/**
* 修改机械合同信息
*
* @param bo 机械合同信息
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdContractMachineryBo bo) {
XzdContractMachinery update = MapstructUtils.convert(bo, XzdContractMachinery.class);
validEntityBeforeSave(update);
/**
* 预收款项 优先删除数据在添加
*/
String tableName = XzdClassEnum.JIXIEHETONG_JINDU.getClassName();
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("contract_details_id", bo.getId());
List<XzdContractAdvanceInfo> yskx = bo.getYskx();
iXzdContractAdvanceInfoService.getBaseMapper().deleteByMap(hashMap);
if (yskx != null){
yskx.forEach(item -> {
item.setTableName(tableName);
item.setContractDetailsId(bo.getId());
});
iXzdContractAdvanceInfoService.saveBatch(yskx);
}
/**
* 扣款与奖励项
*/
List<XzdDeductionItems> kkyjlx = bo.getKkyjlx();
iXzdDeductionItemsService.getBaseMapper().deleteByMap(hashMap);
if(kkyjlx != null){
kkyjlx.forEach(item -> {
item.setTableName(tableName);
item.setContractDetailsId(bo.getId());
});
iXzdDeductionItemsService.saveBatch(kkyjlx);
}
/**
* 合同条款
*/
List<XzdContractClause> httk = bo.getHttk();
iXzdContractClauseService.getBaseMapper().deleteByMap(hashMap);
if (httk != null){
httk.forEach(item -> {
item.setTableName(tableName);
item.setContractDetailsId(bo.getId());
});
iXzdContractClauseService.saveBatch(httk);
}
// 机械租聘
xzdEquipmentLeasingService.getBaseMapper().delete(new LambdaQueryWrapper<XzdEquipmentLeasing>().eq(XzdEquipmentLeasing::getRelevanceId,bo.getId()));
if (bo.getJqlist() != null && !bo.getJqlist().isEmpty()){
for (XzdEquipmentLeasing xzdEquipmentLeasing : bo.getJqlist()) {
xzdEquipmentLeasing.setRelevanceId(update.getId());
}
xzdEquipmentLeasingService.saveBatch(bo.getJqlist());
}
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdContractMachinery entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除机械合同信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
for (Long id : ids) {
XzdContractMachineryVo vo = baseMapper.selectVoById(id);
if (vo != null){
//删除附件
if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){
List<Long> deleteIds = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList();
if (!deleteIds.isEmpty()) {
sysOssService.deleteWithValidByIds(deleteIds, false);
}
}
}
}
//印章信息
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().in(XzdBusinessChange::getContractChangeId, ids));
//合同文本-预收款项
LambdaQueryWrapper<XzdContractAdvanceInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(XzdContractAdvanceInfo::getContractDetailsId, ids);
xzdContractAdvanceInfoService.remove(lambdaQueryWrapper);
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.in(XzdDeductionItems::getContractDetailsId, ids);
xzdDeductionItemsService.remove(lambdaQueryWrapper1);
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.in(XzdContractClause::getContractDetailsId, ids);
xzdContractClauseService.remove(lambdaQueryWrapper2);
// 机械租聘
xzdEquipmentLeasingService.getBaseMapper().delete(new LambdaQueryWrapper<XzdEquipmentLeasing>().in(XzdEquipmentLeasing::getRelevanceId,ids));
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdjxsp')")
public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
log.info("机械合同信息审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
XzdContractMachinery vo = baseMapper.selectById(Long.valueOf(id));
if (vo == null) {
return;
}
vo.setAuditStatus(processEvent.getStatus());
this.updateById(vo);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdjxsp')")
public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) {
log.info("机械合同信息审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('xzdjxsp')")
public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) {
log.info("机械合同信息删除流程事件,机械合同信息审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -0,0 +1,139 @@
package org.dromara.xzd.contractManagement.jixiehetongxinxi.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.bo.XzdEquipmentLeasingBo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo.XzdEquipmentLeasingVo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdEquipmentLeasing;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.mapper.XzdEquipmentLeasingMapper;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.service.IXzdEquipmentLeasingService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 机械合同信息-设备租赁Service业务层处理
*
* @author Lion Li
* @date 2025-11-12
*/
@RequiredArgsConstructor
@Service
public class XzdEquipmentLeasingServiceImpl extends ServiceImpl<XzdEquipmentLeasingMapper, XzdEquipmentLeasing> implements IXzdEquipmentLeasingService {
private final XzdEquipmentLeasingMapper baseMapper;
/**
* 查询机械合同信息-设备租赁
*
* @param id 主键
* @return 机械合同信息-设备租赁
*/
@Override
public XzdEquipmentLeasingVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询机械合同信息-设备租赁列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 机械合同信息-设备租赁分页列表
*/
@Override
public TableDataInfo<XzdEquipmentLeasingVo> queryPageList(XzdEquipmentLeasingBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdEquipmentLeasing> lqw = buildQueryWrapper(bo);
Page<XzdEquipmentLeasingVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的机械合同信息-设备租赁列表
*
* @param bo 查询条件
* @return 机械合同信息-设备租赁列表
*/
@Override
public List<XzdEquipmentLeasingVo> queryList(XzdEquipmentLeasingBo bo) {
LambdaQueryWrapper<XzdEquipmentLeasing> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdEquipmentLeasing> buildQueryWrapper(XzdEquipmentLeasingBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdEquipmentLeasing> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdEquipmentLeasing::getId);
lqw.eq(bo.getRelevanceId() != null, XzdEquipmentLeasing::getRelevanceId, bo.getRelevanceId());
lqw.like(StringUtils.isNotBlank(bo.getEquipmentName()), XzdEquipmentLeasing::getEquipmentName, bo.getEquipmentName());
lqw.eq(StringUtils.isNotBlank(bo.getSpecificationModel()), XzdEquipmentLeasing::getSpecificationModel, bo.getSpecificationModel());
lqw.eq(bo.getQuantity() != null, XzdEquipmentLeasing::getQuantity, bo.getQuantity());
lqw.eq(bo.getRentalAmountPerHour() != null, XzdEquipmentLeasing::getRentalAmountPerHour, bo.getRentalAmountPerHour());
lqw.eq(bo.getEngineeringQuantity() != null, XzdEquipmentLeasing::getEngineeringQuantity, bo.getEngineeringQuantity());
lqw.eq(bo.getTotalAmount() != null, XzdEquipmentLeasing::getTotalAmount, bo.getTotalAmount());
lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), XzdEquipmentLeasing::getRemarks, bo.getRemarks());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdEquipmentLeasing::getAuditStatus, bo.getAuditStatus());
return lqw;
}
/**
* 新增机械合同信息-设备租赁
*
* @param bo 机械合同信息-设备租赁
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdEquipmentLeasingBo bo) {
XzdEquipmentLeasing add = MapstructUtils.convert(bo, XzdEquipmentLeasing.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改机械合同信息-设备租赁
*
* @param bo 机械合同信息-设备租赁
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdEquipmentLeasingBo bo) {
XzdEquipmentLeasing update = MapstructUtils.convert(bo, XzdEquipmentLeasing.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdEquipmentLeasing entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除机械合同信息-设备租赁信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.contractManagement.jixiehetongzz.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.vo.XzdMachineryContractSuspendVo;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.bo.XzdMachineryContractSuspendBo;
import org.dromara.xzd.contractManagement.jixiehetongzz.service.IXzdMachineryContractSuspendService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 机械合同终止
*
* @author Lion Li
* @date 2025-11-12
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/xzd/jixiehetongzz/machineryContractSuspend")
public class XzdMachineryContractSuspendController extends BaseController {
private final IXzdMachineryContractSuspendService xzdMachineryContractSuspendService;
/**
* 查询机械合同终止列表
*/
@SaCheckPermission("jixiehetongzz:machineryContractSuspend:list")
@GetMapping("/list")
public TableDataInfo<XzdMachineryContractSuspendVo> list(XzdMachineryContractSuspendBo bo, PageQuery pageQuery) {
return xzdMachineryContractSuspendService.queryPageList(bo, pageQuery);
}
/**
* 导出机械合同终止列表
*/
@SaCheckPermission("jixiehetongzz:machineryContractSuspend:export")
@Log(title = "机械合同终止", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdMachineryContractSuspendBo bo, HttpServletResponse response) {
List<XzdMachineryContractSuspendVo> list = xzdMachineryContractSuspendService.queryList(bo);
ExcelUtil.exportExcel(list, "机械合同终止", XzdMachineryContractSuspendVo.class, response);
}
/**
* 获取机械合同终止详细信息
*
* @param id 主键
*/
@SaCheckPermission("jixiehetongzz:machineryContractSuspend:query")
@GetMapping("/{id}")
public R<XzdMachineryContractSuspendVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdMachineryContractSuspendService.queryById(id));
}
/**
* 新增机械合同终止
*/
@SaCheckPermission("jixiehetongzz:machineryContractSuspend:add")
@Log(title = "机械合同终止", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdMachineryContractSuspendBo bo) {
return toAjax(xzdMachineryContractSuspendService.insertByBo(bo));
}
/**
* 修改机械合同终止
*/
@SaCheckPermission("jixiehetongzz:machineryContractSuspend:edit")
@Log(title = "机械合同终止", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdMachineryContractSuspendBo bo) {
return toAjax(xzdMachineryContractSuspendService.updateByBo(bo));
}
/**
* 删除机械合同终止
*
* @param ids 主键串
*/
@SaCheckPermission("jixiehetongzz:machineryContractSuspend:remove")
@Log(title = "机械合同终止", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdMachineryContractSuspendService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,138 @@
package org.dromara.xzd.contractManagement.jixiehetongzz.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.io.Serial;
import java.time.LocalDate;
/**
* 机械合同终止对象 xzd_machinery_contract_suspend
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_machinery_contract_suspend")
public class XzdMachineryContractSuspend extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 合同信息ID合同编码
*/
private Long contractInformationId;
/**
* 单据编码
*/
private String receiptsCode;
/**
* 标题
*/
private String title;
/**
* 单据日期
*/
private LocalDate documentDate;
/**
* 合同名称
*/
private String contractName;
/**
* 终止日期
*/
private LocalDate terminationDate;
/**
* 项目名称
*/
private String project;
/**
* 乙方单位
*/
private Long artyBUnit;
/**
* 甲方单位
*/
private Long partyAUnit;
/**
* 终止原因
*/
private String terminationCause;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目类型
*/
private String projectType;
/**
* 备注说明
*/
private String remarks;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 累计结算金额
*/
private BigDecimal cumulativeSettlementAmount;
/**
* 累计付款金额
*/
private BigDecimal cumulativePaymentAmount;
/**
* 是否用印1-是0-否
*/
private Long isSeal;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
/**
* 组织id
*/
private Long deptId;
}

View File

@ -0,0 +1,153 @@
package org.dromara.xzd.contractManagement.jixiehetongzz.domain.bo;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.XzdMachineryContractSuspend;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.xzd.domain.XzdBusinessChange;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 机械合同终止业务对象 xzd_machinery_contract_suspend
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdMachineryContractSuspend.class, reverseConvertGenerate = false)
public class XzdMachineryContractSuspendBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 合同信息ID合同编码
*/
private Long contractInformationId;
/**
* 单据编码
*/
private String receiptsCode;
/**
* 标题
*/
@NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class })
private String title;
/**
* 单据日期
*/
@NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate documentDate;
/**
* 合同名称
*/
@NotBlank(message = "合同名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractName;
/**
* 终止日期
*/
@NotNull(message = "终止日期不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate terminationDate;
/**
* 项目名称
*/
@NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String project;
/**
* 乙方单位
*/
@NotNull(message = "乙方单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long artyBUnit;
/**
* 甲方单位
*/
@NotNull(message = "甲方单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long partyAUnit;
/**
* 终止原因
*/
@NotBlank(message = "终止原因不能为空", groups = { AddGroup.class, EditGroup.class })
private String terminationCause;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目类型
*/
private String projectType;
/**
* 备注说明
*/
private String remarks;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 累计结算金额
*/
private BigDecimal cumulativeSettlementAmount;
/**
* 累计付款金额
*/
private BigDecimal cumulativePaymentAmount;
/**
* 是否用印1-是0-否
*/
private Long isSeal;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
/**
* 组织id
*/
private Long deptId;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
}

View File

@ -0,0 +1,226 @@
package org.dromara.xzd.contractManagement.jixiehetongzz.domain.vo;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.XzdMachineryContractSuspend;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.xzd.domain.XzdBusinessChange;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
* 机械合同终止视图对象 xzd_machinery_contract_suspend
*
* @author Lion Li
* @date 2025-11-12
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdMachineryContractSuspend.class)
public class XzdMachineryContractSuspendVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 合同信息ID合同编码
*/
@ExcelProperty(value = "合同信息ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "合=同编码")
private Long contractInformationId;
/**
* 合同信息ID合同编码
*/
@ExcelDictFormat(readConverterExp = "合=同编码")
private String contractInformationIdName;
/**
* 单据编码
*/
@ExcelProperty(value = "单据编码")
private String receiptsCode;
/**
* 标题
*/
@ExcelProperty(value = "标题")
private String title;
/**
* 单据日期
*/
@ExcelProperty(value = "单据日期")
private LocalDate documentDate;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 终止日期
*/
@ExcelProperty(value = "终止日期")
private LocalDate terminationDate;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
private String project;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
@Translation(type = TransConstant.XZD_PROJECT_ID_TO_NAME, mapper = "project")
private String projectName;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private Long artyBUnit;
/**
* 乙方单位名称
*/
@ExcelProperty(value = "乙方单位名称")
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "artyBUnit")
private String artyBUnitName;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private Long partyAUnit;
/**
* 甲方单位名称
*/
@ExcelProperty(value = "甲方单位名称")
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyAUnit")
private String partyAUnitName;
/**
* 终止原因
*/
@ExcelProperty(value = "终止原因")
private String terminationCause;
/**
* 项目大类
*/
@ExcelProperty(value = "项目大类")
private String projectCategory;
/**
* 项目类型
*/
@ExcelProperty(value = "项目类型")
private String projectType;
/**
* 备注说明
*/
@ExcelProperty(value = "备注说明")
private String remarks;
/**
* 合同金额
*/
@ExcelProperty(value = "合同金额")
private BigDecimal contractAmount;
/**
* 累计结算金额
*/
@ExcelProperty(value = "累计结算金额")
private BigDecimal cumulativeSettlementAmount;
/**
* 累计付款金额
*/
@ExcelProperty(value = "累计付款金额")
private BigDecimal cumulativePaymentAmount;
/**
* 是否用印1-是0-否
*/
@ExcelProperty(value = "是否用印1-是0-否")
private Long isSeal;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
/**
* 组织id
*/
@ExcelProperty(value = "组织id")
private Long deptId;
/**
* 创建者
*/
@TableField(fill = FieldFill.INSERT)
private Long createBy;
/**
* 创建者
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy")
@TableField(fill = FieldFill.INSERT)
private Long createByName;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.contractManagement.jixiehetongzz.mapper;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.XzdMachineryContractSuspend;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.vo.XzdMachineryContractSuspendVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 机械合同终止Mapper接口
*
* @author Lion Li
* @date 2025-11-12
*/
public interface XzdMachineryContractSuspendMapper extends BaseMapperPlus<XzdMachineryContractSuspend, XzdMachineryContractSuspendVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.contractManagement.jixiehetongzz.service;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.vo.XzdMachineryContractSuspendVo;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.bo.XzdMachineryContractSuspendBo;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.XzdMachineryContractSuspend;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 机械合同终止Service接口
*
* @author Lion Li
* @date 2025-11-12
*/
public interface IXzdMachineryContractSuspendService extends IService<XzdMachineryContractSuspend>{
/**
* 查询机械合同终止
*
* @param id 主键
* @return 机械合同终止
*/
XzdMachineryContractSuspendVo queryById(Long id);
/**
* 分页查询机械合同终止列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 机械合同终止分页列表
*/
TableDataInfo<XzdMachineryContractSuspendVo> queryPageList(XzdMachineryContractSuspendBo bo, PageQuery pageQuery);
/**
* 查询符合条件的机械合同终止列表
*
* @param bo 查询条件
* @return 机械合同终止列表
*/
List<XzdMachineryContractSuspendVo> queryList(XzdMachineryContractSuspendBo bo);
/**
* 新增机械合同终止
*
* @param bo 机械合同终止
* @return 是否新增成功
*/
Boolean insertByBo(XzdMachineryContractSuspendBo bo);
/**
* 修改机械合同终止
*
* @param bo 机械合同终止
* @return 是否修改成功
*/
Boolean updateByBo(XzdMachineryContractSuspendBo bo);
/**
* 校验并批量删除机械合同终止信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,308 @@
package org.dromara.xzd.contractManagement.jixiehetongzz.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.contractManagement.caigoucontractTermination.domain.XzdPurchaseContractSuspend;
import org.dromara.xzd.contractManagement.caigoucontractTermination.domain.vo.XzdPurchaseContractSuspendVo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.XzdContractMachinery;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.domain.vo.XzdContractMachineryVo;
import org.dromara.xzd.contractManagement.jixiehetongxinxi.mapper.XzdContractMachineryMapper;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.XzdPurchaseContractInformation;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdPurchaseContractInformationVo;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
import org.dromara.xzd.service.impl.XzdBusinessChangeServiceImpl;
import org.dromara.xzd.service.impl.XzdBusinessSealServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.bo.XzdMachineryContractSuspendBo;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.vo.XzdMachineryContractSuspendVo;
import org.dromara.xzd.contractManagement.jixiehetongzz.domain.XzdMachineryContractSuspend;
import org.dromara.xzd.contractManagement.jixiehetongzz.mapper.XzdMachineryContractSuspendMapper;
import org.dromara.xzd.contractManagement.jixiehetongzz.service.IXzdMachineryContractSuspendService;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors;
/**
* 机械合同终止Service业务层处理
*
* @author Lion Li
* @date 2025-11-12
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class XzdMachineryContractSuspendServiceImpl extends ServiceImpl<XzdMachineryContractSuspendMapper, XzdMachineryContractSuspend> implements IXzdMachineryContractSuspendService {
private final XzdMachineryContractSuspendMapper baseMapper;
private final XzdContractMachineryMapper xzdContractMachineryMapper;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private XzdBusinessChangeServiceImpl xzdBusinessChangeService;
@Autowired
private XzdBusinessSealServiceImpl xzdBusinessSealService;
/**
* 查询机械合同终止
*
* @param id 主键
* @return 机械合同终止
*/
@Override
public XzdMachineryContractSuspendVo queryById(Long id){
XzdMachineryContractSuspendVo vo = baseMapper.selectVoById(id);
List<XzdMachineryContractSuspendVo> res = List.of(vo);
saveValue(res);
return res.getFirst();
}
/**
* 分页查询机械合同终止列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 机械合同终止分页列表
*/
@Override
public TableDataInfo<XzdMachineryContractSuspendVo> queryPageList(XzdMachineryContractSuspendBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdMachineryContractSuspend> lqw = buildQueryWrapper(bo);
Page<XzdMachineryContractSuspendVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
saveValue(result.getRecords());
return TableDataInfo.build(result);
}
private void saveValue(List<XzdMachineryContractSuspendVo> records) {
for (XzdMachineryContractSuspendVo item : records) {
// 合同信息编码
if (item.getContractInformationId() != null){
XzdContractMachineryVo queryById = xzdContractMachineryMapper.selectVoById(item.getContractInformationId());
if (queryById != null){
item.setContractInformationIdName(queryById.getContractCode());
}
}
//印章信息
LambdaQueryWrapper<XzdBusinessChange> xzdBusinessChangeWrapper = new LambdaQueryWrapper<>();
xzdBusinessChangeWrapper.eq(XzdBusinessChange::getContractChangeId, item.getId());
List<XzdBusinessChange> xzdBusinessChanges = xzdBusinessChangeService.list(xzdBusinessChangeWrapper);
for (XzdBusinessChange businessChange : xzdBusinessChanges) {
XzdBusinessSealVo sealVo = xzdBusinessSealService.queryById(businessChange.getBusinessId());
if (sealVo != null){
businessChange.setSealName(sealVo.getYzName());
}
}
item.setSealInfo(xzdBusinessChanges);
}
}
/**
* 查询符合条件的机械合同终止列表
*
* @param bo 查询条件
* @return 机械合同终止列表
*/
@Override
public List<XzdMachineryContractSuspendVo> queryList(XzdMachineryContractSuspendBo bo) {
LambdaQueryWrapper<XzdMachineryContractSuspend> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdMachineryContractSuspend> buildQueryWrapper(XzdMachineryContractSuspendBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdMachineryContractSuspend> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdMachineryContractSuspend::getId);
lqw.eq(bo.getContractInformationId() != null, XzdMachineryContractSuspend::getContractInformationId, bo.getContractInformationId());
lqw.eq(StringUtils.isNotBlank(bo.getReceiptsCode()), XzdMachineryContractSuspend::getReceiptsCode, bo.getReceiptsCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdMachineryContractSuspend::getTitle, bo.getTitle());
lqw.eq(bo.getDocumentDate() != null, XzdMachineryContractSuspend::getDocumentDate, bo.getDocumentDate());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdMachineryContractSuspend::getContractName, bo.getContractName());
lqw.eq(bo.getTerminationDate() != null, XzdMachineryContractSuspend::getTerminationDate, bo.getTerminationDate());
lqw.eq(StringUtils.isNotBlank(bo.getProject()), XzdMachineryContractSuspend::getProject, bo.getProject());
lqw.eq(bo.getArtyBUnit() != null, XzdMachineryContractSuspend::getArtyBUnit, bo.getArtyBUnit());
lqw.eq(bo.getPartyAUnit() != null, XzdMachineryContractSuspend::getPartyAUnit, bo.getPartyAUnit());
lqw.eq(StringUtils.isNotBlank(bo.getTerminationCause()), XzdMachineryContractSuspend::getTerminationCause, bo.getTerminationCause());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdMachineryContractSuspend::getProjectCategory, bo.getProjectCategory());
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdMachineryContractSuspend::getProjectType, bo.getProjectType());
lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), XzdMachineryContractSuspend::getRemarks, bo.getRemarks());
lqw.eq(bo.getContractAmount() != null, XzdMachineryContractSuspend::getContractAmount, bo.getContractAmount());
lqw.eq(bo.getCumulativeSettlementAmount() != null, XzdMachineryContractSuspend::getCumulativeSettlementAmount, bo.getCumulativeSettlementAmount());
lqw.eq(bo.getCumulativePaymentAmount() != null, XzdMachineryContractSuspend::getCumulativePaymentAmount, bo.getCumulativePaymentAmount());
lqw.eq(bo.getIsSeal() != null, XzdMachineryContractSuspend::getIsSeal, bo.getIsSeal());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdMachineryContractSuspend::getFileId, bo.getFileId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdMachineryContractSuspend::getAuditStatus, bo.getAuditStatus());
lqw.eq(bo.getDeptId() != null, XzdMachineryContractSuspend::getDeptId, bo.getDeptId());
return lqw;
}
/**
* 新增机械合同终止
*
* @param bo 机械合同终止
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdMachineryContractSuspendBo bo) {
XzdMachineryContractSuspend add = MapstructUtils.convert(bo, XzdMachineryContractSuspend.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("JXHTZZ-");
add.setReceiptsCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
//印章信息
if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()){
for (XzdBusinessChange sealInfo : bo.getSealInfo()) {
sealInfo.setContractChangeId(add.getId());
sealInfo.setType("15");
}
xzdBusinessChangeService.saveBatch(bo.getSealInfo());
}
return flag;
}
/**
* 修改机械合同终止
*
* @param bo 机械合同终止
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdMachineryContractSuspendBo bo) {
XzdMachineryContractSuspend update = MapstructUtils.convert(bo, XzdMachineryContractSuspend.class);
validEntityBeforeSave(update);
//印章信息
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().eq(XzdBusinessChange::getContractChangeId, update.getId()));
for (XzdBusinessChange xzdBusinessChange : bo.getSealInfo()) {
xzdBusinessChange.setContractChangeId(update.getId());
xzdBusinessChange.setType("15");
}
xzdBusinessChangeService.saveBatch(bo.getSealInfo());
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdMachineryContractSuspend entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除机械合同终止信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
for (Long id : ids) {
XzdMachineryContractSuspendVo vo = baseMapper.selectVoById(id);
// 删除附件
if (!StringUtils.isEmpty(vo.getFileId())){
List<Long> collect = Arrays.stream(vo.getFileId().split(",")).map(item -> {
return Long.parseLong(item);
}).collect(Collectors.toList());
sysOssService.deleteWithValidByIds(collect, false);
}
}
//印章信息
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().in(XzdBusinessChange::getContractChangeId, ids));
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdjxhtzz')")
public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
log.info("机械合同终止审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
XzdMachineryContractSuspend vo = baseMapper.selectById(Long.valueOf(id));
if (vo == null) {
return;
}
if (processEvent.getStatus().equals(BusinessStatusEnum.FINISH.getStatus())){
UpdateWrapper<XzdContractMachinery> wrapper = new UpdateWrapper<>();
wrapper.eq("id",vo.getContractInformationId()).set("sfzz","1");
xzdContractMachineryMapper.update(wrapper);
}
vo.setAuditStatus(processEvent.getStatus());
this.updateById(vo);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdjxhtzz')")
public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) {
log.info("机械合同终止审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('xzdjxhtzz')")
public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) {
log.info("机械合同终止删除流程事件,机械合同终止审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -364,7 +364,6 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
//印章信息 //印章信息
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().eq(XzdBusinessChange::getContractChangeId, update.getId())); xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().eq(XzdBusinessChange::getContractChangeId, update.getId()));
for (XzdBusinessChange xzdBusinessChange : bo.getSealInfo()) { for (XzdBusinessChange xzdBusinessChange : bo.getSealInfo()) {
xzdBusinessChange.setContractChangeId(update.getId()); xzdBusinessChange.setContractChangeId(update.getId());
xzdBusinessChange.setType("7"); xzdBusinessChange.setType("7");
@ -384,6 +383,8 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
xzdHtglHthzsjService.saveBatch(bo.getHtghthzsjs()); xzdHtglHthzsjService.saveBatch(bo.getHtghthzsjs());
} }
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }

View File

@ -19,6 +19,8 @@ public enum XzdClassEnum {
FENBAOHETONGBINGGENG_INFORMATION("xzd_subcontract_change"),//分包合同变更 FENBAOHETONGBINGGENG_INFORMATION("xzd_subcontract_change"),//分包合同变更
CAIGOUHETONG_INFORMATION("xzd_purchase_contract_alteration"), //采购变更合同 CAIGOUHETONG_INFORMATION("xzd_purchase_contract_alteration"), //采购变更合同
FENBAOHETONG_JINDU("xzd_settlement_of_subcontracting_contract"),//分包合同进度结算 FENBAOHETONG_JINDU("xzd_settlement_of_subcontracting_contract"),//分包合同进度结算
JIXIEHETONG_JINDU("xzd_contract_machinery"),//机械合同信息
JIXIEHETONGBIANG_XINXI("xzd_contract_machinery"),//机械合同信息变更
PURCHASE_CONTRACT_INFORMATION("xzd_purchase_contract_information");//采购合同 PURCHASE_CONTRACT_INFORMATION("xzd_purchase_contract_information");//采购合同

View File

@ -19,6 +19,7 @@ import org.dromara.xzd.zijinjihua.yueduzijinjihua.domain.vo.StatementOfExpenditu
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -158,6 +159,12 @@ public class FinancialRevenuePlanAlterationVo implements Serializable {
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy")
private String createByName; private String createByName;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** /**
* 收入明细 * 收入明细