renkang
2024-11-25 e7d185edb01e5b22efca9dc5aef80568507cd026
客户资料 巡检任务业务
已添加5个文件
已修改5个文件
688 ■■■■■ 文件已修改
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwContractRevenueCloudController.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwContractRevenueMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwContractRevenueService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -51,6 +51,7 @@
    public static final String SPECIAL_COMPANY_ID ="SPECIAL_COMPANY_ID" ;
    public static final String YW_DEVICE ="YW_DEVICE" ;
    public static final String YW_PATROL ="YW_PATROL" ;
    public static final String YW_CONTRACT_BILL ="YW_CONTRACT_BILL" ;
    public static final String RESERVATION_TOTAL_NUM ="RESERVATION_TOTAL_NUM" ;
    public static final String SIGN_IN_PLACE_LAT ="SIGN_IN_PLACE_LAT" ;
@@ -213,6 +214,19 @@
        public static final  int self = -1;
    }
    /**
     * è´¦å•类型 0租赁条款 1物业条款 2租赁押金 3物业押金 4自建账单
     */
    public interface contractBillType{
        int lease = 0;
        int property= 1;
        int leaseDeposit = 2;
        int propertyDeposit =3;
        int create =4;
    }
    /**
     * ä½œä¸šç±»åž‹ 0自有车卸货 1自有车装货 2外协车卸货 3外协车装货 4市公司外协车卸货
     */
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwContractRevenueCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.YwContractRevenue;
import com.doumee.service.business.YwContractRevenueService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/11/25 10:29
 */
@Api(tags = "运维合同收支流水")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/ywContractRevenue")
public class YwContractRevenueCloudController extends BaseController {
    @Autowired
    private YwContractRevenueService ywContractRevenueService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:ywcontractrevenue:create")
    public ApiResponse create(@RequestBody YwContractRevenue ywContractRevenue) {
        return ApiResponse.success(ywContractRevenueService.create(ywContractRevenue));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:ywcontractrevenue:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        ywContractRevenueService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:ywcontractrevenue:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        ywContractRevenueService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:ywcontractrevenue:update")
    public ApiResponse updateById(@RequestBody YwContractRevenue ywContractRevenue) {
        ywContractRevenueService.updateById(ywContractRevenue);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ywcontractrevenue:query")
    public ApiResponse<PageData<YwContractRevenue>> findPage (@RequestBody PageWrap<YwContractRevenue> pageWrap) {
        return ApiResponse.success(ywContractRevenueService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:ywcontractrevenue:exportExcel")
    public void exportExcel (@RequestBody PageWrap<YwContractRevenue> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(YwContractRevenue.class).export(ywContractRevenueService.findPage(pageWrap).getRecords(), "运维合同收支流水", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:ywcontractrevenue:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(ywContractRevenueService.findById(id));
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwContractRevenueMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.YwContractRevenue;
import com.github.yulichang.base.MPJBaseMapper;
import com.github.yulichang.base.mapper.MPJJoinMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/11/25 10:29
 */
public interface YwContractRevenueMapper extends MPJBaseMapper<YwContractRevenue> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java
@@ -28,104 +28,85 @@
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "账单名称")
    @ExcelColumn(name="账单名称")
    private String title;
    @ApiModelProperty(value = "类型 0租赁条款 1物业条款 2租赁押金 3物业押金", example = "1")
    @ExcelColumn(name="类型 0租赁条款 1物业条款 2租赁押金 3物业押金")
    @ApiModelProperty(value = "类型 0租赁条款 1物业条款 2租赁押金 3物业押金 4自建账单", example = "1")
    @ExcelColumn(name="账单来源",index = 12,width = 6,valueMapping = "0=合同账单;1=合同账单;2=合同账单;3=合同账单;4=自建账单;")
    private Integer type;
    @ApiModelProperty(value = "状态 0开始;1关闭;", example = "1")
    @ExcelColumn(name="状态 0开始;1关闭;")
    private Integer status;
    @ApiModelProperty(value = "开始时间")
    @ExcelColumn(name="开始时间")
    @ExcelColumn(name="计费开始日期",index = 10,width = 6,dateFormat = "yyyy-MM-dd")
    private Date startDate;
    @ApiModelProperty(value = "实际付款日")
    @ExcelColumn(name="实际付款日")
    private Date actPayDate;
    @ApiModelProperty(value = "计划付款日")
    @ExcelColumn(name="计划付款日")
    private Date planPayDate;
    @ApiModelProperty(value = "结束时间")
    @ExcelColumn(name="结束时间")
    @ExcelColumn(name="计费结束日期",index = 11,width = 6,dateFormat = "yyyy-MM-dd")
    private Date endDate;
    @ApiModelProperty(value = "计划付款日")
    @ExcelColumn(name="计划付款日")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date planPayData;
    @ApiModelProperty(value = "实际付款日")
    @ExcelColumn(name="实际付款日")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date actPayData;
    private Date actPayDate;
    @ApiModelProperty(value = "计划付款日")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date planPayDate;
    @ApiModelProperty(value = "合同条款编码(关联yw_contract_detail)", example = "1")
    @ExcelColumn(name="合同条款编码(关联yw_contract_detail)")
    private Integer detailId;
    @ApiModelProperty(value = "合同编码(关联yw_contract)", example = "1")
    @ExcelColumn(name="合同编码(关联yw_contract)")
    private Integer contractId;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name="排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "总金额", example = "1")
    @ExcelColumn(name="总金额")
    @ApiModelProperty(value = "账单金额", example = "1")
    @ExcelColumn(name="账单金额",index = 4,width = 6)
    private BigDecimal totleFee;
    @ApiModelProperty(value = "应收金额", example = "1")
    @ExcelColumn(name="应收金额")
    @ExcelColumn(name="应收金额",index = 5,width = 6)
    private BigDecimal receivableFee;
    @ApiModelProperty(value = "费用类型:0=租赁费;1=物业费;2=押金;3=保证金;4=水电费;5=杂项费;6=其他", example = "1")
    @ExcelColumn(name="费用类型:0=租赁费;1=物业费;2=押金;3=保证金;4=水电费;5=杂项费;6=其他")
    @ExcelColumn(name="费用类型",index = 8,width = 6,valueMapping = "0=租赁费;1=物业费;2=押金;3=保证金;4=水电费;5=杂项费;6=其他;")
    private Integer costType;
    @ApiModelProperty(value = "账单类型:0=收款;1=付款", example = "1")
    @ExcelColumn(name="账单类型:0=收款;1=付款")
    private Integer billType;
    @ApiModelProperty(value = "所属公司", example = "1")
    @ExcelColumn(name="所属公司")
    private Integer companyId;
    @ApiModelProperty(value = "付款状态:0=待收款;1=已结清;2=部分结清;3=待付款;4=待退款;5=已关闭")
    @ExcelColumn(name="付款状态:0=待收款;1=已结清;2=部分结清;3=待付款;4=待退款;5=已关闭")
    @ExcelColumn(name="结清状态",index = 3,width = 6,valueMapping = "0=待收款;1=已结清;2=部分结清;3=待付款;4=待退款;5=已关闭;")
    private Integer payStatus;
    @ApiModelProperty(value = "客户名称(付款方)", example = "1")
    @ExcelColumn(name="客户名称",index = 0,width = 10)
    @TableField(exist = false)
    private String customerName;
@@ -134,8 +115,14 @@
    private String companyName;
    @ApiModelProperty(value = "合同编号", example = "1")
    @ExcelColumn(name="合同编号",index = 2,width = 10)
    @TableField(exist = false)
    private String contractCode;
    @ApiModelProperty(value = "楼宇房间", example = "1")
    @ExcelColumn(name="楼宇房间",index = 1,width = 10)
    @TableField(exist = false)
    private String roomPathName;
    @ApiModelProperty(value = "房间数据", example = "1")
    @TableField(exist = false)
@@ -153,14 +140,33 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date planPayDateEnd;
    @ApiModelProperty(value = "实收金额")
    @TableField(exist = false)
    @ExcelColumn(name="实收金额",index = 6,width = 6)
    private BigDecimal actReceivableFee;
    @ApiModelProperty(value = "需收金额")
    @TableField(exist = false)
    @ExcelColumn(name="需收金额",index = 7,width = 6)
    private BigDecimal needReceivableFee;
    @ApiModelProperty(value = "是否逾期:0=否;1=是")
    @TableField(exist = false)
    @ExcelColumn(name="是否逾期",index = 9,width = 6,valueMapping = "0=未逾期;1=已逾期")
    private BigDecimal isOverdue;
    @ApiModelProperty(value = "附件信息", example = "1")
    @TableField(exist = false)
    private List<Multifile> multifileList;
    @ApiModelProperty(value = "附件信息", example = "1")
    @ApiModelProperty(value = "关联房间数据", example = "1")
    @TableField(exist = false)
    private List<YwContractRoom> ywContractRoomList;
    @ApiModelProperty(value = "收支流水", example = "1")
    @TableField(exist = false)
    private List<YwContractRevenue> ywContractRevenueList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,100 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.math.BigDecimal;
/**
 * è¿ç»´åˆåŒæ”¶æ”¯æµæ°´
 * @author æ±Ÿè¹„蹄
 * @date 2024/11/25 10:29
 */
@Data
@ApiModel("运维合同收支流水")
@TableName("`yw_contract_revenue`")
public class YwContractRevenue {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "状态 0=开启;1=关闭", example = "1")
    @ExcelColumn(name="状态 0=开启;1=关闭")
    private Integer status;
    @ApiModelProperty(value = "实收金额", example = "1")
    @ExcelColumn(name="实收金额")
    private BigDecimal actReceivableFee;
    @ApiModelProperty(value = "实际付款日")
    @ExcelColumn(name="实际付款日")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date actPayDate;
    @ApiModelProperty(value = "付款类型:0=现金;1=网银转账;2=POS机;3=支付宝;4=微信;5=转账支票;6=其他", example = "1")
    @ExcelColumn(name="付款类型:0=现金;1=网银转账;2=POS机;3=支付宝;4=微信;5=转账支票;6=其他")
    private Integer payType;
    @ApiModelProperty(value = "所属公司(关联 company)", example = "1")
    @ExcelColumn(name="所属公司(关联 company)")
    private Integer companyId;
    @ApiModelProperty(value = "收支账户(关联yw_account)", example = "1")
    @ExcelColumn(name="收支账户(关联yw_account)")
    private Integer accountId;
    @ApiModelProperty(value = "合同主键(关联yw_contract)", example = "1")
    @ExcelColumn(name="合同主键(关联yw_contract)")
    private Integer contractId;
    @ApiModelProperty(value = "账单主键(关联yw_contract_bill)", example = "1")
    @ExcelColumn(name="账单主键(关联yw_contract_bill)")
    private Integer billId;
    @ApiModelProperty(value = "收支类型:0=收入;1=支出", example = "1")
    @ExcelColumn(name="收支类型:0=收入;1=支出")
    private Integer revenueType;
    @ApiModelProperty(value = "客户名称")
    @TableField(exist = false)
    private String customerNme;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
@@ -68,4 +69,13 @@
    @ExcelColumn(name="排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "项目名称")
    @TableField(exist = false)
    private String projectName;
    @ApiModelProperty(value = "楼宇名称")
    @TableField(exist = false)
    private String buildingName;
    @ApiModelProperty(value = "楼层名称")
    @TableField(exist = false)
    private String floorName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java
@@ -115,4 +115,5 @@
    @ApiModelProperty(value = "楼层名称")
    @TableField(exist = false)
    private String floorName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwContractRevenueService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.doumee.service.business;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwContractRevenue;
import java.util.List;
/**
 * è¿ç»´åˆåŒæ”¶æ”¯æµæ°´Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2024/11/25 10:29
 */
public interface YwContractRevenueService {
    /**
     * åˆ›å»º
     *
     * @param ywContractRevenue å®žä½“对象
     * @return Integer
     */
    Integer create(YwContractRevenue ywContractRevenue);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param ywContractRevenue å®žä½“对象
     */
    void delete(YwContractRevenue ywContractRevenue);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param ywContractRevenue å®žä½“对象
     */
    void updateById(YwContractRevenue ywContractRevenue);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param ywContractRevenues å®žä½“集
     */
    void updateByIdInBatch(List<YwContractRevenue> ywContractRevenues);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return YwContractRevenue
     */
    YwContractRevenue findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param ywContractRevenue å®žä½“对象
     * @return YwContractRevenue
     */
    YwContractRevenue findOne(YwContractRevenue ywContractRevenue);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param ywContractRevenue å®žä½“对象
     * @return List<YwContractRevenue>
     */
    List<YwContractRevenue> findList(YwContractRevenue ywContractRevenue);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<YwContractRevenue>
     */
    PageData<YwContractRevenue> findPage(PageWrap<YwContractRevenue> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param ywContractRevenue å®žä½“对象
     * @return long
     */
    long count(YwContractRevenue ywContractRevenue);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
@@ -8,7 +9,9 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwContractBillMapper;
import com.doumee.dao.business.YwContractRevenueMapper;
import com.doumee.dao.business.YwContractRoomMapper;
import com.doumee.dao.business.YwRoomMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.MultifileMapper;
import com.doumee.dao.system.model.Multifile;
@@ -27,6 +30,7 @@
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * è¿ç»´åˆåŒè´¦å•信息表Service实现
@@ -45,12 +49,21 @@
    @Autowired
    private MultifileMapper multifileMapper;
    @Autowired
    private YwContractRevenueMapper ywContractRevenueMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Override
    public Integer create(YwContractBill ywContractBill) {
        if(Objects.isNull(ywContractBill)
                || Objects.isNull(ywContractBill.getContractId())
                || Objects.isNull(ywContractBill.getTotleFee())
                || Objects.isNull(ywContractBill.getPlanPayData())
                || Objects.isNull(ywContractBill.getPlanPayDate())
                || Objects.isNull(ywContractBill.getCostType())
                || Objects.isNull(ywContractBill.getBillType())
                || Objects.isNull(ywContractBill.getCompanyId())
@@ -65,9 +78,11 @@
        ywContractBill.setCreateDate(new Date());
        ywContractBill.setCreator(loginUserInfo.getId());
        ywContractBill.setIsdeleted(Constants.ZERO);
        ywContractBill.setType(Constants.contractBillType.create);
        ywContractBill.setStatus(Constants.ZERO);
        ywContractBillMapper.insert(ywContractBill);
        //房源数据
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getYwContractRoomList())){
            for (YwContractRoom ywContractRoom:ywContractBill.getYwContractRoomList()) {
                if(Objects.isNull(ywContractRoom)
@@ -84,6 +99,7 @@
            ywContractRoomMapper.insert(ywContractBill.getYwContractRoomList());
        }
        //附件数据
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getMultifileList())){
            for (Multifile multifile:ywContractBill.getMultifileList()) {
                if(Objects.isNull(multifile)
@@ -142,6 +158,60 @@
        return ywContractBillMapper.selectById(id);
    }
    public YwContractBill getDetail(Integer id) {
        YwContractBill ywContractBill = ywContractBillMapper.selectJoinOne(YwContractBill.class,
                new MPJLambdaWrapper<YwContractBill>().selectAll(YwContractBill.class)
                        .select(" ( select ifnull(sum(yw.ACT_RECEIVABLE_FEE),0) from  yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as  actReceivableFee  ")
                        .selectAs(YwContract::getCode,YwContractBill::getContractCode)
                        .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
                        .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
                        .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
                        .eq(YwContractBill::getIsdeleted,Constants.ZERO)
                        .eq(YwContractBill::getId,id));
        if(Objects.isNull(ywContractBill)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        //房源数据
        ywContractBill.setYwContractRoomList(ywContractRoomMapper.selectJoinList(YwContractRoom.class,new MPJLambdaWrapper<YwContractRoom>()
                .selectAll(YwContractRoom.class)
                .selectAs(YwProject::getName,YwRoom::getProjectName)
                .selectAs(YwFloor::getName,YwRoom::getFloorName)
                .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
                .leftJoin(YwRoom.class,YwRoom::getId,YwContractRoom::getRoomId)
                .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
                .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
                .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
                .eq(YwContractRoom::getContractId,id)
                .eq(YwContractRoom::getType,Constants.ONE)
        ));
        //收支明细
        ywContractBill.setYwContractRevenueList(
            ywContractRevenueMapper.selectJoinList(YwContractRevenue.class,new MPJLambdaWrapper<YwContractRevenue>()
                            .selectAll(YwContractRevenue.class)
                            .selectAs(YwCustomer::getName,YwContractRevenue::getCustomerNme)
                            .leftJoin(YwContract.class,YwContract::getId,YwContractRevenue::getContractId)
                            .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
                    .eq(YwContractRevenue::getBillId,id)
            )
        );
        //附件数据
        List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
                .eq(Multifile::getObjId,id)
                .eq(Multifile::getObjType,Constants.MultiFile.FN_CONTRACT_BILL_FILE.getKey()));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_CONTRACT_BILL).getCode();
            for (Multifile multifile:multifileList) {
                if(StringUtils.isNotBlank(multifile.getFileurl())){
                    multifile.setFileurlFull(path + multifile.getFileurl());
                }
            }
            ywContractBill.setMultifileList(multifileList);
        }
        return ywContractBill;
    }
    @Override
    public YwContractBill findOne(YwContractBill ywContractBill) {
        QueryWrapper<YwContractBill> wrapper = new QueryWrapper<>(ywContractBill);
@@ -159,11 +229,10 @@
        IPage<YwContractBill> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<YwContractBill> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        YwContractBill model = pageWrap.getModel();
        ywContractBillMapper.selectJoinPage(page,YwContractBill.class,
        IPage<YwContractBill> iPage = ywContractBillMapper.selectJoinPage(page,YwContractBill.class,
            queryWrapper.selectAll(YwContractBill.class)
                    .select(" ( select ifnull(sum(yw.ACT_RECEIVABLE_FEE),0) from  yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as  actReceivableFee  ")
                    .selectAs(YwContract::getCode,YwContractBill::getContractCode)
                    .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
                    .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
@@ -177,13 +246,64 @@
                            YwContractBill::getPayStatus,model.getPayStatus())
                    .eq(Objects.nonNull(model)&&Objects.nonNull(model.getType()),
                            YwContractBill::getType,model.getType())
                    .eq(Objects.nonNull(model)&&Objects.nonNull(model.getContractId()),
                            YwContractBill::getContractId,model.getContractId())
                .ge(YwContractBill::getPlanPayDate, Utils.Date.getStart(model.getPlanPayDateStart()))
                .le(YwContractBill::getPlanPayDate, Utils.Date.getEnd(model.getPlanPayDateEnd())) )
        ;
        this.dealRoomDetail(iPage.getRecords());
        for (YwContractBill ywContractBill:iPage.getRecords()) {
            //需收金额
            ywContractBill.setNeedReceivableFee(
                    ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())
            );
            //楼宇名称
            List<YwContractRoom> ywContractRoomList = ywContractBill.getYwContractRoomList();
//            String roomPathName = new StringBuffer();
//            for (:
//                 ) {
//
//            }
        return PageData.from(ywContractBillMapper.selectPage(page, queryWrapper));
    }
        return PageData.from(iPage);
    }
    public void dealRoomDetail(List<YwContractBill> ywContractBillList){
        //查询账单下的楼宇数据
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBillList)){
            //获取所有数据
            List<Integer> billIdList = ywContractBillList.stream().map(i->i.getId()).collect(Collectors.toList());
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(billIdList)){
                List<YwContractRoom> ywContractRoomList  = ywContractRoomMapper.selectJoinList(YwContractRoom.class,new MPJLambdaWrapper<YwContractRoom>()
                        .selectAll(YwContractRoom.class)
                        .selectAs(YwProject::getName,YwRoom::getProjectName)
                        .selectAs(YwFloor::getName,YwRoom::getFloorName)
                        .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
                        .leftJoin(YwRoom.class,YwRoom::getId,YwContractRoom::getRoomId)
                        .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
                        .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
                        .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
                        .in(YwContractRoom::getContractId,billIdList)
                        .eq(YwContractRoom::getType,Constants.ONE)
                );
                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
                    for (YwContractBill ywContractBill:ywContractBillList) {
                        ywContractBill.setYwContractRoomList(
                                ywContractRoomList.stream().filter(i->Constants.equalsInteger(i.getContractId(),ywContractBill.getId())).collect(Collectors.toList())
                        );
                    }
                }
            }
        }
    }
    @Override
    public long count(YwContractBill ywContractBill) {
        QueryWrapper<YwContractBill> wrapper = new QueryWrapper<>(ywContractBill);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,149 @@
package com.doumee.service.business.impl;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwContractRevenueMapper;
import com.doumee.dao.business.model.YwContractRevenue;
import com.doumee.service.business.YwContractRevenueService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
 * è¿ç»´åˆåŒæ”¶æ”¯æµæ°´Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2024/11/25 10:29
 */
@Service
public class YwContractRevenueServiceImpl implements YwContractRevenueService {
    @Autowired
    private YwContractRevenueMapper ywContractRevenueMapper;
    @Override
    public Integer create(YwContractRevenue ywContractRevenue) {
        ywContractRevenueMapper.insert(ywContractRevenue);
        return ywContractRevenue.getId();
    }
    @Override
    public void deleteById(Integer id) {
        ywContractRevenueMapper.deleteById(id);
    }
    @Override
    public void delete(YwContractRevenue ywContractRevenue) {
        UpdateWrapper<YwContractRevenue> deleteWrapper = new UpdateWrapper<>(ywContractRevenue);
        ywContractRevenueMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        ywContractRevenueMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(YwContractRevenue ywContractRevenue) {
        ywContractRevenueMapper.updateById(ywContractRevenue);
    }
    @Override
    public void updateByIdInBatch(List<YwContractRevenue> ywContractRevenues) {
        if (CollectionUtils.isEmpty(ywContractRevenues)) {
            return;
        }
        for (YwContractRevenue ywContractRevenue: ywContractRevenues) {
            this.updateById(ywContractRevenue);
        }
    }
    @Override
    public YwContractRevenue findById(Integer id) {
        return ywContractRevenueMapper.selectById(id);
    }
    @Override
    public YwContractRevenue findOne(YwContractRevenue ywContractRevenue) {
        QueryWrapper<YwContractRevenue> wrapper = new QueryWrapper<>(ywContractRevenue);
        return ywContractRevenueMapper.selectOne(wrapper);
    }
    @Override
    public List<YwContractRevenue> findList(YwContractRevenue ywContractRevenue) {
        QueryWrapper<YwContractRevenue> wrapper = new QueryWrapper<>(ywContractRevenue);
        return ywContractRevenueMapper.selectList(wrapper);
    }
    @Override
    public PageData<YwContractRevenue> findPage(PageWrap<YwContractRevenue> pageWrap) {
        IPage<YwContractRevenue> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<YwContractRevenue> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(YwContractRevenue::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(YwContractRevenue::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(YwContractRevenue::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(YwContractRevenue::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(YwContractRevenue::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(YwContractRevenue::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(YwContractRevenue::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(YwContractRevenue::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(YwContractRevenue::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(YwContractRevenue::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getActReceivableFee() != null) {
            queryWrapper.lambda().eq(YwContractRevenue::getActReceivableFee, pageWrap.getModel().getActReceivableFee());
        }
        if (pageWrap.getModel().getActPayDate() != null) {
            queryWrapper.lambda().ge(YwContractRevenue::getActPayDate, Utils.Date.getStart(pageWrap.getModel().getActPayDate()));
            queryWrapper.lambda().le(YwContractRevenue::getActPayDate, Utils.Date.getEnd(pageWrap.getModel().getActPayDate()));
        }
        if (pageWrap.getModel().getPayType() != null) {
            queryWrapper.lambda().eq(YwContractRevenue::getPayType, pageWrap.getModel().getPayType());
        }
        if (pageWrap.getModel().getCompanyId() != null) {
            queryWrapper.lambda().eq(YwContractRevenue::getCompanyId, pageWrap.getModel().getCompanyId());
        }
        if (pageWrap.getModel().getAccountId() != null) {
            queryWrapper.lambda().eq(YwContractRevenue::getAccountId, pageWrap.getModel().getAccountId());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(ywContractRevenueMapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(YwContractRevenue ywContractRevenue) {
        QueryWrapper<YwContractRevenue> wrapper = new QueryWrapper<>(ywContractRevenue);
        return ywContractRevenueMapper.selectCount(wrapper);
    }
}