From 9f1da9e6c0ec037e54b309bd923c2e090972be8a Mon Sep 17 00:00:00 2001 From: lg Date: Wed, 15 Oct 2025 22:50:38 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=93=E7=AE=97=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bo/XzdPurchaseContractSuspendBo.java | 2 +- .../vo/XzdPurchaseContractSuspendVo.java | 49 ++- ...XzdPurchaseContractSuspendServiceImpl.java | 66 +++- .../domain/XzdPurchaseContractAlteration.java | 11 +- .../bo/XzdPurchaseContractAlterationBo.java | 16 +- .../vo/XzdPurchaseContractAlterationVo.java | 66 +++- ...PurchaseContractAlterationServiceImpl.java | 99 +++-- .../XzdSubcontractChangeController.java | 105 ++++++ .../domain/XzdSubcontractChange.java | 218 +++++++++++ .../domain/bo/XzdSubcontractChangeBo.java | 244 ++++++++++++ .../domain/vo/XzdSubcontractChangeVo.java | 325 ++++++++++++++++ .../mapper/XzdSubcontractChangeMapper.java | 15 + .../service/IXzdSubcontractChangeService.java | 70 ++++ .../impl/XzdSubcontractChangeServiceImpl.java | 355 ++++++++++++++++++ .../domain/XzdSubcontract.java | 2 +- .../domain/bo/XzdSubcontractBo.java | 4 +- .../domain/vo/XzdSubcontractVo.java | 25 +- .../impl/XzdSubcontractServiceImpl.java | 7 +- .../XzdSubcontractTerminationController.java | 105 ++++++ .../domain/XzdSubcontractTermination.java | 118 ++++++ .../bo/XzdSubcontractTerminationBo.java | 116 ++++++ .../vo/XzdSubcontractTerminationVo.java | 175 +++++++++ .../XzdSubcontractTerminationMapper.java | 15 + .../IXzdSubcontractTerminationService.java | 70 ++++ .../XzdSubcontractTerminationServiceImpl.java | 177 +++++++++ .../vo/XzdPurchaseContractInformationVo.java | 23 ++ ...urchaseContractInformationServiceImpl.java | 9 +- .../xzd/controller/XzdCorrespondentList.java | 4 +- .../domain/XzdGuaranteeChangeInfo.java | 4 + .../domain/bo/XzdGuaranteeChangeInfoBo.java | 9 +- .../domain/vo/XzdGuaranteeChangeInfoVo.java | 5 + .../XzdGuaranteeChangeInfoServiceImpl.java | 5 +- .../org/dromara/xzd/enums/XzdClassEnum.java | 2 + .../service/impl/XzdCorrespondentListImp.java | 20 +- ...entOfSubcontractingContractController.java | 105 ++++++ .../SettlementOfSubcontractingContract.java | 168 +++++++++ .../SettlementOfSubcontractingContractBo.java | 170 +++++++++ .../SettlementOfSubcontractingContractVo.java | 221 +++++++++++ ...tlementOfSubcontractingContractMapper.java | 15 + ...lementOfSubcontractingContractService.java | 70 ++++ ...ntOfSubcontractingContractServiceImpl.java | 228 +++++++++++ ...tOfSubcontractingCompletionController.java | 121 ++++++ .../SettlementOfSubcontractingCompletion.java | 173 +++++++++ ...ettlementOfSubcontractingCompletionBo.java | 179 +++++++++ ...ettlementOfSubcontractingCompletionVo.java | 254 +++++++++++++ ...ementOfSubcontractingCompletionMapper.java | 15 + ...mentOfSubcontractingCompletionService.java | 76 ++++ ...OfSubcontractingCompletionServiceImpl.java | 307 +++++++++++++++ ...tOfSubcontractingAdjustmentController.java | 105 ++++++ .../SettlementOfSubcontractingAdjustment.java | 98 +++++ ...ettlementOfSubcontractingAdjustmentBo.java | 96 +++++ ...ettlementOfSubcontractingAdjustmentVo.java | 118 ++++++ ...ementOfSubcontractingAdjustmentMapper.java | 15 + ...mentOfSubcontractingAdjustmentService.java | 70 ++++ ...OfSubcontractingAdjustmentServiceImpl.java | 170 +++++++++ 55 files changed, 5250 insertions(+), 60 deletions(-) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/controller/XzdSubcontractChangeController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/XzdSubcontractChange.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/bo/XzdSubcontractChangeBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/vo/XzdSubcontractChangeVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/mapper/XzdSubcontractChangeMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/service/IXzdSubcontractChangeService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/service/impl/XzdSubcontractChangeServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/controller/XzdSubcontractTerminationController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/XzdSubcontractTermination.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/bo/XzdSubcontractTerminationBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/vo/XzdSubcontractTerminationVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/mapper/XzdSubcontractTerminationMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/service/IXzdSubcontractTerminationService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/service/impl/XzdSubcontractTerminationServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/controller/SettlementOfSubcontractingContractController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/SettlementOfSubcontractingContract.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/bo/SettlementOfSubcontractingContractBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/vo/SettlementOfSubcontractingContractVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/mapper/SettlementOfSubcontractingContractMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/service/ISettlementOfSubcontractingContractService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/service/impl/SettlementOfSubcontractingContractServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/controller/SettlementOfSubcontractingCompletionController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/SettlementOfSubcontractingCompletion.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/bo/SettlementOfSubcontractingCompletionBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/vo/SettlementOfSubcontractingCompletionVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/mapper/SettlementOfSubcontractingCompletionMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/service/ISettlementOfSubcontractingCompletionService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/service/impl/SettlementOfSubcontractingCompletionServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/controller/SettlementOfSubcontractingAdjustmentController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/SettlementOfSubcontractingAdjustment.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/bo/SettlementOfSubcontractingAdjustmentBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/vo/SettlementOfSubcontractingAdjustmentVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/mapper/SettlementOfSubcontractingAdjustmentMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/service/ISettlementOfSubcontractingAdjustmentService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/service/impl/SettlementOfSubcontractingAdjustmentServiceImpl.java diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/domain/bo/XzdPurchaseContractSuspendBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/domain/bo/XzdPurchaseContractSuspendBo.java index 48737ef0..9c7e1cd0 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/domain/bo/XzdPurchaseContractSuspendBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/domain/bo/XzdPurchaseContractSuspendBo.java @@ -56,7 +56,7 @@ public class XzdPurchaseContractSuspendBo extends BaseEntity { /** * 终止日期 */ - private Date terminationDate; + private LocalDate terminationDate; /** * 项目名称 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/domain/vo/XzdPurchaseContractSuspendVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/domain/vo/XzdPurchaseContractSuspendVo.java index 981c55a4..9a57c3d1 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/domain/vo/XzdPurchaseContractSuspendVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/domain/vo/XzdPurchaseContractSuspendVo.java @@ -1,8 +1,13 @@ package org.dromara.xzd.contractManagement.caigoucontractTermination.domain.vo; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Date; +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.caigoucontractTermination.domain.XzdPurchaseContractSuspend; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -35,12 +40,17 @@ public class XzdPurchaseContractSuspendVo implements Serializable { @ExcelProperty(value = "主键ID") private Long id; + /** + * 采购合同信息ID(合同编号) + */ + @ExcelDictFormat(readConverterExp = "合=同编号") + private Long contractInformationId; + /** * 采购合同信息ID(合同编码) */ - @ExcelProperty(value = "采购合同信息ID", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "合=同编码") - private Long contractInformationId; + private String contractInformationIdName; /** * 单据编码 @@ -70,7 +80,7 @@ public class XzdPurchaseContractSuspendVo implements Serializable { * 终止日期 */ @ExcelProperty(value = "终止日期") - private Date terminationDate; + private LocalDate terminationDate; /** * 项目名称 @@ -84,12 +94,25 @@ public class XzdPurchaseContractSuspendVo implements Serializable { @ExcelProperty(value = "乙方单位") private Long artyBUnit; + /** + * 乙方单位名称 + */ + @ExcelProperty(value = "乙方单位名称") + private String artyBUnitName; + /** * 甲方单位 */ @ExcelProperty(value = "甲方单位") private Long partyAUnit; + /** + * 甲方单位名称 + */ + @ExcelProperty(value = "甲方单位名称") + private String partyAUnitName; + + /** * 终止原因 */ @@ -157,4 +180,24 @@ public class XzdPurchaseContractSuspendVo implements Serializable { 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; + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/service/impl/XzdPurchaseContractSuspendServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/service/impl/XzdPurchaseContractSuspendServiceImpl.java index c428ba1f..ce3669e5 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/service/impl/XzdPurchaseContractSuspendServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigoucontractTermination/service/impl/XzdPurchaseContractSuspendServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.xzd.contractManagement.caigoucontractTermination.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -12,6 +13,14 @@ import lombok.RequiredArgsConstructor; import org.dromara.system.service.impl.SysOssServiceImpl; import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.XzdBidPreProjectVo; import org.dromara.xzd.contractManagement.purchaseManagement.domain.XzdPurchaseContractInformation; +import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdPurchaseContractInformationVo; +import org.dromara.xzd.contractManagement.purchaseManagement.service.IXzdPurchaseContractInformationService; +import org.dromara.xzd.domain.XzdSettlementRules; +import org.dromara.xzd.domain.dto.QuerCorrespondentDto; +import org.dromara.xzd.service.IXzdCorrespondentList; +import org.dromara.xzd.service.IXzdSettlementRulesService; +import org.dromara.xzd.service.impl.XzdSupplierInfoServiceImpl; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.vo.SettlementOfSubcontractingCompletionVo; import org.dromara.xzd.utilS.AreaUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -40,6 +49,17 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl res = List.of(vo); + setValue(res); + return res.getFirst(); + } + + private void setValue(List res) { + + for (XzdPurchaseContractSuspendVo item : res) { +// //项目名称 +// if (item.getProject() != null){ +// String projectName = xzdProjectService.queryNameById(item.getProject()); +// if (projectName != null){ +// item.setProjectName(projectName); +// } +// } + //甲方单位(客户信息列表) + R byid = iXzdCorrespondentList.getCustomerByid(item.getPartyAUnit()); + if (byid!=null){ + if (byid.getData().getXzdCustomerinformation() != null){ + item.setPartyAUnitName(byid.getData().getXzdCustomerinformation().getUnitName()); + } + } + //乙方单位(供应商信息列表) + if (item.getArtyBUnit() != null){ + String unitName = xzdSupplierInfoService.queryNameById(item.getArtyBUnit()); + if (unitName != null){ + item.setArtyBUnitName(unitName); + } + } +// 采购合同信息编码 + if (item.getContractInformationId() != null){ + XzdPurchaseContractInformationVo queryById = xzdPurchaseContractInformationService.queryById(item.getContractInformationId()); + if (queryById != null){ + item.setContractInformationIdName(queryById.getContractCode()); + } + } + + } } /** @@ -67,6 +125,7 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl queryPageList(XzdPurchaseContractSuspendBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + setValue(result.getRecords()); return TableDataInfo.build(result); } @@ -121,9 +180,9 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl().gt(XzdPurchaseContractSuspend::getCreateTime, LocalDate.now())); String s = areaUtil.generateDateBasedNumber(); - boolean flag = baseMapper.insert(add) > 0; - add.setReceiptsCode(s+"-"+(l+1)); + + boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); } @@ -162,7 +221,6 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl yskx; + + /** + * 扣款与奖励项 + */ + private List kkyjlx; + + /** + * 合同条款 + */ + private List httk; + + /** + * 支付条款 + */ + private List zftk; + + /** + * 合同主要条款约定 + */ + private XzdContractDepositInfo htzytkyd; + + +// /** +// * 采购合同信息 +// */ +// private XzdPurchaseContractInformationVo xzdPurchaseContractInformationVo; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigouhetongbiangeng/service/impl/XzdPurchaseContractAlterationServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigouhetongbiangeng/service/impl/XzdPurchaseContractAlterationServiceImpl.java index 1888ab8c..0d1924db 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigouhetongbiangeng/service/impl/XzdPurchaseContractAlterationServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/caigouhetongbiangeng/service/impl/XzdPurchaseContractAlterationServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.xzd.contractManagement.caigouhetongbiangeng.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -12,10 +13,8 @@ import lombok.RequiredArgsConstructor; import org.dromara.system.service.impl.SysOssServiceImpl; import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdPurchaseContractInformationVo; import org.dromara.xzd.contractManagement.purchaseManagement.service.IXzdPurchaseContractInformationService; -import org.dromara.xzd.domain.XzdContractAdvanceInfo; -import org.dromara.xzd.domain.XzdContractClause; -import org.dromara.xzd.domain.XzdDeductionItems; -import org.dromara.xzd.domain.XzdSettlementRules; +import org.dromara.xzd.domain.*; +import org.dromara.xzd.domain.dto.QuerCorrespondentDto; import org.dromara.xzd.enums.XzdClassEnum; import org.dromara.xzd.service.IXzdContractAdvanceInfoService; import org.dromara.xzd.service.IXzdContractClauseService; @@ -64,6 +63,13 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl list = List.of(xzdPurchaseContractAlterationVo); + setValue(list); return xzdPurchaseContractAlterationVo; } + public void setValue(List infos){ + + for (XzdPurchaseContractAlterationVo item : infos) { + + //合同文本-预收款项 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(XzdContractAdvanceInfo::getContractDetailsId, item.getId()); + List advanceInfos = xzdContractAdvanceInfoService.list(lambdaQueryWrapper); + item.setYskx(advanceInfos); + + //合同条款-扣款与奖励项 + LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper1.eq(XzdDeductionItems::getContractDetailsId, item.getId()); + List list = xzdDeductionItemsService.list(lambdaQueryWrapper1); + item.setKkyjlx(list); + + //合同条款-合同条款 + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, item.getId()); + List list1 = xzdContractClauseService.list(lambdaQueryWrapper2); + item.setHttk(list1); + + //支付条款 + LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, item.getId()); + List list2 = xzdSettlementRulesService.list(lambdaQueryWrapper3); + item.setZftk(list2); + + //合同文本-合同主要条款约定 + LambdaQueryWrapper lambdaQueryWrapper4 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper4.eq(XzdContractDepositInfo::getContractDetailsId, item.getId()); + XzdContractDepositInfo list3 = xzdContractDepositInfoService.getOne(lambdaQueryWrapper4); + item.setHtzytkyd(list3); + + + } + + } + /** * 分页查询采购合同变更列表 * @@ -113,6 +157,11 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl 0; /** * 预收款项 */ - HashMap hashMap = new HashMap<>(); - hashMap.put("contract_detailsId", add.getId()); List yskx = bo.getYskx(); yskx.forEach(item -> { item.setTableName(tableName); @@ -187,7 +235,6 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl 0; if (flag) { bo.setId(add.getId()); } @@ -273,23 +320,23 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(XzdContractAdvanceInfo::getContractDetailsId, ids); - xzdContractAdvanceInfoService.remove(lambdaQueryWrapper); - //合同条款-扣款与奖励项 - LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); - lambdaQueryWrapper1.in(XzdDeductionItems::getContractDetailsId, ids); - xzdDeductionItemsService.remove(lambdaQueryWrapper1); - //合同条款-合同条款 - LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); - lambdaQueryWrapper2.in(XzdContractClause::getContractDetailsId, ids); - xzdContractClauseService.remove(lambdaQueryWrapper2); - //支付条款 - LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); - lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids); - xzdSettlementRulesService.remove(lambdaQueryWrapper3); } + //合同文本-预收款项 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(XzdContractAdvanceInfo::getContractDetailsId, ids); + xzdContractAdvanceInfoService.remove(lambdaQueryWrapper); + //合同条款-扣款与奖励项 + LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper1.in(XzdDeductionItems::getContractDetailsId, ids); + xzdDeductionItemsService.remove(lambdaQueryWrapper1); + //合同条款-合同条款 + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.in(XzdContractClause::getContractDetailsId, ids); + xzdContractClauseService.remove(lambdaQueryWrapper2); + //支付条款 + LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids); + xzdSettlementRulesService.remove(lambdaQueryWrapper3); if(isValid){ //TODO 做一些业务上的校验,判断是否需要校验 } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/controller/XzdSubcontractChangeController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/controller/XzdSubcontractChangeController.java new file mode 100644 index 00000000..1254a5dd --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/controller/XzdSubcontractChangeController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.contractManagement.fenbaohetongbiangg.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.fenbaohetongbiangg.domain.vo.XzdSubcontractChangeVo; +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.bo.XzdSubcontractChangeBo; +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.service.IXzdSubcontractChangeService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 分包合同变更 + * + * @author Lion Li + * @date 2025-10-14 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/fenbaohetongbiangg/subcontractChange") +public class XzdSubcontractChangeController extends BaseController { + + private final IXzdSubcontractChangeService xzdSubcontractChangeService; + + /** + * 查询分包合同变更列表 + */ + @SaCheckPermission("fenbaohetongbiangg:subcontractChange:list") + @GetMapping("/list") + public TableDataInfo list(XzdSubcontractChangeBo bo, PageQuery pageQuery) { + return xzdSubcontractChangeService.queryPageList(bo, pageQuery); + } + + /** + * 导出分包合同变更列表 + */ + @SaCheckPermission("fenbaohetongbiangg:subcontractChange:export") + @Log(title = "分包合同变更", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdSubcontractChangeBo bo, HttpServletResponse response) { + List list = xzdSubcontractChangeService.queryList(bo); + ExcelUtil.exportExcel(list, "分包合同变更", XzdSubcontractChangeVo.class, response); + } + + /** + * 获取分包合同变更详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("fenbaohetongbiangg:subcontractChange:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdSubcontractChangeService.queryById(id)); + } + + /** + * 新增分包合同变更 + */ + @SaCheckPermission("fenbaohetongbiangg:subcontractChange:add") + @Log(title = "分包合同变更", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdSubcontractChangeBo bo) { + return toAjax(xzdSubcontractChangeService.insertByBo(bo)); + } + + /** + * 修改分包合同变更 + */ + @SaCheckPermission("fenbaohetongbiangg:subcontractChange:edit") + @Log(title = "分包合同变更", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdSubcontractChangeBo bo) { + return toAjax(xzdSubcontractChangeService.updateByBo(bo)); + } + + /** + * 删除分包合同变更 + * + * @param ids 主键串 + */ + @SaCheckPermission("fenbaohetongbiangg:subcontractChange:remove") + @Log(title = "分包合同变更", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdSubcontractChangeService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/XzdSubcontractChange.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/XzdSubcontractChange.java new file mode 100644 index 00000000..912ee735 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/XzdSubcontractChange.java @@ -0,0 +1,218 @@ +package org.dromara.xzd.contractManagement.fenbaohetongbiangg.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_subcontract_change + * + * @author Lion Li + * @date 2025-10-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_subcontract_change") +public class XzdSubcontractChange extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 合同编码 + */ + private Long contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同类型(字典) + */ + private String contractType; + + /** + * 变更类型(字典) + */ + private String changeType; + + /** + * 项目 + */ + private String project; + + /** + * 经营模式 + */ + private String businessModel; + + /** + * 组织 + */ + private String organization; + + /** + * 甲方单位 + */ + private String partyAUnit; + + /** + * 乙方单位 + */ + private String partyBUnit; + + /** + * 原合同造价 + */ + private BigDecimal originalContractCost; + + /** + * 变更价税合计 + */ + private BigDecimal changeTaxInclusiveTotal; + + /** + * 变更后总造价 + */ + private BigDecimal postChangeTotalCost; + + /** + * 累计变更金额 + */ + private BigDecimal cumulativeChangeAmount; + + /** + * 可用目标成本 + */ + private BigDecimal availableTargetCost; + + /** + * 目标成本 + */ + private BigDecimal targetCost; + + /** + * 目标成本项 + */ + private String targetCostItem; + + /** + * 警示 + */ + private String warning; + + /** + * 支付条款 + */ + private String paymentTerms; + + /** + * 备注 + */ + private String remarks; + + /** + * 是否用印 + */ + private Long isStamped; + + /** + * 变更后项目经理 + */ + private Long postChangeProjectManager; + + /** + * 变更后项目责任人 + */ + private Long postChangeProjectOwner; + + /** + * 变更后现场经理 + */ + private Long postChangeSiteManager; + + /** + * 变更后合同备注 + */ + private String postChangeContractRemarks; + + /** + * 项目大类(字典) + */ + private String projectCategory; + + /** + * 项目类型(字典) + */ + private String projectType; + + /** + * 付款额不能超合同额 + */ + private Long isPaymentNotExceedContract; + + /** + * 付款额不能超合同额支付比 + */ + private BigDecimal paymentNotExceedRatio; + + /** + * 预结算/结算额不能超合同额 + */ + private Long isPreSettlementNotExceedContract; + + /** + * 预结算/结算额不能超合同额比例 + */ + private BigDecimal preSettlementNotExceedRatio; + + /** + * 实时刷新 + */ + private Long isRealTimeRefresh; + + /** + * 合同累计变更金额 + */ + private BigDecimal contractCumulativeChangeAmount; + + /** + * 文件id (多个文件逗号分隔) + */ + private String fileId; + + /** + * 单据引用ID + */ + private Long danjuId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/bo/XzdSubcontractChangeBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/bo/XzdSubcontractChangeBo.java new file mode 100644 index 00000000..c60ffd21 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/bo/XzdSubcontractChangeBo.java @@ -0,0 +1,244 @@ +package org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.bo; + +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.XzdSubcontractChange; +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.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_subcontract_change + * + * @author Lion Li + * @date 2025-10-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdSubcontractChange.class, reverseConvertGenerate = false) +public class XzdSubcontractChangeBo extends BaseEntity { + + /** + * + */ + @NotNull(message = "不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 单据编码 + */ + @NotBlank(message = "单据编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String documentCode; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 合同编码 + */ + private Long contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同类型(字典) + */ + private String contractType; + + /** + * 变更类型(字典) + */ + private String changeType; + + /** + * 项目 + */ + private String project; + + /** + * 经营模式 + */ + private String businessModel; + + /** + * 组织 + */ + private String organization; + + /** + * 甲方单位 + */ + private String partyAUnit; + + /** + * 乙方单位 + */ + private String partyBUnit; + + /** + * 原合同造价 + */ + private BigDecimal originalContractCost; + + /** + * 变更价税合计 + */ + private BigDecimal changeTaxInclusiveTotal; + + /** + * 变更后总造价 + */ + private BigDecimal postChangeTotalCost; + + /** + * 累计变更金额 + */ + private BigDecimal cumulativeChangeAmount; + + /** + * 可用目标成本 + */ + private BigDecimal availableTargetCost; + + /** + * 目标成本 + */ + private BigDecimal targetCost; + + /** + * 目标成本项 + */ + private String targetCostItem; + + /** + * 警示 + */ + private String warning; + + /** + * 支付条款 + */ + private String paymentTerms; + + /** + * 备注 + */ + private String remarks; + + /** + * 是否用印 + */ + private Long isStamped; + + /** + * 变更后项目经理 + */ + private Long postChangeProjectManager; + + /** + * 变更后项目责任人 + */ + private Long postChangeProjectOwner; + + /** + * 变更后现场经理 + */ + private Long postChangeSiteManager; + + /** + * 变更后合同备注 + */ + private String postChangeContractRemarks; + + /** + * 项目大类(字典) + */ + private String projectCategory; + + /** + * 项目类型(字典) + */ + private String projectType; + + /** + * 付款额不能超合同额 + */ + private Long isPaymentNotExceedContract; + + /** + * 付款额不能超合同额支付比 + */ + private BigDecimal paymentNotExceedRatio; + + /** + * 预结算/结算额不能超合同额 + */ + private Long isPreSettlementNotExceedContract; + + /** + * 预结算/结算额不能超合同额比例 + */ + private BigDecimal preSettlementNotExceedRatio; + + /** + * 实时刷新 + */ + private Long isRealTimeRefresh; + + /** + * 合同累计变更金额 + */ + private BigDecimal contractCumulativeChangeAmount; + + /** + * 文件id (多个文件逗号分隔) + */ + private String fileId; + + /** + * 单据引用ID + */ + private Long danjuId; + + + private LocalDate startTime; + private LocalDate endTime; + + + /** + * 预收款项 + */ + private List yskx; + + /** + * 扣款与奖励项 + */ + private List kkyjlx; + + /** + * 合同条款 + */ + private List httk; + + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/vo/XzdSubcontractChangeVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/vo/XzdSubcontractChangeVo.java new file mode 100644 index 00000000..02de849e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/domain/vo/XzdSubcontractChangeVo.java @@ -0,0 +1,325 @@ +package org.dromara.xzd.contractManagement.fenbaohetongbiangg.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.fenbaohetongbiangg.domain.XzdSubcontractChange; +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.fenbaohetongxinxi.domain.XzdSubcontract; +import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdSubcontractVo; +import org.dromara.xzd.domain.*; + +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_subcontract_change + * + * @author Lion Li + * @date 2025-10-14 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdSubcontractChange.class) +public class XzdSubcontractChangeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String documentCode; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate documentDate; + + /** + * 合同编码 + */ + @ExcelProperty(value = "合同编码") + private Long contractCode; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 合同类型(字典) + */ + @ExcelProperty(value = "合同类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "字=典") + private String contractType; + + /** + * 变更类型(字典) + */ + @ExcelProperty(value = "变更类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "字=典") + private String changeType; + + /** + * 项目 + */ + @ExcelProperty(value = "项目") + private String project; + + /** + * 经营模式 + */ + @ExcelProperty(value = "经营模式") + private String businessModel; + + /** + * 组织 + */ + @ExcelProperty(value = "组织") + private String organization; + + /** + * 甲方单位 + */ + @ExcelProperty(value = "甲方单位") + private String partyAUnit; + + /** + * 乙方单位 + */ + @ExcelProperty(value = "乙方单位") + private String partyBUnit; + + /** + * 原合同造价 + */ + @ExcelProperty(value = "原合同造价") + private BigDecimal originalContractCost; + + /** + * 变更价税合计 + */ + @ExcelProperty(value = "变更价税合计") + private BigDecimal changeTaxInclusiveTotal; + + /** + * 变更后总造价 + */ + @ExcelProperty(value = "变更后总造价") + private BigDecimal postChangeTotalCost; + + /** + * 累计变更金额 + */ + @ExcelProperty(value = "累计变更金额") + private BigDecimal cumulativeChangeAmount; + + /** + * 可用目标成本 + */ + @ExcelProperty(value = "可用目标成本") + private BigDecimal availableTargetCost; + + /** + * 目标成本 + */ + @ExcelProperty(value = "目标成本") + private BigDecimal targetCost; + + /** + * 目标成本项 + */ + @ExcelProperty(value = "目标成本项") + private String targetCostItem; + + /** + * 警示 + */ + @ExcelProperty(value = "警示") + private String warning; + + /** + * 支付条款 + */ + @ExcelProperty(value = "支付条款") + private String paymentTerms; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remarks; + + /** + * 是否用印 + */ + @ExcelProperty(value = "是否用印") + private Long isStamped; + + /** + * 变更后项目经理 + */ + @ExcelProperty(value = "变更后项目经理") + private Long postChangeProjectManager; + + /** + * 变更后项目责任人 + */ + @ExcelProperty(value = "变更后项目责任人") + private Long postChangeProjectOwner; + + /** + * 变更后现场经理 + */ + @ExcelProperty(value = "变更后现场经理") + private Long postChangeSiteManager; + + /** + * 变更后合同备注 + */ + @ExcelProperty(value = "变更后合同备注") + private String postChangeContractRemarks; + + /** + * 项目大类(字典) + */ + @ExcelProperty(value = "项目大类", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "字=典") + private String projectCategory; + + /** + * 项目类型(字典) + */ + @ExcelProperty(value = "项目类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "字=典") + private String projectType; + + /** + * 付款额不能超合同额 + */ + @ExcelProperty(value = "付款额不能超合同额") + private Long isPaymentNotExceedContract; + + /** + * 付款额不能超合同额支付比 + */ + @ExcelProperty(value = "付款额不能超合同额支付比") + private BigDecimal paymentNotExceedRatio; + + /** + * 预结算/结算额不能超合同额 + */ + @ExcelProperty(value = "预结算/结算额不能超合同额") + private Long isPreSettlementNotExceedContract; + + /** + * 预结算/结算额不能超合同额比例 + */ + @ExcelProperty(value = "预结算/结算额不能超合同额比例") + private BigDecimal preSettlementNotExceedRatio; + + /** + * 实时刷新 + */ + @ExcelProperty(value = "实时刷新") + private Long isRealTimeRefresh; + + /** + * 合同累计变更金额 + */ + @ExcelProperty(value = "合同累计变更金额") + private BigDecimal contractCumulativeChangeAmount; + + /** + * 文件id (多个文件逗号分隔) + */ + @ExcelProperty(value = "文件id ", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "多=个文件逗号分隔") + private String fileId; + + /** + * 单据引用ID + */ + @ExcelProperty(value = "单据引用ID") + private Long danjuId; + + + /** + * 创建者 + */ + @TableField(fill = FieldFill.INSERT) + private Long createBy; + + /** + * 创建者 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") + @TableField(fill = FieldFill.INSERT) + private Long createByName; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + + + /** + * 预收款项 + */ + private List yskx; + + /** + * 扣款与奖励项 + */ + private List kkyjlx; + + /** + * 合同条款 + */ + private List httk; + + /** + * 支付条款 + */ + private List zftk; + + /** + * 合同主要条款约定 + */ + private XzdContractDepositInfo htzytkyd; + + + + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/mapper/XzdSubcontractChangeMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/mapper/XzdSubcontractChangeMapper.java new file mode 100644 index 00000000..33f96a4d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/mapper/XzdSubcontractChangeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.contractManagement.fenbaohetongbiangg.mapper; + +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.XzdSubcontractChange; +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.vo.XzdSubcontractChangeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 分包合同变更Mapper接口 + * + * @author Lion Li + * @date 2025-10-14 + */ +public interface XzdSubcontractChangeMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/service/IXzdSubcontractChangeService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/service/IXzdSubcontractChangeService.java new file mode 100644 index 00000000..4288226d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/service/IXzdSubcontractChangeService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.contractManagement.fenbaohetongbiangg.service; + +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.vo.XzdSubcontractChangeVo; +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.bo.XzdSubcontractChangeBo; +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.XzdSubcontractChange; +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-10-14 + */ +public interface IXzdSubcontractChangeService extends IService{ + + /** + * 查询分包合同变更 + * + * @param id 主键 + * @return 分包合同变更 + */ + XzdSubcontractChangeVo queryById(Long id); + + /** + * 分页查询分包合同变更列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同变更分页列表 + */ + TableDataInfo queryPageList(XzdSubcontractChangeBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的分包合同变更列表 + * + * @param bo 查询条件 + * @return 分包合同变更列表 + */ + List queryList(XzdSubcontractChangeBo bo); + + /** + * 新增分包合同变更 + * + * @param bo 分包合同变更 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdSubcontractChangeBo bo); + + /** + * 修改分包合同变更 + * + * @param bo 分包合同变更 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdSubcontractChangeBo bo); + + /** + * 校验并批量删除分包合同变更信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/service/impl/XzdSubcontractChangeServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/service/impl/XzdSubcontractChangeServiceImpl.java new file mode 100644 index 00000000..2b5c83fb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongbiangg/service/impl/XzdSubcontractChangeServiceImpl.java @@ -0,0 +1,355 @@ +package org.dromara.xzd.contractManagement.fenbaohetongbiangg.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.exception.ServiceException; +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.system.service.impl.SysOssServiceImpl; +import org.dromara.xzd.contractManagement.caigouhetongbiangeng.domain.vo.XzdPurchaseContractAlterationVo; +import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdSubcontractVo; +import org.dromara.xzd.contractManagement.fenbaohetongxinxi.service.IXzdSubcontractService; +import org.dromara.xzd.contractManagement.purchaseManagement.service.IXzdPurchaseContractInformationService; +import org.dromara.xzd.domain.*; +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.XzdContractAdvanceInfoServiceImpl; +import org.dromara.xzd.service.impl.XzdContractClauseServiceImpl; +import org.dromara.xzd.service.impl.XzdDeductionItemsServiceImpl; +import org.dromara.xzd.service.impl.XzdSettlementRulesServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.bo.XzdSubcontractChangeBo; +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.vo.XzdSubcontractChangeVo; +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.XzdSubcontractChange; +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.mapper.XzdSubcontractChangeMapper; +import org.dromara.xzd.contractManagement.fenbaohetongbiangg.service.IXzdSubcontractChangeService; + +import java.util.*; + +/** + * 分包合同变更Service业务层处理 + * + * @author Lion Li + * @date 2025-10-14 + */ +@RequiredArgsConstructor +@Service +public class XzdSubcontractChangeServiceImpl extends ServiceImpl implements IXzdSubcontractChangeService { + + private final XzdSubcontractChangeMapper baseMapper; + + private final IXzdContractAdvanceInfoService iXzdContractAdvanceInfoService; + + private final IXzdDeductionItemsService iXzdDeductionItemsService; + + private final IXzdContractClauseService iXzdContractClauseService; + + private final IXzdSubcontractService iXzdSubcontractService; + + private final SysOssServiceImpl sysOssService; + + @Autowired + private XzdContractAdvanceInfoServiceImpl xzdContractAdvanceInfoService; + @Autowired + private XzdDeductionItemsServiceImpl xzdDeductionItemsService; + @Autowired + private XzdContractClauseServiceImpl xzdContractClauseService; + @Autowired + private XzdSettlementRulesServiceImpl xzdSettlementRulesService; + + + /** + * 查询分包合同变更 + * + * @param id 主键 + * @return 分包合同变更 + */ + @Override + public XzdSubcontractChangeVo queryById(Long id) { + XzdSubcontractChangeVo xzdSubcontractChangeVo = baseMapper.selectVoById(id); + List list = List.of(xzdSubcontractChangeVo); + setValue(list); + + return xzdSubcontractChangeVo; + } + + private void setValue(List lists) { + for (XzdSubcontractChangeVo item : lists) { + + //合同文本-预收款项 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(XzdContractAdvanceInfo::getContractDetailsId, item.getId()); + List advanceInfos = xzdContractAdvanceInfoService.list(lambdaQueryWrapper); + item.setYskx(advanceInfos); + + //合同条款-扣款与奖励项 + LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper1.eq(XzdDeductionItems::getContractDetailsId, item.getId()); + List list = xzdDeductionItemsService.list(lambdaQueryWrapper1); + item.setKkyjlx(list); + + //合同条款-合同条款 + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, item.getId()); + List list1 = xzdContractClauseService.list(lambdaQueryWrapper2); + item.setHttk(list1); + + //支付条款 + LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, item.getId()); + List list2 = xzdSettlementRulesService.list(lambdaQueryWrapper3); + item.setZftk(list2); + +// //合同文本-合同主要条款约定 +// LambdaQueryWrapper lambdaQueryWrapper4 = new LambdaQueryWrapper<>(); +// lambdaQueryWrapper4.eq(XzdContractDepositInfo::getContractDetailsId, item.getId()); +// XzdContractDepositInfo list3 = xzdContractDepositInfoService.getOne(lambdaQueryWrapper4); +// item.setHtzytkyd(list3); + + + } + } + + /** + * 分页查询分包合同变更列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同变更分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdSubcontractChangeBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的分包合同变更列表 + * + * @param bo 查询条件 + * @return 分包合同变更列表 + */ + @Override + public List queryList(XzdSubcontractChangeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdSubcontractChangeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdSubcontractChange::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), XzdSubcontractChange::getDocumentCode, bo.getDocumentCode()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdSubcontractChange::getTitle, bo.getTitle()); + lqw.eq(bo.getDocumentDate() != null, XzdSubcontractChange::getDocumentDate, bo.getDocumentDate()); + lqw.ge(bo.getStartTime() != null, XzdSubcontractChange::getDocumentDate, bo.getStartTime()); + lqw.le(bo.getEndTime() != null, XzdSubcontractChange::getDocumentDate, bo.getEndTime()); + + + + lqw.eq(bo.getContractCode() != null, XzdSubcontractChange::getContractCode, bo.getContractCode()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSubcontractChange::getContractName, bo.getContractName()); + lqw.eq(StringUtils.isNotBlank(bo.getContractType()), XzdSubcontractChange::getContractType, bo.getContractType()); + lqw.eq(StringUtils.isNotBlank(bo.getChangeType()), XzdSubcontractChange::getChangeType, bo.getChangeType()); + lqw.eq(StringUtils.isNotBlank(bo.getProject()), XzdSubcontractChange::getProject, bo.getProject()); + lqw.eq(StringUtils.isNotBlank(bo.getBusinessModel()), XzdSubcontractChange::getBusinessModel, bo.getBusinessModel()); + lqw.eq(StringUtils.isNotBlank(bo.getOrganization()), XzdSubcontractChange::getOrganization, bo.getOrganization()); + lqw.eq(StringUtils.isNotBlank(bo.getPartyAUnit()), XzdSubcontractChange::getPartyAUnit, bo.getPartyAUnit()); + lqw.eq(StringUtils.isNotBlank(bo.getPartyBUnit()), XzdSubcontractChange::getPartyBUnit, bo.getPartyBUnit()); + lqw.eq(bo.getOriginalContractCost() != null, XzdSubcontractChange::getOriginalContractCost, bo.getOriginalContractCost()); + lqw.eq(bo.getChangeTaxInclusiveTotal() != null, XzdSubcontractChange::getChangeTaxInclusiveTotal, bo.getChangeTaxInclusiveTotal()); + lqw.eq(bo.getPostChangeTotalCost() != null, XzdSubcontractChange::getPostChangeTotalCost, bo.getPostChangeTotalCost()); + lqw.eq(bo.getCumulativeChangeAmount() != null, XzdSubcontractChange::getCumulativeChangeAmount, bo.getCumulativeChangeAmount()); + lqw.eq(bo.getAvailableTargetCost() != null, XzdSubcontractChange::getAvailableTargetCost, bo.getAvailableTargetCost()); + lqw.eq(bo.getTargetCost() != null, XzdSubcontractChange::getTargetCost, bo.getTargetCost()); + lqw.eq(StringUtils.isNotBlank(bo.getTargetCostItem()), XzdSubcontractChange::getTargetCostItem, bo.getTargetCostItem()); + lqw.eq(StringUtils.isNotBlank(bo.getWarning()), XzdSubcontractChange::getWarning, bo.getWarning()); + lqw.eq(StringUtils.isNotBlank(bo.getPaymentTerms()), XzdSubcontractChange::getPaymentTerms, bo.getPaymentTerms()); + lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), XzdSubcontractChange::getRemarks, bo.getRemarks()); + lqw.eq(bo.getIsStamped() != null, XzdSubcontractChange::getIsStamped, bo.getIsStamped()); + lqw.eq(bo.getPostChangeProjectManager() != null, XzdSubcontractChange::getPostChangeProjectManager, bo.getPostChangeProjectManager()); + lqw.eq(bo.getPostChangeProjectOwner() != null, XzdSubcontractChange::getPostChangeProjectOwner, bo.getPostChangeProjectOwner()); + lqw.eq(bo.getPostChangeSiteManager() != null, XzdSubcontractChange::getPostChangeSiteManager, bo.getPostChangeSiteManager()); + lqw.eq(StringUtils.isNotBlank(bo.getPostChangeContractRemarks()), XzdSubcontractChange::getPostChangeContractRemarks, bo.getPostChangeContractRemarks()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdSubcontractChange::getProjectCategory, bo.getProjectCategory()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdSubcontractChange::getProjectType, bo.getProjectType()); + lqw.eq(bo.getIsPaymentNotExceedContract() != null, XzdSubcontractChange::getIsPaymentNotExceedContract, bo.getIsPaymentNotExceedContract()); + lqw.eq(bo.getPaymentNotExceedRatio() != null, XzdSubcontractChange::getPaymentNotExceedRatio, bo.getPaymentNotExceedRatio()); + lqw.eq(bo.getIsPreSettlementNotExceedContract() != null, XzdSubcontractChange::getIsPreSettlementNotExceedContract, bo.getIsPreSettlementNotExceedContract()); + lqw.eq(bo.getPreSettlementNotExceedRatio() != null, XzdSubcontractChange::getPreSettlementNotExceedRatio, bo.getPreSettlementNotExceedRatio()); + lqw.eq(bo.getIsRealTimeRefresh() != null, XzdSubcontractChange::getIsRealTimeRefresh, bo.getIsRealTimeRefresh()); + lqw.eq(bo.getContractCumulativeChangeAmount() != null, XzdSubcontractChange::getContractCumulativeChangeAmount, bo.getContractCumulativeChangeAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdSubcontractChange::getFileId, bo.getFileId()); + lqw.eq(bo.getDanjuId() != null, XzdSubcontractChange::getDanjuId, bo.getDanjuId()); + return lqw; + } + + /** + * 新增分包合同变更 + * + * @param bo 分包合同变更 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XzdSubcontractChangeBo bo) { + XzdSubcontractChange add = MapstructUtils.convert(bo, XzdSubcontractChange.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + String tableName = XzdClassEnum.CAIGOUHETONG_INFORMATION.getClassName(); + + /** + * 预收款项 + */ + HashMap hashMap = new HashMap<>(); + hashMap.put("contract_detailsId", add.getId()); + List yskx = bo.getYskx(); + yskx.forEach(item -> { + item.setTableName(tableName); + item.setContractDetailsId(add.getId()); + }); + iXzdContractAdvanceInfoService.saveBatch(yskx); + /** + * 扣款与奖励项 + */ + List kkyjlx = bo.getKkyjlx(); + kkyjlx.forEach(item -> { + item.setTableName(tableName); + item.setContractDetailsId(add.getId()); + }); + iXzdDeductionItemsService.saveBatch(kkyjlx); + /** + * 合同条款 + */ + List httk = bo.getHttk(); + httk.forEach(item -> { + item.setTableName(tableName); + item.setContractDetailsId(add.getId()); + }); + iXzdContractClauseService.saveBatch(httk); + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改分包合同变更 + * + * @param bo 分包合同变更 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdSubcontractChangeBo bo) { + XzdSubcontractChange add = MapstructUtils.convert(bo, XzdSubcontractChange.class); + /** + * 预收款项 优先删除数据在添加 + */ + String tableName = XzdClassEnum.PURCHASE_CONTRACT_INFORMATION.getClassName(); + HashMap hashMap = new HashMap<>(); + hashMap.put("contract_details_id", add.getId()); + XzdSubcontractChangeVo xzdSubcontractChangeVo = baseMapper.selectVoById(add.getId()); + if (xzdSubcontractChangeVo == null){ + throw new ServiceException("数据不存在"); + } + List yskx = bo.getYskx(); + iXzdContractAdvanceInfoService.getBaseMapper().deleteByMap(hashMap); + if (yskx != null){ + yskx.forEach(item -> { + item.setTableName(tableName); + item.setContractDetailsId(add.getId()); + }); + iXzdContractAdvanceInfoService.saveBatch(yskx); + } + /** + * 扣款与奖励项 + */ + List kkyjlx = bo.getKkyjlx(); + iXzdDeductionItemsService.getBaseMapper().deleteByMap(hashMap); + if(kkyjlx != null){ + kkyjlx.forEach(item -> { + item.setTableName(tableName); + item.setContractDetailsId(add.getId()); + }); + iXzdDeductionItemsService.saveBatch(kkyjlx); + } + /** + * 合同条款 + */ + List httk = bo.getHttk(); + iXzdContractClauseService.getBaseMapper().deleteByMap(hashMap); + if (httk != null){ + httk.forEach(item -> { + item.setTableName(tableName); + item.setContractDetailsId(add.getId()); + }); + iXzdContractClauseService.saveBatch(httk); + } + + + + + return baseMapper.updateById(add) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdSubcontractChange entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除分包合同变更信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + + } + for (Long id : ids) { + XzdSubcontractChangeVo vo = baseMapper.selectVoById(id); + if (vo != null){ + //删除附件 + if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){ + List deleteIds = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + } + } + } + + //合同文本-预收款项 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(XzdContractAdvanceInfo::getContractDetailsId, ids); + xzdContractAdvanceInfoService.remove(lambdaQueryWrapper); + //合同条款-扣款与奖励项 + LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper1.in(XzdDeductionItems::getContractDetailsId, ids); + xzdDeductionItemsService.remove(lambdaQueryWrapper1); + //合同条款-合同条款 + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.in(XzdContractClause::getContractDetailsId, ids); + xzdContractClauseService.remove(lambdaQueryWrapper2); + //支付条款 + LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids); + xzdSettlementRulesService.remove(lambdaQueryWrapper3); + + + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/XzdSubcontract.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/XzdSubcontract.java index fc875d67..f68db242 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/XzdSubcontract.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/XzdSubcontract.java @@ -203,7 +203,7 @@ public class XzdSubcontract extends BaseEntity { /** * 备案时间 */ - private LocalDateTime filingTime; + private LocalDate filingTime; /** * WBS diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/bo/XzdSubcontractBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/bo/XzdSubcontractBo.java index 4d60638d..e01480e6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/bo/XzdSubcontractBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/bo/XzdSubcontractBo.java @@ -29,13 +29,11 @@ public class XzdSubcontractBo extends BaseEntity { /** * */ - @NotNull(message = "不能为空", groups = { EditGroup.class }) private Long id; /** * 合同编码 */ - @NotBlank(message = "合同编码不能为空", groups = { AddGroup.class, EditGroup.class }) private String contractCode; /** @@ -206,7 +204,7 @@ public class XzdSubcontractBo extends BaseEntity { /** * 备案时间 */ - private LocalDateTime filingTime; + private LocalDate filingTime; /** * WBS diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/vo/XzdSubcontractVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/vo/XzdSubcontractVo.java index 89a79b67..4382fffb 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/vo/XzdSubcontractVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/domain/vo/XzdSubcontractVo.java @@ -2,6 +2,8 @@ package org.dromara.xzd.contractManagement.fenbaohetongxinxi.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.fenbaohetongxinxi.domain.XzdSubcontract; @@ -321,7 +323,7 @@ public class XzdSubcontractVo implements Serializable { * 备案时间 */ @ExcelProperty(value = "备案时间") - private LocalDateTime filingTime; + private LocalDate filingTime; /** * WBS @@ -389,6 +391,27 @@ public class XzdSubcontractVo implements Serializable { @ExcelProperty(value = "单据引用ID") private Long danjuId; + + + /** + * 创建者 + */ + @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; + /** * 预收款项 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/service/impl/XzdSubcontractServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/service/impl/XzdSubcontractServiceImpl.java index bc806254..5ac03c16 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/service/impl/XzdSubcontractServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongxinxi/service/impl/XzdSubcontractServiceImpl.java @@ -89,7 +89,7 @@ public class XzdSubcontractServiceImpl extends ServiceImpl infos) { for (XzdSubcontractVo item : infos) { - - //项目名称 if (item.getProject() != null){ String projectName = xzdProjectService.queryNameById(item.getProject()); @@ -270,8 +268,9 @@ public class XzdSubcontractServiceImpl extends ServiceImpl().gt(XzdSubcontract::getCreateTime, LocalDate.now())); String s = areaUtil.generateDateBasedNumberByY(); - boolean flag = baseMapper.insert(add) > 0; + add.setContractCode(ZxdEnum.FENBAOHETONG_PREFIX.getTypeValue()+"-"+s+"-"+(l+1)); + boolean flag = baseMapper.insert(add) > 0; // 表名 String tableName = XzdClassEnum.FENBAOHETONG_INFORMATION.getClassName(); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/controller/XzdSubcontractTerminationController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/controller/XzdSubcontractTerminationController.java new file mode 100644 index 00000000..a3f3a3eb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/controller/XzdSubcontractTerminationController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.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.fenbaohetongzhongzhi.domain.vo.XzdSubcontractTerminationVo; +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.bo.XzdSubcontractTerminationBo; +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.service.IXzdSubcontractTerminationService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 分包合同终止 + * + * @author Lion Li + * @date 2025-10-14 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/fenbaohetongzhongzhi/subcontractTermination") +public class XzdSubcontractTerminationController extends BaseController { + + private final IXzdSubcontractTerminationService xzdSubcontractTerminationService; + + /** + * 查询分包合同终止列表 + */ + @SaCheckPermission("fenbaohetongzhongzhi:subcontractTermination:list") + @GetMapping("/list") + public TableDataInfo list(XzdSubcontractTerminationBo bo, PageQuery pageQuery) { + return xzdSubcontractTerminationService.queryPageList(bo, pageQuery); + } + + /** + * 导出分包合同终止列表 + */ + @SaCheckPermission("fenbaohetongzhongzhi:subcontractTermination:export") + @Log(title = "分包合同终止", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdSubcontractTerminationBo bo, HttpServletResponse response) { + List list = xzdSubcontractTerminationService.queryList(bo); + ExcelUtil.exportExcel(list, "分包合同终止", XzdSubcontractTerminationVo.class, response); + } + + /** + * 获取分包合同终止详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("fenbaohetongzhongzhi:subcontractTermination:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdSubcontractTerminationService.queryById(id)); + } + + /** + * 新增分包合同终止 + */ + @SaCheckPermission("fenbaohetongzhongzhi:subcontractTermination:add") + @Log(title = "分包合同终止", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdSubcontractTerminationBo bo) { + return toAjax(xzdSubcontractTerminationService.insertByBo(bo)); + } + + /** + * 修改分包合同终止 + */ + @SaCheckPermission("fenbaohetongzhongzhi:subcontractTermination:edit") + @Log(title = "分包合同终止", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdSubcontractTerminationBo bo) { + return toAjax(xzdSubcontractTerminationService.updateByBo(bo)); + } + + /** + * 删除分包合同终止 + * + * @param ids 主键串 + */ + @SaCheckPermission("fenbaohetongzhongzhi:subcontractTermination:remove") + @Log(title = "分包合同终止", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdSubcontractTerminationService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/XzdSubcontractTermination.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/XzdSubcontractTermination.java new file mode 100644 index 00000000..45f1f2b7 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/XzdSubcontractTermination.java @@ -0,0 +1,118 @@ +package org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.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_subcontract_termination + * + * @author Lion Li + * @date 2025-10-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_subcontract_termination") +public class XzdSubcontractTermination extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 合同编号 + */ + private Long contractNumber; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 终止日期 + */ + private LocalDate terminationDate; + + /** + * 工程项目 + */ + private String engineeringProject; + + /** + * 甲方单位 + */ + private String partyAUnit; + + /** + * 乙方单位 + */ + private String partyBUnit; + + /** + * 终止原因 + */ + private String terminationReason; + + /** + * 备注 + */ + private String remarks; + + /** + * 累计结算金额 + */ + private BigDecimal cumulativeSettlementAmount; + + /** + * 累计付款金额 + */ + private BigDecimal cumulativePaymentAmount; + + /** + * 项目大类(字典) + */ + private String projectCategory; + + /** + * 项目类型(字典) + */ + private String projectType; + + /** + * 文件id (多个文件逗号分隔) + */ + private String fileId; + + /** + * 单据引用ID + */ + private Long danjuId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/bo/XzdSubcontractTerminationBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/bo/XzdSubcontractTerminationBo.java new file mode 100644 index 00000000..7fa6c147 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/bo/XzdSubcontractTerminationBo.java @@ -0,0 +1,116 @@ +package org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.bo; + +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.XzdSubcontractTermination; +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.time.LocalDate; + +/** + * 分包合同终止业务对象 xzd_subcontract_termination + * + * @author Lion Li + * @date 2025-10-14 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdSubcontractTermination.class, reverseConvertGenerate = false) +public class XzdSubcontractTerminationBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 合同编号 + */ + private Long contractNumber; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 终止日期 + */ + private LocalDate terminationDate; + + /** + * 工程项目 + */ + private String engineeringProject; + + /** + * 甲方单位 + */ + private String partyAUnit; + + /** + * 乙方单位 + */ + private String partyBUnit; + + /** + * 终止原因 + */ + private String terminationReason; + + /** + * 备注 + */ + private String remarks; + + /** + * 累计结算金额 + */ + private BigDecimal cumulativeSettlementAmount; + + /** + * 累计付款金额 + */ + private BigDecimal cumulativePaymentAmount; + + /** + * 项目大类(字典) + */ + private String projectCategory; + + /** + * 项目类型(字典) + */ + private String projectType; + + /** + * 文件id (多个文件逗号分隔) + */ + private String fileId; + + /** + * 单据引用ID + */ + private Long danjuId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/vo/XzdSubcontractTerminationVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/vo/XzdSubcontractTerminationVo.java new file mode 100644 index 00000000..a93e9099 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/domain/vo/XzdSubcontractTerminationVo.java @@ -0,0 +1,175 @@ +package org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.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.fenbaohetongzhongzhi.domain.XzdSubcontractTermination; +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.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; + + + +/** + * 分包合同终止视图对象 xzd_subcontract_termination + * + * @author Lion Li + * @date 2025-10-14 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdSubcontractTermination.class) +public class XzdSubcontractTerminationVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String documentCode; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate documentDate; + + /** + * 合同编号 + */ + @ExcelProperty(value = "合同编号") + private Long contractNumber; + /** + * 合同编码 + */ + @ExcelProperty(value = "合同编码") + private String contractNumberName; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 终止日期 + */ + @ExcelProperty(value = "终止日期") + private LocalDate terminationDate; + + /** + * 工程项目 + */ + @ExcelProperty(value = "工程项目") + private String engineeringProject; + + /** + * 甲方单位 + */ + @ExcelProperty(value = "甲方单位") + private String partyAUnit; + + /** + * 乙方单位 + */ + @ExcelProperty(value = "乙方单位") + private String partyBUnit; + + /** + * 终止原因 + */ + @ExcelProperty(value = "终止原因") + private String terminationReason; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remarks; + + /** + * 累计结算金额 + */ + @ExcelProperty(value = "累计结算金额") + private BigDecimal cumulativeSettlementAmount; + + /** + * 累计付款金额 + */ + @ExcelProperty(value = "累计付款金额") + private BigDecimal cumulativePaymentAmount; + + /** + * 项目大类(字典) + */ + @ExcelProperty(value = "项目大类", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "字=典") + private String projectCategory; + + /** + * 项目类型(字典) + */ + @ExcelProperty(value = "项目类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "字=典") + private String projectType; + + /** + * 文件id (多个文件逗号分隔) + */ + @ExcelProperty(value = "文件id ", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "多=个文件逗号分隔") + private String fileId; + + /** + * 单据引用ID + */ + @ExcelProperty(value = "单据引用ID") + private Long danjuId; + + /** + * 创建者 + */ + @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; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/mapper/XzdSubcontractTerminationMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/mapper/XzdSubcontractTerminationMapper.java new file mode 100644 index 00000000..66d692cc --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/mapper/XzdSubcontractTerminationMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.mapper; + +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.XzdSubcontractTermination; +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.vo.XzdSubcontractTerminationVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 分包合同终止Mapper接口 + * + * @author Lion Li + * @date 2025-10-14 + */ +public interface XzdSubcontractTerminationMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/service/IXzdSubcontractTerminationService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/service/IXzdSubcontractTerminationService.java new file mode 100644 index 00000000..399aa44c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/service/IXzdSubcontractTerminationService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.service; + +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.vo.XzdSubcontractTerminationVo; +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.bo.XzdSubcontractTerminationBo; +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.XzdSubcontractTermination; +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-10-14 + */ +public interface IXzdSubcontractTerminationService extends IService{ + + /** + * 查询分包合同终止 + * + * @param id 主键 + * @return 分包合同终止 + */ + XzdSubcontractTerminationVo queryById(Long id); + + /** + * 分页查询分包合同终止列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同终止分页列表 + */ + TableDataInfo queryPageList(XzdSubcontractTerminationBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的分包合同终止列表 + * + * @param bo 查询条件 + * @return 分包合同终止列表 + */ + List queryList(XzdSubcontractTerminationBo bo); + + /** + * 新增分包合同终止 + * + * @param bo 分包合同终止 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdSubcontractTerminationBo bo); + + /** + * 修改分包合同终止 + * + * @param bo 分包合同终止 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdSubcontractTerminationBo bo); + + /** + * 校验并批量删除分包合同终止信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/service/impl/XzdSubcontractTerminationServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/service/impl/XzdSubcontractTerminationServiceImpl.java new file mode 100644 index 00000000..ea17f912 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/fenbaohetongzhongzhi/service/impl/XzdSubcontractTerminationServiceImpl.java @@ -0,0 +1,177 @@ +package org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.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.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.utilS.AreaUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.bo.XzdSubcontractTerminationBo; +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.vo.XzdSubcontractTerminationVo; +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.XzdSubcontractTermination; +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.mapper.XzdSubcontractTerminationMapper; +import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.service.IXzdSubcontractTerminationService; + +import java.time.LocalDate; +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-10-14 + */ +@RequiredArgsConstructor +@Service +public class XzdSubcontractTerminationServiceImpl extends ServiceImpl implements IXzdSubcontractTerminationService { + + private final XzdSubcontractTerminationMapper baseMapper; + private final AreaUtil areaUtil; + + @Autowired + private SysOssServiceImpl sysOssService; + + /** + * 查询分包合同终止 + * + * @param id 主键 + * @return 分包合同终止 + */ + @Override + public XzdSubcontractTerminationVo queryById(Long id){ + XzdSubcontractTerminationVo vo = baseMapper.selectVoById(id); + List.of(vo); + return baseMapper.selectVoById(id); + } + + /** + * 分页查询分包合同终止列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同终止分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdSubcontractTerminationBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的分包合同终止列表 + * + * @param bo 查询条件 + * @return 分包合同终止列表 + */ + @Override + public List queryList(XzdSubcontractTerminationBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdSubcontractTerminationBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdSubcontractTermination::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), XzdSubcontractTermination::getDocumentCode, bo.getDocumentCode()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdSubcontractTermination::getTitle, bo.getTitle()); + lqw.eq(bo.getDocumentDate() != null, XzdSubcontractTermination::getDocumentDate, bo.getDocumentDate()); + lqw.eq(bo.getContractNumber() != null, XzdSubcontractTermination::getContractNumber, bo.getContractNumber()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSubcontractTermination::getContractName, bo.getContractName()); + lqw.eq(bo.getTerminationDate() != null, XzdSubcontractTermination::getTerminationDate, bo.getTerminationDate()); + lqw.eq(StringUtils.isNotBlank(bo.getEngineeringProject()), XzdSubcontractTermination::getEngineeringProject, bo.getEngineeringProject()); + lqw.eq(StringUtils.isNotBlank(bo.getPartyAUnit()), XzdSubcontractTermination::getPartyAUnit, bo.getPartyAUnit()); + lqw.eq(StringUtils.isNotBlank(bo.getPartyBUnit()), XzdSubcontractTermination::getPartyBUnit, bo.getPartyBUnit()); + lqw.eq(StringUtils.isNotBlank(bo.getTerminationReason()), XzdSubcontractTermination::getTerminationReason, bo.getTerminationReason()); + lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), XzdSubcontractTermination::getRemarks, bo.getRemarks()); + lqw.eq(bo.getCumulativeSettlementAmount() != null, XzdSubcontractTermination::getCumulativeSettlementAmount, bo.getCumulativeSettlementAmount()); + lqw.eq(bo.getCumulativePaymentAmount() != null, XzdSubcontractTermination::getCumulativePaymentAmount, bo.getCumulativePaymentAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdSubcontractTermination::getProjectCategory, bo.getProjectCategory()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdSubcontractTermination::getProjectType, bo.getProjectType()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdSubcontractTermination::getFileId, bo.getFileId()); + lqw.eq(bo.getDanjuId() != null, XzdSubcontractTermination::getDanjuId, bo.getDanjuId()); + return lqw; + } + + /** + * 新增分包合同终止 + * + * @param bo 分包合同终止 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XzdSubcontractTerminationBo bo) { + XzdSubcontractTermination add = MapstructUtils.convert(bo, XzdSubcontractTermination.class); + validEntityBeforeSave(add); + + Long l = baseMapper.selectCount(new LambdaQueryWrapper().gt(XzdSubcontractTermination::getCreateTime, LocalDate.now())); + String s = areaUtil.generateDateBasedNumber(); + add.setDocumentCode(s+"-"+(l+1)); + + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改分包合同终止 + * + * @param bo 分包合同终止 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdSubcontractTerminationBo bo) { + XzdSubcontractTermination update = MapstructUtils.convert(bo, XzdSubcontractTermination.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdSubcontractTermination entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除分包合同终止信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + + for (Long id : ids) { + XzdSubcontractTerminationVo vo = baseMapper.selectVoById(id); + // 删除附件 + if (!StringUtils.isEmpty(vo.getFileId())){ + List collect = Arrays.stream(vo.getFileId().split(",")).map(item -> { + return Long.parseLong(item); + }).collect(Collectors.toList()); + sysOssService.deleteWithValidByIds(collect, false); + } + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/purchaseManagement/domain/vo/XzdPurchaseContractInformationVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/purchaseManagement/domain/vo/XzdPurchaseContractInformationVo.java index 1d5b8bcc..3c33942b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/purchaseManagement/domain/vo/XzdPurchaseContractInformationVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/purchaseManagement/domain/vo/XzdPurchaseContractInformationVo.java @@ -1,7 +1,11 @@ package org.dromara.xzd.contractManagement.purchaseManagement.domain.vo; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Date; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -416,6 +420,25 @@ public class XzdPurchaseContractInformationVo implements Serializable { 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; + /** * 预收款项 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/purchaseManagement/service/impl/XzdPurchaseContractInformationServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/purchaseManagement/service/impl/XzdPurchaseContractInformationServiceImpl.java index 858797a1..5c804af6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/purchaseManagement/service/impl/XzdPurchaseContractInformationServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/contractManagement/purchaseManagement/service/impl/XzdPurchaseContractInformationServiceImpl.java @@ -94,11 +94,12 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl informationVo = List.of(xzdPurchaseContractInformationVo); + List informationVo = new ArrayList<>(); + if (xzdPurchaseContractInformationVo != null){ + informationVo = List.of(xzdPurchaseContractInformationVo); // 装填数据 - setValue(informationVo); - - + setValue(informationVo); + } return informationVo.getFirst(); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdCorrespondentList.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdCorrespondentList.java index db9b2ca2..cd20afcc 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdCorrespondentList.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdCorrespondentList.java @@ -18,6 +18,8 @@ import org.springframework.web.bind.annotation.*; import java.util.List; + +//客户信息总controller @Validated @RequiredArgsConstructor @RestController @@ -28,8 +30,6 @@ public class XzdCorrespondentList { private final IXzdCorrespondentList iXzdCorrespondentList; - - private final IXzdCustomertypeService iXzdCustomertypeService; /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/XzdGuaranteeChangeInfo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/XzdGuaranteeChangeInfo.java index a4fb0144..e1cac339 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/XzdGuaranteeChangeInfo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/XzdGuaranteeChangeInfo.java @@ -40,6 +40,10 @@ public class XzdGuaranteeChangeInfo extends BaseEntity { * 单据编号 */ private String documentNumber; + /** + * 合同类型 + */ + private String contractType; /** * 标题 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/bo/XzdGuaranteeChangeInfoBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/bo/XzdGuaranteeChangeInfoBo.java index b081c67a..2b394813 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/bo/XzdGuaranteeChangeInfoBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/bo/XzdGuaranteeChangeInfoBo.java @@ -60,7 +60,12 @@ public class XzdGuaranteeChangeInfoBo extends BaseEntity { /** * 合同保函名称 */ - private Long contractGuaranteeName; + private String contractGuaranteeName; + + /** + * 合同类型 + */ + private String contractType; /** * 工程项目 @@ -76,7 +81,7 @@ public class XzdGuaranteeChangeInfoBo extends BaseEntity { * 经办人名称 */ @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "handlerId") - private Long handlerName; + private String handlerName; /** * 变更类型(字典) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/vo/XzdGuaranteeChangeInfoVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/vo/XzdGuaranteeChangeInfoVo.java index aada246a..052666e9 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/vo/XzdGuaranteeChangeInfoVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/domain/vo/XzdGuaranteeChangeInfoVo.java @@ -84,6 +84,11 @@ public class XzdGuaranteeChangeInfoVo implements Serializable { @ExcelProperty(value = "工程项目") private String engineeringProject; + /** + * 合同类型 + */ + private String contractType; + /** * 经办人 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/service/impl/XzdGuaranteeChangeInfoServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/service/impl/XzdGuaranteeChangeInfoServiceImpl.java index ea5b13d2..188a26bf 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/service/impl/XzdGuaranteeChangeInfoServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/deposit/backletter/service/impl/XzdGuaranteeChangeInfoServiceImpl.java @@ -60,7 +60,7 @@ public class XzdGuaranteeChangeInfoServiceImpl extends ServiceImpl list(SettlementOfSubcontractingContractBo bo, PageQuery pageQuery) { + return settlementOfSubcontractingContractService.queryPageList(bo, pageQuery); + } + + /** + * 导出分包合同进度结算列表 + */ + @SaCheckPermission("fenbaohetongjingdu:ofSubcontractingContract:export") + @Log(title = "分包合同进度结算", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SettlementOfSubcontractingContractBo bo, HttpServletResponse response) { + List list = settlementOfSubcontractingContractService.queryList(bo); + ExcelUtil.exportExcel(list, "分包合同进度结算", SettlementOfSubcontractingContractVo.class, response); + } + + /** + * 获取分包合同进度结算详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("fenbaohetongjingdu:ofSubcontractingContract:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(settlementOfSubcontractingContractService.queryById(id)); + } + + /** + * 新增分包合同进度结算 + */ + @SaCheckPermission("fenbaohetongjingdu:ofSubcontractingContract:add") + @Log(title = "分包合同进度结算", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SettlementOfSubcontractingContractBo bo) { + return toAjax(settlementOfSubcontractingContractService.insertByBo(bo)); + } + + /** + * 修改分包合同进度结算 + */ + @SaCheckPermission("fenbaohetongjingdu:ofSubcontractingContract:edit") + @Log(title = "分包合同进度结算", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SettlementOfSubcontractingContractBo bo) { + return toAjax(settlementOfSubcontractingContractService.updateByBo(bo)); + } + + /** + * 删除分包合同进度结算 + * + * @param ids 主键串 + */ + @SaCheckPermission("fenbaohetongjingdu:ofSubcontractingContract:remove") + @Log(title = "分包合同进度结算", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(settlementOfSubcontractingContractService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/SettlementOfSubcontractingContract.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/SettlementOfSubcontractingContract.java new file mode 100644 index 00000000..664a61c4 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/SettlementOfSubcontractingContract.java @@ -0,0 +1,168 @@ +package org.dromara.xzd.settlement.fenbaohetongjingdu.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; + +/** + * 分包合同进度结算对象 settlement_of_subcontracting_contract + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("settlement_of_subcontracting_contract") +public class SettlementOfSubcontractingContract extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 合同编码 + */ + private Long contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 统计周期 + */ + private String statisticPeriod; + + /** + * 计量开始 + */ + private LocalDate measurementStart; + + /** + * 项目 + */ + private Long project; + + /** + * 审批金额 + */ + private BigDecimal approvalAmount; + + /** + * 计量结束 + */ + private LocalDate measurementEnd; + + /** + * 结算单位 客户信息 + */ + private Long settlementUnit; + + /** + * 合同金额 + */ + private BigDecimal contractAmount; + + /** + * 累计结算金额(含本期) + */ + private BigDecimal cumulativeSettlementAmountIncludeCurrent; + + /** + * 累计结算金额(不含本期) + */ + private BigDecimal cumulativeSettlementNotAmountIncludeCurrent; + + /** + * 本次结算比例 + */ + private BigDecimal currentSettlementRatio; + + /** + * 截止本期结算比例 + */ + private BigDecimal settlementRatioUntilCurrent; + + /** + * 已结算比例(不含本期) + */ + private BigDecimal settlementRatioExcludeCurrent; + + /** + * 备注 + */ + private String remarks; + + /** + * 合同含税金额 + */ + private BigDecimal contractTaxInclusiveAmount; + + /** + * 合同不含税金额 + */ + private BigDecimal contractTaxExclusiveAmount; + + /** + * 累计结算金额 + */ + private BigDecimal cumulativeSettlementAmount; + + /** + * 本期扣款金额 + */ + private BigDecimal currentDeductionAmount; + + /** + * 本期奖励金额 + */ + private BigDecimal currentRewardAmount; + + /** + * 实时刷新 1选择 0未选 + */ + private String realtimeRefresh; + + /** + * 文件ID + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 审核状态 + */ + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/bo/SettlementOfSubcontractingContractBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/bo/SettlementOfSubcontractingContractBo.java new file mode 100644 index 00000000..0c4b82df --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/bo/SettlementOfSubcontractingContractBo.java @@ -0,0 +1,170 @@ +package org.dromara.xzd.settlement.fenbaohetongjingdu.domain.bo; + +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.SettlementOfSubcontractingContract; +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.time.LocalDate; + +/** + * 分包合同进度结算业务对象 settlement_of_subcontracting_contract + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SettlementOfSubcontractingContract.class, reverseConvertGenerate = false) +public class SettlementOfSubcontractingContractBo extends BaseEntity { + + /** + * 主键ID + */ + private Long id; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 合同编码 + */ + private Long contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 统计周期 + */ + private String statisticPeriod; + + /** + * 计量开始 + */ + private LocalDate measurementStart; + + /** + * 项目 + */ + private Long project; + + /** + * 审批金额 + */ + private BigDecimal approvalAmount; + + /** + * 计量结束 + */ + private LocalDate measurementEnd; + + /** + * 结算单位 客户信息 + */ + private Long settlementUnit; + + /** + * 合同金额 + */ + private BigDecimal contractAmount; + + /** + * 累计结算金额(含本期) + */ + private BigDecimal cumulativeSettlementAmountIncludeCurrent; + + /** + * 累计结算金额(不含本期) + */ + private BigDecimal cumulativeSettlementNotAmountIncludeCurrent; + + /** + * 本次结算比例 + */ + private BigDecimal currentSettlementRatio; + + /** + * 截止本期结算比例 + */ + private BigDecimal settlementRatioUntilCurrent; + + /** + * 已结算比例(不含本期) + */ + private BigDecimal settlementRatioExcludeCurrent; + + /** + * 备注 + */ + private String remarks; + + /** + * 合同含税金额 + */ + private BigDecimal contractTaxInclusiveAmount; + + /** + * 合同不含税金额 + */ + private BigDecimal contractTaxExclusiveAmount; + + /** + * 累计结算金额 + */ + private BigDecimal cumulativeSettlementAmount; + + /** + * 本期扣款金额 + */ + private BigDecimal currentDeductionAmount; + + /** + * 本期奖励金额 + */ + private BigDecimal currentRewardAmount; + + /** + * 实时刷新 1选择 0未选 + */ + private String realtimeRefresh; + + /** + * 文件ID + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 审核状态 + */ + private String auditStatus; + + private LocalDate startDate; + + private LocalDate endDate; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/vo/SettlementOfSubcontractingContractVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/vo/SettlementOfSubcontractingContractVo.java new file mode 100644 index 00000000..4e4af705 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/domain/vo/SettlementOfSubcontractingContractVo.java @@ -0,0 +1,221 @@ +package org.dromara.xzd.settlement.fenbaohetongjingdu.domain.vo; + +import java.math.BigDecimal; +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.SettlementOfSubcontractingContract; +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.time.LocalDate; +import java.util.Date; + + + +/** + * 分包合同进度结算视图对象 settlement_of_subcontracting_contract + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SettlementOfSubcontractingContract.class) +public class SettlementOfSubcontractingContractVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String documentCode; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate documentDate; + + /** + * 合同编码 + */ + @ExcelProperty(value = "合同编码") + private Long contractCode; + + + /** + * 合同编码名称 + */ + @ExcelProperty(value = "合同编码名称") + private String contractCodeName; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 统计周期 + */ + @ExcelProperty(value = "统计周期") + private String statisticPeriod; + + /** + * 计量开始 + */ + @ExcelProperty(value = "计量开始") + private LocalDate measurementStart; + + /** + * 项目 + */ + @ExcelProperty(value = "项目") + private Long project; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 审批金额 + */ + @ExcelProperty(value = "审批金额") + private BigDecimal approvalAmount; + + /** + * 计量结束 + */ + @ExcelProperty(value = "计量结束") + private LocalDate measurementEnd; + + /** + * 结算单位 客户信息 + */ + @ExcelProperty(value = "结算单位 客户信息") + private Long settlementUnit; + + /** + * 结算单位 客户信息名称 + */ + @ExcelProperty(value = "结算单位 客户信息名称") + private String settlementUnitName; + + /** + * 合同金额 + */ + @ExcelProperty(value = "合同金额") + private BigDecimal contractAmount; + + /** + * 累计结算金额(含本期) + */ + @ExcelProperty(value = "累计结算金额(含本期)") + private BigDecimal cumulativeSettlementAmountIncludeCurrent; + + /** + * 累计结算金额(不含本期) + */ + @ExcelProperty(value = "累计结算金额(不含本期)") + private BigDecimal cumulativeSettlementNotAmountIncludeCurrent; + + /** + * 本次结算比例 + */ + @ExcelProperty(value = "本次结算比例") + private BigDecimal currentSettlementRatio; + + /** + * 截止本期结算比例 + */ + @ExcelProperty(value = "截止本期结算比例") + private BigDecimal settlementRatioUntilCurrent; + + /** + * 已结算比例(不含本期) + */ + @ExcelProperty(value = "已结算比例(不含本期)") + private BigDecimal settlementRatioExcludeCurrent; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remarks; + + /** + * 合同含税金额 + */ + @ExcelProperty(value = "合同含税金额") + private BigDecimal contractTaxInclusiveAmount; + + /** + * 合同不含税金额 + */ + @ExcelProperty(value = "合同不含税金额") + private BigDecimal contractTaxExclusiveAmount; + + /** + * 累计结算金额 + */ + @ExcelProperty(value = "累计结算金额") + private BigDecimal cumulativeSettlementAmount; + + /** + * 本期扣款金额 + */ + @ExcelProperty(value = "本期扣款金额") + private BigDecimal currentDeductionAmount; + + /** + * 本期奖励金额 + */ + @ExcelProperty(value = "本期奖励金额") + private BigDecimal currentRewardAmount; + + /** + * 实时刷新 1选择 0未选 + */ + @ExcelProperty(value = "实时刷新 1选择 0未选") + private String realtimeRefresh; + + /** + * 文件ID + */ + @ExcelProperty(value = "文件ID") + private String fileId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/mapper/SettlementOfSubcontractingContractMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/mapper/SettlementOfSubcontractingContractMapper.java new file mode 100644 index 00000000..8e97e4d2 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/mapper/SettlementOfSubcontractingContractMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.settlement.fenbaohetongjingdu.mapper; + +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.SettlementOfSubcontractingContract; +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.vo.SettlementOfSubcontractingContractVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 分包合同进度结算Mapper接口 + * + * @author Lion Li + * @date 2025-10-15 + */ +public interface SettlementOfSubcontractingContractMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/service/ISettlementOfSubcontractingContractService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/service/ISettlementOfSubcontractingContractService.java new file mode 100644 index 00000000..ae54c0db --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/service/ISettlementOfSubcontractingContractService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.settlement.fenbaohetongjingdu.service; + +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.vo.SettlementOfSubcontractingContractVo; +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.bo.SettlementOfSubcontractingContractBo; +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.SettlementOfSubcontractingContract; +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-10-15 + */ +public interface ISettlementOfSubcontractingContractService extends IService{ + + /** + * 查询分包合同进度结算 + * + * @param id 主键 + * @return 分包合同进度结算 + */ + SettlementOfSubcontractingContractVo queryById(Long id); + + /** + * 分页查询分包合同进度结算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同进度结算分页列表 + */ + TableDataInfo queryPageList(SettlementOfSubcontractingContractBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的分包合同进度结算列表 + * + * @param bo 查询条件 + * @return 分包合同进度结算列表 + */ + List queryList(SettlementOfSubcontractingContractBo bo); + + /** + * 新增分包合同进度结算 + * + * @param bo 分包合同进度结算 + * @return 是否新增成功 + */ + Boolean insertByBo(SettlementOfSubcontractingContractBo bo); + + /** + * 修改分包合同进度结算 + * + * @param bo 分包合同进度结算 + * @return 是否修改成功 + */ + Boolean updateByBo(SettlementOfSubcontractingContractBo bo); + + /** + * 校验并批量删除分包合同进度结算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/service/impl/SettlementOfSubcontractingContractServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/service/impl/SettlementOfSubcontractingContractServiceImpl.java new file mode 100644 index 00000000..09c12dc5 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjingdu/service/impl/SettlementOfSubcontractingContractServiceImpl.java @@ -0,0 +1,228 @@ +package org.dromara.xzd.settlement.fenbaohetongjingdu.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.domain.R; +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.system.service.impl.SysOssServiceImpl; +import org.dromara.xzd.contractManagement.caigoucontractTermination.domain.XzdPurchaseContractSuspend; +import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdSubcontractVo; +import org.dromara.xzd.domain.*; +import org.dromara.xzd.domain.dto.QuerCorrespondentDto; +import org.dromara.xzd.service.IXzdCorrespondentList; +import org.dromara.xzd.service.impl.XzdProjectServiceImpl; +import org.dromara.xzd.utilS.AreaUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.bo.SettlementOfSubcontractingContractBo; +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.vo.SettlementOfSubcontractingContractVo; +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.SettlementOfSubcontractingContract; +import org.dromara.xzd.settlement.fenbaohetongjingdu.mapper.SettlementOfSubcontractingContractMapper; +import org.dromara.xzd.settlement.fenbaohetongjingdu.service.ISettlementOfSubcontractingContractService; + +import java.time.LocalDate; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 分包合同进度结算Service业务层处理 + * + * @author Lion Li + * @date 2025-10-15 + */ +@RequiredArgsConstructor +@Service +public class SettlementOfSubcontractingContractServiceImpl extends ServiceImpl implements ISettlementOfSubcontractingContractService { + + private final SettlementOfSubcontractingContractMapper baseMapper; + private final AreaUtil areaUtil; + + + @Autowired + private IXzdCorrespondentList iXzdCorrespondentList; + + + @Autowired + private XzdProjectServiceImpl xzdProjectService; + + @Autowired + private SysOssServiceImpl sysOssService; + + /** + * 查询分包合同进度结算 + * + * @param id 主键 + * @return 分包合同进度结算 + */ + @Override + public SettlementOfSubcontractingContractVo queryById(Long id){ + SettlementOfSubcontractingContractVo vo = baseMapper.selectVoById(id); + List res = List.of(vo); + setValue(res); + + return res.getFirst(); + } + + /** + * 分页查询分包合同进度结算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同进度结算分页列表 + */ + @Override + public TableDataInfo queryPageList(SettlementOfSubcontractingContractBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + setValue(result.getRecords()); + return TableDataInfo.build(result); + } + + + +// 填充数据 + + private void setValue(List records) { + for (SettlementOfSubcontractingContractVo item : records) { + //项目名称 + if (item.getProject() != null){ + String projectName = xzdProjectService.queryNameById(item.getProject()); + if (projectName != null){ + item.setProjectName(projectName); + } + } + //甲方单位(客户信息列表) + R byid = iXzdCorrespondentList.getCustomerByid(item.getSettlementUnit()); + if (byid!=null){ + if (byid.getData().getXzdCustomerinformation() != null){ + item.setSettlementUnitName(byid.getData().getXzdCustomerinformation().getUnitName()); + } + } + } + } + + /** + * 查询符合条件的分包合同进度结算列表 + * + * @param bo 查询条件 + * @return 分包合同进度结算列表 + */ + @Override + public List queryList(SettlementOfSubcontractingContractBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SettlementOfSubcontractingContractBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(SettlementOfSubcontractingContract::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), SettlementOfSubcontractingContract::getDocumentCode, bo.getDocumentCode()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), SettlementOfSubcontractingContract::getTitle, bo.getTitle()); + lqw.eq(bo.getDocumentDate() != null, SettlementOfSubcontractingContract::getDocumentDate, bo.getDocumentDate()); + lqw.ge(bo.getStartDate() != null, SettlementOfSubcontractingContract::getDocumentDate, bo.getStartDate()); + lqw.le(bo.getEndDate() != null, SettlementOfSubcontractingContract::getDocumentDate, bo.getEndDate()); + + + lqw.eq(bo.getContractCode() != null, SettlementOfSubcontractingContract::getContractCode, bo.getContractCode()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), SettlementOfSubcontractingContract::getContractName, bo.getContractName()); + lqw.eq(StringUtils.isNotBlank(bo.getStatisticPeriod()), SettlementOfSubcontractingContract::getStatisticPeriod, bo.getStatisticPeriod()); + lqw.eq(bo.getMeasurementStart() != null, SettlementOfSubcontractingContract::getMeasurementStart, bo.getMeasurementStart()); + lqw.eq(bo.getProject() != null, SettlementOfSubcontractingContract::getProject, bo.getProject()); + lqw.eq(bo.getApprovalAmount() != null, SettlementOfSubcontractingContract::getApprovalAmount, bo.getApprovalAmount()); + lqw.eq(bo.getMeasurementEnd() != null, SettlementOfSubcontractingContract::getMeasurementEnd, bo.getMeasurementEnd()); + lqw.eq(bo.getSettlementUnit() != null, SettlementOfSubcontractingContract::getSettlementUnit, bo.getSettlementUnit()); + lqw.eq(bo.getContractAmount() != null, SettlementOfSubcontractingContract::getContractAmount, bo.getContractAmount()); + lqw.eq(bo.getCumulativeSettlementAmountIncludeCurrent() != null, SettlementOfSubcontractingContract::getCumulativeSettlementAmountIncludeCurrent, bo.getCumulativeSettlementAmountIncludeCurrent()); + lqw.eq(bo.getCumulativeSettlementNotAmountIncludeCurrent() != null, SettlementOfSubcontractingContract::getCumulativeSettlementNotAmountIncludeCurrent, bo.getCumulativeSettlementNotAmountIncludeCurrent()); + lqw.eq(bo.getCurrentSettlementRatio() != null, SettlementOfSubcontractingContract::getCurrentSettlementRatio, bo.getCurrentSettlementRatio()); + lqw.eq(bo.getSettlementRatioUntilCurrent() != null, SettlementOfSubcontractingContract::getSettlementRatioUntilCurrent, bo.getSettlementRatioUntilCurrent()); + lqw.eq(bo.getSettlementRatioExcludeCurrent() != null, SettlementOfSubcontractingContract::getSettlementRatioExcludeCurrent, bo.getSettlementRatioExcludeCurrent()); + lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), SettlementOfSubcontractingContract::getRemarks, bo.getRemarks()); + lqw.eq(bo.getContractTaxInclusiveAmount() != null, SettlementOfSubcontractingContract::getContractTaxInclusiveAmount, bo.getContractTaxInclusiveAmount()); + lqw.eq(bo.getContractTaxExclusiveAmount() != null, SettlementOfSubcontractingContract::getContractTaxExclusiveAmount, bo.getContractTaxExclusiveAmount()); + lqw.eq(bo.getCumulativeSettlementAmount() != null, SettlementOfSubcontractingContract::getCumulativeSettlementAmount, bo.getCumulativeSettlementAmount()); + lqw.eq(bo.getCurrentDeductionAmount() != null, SettlementOfSubcontractingContract::getCurrentDeductionAmount, bo.getCurrentDeductionAmount()); + lqw.eq(bo.getCurrentRewardAmount() != null, SettlementOfSubcontractingContract::getCurrentRewardAmount, bo.getCurrentRewardAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getRealtimeRefresh()), SettlementOfSubcontractingContract::getRealtimeRefresh, bo.getRealtimeRefresh()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), SettlementOfSubcontractingContract::getFileId, bo.getFileId()); + lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), SettlementOfSubcontractingContract::getAuditStatus, bo.getAuditStatus()); + return lqw; + } + + /** + * 新增分包合同进度结算 + * + * @param bo 分包合同进度结算 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SettlementOfSubcontractingContractBo bo) { + SettlementOfSubcontractingContract add = MapstructUtils.convert(bo, SettlementOfSubcontractingContract.class); + validEntityBeforeSave(add); + Long l = baseMapper.selectCount(new LambdaQueryWrapper().gt(SettlementOfSubcontractingContract::getCreateTime, LocalDate.now())); + String s = areaUtil.generateDateBasedNumber(); + add.setDocumentCode(s+"-"+(l+1)); + + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改分包合同进度结算 + * + * @param bo 分包合同进度结算 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SettlementOfSubcontractingContractBo bo) { + SettlementOfSubcontractingContract update = MapstructUtils.convert(bo, SettlementOfSubcontractingContract.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SettlementOfSubcontractingContract entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除分包合同进度结算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + for (Long id : ids) { + SettlementOfSubcontractingContractVo vo = baseMapper.selectVoById(id); + if (vo != null){ + //删除附件 + if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){ + List deleteIds = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + } + } + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/controller/SettlementOfSubcontractingCompletionController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/controller/SettlementOfSubcontractingCompletionController.java new file mode 100644 index 00000000..e59deea3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/controller/SettlementOfSubcontractingCompletionController.java @@ -0,0 +1,121 @@ +package org.dromara.xzd.settlement.fenbaohetongjungong.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.dromara.xzd.domain.vo.XzdSettlementRulesVo; +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.settlement.fenbaohetongjungong.domain.vo.SettlementOfSubcontractingCompletionVo; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.bo.SettlementOfSubcontractingCompletionBo; +import org.dromara.xzd.settlement.fenbaohetongjungong.service.ISettlementOfSubcontractingCompletionService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 分包合同竣工结算 + * + * @author Lion Li + * @date 2025-10-15 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/fenbaohetongjungong/ofSubcontractingCompletion") +public class SettlementOfSubcontractingCompletionController extends BaseController { + + private final ISettlementOfSubcontractingCompletionService settlementOfSubcontractingCompletionService; + + /** + * 查询分包合同竣工结算列表 + */ + @SaCheckPermission("fenbaohetongjungong:ofSubcontractingCompletion:list") + @GetMapping("/list") + public TableDataInfo list(SettlementOfSubcontractingCompletionBo bo, PageQuery pageQuery) { + return settlementOfSubcontractingCompletionService.queryPageList(bo, pageQuery); + } + + /** + * 导出分包合同竣工结算列表 + */ + @SaCheckPermission("fenbaohetongjungong:ofSubcontractingCompletion:export") + @Log(title = "分包合同竣工结算", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SettlementOfSubcontractingCompletionBo bo, HttpServletResponse response) { + List list = settlementOfSubcontractingCompletionService.queryList(bo); + ExcelUtil.exportExcel(list, "分包合同竣工结算", SettlementOfSubcontractingCompletionVo.class, response); + } + + /** + * 获取分包合同竣工结算详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("fenbaohetongjungong:ofSubcontractingCompletion:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(settlementOfSubcontractingCompletionService.queryById(id)); + } + + /** + * 新增分包合同竣工结算 + */ + @SaCheckPermission("fenbaohetongjungong:ofSubcontractingCompletion:add") + @Log(title = "分包合同竣工结算", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SettlementOfSubcontractingCompletionBo bo) { + return toAjax(settlementOfSubcontractingCompletionService.insertByBo(bo)); + } + + /** + * 修改分包合同竣工结算 + */ + @SaCheckPermission("fenbaohetongjungong:ofSubcontractingCompletion:edit") + @Log(title = "分包合同竣工结算", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SettlementOfSubcontractingCompletionBo bo) { + return toAjax(settlementOfSubcontractingCompletionService.updateByBo(bo)); + } + + /** + * 删除分包合同竣工结算 + * + * @param ids 主键串 + */ + @SaCheckPermission("fenbaohetongjungong:ofSubcontractingCompletion:remove") + @Log(title = "分包合同竣工结算", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(settlementOfSubcontractingCompletionService.deleteWithValidByIds(List.of(ids), true)); + } + /** + * 根据合同编号获取支付条款 + * + * @param id 合同编号 + */ + @SaCheckPermission("fenbaohetongjungong:ofSubcontractingCompletion:remove") + @Log(title = "根据合同编号获取支付条款", businessType = BusinessType.DELETE) + @DeleteMapping("/contract/{id}") + public R> contractPaymentTerm(@NotEmpty(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(settlementOfSubcontractingCompletionService.contractPaymentTerm(id, true)); + } + + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/SettlementOfSubcontractingCompletion.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/SettlementOfSubcontractingCompletion.java new file mode 100644 index 00000000..c212904b --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/SettlementOfSubcontractingCompletion.java @@ -0,0 +1,173 @@ +package org.dromara.xzd.settlement.fenbaohetongjungong.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; + +/** + * 分包合同竣工结算对象 settlement_of_subcontracting_completion + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("settlement_of_subcontracting_completion") +public class SettlementOfSubcontractingCompletion extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 单据编号 + */ + private String documentCode; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 合同编号 + */ + private Long contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 审定总价 + */ + private Long approvedTotalPrice; + + /** + * 审定日期 + */ + private LocalDate approvedDate; + + /** + * 工程项目 + */ + private String engineeringProject; + + /** + * 经营模式 + */ + private String businessModel; + + /** + * 甲方单位 + */ + private Long partyAUnit; + + /** + * 乙方单位 + */ + private Long partyBUnit; + + /** + * 累计已结金额 + */ + private BigDecimal cumulativeSettledAmount; + + /** + * 累计已付金额 + */ + private BigDecimal cumulativePaidAmount; + + /** + * 已付比例 + */ + private BigDecimal paidRatio; + + /** + * 支付条款 + */ + private Long paymentTerms; + + /** + * 本期应付金额 + */ + private BigDecimal currentPayableAmount; + + /** + * 应付日期 + */ + private LocalDate payableDate; + + /** + * 竣工日期 + */ + private LocalDate completionDate; + + /** + * 警示 + */ + private String warning; + + /** + * 备注 + */ + private String remarks; + + /** + * 本期决算总额 + */ + private BigDecimal currentFinalSettlementAmount; + + /** + * 业主单位 客户 + */ + private Long ownerUnit; + + /** + * 监理单位 客户 + */ + private Long supervisionUnit; + + /** + * 施工单位 客户 + */ + private Long constructionUnit; + + /** + * 审核单位 客户 + */ + private Long auditUnit; + + /** + * 文件ID + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 审核状态 + */ + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/bo/SettlementOfSubcontractingCompletionBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/bo/SettlementOfSubcontractingCompletionBo.java new file mode 100644 index 00000000..d4e13f9c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/bo/SettlementOfSubcontractingCompletionBo.java @@ -0,0 +1,179 @@ +package org.dromara.xzd.settlement.fenbaohetongjungong.domain.bo; + +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.SettlementOfSubcontractingCompletion; +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.time.LocalDate; + +/** + * 分包合同竣工结算业务对象 settlement_of_subcontracting_completion + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SettlementOfSubcontractingCompletion.class, reverseConvertGenerate = false) +public class SettlementOfSubcontractingCompletionBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 单据编号 + */ + @NotBlank(message = "单据编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String documentCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String title; + + /** + * 单据日期 + */ + @NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private LocalDate documentDate; + + /** + * 合同编号 + */ + private Long contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 审定总价 + */ + private Long approvedTotalPrice; + + /** + * 审定日期 + */ + private LocalDate approvedDate; + + /** + * 工程项目 + */ + private String engineeringProject; + + /** + * 经营模式 + */ + private String businessModel; + + /** + * 甲方单位 + */ + private Long partyAUnit; + + /** + * 乙方单位 + */ + private Long partyBUnit; + + /** + * 累计已结金额 + */ + private BigDecimal cumulativeSettledAmount; + + /** + * 累计已付金额 + */ + private BigDecimal cumulativePaidAmount; + + /** + * 已付比例 + */ + private BigDecimal paidRatio; + + /** + * 支付条款 + */ + private Long paymentTerms; + + /** + * 本期应付金额 + */ + private BigDecimal currentPayableAmount; + + /** + * 应付日期 + */ + private LocalDate payableDate; + + /** + * 竣工日期 + */ + private LocalDate completionDate; + + /** + * 警示 + */ + private String warning; + + /** + * 备注 + */ + private String remarks; + + /** + * 本期决算总额 + */ + private BigDecimal currentFinalSettlementAmount; + + /** + * 业主单位 客户 + */ + private Long ownerUnit; + + /** + * 监理单位 客户 + */ + private Long supervisionUnit; + + /** + * 施工单位 客户 + */ + private Long constructionUnit; + + /** + * 审核单位 客户 + */ + private Long auditUnit; + + /** + * 文件ID + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 审核状态 + */ + private String auditStatus; + + private LocalDate startTime; + + private LocalDate endTime; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/vo/SettlementOfSubcontractingCompletionVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/vo/SettlementOfSubcontractingCompletionVo.java new file mode 100644 index 00000000..834f9460 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/domain/vo/SettlementOfSubcontractingCompletionVo.java @@ -0,0 +1,254 @@ +package org.dromara.xzd.settlement.fenbaohetongjungong.domain.vo; + +import java.math.BigDecimal; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.SettlementOfSubcontractingCompletion; +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.time.LocalDate; +import java.util.Date; + + + +/** + * 分包合同竣工结算视图对象 settlement_of_subcontracting_completion + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SettlementOfSubcontractingCompletion.class) +public class SettlementOfSubcontractingCompletionVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 单据编号 + */ + @ExcelProperty(value = "单据编号") + private String documentCode; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate documentDate; + + /** + * 合同编号 + */ + @ExcelProperty(value = "合同编号") + private Long contractCode; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 审定总价 + */ + @ExcelProperty(value = "审定总价") + private Long approvedTotalPrice; + + /** + * 审定日期 + */ + @ExcelProperty(value = "审定日期") + private LocalDate approvedDate; + + /** + * 工程项目 + */ + @ExcelProperty(value = "工程项目") + private String engineeringProject; + + /** + * 经营模式 + */ + @ExcelProperty(value = "经营模式") + private String businessModel; + + /** + * 甲方单位 + */ + @ExcelProperty(value = "甲方单位") + private Long partyAUnit; + + + /** + * 甲方单位名称 + */ + @ExcelProperty(value = "甲方单位名称") + private String partyAUnitName; + + + /** + * 乙方单位 + */ + @ExcelProperty(value = "乙方单位") + private Long partyBUnit; + + /** + * 乙方单位名称 + */ + @ExcelProperty(value = "乙方单位名称") + private String partyBUnitName; + + /** + * 累计已结金额 + */ + @ExcelProperty(value = "累计已结金额") + private BigDecimal cumulativeSettledAmount; + + /** + * 累计已付金额 + */ + @ExcelProperty(value = "累计已付金额") + private BigDecimal cumulativePaidAmount; + + /** + * 已付比例 + */ + @ExcelProperty(value = "已付比例") + private BigDecimal paidRatio; + + /** + * 支付条款 + */ + @ExcelProperty(value = "支付条款") + private Long paymentTerms; + + + /** + * 支付条款回显信息 + */ + @ExcelProperty(value = "支付条款回显信息") + private String paymentTermsName; + + /** + * 本期应付金额 + */ + @ExcelProperty(value = "本期应付金额") + private BigDecimal currentPayableAmount; + + /** + * 应付日期 + */ + @ExcelProperty(value = "应付日期") + private LocalDate payableDate; + + /** + * 竣工日期 + */ + @ExcelProperty(value = "竣工日期") + private LocalDate completionDate; + + /** + * 警示 + */ + @ExcelProperty(value = "警示") + private String warning; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remarks; + + /** + * 本期决算总额 + */ + @ExcelProperty(value = "本期决算总额") + private BigDecimal currentFinalSettlementAmount; + + /** + * 业主单位 客户 + */ + @ExcelProperty(value = "业主单位 客户") + private Long ownerUnit; + + /** + * 业主单位名称 客户 + */ + @ExcelProperty(value = "业主单位名称 客户") + private String ownerUnitName; + + /** + * 监理单位 客户 + */ + @ExcelProperty(value = "监理单位 客户") + private Long supervisionUnit; + + /** + * 监理单位名称 客户 + */ + @ExcelProperty(value = "监理单位名称 客户") + private String supervisionUnitName; + + /** + * 施工单位 客户 + */ + @ExcelProperty(value = "施工单位 客户") + private Long constructionUnit; + + /** + * 施工单位名称 客户 + */ + @ExcelProperty(value = "施工单位名称 客户") + private String constructionUnitName; + + /** + * 审核单位 客户 + */ + @ExcelProperty(value = "审核单位 客户") + private Long auditUnit; + + /** + * 审核单位名称 客户 + */ + @ExcelProperty(value = "审核单位名称 客户") + private String auditUnitName; + + + /** + * 文件ID + */ + @ExcelProperty(value = "文件ID") + private String fileId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/mapper/SettlementOfSubcontractingCompletionMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/mapper/SettlementOfSubcontractingCompletionMapper.java new file mode 100644 index 00000000..da86e7cd --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/mapper/SettlementOfSubcontractingCompletionMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.settlement.fenbaohetongjungong.mapper; + +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.SettlementOfSubcontractingCompletion; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.vo.SettlementOfSubcontractingCompletionVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 分包合同竣工结算Mapper接口 + * + * @author Lion Li + * @date 2025-10-15 + */ +public interface SettlementOfSubcontractingCompletionMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/service/ISettlementOfSubcontractingCompletionService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/service/ISettlementOfSubcontractingCompletionService.java new file mode 100644 index 00000000..1f06f7d7 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/service/ISettlementOfSubcontractingCompletionService.java @@ -0,0 +1,76 @@ +package org.dromara.xzd.settlement.fenbaohetongjungong.service; + +import jakarta.validation.constraints.NotEmpty; +import org.dromara.xzd.domain.vo.XzdSettlementRulesVo; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.vo.SettlementOfSubcontractingCompletionVo; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.bo.SettlementOfSubcontractingCompletionBo; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.SettlementOfSubcontractingCompletion; +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-10-15 + */ +public interface ISettlementOfSubcontractingCompletionService extends IService{ + + /** + * 查询分包合同竣工结算 + * + * @param id 主键 + * @return 分包合同竣工结算 + */ + SettlementOfSubcontractingCompletionVo queryById(Long id); + + /** + * 分页查询分包合同竣工结算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同竣工结算分页列表 + */ + TableDataInfo queryPageList(SettlementOfSubcontractingCompletionBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的分包合同竣工结算列表 + * + * @param bo 查询条件 + * @return 分包合同竣工结算列表 + */ + List queryList(SettlementOfSubcontractingCompletionBo bo); + + /** + * 新增分包合同竣工结算 + * + * @param bo 分包合同竣工结算 + * @return 是否新增成功 + */ + Boolean insertByBo(SettlementOfSubcontractingCompletionBo bo); + + /** + * 修改分包合同竣工结算 + * + * @param bo 分包合同竣工结算 + * @return 是否修改成功 + */ + Boolean updateByBo(SettlementOfSubcontractingCompletionBo bo); + + /** + * 校验并批量删除分包合同竣工结算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + + List contractPaymentTerm(@NotEmpty(message = "主键不能为空") Long id, boolean b); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/service/impl/SettlementOfSubcontractingCompletionServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/service/impl/SettlementOfSubcontractingCompletionServiceImpl.java new file mode 100644 index 00000000..13388e97 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongjungong/service/impl/SettlementOfSubcontractingCompletionServiceImpl.java @@ -0,0 +1,307 @@ +package org.dromara.xzd.settlement.fenbaohetongjungong.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.domain.R; +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.system.service.impl.SysOssServiceImpl; +import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdSubcontractVo; +import org.dromara.xzd.domain.*; +import org.dromara.xzd.domain.dto.QuerCorrespondentDto; +import org.dromara.xzd.domain.vo.XzdSettlementRulesVo; +import org.dromara.xzd.service.*; +import org.dromara.xzd.service.impl.XzdProjectServiceImpl; +import org.dromara.xzd.service.impl.XzdSupplierInfoServiceImpl; +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.SettlementOfSubcontractingContract; +import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.vo.SettlementOfSubcontractingContractVo; +import org.dromara.xzd.utilS.AreaUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.bo.SettlementOfSubcontractingCompletionBo; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.vo.SettlementOfSubcontractingCompletionVo; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.SettlementOfSubcontractingCompletion; +import org.dromara.xzd.settlement.fenbaohetongjungong.mapper.SettlementOfSubcontractingCompletionMapper; +import org.dromara.xzd.settlement.fenbaohetongjungong.service.ISettlementOfSubcontractingCompletionService; + +import java.time.LocalDate; +import java.util.*; + +/** + * 分包合同竣工结算Service业务层处理 + * + * @author Lion Li + * @date 2025-10-15 + */ +@RequiredArgsConstructor +@Service +public class SettlementOfSubcontractingCompletionServiceImpl extends ServiceImpl implements ISettlementOfSubcontractingCompletionService { + + private final SettlementOfSubcontractingCompletionMapper baseMapper; + + private final AreaUtil areaUtil; + + private final IXzdSettlementRulesService xzdSettlementRulesService; + + + @Autowired + private IXzdCorrespondentList iXzdCorrespondentList; + + + @Autowired + private XzdProjectServiceImpl xzdProjectService; + + @Autowired + private SysOssServiceImpl sysOssService; + + @Autowired + private XzdSupplierInfoServiceImpl xzdSupplierInfoService; + + private final IXzdContractAdvanceInfoService iXzdContractAdvanceInfoService; + + private final IXzdDeductionItemsService iXzdDeductionItemsService; + + private final IXzdContractClauseService iXzdContractClauseService; + + /** + * 查询分包合同竣工结算 + * + * @param id 主键 + * @return 分包合同竣工结算 + */ + @Override + public SettlementOfSubcontractingCompletionVo queryById(Long id){ + SettlementOfSubcontractingCompletionVo vo = baseMapper.selectVoById(id); + if (vo == null) { + throw new RuntimeException("数据不存在"); + } + List res = List.of(vo); + setValue(res); + + return res.getFirst(); + } + + /** + * 分页查询分包合同竣工结算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同竣工结算分页列表 + */ + @Override + public TableDataInfo queryPageList(SettlementOfSubcontractingCompletionBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + setValue(result.getRecords()); + return TableDataInfo.build(result); + } + + private void setValue(List records) { + for (SettlementOfSubcontractingCompletionVo item : records) { +// //项目名称 +// if (item.getProject() != null){ +// String projectName = xzdProjectService.queryNameById(item.getProject()); +// if (projectName != null){ +// item.setProjectName(projectName); +// } +// } + //甲方单位(客户信息列表) + R byid = iXzdCorrespondentList.getCustomerByid(item.getPartyAUnit()); + if (byid!=null){ + if (byid.getData().getXzdCustomerinformation() != null){ + item.setPartyAUnitName(byid.getData().getXzdCustomerinformation().getUnitName()); + } + } + //乙方单位(供应商信息列表) + if (item.getPartyBUnit() != null){ + String unitName = xzdSupplierInfoService.queryNameById(item.getPartyBUnit()); + if (unitName != null){ + item.setPartyBUnitName(unitName); + } + } +// 支付条款 + if (item.getPaymentTerms() != null){ + XzdSettlementRules byId = xzdSettlementRulesService.getById(item.getPaymentTerms()); + if (byId != null){ + item.setPaymentTermsName(byId.getType()); + } + } + + // 业主单位(客户信息列表) + R temp = iXzdCorrespondentList.getCustomerByid(item.getOwnerUnit()); + if (temp!=null){ + if (temp.getData().getXzdCustomerinformation() != null){ + item.setOwnerUnitName(temp.getData().getXzdCustomerinformation().getUnitName()); + } + } + + // 监理单位(客户信息列表) + R supervisionUnit = iXzdCorrespondentList.getCustomerByid(item.getSupervisionUnit()); + if (supervisionUnit!=null){ + if (supervisionUnit.getData().getXzdCustomerinformation() != null){ + item.setSupervisionUnitName(supervisionUnit.getData().getXzdCustomerinformation().getUnitName()); + } + } + + // 施工单位(客户信息列表) + R constructionUnit = iXzdCorrespondentList.getCustomerByid(item.getConstructionUnit()); + if (constructionUnit!=null){ + if (constructionUnit.getData().getXzdCustomerinformation() != null){ + item.setConstructionUnitName(constructionUnit.getData().getXzdCustomerinformation().getUnitName()); + } + } + + // 施工单位(客户信息列表) + R auditUnit = iXzdCorrespondentList.getCustomerByid(item.getAuditUnit()); + if (auditUnit!=null){ + if (auditUnit.getData().getXzdCustomerinformation() != null){ + item.setAuditUnitName(auditUnit.getData().getXzdCustomerinformation().getUnitName()); + } + } + } + } + + /** + * 查询符合条件的分包合同竣工结算列表 + * + * @param bo 查询条件 + * @return 分包合同竣工结算列表 + */ + @Override + public List queryList(SettlementOfSubcontractingCompletionBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SettlementOfSubcontractingCompletionBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(SettlementOfSubcontractingCompletion::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), SettlementOfSubcontractingCompletion::getDocumentCode, bo.getDocumentCode()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), SettlementOfSubcontractingCompletion::getTitle, bo.getTitle()); + lqw.eq(bo.getDocumentDate() != null, SettlementOfSubcontractingCompletion::getDocumentDate, bo.getDocumentDate()); + lqw.ge(bo.getStartTime() != null, SettlementOfSubcontractingCompletion::getDocumentDate, bo.getStartTime()); + lqw.le(bo.getEndTime() != null, SettlementOfSubcontractingCompletion::getDocumentDate, bo.getEndTime()); + + + + lqw.eq(bo.getContractCode() != null, SettlementOfSubcontractingCompletion::getContractCode, bo.getContractCode()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), SettlementOfSubcontractingCompletion::getContractName, bo.getContractName()); + lqw.eq(bo.getApprovedTotalPrice() != null, SettlementOfSubcontractingCompletion::getApprovedTotalPrice, bo.getApprovedTotalPrice()); + lqw.eq(bo.getApprovedDate() != null, SettlementOfSubcontractingCompletion::getApprovedDate, bo.getApprovedDate()); + lqw.eq(StringUtils.isNotBlank(bo.getEngineeringProject()), SettlementOfSubcontractingCompletion::getEngineeringProject, bo.getEngineeringProject()); + lqw.eq(StringUtils.isNotBlank(bo.getBusinessModel()), SettlementOfSubcontractingCompletion::getBusinessModel, bo.getBusinessModel()); + lqw.eq(bo.getPartyAUnit() != null, SettlementOfSubcontractingCompletion::getPartyAUnit, bo.getPartyAUnit()); + lqw.eq(bo.getPartyBUnit() != null, SettlementOfSubcontractingCompletion::getPartyBUnit, bo.getPartyBUnit()); + lqw.eq(bo.getCumulativeSettledAmount() != null, SettlementOfSubcontractingCompletion::getCumulativeSettledAmount, bo.getCumulativeSettledAmount()); + lqw.eq(bo.getCumulativePaidAmount() != null, SettlementOfSubcontractingCompletion::getCumulativePaidAmount, bo.getCumulativePaidAmount()); + lqw.eq(bo.getPaidRatio() != null, SettlementOfSubcontractingCompletion::getPaidRatio, bo.getPaidRatio()); + lqw.eq(bo.getPaymentTerms() != null, SettlementOfSubcontractingCompletion::getPaymentTerms, bo.getPaymentTerms()); + lqw.eq(bo.getCurrentPayableAmount() != null, SettlementOfSubcontractingCompletion::getCurrentPayableAmount, bo.getCurrentPayableAmount()); + lqw.eq(bo.getPayableDate() != null, SettlementOfSubcontractingCompletion::getPayableDate, bo.getPayableDate()); + lqw.eq(bo.getCompletionDate() != null, SettlementOfSubcontractingCompletion::getCompletionDate, bo.getCompletionDate()); + lqw.eq(StringUtils.isNotBlank(bo.getWarning()), SettlementOfSubcontractingCompletion::getWarning, bo.getWarning()); + lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), SettlementOfSubcontractingCompletion::getRemarks, bo.getRemarks()); + lqw.eq(bo.getCurrentFinalSettlementAmount() != null, SettlementOfSubcontractingCompletion::getCurrentFinalSettlementAmount, bo.getCurrentFinalSettlementAmount()); + lqw.eq(bo.getOwnerUnit() != null, SettlementOfSubcontractingCompletion::getOwnerUnit, bo.getOwnerUnit()); + lqw.eq(bo.getSupervisionUnit() != null, SettlementOfSubcontractingCompletion::getSupervisionUnit, bo.getSupervisionUnit()); + lqw.eq(bo.getConstructionUnit() != null, SettlementOfSubcontractingCompletion::getConstructionUnit, bo.getConstructionUnit()); + lqw.eq(bo.getAuditUnit() != null, SettlementOfSubcontractingCompletion::getAuditUnit, bo.getAuditUnit()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), SettlementOfSubcontractingCompletion::getFileId, bo.getFileId()); + lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), SettlementOfSubcontractingCompletion::getAuditStatus, bo.getAuditStatus()); + return lqw; + } + + /** + * 新增分包合同竣工结算 + * + * @param bo 分包合同竣工结算 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SettlementOfSubcontractingCompletionBo bo) { + SettlementOfSubcontractingCompletion add = MapstructUtils.convert(bo, SettlementOfSubcontractingCompletion.class); + validEntityBeforeSave(add); + Long l = baseMapper.selectCount(new LambdaQueryWrapper().gt(SettlementOfSubcontractingCompletion::getCreateTime, LocalDate.now())); + String s = areaUtil.generateDateBasedNumber(); + add.setDocumentCode(s+"-"+(l+1)); + + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改分包合同竣工结算 + * + * @param bo 分包合同竣工结算 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SettlementOfSubcontractingCompletionBo bo) { + SettlementOfSubcontractingCompletion update = MapstructUtils.convert(bo, SettlementOfSubcontractingCompletion.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SettlementOfSubcontractingCompletion entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除分包合同竣工结算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + + } + + for (Long id : ids) { + SettlementOfSubcontractingCompletionVo vo = baseMapper.selectVoById(id); + if (vo != null){ + //删除附件 + if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){ + List deleteIds = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + } + } + } + return baseMapper.deleteByIds(ids) > 0; + } + + + + + /** + * 查询符合条件的分包合同竣工结算列表 + * + * @return 分包合同竣工结算列表 + */ + @Override + public List contractPaymentTerm(Long id, boolean b) { + Map hashMap = new HashMap<>(); + hashMap.put("contract_details_id", id); + List xzdSettlementRules = xzdSettlementRulesService.getBaseMapper().selectByMap(hashMap); + + List convert = MapstructUtils.convert(xzdSettlementRules, XzdSettlementRulesVo.class); + + return convert; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/controller/SettlementOfSubcontractingAdjustmentController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/controller/SettlementOfSubcontractingAdjustmentController.java new file mode 100644 index 00000000..305b8b1a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/controller/SettlementOfSubcontractingAdjustmentController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.settlement.fenbaohetongtiaozheng.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.settlement.fenbaohetongtiaozheng.domain.vo.SettlementOfSubcontractingAdjustmentVo; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.bo.SettlementOfSubcontractingAdjustmentBo; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.service.ISettlementOfSubcontractingAdjustmentService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 分包合同竣工结算调整 + * + * @author Lion Li + * @date 2025-10-15 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/fenbaohetongtiaozheng/ofSubcontractingAdjustment") +public class SettlementOfSubcontractingAdjustmentController extends BaseController { + + private final ISettlementOfSubcontractingAdjustmentService settlementOfSubcontractingAdjustmentService; + + /** + * 查询分包合同竣工结算调整列表 + */ + @SaCheckPermission("fenbaohetongtiaozheng:ofSubcontractingAdjustment:list") + @GetMapping("/list") + public TableDataInfo list(SettlementOfSubcontractingAdjustmentBo bo, PageQuery pageQuery) { + return settlementOfSubcontractingAdjustmentService.queryPageList(bo, pageQuery); + } + + /** + * 导出分包合同竣工结算调整列表 + */ + @SaCheckPermission("fenbaohetongtiaozheng:ofSubcontractingAdjustment:export") + @Log(title = "分包合同竣工结算调整", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SettlementOfSubcontractingAdjustmentBo bo, HttpServletResponse response) { + List list = settlementOfSubcontractingAdjustmentService.queryList(bo); + ExcelUtil.exportExcel(list, "分包合同竣工结算调整", SettlementOfSubcontractingAdjustmentVo.class, response); + } + + /** + * 获取分包合同竣工结算调整详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("fenbaohetongtiaozheng:ofSubcontractingAdjustment:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(settlementOfSubcontractingAdjustmentService.queryById(id)); + } + + /** + * 新增分包合同竣工结算调整 + */ + @SaCheckPermission("fenbaohetongtiaozheng:ofSubcontractingAdjustment:add") + @Log(title = "分包合同竣工结算调整", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SettlementOfSubcontractingAdjustmentBo bo) { + return toAjax(settlementOfSubcontractingAdjustmentService.insertByBo(bo)); + } + + /** + * 修改分包合同竣工结算调整 + */ + @SaCheckPermission("fenbaohetongtiaozheng:ofSubcontractingAdjustment:edit") + @Log(title = "分包合同竣工结算调整", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SettlementOfSubcontractingAdjustmentBo bo) { + return toAjax(settlementOfSubcontractingAdjustmentService.updateByBo(bo)); + } + + /** + * 删除分包合同竣工结算调整 + * + * @param ids 主键串 + */ + @SaCheckPermission("fenbaohetongtiaozheng:ofSubcontractingAdjustment:remove") + @Log(title = "分包合同竣工结算调整", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(settlementOfSubcontractingAdjustmentService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/SettlementOfSubcontractingAdjustment.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/SettlementOfSubcontractingAdjustment.java new file mode 100644 index 00000000..d1d29195 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/SettlementOfSubcontractingAdjustment.java @@ -0,0 +1,98 @@ +package org.dromara.xzd.settlement.fenbaohetongtiaozheng.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; + +/** + * 分包合同竣工结算调整对象 settlement_of_subcontracting_adjustment + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("settlement_of_subcontracting_adjustment") +public class SettlementOfSubcontractingAdjustment extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 单据编号 + */ + private String documentNo; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 决算单编号 + */ + private Long finalAccountNo; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同编号) + */ + private String contractNo; + + /** + * 调整后决算金额 + */ + private BigDecimal adjustedFinalAmount; + + /** + * 工程项目名称 + */ + private String projectName; + + /** + * 调整说明 + */ + private String adjustmentDescription; + + /** + * 备注信息 + */ + private String remarks; + + /** + * 文件ID + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 审核状态 + */ + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/bo/SettlementOfSubcontractingAdjustmentBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/bo/SettlementOfSubcontractingAdjustmentBo.java new file mode 100644 index 00000000..bc1da53c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/bo/SettlementOfSubcontractingAdjustmentBo.java @@ -0,0 +1,96 @@ +package org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.bo; + +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.SettlementOfSubcontractingAdjustment; +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.time.LocalDate; + +/** + * 分包合同竣工结算调整业务对象 settlement_of_subcontracting_adjustment + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SettlementOfSubcontractingAdjustment.class, reverseConvertGenerate = false) +public class SettlementOfSubcontractingAdjustmentBo extends BaseEntity { + + /** + * 主键ID + */ + private Long id; + + /** + * 单据编号 + */ + private String documentNo; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 决算单编号 + */ + private Long finalAccountNo; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同编号) + */ + private String contractNo; + + /** + * 调整后决算金额 + */ + private BigDecimal adjustedFinalAmount; + + /** + * 工程项目名称 + */ + private String projectName; + + /** + * 调整说明 + */ + private String adjustmentDescription; + + /** + * 备注信息 + */ + private String remarks; + + /** + * 文件ID + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 审核状态 + */ + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/vo/SettlementOfSubcontractingAdjustmentVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/vo/SettlementOfSubcontractingAdjustmentVo.java new file mode 100644 index 00000000..9a5a3404 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/domain/vo/SettlementOfSubcontractingAdjustmentVo.java @@ -0,0 +1,118 @@ +package org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.vo; + +import java.math.BigDecimal; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.SettlementOfSubcontractingAdjustment; +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.time.LocalDate; +import java.util.Date; + + + +/** + * 分包合同竣工结算调整视图对象 settlement_of_subcontracting_adjustment + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SettlementOfSubcontractingAdjustment.class) +public class SettlementOfSubcontractingAdjustmentVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 单据编号 + */ + @ExcelProperty(value = "单据编号") + private String documentNo; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate documentDate; + + /** + * 决算单编号 + */ + @ExcelProperty(value = "决算单编号") + private Long finalAccountNo; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 合同编号) + */ + @ExcelProperty(value = "合同编号)") + private String contractNo; + + /** + * 调整后决算金额 + */ + @ExcelProperty(value = "调整后决算金额") + private BigDecimal adjustedFinalAmount; + + /** + * 工程项目名称 + */ + @ExcelProperty(value = "工程项目名称") + private String projectName; + + /** + * 调整说明 + */ + @ExcelProperty(value = "调整说明") + private String adjustmentDescription; + + /** + * 备注信息 + */ + @ExcelProperty(value = "备注信息") + private String remarks; + + /** + * 文件ID + */ + @ExcelProperty(value = "文件ID") + private String fileId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/mapper/SettlementOfSubcontractingAdjustmentMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/mapper/SettlementOfSubcontractingAdjustmentMapper.java new file mode 100644 index 00000000..028afd28 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/mapper/SettlementOfSubcontractingAdjustmentMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.settlement.fenbaohetongtiaozheng.mapper; + +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.SettlementOfSubcontractingAdjustment; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.vo.SettlementOfSubcontractingAdjustmentVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 分包合同竣工结算调整Mapper接口 + * + * @author Lion Li + * @date 2025-10-15 + */ +public interface SettlementOfSubcontractingAdjustmentMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/service/ISettlementOfSubcontractingAdjustmentService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/service/ISettlementOfSubcontractingAdjustmentService.java new file mode 100644 index 00000000..b634c755 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/service/ISettlementOfSubcontractingAdjustmentService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.settlement.fenbaohetongtiaozheng.service; + +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.vo.SettlementOfSubcontractingAdjustmentVo; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.bo.SettlementOfSubcontractingAdjustmentBo; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.SettlementOfSubcontractingAdjustment; +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-10-15 + */ +public interface ISettlementOfSubcontractingAdjustmentService extends IService{ + + /** + * 查询分包合同竣工结算调整 + * + * @param id 主键 + * @return 分包合同竣工结算调整 + */ + SettlementOfSubcontractingAdjustmentVo queryById(Long id); + + /** + * 分页查询分包合同竣工结算调整列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同竣工结算调整分页列表 + */ + TableDataInfo queryPageList(SettlementOfSubcontractingAdjustmentBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的分包合同竣工结算调整列表 + * + * @param bo 查询条件 + * @return 分包合同竣工结算调整列表 + */ + List queryList(SettlementOfSubcontractingAdjustmentBo bo); + + /** + * 新增分包合同竣工结算调整 + * + * @param bo 分包合同竣工结算调整 + * @return 是否新增成功 + */ + Boolean insertByBo(SettlementOfSubcontractingAdjustmentBo bo); + + /** + * 修改分包合同竣工结算调整 + * + * @param bo 分包合同竣工结算调整 + * @return 是否修改成功 + */ + Boolean updateByBo(SettlementOfSubcontractingAdjustmentBo bo); + + /** + * 校验并批量删除分包合同竣工结算调整信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/service/impl/SettlementOfSubcontractingAdjustmentServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/service/impl/SettlementOfSubcontractingAdjustmentServiceImpl.java new file mode 100644 index 00000000..92eece3e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/settlement/fenbaohetongtiaozheng/service/impl/SettlementOfSubcontractingAdjustmentServiceImpl.java @@ -0,0 +1,170 @@ +package org.dromara.xzd.settlement.fenbaohetongtiaozheng.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.dromara.system.service.impl.SysOssServiceImpl; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.SettlementOfSubcontractingCompletion; +import org.dromara.xzd.settlement.fenbaohetongjungong.domain.vo.SettlementOfSubcontractingCompletionVo; +import org.dromara.xzd.utilS.AreaUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.bo.SettlementOfSubcontractingAdjustmentBo; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.vo.SettlementOfSubcontractingAdjustmentVo; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.SettlementOfSubcontractingAdjustment; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.mapper.SettlementOfSubcontractingAdjustmentMapper; +import org.dromara.xzd.settlement.fenbaohetongtiaozheng.service.ISettlementOfSubcontractingAdjustmentService; + +import java.time.LocalDate; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 分包合同竣工结算调整Service业务层处理 + * + * @author Lion Li + * @date 2025-10-15 + */ +@RequiredArgsConstructor +@Service +public class SettlementOfSubcontractingAdjustmentServiceImpl extends ServiceImpl implements ISettlementOfSubcontractingAdjustmentService { + + private final SettlementOfSubcontractingAdjustmentMapper baseMapper; + + private final AreaUtil areaUtil; + + @Autowired + private SysOssServiceImpl sysOssService; + + /** + * 查询分包合同竣工结算调整 + * + * @param id 主键 + * @return 分包合同竣工结算调整 + */ + @Override + public SettlementOfSubcontractingAdjustmentVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询分包合同竣工结算调整列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同竣工结算调整分页列表 + */ + @Override + public TableDataInfo queryPageList(SettlementOfSubcontractingAdjustmentBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的分包合同竣工结算调整列表 + * + * @param bo 查询条件 + * @return 分包合同竣工结算调整列表 + */ + @Override + public List queryList(SettlementOfSubcontractingAdjustmentBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SettlementOfSubcontractingAdjustmentBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(SettlementOfSubcontractingAdjustment::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentNo()), SettlementOfSubcontractingAdjustment::getDocumentNo, bo.getDocumentNo()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), SettlementOfSubcontractingAdjustment::getTitle, bo.getTitle()); + lqw.eq(bo.getDocumentDate() != null, SettlementOfSubcontractingAdjustment::getDocumentDate, bo.getDocumentDate()); + lqw.eq(bo.getFinalAccountNo() != null, SettlementOfSubcontractingAdjustment::getFinalAccountNo, bo.getFinalAccountNo()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), SettlementOfSubcontractingAdjustment::getContractName, bo.getContractName()); + lqw.eq(StringUtils.isNotBlank(bo.getContractNo()), SettlementOfSubcontractingAdjustment::getContractNo, bo.getContractNo()); + lqw.eq(bo.getAdjustedFinalAmount() != null, SettlementOfSubcontractingAdjustment::getAdjustedFinalAmount, bo.getAdjustedFinalAmount()); + lqw.like(StringUtils.isNotBlank(bo.getProjectName()), SettlementOfSubcontractingAdjustment::getProjectName, bo.getProjectName()); + lqw.eq(StringUtils.isNotBlank(bo.getAdjustmentDescription()), SettlementOfSubcontractingAdjustment::getAdjustmentDescription, bo.getAdjustmentDescription()); + lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), SettlementOfSubcontractingAdjustment::getRemarks, bo.getRemarks()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), SettlementOfSubcontractingAdjustment::getFileId, bo.getFileId()); + lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), SettlementOfSubcontractingAdjustment::getAuditStatus, bo.getAuditStatus()); + return lqw; + } + + /** + * 新增分包合同竣工结算调整 + * + * @param bo 分包合同竣工结算调整 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SettlementOfSubcontractingAdjustmentBo bo) { + SettlementOfSubcontractingAdjustment add = MapstructUtils.convert(bo, SettlementOfSubcontractingAdjustment.class); + validEntityBeforeSave(add); + Long l = baseMapper.selectCount(new LambdaQueryWrapper().gt(SettlementOfSubcontractingAdjustment::getCreateTime, LocalDate.now())); + String s = areaUtil.generateDateBasedNumber(); + add.setDocumentNo(s+"-"+(l+1)); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改分包合同竣工结算调整 + * + * @param bo 分包合同竣工结算调整 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SettlementOfSubcontractingAdjustmentBo bo) { + SettlementOfSubcontractingAdjustment update = MapstructUtils.convert(bo, SettlementOfSubcontractingAdjustment.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SettlementOfSubcontractingAdjustment entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除分包合同竣工结算调整信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + + for (Long id : ids) { + SettlementOfSubcontractingAdjustmentVo vo = baseMapper.selectVoById(id); + if (vo != null){ + //删除附件 + if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){ + List deleteIds = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + } + } + } + return baseMapper.deleteByIds(ids) > 0; + } +}