This commit is contained in:
lg
2025-10-20 20:16:44 +08:00
parent 13de88265f
commit a9ce42101f
22 changed files with 1034 additions and 23 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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"),//分包合同进度结算

View File

@ -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;
}

View File

@ -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<XzdXhqdBo> xhqd;
}

View File

@ -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;
}

View File

@ -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<XzdXhqdBo> xhqd;
}

View File

@ -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;
}

View File

@ -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<XzdXhqd, XzdXhqdVo> {
}

View File

@ -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<XzdXhqd>{
/**
* 查询增值税发票-销货清单
*
* @param id 主键
* @return 增值税发票-销货清单
*/
XzdXhqdVo queryById(Long id);
/**
* 分页查询增值税发票-销货清单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 增值税发票-销货清单分页列表
*/
TableDataInfo<XzdXhqdVo> queryPageList(XzdXhqdBo bo, PageQuery pageQuery);
/**
* 查询符合条件的增值税发票-销货清单列表
*
* @param bo 查询条件
* @return 增值税发票-销货清单列表
*/
List<XzdXhqdVo> 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<Long> ids, Boolean isValid);
}

View File

@ -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<AppreciationInvo
private final IXzdProjectService xzdProjectService;
private final IXzdXhqdService xzdXhqdService;
private final IXzdContractDetailsService xzdContractDetailsService;
private final ITaxInfoService iTaxInfoService;
@ -67,7 +71,8 @@ public class AppreciationInvoiceServiceImpl extends ServiceImpl<AppreciationInvo
public AppreciationInvoiceVo queryById(Long id){
AppreciationInvoiceVo appreciationInvoiceVo = baseMapper.selectVoById(id);
List<AppreciationInvoiceVo> vo = List.of(appreciationInvoiceVo);
saveValue(vo);
saveValue(vo,true);
return vo.getFirst();
}
@ -83,12 +88,20 @@ public class AppreciationInvoiceServiceImpl extends ServiceImpl<AppreciationInvo
public TableDataInfo<AppreciationInvoiceVo> queryPageList(AppreciationInvoiceBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<AppreciationInvoice> lqw = buildQueryWrapper(bo);
Page<AppreciationInvoiceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
saveValue(result.getRecords());
saveValue(result.getRecords(),false);
return TableDataInfo.build(result);
}
private void saveValue(List<AppreciationInvoiceVo> records) {
private void saveValue(List<AppreciationInvoiceVo> records,Boolean flow) {
for (AppreciationInvoiceVo item : records) {
if (flow){
// xhqd
List<XzdXhqd> xzdXhqds = xzdXhqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdXhqd>().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<AppreciationInvo
AppreciationInvoice add = MapstructUtils.convert(bo, AppreciationInvoice.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
List<XzdXhqdBo> 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<AppreciationInvo
public Boolean updateByBo(AppreciationInvoiceBo bo) {
AppreciationInvoice update = MapstructUtils.convert(bo, AppreciationInvoice.class);
validEntityBeforeSave(update);
xzdXhqdService.getBaseMapper().delete(new LambdaQueryWrapper<XzdXhqd>().eq(XzdXhqd::getPrimaryMeterId, bo.getId()));
List<XzdXhqdBo> 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<AppreciationInvo
sysOssService.deleteWithValidByIds(collect, false);
}
}
xzdXhqdService.getBaseMapper().delete(new LambdaQueryWrapper<XzdXhqd>().in(XzdXhqd::getPrimaryMeterId, ids));
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -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<XzdXhqdMapper, XzdXhqd> 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<XzdXhqdVo> queryPageList(XzdXhqdBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdXhqd> lqw = buildQueryWrapper(bo);
Page<XzdXhqdVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的增值税发票-销货清单列表
*
* @param bo 查询条件
* @return 增值税发票-销货清单列表
*/
@Override
public List<XzdXhqdVo> queryList(XzdXhqdBo bo) {
LambdaQueryWrapper<XzdXhqd> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdXhqd> buildQueryWrapper(XzdXhqdBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdXhqd> 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<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -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<XzdJsDeductionItemsBo> jlykk;
// 合同内清单
private List<XzdContractInventoryBo> htnqd;
// 变更增加清单
private List<XzdAlterationInventoryBo> bgzjqd;
// 合同外清单
private List<XzdContractInventoryBo> htwqd;
}

View File

@ -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<XzdJsDeductionItemsVo> jlykk;
// 合同内清单
private List<XzdContractInventoryVo> htnqd;
// 变更增加清单
private List<XzdAlterationInventoryVo> bgzjqd;
// 合同外清单
private List<XzdContractInventoryVo> htwqd;
}

View File

@ -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<S
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private IXzdJsDeductionItemsService deductionItemsService;
private final IXzdSubcontractService iXzdSubcontractService;
private final IXzdContractInventoryService iXzdContractInventoryService;
private final IXzdAlterationInventoryService iXzdAlterationInventoryService;
/**
* 查询分包合同进度结算
*
@ -117,6 +139,29 @@ public class SettlementOfSubcontractingContractServiceImpl extends ServiceImpl<S
item.setSettlementUnitName(byid.getData().getXzdCustomerinformation().getUnitName());
}
}
// 合同内清单
List<XzdContractInventory> xzdContractInventories = iXzdContractInventoryService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdContractInventory>().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<XzdContractInventory> xzdContractInventories1 = iXzdContractInventoryService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdContractInventory>().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<XzdAlterationInventory> temp = iXzdAlterationInventoryService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdAlterationInventory>().eq(XzdAlterationInventory::getPrimaryMeterId, item.getId()));
if (temp != null && temp.size() > 0){
item.setBgzjqd(MapstructUtils.convert(temp, XzdAlterationInventoryVo.class));
}
// 奖惩
List<XzdJsDeductionItems> xzdJsDeductionItems = deductionItemsService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdJsDeductionItems>().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<S
String banBen = BatchNumberGenerator.generateBatchNumber("FBHTJD-");
add.setDocumentCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
// 合同内清单
List<XzdContractInventoryBo> 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<XzdContractInventoryBo> 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<XzdAlterationInventoryBo> 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<XzdJsDeductionItemsBo> 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<S
public Boolean updateByBo(SettlementOfSubcontractingContractBo bo) {
SettlementOfSubcontractingContract update = MapstructUtils.convert(bo, SettlementOfSubcontractingContract.class);
validEntityBeforeSave(update);
// 变更清单
iXzdAlterationInventoryService.getBaseMapper().delete(new LambdaQueryWrapper<XzdAlterationInventory>().eq(XzdAlterationInventory::getPrimaryMeterId, bo.getId()));
List<XzdAlterationInventoryBo> 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<XzdContractInventoryBo> htnqd = bo.getHtnqd();
iXzdContractInventoryService.getBaseMapper().delete(new LambdaQueryWrapper<XzdContractInventory>().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<XzdContractInventoryBo> htwqd = bo.getHtwqd();
iXzdContractInventoryService.getBaseMapper().delete(new LambdaQueryWrapper<XzdContractInventory>().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<XzdJsDeductionItemsBo> jlykk = bo.getJlykk();
HashMap<String, Object> 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<S
}
}
}
iXzdAlterationInventoryService.getBaseMapper().delete(new LambdaQueryWrapper<XzdAlterationInventory>().in(XzdAlterationInventory::getPrimaryMeterId, ids));
// 合同内清单
iXzdContractInventoryService.getBaseMapper().delete(new LambdaQueryWrapper<XzdContractInventory>().in (XzdContractInventory::getPrimaryMeterId, ids));
deductionItemsService.remove(new LambdaQueryWrapper<XzdJsDeductionItems>().in(XzdJsDeductionItems::getMainDocId, ids));
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -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<XzdJsqdTzBo> jstzqd;
// 奖惩与扣款
private List<XzdJsDeductionItemsBo> jlykk;
}

View File

@ -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<XzdJsqdTzVo> jstzqd;
// 奖惩与扣款
private List<XzdJsDeductionItemsVo> jlykk;
}

View File

@ -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<SettlementOfSubcontractingCompletionVo> res = List.of(vo);
setValue(res);
setValue(res,true);
return res.getFirst();
}
@ -102,12 +117,23 @@ public class SettlementOfSubcontractingCompletionServiceImpl extends ServiceImpl
public TableDataInfo<SettlementOfSubcontractingCompletionVo> queryPageList(SettlementOfSubcontractingCompletionBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SettlementOfSubcontractingCompletion> lqw = buildQueryWrapper(bo);
Page<SettlementOfSubcontractingCompletionVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
setValue(result.getRecords());
setValue(result.getRecords(),false);
return TableDataInfo.build(result);
}
private void setValue(List<SettlementOfSubcontractingCompletionVo> records) {
private void setValue(List<SettlementOfSubcontractingCompletionVo> records,Boolean flow) {
for (SettlementOfSubcontractingCompletionVo item : records) {
if (flow){
List<XzdJsqdTz> xzdJsqdTzs = iXzdJsqdTzService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdJsqdTz>().eq(XzdJsqdTz::getMainId, item.getId()));
if (xzdJsqdTzs != null && xzdJsqdTzs.size() > 0) {
item.setJstzqd(MapstructUtils.convert(xzdJsqdTzs, XzdJsqdTzVo.class));
}
List<XzdJsDeductionItems> xzdJsDeductionItems = deductionItemsService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdJsDeductionItems>().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<XzdJsqdTzBo> 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<XzdJsDeductionItemsBo> 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<XzdJsqdTzBo> jstzqd = bo.getJstzqd();
iXzdJsqdTzService.getBaseMapper().delete(new LambdaQueryWrapper<XzdJsqdTz>().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<XzdJsDeductionItemsBo> jlykk = bo.getJlykk();
deductionItemsService.getBaseMapper().delete(new LambdaQueryWrapper<XzdJsDeductionItems>().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<XzdJsqdTz>().in(XzdJsqdTz::getMainId, ids));
deductionItemsService.getBaseMapper().delete(new LambdaQueryWrapper<XzdJsDeductionItems>().in(XzdJsDeductionItems::getMainDocId, ids));
return baseMapper.deleteByIds(ids) > 0;
}

View File

@ -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<XzdJsqdTzBo> jstzqd;
// 奖惩与扣款
private List<XzdJsDeductionItemsVo> jlykk;
}

View File

@ -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<XzdJsqdTzVo> jstzqd;
// 奖惩与扣款
private List<XzdJsDeductionItemsVo> jlykk;
}

View File

@ -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<XzdJsqdTz> xzdJsqdTzs = iXzdJsqdTzService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdJsqdTz>().eq(XzdJsqdTz::getMainId, vo.getId()));
if (xzdJsqdTzs != null && xzdJsqdTzs.size() > 0) {
vo.setJstzqd(MapstructUtils.convert(xzdJsqdTzs, XzdJsqdTzVo.class));
}
// 奖励与扣款
List<XzdJsDeductionItems> xzdJsDeductionItems = deductionItemsService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdJsDeductionItems>().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<XzdJsqdTzBo> 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<XzdJsDeductionItemsVo> 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<XzdJsqdTzBo> jstzqd = bo.getJstzqd();
HashMap<String, Object> 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<XzdJsDeductionItemsVo> jlykk = bo.getJlykk();
HashMap<String, Object> 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<XzdJsqdTz>().in(XzdJsqdTz::getMainId, ids));
deductionItemsService.getBaseMapper().delete(new LambdaQueryWrapper<XzdJsDeductionItems>().in(XzdJsDeductionItems::getMainDocId, ids));
return baseMapper.deleteByIds(ids) > 0;
}
}