diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdJsqdTz.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdJsqdTz.java index ba3e2f93..e2afb0b2 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdJsqdTz.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdJsqdTz.java @@ -143,6 +143,12 @@ public class XzdJsqdTz extends BaseEntity { */ private String sjly; + + /** + * 合同累计签订成本预算金额 + */ + private BigDecimal contractAccumulativeTotalMoney; + /** * 送审造价 */ @@ -159,4 +165,29 @@ public class XzdJsqdTz extends BaseEntity { private BigDecimal jssj; + + + /** + * 价税合计 + */ + private BigDecimal totalAmountIncludingTax; + + /** + * 累计结算 + */ + private BigDecimal cumulativeSettlement; + /** + * 决算与结算差额 + */ + private BigDecimal finalAccountingSettlementDiff; + + /** + * 审定不含税造价 + */ + private BigDecimal approvedCostExcludingTax; + + + + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdJsqdTzBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdJsqdTzBo.java index a647ff76..460456ba 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdJsqdTzBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdJsqdTzBo.java @@ -144,6 +144,11 @@ public class XzdJsqdTzBo extends BaseEntity { */ private BigDecimal sszj; + /** + * 合同累计签订成本预算金额 + */ + private BigDecimal contractAccumulativeTotalMoney; + /** * 审定造价 */ @@ -154,5 +159,25 @@ public class XzdJsqdTzBo extends BaseEntity { */ private BigDecimal jssj; + /** + * 价税合计 + */ + private BigDecimal totalAmountIncludingTax; + + /** + * 累计结算 + */ + private BigDecimal cumulativeSettlement; + /** + * 决算与结算差额 + */ + private BigDecimal finalAccountingSettlementDiff; + + /** + * 审定不含税造价 + */ + private BigDecimal approvedCostExcludingTax; + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdJsqdTzVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdJsqdTzVo.java index f7753eba..1ef73138 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdJsqdTzVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdJsqdTzVo.java @@ -169,6 +169,11 @@ public class XzdJsqdTzVo implements Serializable { @ExcelProperty(value = "数据来源") private String sjly; + /** + * 合同累计签订成本预算金额 + */ + private BigDecimal contractAccumulativeTotalMoney; + /** * 送审造价 */ @@ -188,4 +193,25 @@ public class XzdJsqdTzVo implements Serializable { private BigDecimal jssj; + /** + * 价税合计 + */ + private BigDecimal totalAmountIncludingTax; + + /** + * 累计结算 + */ + private BigDecimal cumulativeSettlement; + /** + * 决算与结算差额 + */ + private BigDecimal finalAccountingSettlementDiff; + + /** + * 审定不含税造价 + */ + private BigDecimal approvedCostExcludingTax; + + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/enums/XzdClassEnum.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/enums/XzdClassEnum.java index 49351d4b..d6c65630 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/enums/XzdClassEnum.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/enums/XzdClassEnum.java @@ -14,6 +14,8 @@ public enum XzdClassEnum { XZD_JS_CG_JUNGON_EDIT("xzd_js_cg_jungon_edit"), //采购合同竣工结算 JS_CG_JINDU("xzd_js_cg_jindu"), //采购合同进度结算 FENBAOHETONG_INFORMATION("xzd_subcontract"),//分包合同 + SUBCONTRACTING_COMPLETION("settlement_of_subcontracting_completion"),//分包合同竣工结算对象 + SETTLEMENT_OF_SUBCONTRACTING_ADJUSTMENT("xzd_settlement_of_subcontracting_adjustment"),//分包合同竣工结算调整 FENBAOHETONGBINGGENG_INFORMATION("xzd_subcontract_change"),//分包合同变更 CAIGOUHETONG_INFORMATION("xzd_purchase_contract_alteration"), //采购变更合同 FENBAOHETONG_JINDU("xzd_settlement_of_subcontracting_contract"),//分包合同进度结算 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/XzdXhqd.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/XzdXhqd.java new file mode 100644 index 00000000..a2ef8058 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/XzdXhqd.java @@ -0,0 +1,93 @@ +package org.dromara.xzd.fapiaotaizhang.zengzhishui.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; + +/** + * 增值税发票-销货清单对象 xzd_xhqd + * + * @author Lion Li + * @date 2025-10-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_xhqd") +public class XzdXhqd extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + + /** + * 主表ID + */ + private Long primaryMeterId; + + /** + * 物料编码 + */ + private String materialCode; + + /** + * 名称 + */ + private String name; + + /** + * 规格 + */ + private String spec; + + /** + * 单位 + */ + private String unit; + + /** + * 数量 + */ + private BigDecimal quantity; + + /** + * 单价 + */ + private BigDecimal unitPrice; + + /** + * 金额 + */ + private BigDecimal amount; + + /** + * 税率 + */ + private BigDecimal taxRate; + + /** + * 税额 + */ + private BigDecimal taxAmount; + + /** + * 备注 + */ + private String remark; + + /** + * 文件ID + */ + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/bo/AppreciationInvoiceBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/bo/AppreciationInvoiceBo.java index c900ba7e..d482450e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/bo/AppreciationInvoiceBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/bo/AppreciationInvoiceBo.java @@ -11,6 +11,8 @@ import jakarta.validation.constraints.*; import java.math.BigDecimal; import java.time.LocalDate; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; /** @@ -206,4 +208,10 @@ public class AppreciationInvoiceBo extends BaseEntity { private String auditStatus; + /** + * 销货清单 + */ + private List xhqd; + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/bo/XzdXhqdBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/bo/XzdXhqdBo.java new file mode 100644 index 00000000..753dc018 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/bo/XzdXhqdBo.java @@ -0,0 +1,91 @@ +package org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.bo; + +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.XzdXhqd; +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; + +/** + * 增值税发票-销货清单业务对象 xzd_xhqd + * + * @author Lion Li + * @date 2025-10-20 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdXhqd.class, reverseConvertGenerate = false) +public class XzdXhqdBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 主表ID + */ + private Long primaryMeterId; + + /** + * 物料编码 + */ + private String materialCode; + + /** + * 名称 + */ + private String name; + + /** + * 规格 + */ + private String spec; + + /** + * 单位 + */ + private String unit; + + /** + * 数量 + */ + private BigDecimal quantity; + + /** + * 单价 + */ + private BigDecimal unitPrice; + + /** + * 金额 + */ + private BigDecimal amount; + + /** + * 税率 + */ + private BigDecimal taxRate; + + /** + * 税额 + */ + private BigDecimal taxAmount; + + /** + * 备注 + */ + private String remark; + + /** + * 文件ID + */ + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/vo/AppreciationInvoiceVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/vo/AppreciationInvoiceVo.java index ecfae9bc..4a854474 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/vo/AppreciationInvoiceVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/vo/AppreciationInvoiceVo.java @@ -13,11 +13,12 @@ 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.fapiaotaizhang.zengzhishui.domain.bo.XzdXhqdBo; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -291,5 +292,10 @@ public class AppreciationInvoiceVo implements Serializable { @ExcelProperty(value = "审核状态") private String auditStatus; + /** + * 销货清单 + */ + private List xhqd; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/vo/XzdXhqdVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/vo/XzdXhqdVo.java new file mode 100644 index 00000000..4e09639a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/domain/vo/XzdXhqdVo.java @@ -0,0 +1,110 @@ +package org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo; + +import java.math.BigDecimal; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.XzdXhqd; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 增值税发票-销货清单视图对象 xzd_xhqd + * + * @author Lion Li + * @date 2025-10-20 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdXhqd.class) +public class XzdXhqdVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 主表ID + */ + private Long primaryMeterId; + + /** + * 物料编码 + */ + @ExcelProperty(value = "物料编码") + private String materialCode; + + /** + * 名称 + */ + @ExcelProperty(value = "名称") + private String name; + + /** + * 规格 + */ + @ExcelProperty(value = "规格") + private String spec; + + /** + * 单位 + */ + @ExcelProperty(value = "单位") + private String unit; + + /** + * 数量 + */ + @ExcelProperty(value = "数量") + private BigDecimal quantity; + + /** + * 单价 + */ + @ExcelProperty(value = "单价") + private BigDecimal unitPrice; + + /** + * 金额 + */ + @ExcelProperty(value = "金额") + private BigDecimal amount; + + /** + * 税率 + */ + @ExcelProperty(value = "税率") + private BigDecimal taxRate; + + /** + * 税额 + */ + @ExcelProperty(value = "税额") + private BigDecimal taxAmount; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 文件ID + */ + @ExcelProperty(value = "文件ID") + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/mapper/XzdXhqdMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/mapper/XzdXhqdMapper.java new file mode 100644 index 00000000..84c1fa46 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/mapper/XzdXhqdMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.fapiaotaizhang.zengzhishui.mapper; + +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.XzdXhqd; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo.XzdXhqdVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 增值税发票-销货清单Mapper接口 + * + * @author Lion Li + * @date 2025-10-20 + */ +public interface XzdXhqdMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/service/IXzdXhqdService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/service/IXzdXhqdService.java new file mode 100644 index 00000000..1c51b2d5 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/service/IXzdXhqdService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.fapiaotaizhang.zengzhishui.service; + +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo.XzdXhqdVo; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.bo.XzdXhqdBo; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.XzdXhqd; +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-20 + */ +public interface IXzdXhqdService extends IService{ + + /** + * 查询增值税发票-销货清单 + * + * @param id 主键 + * @return 增值税发票-销货清单 + */ + XzdXhqdVo queryById(Long id); + + /** + * 分页查询增值税发票-销货清单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 增值税发票-销货清单分页列表 + */ + TableDataInfo queryPageList(XzdXhqdBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的增值税发票-销货清单列表 + * + * @param bo 查询条件 + * @return 增值税发票-销货清单列表 + */ + List queryList(XzdXhqdBo bo); + + /** + * 新增增值税发票-销货清单 + * + * @param bo 增值税发票-销货清单 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdXhqdBo bo); + + /** + * 修改增值税发票-销货清单 + * + * @param bo 增值税发票-销货清单 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdXhqdBo 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/fapiaotaizhang/zengzhishui/service/impl/AppreciationInvoiceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/service/impl/AppreciationInvoiceServiceImpl.java index 989816b5..734fe114 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/service/impl/AppreciationInvoiceServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/service/impl/AppreciationInvoiceServiceImpl.java @@ -16,8 +16,11 @@ import org.dromara.xzd.contractManagement.fenbaohetongzhongzhi.domain.vo.XzdSubc import org.dromara.xzd.domain.*; import org.dromara.xzd.domain.dto.QuerCorrespondentDto; import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.TaxInfo; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.XzdXhqd; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.bo.XzdXhqdBo; import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo.TaxInfoVo; import org.dromara.xzd.fapiaotaizhang.zengzhishui.service.ITaxInfoService; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.service.IXzdXhqdService; import org.dromara.xzd.service.IXzdContractDetailsService; import org.dromara.xzd.service.IXzdCorrespondentList; import org.dromara.xzd.service.IXzdProjectService; @@ -47,6 +50,7 @@ public class AppreciationInvoiceServiceImpl extends ServiceImpl vo = List.of(appreciationInvoiceVo); - saveValue(vo); + saveValue(vo,true); + return vo.getFirst(); } @@ -83,12 +88,20 @@ public class AppreciationInvoiceServiceImpl extends ServiceImpl queryPageList(AppreciationInvoiceBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - saveValue(result.getRecords()); + saveValue(result.getRecords(),false); return TableDataInfo.build(result); } - private void saveValue(List records) { + private void saveValue(List records,Boolean flow) { for (AppreciationInvoiceVo item : records) { + if (flow){ + // xhqd + List xzdXhqds = xzdXhqdService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdXhqd::getPrimaryMeterId, item.getId())); + if (xzdXhqds != null && xzdXhqds.size() > 0) { + item.setXhqd(MapstructUtils.convert(xzdXhqds, XzdXhqdBo.class)); + + } + } //项目名称 if (item.getProject() != null){ String projectName = xzdProjectService.queryNameById(item.getProject()); @@ -183,6 +196,13 @@ public class AppreciationInvoiceServiceImpl extends ServiceImpl 0; + List xhqd = bo.getXhqd(); + if (xhqd != null && xhqd.size() > 0) { + xhqd.forEach(item -> { + item.setPrimaryMeterId(add.getId()); + }); + xzdXhqdService.saveBatch(MapstructUtils.convert(xhqd, XzdXhqd.class)); + } if (flag) { bo.setId(add.getId()); } @@ -199,6 +219,16 @@ public class AppreciationInvoiceServiceImpl extends ServiceImpl().eq(XzdXhqd::getPrimaryMeterId, bo.getId())); + List xhqd = bo.getXhqd(); + if (xhqd != null && xhqd.size() > 0){ + xhqd.forEach(item -> { + item.setPrimaryMeterId(update.getId()); + }); + xzdXhqdService.saveBatch(MapstructUtils.convert(xhqd, XzdXhqd.class)); + } + return baseMapper.updateById(update) > 0; } @@ -232,6 +262,8 @@ public class AppreciationInvoiceServiceImpl extends ServiceImpl().in(XzdXhqd::getPrimaryMeterId, ids)); + return baseMapper.deleteByIds(ids) > 0; } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/service/impl/XzdXhqdServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/service/impl/XzdXhqdServiceImpl.java new file mode 100644 index 00000000..60589854 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/fapiaotaizhang/zengzhishui/service/impl/XzdXhqdServiceImpl.java @@ -0,0 +1,140 @@ +package org.dromara.xzd.fapiaotaizhang.zengzhishui.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.bo.XzdXhqdBo; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo.XzdXhqdVo; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.XzdXhqd; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.mapper.XzdXhqdMapper; +import org.dromara.xzd.fapiaotaizhang.zengzhishui.service.IXzdXhqdService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 增值税发票-销货清单Service业务层处理 + * + * @author Lion Li + * @date 2025-10-20 + */ +@RequiredArgsConstructor +@Service +public class XzdXhqdServiceImpl extends ServiceImpl implements IXzdXhqdService { + + private final XzdXhqdMapper baseMapper; + + /** + * 查询增值税发票-销货清单 + * + * @param id 主键 + * @return 增值税发票-销货清单 + */ + @Override + public XzdXhqdVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询增值税发票-销货清单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 增值税发票-销货清单分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdXhqdBo 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(XzdXhqdBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdXhqdBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdXhqd::getId); + lqw.eq(StringUtils.isNotBlank(bo.getMaterialCode()), XzdXhqd::getMaterialCode, bo.getMaterialCode()); + lqw.like(StringUtils.isNotBlank(bo.getName()), XzdXhqd::getName, bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getSpec()), XzdXhqd::getSpec, bo.getSpec()); + lqw.eq(StringUtils.isNotBlank(bo.getUnit()), XzdXhqd::getUnit, bo.getUnit()); + lqw.eq(bo.getQuantity() != null, XzdXhqd::getQuantity, bo.getQuantity()); + lqw.eq(bo.getUnitPrice() != null, XzdXhqd::getUnitPrice, bo.getUnitPrice()); + lqw.eq(bo.getAmount() != null, XzdXhqd::getAmount, bo.getAmount()); + lqw.eq(bo.getTaxRate() != null, XzdXhqd::getTaxRate, bo.getTaxRate()); + lqw.eq(bo.getTaxAmount() != null, XzdXhqd::getTaxAmount, bo.getTaxAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdXhqd::getFileId, bo.getFileId()); + return lqw; + } + + /** + * 新增增值税发票-销货清单 + * + * @param bo 增值税发票-销货清单 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XzdXhqdBo bo) { + XzdXhqd add = MapstructUtils.convert(bo, XzdXhqd.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改增值税发票-销货清单 + * + * @param bo 增值税发票-销货清单 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdXhqdBo bo) { + XzdXhqd update = MapstructUtils.convert(bo, XzdXhqd.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdXhqd entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除增值税发票-销货清单信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} 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 index 0c4b82df..0e032fe8 100644 --- 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 @@ -1,5 +1,8 @@ package org.dromara.xzd.settlement.fenbaohetongjingdu.domain.bo; +import org.dromara.xzd.settlement.domain.bo.XzdAlterationInventoryBo; +import org.dromara.xzd.settlement.domain.bo.XzdContractInventoryBo; +import org.dromara.xzd.settlement.domain.bo.XzdJsDeductionItemsBo; import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.SettlementOfSubcontractingContract; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -10,6 +13,7 @@ import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.List; /** * 分包合同进度结算业务对象 settlement_of_subcontracting_contract @@ -166,5 +170,18 @@ public class SettlementOfSubcontractingContractBo extends BaseEntity { private LocalDate endDate; +// 奖惩与扣款 + private List jlykk; +// 合同内清单 + private List htnqd; +// 变更增加清单 + + private List bgzjqd; +// 合同外清单 + private List htwqd; + + + + } 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 index 4e4af705..dd7abd0d 100644 --- 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 @@ -1,6 +1,13 @@ package org.dromara.xzd.settlement.fenbaohetongjingdu.domain.vo; import java.math.BigDecimal; + +import org.dromara.xzd.settlement.domain.bo.XzdAlterationInventoryBo; +import org.dromara.xzd.settlement.domain.bo.XzdContractInventoryBo; +import org.dromara.xzd.settlement.domain.bo.XzdJsDeductionItemsBo; +import org.dromara.xzd.settlement.domain.vo.XzdAlterationInventoryVo; +import org.dromara.xzd.settlement.domain.vo.XzdContractInventoryVo; +import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo; import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.SettlementOfSubcontractingContract; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -13,7 +20,7 @@ import java.io.Serial; import java.io.Serializable; import java.time.LocalDate; import java.util.Date; - +import java.util.List; /** @@ -217,5 +224,16 @@ public class SettlementOfSubcontractingContractVo implements Serializable { @ExcelProperty(value = "审核状态") private String auditStatus; + // 奖惩与扣款 + private List jlykk; + // 合同内清单 + private List htnqd; +// 变更增加清单 + + private List bgzjqd; + // 合同外清单 + private List htwqd; + + } 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 index 9bea0483..b5c8b4ac 100644 --- 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 @@ -2,6 +2,7 @@ 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.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -17,8 +18,23 @@ import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdSubcont import org.dromara.xzd.contractManagement.fenbaohetongxinxi.service.IXzdSubcontractService; import org.dromara.xzd.domain.*; import org.dromara.xzd.domain.dto.QuerCorrespondentDto; +import org.dromara.xzd.enums.XzdClassEnum; +import org.dromara.xzd.enums.ZxdEnum; +import org.dromara.xzd.service.IXzdContractInfoService; import org.dromara.xzd.service.IXzdCorrespondentList; import org.dromara.xzd.service.impl.XzdProjectServiceImpl; +import org.dromara.xzd.settlement.domain.XzdAlterationInventory; +import org.dromara.xzd.settlement.domain.XzdContractInventory; +import org.dromara.xzd.settlement.domain.XzdJsDeductionItems; +import org.dromara.xzd.settlement.domain.bo.XzdAlterationInventoryBo; +import org.dromara.xzd.settlement.domain.bo.XzdContractInventoryBo; +import org.dromara.xzd.settlement.domain.bo.XzdJsDeductionItemsBo; +import org.dromara.xzd.settlement.domain.vo.XzdAlterationInventoryVo; +import org.dromara.xzd.settlement.domain.vo.XzdContractInventoryVo; +import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo; +import org.dromara.xzd.settlement.service.IXzdAlterationInventoryService; +import org.dromara.xzd.settlement.service.IXzdContractInventoryService; +import org.dromara.xzd.settlement.service.IXzdJsDeductionItemsService; import org.dromara.xzd.utilS.AreaUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,10 +45,7 @@ import org.dromara.xzd.settlement.fenbaohetongjingdu.mapper.SettlementOfSubcontr 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; +import java.util.*; /** * 分包合同进度结算Service业务层处理 @@ -58,8 +71,17 @@ public class SettlementOfSubcontractingContractServiceImpl extends ServiceImpl xzdContractInventories = iXzdContractInventoryService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdContractInventory::getPrimaryMeterId, item.getId()).eq(XzdContractInventory::getType, ZxdEnum.HETONGLEIXINGNEI.getTypeValue())); + if (xzdContractInventories != null && xzdContractInventories.size() > 0) { + item.setHtnqd(MapstructUtils.convert(xzdContractInventories, XzdContractInventoryVo.class)); + } + +// 合同外清单 + List xzdContractInventories1 = iXzdContractInventoryService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdContractInventory::getPrimaryMeterId, item.getId()).eq(XzdContractInventory::getType, ZxdEnum.HETONGLEIXING.getTypeValue())); + if (xzdContractInventories1 != null && xzdContractInventories1.size() > 0) { + item.setHtwqd(MapstructUtils.convert(xzdContractInventories1, XzdContractInventoryVo.class)); + } +// 变更清单 + + List temp = iXzdAlterationInventoryService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdAlterationInventory::getPrimaryMeterId, item.getId())); + if (temp != null && temp.size() > 0){ + item.setBgzjqd(MapstructUtils.convert(temp, XzdAlterationInventoryVo.class)); + } + +// 奖惩 + List xzdJsDeductionItems = deductionItemsService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdJsDeductionItems::getMainDocId, item.getId())); + if (xzdJsDeductionItems != null && xzdJsDeductionItems.size() > 0) { + item.setJlykk(MapstructUtils.convert(xzdJsDeductionItems, XzdJsDeductionItemsVo.class)); + } } } @@ -182,8 +227,48 @@ public class SettlementOfSubcontractingContractServiceImpl extends ServiceImpl 0; + +// 合同内清单 + List htnqd = bo.getHtnqd(); + if (htnqd != null && htnqd.size() > 0) { + htnqd.forEach(temp ->{ + temp.setContractType(ZxdEnum.FENBAOHET.getTypeValue()); + temp.setType(ZxdEnum.HETONGLEIXINGNEI.getTypeValue()); + temp.setPrimaryMeterId(add.getId()); + }); + iXzdContractInventoryService.saveBatch(MapstructUtils.convert(htnqd, XzdContractInventory.class)); + } +// 合同外清单 + List htwqd = bo.getHtwqd(); + if (htwqd != null && htwqd.size() > 0) { + htwqd.forEach(temp ->{ + temp.setContractType(ZxdEnum.FENBAOHET.getTypeValue()); + temp.setType(ZxdEnum.HETONGLEIXING.getTypeValue()); + temp.setPrimaryMeterId(add.getId()); + }); + iXzdContractInventoryService.saveBatch(MapstructUtils.convert(htwqd, XzdContractInventory.class)); + } +// 变更清单 + List bgzjqd = bo.getBgzjqd(); + if (bgzjqd != null && bgzjqd.size() > 0) { + bgzjqd.forEach(temp ->{ + temp.setContractType(ZxdEnum.FENBAOHET.getTypeValue()); + temp.setPrimaryMeterId(add.getId()); + }); + iXzdAlterationInventoryService.saveBatch(MapstructUtils.convert(bgzjqd, XzdAlterationInventory.class)); + } +// 奖惩 + String tableName = XzdClassEnum.FENBAOHETONG_JINDU.getClassName(); + List jlykk = bo.getJlykk(); + if (jlykk != null && jlykk.size() > 0){ + jlykk.forEach(temp ->{ + temp.setTableName(tableName); + temp.setMainDocId(add.getId()); + }); + deductionItemsService.saveBatch(MapstructUtils.convert(jlykk, XzdJsDeductionItems.class)); + } + if (flag) { bo.setId(add.getId()); } @@ -200,6 +285,52 @@ public class SettlementOfSubcontractingContractServiceImpl extends ServiceImpl().eq(XzdAlterationInventory::getPrimaryMeterId, bo.getId())); + List bgzjqd = bo.getBgzjqd(); + if (bgzjqd != null && bgzjqd.size() > 0) { + bgzjqd.forEach(temp ->{ + temp.setContractType(ZxdEnum.FENBAOHET.getTypeValue()); + temp.setPrimaryMeterId(update.getId()); + }); + iXzdAlterationInventoryService.saveBatch(MapstructUtils.convert(bgzjqd, XzdAlterationInventory.class)); + } + // 合同内清单 + List htnqd = bo.getHtnqd(); + iXzdContractInventoryService.getBaseMapper().delete(new LambdaQueryWrapper().eq(XzdContractInventory::getPrimaryMeterId, bo.getId()).eq(XzdContractInventory::getContractType, ZxdEnum.HETONGLEIXINGNEI.getTypeValue())); + if (htnqd != null && htnqd.size() > 0) { + htnqd.forEach(temp ->{ + temp.setContractType(ZxdEnum.FENBAOHET.getTypeValue()); + temp.setType(ZxdEnum.HETONGLEIXINGNEI.getTypeValue()); + temp.setPrimaryMeterId(update.getId()); + }); + iXzdContractInventoryService.saveBatch(MapstructUtils.convert(htnqd, XzdContractInventory.class)); + } +// 合同外清单 + List htwqd = bo.getHtwqd(); + iXzdContractInventoryService.getBaseMapper().delete(new LambdaQueryWrapper().eq(XzdContractInventory::getPrimaryMeterId, bo.getId()).eq(XzdContractInventory::getContractType,ZxdEnum.HETONGLEIXING.getTypeValue())); + if (htwqd != null && htwqd.size() > 0) { + htwqd.forEach(temp ->{ + temp.setContractType(ZxdEnum.FENBAOHET.getTypeValue()); + temp.setType(ZxdEnum.HETONGLEIXING.getTypeValue()); + temp.setPrimaryMeterId(update.getId()); + }); + iXzdContractInventoryService.saveBatch(MapstructUtils.convert(htwqd, XzdContractInventory.class)); + } + +// 奖惩 + String tableName = XzdClassEnum.FENBAOHETONG_JINDU.getClassName(); + List jlykk = bo.getJlykk(); + HashMap tempMap = new HashMap<>(); + tempMap.put("main_doc_id", update.getId()); + deductionItemsService.getBaseMapper().deleteByMap(tempMap); + if (jlykk != null && jlykk.size() > 0){ + jlykk.forEach(temp ->{ + temp.setTableName(tableName); + temp.setMainDocId(update.getId()); + }); + deductionItemsService.saveBatch(MapstructUtils.convert(jlykk, XzdJsDeductionItems.class)); + } return baseMapper.updateById(update) > 0; } @@ -234,6 +365,11 @@ public class SettlementOfSubcontractingContractServiceImpl extends ServiceImpl().in(XzdAlterationInventory::getPrimaryMeterId, ids)); +// 合同内清单 + iXzdContractInventoryService.getBaseMapper().delete(new LambdaQueryWrapper().in (XzdContractInventory::getPrimaryMeterId, ids)); + deductionItemsService.remove(new LambdaQueryWrapper().in(XzdJsDeductionItems::getMainDocId, ids)); + return baseMapper.deleteByIds(ids) > 0; } } 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 index 71f5ce9f..109567b0 100644 --- 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 @@ -1,5 +1,9 @@ package org.dromara.xzd.settlement.fenbaohetongjungong.domain.bo; +import org.dromara.xzd.domain.bo.XzdJsqdTzBo; +import org.dromara.xzd.domain.vo.XzdJsqdTzVo; +import org.dromara.xzd.settlement.domain.bo.XzdJsDeductionItemsBo; +import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo; import org.dromara.xzd.settlement.fenbaohetongjungong.domain.SettlementOfSubcontractingCompletion; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -10,6 +14,7 @@ import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.List; /** * 分包合同竣工结算业务对象 settlement_of_subcontracting_completion @@ -173,5 +178,14 @@ public class SettlementOfSubcontractingCompletionBo extends BaseEntity { private LocalDate endTime; + /** + * 决算调整清单 + */ + private List jstzqd; + + + // 奖惩与扣款 + private List jlykk; + } 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 index 48010507..3380bad0 100644 --- 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 @@ -1,6 +1,9 @@ package org.dromara.xzd.settlement.fenbaohetongjungong.domain.vo; import java.math.BigDecimal; + +import org.dromara.xzd.domain.vo.XzdJsqdTzVo; +import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo; import org.dromara.xzd.settlement.fenbaohetongjungong.domain.SettlementOfSubcontractingCompletion; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -13,7 +16,7 @@ import java.io.Serial; import java.io.Serializable; import java.time.LocalDate; import java.util.Date; - +import java.util.List; /** @@ -262,5 +265,14 @@ public class SettlementOfSubcontractingCompletionVo implements Serializable { @ExcelProperty(value = "审核状态") private String auditStatus; + /** + * 决算调整清单 + */ + private List jstzqd; + + + // 奖惩与扣款 + private List jlykk; + } 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 index 7531e6c7..51723c9d 100644 --- 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 @@ -15,13 +15,21 @@ import org.dromara.system.service.impl.SysOssServiceImpl; import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdSubcontractVo; import org.dromara.xzd.contractManagement.fenbaohetongxinxi.service.IXzdSubcontractService; import org.dromara.xzd.domain.*; +import org.dromara.xzd.domain.bo.XzdJsqdTzBo; import org.dromara.xzd.domain.dto.QuerCorrespondentDto; +import org.dromara.xzd.domain.vo.XzdJsqdTzVo; import org.dromara.xzd.domain.vo.XzdSettlementRulesVo; +import org.dromara.xzd.enums.XzdClassEnum; +import org.dromara.xzd.enums.ZxdEnum; import org.dromara.xzd.service.*; import org.dromara.xzd.service.impl.XzdProjectServiceImpl; import org.dromara.xzd.service.impl.XzdSupplierInfoServiceImpl; +import org.dromara.xzd.settlement.domain.XzdJsDeductionItems; +import org.dromara.xzd.settlement.domain.bo.XzdJsDeductionItemsBo; +import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo; import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.SettlementOfSubcontractingContract; import org.dromara.xzd.settlement.fenbaohetongjingdu.domain.vo.SettlementOfSubcontractingContractVo; +import org.dromara.xzd.settlement.service.IXzdJsDeductionItemsService; import org.dromara.xzd.utilS.AreaUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -70,6 +78,12 @@ public class SettlementOfSubcontractingCompletionServiceImpl extends ServiceImpl private final IXzdContractClauseService iXzdContractClauseService; + private final IXzdJsqdTzService iXzdJsqdTzService; + + + @Autowired + private IXzdJsDeductionItemsService deductionItemsService; + private final IXzdSubcontractService iXzdSubcontractService; @@ -86,7 +100,8 @@ public class SettlementOfSubcontractingCompletionServiceImpl extends ServiceImpl throw new RuntimeException("数据不存在"); } List res = List.of(vo); - setValue(res); + setValue(res,true); + return res.getFirst(); } @@ -102,12 +117,23 @@ public class SettlementOfSubcontractingCompletionServiceImpl extends ServiceImpl public TableDataInfo queryPageList(SettlementOfSubcontractingCompletionBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - setValue(result.getRecords()); + setValue(result.getRecords(),false); return TableDataInfo.build(result); } - private void setValue(List records) { + private void setValue(List records,Boolean flow) { for (SettlementOfSubcontractingCompletionVo item : records) { + if (flow){ + List xzdJsqdTzs = iXzdJsqdTzService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdJsqdTz::getMainId, item.getId())); + if (xzdJsqdTzs != null && xzdJsqdTzs.size() > 0) { + item.setJstzqd(MapstructUtils.convert(xzdJsqdTzs, XzdJsqdTzVo.class)); + } + List xzdJsDeductionItems = deductionItemsService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdJsDeductionItems::getMainDocId, item.getId())); + if (xzdJsDeductionItems != null && xzdJsDeductionItems.size() > 0) { + item.setJlykk(MapstructUtils.convert(xzdJsDeductionItems, XzdJsDeductionItemsVo.class)); + } + } + //项目名称 if (item.getEngineeringProject() != null){ String projectName = xzdProjectService.queryNameById(item.getEngineeringProject()); @@ -238,10 +264,27 @@ public class SettlementOfSubcontractingCompletionServiceImpl extends ServiceImpl SettlementOfSubcontractingCompletion add = MapstructUtils.convert(bo, SettlementOfSubcontractingCompletion.class); validEntityBeforeSave(add); String banBen = BatchNumberGenerator.generateBatchNumber("FBHTJGJS-"); - add.setDocumentCode(banBen); - boolean flag = baseMapper.insert(add) > 0; +// 决算调整清单 + List jstzqd = bo.getJstzqd(); + if (jstzqd != null && jstzqd.size() > 0) { + jstzqd.forEach(item -> { + item.setMainId(add.getId()); + item.setType(ZxdEnum.SFWJSD_S.getTypeValue()); + }); + iXzdJsqdTzService.saveBatch(MapstructUtils.convert(jstzqd, XzdJsqdTz.class)); + } +// 奖励与扣款 + List jlykk = bo.getJlykk(); + if (jlykk != null && jlykk.size() > 0){ + jlykk.forEach(item ->{ + item.setTableName(XzdClassEnum.SUBCONTRACTING_COMPLETION.getClassName()); + item.setMainDocId(add.getId()); + }); + deductionItemsService.saveBatch(MapstructUtils.convert(jlykk, XzdJsDeductionItems.class)); + } + if (flag) { bo.setId(add.getId()); } @@ -258,6 +301,29 @@ public class SettlementOfSubcontractingCompletionServiceImpl extends ServiceImpl public Boolean updateByBo(SettlementOfSubcontractingCompletionBo bo) { SettlementOfSubcontractingCompletion update = MapstructUtils.convert(bo, SettlementOfSubcontractingCompletion.class); validEntityBeforeSave(update); + + // 决算调整清单 + List jstzqd = bo.getJstzqd(); + iXzdJsqdTzService.getBaseMapper().delete(new LambdaQueryWrapper().eq(XzdJsqdTz::getMainId, update.getId())); + if (jstzqd != null && jstzqd.size() > 0) { + jstzqd.forEach(item -> { + item.setMainId(update.getId()); + item.setType(ZxdEnum.SFWJSD_S.getTypeValue()); + }); + iXzdJsqdTzService.saveBatch(MapstructUtils.convert(jstzqd, XzdJsqdTz.class)); + } +// 奖励与扣款 + List jlykk = bo.getJlykk(); + deductionItemsService.getBaseMapper().delete(new LambdaQueryWrapper().eq(XzdJsDeductionItems::getMainDocId, update.getId())); + if (jlykk != null && jlykk.size() > 0){ + jlykk.forEach(item ->{ + item.setTableName(XzdClassEnum.SUBCONTRACTING_COMPLETION.getClassName()); + item.setMainDocId(update.getId()); + }); + deductionItemsService.saveBatch(MapstructUtils.convert(jlykk, XzdJsDeductionItems.class)); + } + + return baseMapper.updateById(update) > 0; } @@ -293,6 +359,8 @@ public class SettlementOfSubcontractingCompletionServiceImpl extends ServiceImpl } } } + iXzdJsqdTzService.getBaseMapper().delete(new LambdaQueryWrapper().in(XzdJsqdTz::getMainId, ids)); + deductionItemsService.getBaseMapper().delete(new LambdaQueryWrapper().in(XzdJsDeductionItems::getMainDocId, ids)); return baseMapper.deleteByIds(ids) > 0; } 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 index bc1da53c..c6cf2f1f 100644 --- 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 @@ -1,5 +1,7 @@ package org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.bo; +import org.dromara.xzd.domain.bo.XzdJsqdTzBo; +import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo; import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.SettlementOfSubcontractingAdjustment; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -10,6 +12,7 @@ import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.List; /** * 分包合同竣工结算调整业务对象 settlement_of_subcontracting_adjustment @@ -93,4 +96,16 @@ public class SettlementOfSubcontractingAdjustmentBo extends BaseEntity { private String auditStatus; + /** + * 决算调整清单 + */ + private List jstzqd; + + + // 奖惩与扣款 + private List jlykk; + + + + } 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 index b213e0f7..58c7ebb7 100644 --- 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 @@ -1,6 +1,10 @@ package org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.vo; import java.math.BigDecimal; + +import org.dromara.xzd.domain.bo.XzdJsqdTzBo; +import org.dromara.xzd.domain.vo.XzdJsqdTzVo; +import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo; import org.dromara.xzd.settlement.fenbaohetongtiaozheng.domain.SettlementOfSubcontractingAdjustment; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -13,7 +17,7 @@ import java.io.Serial; import java.io.Serializable; import java.time.LocalDate; import java.util.Date; - +import java.util.List; /** @@ -122,4 +126,14 @@ public class SettlementOfSubcontractingAdjustmentVo implements Serializable { private String auditStatus; + /** + * 决算调整清单 + */ + private List jstzqd; + + + // 奖惩与扣款 + private List jlykk; + + } 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 index 6bab506c..c462390a 100644 --- 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 @@ -11,9 +11,19 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.dromara.common.utils.BatchNumberGenerator; import org.dromara.system.service.impl.SysOssServiceImpl; +import org.dromara.xzd.domain.XzdJsqdTz; +import org.dromara.xzd.domain.bo.XzdJsqdTzBo; +import org.dromara.xzd.domain.vo.XzdJsqdTzVo; +import org.dromara.xzd.enums.XzdClassEnum; +import org.dromara.xzd.enums.ZxdEnum; +import org.dromara.xzd.service.IXzdJsqdTzService; +import org.dromara.xzd.settlement.domain.XzdJsDeductionItems; +import org.dromara.xzd.settlement.domain.bo.XzdJsDeductionItemsBo; +import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo; import org.dromara.xzd.settlement.fenbaohetongjungong.domain.SettlementOfSubcontractingCompletion; import org.dromara.xzd.settlement.fenbaohetongjungong.domain.vo.SettlementOfSubcontractingCompletionVo; import org.dromara.xzd.settlement.fenbaohetongjungong.service.ISettlementOfSubcontractingCompletionService; +import org.dromara.xzd.settlement.service.IXzdJsDeductionItemsService; import org.dromara.xzd.utilS.AreaUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,10 +34,7 @@ import org.dromara.xzd.settlement.fenbaohetongtiaozheng.mapper.SettlementOfSubco 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; +import java.util.*; /** * 分包合同竣工结算调整Service业务层处理 @@ -42,8 +49,14 @@ public class SettlementOfSubcontractingAdjustmentServiceImpl extends ServiceImpl private final SettlementOfSubcontractingAdjustmentMapper baseMapper; private final AreaUtil areaUtil; + + private final IXzdJsqdTzService iXzdJsqdTzService; + private final ISettlementOfSubcontractingCompletionService iSettlementOfSubcontractingCompletionService; + @Autowired + private IXzdJsDeductionItemsService deductionItemsService; + @Autowired private SysOssServiceImpl sysOssService; @@ -66,7 +79,16 @@ public class SettlementOfSubcontractingAdjustmentServiceImpl extends ServiceImpl if (temp != null) { vo.setFinalAccountNoName(temp.getDocumentCode()); } - + // 决算调整清单 + List xzdJsqdTzs = iXzdJsqdTzService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdJsqdTz::getMainId, vo.getId())); + if (xzdJsqdTzs != null && xzdJsqdTzs.size() > 0) { + vo.setJstzqd(MapstructUtils.convert(xzdJsqdTzs, XzdJsqdTzVo.class)); + } +// 奖励与扣款 + List xzdJsDeductionItems = deductionItemsService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdJsDeductionItems::getMainDocId, vo.getId())); + if (xzdJsDeductionItems != null && xzdJsDeductionItems.size() > 0) { + vo.setJlykk(MapstructUtils.convert(xzdJsDeductionItems, XzdJsDeductionItemsVo.class)); + } } } @@ -130,9 +152,28 @@ public class SettlementOfSubcontractingAdjustmentServiceImpl extends ServiceImpl SettlementOfSubcontractingAdjustment add = MapstructUtils.convert(bo, SettlementOfSubcontractingAdjustment.class); validEntityBeforeSave(add); String banBen = BatchNumberGenerator.generateBatchNumber("FBHTJGJSTZ-"); - add.setDocumentNo(banBen); boolean flag = baseMapper.insert(add) > 0; +// 决算调整清单 + List jstzqd = bo.getJstzqd(); + if (jstzqd != null && jstzqd.size() > 0) { + jstzqd.forEach(item -> { + item.setMainId(add.getId()); + item.setType(ZxdEnum.SFWJSD_TZ.getTypeValue()); + }); + iXzdJsqdTzService.saveBatch(MapstructUtils.convert(jstzqd, XzdJsqdTz.class)); + } +// 奖励与扣款 + List jlykk = bo.getJlykk(); + if (jlykk != null && jlykk.size() > 0){ + jlykk.forEach(item ->{ + item.setTableName(XzdClassEnum.SETTLEMENT_OF_SUBCONTRACTING_ADJUSTMENT.getClassName()); + item.setMainDocId(add.getId()); + }); + deductionItemsService.saveBatch(MapstructUtils.convert(jlykk, XzdJsDeductionItems.class)); + } + + if (flag) { bo.setId(add.getId()); } @@ -149,6 +190,31 @@ public class SettlementOfSubcontractingAdjustmentServiceImpl extends ServiceImpl public Boolean updateByBo(SettlementOfSubcontractingAdjustmentBo bo) { SettlementOfSubcontractingAdjustment update = MapstructUtils.convert(bo, SettlementOfSubcontractingAdjustment.class); validEntityBeforeSave(update); + + // 决算调整清单 + List jstzqd = bo.getJstzqd(); + HashMap hashMap = new HashMap<>(); + hashMap.put("main_id", update.getId()); + iXzdJsqdTzService.getBaseMapper().deleteByMap(hashMap); + if (jstzqd != null && jstzqd.size() > 0) { + jstzqd.forEach(item -> { + item.setMainId(update.getId()); + item.setType(ZxdEnum.SFWJSD_TZ.getTypeValue()); + }); + iXzdJsqdTzService.saveBatch(MapstructUtils.convert(jstzqd, XzdJsqdTz.class)); + } +// 奖励与扣款 + List jlykk = bo.getJlykk(); + HashMap temp = new HashMap<>(); + temp.put("main_doc_id", update.getId()); + deductionItemsService.getBaseMapper().deleteByMap(temp); + if (jlykk != null && jlykk.size() > 0){ + jlykk.forEach(item ->{ + item.setTableName(XzdClassEnum.SETTLEMENT_OF_SUBCONTRACTING_ADJUSTMENT.getClassName()); + item.setMainDocId(update.getId()); + }); + deductionItemsService.saveBatch(MapstructUtils.convert(jlykk, XzdJsDeductionItems.class)); + } return baseMapper.updateById(update) > 0; } @@ -184,6 +250,8 @@ public class SettlementOfSubcontractingAdjustmentServiceImpl extends ServiceImpl } } } + iXzdJsqdTzService.getBaseMapper().delete(new LambdaQueryWrapper().in(XzdJsqdTz::getMainId, ids)); + deductionItemsService.getBaseMapper().delete(new LambdaQueryWrapper().in(XzdJsDeductionItems::getMainDocId, ids)); return baseMapper.deleteByIds(ids) > 0; } }