Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
2025-12-29 16:36:17 +08:00
18 changed files with 256 additions and 213 deletions

View File

@ -1,8 +1,6 @@
package com.xjrsoft.module.contract.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -24,7 +22,6 @@ import com.xjrsoft.module.contract.dto.UpdateLngContractFactDto;
import com.xjrsoft.module.contract.entity.LngContractFact;
import com.xjrsoft.module.contract.service.IContractFactService;
import com.xjrsoft.module.contract.vo.LngContractFactPageVo;
import com.xjrsoft.module.contract.vo.LngContractFactVo;
import com.xjrsoft.module.datalog.service.DatalogService;
import com.xjrsoft.module.datalog.vo.DataChangeLogVo;
import io.swagger.annotations.Api;
@ -51,34 +48,19 @@ public class ContractFactController {
private final IContractFactService contractFactService;
private final DatalogService dataService;
// @GetMapping(value = "/page")
@GetMapping(value = "/page")
@ApiOperation(value="LngContractFact列表(分页)")
@SaCheckPermission("contractFact:list")
public R page(@Valid LngContractFactPageDto dto){
LambdaQueryWrapper<LngContractFact> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.like(StrUtil.isNotBlank(dto.getKNo()),LngContractFact::getKNo,dto.getKNo())
.like(StrUtil.isNotBlank(dto.getKName()),LngContractFact::getKName,dto.getKName())
.like(StrUtil.isNotBlank(dto.getKTypeCode1()),LngContractFact::getKTypeCode1,dto.getKTypeCode1())
.eq(ObjectUtil.isNotNull(dto.getComId()),LngContractFact::getComId,dto.getComId())
.between(ObjectUtil.isNotNull(dto.getDateDraftStart()) && ObjectUtil.isNotNull(dto.getDateDraftEnd()),LngContractFact::getDateDraft,dto.getDateDraftStart(),dto.getDateDraftEnd())
.like(StrUtil.isNotBlank(dto.getPeriodTypeCode()),LngContractFact::getPeriodTypeCode,dto.getPeriodTypeCode())
.between(ObjectUtil.isNotNull(dto.getDateFromStart()) && ObjectUtil.isNotNull(dto.getDateFromEnd()),LngContractFact::getDateFrom,dto.getDateFromStart(),dto.getDateFromEnd())
.between(ObjectUtil.isNotNull(dto.getDateToStart()) && ObjectUtil.isNotNull(dto.getDateToEnd()),LngContractFact::getDateTo,dto.getDateToStart(),dto.getDateToEnd())
.like(StrUtil.isNotBlank(dto.getCurCode()),LngContractFact::getCurCode,dto.getCurCode())
.eq(ObjectUtil.isNotNull(dto.getAmount()),LngContractFact::getAmount,dto.getAmount())
.eq(ObjectUtil.isNotNull(dto.getEmpId()),LngContractFact::getEmpId,dto.getEmpId())
.like(StrUtil.isNotBlank(dto.getTel()),LngContractFact::getTel,dto.getTel())
.eq(ObjectUtil.isNotNull(dto.getBDeptId()),LngContractFact::getBDeptId,dto.getBDeptId())
.like(StrUtil.isNotBlank(dto.getBidSign()),LngContractFact::getBidSign,dto.getBidSign())
.like(StrUtil.isNotBlank(dto.getPreApproSign()),LngContractFact::getPreApproSign,dto.getPreApproSign())
.like(StrUtil.isNotBlank(dto.getAheadSign()),LngContractFact::getAheadSign,dto.getAheadSign())
.like(StrUtil.isNotBlank(dto.getTempSign()),LngContractFact::getTempSign,dto.getTempSign())
.like(StrUtil.isNotBlank(dto.getImpSign()),LngContractFact::getImpSign,dto.getImpSign())
.like(StrUtil.isNotBlank(dto.getApproCode()),LngContractFact::getApproCode,dto.getApproCode())
.like(StrUtil.isNotBlank(dto.getKDesc()),LngContractFact::getKDesc,dto.getKDesc())
.like(StrUtil.isNotBlank(dto.getNote()),LngContractFact::getNote,dto.getNote())
.and(StrUtil.isNotBlank(dto.getKName()), r ->
r.like(LngContractFact::getKNo, dto.getKName())
.or()
.like(LngContractFact::getKName, dto.getKName())
)
.eq(StrUtil.isNotBlank(dto.getRelTypeCode()), LngContractFact::getRelTypeCode,dto.getRelTypeCode())
.orderByDesc(LngContractFact::getId)
.select(LngContractFact.class,x -> VoToColumnUtil.fieldsToColumns(LngContractFactPageVo.class).contains(x.getProperty()));
IPage<LngContractFact> page = contractFactService.page(ConventPage.getPage(dto), queryWrapper);
@ -90,11 +72,7 @@ public class ContractFactController {
@ApiOperation(value="根据id查询LngContractFact信息")
@SaCheckPermission("contractFact:detail")
public R info(@RequestParam Long id){
LngContractFact lngContractFact = contractFactService.getByIdDeep(id);
if (lngContractFact == null) {
return R.error("找不到此数据!");
}
return R.ok(BeanUtil.toBean(lngContractFact, LngContractFactVo.class));
return R.ok(contractFactService.getInfoById(id));
}
@GetMapping(value = "/datalog")

View File

@ -1,5 +1,6 @@
package com.xjrsoft.module.contract.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.module.contract.entity.LngContractApproRel;
import org.apache.ibatis.annotations.Mapper;
@ -11,6 +12,6 @@ import org.apache.ibatis.annotations.Mapper;
* @Version 1.0
*/
@Mapper
public interface LngContractApproRelMapper extends MPJBaseMapper<LngContractApproRel> {
public interface LngContractApproRelMapper extends MPJBaseMapper<LngContractApproRel>, BaseMapper<LngContractApproRel> {
}

View File

@ -1,5 +1,6 @@
package com.xjrsoft.module.contract.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.module.contract.entity.LngContractFactCp;
import org.apache.ibatis.annotations.Mapper;
@ -11,6 +12,6 @@ import org.apache.ibatis.annotations.Mapper;
* @Version 1.0
*/
@Mapper
public interface LngContractFactCpMapper extends MPJBaseMapper<LngContractFactCp> {
public interface LngContractFactCpMapper extends MPJBaseMapper<LngContractFactCp>, BaseMapper<LngContractFactCp> {
}

View File

@ -1,8 +1,12 @@
package com.xjrsoft.module.contract.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.module.contract.entity.LngContractFact;
import com.xjrsoft.module.sales.vo.LngApproVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* @title: mapper
@ -11,6 +15,22 @@ import org.apache.ibatis.annotations.Mapper;
* @Version 1.0
*/
@Mapper
public interface LngContractFactMapper extends MPJBaseMapper<LngContractFact> {
public interface LngContractFactMapper extends MPJBaseMapper<LngContractFact>, BaseMapper<LngContractFact> {
@Select("SELECT a.id, a.title, a.code, dd_qb.name as typeName," +
" u.name as empName, dept.name as bDeptName, a.date_appro AS dateAppro" +
" FROM lng_appro a" +
" LEFT JOIN xjr_dictionary_item di_qb on di_qb.code='LNG_QB'" +
" LEFT JOIN xjr_dictionary_detail dd_qb on dd_qb.item_id=di_qb.id AND dd_qb.code=a.type_code" +
" LEFT JOIN xjr_dictionary_item di_s on di_s.code='LNG_SECRET'" +
" LEFT JOIN xjr_dictionary_detail dd_s on dd_s.item_id=di_s.id AND dd_s.code=a.security_code" +
" LEFT JOIN xjr_dictionary_item di_u on di_u.code='LNG_URGEN'" +
" LEFT JOIN xjr_dictionary_detail dd_u on dd_u.item_id=di_u.id AND dd_u.code=a.urgency_code" +
" LEFT JOIN xjr_dictionary_item di_a on di_a.code='LNG_APPRO'" +
" LEFT JOIN xjr_dictionary_detail dd_a on dd_a.item_id=di_a.id AND dd_a.code=a.appro_code" +
" LEFT JOIN xjr_user u on u.id=a.emp_id" +
" LEFT JOIN xjr_department dept on dept.id=a.dept_id" +
" LEFT JOIN xjr_department com on com.id=a.com_id" +
" WHERE a.id = #{id}")
LngApproVo getLngApproVo(@Param("id") Long id);
}

View File

@ -4,8 +4,7 @@ import com.github.yulichang.base.MPJBaseService;
import com.github.yulichang.extension.mapping.base.MPJDeepService;
import com.github.yulichang.extension.mapping.base.MPJRelationService;
import com.xjrsoft.module.contract.entity.LngContractFact;
import java.util.List;
import com.xjrsoft.module.contract.vo.LngContractFactVo;
/**
* @title: service
@ -15,27 +14,6 @@ import java.util.List;
*/
public interface IContractFactService extends MPJBaseService<LngContractFact>, MPJDeepService<LngContractFact>, MPJRelationService<LngContractFact> {
/**
* 新增
*
* @param lngContractFact
* @return
*/
Boolean add(LngContractFact lngContractFact);
/**
* 更新
*
* @param lngContractFact
* @return
*/
Boolean update(LngContractFact lngContractFact);
/**
* 删除
*
* @param ids
* @return
*/
Boolean delete(List<Long> ids);
LngContractFactVo getInfoById(Long id);
}

View File

@ -1,7 +1,11 @@
package com.xjrsoft.module.contract.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.google.common.collect.Lists;
import com.pictc.enums.BusinessCode;
import com.xjrsoft.common.exception.BusinessException;
import com.xjrsoft.module.contract.entity.LngContractApproRel;
import com.xjrsoft.module.contract.entity.LngContractFact;
import com.xjrsoft.module.contract.entity.LngContractFactCp;
@ -9,13 +13,16 @@ import com.xjrsoft.module.contract.mapper.LngContractApproRelMapper;
import com.xjrsoft.module.contract.mapper.LngContractFactCpMapper;
import com.xjrsoft.module.contract.mapper.LngContractFactMapper;
import com.xjrsoft.module.contract.service.IContractFactService;
import com.xjrsoft.module.contract.vo.LngContractFactCpVo;
import com.xjrsoft.module.contract.vo.LngContractFactVo;
import com.xjrsoft.module.sales.vo.LngApproVo;
import com.xjrsoft.module.system.client.IFileClient;
import com.xjrsoft.module.system.vo.LngFileUploadVo;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @title: service
@ -26,100 +33,42 @@ import java.util.stream.Collectors;
@Service
@AllArgsConstructor
public class ContractFactServiceImpl extends MPJBaseServiceImpl<LngContractFactMapper, LngContractFact> implements IContractFactService {
private final LngContractFactMapper contractFactLngContractFactMapper;
private final LngContractFactCpMapper contractFactLngContractFactCpMapper;
private final LngContractApproRelMapper contractFactLngContractApproRelMapper;
private final LngContractFactCpMapper lngContractFactCpMapper;
private final LngContractApproRelMapper lngContractApproRelMapper;
private final IFileClient fileClient;
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean add(LngContractFact lngContractFact) {
contractFactLngContractFactMapper.insert(lngContractFact);
for (LngContractFactCp lngContractFactCp : lngContractFact.getLngContractFactCpList()) {
lngContractFactCp.setKFactId(lngContractFact.getId());
contractFactLngContractFactCpMapper.insert(lngContractFactCp);
public LngContractFactVo getInfoById(Long id) {
LngContractFact lngContractFact = this.getById(id);
if(lngContractFact == null) {
new BusinessException(BusinessCode.of(10500,"找不到此数据"));
}
for (LngContractApproRel lngContractApproRel : lngContractFact.getLngContractApproRelList()) {
lngContractApproRel.setTableId(lngContractFact.getId());
contractFactLngContractApproRelMapper.insert(lngContractApproRel);
LngContractFactVo vo = BeanUtil.toBean(lngContractFact, LngContractFactVo.class);
List<LngContractFactCp> lngContractFactCpList = lngContractFactCpMapper.selectList(
new LambdaQueryWrapper<LngContractFactCp>()
.eq(LngContractFactCp::getKFactId, lngContractFact.getId()));
if (CollectionUtils.isNotEmpty(lngContractFactCpList)) {
vo.setLngContractFactCpList(BeanUtil.copyToList(lngContractFactCpList, LngContractFactCpVo.class));
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean update(LngContractFact lngContractFact) {
contractFactLngContractFactMapper.updateById(lngContractFact);
//********************************* LngContractFactCp 增删改 开始 *******************************************/
{
// 查出所有子级的id
List<LngContractFactCp> lngContractFactCpList = contractFactLngContractFactCpMapper.selectList(Wrappers.lambdaQuery(LngContractFactCp.class).eq(LngContractFactCp::getKFactId, lngContractFact.getId()).select(LngContractFactCp::getId));
List<Long> lngContractFactCpIds = lngContractFactCpList.stream().map(LngContractFactCp::getId).collect(Collectors.toList());
//原有子表单 没有被删除的主键
List<Long> lngContractFactCpOldIds = lngContractFact.getLngContractFactCpList().stream().map(LngContractFactCp::getId).filter(Objects::nonNull).collect(Collectors.toList());
//找到需要删除的id
List<Long> lngContractFactCpRemoveIds = lngContractFactCpIds.stream().filter(item -> !lngContractFactCpOldIds.contains(item)).collect(Collectors.toList());
for (LngContractFactCp lngContractFactCp : lngContractFact.getLngContractFactCpList()) {
//如果不等于空则修改
if (lngContractFactCp.getId() != null) {
contractFactLngContractFactCpMapper.updateById(lngContractFactCp);
}
//如果等于空 则新增
else {
//已经不存在的id 删除
lngContractFactCp.setKFactId(lngContractFact.getId());
contractFactLngContractFactCpMapper.insert(lngContractFactCp);
}
}
//已经不存在的id 删除
if(lngContractFactCpRemoveIds.size() > 0){
contractFactLngContractFactCpMapper.deleteBatchIds(lngContractFactCpRemoveIds);
}
List<LngContractApproRel> lngContractApproRelList = lngContractApproRelMapper.selectList(
new LambdaQueryWrapper<LngContractApproRel>()
.eq(LngContractApproRel::getTableId, lngContractFact.getId()));
if (CollectionUtils.isNotEmpty(lngContractApproRelList)) {
List<LngApproVo> approVoList = Lists.newArrayList();
lngContractApproRelList.forEach(x -> {
LngApproVo approVo = this.baseMapper.getLngApproVo(x.getApproId());
List<LngFileUploadVo> fileList = fileClient.getTableFiles("lng_appro",
"lngFileUploadList", approVo.getId());
approVo.setLngFileUploadList(fileList);
approVoList.add(approVo);
});
vo.setLngApproVoList(approVoList);
}
//********************************* LngContractFactCp 增删改 结束 *******************************************/
//********************************* LngContractApproRel 增删改 开始 *******************************************/
{
// 查出所有子级的id
List<LngContractApproRel> lngContractApproRelList = contractFactLngContractApproRelMapper.selectList(Wrappers.lambdaQuery(LngContractApproRel.class).eq(LngContractApproRel::getTableId, lngContractFact.getId()).select(LngContractApproRel::getId));
List<Long> lngContractApproRelIds = lngContractApproRelList.stream().map(LngContractApproRel::getId).collect(Collectors.toList());
//原有子表单 没有被删除的主键
List<Long> lngContractApproRelOldIds = lngContractFact.getLngContractApproRelList().stream().map(LngContractApproRel::getId).filter(Objects::nonNull).collect(Collectors.toList());
//找到需要删除的id
List<Long> lngContractApproRelRemoveIds = lngContractApproRelIds.stream().filter(item -> !lngContractApproRelOldIds.contains(item)).collect(Collectors.toList());
for (LngContractApproRel lngContractApproRel : lngContractFact.getLngContractApproRelList()) {
//如果不等于空则修改
if (lngContractApproRel.getId() != null) {
contractFactLngContractApproRelMapper.updateById(lngContractApproRel);
}
//如果等于空 则新增
else {
//已经不存在的id 删除
lngContractApproRel.setTableId(lngContractFact.getId());
contractFactLngContractApproRelMapper.insert(lngContractApproRel);
}
}
//已经不存在的id 删除
if(lngContractApproRelRemoveIds.size() > 0){
contractFactLngContractApproRelMapper.deleteBatchIds(lngContractApproRelRemoveIds);
}
}
//********************************* LngContractApproRel 增删改 结束 *******************************************/
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean delete(List<Long> ids) {
contractFactLngContractFactMapper.deleteBatchIds(ids);
contractFactLngContractFactCpMapper.delete(Wrappers.lambdaQuery(LngContractFactCp.class).in(LngContractFactCp::getKFactId, ids));
contractFactLngContractApproRelMapper.delete(Wrappers.lambdaQuery(LngContractApproRel.class).in(LngContractApproRel::getTableId, ids));
return true;
List<LngFileUploadVo> fileList = fileClient.getTableFiles("lng_contract_fact",
"lngFileUploadList", vo.getId());
vo.setLngFileUploadList(fileList);
return vo;
}
}

View File

@ -25,9 +25,12 @@ import com.xjrsoft.module.sales.dto.UpdateLngApproDto;
import com.xjrsoft.module.sales.entity.LngAppro;
import com.xjrsoft.module.sales.service.IApproService;
import com.xjrsoft.module.sales.vo.LngApproPageVo;
import com.xjrsoft.module.system.client.IFileClient;
import com.xjrsoft.module.system.vo.LngFileUploadVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@ -48,27 +51,36 @@ public class ApproController {
private final IApproService approService;
private final DatalogService dataService;
private final IFileClient fileClient;
// @GetMapping(value = "/page")
@GetMapping(value = "/page")
@ApiOperation(value="LngAppro列表(分页)")
@SaCheckPermission("appro:list")
public R page(@Valid LngApproPageDto dto){
LambdaQueryWrapper<LngAppro> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.like(StrUtil.isNotBlank(dto.getCode()),LngAppro::getCode,dto.getCode())
.like(StrUtil.isNotBlank(dto.getTitle()),LngAppro::getTitle,dto.getTitle())
.like(StrUtil.isNotBlank(dto.getTypeCode()),LngAppro::getTypeCode,dto.getTypeCode())
.like(StrUtil.isNotBlank(dto.getSecurityCode()),LngAppro::getSecurityCode,dto.getSecurityCode())
.like(StrUtil.isNotBlank(dto.getUrgencyCode()),LngAppro::getUrgencyCode,dto.getUrgencyCode())
.eq(ObjectUtil.isNotNull(dto.getEmpId()),LngAppro::getEmpId,dto.getEmpId())
.eq(ObjectUtil.isNotNull(dto.getBDeptId()),LngAppro::getBDeptId,dto.getBDeptId())
.like(StrUtil.isNotBlank(dto.getApproCode()),LngAppro::getApproCode,dto.getApproCode())
.like(StrUtil.isNotBlank(dto.getContent()),LngAppro::getContent,dto.getContent())
.between(ObjectUtil.isNotNull(dto.getStartDate()) && ObjectUtil.isNotNull(dto.getEndDate()),
LngAppro::getDateAppro, dto.getStartDate(), dto.getEndDate())
.and(StrUtil.isNotBlank(dto.getTitle()), r ->
r.like(LngAppro::getCode, dto.getTitle())
.or()
.like(LngAppro::getTitle, dto.getTitle())
)
.eq(StrUtil.isNotBlank(dto.getTypeCode()),LngAppro::getTypeCode,dto.getTypeCode())
.eq(StrUtil.isNotBlank(dto.getApproCode()),LngAppro::getApproCode,dto.getApproCode())
.orderByDesc(LngAppro::getId)
.select(LngAppro.class,x -> VoToColumnUtil.fieldsToColumns(LngApproPageVo.class).contains(x.getProperty()));
IPage<LngAppro> page = approService.page(ConventPage.getPage(dto), queryWrapper);
PageOutput<LngApproPageVo> pageOutput = ConventPage.getPageOutput(page, LngApproPageVo.class);
List<LngApproPageVo> list = pageOutput.list;
if (CollectionUtils.isNotEmpty(list)) {
list.forEach(x -> {
List<LngFileUploadVo> fileList = fileClient.getTableFiles("lng_appro",
"lngFileUploadList", x.getId());
x.setLngFileUploadList(fileList);
});
}
return R.ok(pageOutput);
}

View File

@ -39,7 +39,8 @@ public class ApproServiceImpl extends ServiceImpl<LngApproMapper, LngAppro> impl
}
LngApproVo vo = BeanUtil.toBean(lngAppro, LngApproVo.class);
List<LngFileUploadVo> fileList = fileClient.getTableFiles("lng_appro", "lngFileUploadList", vo.getId());
List<LngFileUploadVo> fileList = fileClient.getTableFiles("lng_appro",
"lngFileUploadList", vo.getId());
vo.setLngFileUploadList(fileList);
return vo;
}