采购合同结算接口

This commit is contained in:
2025-10-15 22:01:22 +08:00
parent d92d37c646
commit d8838f8e01
21 changed files with 518 additions and 39 deletions

View File

@ -172,18 +172,21 @@ public class XzdCsContractChangeVo implements Serializable {
*/
@ExcelProperty(value = "变更后项目经理")
private Long afterChangeProjectManager;
private String afterChangeProjectManagerName;
/**
* 变更后项目责任人
*/
@ExcelProperty(value = "变更后项目责任人")
private Long afterChangeProjectLeader;
private String afterChangeProjectLeaderName;
/**
* 变更后现场经理
*/
@ExcelProperty(value = "变更后现场经理")
private Long afterChangeSiteManager;
private String afterChangeSiteManagerName;
/**
* 变更后合同备注

View File

@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.service.ISysUserService;
import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation;
@ -56,6 +57,8 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
private XzdSettlementRulesServiceImpl xzdSettlementRulesService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private ISysUserService sysUserService;
@Autowired
@ -343,6 +346,18 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
if (xzdSupplierInfoVo != null){
item.setPartyBName(xzdSupplierInfoVo);
}
String name1 = sysUserService.queryNameById(item.getAfterChangeSiteManager());
if (name1 != null){
item.setAfterChangeSiteManagerName(name1);
}
String name2 = sysUserService.queryNameById(item.getAfterChangeProjectLeader());
if (name2 != null){
item.setAfterChangeProjectLeaderName(name2);
}
String name3 = sysUserService.queryNameById(item.getAfterChangeProjectManager());
if (name3 != null){
item.setAfterChangeProjectManagerName(name3);
}
}
/**

View File

@ -361,6 +361,11 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public String queryCodeById(Long id) {
return baseMapper.selectVoById(id).getContractCode();
}
public void setValue(List<XzdPurchaseContractInformationVo> infos){
for (XzdPurchaseContractInformationVo item : infos) {

View File

@ -61,7 +61,7 @@ public class XzdJsCgJinduController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("settlement:jsCgJindu:query")
// @SaCheckPermission("settlement:jsCgJindu:query")
@GetMapping("/{id}")
public R<XzdJsCgJinduVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {

View File

@ -61,7 +61,7 @@ public class XzdJsCgJungonController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("settlement:jsCgJungon:query")
// @SaCheckPermission("settlement:jsCgJungon:query")
@GetMapping("/{id}")
public R<XzdJsCgJungonVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {

View File

@ -61,7 +61,7 @@ public class XzdJsCgJungonEditController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("settlement:jsCgJungonEdit:query")
// @SaCheckPermission("settlement:jsCgJungonEdit:query")
@GetMapping("/{id}")
public R<XzdJsCgJungonEditVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {

View File

@ -61,7 +61,7 @@ public class XzdJsZhfwJinduController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("settlement:jsZhfwJindu:query")
// @SaCheckPermission("settlement:jsZhfwJindu:query")
@GetMapping("/{id}")
public R<XzdJsZhfwJinduVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {

View File

@ -47,7 +47,7 @@ public class XzdJsCgJungonEdit extends BaseEntity {
/**
* 决算单号(带*,必填)
*/
private String finalAccountCode;
private Long finalAccountCode;
/**
* 合同名称
@ -57,7 +57,7 @@ public class XzdJsCgJungonEdit extends BaseEntity {
/**
* 合同编号
*/
private String contractCode;
private Long contractCode;
/**
* 调整后决算金额(带*,必填)
@ -89,5 +89,10 @@ public class XzdJsCgJungonEdit extends BaseEntity {
*/
private String procurementMode;
/**
* 文件ID
*/
private String fileId;
}

View File

@ -1,5 +1,8 @@
package org.dromara.xzd.settlement.domain;
import jakarta.validation.constraints.NotNull;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
@ -63,6 +66,10 @@ public class XzdJsZhfwJindu extends BaseEntity {
* 计量开始
*/
private LocalDate measureStart;
/**
* 计量结束
*/
private LocalDate measureEnd;
/**
* 审批金额

View File

@ -35,7 +35,7 @@ public class XzdJsCgJinduBo extends BaseEntity {
/**
* 单据编码(带*,必填)
*/
@NotBlank(message = "单据编码(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "单据编码(带*,必填)不能为空", groups = {EditGroup.class })
private String docCode;
/**
@ -53,6 +53,7 @@ public class XzdJsCgJinduBo extends BaseEntity {
/**
* 合同编码(带查询,关联合同表)
*/
@NotNull(message = "合同编码不能为空", groups = { AddGroup.class, EditGroup.class })
private Long contractCode;
/**
@ -75,12 +76,13 @@ public class XzdJsCgJinduBo extends BaseEntity {
/**
* 项目(带*,必填)
*/
@NotBlank(message = "项目(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
@NotNull(message = "项目(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long project;
/**
* 审批金额默认0.00
*/
@NotNull(message = "审批金额不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal approveAmount;
/**

View File

@ -8,8 +8,11 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 采购合同竣工结算业务对象 xzd_js_cg_jungon
@ -31,7 +34,7 @@ public class XzdJsCgJungonBo extends BaseEntity {
/**
* 单据编号(带*,必填)
*/
@NotBlank(message = "单据编号(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "单据编号(带*,必填)不能为空", groups = {EditGroup.class })
private String docCode;
/**
@ -49,6 +52,7 @@ public class XzdJsCgJungonBo extends BaseEntity {
/**
* 合同编号(带*,关联合同表)
*/
@NotNull(message = "合同编号不能为空", groups = { AddGroup.class, EditGroup.class })
private Long contractCode;
/**
@ -142,5 +146,7 @@ public class XzdJsCgJungonBo extends BaseEntity {
*/
private String fileId;
List<XzdJsDeductionItems> kkyjlx;
}

View File

@ -8,8 +8,11 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 采购合同竣工结算调整业务对象 xzd_js_cg_jungon_edit
@ -31,7 +34,7 @@ public class XzdJsCgJungonEditBo extends BaseEntity {
/**
* 单据编号(带*,必填)
*/
@NotBlank(message = "单据编号(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "单据编号(带*,必填)不能为空", groups = { EditGroup.class })
private String docCode;
/**
@ -60,7 +63,7 @@ public class XzdJsCgJungonEditBo extends BaseEntity {
/**
* 合同编号
*/
private String contractCode;
private Long contractCode;
/**
* 调整后决算金额(带*,必填)
@ -94,5 +97,11 @@ public class XzdJsCgJungonEditBo extends BaseEntity {
*/
private String procurementMode;
/**
* 文件ID
*/
private String fileId;
List<XzdJsDeductionItems> kkyjlx;
}

View File

@ -1,5 +1,6 @@
package org.dromara.xzd.settlement.domain.bo;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
import org.dromara.xzd.settlement.domain.XzdJsZhfwJindu;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@ -10,6 +11,7 @@ import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 综合服务合同进度结算业务对象 xzd_js_zhfw_jindu
@ -31,7 +33,7 @@ public class XzdJsZhfwJinduBo extends BaseEntity {
/**
* 单据编码(带*,必填)
*/
@NotBlank(message = "单据编码(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "单据编码(带*,必填)不能为空", groups = { EditGroup.class })
private String docCode;
/**
@ -49,6 +51,7 @@ public class XzdJsZhfwJinduBo extends BaseEntity {
/**
* 合同编码
*/
@NotNull(message = "合同编码不能为空", groups = { AddGroup.class, EditGroup.class })
private Long contractCode;
/**
@ -65,7 +68,13 @@ public class XzdJsZhfwJinduBo extends BaseEntity {
/**
* 计量开始
*/
@NotNull(message = "计量开始不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate measureStart;
/**
* 计量结束
*/
@NotNull(message = "计量结束不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate measureEnd;
/**
* 审批金额
@ -157,5 +166,6 @@ public class XzdJsZhfwJinduBo extends BaseEntity {
*/
private String fileId;
List<XzdJsDeductionItems> kkyjlx;
}

View File

@ -8,12 +8,13 @@ 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.settlement.domain.XzdJsDeductionItems;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
@ -63,6 +64,7 @@ public class XzdJsCgJinduVo implements Serializable {
@ExcelProperty(value = "合同编码", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=查询,关联合同表")
private Long contractCode;
private String contractCodeName;
/**
* 合同名称(关联合同后显示)
@ -218,5 +220,5 @@ public class XzdJsCgJinduVo implements Serializable {
@ExcelProperty(value = "文件ID")
private String fileId;
List<XzdJsDeductionItems> kkyjlx;
}

View File

@ -8,12 +8,13 @@ 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.settlement.domain.XzdJsDeductionItems;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
@ -62,7 +63,7 @@ public class XzdJsCgJungonEditVo implements Serializable {
*/
@ExcelProperty(value = "决算单号", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private String finalAccountCode;
private Long finalAccountCode;
/**
* 合同名称
@ -74,7 +75,9 @@ public class XzdJsCgJungonEditVo implements Serializable {
* 合同编号
*/
@ExcelProperty(value = "合同编号")
private String contractCode;
private Long contractCode;
private String contractCodeName;
/**
* 调整后决算金额(带*,必填)
@ -89,12 +92,14 @@ public class XzdJsCgJungonEditVo implements Serializable {
@ExcelProperty(value = "工程项目", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private Long projectId;
private String projectName;
/**
* 默认财务组织
*/
@ExcelProperty(value = "默认财务组织")
private Long defaultFinanceOrg;
private String defaultFinanceOrgName;
/**
* 调整说明
@ -114,5 +119,12 @@ public class XzdJsCgJungonEditVo implements Serializable {
@ExcelProperty(value = "集采模式")
private String procurementMode;
/**
* 文件ID
*/
private String fileId;
List<XzdJsDeductionItems> kkyjlx;
}

View File

@ -8,12 +8,13 @@ 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.settlement.domain.XzdJsDeductionItems;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
@ -63,6 +64,7 @@ public class XzdJsCgJungonVo implements Serializable {
@ExcelProperty(value = "合同编号", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,关联合同表")
private Long contractCode;
private String contractCodeName;
/**
* 合同名称(关联合同后显示)
@ -186,5 +188,7 @@ public class XzdJsCgJungonVo implements Serializable {
@ExcelProperty(value = "文件ID")
private String fileId;
List<XzdJsDeductionItems> kkyjlx;
}

View File

@ -1,6 +1,8 @@
package org.dromara.xzd.settlement.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
import org.dromara.xzd.settlement.domain.XzdJsZhfwJindu;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@ -13,7 +15,7 @@ import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
@ -82,6 +84,11 @@ public class XzdJsZhfwJinduVo implements Serializable {
@ExcelProperty(value = "计量开始")
private LocalDate measureStart;
/**
* 计量结束
*/
private LocalDate measureEnd;
/**
* 审批金额
*/
@ -192,5 +199,6 @@ public class XzdJsZhfwJinduVo implements Serializable {
@ExcelProperty(value = "文件ID")
private String fileId;
List<XzdJsDeductionItems> kkyjlx;
}

View File

@ -12,7 +12,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractChangeVo;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.contractManagement.purchaseManagement.service.IXzdPurchaseContractInformationService;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
@ -31,10 +34,9 @@ import org.dromara.xzd.settlement.domain.vo.XzdJsCgJinduVo;
import org.dromara.xzd.settlement.domain.XzdJsCgJindu;
import org.dromara.xzd.settlement.mapper.XzdJsCgJinduMapper;
import org.dromara.xzd.settlement.service.IXzdJsCgJinduService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
/**
* 采购合同进度结算Service业务层处理
@ -48,11 +50,20 @@ public class XzdJsCgJinduServiceImpl extends ServiceImpl<XzdJsCgJinduMapper, Xzd
private final XzdJsCgJinduMapper baseMapper;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private XzdProjectServiceImpl xzdProjectService;
@Autowired
private IXzdCorrespondentList iXzdCorrespondentList;
@Autowired
private XzdSupplierInfoServiceImpl xzdSupplierInfoService;
@Autowired
private IXzdPurchaseContractInformationService xzdPurchaseContractInformationService;
@Autowired
private IXzdJsDeductionItemsService deductionItemsService;
@ -66,6 +77,7 @@ public class XzdJsCgJinduServiceImpl extends ServiceImpl<XzdJsCgJinduMapper, Xzd
public XzdJsCgJinduVo queryById(Long id){
XzdJsCgJinduVo xzdJsCgJinduVo = baseMapper.selectVoById(id);
getName(xzdJsCgJinduVo);
getHttk(xzdJsCgJinduVo);
return xzdJsCgJinduVo;
}
@ -137,11 +149,12 @@ public class XzdJsCgJinduServiceImpl extends ServiceImpl<XzdJsCgJinduMapper, Xzd
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(XzdJsCgJinduBo bo) {
XzdJsCgJindu add = MapstructUtils.convert(bo, XzdJsCgJindu.class);
validEntityBeforeSave(add);
String code = BatchNumberGenerator.generateBatchNumber("ZHFWHT-");
add.setDocCode(code);
String banBen = BatchNumberGenerator.generateBatchNumber("JSCGJD-");
add.setDocCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
@ -167,9 +180,24 @@ public class XzdJsCgJinduServiceImpl extends ServiceImpl<XzdJsCgJinduMapper, Xzd
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(XzdJsCgJinduBo bo) {
XzdJsCgJindu update = MapstructUtils.convert(bo, XzdJsCgJindu.class);
validEntityBeforeSave(update);
//删除奖励与扣款对应数据
deductionItemsService.remove(new LambdaQueryWrapper<XzdJsDeductionItems>().eq(XzdJsDeductionItems::getMainDocId, update.getId()));
//生成奖励与扣款数据
String tableName = XzdClassEnum.JS_CG_JINDU.getClassName();
if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) {
throw new ServiceException("扣款与奖励项不能为空");
}
//合同条款-扣款与奖励项
for (XzdJsDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setMainDocId(update.getId());
}
//新增奖励与扣款数据
deductionItemsService.saveBatch(bo.getKkyjlx());
return baseMapper.updateById(update) > 0;
}
@ -188,10 +216,26 @@ public class XzdJsCgJinduServiceImpl extends ServiceImpl<XzdJsCgJinduMapper, Xzd
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
List<Long> deleteIds = new ArrayList<>();
for (Long id : ids) {
XzdJsCgJinduVo vo = baseMapper.selectVoById(id);
if (vo != null){
//删除附件
if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){
List<Long> list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList();
deleteIds.addAll(list);
}
}
}
if (!deleteIds.isEmpty()) {
sysOssService.deleteWithValidByIds(deleteIds, false);
}
deductionItemsService.remove(new LambdaQueryWrapper<XzdJsDeductionItems>().in(XzdJsDeductionItems::getMainDocId, ids));
return baseMapper.deleteByIds(ids) > 0;
}
@ -207,12 +251,32 @@ public class XzdJsCgJinduServiceImpl extends ServiceImpl<XzdJsCgJinduMapper, Xzd
item.setProjectName(projectName);
}
}
//合同编码
if (item.getContractCode() != null){
String code = xzdPurchaseContractInformationService.queryCodeById(item.getContractCode());
if (code != null){
item.setContractCodeName(code);
}
}
//结算单位(客户信息列表)
R<QuerCorrespondentDto> dtoR = iXzdCorrespondentList.getCustomerByid(item.getSettlementUnit());
if (dtoR!=null){
if (dtoR.getData().getXzdCustomerinformation() != null){
item.setSettlementUnitName(dtoR.getData().getXzdCustomerinformation().getUnitName());
if (item.getSettlementUnit() != null){
String name = iXzdCorrespondentList.queryNameById(item.getSettlementUnit());
if (name!=null){
item.setSettlementUnitName(name);
}
}
}
/**
* 获取结算扣款与奖励项内容
* @param vo
*/
private void getHttk(XzdJsCgJinduVo vo) {
//结算扣款与奖励项
LambdaQueryWrapper<XzdJsDeductionItems> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdJsDeductionItems::getMainDocId, vo.getId());
List<XzdJsDeductionItems> list = deductionItemsService.list(lambdaQueryWrapper2);
vo.setKkyjlx(list);
}
}

View File

@ -1,6 +1,7 @@
package org.dromara.xzd.settlement.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -9,6 +10,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.contractManagement.purchaseManagement.service.IXzdPurchaseContractInformationService;
import org.dromara.xzd.enums.XzdClassEnum;
import org.dromara.xzd.service.IXzdCorrespondentList;
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.vo.XzdJsCgJinduVo;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo;
import org.dromara.xzd.settlement.service.IXzdJsDeductionItemsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.xzd.settlement.domain.bo.XzdJsCgJungonEditBo;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonEditVo;
@ -16,9 +31,7 @@ import org.dromara.xzd.settlement.domain.XzdJsCgJungonEdit;
import org.dromara.xzd.settlement.mapper.XzdJsCgJungonEditMapper;
import org.dromara.xzd.settlement.service.IXzdJsCgJungonEditService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
/**
* 采购合同竣工结算调整Service业务层处理
@ -32,6 +45,23 @@ public class XzdJsCgJungonEditServiceImpl extends ServiceImpl<XzdJsCgJungonEditM
private final XzdJsCgJungonEditMapper baseMapper;
@Autowired
private IXzdPurchaseContractInformationService xzdPurchaseContractInformationService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private SysDeptServiceImpl sysDeptService;
@Autowired
private XzdProjectServiceImpl xzdProjectService;
@Autowired
private IXzdJsDeductionItemsService deductionItemsService;
/**
* 查询采购合同竣工结算调整
*
@ -40,7 +70,10 @@ public class XzdJsCgJungonEditServiceImpl extends ServiceImpl<XzdJsCgJungonEditM
*/
@Override
public XzdJsCgJungonEditVo queryById(Long id){
return baseMapper.selectVoById(id);
XzdJsCgJungonEditVo vo = baseMapper.selectVoById(id);
getName(vo);
getHttk(vo);
return vo;
}
/**
@ -54,6 +87,7 @@ public class XzdJsCgJungonEditServiceImpl extends ServiceImpl<XzdJsCgJungonEditM
public TableDataInfo<XzdJsCgJungonEditVo> queryPageList(XzdJsCgJungonEditBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdJsCgJungonEdit> lqw = buildQueryWrapper(bo);
Page<XzdJsCgJungonEditVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(this::getName);
return TableDataInfo.build(result);
}
@ -66,7 +100,9 @@ public class XzdJsCgJungonEditServiceImpl extends ServiceImpl<XzdJsCgJungonEditM
@Override
public List<XzdJsCgJungonEditVo> queryList(XzdJsCgJungonEditBo bo) {
LambdaQueryWrapper<XzdJsCgJungonEdit> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
List<XzdJsCgJungonEditVo> vos = baseMapper.selectVoList(lqw);
vos.forEach(this::getName);
return vos;
}
private LambdaQueryWrapper<XzdJsCgJungonEdit> buildQueryWrapper(XzdJsCgJungonEditBo bo) {
@ -78,7 +114,7 @@ public class XzdJsCgJungonEditServiceImpl extends ServiceImpl<XzdJsCgJungonEditM
lqw.eq(bo.getDocDate() != null, XzdJsCgJungonEdit::getDocDate, bo.getDocDate());
lqw.eq(StringUtils.isNotBlank(bo.getFinalAccountCode()), XzdJsCgJungonEdit::getFinalAccountCode, bo.getFinalAccountCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdJsCgJungonEdit::getContractName, bo.getContractName());
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdJsCgJungonEdit::getContractCode, bo.getContractCode());
lqw.eq(bo.getContractCode() != null, XzdJsCgJungonEdit::getContractCode, bo.getContractCode());
lqw.eq(bo.getAdjustedFinalAmount() != null, XzdJsCgJungonEdit::getAdjustedFinalAmount, bo.getAdjustedFinalAmount());
lqw.eq(bo.getProjectId() != null, XzdJsCgJungonEdit::getProjectId, bo.getProjectId());
lqw.eq(bo.getDefaultFinanceOrg() != null, XzdJsCgJungonEdit::getDefaultFinanceOrg, bo.getDefaultFinanceOrg());
@ -97,10 +133,22 @@ public class XzdJsCgJungonEditServiceImpl extends ServiceImpl<XzdJsCgJungonEditM
public Boolean insertByBo(XzdJsCgJungonEditBo bo) {
XzdJsCgJungonEdit add = MapstructUtils.convert(bo, XzdJsCgJungonEdit.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("JSCGJDTZ-");
add.setDocCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
String tableName = XzdClassEnum.JS_CG_JUNGON.getClassName();
if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) {
throw new ServiceException("扣款与奖励项不能为空");
}
//合同条款-扣款与奖励项
for (XzdJsDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setMainDocId(add.getId());
}
deductionItemsService.saveBatch(bo.getKkyjlx());
return flag;
}
@ -114,6 +162,20 @@ public class XzdJsCgJungonEditServiceImpl extends ServiceImpl<XzdJsCgJungonEditM
public Boolean updateByBo(XzdJsCgJungonEditBo bo) {
XzdJsCgJungonEdit update = MapstructUtils.convert(bo, XzdJsCgJungonEdit.class);
validEntityBeforeSave(update);
//删除奖励与扣款对应数据
deductionItemsService.remove(new LambdaQueryWrapper<XzdJsDeductionItems>().eq(XzdJsDeductionItems::getMainDocId, update.getId()));
//生成奖励与扣款数据
String tableName = XzdClassEnum.JS_CG_JUNGON.getClassName();
if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) {
throw new ServiceException("扣款与奖励项不能为空");
}
//合同条款-扣款与奖励项
for (XzdJsDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setMainDocId(update.getFinalAccountCode());
}
//新增奖励与扣款数据
deductionItemsService.saveBatch(bo.getKkyjlx());
return baseMapper.updateById(update) > 0;
}
@ -136,6 +198,60 @@ public class XzdJsCgJungonEditServiceImpl extends ServiceImpl<XzdJsCgJungonEditM
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
List<Long> deleteIds = new ArrayList<>();
for (Long id : ids) {
XzdJsCgJungonEditVo vo = baseMapper.selectVoById(id);
if (vo != null){
//删除附件
if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){
List<Long> list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList();
deleteIds.addAll(list);
}
}
}
if (!deleteIds.isEmpty()) {
sysOssService.deleteWithValidByIds(deleteIds, false);
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取部分字段名称
* @param item
*/
private void getName(XzdJsCgJungonEditVo item) {
//项目名称
if (item.getProjectId() != null){
String projectName = xzdProjectService.queryNameById(item.getProjectId());
if (projectName != null){
item.setProjectName(projectName);
}
}
//合同编码
if (item.getContractCode() != null){
String code = xzdPurchaseContractInformationService.queryCodeById(item.getContractCode());
if (code != null){
item.setContractCodeName(code);
}
}
//部门名称
if (item.getDefaultFinanceOrg() != null){
SysDeptVo sysDeptVo = sysDeptService.selectDeptById(item.getDefaultFinanceOrg());
if (sysDeptVo != null){
item.setDefaultFinanceOrgName(sysDeptVo.getDeptName());
}
}
}
/**
* 获取扣款与奖励项
* @param vo
*/
private void getHttk(XzdJsCgJungonEditVo vo) {
//结算扣款与奖励项
LambdaQueryWrapper<XzdJsDeductionItems> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdJsDeductionItems::getMainDocId, vo.getId());
List<XzdJsDeductionItems> list = deductionItemsService.list(lambdaQueryWrapper2);
vo.setKkyjlx(list);
}
}

View File

@ -1,6 +1,7 @@
package org.dromara.xzd.settlement.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -9,16 +10,26 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.contractManagement.purchaseManagement.service.IXzdPurchaseContractInformationService;
import org.dromara.xzd.enums.XzdClassEnum;
import org.dromara.xzd.service.IXzdCorrespondentList;
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.vo.XzdJsCgJinduVo;
import org.dromara.xzd.settlement.service.IXzdJsDeductionItemsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.xzd.settlement.domain.bo.XzdJsCgJungonBo;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo;
import org.dromara.xzd.settlement.domain.XzdJsCgJungon;
import org.dromara.xzd.settlement.mapper.XzdJsCgJungonMapper;
import org.dromara.xzd.settlement.service.IXzdJsCgJungonService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
/**
* 采购合同竣工结算Service业务层处理
@ -32,6 +43,24 @@ public class XzdJsCgJungonServiceImpl extends ServiceImpl<XzdJsCgJungonMapper, X
private final XzdJsCgJungonMapper baseMapper;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private IXzdPurchaseContractInformationService xzdPurchaseContractInformationService;
@Autowired
private XzdProjectServiceImpl xzdProjectService;
@Autowired
private IXzdCorrespondentList iXzdCorrespondentList;
@Autowired
private XzdSupplierInfoServiceImpl xzdSupplierInfoService;
@Autowired
private IXzdJsDeductionItemsService deductionItemsService;
/**
* 查询采购合同竣工结算
*
@ -40,7 +69,10 @@ public class XzdJsCgJungonServiceImpl extends ServiceImpl<XzdJsCgJungonMapper, X
*/
@Override
public XzdJsCgJungonVo queryById(Long id){
return baseMapper.selectVoById(id);
XzdJsCgJungonVo vo = baseMapper.selectVoById(id);
getName(vo);
getHttk(vo);
return vo;
}
/**
@ -54,6 +86,7 @@ public class XzdJsCgJungonServiceImpl extends ServiceImpl<XzdJsCgJungonMapper, X
public TableDataInfo<XzdJsCgJungonVo> queryPageList(XzdJsCgJungonBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdJsCgJungon> lqw = buildQueryWrapper(bo);
Page<XzdJsCgJungonVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(this::getName);
return TableDataInfo.build(result);
}
@ -66,7 +99,9 @@ public class XzdJsCgJungonServiceImpl extends ServiceImpl<XzdJsCgJungonMapper, X
@Override
public List<XzdJsCgJungonVo> queryList(XzdJsCgJungonBo bo) {
LambdaQueryWrapper<XzdJsCgJungon> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
List<XzdJsCgJungonVo> vos = baseMapper.selectVoList(lqw);
vos.forEach(this::getName);
return vos;
}
private LambdaQueryWrapper<XzdJsCgJungon> buildQueryWrapper(XzdJsCgJungonBo bo) {
@ -104,13 +139,27 @@ public class XzdJsCgJungonServiceImpl extends ServiceImpl<XzdJsCgJungonMapper, X
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(XzdJsCgJungonBo bo) {
XzdJsCgJungon add = MapstructUtils.convert(bo, XzdJsCgJungon.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("JSCGJG-");
add.setDocCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
String tableName = XzdClassEnum.JS_CG_JUNGON.getClassName();
if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) {
throw new ServiceException("扣款与奖励项不能为空");
}
//合同条款-扣款与奖励项
for (XzdJsDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setMainDocId(add.getId());
}
deductionItemsService.saveBatch(bo.getKkyjlx());
return flag;
}
@ -121,9 +170,24 @@ public class XzdJsCgJungonServiceImpl extends ServiceImpl<XzdJsCgJungonMapper, X
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(XzdJsCgJungonBo bo) {
XzdJsCgJungon update = MapstructUtils.convert(bo, XzdJsCgJungon.class);
validEntityBeforeSave(update);
//删除奖励与扣款对应数据
deductionItemsService.remove(new LambdaQueryWrapper<XzdJsDeductionItems>().eq(XzdJsDeductionItems::getMainDocId, update.getId()));
//生成奖励与扣款数据
String tableName = XzdClassEnum.JS_CG_JINDU.getClassName();
if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) {
throw new ServiceException("扣款与奖励项不能为空");
}
//合同条款-扣款与奖励项
for (XzdJsDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setMainDocId(update.getId());
}
//新增奖励与扣款数据
deductionItemsService.saveBatch(bo.getKkyjlx());
return baseMapper.updateById(update) > 0;
}
@ -142,10 +206,101 @@ public class XzdJsCgJungonServiceImpl extends ServiceImpl<XzdJsCgJungonMapper, X
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
List<Long> deleteIds = new ArrayList<>();
for (Long id : ids) {
XzdJsCgJungonVo vo = baseMapper.selectVoById(id);
if (vo != null){
//删除附件
if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){
List<Long> list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList();
deleteIds.addAll(list);
}
}
}
if (!deleteIds.isEmpty()) {
sysOssService.deleteWithValidByIds(deleteIds, false);
}
deductionItemsService.remove(new LambdaQueryWrapper<XzdJsDeductionItems>().in(XzdJsDeductionItems::getMainDocId, ids));
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取部分字段名称
* @param item
*/
private void getName(XzdJsCgJungonVo item) {
//项目名称
if (item.getProjectId() != null){
String projectName = xzdProjectService.queryNameById(item.getProjectId());
if (projectName != null){
item.setProjectName(projectName);
}
}
if (item.getContractCode() != null){
String code = xzdPurchaseContractInformationService.queryCodeById(item.getContractCode());
if (code != null){
item.setContractCodeName(code);
}
}
//甲方单位(客户信息列表)
if (item.getPartyA() != null){
String byid = iXzdCorrespondentList.queryNameById(item.getPartyA());
if (byid!=null){
item.setPartyAName(byid);
}
}
//乙方单位(供应商信息列表)
if (item.getPartyB() != null){
String unitName = xzdSupplierInfoService.queryNameById(item.getPartyB());
if (unitName != null){
item.setPartyBName(unitName);
}
}
//业主单位(客户信息列表)
if (item.getOwnerUnit() != null){
String byid = iXzdCorrespondentList.queryNameById(item.getOwnerUnit());
if (byid!=null){
item.setOwnerUnitName(byid);
}
}
//监理单位(客户信息列表)
if (item.getSupervisionUnit() != null){
String byid = iXzdCorrespondentList.queryNameById(item.getSupervisionUnit());
if (byid!=null){
item.setSupervisionUnitName(byid);
}
}
//施工单位(客户信息列表)
if (item.getConstructionUnit() != null){
String byid = iXzdCorrespondentList.queryNameById(item.getConstructionUnit());
if (byid!=null){
item.setConstructionUnitName(byid);
}
}
//审核单位(客户信息列表)
if (item.getAuditUnit() != null){
String byid = iXzdCorrespondentList.queryNameById(item.getAuditUnit());
if (byid!=null){
item.setAuditUnitName(byid);
}
}
}
/**
* 获取扣款与奖励项
* @param vo
*/
private void getHttk(XzdJsCgJungonVo vo) {
//结算扣款与奖励项
LambdaQueryWrapper<XzdJsDeductionItems> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdJsDeductionItems::getMainDocId, vo.getId());
List<XzdJsDeductionItems> list = deductionItemsService.list(lambdaQueryWrapper2);
vo.setKkyjlx(list);
}
}

View File

@ -9,6 +9,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.service.impl.XzdProjectServiceImpl;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonEditVo;
import org.dromara.xzd.settlement.service.IXzdJsDeductionItemsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.xzd.settlement.domain.bo.XzdJsZhfwJinduBo;
import org.dromara.xzd.settlement.domain.vo.XzdJsZhfwJinduVo;
@ -32,6 +40,20 @@ public class XzdJsZhfwJinduServiceImpl extends ServiceImpl<XzdJsZhfwJinduMapper,
private final XzdJsZhfwJinduMapper baseMapper;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private SysDeptServiceImpl sysDeptService;
@Autowired
private XzdProjectServiceImpl xzdProjectService;
@Autowired
private IXzdJsDeductionItemsService deductionItemsService;
/**
* 查询综合服务合同进度结算
*
@ -151,4 +173,38 @@ public class XzdJsZhfwJinduServiceImpl extends ServiceImpl<XzdJsZhfwJinduMapper,
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取部分字段名称
* @param item
*/
// private void getName(XzdJsZhfwJinduVo item) {
// //项目名称
// if (item.getProjectId() != null){
// String projectName = xzdProjectService.queryNameById(item.getProjectId());
// if (projectName != null){
// item.setProjectName(projectName);
// }
// }
// //部门名称
// if (item.getDefaultFinanceOrg() != null){
// SysDeptVo sysDeptVo = sysDeptService.selectDeptById(item.getDefaultFinanceOrg());
// if (sysDeptVo != null){
// item.setDefaultFinanceOrgName(sysDeptVo.getDeptName());
// }
// }
// }
/**
* 获取扣款与奖励项
* @param vo
*/
private void getHttk(XzdJsZhfwJinduVo vo) {
//结算扣款与奖励项
LambdaQueryWrapper<XzdJsDeductionItems> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdJsDeductionItems::getMainDocId, vo.getId());
List<XzdJsDeductionItems> list = deductionItemsService.list(lambdaQueryWrapper2);
vo.setKkyjlx(list);
}
}