shiyunteng
2026-06-15 6e492d4d16efff769c2928109fb6a085fcad948d
feat:付款合同编号不存在时错误提示
15个文件已修改
2个文件已添加
244 ■■■■ 已修改文件
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ProductQueryDTO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BusinessCustomer.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Demo.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/PlanSubjectMatter.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ProductionPlan.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SalesMan.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ProductSelectVo.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ProductTreeVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/PaymentConfirmController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ProductMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/PaymentConfirmService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-biz/src/main/resources/mapper/ProductMapper.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/dto/ProductQueryDTO.java
New file
@@ -0,0 +1,14 @@
package com.by4cloud.platformx.business.dto;
import lombok.Data;
@Data
public class ProductQueryDTO {
    private String productName;
    private String contractCategory;
    private String parentId;
}
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/BusinessCustomer.java
@@ -9,7 +9,7 @@
import org.hibernate.annotations.Comment;
/**
 * @author wjli
 * @author
 * @description
 * @date 2026/4/29 10:51
 **/
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Demo.java
@@ -4,14 +4,14 @@
import com.by4cloud.platformx.common.data.mybatis.BaseModel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Transient;
import jakarta.persistence.*;
import lombok.Data;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.Table;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
@@ -22,9 +22,11 @@
@Entity
@Table(appliesTo = "demo", comment = "demo")
public class Demo extends BaseModel<Demo> {
    @Schema(description = "姓名")
    @Column(columnDefinition="VARCHAR(64) comment '姓名'")
    @Comment("姓名")
    @Column(name="name",length = 255)
    private String name;
    @Schema(description = "专业")
    @Column(columnDefinition="VARCHAR(64) comment '专业'")
    private String jo;
@@ -49,5 +51,27 @@
    @Schema(description = "test")
    private String test;
    @Comment("字符串")
    @Column(name="str",length = 64)
    private String str;
    @Comment("long类型")
    @Column(name="big_integer",length = 64)
    private Long bigInteger;
    @Comment("bigDecimal")
    @Column(name="big_decimal",precision=10, scale=2)
    private BigDecimal bigDecimal;
    @Comment("date")
    @Temporal(TemporalType.DATE)
    private Date date;
    @Comment("timestamp")
    @Temporal(TemporalType.TIMESTAMP)
    private Date timestamp;
    @Comment("bool")
    private Boolean bool;
}
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/PlanSubjectMatter.java
@@ -9,7 +9,7 @@
import org.hibernate.annotations.Comment;
/**
 * @author wjli
 * @author
 * @description排产计划标的物
 * @date 2026/4/29 10:51
 **/
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/Product.java
@@ -8,6 +8,7 @@
import jakarta.persistence.Transient;
import lombok.Data;
import java.util.List;
/**
@@ -69,4 +70,11 @@
    @Transient
    @TableField(exist = false)
    private List<Product> children;
    /**
     * 标的物
     */
    @Transient
    @TableField(exist = false)
    private Integer childNum;
}
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/ProductionPlan.java
@@ -15,7 +15,7 @@
import java.util.List;
/**
 * @author wjli
 * @author
 * @description
 * @date 2026/4/29 10:51
 **/
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/entity/SalesMan.java
@@ -9,7 +9,7 @@
import org.hibernate.annotations.Comment;
/**
 * @author wjli
 * @author
 * @description
 * @date 2026/4/29 10:51
 **/
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ProductSelectVo.java
New file
@@ -0,0 +1,21 @@
package com.by4cloud.platformx.business.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class ProductSelectVo {
    private Long id;
    @Schema(description = "产品名称")
    private String productName;
    private String productType;
    private String erpCode;
    private Long parentId;
    private Integer childNum;
}
platformx-business-finance-api/src/main/java/com/by4cloud/platformx/business/vo/ProductTreeVo.java
@@ -11,6 +11,10 @@
    @Schema(description = "产品名称")
    private String productName;
    private String productType;
    private String erpCode;
    private Long parentId;
}
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/PaymentConfirmController.java
@@ -130,4 +130,12 @@
    public R syncPaymentRecepit(){
        return paymentConfirmService.syncPaymentRecepit();
    }
    /**
     * 业务类型
     */
    @GetMapping("queryAllBusinessType")
    public R queryAllBusinessType(){
        return paymentConfirmService.queryAllBusinessType();
    }
}
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/ProductController.java
@@ -8,6 +8,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.by4cloud.platformx.business.dto.ProductQueryDTO;
import com.by4cloud.platformx.business.vo.ProductTreeVo;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.log.annotation.SysLog;
@@ -24,6 +25,7 @@
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -80,25 +82,28 @@
    @Operation(summary = "分页查询" , description = "分页查询" )
    @GetMapping("/list" )
    @PreAuthorize("@pms.hasPermission('business_product_view')" )
    @Inner(value = false)
    public R getProductList(@ParameterObject Product product) {
        return R.ok(productService.getProductList(product));
    }
    /**
     * 分页查询
     * @param product 产品信息
     * @param queryDTO 产品信息
     * @return
     */
    @Operation(summary = "分页查询" , description = "分页查询" )
    @GetMapping("/listByParentId" )
    @PreAuthorize("@pms.hasPermission('business_product_view')" )
    //@Inner(value = false)
    public R getProductListByParentId(@ParameterObject Product product) {
        LambdaQueryWrapper<Product> wrapper = Wrappers.lambdaQuery();
        wrapper.like(StrUtil.isNotEmpty(product.getProductName()),Product::getProductName,product.getProductName());
        wrapper.eq(product.getParentId()!=null,Product::getParentId,product.getParentId());
        return R.ok(BeanUtil.copyToList(productService.listByScope(wrapper), ProductTreeVo.class));
    public R getProductListByParentId(@ParameterObject ProductQueryDTO queryDTO) {
//        LambdaQueryWrapper<Product> wrapper = Wrappers.lambdaQuery();
//        wrapper.like(StrUtil.isNotEmpty(queryDTO.getProductName()),Product::getProductName,queryDTO.getProductName());
//        wrapper.eq(StrUtil.isNotEmpty(queryDTO.getParentId()),Product::getParentId,queryDTO.getParentId());
//        if (StrUtil.isNotEmpty(queryDTO.getContractCategory())&&StrUtil.equals(queryDTO.getContractCategory(), "water_house")){
//            String[] erpCodes = new String[]{"房租租赁","dianli","water"};
//            wrapper.in(Product::getErpCode,erpCodes);
//            return R.ok(BeanUtil.copyToList(productService.listByScope(wrapper), ProductTreeVo.class));
//        }
//        return R.ok(BeanUtil.copyToList(productService.listByScope(wrapper), ProductTreeVo.class));
        return productService.getProductListByParentId(queryDTO);
    }
    /**
@@ -108,10 +113,9 @@
     */
    @Operation(summary = "层级查询" , description = "层级查询" )
    @GetMapping("/treeList" )
    //@PreAuthorize("@pms.hasPermission('business_product_view')" )
    @Inner(value = false)
    public R getNewsCategoryTree(@ParameterObject Product product) {
        return R.ok(productService.treeList(product.getParentId(), product.getProductName()));
        return R.ok(productService.treeList());
    }
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/mapper/ProductMapper.java
@@ -1,5 +1,7 @@
package com.by4cloud.platformx.business.mapper;
import com.by4cloud.platformx.business.dto.ProductQueryDTO;
import com.by4cloud.platformx.business.vo.ProductSelectVo;
import com.by4cloud.platformx.common.data.datascope.DataScope;
import com.by4cloud.platformx.common.data.datascope.PlatformxBaseMapper;
import com.by4cloud.platformx.business.entity.Product;
@@ -12,5 +14,7 @@
public interface ProductMapper extends PlatformxBaseMapper<Product> {
    List<Product> getProductListByScope(@Param("product") Product product, DataScope comp_id);
    List<ProductSelectVo> getProductListByScope(@Param("product") Product product, DataScope comp_id);
    List<ProductSelectVo> getProductListByParentId(@Param("queryDTO") ProductQueryDTO queryDTO,@Param("erpCodes") List<String> erpCodes, DataScope comp_id);
}
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/PaymentConfirmService.java
@@ -15,4 +15,6 @@
    String getAccessToken(String accessToken);
    void saveBipRequestRecord(JSONObject params,String methodName, String result);
    R queryAllBusinessType();
}
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/ProductService.java
@@ -1,8 +1,10 @@
package com.by4cloud.platformx.business.service;
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import com.by4cloud.platformx.business.dto.ProductQueryDTO;
import com.by4cloud.platformx.business.entity.Product;
import com.by4cloud.platformx.business.vo.ProductSelectVo;
import com.by4cloud.platformx.business.vo.ProductTreeVo;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.data.mybatis.IIService;
@@ -10,8 +12,9 @@
public interface ProductService extends IIService<Product> {
    List<Tree<Long>> treeList(Long parentId, String productName);
    List<Tree<Long>> treeList();
    List<Product> getProductList(Product product);
    List<ProductSelectVo> getProductList(Product product);
    R getProductListByParentId(ProductQueryDTO queryDTO);
}
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
@@ -34,6 +34,7 @@
import java.security.NoSuchAlgorithmException;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
 * 收款确认
@@ -73,6 +74,9 @@
    public R add(PaymentConfirmAddDTO addDTO) {
        if (StrUtil.isNotBlank(addDTO.getContractNo())) {
            Contract contract = contractService.getOne(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, addDTO.getContractNo()));
            if (ObjUtil.isNull(contract)) {
                return R.failed("合同查询失败,请检查合同编号");
            }
            BusinessCustomer customer = businessCustomerService.getOne(Wrappers.<BusinessCustomer>lambdaQuery()
                    .eq(StrUtil.isNotBlank(addDTO.getBusGuestName()), BusinessCustomer::getRegisterName, addDTO.getBusGuestName())
                    .eq(StrUtil.isNotBlank(addDTO.getBusGuestId()), BusinessCustomer::getId, addDTO.getBusGuestId()));
@@ -194,7 +198,7 @@
                entity.setBusGuestId(customer.getId());
                entity.setBusGuestName(customer.getRegisterName());
                entity.setBusinessType("");
                entity.setBusinessType("退款");
                entity.setTransationAmount(addDTO.getTransationAmount());
                BigDecimal newtotal = addDTO.getTransationAmount().multiply(new BigDecimal("-1")).add(lastConfirm.getTotalAmount());
                if (newtotal.compareTo(new BigDecimal("0")) > 0) {
@@ -839,4 +843,10 @@
        }
        baseMapper.insert(entity);
    }
    @Override
    public R queryAllBusinessType() {
        return R.ok(baseMapper.selectList(Wrappers.<PaymentConfirm>lambdaQuery().select(PaymentConfirm::getBusinessType).isNotNull(PaymentConfirm::getBusinessType)
                        .groupBy(PaymentConfirm::getBusinessType)).stream().map(PaymentConfirm::getBusinessType).collect(Collectors.toList()));
    }
}
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ProductServiceImpl.java
@@ -5,13 +5,15 @@
import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.by4cloud.platformx.business.dto.ProductQueryDTO;
import com.by4cloud.platformx.business.entity.Product;
import com.by4cloud.platformx.business.entity.TaxCode;
import com.by4cloud.platformx.business.mapper.ProductMapper;
import com.by4cloud.platformx.business.service.ProductService;
import com.by4cloud.platformx.business.vo.ProductSelectVo;
import com.by4cloud.platformx.business.vo.ProductTreeVo;
import com.by4cloud.platformx.common.core.util.R;
import com.by4cloud.platformx.common.data.datascope.DataScope;
@@ -20,10 +22,10 @@
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -36,30 +38,31 @@
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
    @Override
    public List<Tree<Long>> treeList(Long parentId, String productName) {
        Long parent = parentId == null ? 0l : parentId;
    public List<Tree<Long>> treeList() {
        List<TreeNode<Long>> collect = baseMapper
                .selectListByScope(Wrappers.<Product>lambdaQuery()
                        .like(StrUtil.isNotBlank(productName), Product::getProductName, productName)
                        .orderByAsc(Product::getCreateTime), DataScope.of("comp_id"))
                .stream().map(getNodeFunction()).collect(Collectors.toList());
        // 模糊查询 不组装树结构 直接返回 表格方便编辑
        if (StrUtil.isNotBlank(productName)) {
            return collect.stream().map(node -> {
                Tree<Long> tree = new Tree<>();
                tree.putAll(node.getExtra());
                BeanUtils.copyProperties(node, tree);
                return tree;
            }).collect(Collectors.toList());
        }
        return TreeUtil.build(collect, parent);
//        if (StrUtil.isNotBlank(productName)) {
//            return collect.stream().map(node -> {
//                Tree<Long> tree = new Tree<>();
//                tree.putAll(node.getExtra());
//                BeanUtils.copyProperties(node, tree);
//                return tree;
//            }).collect(Collectors.toList());
//        }
        TreeNode<Long> parent = new TreeNode<>();
        parent.setId(0L);
        parent.setName("目录");
        parent.setParentId(-1L);
        collect.add(parent);
        return TreeUtil.build(collect, 0L);
    }
    @Override
    public List<Product> getProductList(Product product) {
    public List<ProductSelectVo> getProductList(Product product) {
        return baseMapper.getProductListByScope(product,DataScope.of("comp_id"));
    }
@@ -90,4 +93,17 @@
            return node;
        };
    }
    @Override
    public R getProductListByParentId(ProductQueryDTO queryDTO) {
        String[] erpCodes = new String[]{"房租租赁","dianli","water"};
//        MPJLambdaWrapper<Product> wrapper = new MPJLambdaWrapper<Product>()
//                .selectAs("( SELECT count(1) FROM product t1 WHERE t1.parent_id = t.id )",Product::getChildNum)
//                .selectAll(Product.class)
//                .like(StrUtil.isNotEmpty(queryDTO.getProductName()),Product::getProductName,queryDTO.getProductName())
//                .eq(StrUtil.isNotEmpty(queryDTO.getParentId()),Product::getParentId,queryDTO.getParentId())
//                .in(StrUtil.isNotEmpty(queryDTO.getContractCategory())&&StrUtil.equals(queryDTO.getContractCategory(), "water_house"),
//                        Product::getErpCode,erpCodes);
        return R.ok(baseMapper.getProductListByParentId(queryDTO, Arrays.asList(erpCodes),DataScope.of("comp_id")));
    }
}
platformx-business-finance-biz/src/main/resources/mapper/ProductMapper.xml
@@ -16,7 +16,7 @@
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
  </resultMap>
    <select id="getProductListByScope" resultType="com.by4cloud.platformx.business.entity.Product">
    <select id="getProductListByScope" resultType="com.by4cloud.platformx.business.vo.ProductSelectVo">
        SELECT
            t.id,
            t.product_name,
@@ -42,6 +42,40 @@
        </if>
          AND (
            NOT EXISTS ( SELECT 1 FROM product t1 WHERE t1.parent_id = t.id ))
            limit 30
    </select>
    <select id="getProductListByParentId" resultType="com.by4cloud.platformx.business.vo.ProductSelectVo">
        SELECT
            t.id,
            t.product_name,
            t.main_code,
            t.erp_code,
            t.product_type,
            t.tax_rate,
            t.tax_class,
            t.tax_code,
            t.parent_id,
            t.create_by,
            t.update_by,
            t.create_time,
            t.update_time,
            t.del_flag,
            t.comp_id ,
            ( SELECT count( 1 ) FROM product t1 WHERE t1.parent_id = t.id ) AS childNum
        FROM
            product t
        WHERE
            del_flag = '0'
        <if test="queryDTO.productName !=null and queryDTO.productName !=''">
            and t.product_name LIKE CONCAT('%', #{queryDTO.productName}, '%')
        </if>
        <if test="queryDTO.parentId !=null ">
            and t.parent_id = #{queryDTO.parentId}
        </if>
        <if test="queryDTO.contractCategory !=null and queryDTO.contractCategory !='' and queryDTO.contractCategory=='water_house'">
            and t.erp_code in
            <foreach collection="erpCodes" item="erp" open="(" separator="," close=")">
                #{erp}
            </foreach>
        </if>
    </select>
</mapper>